diff --git a/MasaBlazorApp3/DataAccess/Dao/IReportDataDao.cs.cs b/MasaBlazorApp3/DataAccess/Dao/IReportDataDao.cs.cs index da8b447..ffcd064 100644 --- a/MasaBlazorApp3/DataAccess/Dao/IReportDataDao.cs.cs +++ b/MasaBlazorApp3/DataAccess/Dao/IReportDataDao.cs.cs @@ -9,7 +9,9 @@ namespace MasaBlazorApp3.DataAccess.Dao { public interface IReportDataDao { + //获取库存导出数据 + Task> GetStockExportData(string drugName); //专用账册导出数据 - Task> AccountBookExport(DateTime? startDate, DateTime? endDate, string drugId); + Task> GetAccountExportData(DateTime? startDate, DateTime? endDate, string drugName); } } diff --git a/MasaBlazorApp3/DataAccess/Impl/ReportDataDao.cs b/MasaBlazorApp3/DataAccess/Impl/ReportDataDao.cs index 27a7b04..b8298a6 100644 --- a/MasaBlazorApp3/DataAccess/Impl/ReportDataDao.cs +++ b/MasaBlazorApp3/DataAccess/Impl/ReportDataDao.cs @@ -1,7 +1,13 @@ -using MasaBlazorApp3.DataAccess.Dao; +using LinqToDB; +using log4net; +using MasaBlazorApp3.DataAccess.Dao; using MasaBlazorApp3.Pojo; +using MasaBlazorApp3.Pojo.Config; +using Microsoft.Extensions.Options; +using Mysqlx.Crud; using System; using System.Collections.Generic; +using System.Data.Common; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,9 +16,93 @@ namespace MasaBlazorApp3.DataAccess.Impl { public class ReportDataDao : IReportDataDao { - public Task> AccountBookExport(DateTime? startDate, DateTime? endDate,string drugId) + private AppDataConnection _connection; + private readonly SettingConfig _setting; + private readonly ILog logger = LogManager.GetLogger(typeof(ReportDataDao)); + public ReportDataDao(AppDataConnection connection, IOptions setting) { - throw new NotImplementedException(); + _connection = connection; + _setting = setting.Value; + } + //获取库存导出数据 + public async Task> GetStockExportData(string drugName) + { + try + { + List reportStockList = new List(); + 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(SQL); + if (reportList != null) + { + foreach (var report in reportList) + { + reportStockList.Add(report); + } + + pagedData = await reportList.CountAsync(); + } + return new PageData() + { + + TotalDesserts = pagedData, + Desserts = reportStockList + }; + } + catch (Exception ex) + { + logger.Info($"获取库存导出数据异常:{ex.Message}"); + return null; + } + } + + public async Task> GetAccountExportData(DateTime? startDate, DateTime? endDate, string drugName) + { + List accountList = new List(); + 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(SQL); + if (reportList != null) + { + foreach (var report in reportList) + { + accountList.Add(report); + } + + pagedData = await reportList.CountAsync(); + } + return new PageData() + { + + TotalDesserts = pagedData, + Desserts = accountList + }; } } } diff --git a/MasaBlazorApp3/Pages/EditPasswordDialog.razor b/MasaBlazorApp3/Pages/EditPasswordDialog.razor index 9289fff..573d5b3 100644 --- a/MasaBlazorApp3/Pages/EditPasswordDialog.razor +++ b/MasaBlazorApp3/Pages/EditPasswordDialog.razor @@ -12,7 +12,7 @@ - + @* @if (userI == 1) { @@ -29,7 +29,7 @@ } - + *@ @* diff --git a/MasaBlazorApp3/Pages/FingerRegDialog.razor b/MasaBlazorApp3/Pages/FingerRegDialog.razor index 4388f24..381b818 100644 --- a/MasaBlazorApp3/Pages/FingerRegDialog.razor +++ b/MasaBlazorApp3/Pages/FingerRegDialog.razor @@ -1,5 +1,5 @@ @page "/user/finger/{userId}" - +@page "/finger/{userId}" @using log4net; diff --git a/MasaBlazorApp3/Pages/Home.razor b/MasaBlazorApp3/Pages/Home.razor index 8436b89..b8758b8 100644 --- a/MasaBlazorApp3/Pages/Home.razor +++ b/MasaBlazorApp3/Pages/Home.razor @@ -36,44 +36,49 @@ .rz-gauge .rz-tick-text { fill: #ffffff !important; } - - - + - + @if (globalStateService.Operator != null) { //操作人:@globalStateService.Operator.NickName - 操作人:@globalStateService.Operator.NickName + //操作人:@globalStateService.Operator.NickName + + + + + + + + } @if (globalStateService.Reviewer != null) { //复核人:@globalStateService.Reviewer.NickName - 复核人:@globalStateService.Reviewer.NickName + //复核人:@globalStateService.Reviewer.NickName + + + + + + + + } - +
交接班 @@ -84,11 +89,7 @@ - - - - @@ -334,7 +335,63 @@ new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = false }); } + async void MenuClick(RadzenProfileMenuItem item) + { + + string strValue= item.Value.Substring(0,1); + Pojo.User user = new Pojo.User(); + switch(strValue) + { + case "1": + int userId = 0; + if (item.Value == "11") + { + user = globalStateService.Operator; + } + else + { + user = globalStateService.Reviewer; + } + await dialogService.OpenAsync( + $"录入指纹-{user.Username}", + new Dictionary() { { "userId", user.Id } }, + new DialogOptions() { Width = "55vw", Resizable = true, Draggable = false, ShowClose = false } + ); + break; + case "2": + if (item.Value=="21") + { + user = globalStateService.Operator; + } + else + { + user = globalStateService.Reviewer; + } + await dialogService.OpenAsync( + $"签名-{user.NickName}", + new Dictionary() { { "user", user } }, + new DialogOptions() { Width = "55vw", Resizable = true, Draggable = false, ShowClose = true } + ); + break; + case "3": + if (item.Value == "31") + { + user = globalStateService.Operator; + } + else + { + user = globalStateService.Reviewer; + } + int userI =Convert.ToInt32(item.Value.Substring(1, 1)); + await dialogService.OpenAsync( + $"修改密码-{user.Username}", + new Dictionary() { { "userI",userI} }, + new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = true } + ); + break; + } + } //交接班 async void changeShifts() { diff --git a/MasaBlazorApp3/Pages/LoginDialog.razor b/MasaBlazorApp3/Pages/LoginDialog.razor index 2f94815..c667b60 100644 --- a/MasaBlazorApp3/Pages/LoginDialog.razor +++ b/MasaBlazorApp3/Pages/LoginDialog.razor @@ -217,6 +217,11 @@ private void Exit() { + if (globalStateService.Operator != null) + { + globalStateService.Operator = null; + globalStateService.Reviewer = null; + } dialogService.Close(false); } diff --git a/MasaBlazorApp3/Pages/SignatureDialog.razor b/MasaBlazorApp3/Pages/SignatureDialog.razor index 86176ff..070fd26 100644 --- a/MasaBlazorApp3/Pages/SignatureDialog.razor +++ b/MasaBlazorApp3/Pages/SignatureDialog.razor @@ -1,4 +1,5 @@ @page "/signature/{user}" +@page "/signature" @layout EmptyLayout @if (user.Sign != null) diff --git a/MasaBlazorApp3/Pages/StockList.razor b/MasaBlazorApp3/Pages/StockList.razor index 0c7058b..64d23f3 100644 --- a/MasaBlazorApp3/Pages/StockList.razor +++ b/MasaBlazorApp3/Pages/StockList.razor @@ -119,7 +119,7 @@ if (success && dateTime <= DateTime.Now.AddMonths(3)) { @s.EffDate - +

ЧҩƷ

} else @@ -140,7 +140,7 @@ @if (s.StockQuantity < 10) { @s.StockQuantity - +

Ԥ

} else @@ -157,13 +157,13 @@ @code { @inject IDrugInfoDao drugInfoDao; @inject DialogService dialogService; - @inject IChannelListDao channelStockDao; + @inject IReportDataDao reportDataDao; RadzenDataGrid grid; bool isLoading; int count; private IEnumerable? _forecasts; - DateTime start; - DateTime end; + DateTime? start; + DateTime? end; string drugName; @@ -202,16 +202,16 @@ //浼 async Task StockExport() { - string drugId = drugName != null ? drugName.Split('/').Last().Trim() : ""; - // await GridReportUtil.PrintReportAccountBook(null, null, 0, drugId); + PageData pageData = await reportDataDao.GetStockExportData(drugName); + GridReportUtil.PrintReport("stock_template.grf", pageData); } //ר˲ᵼ async Task AccountBookExport() { // string drugId = drugName != null ? drugName.Split('/').Last().Trim():""; // GridReportUtil gridReportUtil = new GridReportUtil(); - PageData pageData = await channelStockDao.GetAllChannelList(1,"",0,0); - GridReportUtil.PrintReport("stock_template.grf", null); + PageData pageData = await reportDataDao.GetAccountExportData(start, end, drugName); + GridReportUtil.PrintReport("account_book_temp.grf", pageData); } // diff --git a/MasaBlazorApp3/Pojo/AccountBook.cs b/MasaBlazorApp3/Pojo/AccountBook.cs index 44cd26e..525b0a5 100644 --- a/MasaBlazorApp3/Pojo/AccountBook.cs +++ b/MasaBlazorApp3/Pojo/AccountBook.cs @@ -74,7 +74,7 @@ namespace MasaBlazorApp3.Pojo [Column("eff_date")] public DateTime? EffDate { get; set; } /// - /// 出库入库类型(1领入2发出3日结4日总结5转结) + /// 出库入库类型(1领入2发出3盘点4日结5日总结6转结) /// [Column("type")] public int Type { get; set; } diff --git a/MasaBlazorApp3/Pojo/ReportDateInfo.cs b/MasaBlazorApp3/Pojo/ReportDateInfo.cs index 1c672f3..ad7d897 100644 --- a/MasaBlazorApp3/Pojo/ReportDateInfo.cs +++ b/MasaBlazorApp3/Pojo/ReportDateInfo.cs @@ -1,12 +1,86 @@ -using System; +using MySqlX.XDevAPI.Relational; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MasaBlazorApp3.Pojo { - public class ReportDateInfo + public class ReportAccountDateInfo { + //日期 + public string OperationTime { get; set; } = string.Empty; + //操作类型 + //public string Type { get; set; } = string.Empty; + //批号 + public string ManuNo { get; set; } = string.Empty; + //效期 + public string EffDate { get; set; } = string.Empty; + //上次批次结存 + //public string BeforeManuQuan { get; set; } = string.Empty; + //入库数量 + public int InQuantity { get; set; } = 0; + // 出库数量 + public int OutQuantity { get; set; } = 0; + //批号结存 + //public int ManuQuantity { get; set; } = 0; + + //总结存 + public int StockQuantity { get; set; } = 0; + + //收/发药人 + public string operatorName { get; set; } = string.Empty; + + //复核人 + public string ReviewerName { get; set; } = string.Empty; + public string DrugId { get; set; } = string.Empty; + //药品名称 + public string DrugName { get; set; } = string.Empty; + //药品规格 + public string DrugSpec { get; set; } = string.Empty; + //单位 + public string BigUnit { get; set; } = string.Empty; + //剂型 + public string Dosage { get; set; } = string.Empty; + //生产厂家 + public string Manufactory { get; set; } = string.Empty; + //凭证号 + public string InvoiceId { get; set; } = string.Empty; + ////供应单位 + //public string SupplierDept { get;set; } = string.Empty; + ////领用部门 + //public string ReceiveDept { get; set; } = string.Empty; + } + + public class ReportStockDateInfo + { + public string DrugId { get; set; } + + public string DrugName { get; set; } + + public string DrugType { get; set; } + + public string DrugSpec { get; set; } + + + public string Manufactory { get; set; } + + + public string PyCode { get; set; } + //基数 + public int BaseQuantity { get; set; } + + //批次 + public string ManuNo { get; set; } + + //效期 + public string EffDate { get; set; } + //库位 + public string location { get; set; } + + //数量 + public int Quantity { get; set; } } } diff --git a/MasaBlazorApp3/Program.cs b/MasaBlazorApp3/Program.cs index 2f972c4..71e5260 100644 --- a/MasaBlazorApp3/Program.cs +++ b/MasaBlazorApp3/Program.cs @@ -72,6 +72,9 @@ internal class Program //药品批次 appBuilder.Services.AddScoped(); + //报表 + appBuilder.Services.AddScoped(); + //交接班记录 appBuilder.Services.AddScoped(); diff --git a/MasaBlazorApp3/Report/GridReportUtil.cs b/MasaBlazorApp3/Report/GridReportUtil.cs index 44da72f..7b25aa9 100644 --- a/MasaBlazorApp3/Report/GridReportUtil.cs +++ b/MasaBlazorApp3/Report/GridReportUtil.cs @@ -31,8 +31,5 @@ namespace MasaBlazorApp3.Report Report.LoadDataFromXML(JsonConvert.SerializeObject(data)); Report.PrintPreview(true); } - - - } } diff --git a/MasaBlazorApp3/ReportTemp/account_book_temp.grf b/MasaBlazorApp3/ReportTemp/account_book_temp.grf index 1af7efd..8396812 100644 --- a/MasaBlazorApp3/ReportTemp/account_book_temp.grf +++ b/MasaBlazorApp3/ReportTemp/account_book_temp.grf @@ -1,5 +1,5 @@ { - "Version":"6.3.0.1", + "Version":"6.8.1.1", "Font":{ "Name":"宋体", "Size":105000, @@ -316,7 +316,7 @@ "Charset":134 }, "TextAlign":"MiddleCenter", - "Text":"借入\r\n数量" + "Text":"入库\r\n数量" }, { "GroupTitle":false, diff --git a/MasaBlazorApp3/ReportTemp/stock_template.grf b/MasaBlazorApp3/ReportTemp/stock_template.grf index f580f28..1466cad 100644 --- a/MasaBlazorApp3/ReportTemp/stock_template.grf +++ b/MasaBlazorApp3/ReportTemp/stock_template.grf @@ -1,5 +1,5 @@ { - "Version":"6.8.5.2", + "Version":"6.8.1.1", "Font":{ "Name":"宋体", "Size":105000, @@ -27,7 +27,8 @@ "Name":"manuFactory" }, { - "Name":"quantityCount" + "Name":"quantityCount", + "DBFieldName":"quantity" }, { "Name":"manuNo" @@ -328,7 +329,7 @@ "Type":"StaticBox", "Name":"StaticBox1", "Center":"Horizontal", - "Left":7.77875, + "Left":8.89, "Top":0.608542, "Width":9.18104, "Height":1.21708,