diff --git a/MasaBlazorApp3/DataAccess/Dao/IChannelListDao.cs b/MasaBlazorApp3/DataAccess/Dao/IChannelListDao.cs index b9177e2..fa12022 100644 --- a/MasaBlazorApp3/DataAccess/Dao/IChannelListDao.cs +++ b/MasaBlazorApp3/DataAccess/Dao/IChannelListDao.cs @@ -66,23 +66,23 @@ namespace MasaBlazorApp3.DataAccess.Dao Task BoxAddBoxFinish(ChannelList boxChannelList); //手术室药盒获取药盒药品及库存信息 - Task> GetBoxDrugInfo(int DrawerNo, int? take, int? skip); + Task> GetBoxDrugInfo(string DrawerNo, int? take, int? skip); //药盒移库时获取选中药盒号的药品信息 - Task> GetChannelStockByDrug(ChannelStock cs, int drawerNo, int? take, int? skip); + Task> GetChannelStockByDrug(ChannelStock cs, string drawerNo, int? take, int? skip); /// /// 药盒交换药品获取所有除本药盒外的所有药盒号 /// /// /// - Task GetDrawerNum(ChannelStock channelStock); + Task GetDrawerNum(ChannelStock channelStock); /// /// 药盒移除药品,获取所有除本药盒外的所有包含该药品的药盒号 /// /// /// - Task GetDrawerNumForRemove(ChannelStock channelStock); + Task GetDrawerNumForRemove(ChannelStock channelStock); //手术室药盒交换药品完成 Task BoxReplaceFinish(ChannelStock stock, List Stocks); diff --git a/MasaBlazorApp3/DataAccess/Dao/IOrderInfoDao.cs b/MasaBlazorApp3/DataAccess/Dao/IOrderInfoDao.cs index 9a58114..7eba559 100644 --- a/MasaBlazorApp3/DataAccess/Dao/IOrderInfoDao.cs +++ b/MasaBlazorApp3/DataAccess/Dao/IOrderInfoDao.cs @@ -31,7 +31,9 @@ namespace MasaBlazorApp3.DataAccess.Dao //获取待处理处方中的麻醉师 public Task> GetAllOrderInfo(string Name, string OrderrNo, DateTime? OrderDate, int? take, int? skip); //获取所有药盒号 - public Task GetDrawerNum(string machineId); + public Task> GetDrawerNum(string machineId); + /// 获取指定药盒号 + public Task> GetDrawerNumByOperationNum(string machineId, List operationNum); //核对处方 public Task CheckOrderInfo(IList selectedOrderInfos, int DrawerNo); } diff --git a/MasaBlazorApp3/DataAccess/Impl/ChannelListDao.cs b/MasaBlazorApp3/DataAccess/Impl/ChannelListDao.cs index 314b7b0..0cf189f 100644 --- a/MasaBlazorApp3/DataAccess/Impl/ChannelListDao.cs +++ b/MasaBlazorApp3/DataAccess/Impl/ChannelListDao.cs @@ -24,7 +24,7 @@ namespace MasaBlazorApp3.DataAccess.Impl private readonly PortUtil _portUtil; private readonly ILog logger = LogManager.GetLogger(typeof(ChannelListDao)); - + private readonly IServiceProvider _serviceProvider; public ChannelListDao(AppDataConnection connection, IOptions setting, GlobalStateService globalStateService, PortUtil portUtil) { _globalStateService = globalStateService; @@ -574,6 +574,7 @@ namespace MasaBlazorApp3.DataAccess.Impl { list[i].PlanInfo = _connection.Plan.AsQueryable().Where(p => p.Id == Convert.ToInt32(list[i].DrugId)).FirstOrDefault(); } + list[i].BoxDisabled = list[i].TotalQuantity > 0 ? true : false; } } @@ -630,6 +631,7 @@ namespace MasaBlazorApp3.DataAccess.Impl ListId = list.Id, MachineId = list.MachineId, DrawerNo = list.DrawerNo, + ColNo=list.ColNo, DrugId = planInfos[i].DrugId.ToString(), BaseQuantity = planInfos[i].BaseQuantity, //BoxState = 1 @@ -706,6 +708,7 @@ namespace MasaBlazorApp3.DataAccess.Impl ListId = list.Id, MachineId = list.MachineId, DrawerNo = list.DrawerNo, + ColNo=list.ColNo, DrugId = planInfos[i].DrugId.ToString(), BaseQuantity = planInfos[i].BaseQuantity, //BoxState = 1 @@ -817,11 +820,12 @@ namespace MasaBlazorApp3.DataAccess.Impl List channelLists = new List(); var query = _connection.ChannelStock//.AsQueryable() .Where(cs => cs.MachineId == _setting.boxMachineId) - .GroupBy(cs => new { cs.DrawerNo, cs.DrugId }) + .GroupBy(cs => new { cs.DrawerNo,cs.ColNo, cs.DrugId }) .Select(g => new { DrawerNo = g.Key.DrawerNo, DrugId = g.Key.DrugId, + ColNo=g.Key.ColNo, sumQuantity = g.Sum(cs => cs.Quantity), baseQuantity = g.Max(cs => cs.BaseQuantity), sumAdd=g.Sum(cs=>cs.AddToQuantity) @@ -838,9 +842,9 @@ namespace MasaBlazorApp3.DataAccess.Impl { foreach (var item in query) { - if (queryList[i].DrawerNo == item.DrawerNo) + if (queryList[i].DrawerNo == item.DrawerNo && queryList[i].ColNo==item.ColNo) { - ChannelStock stock = queryChannelStock.Where(cs => cs.DrawerNo == item.DrawerNo && cs.DrugId == item.DrugId && cs.BaseQuantity > item.sumQuantity).FirstOrDefault(); + ChannelStock stock = queryChannelStock.Where(cs => cs.DrawerNo == item.DrawerNo && cs.ColNo==item.ColNo&&cs.DrugId == item.DrugId && cs.BaseQuantity > item.sumQuantity).FirstOrDefault(); if (stock != null) { stock.NeedQuantity = stock.BaseQuantity - item.sumQuantity; @@ -1078,7 +1082,7 @@ namespace MasaBlazorApp3.DataAccess.Impl #endregion //查询药盒中是否有该批次药品,有则把对应数量累加,无则insert ChannelStock? BoxChannelStock = _connection.ChannelStock.AsQueryable() - .Where(cs => cs.MachineId == boxTakeVo.BoxDetail.MachineId && cs.DrawerNo == boxTakeVo.BoxDetail.DrawerNo && cs.DrugId == boxTakeVo.ChannelStock.DrugId && cs.ManuNo == boxTakeVo.ChannelStock.ManuNo && cs.EffDate == EffDate).FirstOrDefault(); + .Where(cs => cs.MachineId == boxTakeVo.BoxDetail.MachineId && cs.DrawerNo == boxTakeVo.BoxDetail.DrawerNo&&cs.ColNo==boxTakeVo.BoxDetail.ColNo && cs.DrugId == boxTakeVo.ChannelStock.DrugId && cs.ManuNo == boxTakeVo.ChannelStock.ManuNo && cs.EffDate == EffDate).FirstOrDefault(); int boxID = 0; if (BoxChannelStock != null) { @@ -1097,6 +1101,7 @@ namespace MasaBlazorApp3.DataAccess.Impl ListId = boxTakeVo.BoxDetail.ListId, MachineId = _setting.boxMachineId, DrawerNo = boxTakeVo.BoxDetail.DrawerNo, + ColNo=boxTakeVo.BoxDetail.ColNo, //AddToQuantity = boxTakeVo.Quantity,//boxTakeVo.GetQuantity, //NeedQuantity = 0, Quantity = boxTakeVo.GetQuantity, @@ -1114,6 +1119,7 @@ namespace MasaBlazorApp3.DataAccess.Impl { MachineId = _setting.machineId, DrawerNo = boxTakeVo.BoxDetail.DrawerNo, + ColNo=boxTakeVo.BoxDetail.ColNo, DrugId = boxTakeVo.ChannelStock.DrugId, ManuNo = boxTakeVo.ChannelStock.ManuNo, EffDate = !String.IsNullOrEmpty(EffDate) ? DateTime.ParseExact(EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null, @@ -1124,7 +1130,7 @@ namespace MasaBlazorApp3.DataAccess.Impl Reviewer = _globalStateService.Reviewer?.Id ?? _globalStateService.Operator.Id, InvoiceId = boxTakeVo.ChannelStock.Id.ToString(), }); - int delResutl = await _connection.ChannelStock.Where(cs => cs.MachineId == boxTakeVo.BoxDetail.MachineId && cs.DrugId == boxTakeVo.BoxDetail.DrugId && cs.ManuNo == null).DeleteAsync(); + int delResutl = await _connection.ChannelStock.Where(cs => cs.MachineId == boxTakeVo.BoxDetail.MachineId && cs.DrugId == boxTakeVo.BoxDetail.DrugId&&cs.DrawerNo==boxTakeVo.BoxDetail.DrawerNo && cs.ColNo == boxTakeVo.BoxDetail.ColNo && cs.ManuNo == null).DeleteAsync(); if (mid > 0 && r > 0 && boxID > 0 && boxMId > 0) { if (boxTakeVo.ChannelStock.BoardType.ToString().Contains("5")) @@ -1405,82 +1411,107 @@ namespace MasaBlazorApp3.DataAccess.Impl } //手术室药盒获取药盒药品及库存信息 - public async Task> GetBoxDrugInfo(int DrawerNo, int? take, int? skip) + public async Task> GetBoxDrugInfo(string strDrawerNoCol, int? take, int? skip) { - var query = _connection.PlanDetails.AsQueryable() - .InnerJoin( - _connection.ChannelList.Where(cl => cl.MachineId == _setting.boxMachineId && cl.DrawerNo.Equals(DrawerNo)), - (pd, cl) => pd.PlanId.ToString() == cl.DrugId, - (pd, cl) => pd).Where(pd => pd.UseState == 1); - - - - int pagedData = await query.CountAsync(); - - List list = await query - .LoadWith(pd => pd._DrugInfo) - //.LoadWith(pd => cl._PlanDetails._DrugInfo) - .OrderBy((pd) => pd.DrugId) - //.ThenBy((cl) => cl.ColNo) - .Skip((int)skip) - .Take((int)take) - .ToListAsync(); - if (list != null && list.Count > 0) + if (!string.IsNullOrEmpty(strDrawerNoCol)) { - for (int i = 0; i < list.Count; i++) + int drawerNo = 0; + int colNo = 0; + var spl = strDrawerNoCol.Split('-'); + if (spl != null && spl.Count() > 0) { - list[i].channelStocks = _connection.ChannelStock.AsQueryable() - .Where(cs => cs.MachineId == _setting.boxMachineId && cs.DrawerNo == DrawerNo && cs.DrugId == list[i].DrugId) - .LoadWith(cs => cs.Drug) - .LoadWith(cs => cs.Drug.Manus) - .ToList(); + drawerNo = Convert.ToInt32(spl[0]); + colNo = Convert.ToInt32(spl[1]); } - } - //List list = await query - // .LoadWith(cl => cl.Drug) - // .LoadWith(cl => cl.Drug.Manus) - // .LoadWith(cl => cl.drugManuNo) - // .OrderBy((cl) => cl.DrawerNo) - // .ThenBy((cl) => cl.ColNo) - // .Skip((int)skip) - // .Take((int)take) - // .ToListAsync(); - - - return new PageData() - { - - TotalDesserts = pagedData, - Desserts = list - }; - } - - //药盒移库时获取选中药盒号的药品信息 - public async Task> GetChannelStockByDrug(ChannelStock cs, int drawerNo, int? take, int? skip) - { - try - { - var query = _connection.ChannelStock.AsQueryable().Where(c => c.MachineId == _setting.boxMachineId && c.DrawerNo.Equals(drawerNo) && c.DrugId.Equals(cs.DrugId) && c.ManuNo != cs.ManuNo && c.EffDate != cs.EffDate); + var query = _connection.PlanDetails.AsQueryable() + .InnerJoin( + _connection.ChannelList.Where(cl => cl.MachineId == _setting.boxMachineId && cl.DrawerNo.Equals(drawerNo) && cl.ColNo.Equals(colNo)), + (pd, cl) => pd.PlanId.ToString() == cl.DrugId, + (pd, cl) => pd).Where(pd => pd.UseState == 1); int pagedData = await query.CountAsync(); - List list = await query - .LoadWith(cs => cs.Drug) - .OrderBy((cs) => cs.DrugId) + List list = await query + .LoadWith(pd => pd._DrugInfo) + //.LoadWith(pd => cl._PlanDetails._DrugInfo) + .OrderBy((pd) => pd.DrugId) + //.ThenBy((cl) => cl.ColNo) .Skip((int)skip) .Take((int)take) .ToListAsync(); + if (list != null && list.Count > 0) + { + for (int i = 0; i < list.Count; i++) + { + list[i].channelStocks = _connection.ChannelStock.AsQueryable() + .Where(cs => cs.MachineId == _setting.boxMachineId && cs.DrawerNo == drawerNo && cs.ColNo == colNo && cs.DrugId == list[i].DrugId) + .LoadWith(cs => cs.Drug) + .LoadWith(cs => cs.Drug.Manus) + .ToList(); + } + } - return new PageData() + //List list = await query + // .LoadWith(cl => cl.Drug) + // .LoadWith(cl => cl.Drug.Manus) + // .LoadWith(cl => cl.drugManuNo) + // .OrderBy((cl) => cl.DrawerNo) + // .ThenBy((cl) => cl.ColNo) + // .Skip((int)skip) + // .Take((int)take) + // .ToListAsync(); + + + return new PageData() { TotalDesserts = pagedData, Desserts = list }; } + else + { + return null; + } + } + //药盒移库时获取选中药盒号的药品信息 + public async Task> GetChannelStockByDrug(ChannelStock cs, string strDrawerNoCol, int? take, int? skip) + { + try + { + int drawerNo = 0; + int colNo = 0; + var spl = strDrawerNoCol.Split('-'); + if (spl != null && spl.Count() > 0) + { + drawerNo = Convert.ToInt32(spl[0]); + colNo = Convert.ToInt32(spl[1]); + } + + var query = _connection.ChannelStock.AsQueryable().Where(c => c.MachineId == _setting.boxMachineId && c.DrawerNo.Equals(drawerNo) && c.ColNo.Equals(colNo) && c.DrugId.Equals(cs.DrugId) && c.ManuNo != cs.ManuNo && c.EffDate != cs.EffDate); + + + + int pagedData = await query.CountAsync(); + + List list = await query + .LoadWith(cs => cs.Drug) + .OrderBy((cs) => cs.DrugId) + .Skip((int)skip) + .Take((int)take) + .ToListAsync(); + + return new PageData() + { + + TotalDesserts = pagedData, + Desserts = list + }; + + } catch (Exception ex) { logger.Info($"药盒移库时获取选中药盒号的药品信息异常:{ex.Message}"); @@ -1494,21 +1525,21 @@ namespace MasaBlazorApp3.DataAccess.Impl /// /// /// - public async Task GetDrawerNum(ChannelStock channelStock) + public async Task GetDrawerNum(ChannelStock channelStock) { - int[] ints = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo && !string.IsNullOrEmpty(cs.ManuNo) && cs.ManuNo != channelStock.ManuNo) - .GroupBy(cs => cs.DrawerNo).Select(cs => cs.Key).ToArray(); - return ints; + string[] stringArray = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo && !string.IsNullOrEmpty(cs.ManuNo) && cs.ManuNo != channelStock.ManuNo) + .GroupBy(cs =>new { cs.DrawerNo, cs.ColNo }).Select(cs => cs.Key.DrawerNo.ToString()+"-"+cs.Key.ColNo.ToString()).ToArray(); + return stringArray; } /// /// 药盒移除药品,获取所有除本药盒外的所有包含该药品的药盒号 /// /// /// - public async Task GetDrawerNumForRemove(ChannelStock channelStock) + public async Task GetDrawerNumForRemove(ChannelStock channelStock) { - int[] ints = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo).GroupBy(cs => cs.DrawerNo).Select(cs => cs.Key).ToArray(); - return ints; + string[] stringArray = _connection.ChannelStock.Where(cs => cs.MachineId == channelStock.MachineId && cs.DrugId == channelStock.DrugId && cs.DrawerNo != channelStock.DrawerNo&&cs.ColNo!=channelStock.ColNo).GroupBy(cs => new { cs.DrawerNo, cs.ColNo }).Select(cs => cs.Key.DrawerNo.ToString()+"-"+cs.Key.ColNo.ToString()).ToArray(); + return stringArray; } //手术室药盒交换药品完成 public async Task BoxReplaceFinish(ChannelStock stock, List stockList) diff --git a/MasaBlazorApp3/DataAccess/Impl/MachineRecordDao.cs b/MasaBlazorApp3/DataAccess/Impl/MachineRecordDao.cs index 0273bec..fb21751 100644 --- a/MasaBlazorApp3/DataAccess/Impl/MachineRecordDao.cs +++ b/MasaBlazorApp3/DataAccess/Impl/MachineRecordDao.cs @@ -102,14 +102,15 @@ namespace MasaBlazorApp3.DataAccess.Impl public async Task> GetMachineRecordAsync(DateTime start, DateTime end, int operatorId, string drugId, int type, int? take, int? skip) { - var query = _connection.MachineRecord.AsQueryable().Where(it => it.MachineId.Equals(_setting.machineId)); + var query = from mr in _connection.MachineRecord select mr; + if (start != null && start != DateTime.MinValue) { query = query.Where(mr => mr.OperationTime > start); } if (end != null && end != DateTime.MinValue) { - query = query.Where(mr => mr.OperationTime < end); + query = query.Where(mr => mr.OperationTime < end.AddDays(1)); } if (operatorId != 0) { @@ -123,14 +124,48 @@ namespace MasaBlazorApp3.DataAccess.Impl { query = query.Where(mr => mr.DrugId == drugId); } + query =from mr in query + from dr in _connection.DrugInfo.Where(d => d.DrugId == mr.DrugId) + from us in _connection.User.Where(u => u.Id == mr.Operator) + select MachineRecord.Build(mr, dr, us); + + int pagedData = await query.CountAsync(); - List MachineRecords = await query.LoadWith(mr => mr.Drug) - .LoadWith(mr => mr.OperatorUser) + List MachineRecords = await query .OrderByDescending(mr => mr.OperationTime) .Skip((int)skip) .Take((int)take) .ToListAsync(); + //var query = _connection.MachineRecord.AsQueryable().Where(it => it.MachineId.Equals(_setting.machineId)); + //if (start != null && start != DateTime.MinValue) + //{ + // query = query.Where(mr => mr.OperationTime > start); + //} + //if (end != null && end != DateTime.MinValue) + //{ + // query = query.Where(mr => mr.OperationTime < end.AddDays(1)); + //} + //if (operatorId != 0) + //{ + // query = query.Where(mr => mr.Operator == operatorId); + //} + //if (type != 0) + //{ + // query = query.Where(mr => mr.Type == type); + //} + //if (!String.IsNullOrEmpty(drugId)) + //{ + // query = query.Where(mr => mr.DrugId == drugId); + //} + //int pagedData = await query.CountAsync(); + //List MachineRecords = await query.LoadWith(mr => mr.Drug) + // .LoadWith(mr => mr.OperatorUser) + // .OrderByDescending(mr => mr.OperationTime) + // .Skip((int)skip) + // .Take((int)take) + // .ToListAsync(); + return new PageData() { Desserts = MachineRecords, TotalDesserts = pagedData }; } diff --git a/MasaBlazorApp3/DataAccess/Impl/OrderInfoDao.cs b/MasaBlazorApp3/DataAccess/Impl/OrderInfoDao.cs index 04e8c67..1e1877b 100644 --- a/MasaBlazorApp3/DataAccess/Impl/OrderInfoDao.cs +++ b/MasaBlazorApp3/DataAccess/Impl/OrderInfoDao.cs @@ -43,6 +43,7 @@ namespace MasaBlazorApp3.DataAccess.Impl public async Task> GetAllOrderInfo(string OrderrNo, DateTime OrderDate, int? take, int? skip) { + //var query = _connection.OrderInfo.AsQueryable(); //query.InnerJoin((oi, od) => oi.OrderNo == od.OrderNo); @@ -762,10 +763,31 @@ namespace MasaBlazorApp3.DataAccess.Impl /// /// /// - public async Task GetDrawerNum(string machineId) + public async Task> GetDrawerNum(string machineId) { - int[] ints = _connection.ChannelStock.Where(cs => cs.MachineId == machineId).GroupBy(cs => cs.DrawerNo).Select(cs => cs.Key).ToArray(); - return ints; + List stockList = _connection.ChannelStock + .Where(cs => cs.MachineId == machineId) + .GroupBy(cs => new { cs.DrawerNo, cs.ColNo }) + .Select(g => new ChannelStock + { + DrawerNo = g.Key.DrawerNo, + ColNo = g.Key.ColNo, + }) + .ToList(); + return stockList; + } + /// + /// 获取指定药盒号 + /// + /// + /// + public async Task> GetDrawerNumByOperationNum(string machineId,List operationNum) + { + List boxModelList = new List(); + boxModelList =await _connection.ChannelStock + .Where(cs => cs.MachineId == machineId&& operationNum.Contains(cs.DrawerNo)) + .Select(cs => new BoxModel { BoxName = cs.DrawerNo.ToString(), BoxNo = Convert.ToInt32(cs.ColNo) }).ToListAsync(); + return boxModelList; } //核对处方 public async Task CheckOrderInfo(IList selectedOrderInfos, int DrawerNo) diff --git a/MasaBlazorApp3/MasaBlazorApp3.csproj b/MasaBlazorApp3/MasaBlazorApp3.csproj index 2b47f02..a532a17 100644 --- a/MasaBlazorApp3/MasaBlazorApp3.csproj +++ b/MasaBlazorApp3/MasaBlazorApp3.csproj @@ -52,6 +52,9 @@ + + Always + Always diff --git a/MasaBlazorApp3/Pages/BoxAddDrug.razor b/MasaBlazorApp3/Pages/BoxAddDrug.razor index a789e10..a78e3aa 100644 --- a/MasaBlazorApp3/Pages/BoxAddDrug.razor +++ b/MasaBlazorApp3/Pages/BoxAddDrug.razor @@ -109,7 +109,7 @@ diff --git a/MasaBlazorApp3/Pages/BoxBind.razor b/MasaBlazorApp3/Pages/BoxBind.razor index 71129ef..0a11cbb 100644 --- a/MasaBlazorApp3/Pages/BoxBind.razor +++ b/MasaBlazorApp3/Pages/BoxBind.razor @@ -1,49 +1,73 @@ -@page "/Box/BoxBindings123" - +@page "/Box/BoxBindings" +
+ +
+
+ @* + + 选择套餐 + + + + + + + + + + *@ +
+ + + + + + + + + + + + + + @* *@ + + + + +
+
+
- +