Compare commits
2 Commits
701f6c88e6
...
e79cdae0da
Author | SHA1 | Date | |
---|---|---|---|
|
e79cdae0da |
|
|
|
a5d5a4aa40 |
|
|
@ -3,7 +3,7 @@
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<!-- 数据库连接字符串 -->
|
<!-- 数据库连接字符串 -->
|
||||||
<!--<add name="database" connectionString="server=127.0.0.1;database=wpf_dm_program;userid=root;password=qq1223" />-->
|
<!--<add name="database" connectionString="server=127.0.0.1;database=wpf_dm_program;userid=root;password=qq1223" />-->
|
||||||
<add name="database" connectionString="server=127.0.0.1;port=3306;database=xiangtan_mazuike_xx;userid=root;password=root" />
|
<add name="database" connectionString="server=192.168.50.84;port=3306;database=xiangtanTest;userid=root;password=root" />
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<!--<runtime>
|
<!--<runtime>
|
||||||
--><!--配置之后,Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
|
--><!--配置之后,Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
<PackageReference Include="NModbus4.NetCore" Version="2.0.1" />
|
<PackageReference Include="NModbus4.NetCore" Version="2.0.1" />
|
||||||
<PackageReference Include="Polly" Version="8.4.1" />
|
<PackageReference Include="Polly" Version="8.4.1" />
|
||||||
<PackageReference Include="Prism.Unity" Version="8.1.97" />
|
<PackageReference Include="Prism.Unity" Version="8.1.97" />
|
||||||
|
<PackageReference Include="ScreenRecorderLib" Version="6.5.1" />
|
||||||
<PackageReference Include="SharpPromise" Version="1.7.0" />
|
<PackageReference Include="SharpPromise" Version="1.7.0" />
|
||||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
|
<PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
|
||||||
<PackageReference Include="SuperSimpleTcp" Version="3.0.10" />
|
<PackageReference Include="SuperSimpleTcp" Version="3.0.10" />
|
||||||
|
|
|
@ -116,11 +116,11 @@ namespace DM_Weight.ViewModels
|
||||||
channelList.channelStocks = new List<ChannelStock>();
|
channelList.channelStocks = new List<ChannelStock>();
|
||||||
}
|
}
|
||||||
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]).ToList());
|
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]).ToList());
|
||||||
if (channelList != null)
|
//if (channelList != null)
|
||||||
{
|
//{
|
||||||
channelList.State = 1;//统一将所有的状态设置为已取药待入库
|
// channelList.State = 1;//统一将所有的状态设置为已取药待入库
|
||||||
channelLists.Add(channelList);
|
channelLists.Add(channelList);
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
_ChannelLists = channelLists;
|
_ChannelLists = channelLists;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ namespace DM_Weight.ViewModels
|
||||||
selectedStock = _ChannelList.channelStocks.ToList();
|
selectedStock = _ChannelList.channelStocks.ToList();
|
||||||
if (selectedStock != null && selectedStock.Count > 0)
|
if (selectedStock != null && selectedStock.Count > 0)
|
||||||
{
|
{
|
||||||
selectedStock.ForEach(cs => cs.ChannelLst.State = 2);
|
//selectedStock.ForEach(cs => cs.ChannelLst.State = 2);
|
||||||
|
|
||||||
int drawerNo = -1;
|
int drawerNo = -1;
|
||||||
for (int i = 0; i < selectedStock.Count; i++)
|
for (int i = 0; i < selectedStock.Count; i++)
|
||||||
|
@ -308,17 +308,22 @@ namespace DM_Weight.ViewModels
|
||||||
selectedStock.ForEach(cs =>
|
selectedStock.ForEach(cs =>
|
||||||
{
|
{
|
||||||
cs.Quantity = cs.Quantity + cs.AddToJJNum;
|
cs.Quantity = cs.Quantity + cs.AddToJJNum;
|
||||||
cs.NeedNum = 0;
|
//cs.NeedNum = 0;
|
||||||
cs.AddToJJNum = 0;
|
cs.AddToJJNum = 0;
|
||||||
|
//cs.State = 0;
|
||||||
});
|
});
|
||||||
SqlSugarHelper.Db.Updateable(selectedStock).ExecuteCommand();
|
SqlSugarHelper.Db.Updateable(selectedStock).ExecuteCommand();
|
||||||
// 更新交接柜状态为 已取药未入库
|
// 更新交接柜状态为 已取药未入库
|
||||||
SqlSugarHelper.Db.Updateable(new ChannelList()
|
//SqlSugarHelper.Db.Updateable(new ChannelList()
|
||||||
{
|
//{
|
||||||
State = 0
|
// State = 0
|
||||||
}).UpdateColumns(it => it.State).Where(it => it.DrawerNo == _ChannelList.DrawerNo).ExecuteCommand();
|
//}).UpdateColumns(it => it.State).Where(it => it.DrawerNo == _ChannelList.DrawerNo).ExecuteCommand();
|
||||||
for (int i = 0; i < selectedStock.Count; i++)
|
for (int i = 0; i < selectedStock.Count; i++)
|
||||||
{
|
{
|
||||||
|
int iUpdateResult = SqlSugarHelper.Db.Updateable<ChannelStock>()
|
||||||
|
.SetColumns(cs => new ChannelStock() { State = 0 })
|
||||||
|
.Where(cs => cs.DrawerNo == selectedStock[i].DrawerNo && cs.DrugId == selectedStock[i].DrugId && cs.MachineId == selectedStock[i].MachineId)
|
||||||
|
.ExecuteCommand();
|
||||||
string InvoiceId = "AddJiaoJieFromDM_" + CurrentTimeMillis();
|
string InvoiceId = "AddJiaoJieFromDM_" + CurrentTimeMillis();
|
||||||
// 保存记录
|
// 保存记录
|
||||||
SqlSugarHelper.Db.Insertable(new MachineRecord()
|
SqlSugarHelper.Db.Insertable(new MachineRecord()
|
||||||
|
@ -392,7 +397,7 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
if (channelStock != null)
|
if (channelStock != null)
|
||||||
{
|
{
|
||||||
if (channelStock.ChannelLst.State == 1)
|
if (channelStock.State == 1)
|
||||||
{
|
{
|
||||||
channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected;
|
channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected;
|
||||||
}
|
}
|
||||||
|
|
|
@ -316,6 +316,7 @@ namespace DM_Weight.ViewModels
|
||||||
MachineId = "DM5",
|
MachineId = "DM5",
|
||||||
AddToJJNum = 0,
|
AddToJJNum = 0,
|
||||||
NeedNum = baseQuantity,
|
NeedNum = baseQuantity,
|
||||||
|
State=0
|
||||||
//ManuNo=DrugManuNo.ManuNo
|
//ManuNo=DrugManuNo.ManuNo
|
||||||
}).ExecuteCommand();
|
}).ExecuteCommand();
|
||||||
// 保存数据 入库记录
|
// 保存数据 入库记录
|
||||||
|
@ -455,7 +456,7 @@ namespace DM_Weight.ViewModels
|
||||||
if (baseQty > _ChannelList.BaseQuantity)
|
if (baseQty > _ChannelList.BaseQuantity)
|
||||||
{
|
{
|
||||||
//基数变大,需要补药
|
//基数变大,需要补药
|
||||||
_ChannelList.channelStocks[0].NeedNum = baseQty - _ChannelList.BaseQuantity;
|
_ChannelList.channelStocks[0].NeedNum = _ChannelList.channelStocks[0].NeedNum+ baseQty - _ChannelList.BaseQuantity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -466,8 +467,11 @@ namespace DM_Weight.ViewModels
|
||||||
//_ChannelList.channelStocks[0].BaseQuantity = baseQty;
|
//_ChannelList.channelStocks[0].BaseQuantity = baseQty;
|
||||||
//int iUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>(_ChannelList.channelStocks[0]).ExecuteCommand();
|
//int iUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>(_ChannelList.channelStocks[0]).ExecuteCommand();
|
||||||
_ChannelList.channelStocks.ForEach(cs => cs.BaseQuantity = baseQty);
|
_ChannelList.channelStocks.ForEach(cs => cs.BaseQuantity = baseQty);
|
||||||
int iBaseUpdate = SqlSugarHelper.Db.Updateable(_ChannelList.channelStocks).UpdateColumns(cs => new { cs.BaseQuantity, cs.NeedNum }).ExecuteCommand();
|
int iBaseUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>().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();
|
||||||
|
}
|
||||||
//更新ChannelList表中的BaseQuantity
|
//更新ChannelList表中的BaseQuantity
|
||||||
int iUpdateChannelList = SqlSugarHelper.Db.Updateable<ChannelList>()
|
int iUpdateChannelList = SqlSugarHelper.Db.Updateable<ChannelList>()
|
||||||
.SetColumns(it => new ChannelList() { BaseQuantity = baseQty })
|
.SetColumns(it => new ChannelList() { BaseQuantity = baseQty })
|
||||||
|
|
|
@ -1074,7 +1074,7 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
AlertMsg alertMsg = new AlertMsg
|
AlertMsg alertMsg = new AlertMsg
|
||||||
{
|
{
|
||||||
Message = $"处方{oi.OrderNo}应药品批次{oi._OrderDetail.SetManuNo}无库存,无法确认",
|
Message = $"处方{oi.OrderNo}因药品批次{oi._OrderDetail.SetManuNo}无库存,无法确认",
|
||||||
Type = MsgType.ERROR,
|
Type = MsgType.ERROR,
|
||||||
};
|
};
|
||||||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||||
|
|
|
@ -93,6 +93,20 @@ namespace DM_Weight.ViewModels
|
||||||
public void OnNavigatedTo(NavigationContext navigationContext)
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
||||||
{
|
{
|
||||||
logger.Info("进入OnNavigatedTo");
|
logger.Info("进入OnNavigatedTo");
|
||||||
|
//删除药品有批次但是库存为0的药品
|
||||||
|
List<ChannelStock> csList = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cs.Quantity <= 0 && !string.IsNullOrEmpty(cs.ManuNo)).ToList();
|
||||||
|
if (csList != null && csList.Count > 0)
|
||||||
|
{
|
||||||
|
SqlSugarHelper.Db.Deleteable<ChannelStock>().Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cs.Quantity <= 0 && !string.IsNullOrEmpty(cs.ManuNo)).ExecuteCommand();
|
||||||
|
for (int i = 0; i < csList.Count; i++)
|
||||||
|
{
|
||||||
|
//如果channel_stock下无数据则channel_list同步删除
|
||||||
|
int iListCount= SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cs.DrawerNo==csList[i].DrawerNo&& cs.DrugId == csList[i].DrugId).Count();
|
||||||
|
if (iListCount <=0)
|
||||||
|
SqlSugarHelper.Db.Deleteable<ChannelList>().Where(cl => cl.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5") && cl.Id == csList[i].Chnguid).ExecuteCommand();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
RequestData();
|
RequestData();
|
||||||
logger.Info("结束RequestData");
|
logger.Info("结束RequestData");
|
||||||
}
|
}
|
||||||
|
@ -167,15 +181,16 @@ namespace DM_Weight.ViewModels
|
||||||
ManuNo = it.ManuNo,
|
ManuNo = it.ManuNo,
|
||||||
EffDate = it.EffDate,
|
EffDate = it.EffDate,
|
||||||
Id = it.Id,
|
Id = it.Id,
|
||||||
NeedNum=0,
|
NeedNum = 0,
|
||||||
AddToJJNum=0
|
AddToJJNum = 0,
|
||||||
}).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate,it.NeedNum,it.AddToJJNum }).ExecuteCommand();
|
|
||||||
|
|
||||||
SqlSugarHelper.Db.Updateable(new ChannelList()
|
|
||||||
{
|
|
||||||
State = 0,
|
State = 0,
|
||||||
Id = it.Chnguid
|
}).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate, it.NeedNum, it.AddToJJNum }).ExecuteCommand();
|
||||||
}).UpdateColumns(cl => new { cl.State }).ExecuteCommand();
|
|
||||||
|
//SqlSugarHelper.Db.Updateable(new ChannelList()
|
||||||
|
//{
|
||||||
|
// State = 0,
|
||||||
|
// Id = it.Chnguid
|
||||||
|
//}).UpdateColumns(cl => new { cl.State }).ExecuteCommand();
|
||||||
|
|
||||||
// 保存数据 盘点记录
|
// 保存数据 盘点记录
|
||||||
SqlSugarHelper.Db.Insertable(new MachineRecord()
|
SqlSugarHelper.Db.Insertable(new MachineRecord()
|
||||||
|
@ -191,7 +206,7 @@ namespace DM_Weight.ViewModels
|
||||||
OperationTime = DateTime.Now,
|
OperationTime = DateTime.Now,
|
||||||
Quantity = it.CheckQuantity - it.Quantity,
|
Quantity = it.CheckQuantity - it.Quantity,
|
||||||
Type = 4,
|
Type = 4,
|
||||||
InvoiceId = InvoiceId
|
InvoiceId = $"{it.DrawerNo}{it.DrugInfo.DrugName}盘前库存{it.Quantity},后{it.CheckQuantity}" // InvoiceId
|
||||||
//,StockQuantity = nowChannels.Sum(it => it.Quantity),
|
//,StockQuantity = nowChannels.Sum(it => it.Quantity),
|
||||||
//CheckQuantity = it.CheckQuantity
|
//CheckQuantity = it.CheckQuantity
|
||||||
}).ExecuteCommand();
|
}).ExecuteCommand();
|
||||||
|
|
|
@ -127,16 +127,16 @@ namespace DM_Weight.ViewModels
|
||||||
// _eventAggregator = eventAggregator;
|
// _eventAggregator = eventAggregator;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil, FingerprintUtil fingerprintUtil,SocketHelper socketHelper)
|
public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil, FingerprintUtil fingerprintUtil, SocketHelper socketHelper)
|
||||||
{
|
{
|
||||||
_fingerprintUtil = fingerprintUtil;
|
_fingerprintUtil = fingerprintUtil;
|
||||||
_portUtil = portUtil;
|
_portUtil = portUtil;
|
||||||
//_chkFunction= chcFunction;
|
//_chkFunction= chcFunction;
|
||||||
_regionManager = regionManager;
|
_regionManager = regionManager;
|
||||||
_eventAggregator = eventAggregator;
|
_eventAggregator = eventAggregator;
|
||||||
_socketHelper= socketHelper;
|
_socketHelper = socketHelper;
|
||||||
FingerMsg = !_fingerprintUtil.bIsConnected;
|
FingerMsg = !_fingerprintUtil.bIsConnected;
|
||||||
NetMsg=!_socketHelper.ConnectedStatus;
|
NetMsg = !_socketHelper.ConnectedStatus;
|
||||||
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
||||||
}
|
}
|
||||||
private DelegateCommand? _loginCommand;
|
private DelegateCommand? _loginCommand;
|
||||||
|
@ -377,6 +377,8 @@ _exitCommand ??= new DelegateCommand(Exit);
|
||||||
void Exit()
|
void Exit()
|
||||||
{
|
{
|
||||||
//_chkFunction.HIKLoginOut();
|
//_chkFunction.HIKLoginOut();
|
||||||
|
//清录屏进程
|
||||||
|
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(2);
|
||||||
_socketHelper.SocketDisConnect();
|
_socketHelper.SocketDisConnect();
|
||||||
Process.GetCurrentProcess().Kill();
|
Process.GetCurrentProcess().Kill();
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
|
@ -465,6 +467,8 @@ _exitCommand ??= new DelegateCommand(Exit);
|
||||||
{
|
{
|
||||||
//FingerMsg = !_fingerprintUtil.bIsConnected;
|
//FingerMsg = !_fingerprintUtil.bIsConnected;
|
||||||
//_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
//_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
||||||
|
//结束录屏
|
||||||
|
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -478,6 +482,10 @@ _exitCommand ??= new DelegateCommand(Exit);
|
||||||
public void OnNavigatedFrom(NavigationContext navigationContext)
|
public void OnNavigatedFrom(NavigationContext navigationContext)
|
||||||
{
|
{
|
||||||
_eventAggregator.GetEvent<FingerprintEvent>().Unsubscribe(LoginEvent);
|
_eventAggregator.GetEvent<FingerprintEvent>().Unsubscribe(LoginEvent);
|
||||||
|
#region 录屏
|
||||||
|
//登录进来后开始录屏
|
||||||
|
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(1);
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
//手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
|
//手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
|
||||||
public string ReadAppSetting(string key)
|
public string ReadAppSetting(string key)
|
||||||
|
|
|
@ -1,30 +1,40 @@
|
||||||
using MaterialDesignThemes.Wpf;
|
using DM_Weight.Finger;
|
||||||
|
using DM_Weight.HIKVISION;
|
||||||
|
using DM_Weight.Models;
|
||||||
|
using DM_Weight.msg;
|
||||||
|
using DM_Weight.Port;
|
||||||
|
using DM_Weight.util;
|
||||||
|
using DM_Weight.Views;
|
||||||
|
using log4net;
|
||||||
|
using log4net.Repository.Hierarchy;
|
||||||
|
using MaterialDesignThemes.Wpf;
|
||||||
using Prism.Commands;
|
using Prism.Commands;
|
||||||
using Prism.Events;
|
using Prism.Events;
|
||||||
using Prism.Mvvm;
|
using Prism.Mvvm;
|
||||||
using Prism.Regions;
|
using Prism.Regions;
|
||||||
|
using ScreenRecorderLib;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Media;
|
|
||||||
using DM_Weight.msg;
|
|
||||||
using DM_Weight.Port;
|
|
||||||
using DM_Weight.util;
|
|
||||||
using DM_Weight.Finger;
|
|
||||||
using DM_Weight.Views;
|
|
||||||
using Unity;
|
|
||||||
using DM_Weight.HIKVISION;
|
|
||||||
using log4net.Repository.Hierarchy;
|
|
||||||
using log4net;
|
|
||||||
using DM_Weight.Models;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Unity;
|
||||||
|
|
||||||
namespace DM_Weight.ViewModels
|
namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
internal class MainWindowViewModel : BindableBase
|
internal class MainWindowViewModel : BindableBase
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#region 录屏相关
|
||||||
|
public Recorder _recorder;
|
||||||
|
private string _outputFolder;
|
||||||
|
private string _outputFilePath;
|
||||||
|
public static MainWindowViewModel vm;
|
||||||
|
#endregion
|
||||||
|
|
||||||
private string _title = "Prism App"; //标题
|
private string _title = "Prism App"; //标题
|
||||||
|
|
||||||
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
|
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
|
||||||
|
@ -74,9 +84,11 @@ namespace DM_Weight.ViewModels
|
||||||
private PortUtil _portUtil;
|
private PortUtil _portUtil;
|
||||||
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil)
|
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, SocketHelper socketHelper, PortUtil portUtil)
|
||||||
{
|
{
|
||||||
|
vm = this;
|
||||||
_portUtil = portUtil;
|
_portUtil = portUtil;
|
||||||
this.eventAggregator = eventAggregator;
|
this.eventAggregator = eventAggregator;
|
||||||
this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
|
this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
|
||||||
|
this.eventAggregator.GetEvent<PrintScreenEvent>().Subscribe(PrintScreen);
|
||||||
_fingerprintUtil = fingerprintUtil;
|
_fingerprintUtil = fingerprintUtil;
|
||||||
_regionManager = regionManager;
|
_regionManager = regionManager;
|
||||||
_container = container;
|
_container = container;
|
||||||
|
@ -146,6 +158,90 @@ namespace DM_Weight.ViewModels
|
||||||
SnackbarMessageQueue.Enqueue(msg.Message);
|
SnackbarMessageQueue.Enqueue(msg.Message);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
#region 录屏
|
||||||
|
/// <summary>
|
||||||
|
/// 录屏事件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type">0停止录屏;1开始录屏;2退出软件清进程</param>
|
||||||
|
void PrintScreen(int type)
|
||||||
|
{
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
StopPrintScreen();
|
||||||
|
//删除7天前的录屏文件
|
||||||
|
|
||||||
|
if (Directory.Exists(_outputFolder))
|
||||||
|
{
|
||||||
|
var files = Directory.GetFiles(_outputFolder);
|
||||||
|
foreach (var file in files)
|
||||||
|
{
|
||||||
|
var fileInfo = new FileInfo(file);
|
||||||
|
if (fileInfo.CreationTime < DateTime.Now.AddDays(-7))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fileInfo.Delete();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.Error($"删除录屏文件失败: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (type == 1)
|
||||||
|
{
|
||||||
|
StartPrintScreen();
|
||||||
|
}
|
||||||
|
else if (type == 2)
|
||||||
|
{
|
||||||
|
_recorder?.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
void StopPrintScreen()
|
||||||
|
{
|
||||||
|
|
||||||
|
//退出登录结束录屏
|
||||||
|
_recorder?.Stop();
|
||||||
|
}
|
||||||
|
//录屏
|
||||||
|
void StartPrintScreen()
|
||||||
|
{
|
||||||
|
|
||||||
|
// 创建输出目录
|
||||||
|
_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();
|
||||||
|
|
||||||
|
// 创建录制器实例
|
||||||
|
_recorder = Recorder.CreateRecorder(options);
|
||||||
|
|
||||||
|
// 设置事件处理
|
||||||
|
_recorder.OnRecordingComplete += Recorder_OnRecordingComplete;
|
||||||
|
_recorder.OnRecordingFailed += Recorder_OnRecordingFailed;
|
||||||
|
|
||||||
|
// 开始录制
|
||||||
|
_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}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -317,7 +317,7 @@ namespace DM_Weight.ViewModels
|
||||||
|
|
||||||
string csId = Guid.NewGuid().ToString();
|
string csId = Guid.NewGuid().ToString();
|
||||||
//查询要移动的药箱是否有该批次
|
//查询要移动的药箱是否有该批次
|
||||||
ChannelStock removeChannelStock = RemoveChannelStockList.Where(it => it.ManuNo == _ChannelStock.ManuNo).First();
|
ChannelStock removeChannelStock = RemoveChannelStockList.Where(it => it.ManuNo == _ChannelStock.ManuNo).FirstOrDefault();
|
||||||
//有该药品且有该批次
|
//有该药品且有该批次
|
||||||
if (removeChannelStock != null)
|
if (removeChannelStock != null)
|
||||||
{
|
{
|
||||||
|
@ -328,7 +328,7 @@ namespace DM_Weight.ViewModels
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//有该药品但没有该批次
|
//有该药品但没有该批次
|
||||||
SqlSugarHelper.Db.Insertable(new ChannelStock()
|
int iInsertResult= SqlSugarHelper.Db.Insertable(new ChannelStock()
|
||||||
{
|
{
|
||||||
MachineId = _ChannelStock.MachineId,
|
MachineId = _ChannelStock.MachineId,
|
||||||
DrawerNo = Convert.ToInt32(SelectedItem.Code),
|
DrawerNo = Convert.ToInt32(SelectedItem.Code),
|
||||||
|
@ -338,13 +338,29 @@ namespace DM_Weight.ViewModels
|
||||||
EffDate=_ChannelStock.EffDate,
|
EffDate=_ChannelStock.EffDate,
|
||||||
Quantity = RemoveQuantity,
|
Quantity = RemoveQuantity,
|
||||||
DrawerType = 1,
|
DrawerType = 1,
|
||||||
Chnguid = _ChannelStock.Chnguid,
|
Chnguid = RemoveChannelStockList[0].Chnguid,
|
||||||
|
CheckQuantity= RemoveChannelStockList[0].CheckQuantity,
|
||||||
Id = csId,
|
Id = csId,
|
||||||
}).ExecuteCommand();
|
}).ExecuteCommand();
|
||||||
|
if (iInsertResult > 0)
|
||||||
|
{
|
||||||
|
//删除没有批次的数据
|
||||||
|
SqlSugarHelper.Db.Deleteable<ChannelStock>(RemoveChannelStockList.Where(cs => cs.ManuNo == null)).ExecuteCommand();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AlertMsg alertMsg = new AlertMsg
|
||||||
|
{
|
||||||
|
Message = "移入失败",
|
||||||
|
Type = MsgType.ERROR,
|
||||||
|
};
|
||||||
|
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存数据 药品移出记录
|
// 保存数据 药品移出记录
|
||||||
SqlSugarHelper.Db.Insertable(new MachineRecord()
|
int iInsertRecord= SqlSugarHelper.Db.Insertable(new MachineRecord()
|
||||||
{
|
{
|
||||||
MachineId = _ChannelStock.MachineId,
|
MachineId = _ChannelStock.MachineId,
|
||||||
DrawerNo = _ChannelStock.DrawerNo,
|
DrawerNo = _ChannelStock.DrawerNo,
|
||||||
|
@ -359,6 +375,16 @@ namespace DM_Weight.ViewModels
|
||||||
InvoiceId = _ChannelStock.Id,
|
InvoiceId = _ChannelStock.Id,
|
||||||
DepartmentId = csId //要移入的药箱的channelStock的id
|
DepartmentId = csId //要移入的药箱的channelStock的id
|
||||||
}).ExecuteCommand();
|
}).ExecuteCommand();
|
||||||
|
if(iInsertRecord<=0)
|
||||||
|
{
|
||||||
|
AlertMsg alertMsg = new AlertMsg
|
||||||
|
{
|
||||||
|
Message = "添加记录失败",
|
||||||
|
Type = MsgType.ERROR,
|
||||||
|
};
|
||||||
|
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -240,9 +240,21 @@
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</GridViewColumn.CellTemplate>
|
</GridViewColumn.CellTemplate>
|
||||||
</GridViewColumn>
|
</GridViewColumn>
|
||||||
<GridViewColumn Width="100"
|
<GridViewColumn Width="130"
|
||||||
DisplayMemberBinding="{Binding State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"
|
Header="状态">
|
||||||
Header="状态"/>
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" materialDesign:ListBoxItemAssist.ShowSelection="False">
|
||||||
|
<ListBox.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Width="130" Text="{Binding State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}">
|
||||||
|
</TextBlock>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListBox.ItemTemplate>
|
||||||
|
</ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
</GridView>
|
</GridView>
|
||||||
</ListView.View>
|
</ListView.View>
|
||||||
</ListView>
|
</ListView>
|
||||||
|
|
|
@ -142,7 +142,7 @@
|
||||||
<Grid Grid.Column="1" Margin="6">
|
<Grid Grid.Column="1" Margin="6">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="550" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Grid.ColumnSpan="2">
|
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Grid.ColumnSpan="2">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
using Prism.Events;
|
using DM_Weight.msg;
|
||||||
|
using DM_Weight.Port;
|
||||||
|
using DM_Weight.util;
|
||||||
|
using DM_Weight.ViewModels;
|
||||||
|
using log4net;
|
||||||
|
using log4net.Repository.Hierarchy;
|
||||||
|
using Prism.Events;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
using Prism.Regions;
|
using Prism.Regions;
|
||||||
using System;
|
using System;
|
||||||
|
@ -16,11 +22,6 @@ using System.Windows.Media.Imaging;
|
||||||
using System.Windows.Shapes;
|
using System.Windows.Shapes;
|
||||||
using Unity;
|
using Unity;
|
||||||
using Unity.Lifetime;
|
using Unity.Lifetime;
|
||||||
using DM_Weight.msg;
|
|
||||||
using DM_Weight.util;
|
|
||||||
using log4net.Repository.Hierarchy;
|
|
||||||
using DM_Weight.Port;
|
|
||||||
using log4net;
|
|
||||||
|
|
||||||
namespace DM_Weight.Views
|
namespace DM_Weight.Views
|
||||||
{
|
{
|
||||||
|
@ -31,10 +32,12 @@ namespace DM_Weight.Views
|
||||||
{
|
{
|
||||||
//IRegionManager _regionManager;
|
//IRegionManager _regionManager;
|
||||||
//IUnityContainer _container;
|
//IUnityContainer _container;
|
||||||
|
MainWindowViewModel vms;
|
||||||
private readonly ILog logger = LogManager.GetLogger(typeof(PortUtil));
|
private readonly ILog logger = LogManager.GetLogger(typeof(PortUtil));
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
vms = MainWindowViewModel.vm;
|
||||||
//_regionManager = regionManager;
|
//_regionManager = regionManager;
|
||||||
//_container = container;
|
//_container = container;
|
||||||
//System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
|
//System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
|
||||||
|
@ -46,6 +49,10 @@ namespace DM_Weight.Views
|
||||||
//}));
|
//}));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
protected override void OnClosed(EventArgs e)
|
||||||
|
{
|
||||||
|
vms._recorder?.Dispose();
|
||||||
|
base.OnClosed(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
using Prism.Events;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DM_Weight.msg
|
||||||
|
{
|
||||||
|
internal class PrintScreenEvent : PubSubEvent<int>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue