2025-07-21 16:42:40 +08:00
|
|
|
|
using LinqToDB;
|
|
|
|
|
using log4net;
|
|
|
|
|
using MasaBlazorApp3.DataAccess.Dao;
|
2025-07-05 17:27:18 +08:00
|
|
|
|
using MasaBlazorApp3.Pojo;
|
2025-07-21 16:42:40 +08:00
|
|
|
|
using MasaBlazorApp3.Pojo.Config;
|
|
|
|
|
using Microsoft.Extensions.Options;
|
|
|
|
|
using Mysqlx.Crud;
|
2025-07-05 17:27:18 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2025-07-21 16:42:40 +08:00
|
|
|
|
using System.Data.Common;
|
2025-07-05 17:27:18 +08:00
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace MasaBlazorApp3.DataAccess.Impl
|
|
|
|
|
{
|
|
|
|
|
public class ReportDataDao : IReportDataDao
|
|
|
|
|
{
|
2025-07-21 16:42:40 +08:00
|
|
|
|
private AppDataConnection _connection;
|
|
|
|
|
private readonly SettingConfig _setting;
|
|
|
|
|
private readonly ILog logger = LogManager.GetLogger(typeof(ReportDataDao));
|
|
|
|
|
public ReportDataDao(AppDataConnection connection, IOptions<SettingConfig> setting)
|
2025-07-05 17:27:18 +08:00
|
|
|
|
{
|
2025-07-21 16:42:40 +08:00
|
|
|
|
_connection = connection;
|
|
|
|
|
_setting = setting.Value;
|
|
|
|
|
}
|
|
|
|
|
//获取库存导出数据
|
|
|
|
|
public async Task<PageData<ReportStockDateInfo>> GetStockExportData(string drugName)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<ReportStockDateInfo> reportStockList = new List<ReportStockDateInfo>();
|
|
|
|
|
int pagedData = 0;
|
|
|
|
|
string SQL = $@"SELECT cl.drug_id AS DrugId,di.`drug_name` AS DrugName,di.drug_type AS DrugType,di.drug_spec AS DrugSpec,di.manufactory AS Manufactory,
|
|
|
|
|
di.pack_unit AS pack_unit,di.py_code AS PyCode,null AS Stocks,NULL AS Manus,db.baseQuantity AS BaseQuantity,CONCAT(cl.row_no,cl.col_no) as location,
|
|
|
|
|
cl.manu_no as ManuNo,cl.eff_date as EffDate,cl.Quantity AS Quantity,cl.manu_no,cl.eff_date FROM channel_stock cl INNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id`
|
|
|
|
|
LEFT JOIN drug_base db ON db.drugid=di.drug_id and db.machine_id= '{_setting.machineId}'
|
|
|
|
|
WHERE cl.`machine_id` = '{_setting.machineId}' AND cl.`drawer_type` = 1 ";
|
|
|
|
|
if (!string.IsNullOrEmpty(drugName))
|
|
|
|
|
{
|
|
|
|
|
SQL += " and di.drug_name = '{drugName}'";
|
|
|
|
|
}
|
|
|
|
|
SQL += " ORDER BY cl.`drug_id`";
|
|
|
|
|
// 加载模板文件
|
|
|
|
|
//Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//" + "stock_template.grf");
|
|
|
|
|
|
|
|
|
|
var reportList = _connection.FromSql<ReportStockDateInfo>(SQL);
|
|
|
|
|
if (reportList != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (var report in reportList)
|
|
|
|
|
{
|
|
|
|
|
reportStockList.Add(report);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pagedData = await reportList.CountAsync();
|
|
|
|
|
}
|
|
|
|
|
return new PageData<ReportStockDateInfo>()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TotalDesserts = pagedData,
|
|
|
|
|
Desserts = reportStockList
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Info($"获取库存导出数据异常:{ex.Message}");
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<PageData<ReportAccountDateInfo>> GetAccountExportData(DateTime? startDate, DateTime? endDate, string drugName)
|
|
|
|
|
{
|
|
|
|
|
List<ReportAccountDateInfo> accountList = new List<ReportAccountDateInfo>();
|
|
|
|
|
int pagedData = 0;
|
|
|
|
|
DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
|
|
|
|
|
DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
|
|
|
|
|
string SQL = $@"SELECT mr.`stock_quantity` AS `stockQuantity`, IF(mr.`type` IN (1, 31), mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` > 0, mr.`quantity`, 0))
|
|
|
|
|
AS `inQuantity`, IF(mr.`type` = 2, mr.`quantity`, IF(mr.`type` = 4 AND mr.`quantity` < 0, (0 - mr.`quantity`), 0)) AS `outQuantity`,
|
|
|
|
|
mr.`operation_time` AS `operationTime`, mr.`invoice_id` AS `invoiceId`, di.`drug_name` AS `drugName`, di.`drug_id` AS `drugId`,
|
|
|
|
|
di.`drug_spec` AS `drugSpec`, di.`big_unit` AS `BigUnit`, di.`dosage` AS `dosage`, di.`manufactory` AS `manufactory`,
|
|
|
|
|
mr.`manu_no` AS `manuNo`, mr.`eff_date` AS `effDate`, u1.`user_name` AS `operatorName`, u2.`user_name` AS `reviewerName` FROM
|
|
|
|
|
dm_machine_record mr LEFT JOIN drug_info di ON mr.`drug_id` = di.`drug_id` LEFT JOIN user_list u1 ON mr.`operator` = u1.`id`
|
|
|
|
|
LEFT JOIN user_list u2 ON mr.`reviewer` = u2.`id` WHERE mr.`machine_id` = '{_setting.machineId}' AND mr.`operation_time` > '{p_startDate}'
|
|
|
|
|
AND mr.`operation_time` < '{p_endDate}'";
|
|
|
|
|
if (!string.IsNullOrEmpty(drugName))
|
|
|
|
|
{
|
|
|
|
|
SQL += " AND di.drug_name= '{drugName}'";
|
|
|
|
|
}
|
|
|
|
|
SQL += " ORDER BY mr.`drug_id`, mr.`operation_time`, mr.`id`";
|
|
|
|
|
var reportList = _connection.FromSql<ReportAccountDateInfo>(SQL);
|
|
|
|
|
if (reportList != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (var report in reportList)
|
|
|
|
|
{
|
|
|
|
|
accountList.Add(report);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pagedData = await reportList.CountAsync();
|
|
|
|
|
}
|
|
|
|
|
return new PageData<ReportAccountDateInfo>()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TotalDesserts = pagedData,
|
|
|
|
|
Desserts = accountList
|
|
|
|
|
};
|
2025-07-05 17:27:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|