From dcd6200e54b5a4226166c39486656b5e3fdc9280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=B7=A7?= <625215135@qq.com> Date: Mon, 21 Jul 2025 15:23:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BD=95=E5=B1=8F=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DM_Weight.Commons/DM_Weight.Commons.csproj | 1 + DM_Weight.sln | 4 +- DM_Weight/App.config | 4 +- DM_Weight/DM_Weight.csproj | 1 - .../ViewModels/AdditionWindowViewModel.cs | 2 +- .../BindBoxPackageWindowViewModel.cs | 14 ++-- .../CheckOrderNewWindowViewModel.cs | 6 +- .../CheckSelfOrderWindowViewModel.cs | 14 ++-- .../ViewModels/ExchangeDialogViewModel.cs | 2 +- .../ViewModels/ExchangeWindowViewModel.cs | 4 +- DM_Weight/ViewModels/MainWindowViewModel.cs | 69 +++++++++------- DM_Weight/ViewModels/RemoveDialogViewModel.cs | 2 +- .../ViewModels/SettingBoxWindowViewModel.cs | 2 +- DM_Weight/Views/CheckSelfOrderWindow.xaml | 6 +- DM_Weight/Views/CheckStockWindow.xaml | 2 +- DM_Weight/Views/ExchangeWindow.xaml | 2 +- DM_Weight/Views/MachineRecordWindow.xaml | 2 +- DM_Weight/Views/MainWindow.xaml.cs | 14 ++-- DM_Weight/Views/WSDRecordWindow.xaml | 2 +- DM_Weight/util/FFmpegHelper.cs | 79 +++++++++++++++++++ 20 files changed, 163 insertions(+), 69 deletions(-) create mode 100644 DM_Weight/util/FFmpegHelper.cs diff --git a/DM_Weight.Commons/DM_Weight.Commons.csproj b/DM_Weight.Commons/DM_Weight.Commons.csproj index 467963e..4949090 100644 --- a/DM_Weight.Commons/DM_Weight.Commons.csproj +++ b/DM_Weight.Commons/DM_Weight.Commons.csproj @@ -4,6 +4,7 @@ net6.0-windows enable true + AnyCPU;x64 diff --git a/DM_Weight.sln b/DM_Weight.sln index 1e50fcf..0e0df8d 100644 --- a/DM_Weight.sln +++ b/DM_Weight.sln @@ -31,8 +31,8 @@ Global {439FA76B-F874-40DB-BAF2-E3647CD55B10}.Release|x86.Build.0 = Debug|x86 {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.Build.0 = Debug|Any CPU + {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.ActiveCfg = Debug|x64 + {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x64.Build.0 = Debug|x64 {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x86.ActiveCfg = Debug|Any CPU {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Debug|x86.Build.0 = Debug|Any CPU {7F9FA18B-5C28-476E-97D4-B5504B8DEB9B}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/DM_Weight/App.config b/DM_Weight/App.config index 3c9c33c..1c0b203 100644 --- a/DM_Weight/App.config +++ b/DM_Weight/App.config @@ -42,7 +42,7 @@ - + @@ -99,7 +99,7 @@ - + diff --git a/DM_Weight/DM_Weight.csproj b/DM_Weight/DM_Weight.csproj index fed40ab..e965709 100644 --- a/DM_Weight/DM_Weight.csproj +++ b/DM_Weight/DM_Weight.csproj @@ -74,7 +74,6 @@ - diff --git a/DM_Weight/ViewModels/AdditionWindowViewModel.cs b/DM_Weight/ViewModels/AdditionWindowViewModel.cs index 6583fc0..ef64701 100644 --- a/DM_Weight/ViewModels/AdditionWindowViewModel.cs +++ b/DM_Weight/ViewModels/AdditionWindowViewModel.cs @@ -166,7 +166,7 @@ namespace DM_Weight.ViewModels Operator = HomeWindowViewModel.Operator?.Id, OperationTime = DateTime.Now, Type = 55, - InvoiceId = "手术间补药", + InvoiceId = "手术间补药入库", }).ExecuteCommand(); _socketHelper.OpenStatus = true; //_socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); diff --git a/DM_Weight/ViewModels/BindBoxPackageWindowViewModel.cs b/DM_Weight/ViewModels/BindBoxPackageWindowViewModel.cs index d51c756..24618d7 100644 --- a/DM_Weight/ViewModels/BindBoxPackageWindowViewModel.cs +++ b/DM_Weight/ViewModels/BindBoxPackageWindowViewModel.cs @@ -456,11 +456,13 @@ namespace DM_Weight.ViewModels if (baseQty > _ChannelList.BaseQuantity) { //基数变大,需要补药 - _ChannelList.channelStocks[0].NeedNum = _ChannelList.channelStocks[0].NeedNum+ baseQty - _ChannelList.BaseQuantity; + //_ChannelList.channelStocks[0].NeedNum = _ChannelList.channelStocks[0].NeedNum + baseQty - _ChannelList.BaseQuantity; } else { - _ChannelList.channelStocks[0].NeedNum = 0; + //_ChannelList.channelStocks[0].NeedNum = 0; + _ChannelList.channelStocks.ForEach(cs => cs.State = 0); + SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks).UpdateColumns(cs => new { cs.State }).ExecuteCommand(); } int oldBaseQty = _ChannelList.BaseQuantity; _ChannelList.BaseQuantity = baseQty; @@ -468,10 +470,10 @@ namespace DM_Weight.ViewModels //int iUpdate = SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks[0]).ExecuteCommand(); _ChannelList.channelStocks.ForEach(cs => cs.BaseQuantity = baseQty); int iBaseUpdate = SqlSugarHelper.Db.Updateable().SetColumns(cs => new ChannelStock(){ BaseQuantity= _ChannelList.channelStocks[0].BaseQuantity }).Where(cs=>cs.Chnguid==_ChannelList.Id).ExecuteCommand(); - if (iBaseUpdate > 0) - { - iBaseUpdate = SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks[0]).UpdateColumns(cs => new { cs.NeedNum }).ExecuteCommand(); - } + //if (iBaseUpdate > 0) + //{ + // iBaseUpdate = SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks[0]).UpdateColumns(cs => new { cs.NeedNum }).ExecuteCommand(); + //} //更新ChannelList表中的BaseQuantity int iUpdateChannelList = SqlSugarHelper.Db.Updateable() .SetColumns(it => new ChannelList() { BaseQuantity = baseQty }) diff --git a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs index cfabe5e..91ee90e 100644 --- a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs @@ -626,12 +626,13 @@ namespace DM_Weight.ViewModels ManuNo = cs.ManuNo, EffDate = cs.EffDate, YQuantity = 0, - ManuStock = oi._OrderDetail.Quantity, + ManuStock =nowChannels.Sum(it => it.Quantity), //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"), + CreateTime=DateTime.Now, InvoiceNo = "日结存" }).ExecuteCommand(); if (iDayResult <= 0) @@ -664,6 +665,7 @@ namespace DM_Weight.ViewModels UserId2 = HomeWindowViewModel.Reviewer?.Id, MachineId = ConfigurationManager.AppSettings["dm_machineId"].ToString(), CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), + CreateTime = DateTime.Now, InvoiceNo = "总结存" }).ExecuteCommand(); if (iTotalResult <= 0) @@ -748,7 +750,7 @@ namespace DM_Weight.ViewModels machineRecord.Operator = HomeWindowViewModel.Operator?.Id; machineRecord.OperationTime = DateTime.Now; machineRecord.Type = 55; - machineRecord.InvoiceId = $"打开{DrawerNo + 1}号手术间"; + machineRecord.InvoiceId = $"管理员核对单,打开{DrawerNo + 1}号手术间"; if (DrawerNo >= 0) diff --git a/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs b/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs index a74b1bf..5043521 100644 --- a/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckSelfOrderWindowViewModel.cs @@ -783,7 +783,7 @@ namespace DM_Weight.ViewModels machineRecord.Operator = HomeWindowViewModel.Operator?.Id; machineRecord.OperationTime = DateTime.Now; machineRecord.Type = 55; - machineRecord.InvoiceId = $"打开{DrawerNo}号手术间"; + machineRecord.InvoiceId = $"麻醉师核对单,打开{DrawerNo}号手术间"; if (DrawerNo > 0) @@ -1059,12 +1059,12 @@ namespace DM_Weight.ViewModels if (oi.DmStatus == 0) { //查询该药箱是否有该批次的药品,没有则无法确认(避免管理进行确认时确认不过去) - if(oi.OrderDetailList!=null) + if(oi._OrderDetail != null) { - for (int j = 0; j < oi.OrderDetailList.Count; j++) - { - oi._OrderDetail = oi.OrderDetailList[j]; - int drawerNo = DrawerNo + 1; + //for (int j = 0; j < oi.OrderDetailList.Count; j++) + //{ + // oi._OrderDetail = oi.OrderDetailList[j]; + int drawerNo = DrawerNo; ChannelStock cs = SqlSugarHelper.Db.Queryable() .Where(cs => cs.DrugId == oi._OrderDetail.DrugId && cs.ManuNo == oi._OrderDetail.SetManuNo @@ -1080,7 +1080,7 @@ namespace DM_Weight.ViewModels _eventAggregator.GetEvent().Publish(alertMsg); return false; } - } + //} } diff --git a/DM_Weight/ViewModels/ExchangeDialogViewModel.cs b/DM_Weight/ViewModels/ExchangeDialogViewModel.cs index 332bfc4..f6a3b92 100644 --- a/DM_Weight/ViewModels/ExchangeDialogViewModel.cs +++ b/DM_Weight/ViewModels/ExchangeDialogViewModel.cs @@ -180,7 +180,7 @@ namespace DM_Weight.ViewModels machineRecord.Operator = HomeWindowViewModel.Operator?.Id; machineRecord.OperationTime = DateTime.Now; machineRecord.Type = 55; - machineRecord.InvoiceId = $"打开{Convert.ToInt32(SelectedItem.Code)}号手术间"; + machineRecord.InvoiceId = $"交换药品明细{_ChannelStock?.DrawerNo},打开{Convert.ToInt32(SelectedItem.Code)}号手术间"; if (Convert.ToInt32(SelectedItem.Code) > 0) diff --git a/DM_Weight/ViewModels/ExchangeWindowViewModel.cs b/DM_Weight/ViewModels/ExchangeWindowViewModel.cs index 4bf6570..1925614 100644 --- a/DM_Weight/ViewModels/ExchangeWindowViewModel.cs +++ b/DM_Weight/ViewModels/ExchangeWindowViewModel.cs @@ -76,10 +76,10 @@ namespace DM_Weight.ViewModels machineRecord.Operator = HomeWindowViewModel.Operator?.Id; machineRecord.OperationTime = DateTime.Now; machineRecord.Type = 55; - machineRecord.InvoiceId = $"打开{DrawerNo+1}号手术间"; + machineRecord.InvoiceId = $"交换药品,打开{DrawerNo+1}号手术间"; - if (DrawerNo > 0) + if (DrawerNo+1 > 0) { RequestData(); _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); diff --git a/DM_Weight/ViewModels/MainWindowViewModel.cs b/DM_Weight/ViewModels/MainWindowViewModel.cs index 5c12129..ef8d118 100644 --- a/DM_Weight/ViewModels/MainWindowViewModel.cs +++ b/DM_Weight/ViewModels/MainWindowViewModel.cs @@ -12,7 +12,6 @@ using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; -using ScreenRecorderLib; using System; using System.Collections.Generic; using System.IO; @@ -29,10 +28,10 @@ namespace DM_Weight.ViewModels { #region 录屏相关 - public Recorder _recorder; + //public Recorder _recorder; private string _outputFolder; private string _outputFilePath; - public static MainWindowViewModel vm; + //public static MainWindowViewModel vm; #endregion private string _title = "Prism App"; //标题 @@ -82,9 +81,10 @@ namespace DM_Weight.ViewModels SocketHelper _socketHelper; private PortUtil _portUtil; - public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil) + FFmpegHelper fmpegHelper; + public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil,FFmpegHelper fmpegHelper) { - vm = this; + //vm = this; _portUtil = portUtil; this.eventAggregator = eventAggregator; this.eventAggregator.GetEvent().Subscribe(doMyPrismEvent2); @@ -137,6 +137,7 @@ namespace DM_Weight.ViewModels next(); } }); + this.fmpegHelper= fmpegHelper; } void doMyPrismEvent2(AlertMsg msg) @@ -196,21 +197,21 @@ namespace DM_Weight.ViewModels } else if (type == 2) { - _recorder?.Dispose(); + //_recorder?.Dispose(); } } #endregion void StopPrintScreen() { - + fmpegHelper.stopFlag = true; + fmpegHelper.StopRecording(); //退出登录结束录屏 - _recorder?.Stop(); + //_recorder?.Stop(); } //录屏 void StartPrintScreen() { - - // 创建输出目录 + fmpegHelper.stopFlag = false; _outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings"); if (!Directory.Exists(_outputFolder)) { @@ -218,30 +219,40 @@ namespace DM_Weight.ViewModels } // 生成输出文件名 string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss"); - _outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.mp4"); + _outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.webm"); + fmpegHelper.StartRecording(_outputFilePath, 25); + //// 创建输出目录 + //_outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings"); + //if (!Directory.Exists(_outputFolder)) + //{ + // Directory.CreateDirectory(_outputFolder); + //} + //// 生成输出文件名 + //string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + //_outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.mp4"); - // 设置录制选项 - var options = new RecorderOptions(); + //// 设置录制选项 + //var options = new RecorderOptions(); - // 创建录制器实例 - _recorder = Recorder.CreateRecorder(options); + //// 创建录制器实例 + //_recorder = Recorder.CreateRecorder(options); - // 设置事件处理 - _recorder.OnRecordingComplete += Recorder_OnRecordingComplete; - _recorder.OnRecordingFailed += Recorder_OnRecordingFailed; + //// 设置事件处理 + //_recorder.OnRecordingComplete += Recorder_OnRecordingComplete; + //_recorder.OnRecordingFailed += Recorder_OnRecordingFailed; - // 开始录制 - _recorder.Record(_outputFilePath); + //// 开始录制 + //_recorder.Record(_outputFilePath); } //录制失败 - private void Recorder_OnRecordingFailed(object sender, RecordingFailedEventArgs e) - { - logger.Info($"录制失败: {e.Error}"); - } - //录制完成 - private void Recorder_OnRecordingComplete(object sender, RecordingCompleteEventArgs e) - { - logger.Info($"录制完成: {e.FilePath}"); - } + //private void Recorder_OnRecordingFailed(object sender, RecordingFailedEventArgs e) + //{ + // logger.Info($"录制失败: {e.Error}"); + //} + ////录制完成 + //private void Recorder_OnRecordingComplete(object sender, RecordingCompleteEventArgs e) + //{ + // logger.Info($"录制完成: {e.FilePath}"); + //} } } diff --git a/DM_Weight/ViewModels/RemoveDialogViewModel.cs b/DM_Weight/ViewModels/RemoveDialogViewModel.cs index e0930c1..8934346 100644 --- a/DM_Weight/ViewModels/RemoveDialogViewModel.cs +++ b/DM_Weight/ViewModels/RemoveDialogViewModel.cs @@ -182,7 +182,7 @@ namespace DM_Weight.ViewModels machineRecord.Operator = HomeWindowViewModel.Operator?.Id; machineRecord.OperationTime = DateTime.Now; machineRecord.Type = 55; - machineRecord.InvoiceId = $"打开{Convert.ToInt32(SelectedItem.Code)}号手术间"; + machineRecord.InvoiceId = $"移出药品{_ChannelStock?.DrawerNo}打开{Convert.ToInt32(SelectedItem.Code)}号手术间"; if (Convert.ToInt32(SelectedItem.Code) > 0) diff --git a/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs b/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs index 05e1320..52c446b 100644 --- a/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs +++ b/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs @@ -226,7 +226,7 @@ namespace DM_Weight.ViewModels Operator = HomeWindowViewModel.Operator?.Id, OperationTime = DateTime.Now, Type = 55, - InvoiceId = $"打开{DrawerNo}号手术间", + InvoiceId = $"设置药箱,打开{DrawerNo}号手术间", }).ExecuteCommand(); //bool bFlag = ModbusHelper.GetInstance().OpenBoxDoor(DrawerNo - 1); _socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo - 1) }); diff --git a/DM_Weight/Views/CheckSelfOrderWindow.xaml b/DM_Weight/Views/CheckSelfOrderWindow.xaml index 9fcd39b..80b13d6 100644 --- a/DM_Weight/Views/CheckSelfOrderWindow.xaml +++ b/DM_Weight/Views/CheckSelfOrderWindow.xaml @@ -112,8 +112,8 @@ - - + + - +