From 4cf2de08e1d2594884a1acb98c8fd613282c62e2 Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Fri, 22 Nov 2024 18:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B9=98=E6=BD=AD=E6=89=8B=E6=9C=AF=E5=AE=A4?= =?UTF-8?q?=E4=BA=A4=E6=8E=A5=E6=9F=9C=E4=BF=AE=E6=94=B9=E6=89=8B=E9=BA=BB?= =?UTF-8?q?=E4=BC=A0=E5=8D=95=E5=AD=90=E6=93=8D=E4=BD=9C=E6=A0=B8=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DM_Weight/App.config | 4 +- DM_Weight/Converter/BoxNumConverter.cs | 7 +- DM_Weight/Converter/StockStatusConverter.cs | 2 +- DM_Weight/Models/OrderInfo.cs | 2 +- .../ViewModels/AdditionWindowViewModel.cs | 2 +- .../CheckOrderNewWindowViewModel.cs | 148 ++++- .../CheckSelfOrderWindowViewModel.cs | 615 ++++++++++-------- .../ViewModels/RoleManagerWindowViewModel.cs | 18 +- DM_Weight/Views/CheckOrderNewWindow.xaml | 42 +- DM_Weight/Views/CheckSelfOrderWindow.xaml | 15 +- DM_Weight/Views/HomeWindow.xaml.cs | 2 +- DM_Weight/msg/BoxOpenStatusEvent.cs | 14 + 12 files changed, 555 insertions(+), 316 deletions(-) create mode 100644 DM_Weight/msg/BoxOpenStatusEvent.cs diff --git a/DM_Weight/App.config b/DM_Weight/App.config index 27b072d..c46c327 100644 --- a/DM_Weight/App.config +++ b/DM_Weight/App.config @@ -3,7 +3,7 @@ - + - + diff --git a/DM_Weight/Converter/BoxNumConverter.cs b/DM_Weight/Converter/BoxNumConverter.cs index f30dabd..6143068 100644 --- a/DM_Weight/Converter/BoxNumConverter.cs +++ b/DM_Weight/Converter/BoxNumConverter.cs @@ -1,4 +1,5 @@ -using System; +using SqlSugar.Extensions; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -13,6 +14,10 @@ namespace DM_Weight.Converter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { + if(parameter==null) + { + return value.ObjToBool(); + } string str=value.ToString(); return !(str == parameter.ToString()); } diff --git a/DM_Weight/Converter/StockStatusConverter.cs b/DM_Weight/Converter/StockStatusConverter.cs index 2d64cf7..b7233ac 100644 --- a/DM_Weight/Converter/StockStatusConverter.cs +++ b/DM_Weight/Converter/StockStatusConverter.cs @@ -15,7 +15,7 @@ namespace DM_Weight.Converter int status = int.Parse(value.ToString()); if (parameter.ToString() == "EnableState") { - if (status == 0) + if (status == 1) { return true; } diff --git a/DM_Weight/Models/OrderInfo.cs b/DM_Weight/Models/OrderInfo.cs index 34e3242..b44324a 100644 --- a/DM_Weight/Models/OrderInfo.cs +++ b/DM_Weight/Models/OrderInfo.cs @@ -178,7 +178,7 @@ namespace DM_Weight.Models /// - /// + /// 添加值1药师已确认,2管理已核对处方 /// 默认值: 0 /// private int? _dmStatus; diff --git a/DM_Weight/ViewModels/AdditionWindowViewModel.cs b/DM_Weight/ViewModels/AdditionWindowViewModel.cs index cabcd9f..c36429a 100644 --- a/DM_Weight/ViewModels/AdditionWindowViewModel.cs +++ b/DM_Weight/ViewModels/AdditionWindowViewModel.cs @@ -151,7 +151,7 @@ namespace DM_Weight.ViewModels { if (channelStock != null) { - if (channelStock.ChannelLst.State == 0) + if (channelStock.ChannelLst.State == 1) { channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected; } diff --git a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs index 2cf3762..6b60bdb 100644 --- a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs @@ -16,7 +16,9 @@ using System.Configuration; using System.Linq; using System.Linq.Expressions; using System.Text; +using System.Threading; using System.Threading.Tasks; +using System.Timers; using System.Windows; using System.Windows.Media; @@ -25,6 +27,7 @@ namespace DM_Weight.ViewModels public class CheckOrderNewWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime { private readonly ILog logger = LogManager.GetLogger(typeof(CheckOrderNewWindowViewModel)); + System.Timers.Timer CheckBoxStatusTimer; private int _pageNum = 1; public int PageNum @@ -120,6 +123,44 @@ namespace DM_Weight.ViewModels private OrderInfo _selectOrderInfo; public OrderInfo selectOrderInfo { get => _selectOrderInfo; set => SetProperty(ref _selectOrderInfo, value); } + #region 18个药箱号的可用状态 + private bool _IsEnabled1 = true; + public bool IsEnabled1 { get => _IsEnabled1; set => SetProperty(ref _IsEnabled1, value); } + private bool _IsEnabled2 = true; + public bool IsEnabled2 { get => _IsEnabled2; set => SetProperty(ref _IsEnabled2, value); } + private bool _IsEnabled3 = true; + public bool IsEnabled3 { get => _IsEnabled3; set => SetProperty(ref _IsEnabled3, value); } + private bool _IsEnabled4 = true; + public bool IsEnabled4 { get => _IsEnabled4; set => SetProperty(ref _IsEnabled4, value); } + private bool _IsEnabled5 = true; + public bool IsEnabled5 { get => _IsEnabled5; set => SetProperty(ref _IsEnabled5, value); } + private bool _IsEnabled6 = true; + public bool IsEnabled6 { get => _IsEnabled6; set => SetProperty(ref _IsEnabled6, value); } + private bool _IsEnabled7 = true; + public bool IsEnabled7 { get => _IsEnabled7; set => SetProperty(ref _IsEnabled7, value); } + private bool _IsEnabled8 = true; + public bool IsEnabled8 { get => _IsEnabled8; set => SetProperty(ref _IsEnabled8, value); } + private bool _IsEnabled9 = true; + public bool IsEnabled9 { get => _IsEnabled9; set => SetProperty(ref _IsEnabled9, value); } + private bool _IsEnabled10 = true; + public bool IsEnabled10 { get => _IsEnabled10; set => SetProperty(ref _IsEnabled10, value); } + private bool _IsEnabled11 = true; + public bool IsEnabled11 { get => _IsEnabled11; set => SetProperty(ref _IsEnabled11, value); } + private bool _IsEnabled12 = true; + public bool IsEnabled12 { get => _IsEnabled12; set => SetProperty(ref _IsEnabled12, value); } + private bool _IsEnabled13 = true; + public bool IsEnabled13 { get => _IsEnabled13; set => SetProperty(ref _IsEnabled13, value); } + private bool _IsEnabled14 = true; + public bool IsEnabled14 { get => _IsEnabled14; set => SetProperty(ref _IsEnabled14, value); } + private bool _IsEnabled15 = true; + public bool IsEnabled15 { get => _IsEnabled15; set => SetProperty(ref _IsEnabled15, value); } + private bool _IsEnabled16 = true; + public bool IsEnabled16 { get => _IsEnabled16; set => SetProperty(ref _IsEnabled16, value); } + private bool _IsEnabled17 = true; + public bool IsEnabled17 { get => _IsEnabled17; set => SetProperty(ref _IsEnabled17, value); } + private bool _IsEnabled18 = true; + public bool IsEnabled18 { get => _IsEnabled18; set => SetProperty(ref _IsEnabled18, value); } + #endregion private Brush _button1Color = Brushes.White; public Brush Button1Color @@ -267,7 +308,7 @@ namespace DM_Weight.ViewModels //.InnerJoin((oi, od, di) => od.DrugId == di.DrugId.ToString()) .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate) .WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), oi => oi.Pharmacy == ConfigurationManager.AppSettings["storage"]) - .Where(oi => oi.DmStatus == 0) + .Where(oi => oi.DmStatus == 1) .Where(oi => oi.HisDispFlag == 0) .Where(oi => oi.CancelFlag == 0) .Where(oi => oi.DoctorCode == currentDrawerUser) @@ -483,7 +524,7 @@ namespace DM_Weight.ViewModels { SqlSugarHelper.Db.Updateable(new OrderInfo() { - DmStatus = 1, + DmStatus = 2, OrderNo = oi.OrderNo }).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand(); @@ -664,13 +705,12 @@ namespace DM_Weight.ViewModels { AlertMsg alertMsg = new AlertMsg { - Message = $"所选处方对应药品批次效期无库存{empChannelStock}", + Message = $"所选单子中对应药品批次效期无效{empChannelStock}", Type = MsgType.ERROR, }; _eventAggregator.GetEvent().Publish(alertMsg); - logger.Info($"所选处方对应药品批次效期无库存{empChannelStock}"); + logger.Info($"所选单子对应药品批次效期无效{empChannelStock}"); throw new Exception("事务回滚"); - return false; } return true; }); @@ -679,7 +719,7 @@ namespace DM_Weight.ViewModels RequestData(); AlertMsg alertMsg = new AlertMsg { - Message = "所选处方已核对完成", + Message = "所选单子已核对完成", Type = MsgType.SUCCESS, }; _eventAggregator.GetEvent().Publish(alertMsg); @@ -688,7 +728,7 @@ namespace DM_Weight.ViewModels { AlertMsg alertMsg = new AlertMsg { - Message = "处方核对失败!", + Message = "核对失败!", Type = MsgType.ERROR, }; _eventAggregator.GetEvent().Publish(alertMsg); @@ -699,7 +739,7 @@ namespace DM_Weight.ViewModels { AlertMsg alertMsg = new AlertMsg { - Message = "请勾选要核对的处方数据", + Message = "请勾选要核对单数据", Type = MsgType.ERROR }; _eventAggregator.GetEvent().Publish(alertMsg); @@ -738,13 +778,82 @@ namespace DM_Weight.ViewModels //记录开药箱日志 SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand(); ModbusHelper.GetInstance().OpenBoxDoor(DrawerNo); + //设置对应药箱按钮可用状态 + SetIsEnableStatus(DrawerNo, false); + //_eventAggregator.GetEvent().Publish(); + CheckBoxStatusTimer = new System.Timers.Timer(); + + CheckBoxStatusTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetAllBoxState); + CheckBoxStatusTimer.Interval = 3000; + CheckBoxStatusTimer.Start(); + //设置对应药箱按钮可用状态 + //SetIsEnableStatus(DrawerNo, false); + } + } + private void SetIsEnableStatus(int drawerNO, bool status) + { + switch (drawerNO) + { + case 0: + IsEnabled1 = status; + break; + case 1: + IsEnabled2 = status; + break; + case 2: + IsEnabled3 = status; + break; + case 3: + IsEnabled4 = status; + break; + case 4: + IsEnabled5 = status; + break; + case 5: + IsEnabled6 = status; + break; + case 6: + IsEnabled7 = status; + break; + case 7: + IsEnabled8 = status; + break; + case 8: + IsEnabled9 = status; + break; + case 9: + IsEnabled10 = status; + break; + case 10: + IsEnabled11 = status; + break; + case 11: + IsEnabled12 = status; + break; + case 12: + IsEnabled13 = status; + break; + case 13: + IsEnabled14 = status; + break; + case 14: + IsEnabled15 = status; + break; + case 15: + IsEnabled16 = status; + break; + case 16: + IsEnabled17 = status; + break; + case 17: + IsEnabled18 = status; + break; } } public void OnNavigatedTo(NavigationContext navigationContext) { RequestData(); - //_eventAggregator.GetEvent().Subscribe(DoMyPrismEvent); } public bool IsNavigationTarget(NavigationContext navigationContext) @@ -754,9 +863,26 @@ namespace DM_Weight.ViewModels public void OnNavigatedFrom(NavigationContext navigationContext) { - // 取消消息订阅 - //_eventAggregator.GetEvent().Unsubscribe(DoMyPrismEvent); } + private void GetAllBoxState(object sender, ElapsedEventArgs e) + { + //查询药箱是否关闭,如果已经关闭则按钮可用,可继续开该编号的药箱 + if (DrawerNo >= 0) + { + bool[] boolArrs = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false };// ModbusHelper.GetInstance().GetAllBoxState(); + bool allFalse = Array.TrueForAll(boolArrs, b => b == false); + if (allFalse) + { + CheckBoxStatusTimer.Stop(); + } + for (int i = 0; i < boolArrs.Length; i++) + { + //设置对应药箱按钮可用状态 + SetIsEnableStatus(i, !boolArrs[i]); + } + } + } + //void DoMyPrismEvent(DeviceMsg msg) //{ // switch (msg.EventType) diff --git a/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs b/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs index 14aa41c..a0edc30 100644 --- a/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs @@ -2,6 +2,7 @@ using DM_Weight.msg; using DM_Weight.Port; using DM_Weight.util; +using DM_Weight.Views; using log4net; using Prism.Commands; using Prism.Events; @@ -52,7 +53,7 @@ namespace DM_Weight.ViewModels } } - private int _pageSize = 10; + private int _pageSize = 8; public int PageSize { get => _pageSize; @@ -81,12 +82,12 @@ namespace DM_Weight.ViewModels } //开名下药箱按钮的显示状态 - private bool _selfEnable = false; - public bool SelfEnable { get => _selfEnable; set => SetProperty(ref _selfEnable, value); } + //private bool _selfEnable = false; + //public bool SelfEnable { get => _selfEnable; set => SetProperty(ref _selfEnable, value); } - //名下药箱按钮显示内容 - private string _selfContent = "打开药箱"; - public string SelfContent { get => _selfContent; set => SetProperty(ref _selfContent, value); } + ////名下药箱按钮显示内容 + //private string _selfContent = "打开药箱"; + //public string SelfContent { get => _selfContent; set => SetProperty(ref _selfContent, value); } //开公共药箱按钮的显示状态 @@ -433,80 +434,102 @@ namespace DM_Weight.ViewModels { case 1: Button1Enable = true; - SelfEnable=true; + //SelfEnable=true; break; case 2: Button2Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 3: Button3Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 4: Button4Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 5: Button5Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 6: Button6Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 7: Button7Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 8: Button8Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 9: Button9Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 10: Button10Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 11: Button11Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 12: Button12Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 13: Button13Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 14: Button14Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 15: Button15Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 16: Button16Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 17: Button17Enable = true; - SelfEnable = true; + //SelfEnable = true; break; case 18: Button18Enable = true; - SelfEnable = true; + //SelfEnable = true; break; default: break; } } + //打开某个药箱时不可点击其他药箱按钮避免保存数据时减错药箱库存(确认或取消后按钮即可用) + private void SetAllBtnEnableFalse() + { + Button1Enable = false; + Button2Enable = false; + Button3Enable = false; + Button4Enable = false; + Button5Enable = false; + Button6Enable = false; + Button7Enable = false; + Button8Enable = false; + Button9Enable = false; + Button10Enable = false; + Button11Enable = false; + Button12Enable = false; + Button13Enable = false; + Button14Enable = false; + Button15Enable = false; + Button16Enable = false; + Button17Enable = false; + Button18Enable = false; + } IEventAggregator _eventAggregator; private PortUtil _portUtil; @@ -536,6 +559,7 @@ namespace DM_Weight.ViewModels { //查询当前药箱归属的药师 ChannelList currentList = SqlSugarHelper.Db.Queryable().Where(cl => cl.DrawerNo == DrawerNo + 1 && cl.MachineId == "DM5").First();//.Select(cl => cl.BelongUser).First(); + DrawerType = currentList.DrawerType; string currentDrawerUser = currentList.BelongUser; OrderInfoList = SqlSugarHelper.Db.Queryable() .Includes(oi => oi.OrderDetailList, od => od.DrugInfo) @@ -632,6 +656,7 @@ namespace DM_Weight.ViewModels { List chlList = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5").ToList();//.Select(cl => cl.BelongUser).First(); + if (chlList != null && chlList.Count > 0) { for (int i = 0; i < chlList.Count; i++) @@ -641,6 +666,7 @@ namespace DM_Weight.ViewModels { SetBtnColor(chl.DrawerNo); } + //DrawerType== 1为公共药箱 if (chl.DrawerType == 1) { @@ -648,6 +674,10 @@ namespace DM_Weight.ViewModels } if (!string.IsNullOrEmpty(chl.BelongUser) && chl.BelongUser == HomeWindowViewModel.Operator.UserBarcode) { + if (DrawerType == -1) + { + DrawerType = chl.DrawerType; + } SetBtnEnable(chl.DrawerNo); } } @@ -692,90 +722,113 @@ namespace DM_Weight.ViewModels public async void OpenBoxAction(string strDrawerNo) { DrawerNo = Convert.ToInt32(strDrawerNo); - DrawerType = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == Convert.ToInt32(strDrawerNo)).Select(cl => cl.DrawerType).First(); - SelfEnable = true; + //DrawerType = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == Convert.ToInt32(strDrawerNo)).Select(cl => cl.DrawerType).First(); + //SelfEnable = true; //int listSelfState = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5") // .WhereIf(cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerState).First(); - int listDrawerState = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType) - .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerState).First(); - if (DrawerType == 1) //公共药箱 - { - if (listDrawerState == 0) - { - SelfContent = "还公共药箱"; - } - else - { - SelfContent = "取公共药箱"; - } + //int listDrawerState = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType) + // .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerState).First(); - } - else - { - if (listDrawerState == 0) - { - SelfContent = "还名下药箱"; - } - else - { - SelfContent = "取名下药箱"; - } + DrawerNo = Convert.ToInt32(strDrawerNo); + MachineRecord machineRecord = new MachineRecord(); + machineRecord.MachineId = "DM5"; + machineRecord.DrawerNo = DrawerNo; + machineRecord.Operator = HomeWindowViewModel.Operator?.Id; + machineRecord.OperationTime = DateTime.Now; + machineRecord.Type = 55; + machineRecord.InvoiceId = $"打开{DrawerNo + 1}号药箱"; + + if (DrawerNo > 0) + { + DrawerNo -= 1; + RequestData(); + Status = 1; + _portUtil.SpeakAsync($"正在打开{DrawerNo + 1}号药箱"); + logger.Info($"正在打开{DrawerNo + 1}号药箱"); + //记录开药箱日志 + SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand(); + ModbusHelper.GetInstance().OpenBoxDoor(DrawerNo); } + //if (DrawerType == 1) //公共药箱 + //{ + // if (listDrawerState == 0) + // { + // SelfContent = "还公共药箱"; + // } + // else + // { + // SelfContent = "取公共药箱"; + // } + + //} + //else + //{ + // if (listDrawerState == 0) + // { + // SelfContent = "还名下药箱"; + // } + // else + // { + // SelfContent = "取名下药箱"; + // } + + //} } - public DelegateCommand OpenBoxDelegate - { - get => new DelegateCommand((DrawerType) => - { - SearchBox(); - } - ); - } - private void SearchBox() - { - iList = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType) - .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).ToList(); - // .Select(cl => cl.DrawerNo).ToList(); - if (iList.Count > 0) - { - //_portUtil.SpeakAsync("正在打开药箱"); - //_portUtil.DrawerNo = iList[iNumber]; - //iNumber++; - //_portUtil.OpenBox(); + //public DelegateCommand OpenBoxDelegate + //{ + // get => new DelegateCommand((DrawerType) => + // { + // SearchBox(); + // } + // ); + //} + //private void SearchBox() + //{ - for (int i = 0; i < iList.Count; i++) - { - ChannelList channelList = iList[i]; - //记录开药箱日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = channelList.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = $"打开{iList[i].DrawerNo}号药箱", - OptionType = SelfContent.Substring(0, 1) == "取" ? 0 : 1 - }).ExecuteCommand(); - //记录药箱打开时间 - channelList.EffDate = DateTime.Now.ToString(); - channelList.DrawerState = SelfContent.Substring(0, 1) == "取" ? 0 : 1; - SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand(); + // SetAllBtnEnableFalse(); + // iList = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType) + // .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).ToList(); + // // .Select(cl => cl.DrawerNo).ToList(); + // if (iList.Count > 0) + // { + // //_portUtil.SpeakAsync("正在打开药箱"); + // //_portUtil.DrawerNo = iList[iNumber]; + // //iNumber++; + // //_portUtil.OpenBox(); - _portUtil.SpeakAsync($"正在打开{channelList.DrawerNo}号药箱"); - logger.Info($"正在打开{channelList.DrawerNo}号药箱"); - ModbusHelper.GetInstance().OpenBoxDoor(channelList.DrawerNo - 1); - Thread.Sleep(1000); - } + // for (int i = 0; i < iList.Count; i++) + // { + // ChannelList channelList = iList[i]; + // //记录开药箱日志 + // SqlSugarHelper.Db.Insertable(new MachineRecord() + // { + // MachineId = "DM5", + // DrawerNo = channelList.DrawerNo, + // Operator = HomeWindowViewModel.Operator?.Id, + // OperationTime = DateTime.Now, + // Type = 55, + // InvoiceId = $"打开{iList[i].DrawerNo}号药箱", + // OptionType = SelfContent.Substring(0, 1) == "取" ? 0 : 1 + // }).ExecuteCommand(); + // //记录药箱打开时间 + // channelList.EffDate = DateTime.Now.ToString(); + // channelList.DrawerState = SelfContent.Substring(0, 1) == "取" ? 0 : 1; + // SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand(); - SelfStatus = 0; - PublicEnable = true; - SelfEnable = true; - DrawerType = -1; - } - } + // _portUtil.SpeakAsync($"正在打开{channelList.DrawerNo}号药箱"); + // logger.Info($"正在打开{channelList.DrawerNo}号药箱"); + // ModbusHelper.GetInstance().OpenBoxDoor(channelList.DrawerNo - 1); + // } + + // SelfStatus = 0; + // PublicEnable = true; + // //SelfEnable = true; + // DrawerType = -1; + // } + //} public DelegateCommand RowSelected { get => new DelegateCommand(() => @@ -820,13 +873,15 @@ namespace DM_Weight.ViewModels void CheckOrderAction() { + + SetBtnEnable(DrawerNo); var confirmData = OrderInfoList.Where(oi => oi.ItemIsChecked == true).ToList(); if (confirmData.Count > 0) { var f = SqlSugarHelper.Db.UseTran(() => { - string empChannelStock = string.Empty; + //string empChannelStock = string.Empty; for (int i = 0; i < confirmData.Count; i++) { @@ -851,181 +906,184 @@ namespace DM_Weight.ViewModels }); } - //Expression> updateExp = it => it.ManuNo == oi._OrderDetail.SetManuNo && it.EffDate == oi._OrderDetail.SetEffDate; + #region 麻醉师确认只修改单子状态为1,不减库存,等管理员操作时减库存 - for (int j = 0; j < oi.OrderDetailList.Count; j++) - { - oi._OrderDetail = oi.OrderDetailList[j]; - int drawerNo = DrawerNo + 1; - ChannelStock cs = SqlSugarHelper.Db.Queryable() - .Where(cs => cs.DrugId == oi._OrderDetail.DrugId - && cs.ManuNo == oi._OrderDetail.SetManuNo - && cs.EffDate == oi._OrderDetail.SetEffDate - && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") - && cs.DrawerNo == drawerNo).First(); - if (cs == null) - { - empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo},{oi._OrderDetail.SetEffDate};"; - continue; - } - cs.Quantity = cs.Quantity - oi._OrderDetail.Quantity; - // 更新数据 库存信息 - SqlSugarHelper.Db.Updateable(cs).UpdateColumns(it => new { it.Quantity }).ExecuteCommand(); + //for (int j = 0; j < oi.OrderDetailList.Count; j++) + //{ + // oi._OrderDetail = oi.OrderDetailList[j]; + // int drawerNo = DrawerNo + 1; + // ChannelStock cs = SqlSugarHelper.Db.Queryable() + // .Where(cs => cs.DrugId == oi._OrderDetail.DrugId + // && cs.ManuNo == oi._OrderDetail.SetManuNo + // && cs.EffDate == oi._OrderDetail.SetEffDate + // && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") + // && cs.DrawerNo == drawerNo).First(); + // if (cs == null) + // { + // empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo},{oi._OrderDetail.SetEffDate};"; + // continue; + // } + // cs.Quantity = cs.Quantity - oi._OrderDetail.Quantity; + // // 更新数据 库存信息 + // SqlSugarHelper.Db.Updateable(cs).UpdateColumns(it => new { it.Quantity }).ExecuteCommand(); - if (cs != null) - { + // if (cs != null) + // { - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), - DrawerNo = cs.DrawerNo, - ColNo = cs.ColNo, - DrugId = cs.DrugId, - ManuNo = cs.ManuNo, - EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null, - Operator = HomeWindowViewModel.Operator?.Id, - Reviewer = HomeWindowViewModel.Reviewer?.Id, - OperationTime = DateTime.Now, - Quantity = oi._OrderDetail.Quantity, - Type = 2, - InvoiceId = oi.OrderNo - //, StockQuantity = nowChannels.Sum(it => it.Quantity) - }).ExecuteCommand(); + // SqlSugarHelper.Db.Insertable(new MachineRecord() + // { + // MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), + // DrawerNo = cs.DrawerNo, + // ColNo = cs.ColNo, + // DrugId = cs.DrugId, + // ManuNo = cs.ManuNo, + // EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null, + // Operator = HomeWindowViewModel.Operator?.Id, + // Reviewer = HomeWindowViewModel.Reviewer?.Id, + // OperationTime = DateTime.Now, + // Quantity = oi._OrderDetail.Quantity, + // Type = 2, + // InvoiceId = oi.OrderNo + // //, StockQuantity = nowChannels.Sum(it => it.Quantity) + // }).ExecuteCommand(); - #region 记录 注射剂使用与交接记录报表 - //查询发药时间 - //MachineRecord SendMachineRecord = SqlSugarHelper.Db.Queryable().Where(mr => mr.DrawerNo == cs.DrawerNo && mr.Type == 2) - //.OrderByDescending(mr => mr.OperationTime) - //.First(); - //string retUser = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.DrawerNo == cs.DrawerNo) - //.Select(cl => cl.BelongUser).First(); + // #region 记录 注射剂使用与交接记录报表 + // //查询发药时间 + // //MachineRecord SendMachineRecord = SqlSugarHelper.Db.Queryable().Where(mr => mr.DrawerNo == cs.DrawerNo && mr.Type == 2) + // //.OrderByDescending(mr => mr.OperationTime) + // //.First(); + // //string retUser = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.DrawerNo == cs.DrawerNo) + // //.Select(cl => cl.BelongUser).First(); - RejectionReport rejectionReport = SqlSugarHelper.Db.Queryable().Where(rp => rp.DrugId == cs.DrugId && rp.DrawerNo == cs.DrawerNo).OrderByDescending(rp => rp.SendDate).First(); + // RejectionReport rejectionReport = SqlSugarHelper.Db.Queryable().Where(rp => rp.DrugId == cs.DrugId && rp.DrawerNo == cs.DrawerNo).OrderByDescending(rp => rp.SendDate).First(); - //发药信息 - //RejectionReport rejectionReport = new RejectionReport(); - //rejectionReport.SendDate = SendMachineRecord.OperationTime; - //rejectionReport.SendUser = SendMachineRecord.Operator.ToString(); - //rejectionReport.ReceiveUser = retUser; - rejectionReport.RealNum = cs.BaseQuantity; + // //发药信息 + // //RejectionReport rejectionReport = new RejectionReport(); + // //rejectionReport.SendDate = SendMachineRecord.OperationTime; + // //rejectionReport.SendUser = SendMachineRecord.Operator.ToString(); + // //rejectionReport.ReceiveUser = retUser; + // rejectionReport.RealNum = cs.BaseQuantity; - //还药信息 - rejectionReport.InfactNum = cs.BaseQuantity - oi._OrderDetail.Quantity; - rejectionReport.EmptyNum = oi._OrderDetail.Quantity; - rejectionReport.ReturnTime = DateTime.Now.ToString(); - rejectionReport.ReturnUser = rejectionReport.SendUser; - rejectionReport.ReturnReceiveUser = rejectionReport.ReceiveUser;// SendMachineRecord.Operator.ToString(); - rejectionReport.DrugId = oi._OrderDetail.DrugId; - rejectionReport.DrugName = oi._OrderDetail.DrugInfo.DrugName; - rejectionReport.DrugSpec = oi._OrderDetail.DrugInfo.DrugSpec; + // //还药信息 + // rejectionReport.InfactNum = cs.BaseQuantity - oi._OrderDetail.Quantity; + // rejectionReport.EmptyNum = oi._OrderDetail.Quantity; + // rejectionReport.ReturnTime = DateTime.Now.ToString(); + // rejectionReport.ReturnUser = rejectionReport.SendUser; + // rejectionReport.ReturnReceiveUser = rejectionReport.ReceiveUser;// SendMachineRecord.Operator.ToString(); + // rejectionReport.DrugId = oi._OrderDetail.DrugId; + // rejectionReport.DrugName = oi._OrderDetail.DrugInfo.DrugName; + // rejectionReport.DrugSpec = oi._OrderDetail.DrugInfo.DrugSpec; - rejectionReport.OperationTime = DateTime.Now; + // rejectionReport.OperationTime = DateTime.Now; - int iRejectionReport = SqlSugarHelper.Db.Updateable(rejectionReport).ExecuteCommand(); + // int iRejectionReport = SqlSugarHelper.Db.Updateable(rejectionReport).ExecuteCommand(); - #endregion + // #endregion - } - //保存账册 - int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() - { - DrugId = oi._OrderDetail.DrugId, - Type = 2, - Department = oi.DeptName, - OrderNo = oi.OrderNo, - ManuNo = cs.ManuNo, - EffDate = cs.EffDate, - OutQuantity = oi._OrderDetail.Quantity, - UserId1 = HomeWindowViewModel.Operator?.Id, - UserId2 = HomeWindowViewModel.Reviewer?.Id, - MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), - CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), - CreateTime = DateTime.Now, - InvoiceNo = oi.OrderNo + // } + // //保存账册 + // int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() + // { + // DrugId = oi._OrderDetail.DrugId, + // Type = 2, + // Department = oi.DeptName, + // OrderNo = oi.OrderNo, + // ManuNo = cs.ManuNo, + // EffDate = cs.EffDate, + // OutQuantity = oi._OrderDetail.Quantity, + // UserId1 = HomeWindowViewModel.Operator?.Id, + // UserId2 = HomeWindowViewModel.Reviewer?.Id, + // MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), + // CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), + // CreateTime = DateTime.Now, + // InvoiceNo = oi.OrderNo - }).ExecuteCommand(); - //修改凌晨生成的日结存与总结存数据 - AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable() - .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString())) - .Where(ab => ab.Type == 3) - .Where(ab => ab.DrugId == oi._OrderDetail.DrugId) - .Where(ab => ab.ManuNo == cs.ManuNo) - .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First(); - if (accountBookG2Day != null) - { - accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi._OrderDetail.Quantity; - SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand(); - } - else - { - //生成日结存时可能没有该库位的绑定信息,需要写入日结存 - int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() - { - DrugId = oi._OrderDetail.DrugId, - Type = 3, - ManuNo = cs.ManuNo, - EffDate = cs.EffDate, - YQuantity = 0, - ManuStock = oi._OrderDetail.Quantity, - TotalStock = oi._OrderDetail.Quantity, - UserId1 = HomeWindowViewModel.Operator?.Id, - UserId2 = HomeWindowViewModel.Reviewer?.Id, - MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), - CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), - InvoiceNo = "日结存" - }).ExecuteCommand(); - if (iDayResult <= 0) - { - logger.Info($"未写入日结存数据{oi._OrderDetail.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}"); - } - } - //修改凌晨生成的日结存与总结存数据 - AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable() - .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString())) - .Where(ab => ab.Type == 4) - .Where(ab => ab.DrugId == oi._OrderDetail.DrugId) - .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First(); - if (accountBookG2Total != null) - { - accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi._OrderDetail.Quantity; - SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand(); - } - else - { - //生成总结存时可能没有该库位的绑定信息,需要写入总结存 - int iTotalResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() - { - DrugId = oi._OrderDetail.DrugId, - Type = 4, - YQuantity = 0, - ManuStock = oi._OrderDetail.Quantity, - TotalStock = oi._OrderDetail.Quantity, - UserId1 = HomeWindowViewModel.Operator?.Id, - UserId2 = HomeWindowViewModel.Reviewer?.Id, - MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), - CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), - InvoiceNo = "总结存" - }).ExecuteCommand(); - if (iTotalResult <= 0) - { - logger.Info($"未写入总结存数据{oi._OrderDetail.DrugId}-{oi._OrderDetail.Quantity}"); - } - } + // }).ExecuteCommand(); + // //修改凌晨生成的日结存与总结存数据 + // AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable() + // .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString())) + // .Where(ab => ab.Type == 3) + // .Where(ab => ab.DrugId == oi._OrderDetail.DrugId) + // .Where(ab => ab.ManuNo == cs.ManuNo) + // .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First(); + // if (accountBookG2Day != null) + // { + // accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - oi._OrderDetail.Quantity; + // SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand(); + // } + // else + // { + // //生成日结存时可能没有该库位的绑定信息,需要写入日结存 + // int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() + // { + // DrugId = oi._OrderDetail.DrugId, + // Type = 3, + // ManuNo = cs.ManuNo, + // EffDate = cs.EffDate, + // YQuantity = 0, + // ManuStock = oi._OrderDetail.Quantity, + // TotalStock = oi._OrderDetail.Quantity, + // UserId1 = HomeWindowViewModel.Operator?.Id, + // UserId2 = HomeWindowViewModel.Reviewer?.Id, + // MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), + // CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), + // InvoiceNo = "日结存" + // }).ExecuteCommand(); + // if (iDayResult <= 0) + // { + // logger.Info($"未写入日结存数据{oi._OrderDetail.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}"); + // } + // } + // //修改凌晨生成的日结存与总结存数据 + // AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable() + // .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["dm_machineId"].ToString())) + // .Where(ab => ab.Type == 4) + // .Where(ab => ab.DrugId == oi._OrderDetail.DrugId) + // .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First(); + // if (accountBookG2Total != null) + // { + // accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - oi._OrderDetail.Quantity; + // SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand(); + // } + // else + // { + // //生成总结存时可能没有该库位的绑定信息,需要写入总结存 + // int iTotalResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() + // { + // DrugId = oi._OrderDetail.DrugId, + // Type = 4, + // YQuantity = 0, + // ManuStock = oi._OrderDetail.Quantity, + // TotalStock = oi._OrderDetail.Quantity, + // UserId1 = HomeWindowViewModel.Operator?.Id, + // UserId2 = HomeWindowViewModel.Reviewer?.Id, + // MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), + // CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), + // InvoiceNo = "总结存" + // }).ExecuteCommand(); + // if (iTotalResult <= 0) + // { + // logger.Info($"未写入总结存数据{oi._OrderDetail.DrugId}-{oi._OrderDetail.Quantity}"); + // } + // } + + //} + + #endregion - } - } - if (!string.IsNullOrEmpty(empChannelStock)) - { - AlertMsg alertMsg = new AlertMsg - { - Message = $"所选处方对应药品批次效期无库存{empChannelStock}", - Type = MsgType.ERROR, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - logger.Info($"所选处方对应药品批次效期无库存{empChannelStock}"); - throw new Exception("事务回滚"); - return false; } + //if (!string.IsNullOrEmpty(empChannelStock)) + //{ + // AlertMsg alertMsg = new AlertMsg + // { + // Message = $"所选处方对应药品批次效期无库存{empChannelStock}", + // Type = MsgType.ERROR, + // }; + // _eventAggregator.GetEvent().Publish(alertMsg); + // logger.Info($"所选处方对应药品批次效期无库存{empChannelStock}"); + // throw new Exception("事务回滚"); + // return false; + //} return true; }); if (f.Data) @@ -1033,7 +1091,7 @@ namespace DM_Weight.ViewModels RequestData(); AlertMsg alertMsg = new AlertMsg { - Message = "所选处方已核对完成", + Message = "所选单子已核对完成", Type = MsgType.SUCCESS, }; _eventAggregator.GetEvent().Publish(alertMsg); @@ -1042,7 +1100,7 @@ namespace DM_Weight.ViewModels { AlertMsg alertMsg = new AlertMsg { - Message = "处方核对失败!", + Message = "核对失败!", Type = MsgType.ERROR, }; _eventAggregator.GetEvent().Publish(alertMsg); @@ -1053,17 +1111,48 @@ namespace DM_Weight.ViewModels { AlertMsg alertMsg = new AlertMsg { - Message = "请勾选要核对的处方数据", + Message = "请勾选要核对的数据", Type = MsgType.ERROR }; _eventAggregator.GetEvent().Publish(alertMsg); } } + + //取消 + public DelegateCommand CancleTake + { + get => new DelegateCommand(() => + { + RequestData(); + }); + } + public void OnNavigatedTo(NavigationContext navigationContext) { RequestData(); - //_eventAggregator.GetEvent().Subscribe(DoMyPrismEvent); + //查询当前药师的第一个药箱号并打开该药箱 + int drawerNo = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerNo).First(); + if (drawerNo > 0) + { + DrawerNo = drawerNo; + //进入页面打开当前用户的第一个药箱 + //记录开药箱日志 + SqlSugarHelper.Db.Insertable(new MachineRecord() + { + MachineId = "DM5", + DrawerNo = drawerNo, + Operator = HomeWindowViewModel.Operator?.Id, + OperationTime = DateTime.Now, + Type = 55, + InvoiceId = $"打开{drawerNo}号药箱", + //OptionType = SelfContent.Substring(0, 1) == "取" ? 0 : 1 + }).ExecuteCommand(); + + _portUtil.SpeakAsync($"正在打开{drawerNo}号药箱"); + logger.Info($"正在打开{drawerNo}号药箱"); + ModbusHelper.GetInstance().OpenBoxDoor(drawerNo - 1); + } } public bool IsNavigationTarget(NavigationContext navigationContext) diff --git a/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs b/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs index 07fca2f..6bbfbb2 100644 --- a/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs +++ b/DM_Weight/ViewModels/RoleManagerWindowViewModel.cs @@ -165,7 +165,7 @@ namespace DM_Weight.ViewModels { Id = 1, //PremissionName = "取药", - PremissionName = "操作药箱", + PremissionName = "药箱操作", PremissionImage = "/Images/TbQyao.png", }; ObservableCollection quyaoChild = new ObservableCollection(); @@ -190,16 +190,16 @@ namespace DM_Weight.ViewModels // PremissionPath = "OpenBoxWindow", //}; //开药箱 - PremissionDm openBox = new PremissionDm - { - Id = 11, - PremissionName = "开药箱", - PremissionPath = "OpenBoxNewWindow", - }; + //PremissionDm openBox = new PremissionDm + //{ + // Id = 11, + // PremissionName = "开药箱", + // PremissionPath = "OpenBoxNewWindow", + //}; //开药箱核对名下单子 PremissionDm openBoxWithOrder = new PremissionDm { - Id = 14, + Id = 11, PremissionName = "操作药箱", PremissionPath = "CheckSelfOrderWindow", }; @@ -267,7 +267,7 @@ namespace DM_Weight.ViewModels //quyaoChild.Add(quyao3); //quyaoChild.Add(quyao4); //quyaoChild.Add(quyao5); - quyaoChild.Add(openBox); + //quyaoChild.Add(openBox); quyaoChild.Add(checkOrder); quyaoChild.Add(addition); quyaoChild.Add(openBoxWithOrder); diff --git a/DM_Weight/Views/CheckOrderNewWindow.xaml b/DM_Weight/Views/CheckOrderNewWindow.xaml index c8586cd..d243d8d 100644 --- a/DM_Weight/Views/CheckOrderNewWindow.xaml +++ b/DM_Weight/Views/CheckOrderNewWindow.xaml @@ -74,26 +74,26 @@ - +