添加录屏功能,添加可多次加药,毒麻柜无药则显示无库存或未绑定,对应的药品先不补
This commit is contained in:
parent
02c626d829
commit
3e34ffe912
|
@ -3,7 +3,7 @@
|
|||
<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;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>
|
||||
<!--<runtime>
|
||||
--><!--配置之后,Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
|
||||
|
@ -37,7 +37,7 @@
|
|||
<!-- 按处方还药或者按取药记录还药 1:处方(ReturnDrugWindow2)2:药品(ReturnDrugWindow)-->
|
||||
<add key="returnDrugMode" value="1" />
|
||||
<!-- 自动退出时间,单位秒,为0时不自动退出 -->
|
||||
<add key="autoExit" value="0"/>
|
||||
<add key="autoExit" value="10"/>
|
||||
|
||||
<!-- 无操作退出录像时间,单位秒,为0时不退出录像 -->
|
||||
<add key="stopRecord" value="180"/>
|
||||
|
@ -54,9 +54,9 @@
|
|||
<!-- 抽屉串口使用的协议232或者485 -->
|
||||
<add key="DrawerProtocol" value="485" />
|
||||
<!-- 抽屉串口的串口号 -->
|
||||
<add key="DrawerPortPath" value="COM1" />
|
||||
<add key="DrawerPortPath" value="COM2" />
|
||||
<!-- can总线串口的串口号 -->
|
||||
<add key="CanBusPortPath" value="COM31" />
|
||||
<add key="CanBusPortPath" value="COM5" />
|
||||
<!-- 条码枪串口的串口号 -->
|
||||
<add key="ScanCodePortPath" value="COM7" />
|
||||
|
||||
|
@ -99,7 +99,7 @@
|
|||
<!-- 指纹机号码 -->
|
||||
<add key="machineNumber" value="1"/>
|
||||
<!-- 指纹机ip -->
|
||||
<add key="fingerIp" value="192.168.50.201"/>
|
||||
<add key="fingerIp" value="192.168.50.59"/>
|
||||
|
||||
<!-- 多处方取药 0:不启用 1:启用-->
|
||||
<add key="MultiOrder" value="1"/>
|
||||
|
|
|
@ -13,27 +13,30 @@ namespace DM_Weight.Converter
|
|||
//是否给交接柜补药已补药的则不可勾选,未补药的可勾选以进行补药:0未补1已补
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
int status = int.Parse(value.ToString());
|
||||
if (parameter.ToString() == "EnableState")
|
||||
if (value != null)
|
||||
{
|
||||
if (status == 0)
|
||||
int status = int.Parse(value.ToString());
|
||||
if (parameter.ToString() == "EnableState")
|
||||
{
|
||||
return true;
|
||||
if (status == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (parameter.ToString() == "TextState")
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (parameter.ToString() == "TextState")
|
||||
{
|
||||
if (status == 0)
|
||||
{
|
||||
return "未取药";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "已取药待入库";
|
||||
if (status == 0)
|
||||
{
|
||||
return "未取药";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "已取药待入库";
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace DM_Weight.Converter
|
||||
{
|
||||
internal class TakeQuantityEnabelConverter : IValueConverter
|
||||
{
|
||||
//-1未绑定
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return (int)value == -1 ? Visibility.Collapsed : Visibility.Visible;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return Binding.DoNothing;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace DM_Weight.Converter
|
||||
{
|
||||
internal class TakeQuantityVisiable: IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return (int)(value) <0 ? Visibility.Collapsed : Visibility.Visible;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -71,6 +71,7 @@
|
|||
<PackageReference Include="MaterialDesignThemes" Version="4.8.0" />
|
||||
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
|
||||
<PackageReference Include="Prism.Unity" Version="8.1.97" />
|
||||
<PackageReference Include="ScreenRecorderLib" Version="6.5.1" />
|
||||
<PackageReference Include="SharpPromise" Version="1.7.0" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
|
||||
<PackageReference Include="SuperSimpleTcp" Version="3.0.10" />
|
||||
|
|
|
@ -112,7 +112,7 @@ namespace DM_Weight.Models
|
|||
[SugarColumn(IsIgnore = true)]
|
||||
public string Location
|
||||
{
|
||||
get => ColNo == 0 ? DrawerNo + "号交接柜" :ColNo==-1?"未绑定": DrawerNo + "-" + ColNo;
|
||||
get => ColNo == 0 ? DrawerNo + "号交接柜" :ColNo==-1?"未绑定": ColNo == -2 ? "库存不足" : DrawerNo + "-" + ColNo;
|
||||
}
|
||||
|
||||
private int _addQuantity = 0;
|
||||
|
|
|
@ -87,6 +87,9 @@ namespace DM_Weight.Port
|
|||
// 是否正在操作中
|
||||
public bool Operate { get; set; }
|
||||
|
||||
// 操作完抽屉是否点完成按钮
|
||||
public bool OperateFinish { get; set; } = true;
|
||||
|
||||
//冰箱是否正在操作中
|
||||
public bool FridgeOperate { get; set; }
|
||||
|
||||
|
@ -197,7 +200,7 @@ namespace DM_Weight.Port
|
|||
if (state)
|
||||
{
|
||||
//抽屉全部关闭
|
||||
|
||||
OperateFinish = false;
|
||||
string _WindowName = WindowName;
|
||||
// 重新初始化数据
|
||||
ResetData();
|
||||
|
@ -550,7 +553,8 @@ namespace DM_Weight.Port
|
|||
}
|
||||
string _WindowName = WindowName;
|
||||
// 重新初始化数据
|
||||
ResetData();
|
||||
ResetData();
|
||||
OperateFinish = false;
|
||||
// 返回消息 抽屉已经关闭
|
||||
_eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
|
||||
{
|
||||
|
@ -656,6 +660,7 @@ namespace DM_Weight.Port
|
|||
statue = 2;
|
||||
|
||||
string _WindowName = WindowName;
|
||||
OperateFinish = false;
|
||||
// 重新初始化数据
|
||||
ResetData();
|
||||
_eventAggregator.GetEvent<PortUtilEvent>().Publish(new util.DeviceMsg()
|
||||
|
|
|
@ -222,53 +222,73 @@ namespace DM_Weight.ViewModels
|
|||
//.OrderBy(cs => cs.EffDate)
|
||||
.OrderBy(cs => new { cs.EffDate, cs.DrawerNo, cs.ColNo })
|
||||
.ToList();
|
||||
if (HasQChannels == null || HasQChannels.Count <= 0)
|
||||
//if (HasQChannels == null || HasQChannels.Count <= 0)
|
||||
//{
|
||||
// msg.Add($"有药品未绑定,请先绑定");
|
||||
// continue;
|
||||
//}
|
||||
if (HasQChannels != null && HasQChannels.Count > 0)
|
||||
{
|
||||
msg.Add($"有药品未绑定,请先绑定");
|
||||
continue;
|
||||
}
|
||||
int total = HasQChannels.Sum(it => it.Quantity);
|
||||
int TakeQ = ChannelStocks[i].AddQuantity;
|
||||
// 说明数量足够
|
||||
if (total >= TakeQ)
|
||||
{
|
||||
//for (int j = 0; TakeQ > 0; j++)
|
||||
int total = HasQChannels.Sum(it => it.Quantity);
|
||||
int TakeQ = ChannelStocks[i].AddQuantity;
|
||||
// 说明数量足够
|
||||
//if (total >= TakeQ)
|
||||
//{
|
||||
// ChannelStock stock = HasQChannels[j];
|
||||
// if (TakeQ > stock.Quantity)
|
||||
// {
|
||||
// stock.TakeQuantity = stock.Quantity;
|
||||
// channelStocks.Add(stock);
|
||||
// TakeQ -= stock.Quantity;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// stock.TakeQuantity = TakeQ;
|
||||
// channelStocks.Add(stock);
|
||||
// TakeQ = 0;
|
||||
// }
|
||||
//for (int j = 0; TakeQ > 0; j++)
|
||||
//{
|
||||
// ChannelStock stock = HasQChannels[j];
|
||||
// if (TakeQ > stock.Quantity)
|
||||
// {
|
||||
// stock.TakeQuantity = stock.Quantity;
|
||||
// channelStocks.Add(stock);
|
||||
// TakeQ -= stock.Quantity;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// stock.TakeQuantity = TakeQ;
|
||||
// channelStocks.Add(stock);
|
||||
// TakeQ = 0;
|
||||
// }
|
||||
//}
|
||||
int hadTakeQ = 0;
|
||||
for (int j = 0; j < HasQChannels.Count; j++)
|
||||
{
|
||||
if ((ChannelStocks[i].AddQuantity - hadTakeQ) > HasQChannels[j].Quantity)
|
||||
{
|
||||
HasQChannels[j].TakeQuantity = HasQChannels[j].Quantity;
|
||||
hadTakeQ += HasQChannels[j].Quantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
HasQChannels[j].TakeQuantity = ChannelStocks[i].AddQuantity - hadTakeQ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
channelStocks.AddRange(HasQChannels);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// //msg.Add($"药品【{HasQChannels[0].DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】");
|
||||
// ChannelStock channel = ChannelStocks[i];
|
||||
// channel.ColNo = -2;
|
||||
// channel.Quantity = 0;
|
||||
// channel.ManuNo = null;
|
||||
// channel.EffDate = null;
|
||||
// channel.Quantity = total;
|
||||
// channel.TakeQuantity = 0;
|
||||
// channelStocks.Add(channel);
|
||||
//}
|
||||
int hadTakeQ = 0;
|
||||
for (int j = 0; j < HasQChannels.Count; j++)
|
||||
{
|
||||
if ((ChannelStocks[i].AddQuantity - hadTakeQ) > HasQChannels[j].Quantity)
|
||||
{
|
||||
HasQChannels[j].TakeQuantity = HasQChannels[j].Quantity;
|
||||
hadTakeQ += HasQChannels[j].Quantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
HasQChannels[j].TakeQuantity = ChannelStocks[i].AddQuantity - hadTakeQ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
channelStocks.AddRange(HasQChannels);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg.Add($"药品【{HasQChannels[0].DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】");
|
||||
ChannelStock channel = ChannelStocks[i];
|
||||
channel.ColNo = -1;
|
||||
channel.Quantity = 0;
|
||||
channel.ManuNo = null;
|
||||
channel.EffDate = null;
|
||||
channel.TakeQuantity = 0;
|
||||
channelStocks.Add(channel);
|
||||
}
|
||||
|
||||
}
|
||||
if (msg.Count > 0)
|
||||
{
|
||||
|
@ -317,10 +337,23 @@ namespace DM_Weight.ViewModels
|
|||
|
||||
}
|
||||
enumerable = ChannelStocks.Where(cs => cs.TakeQuantity > 0).GroupBy(cs => cs.DrawerNo, cs => cs);
|
||||
enumerator = enumerable.GetEnumerator();
|
||||
enumerator.MoveNext();
|
||||
Status = 1;
|
||||
OpenOneByOne();
|
||||
if (enumerable != null && enumerable.Count() > 0)
|
||||
{
|
||||
enumerator = enumerable.GetEnumerator();
|
||||
enumerator.MoveNext();
|
||||
Status = 1;
|
||||
OpenOneByOne();
|
||||
}
|
||||
else
|
||||
{
|
||||
AlertMsg alertMsg = new AlertMsg
|
||||
{
|
||||
Message = "没有可补药品!",
|
||||
Type = MsgType.ERROR,
|
||||
};
|
||||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -329,38 +362,41 @@ namespace DM_Weight.ViewModels
|
|||
private void OpenOneByOne()
|
||||
{
|
||||
IGrouping<int, ChannelStock> grouping = enumerator.Current;
|
||||
int DrawerNo = grouping.Key;
|
||||
List<ChannelStock> channelStocks = grouping.ToList();
|
||||
channelStocks.ForEach(it => it.process = 1);
|
||||
_portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
|
||||
|
||||
|
||||
List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
|
||||
|
||||
// 发送取药数量
|
||||
singleChannels.ForEach(it =>
|
||||
if (grouping != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
int DrawerNo = grouping.Key;
|
||||
List<ChannelStock> channelStocks = grouping.ToList();
|
||||
channelStocks.ForEach(it => it.process = 1);
|
||||
_portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
|
||||
|
||||
_portUtil.TakeQuantity(DrawerNo, it.ColNo, it.TakeQuantity, it.Quantity - it.TakeQuantity);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
List<ChannelStock> singleChannels = channelStocks.FindAll(it => it.BoardType != 1);
|
||||
|
||||
// 发送取药数量
|
||||
singleChannels.ForEach(it =>
|
||||
{
|
||||
AlertMsg alertMsg = new AlertMsg
|
||||
try
|
||||
{
|
||||
Message = $"打开抽屉异常{ex.Message}",
|
||||
Type = MsgType.ERROR,
|
||||
};
|
||||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
}
|
||||
});
|
||||
|
||||
_portUtil.WindowName = "OrderTakeDrugWindow";
|
||||
_portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
|
||||
_portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
|
||||
_portUtil.DrawerNo = DrawerNo;
|
||||
_portUtil.Start();
|
||||
_portUtil.TakeQuantity(DrawerNo, it.ColNo, it.TakeQuantity, it.Quantity - it.TakeQuantity);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
AlertMsg alertMsg = new AlertMsg
|
||||
{
|
||||
Message = $"打开抽屉异常{ex.Message}",
|
||||
Type = MsgType.ERROR,
|
||||
};
|
||||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
}
|
||||
});
|
||||
|
||||
_portUtil.WindowName = "OrderTakeDrugWindow";
|
||||
_portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
|
||||
_portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
|
||||
_portUtil.DrawerNo = DrawerNo;
|
||||
_portUtil.Start();
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isFinishClick = false;
|
||||
|
@ -388,10 +424,11 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
if (jjItem.DrugId == csItem.DrugId)
|
||||
{
|
||||
if (jjItem.Quantity != csItem.Quantity)
|
||||
if (jjItem.Quantity < csItem.Quantity)
|
||||
{
|
||||
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
|
||||
SnackbarMessageQueue.Enqueue("输入药品数量与需要补药品数不一致!");
|
||||
//SnackbarMessageQueue.Enqueue("输入药品数量与需要补药品数不一致!");
|
||||
SnackbarMessageQueue.Enqueue("输入药品数量大于需要补药数!");
|
||||
_isFinishClick = false;
|
||||
return;
|
||||
}
|
||||
|
@ -439,10 +476,12 @@ namespace DM_Weight.ViewModels
|
|||
for (int i = 0; i < Jiaojie_ChannelStocks.Count; i++)
|
||||
{
|
||||
ChannelStock jiaoStock = Jiaojie_ChannelStocks[i];
|
||||
SqlSugarHelper.Db.Deleteable<ChannelStock>().Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo && cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.MachineId == Jiaojie_ChannelStocks[i].MachineId && cs.Quantity <= 0).ExecuteCommand();
|
||||
List<ChannelStock> csStockList = record.Where(cs => cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.TakeQuantity > 0).ToList();
|
||||
if (csStockList != null && csStockList.Count > 0)
|
||||
{
|
||||
int jjNeedQuantity = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == jiaoStock.DrawerNo && cs.DrugId == jiaoStock.DrugId && cs.MachineId == jiaoStock.MachineId).Sum(cs => cs.NeedNum);
|
||||
SqlSugarHelper.Db.Deleteable<ChannelStock>().Where(cs => cs.DrawerNo == jiaoStock.DrawerNo && cs.DrugId == jiaoStock.DrugId && cs.MachineId == jiaoStock.MachineId && cs.Quantity <= 0).ExecuteCommand();
|
||||
|
||||
for (int j = 0; j < csStockList.Count; j++)
|
||||
{
|
||||
ChannelStock csStock = (ChannelStock)csStockList[j].Clone();
|
||||
|
@ -466,6 +505,7 @@ namespace DM_Weight.ViewModels
|
|||
newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
|
||||
newStock.AddToJJNum = addNum;
|
||||
newStock.Id = jjStockManuNo.Id;
|
||||
newStock.State = 1;
|
||||
//newStock.MachineId = jiaoStock.MachineId;
|
||||
//newStock.NeedNum = 0;
|
||||
//newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity;
|
||||
|
@ -492,6 +532,7 @@ namespace DM_Weight.ViewModels
|
|||
newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
|
||||
newStock.AddToJJNum = Jiaojie_ChannelStocks[i].NeedNum;
|
||||
newStock.Id = jjStockManuNo.Id;
|
||||
newStock.State = 1;
|
||||
//newStock.MachineId = jiaoStock.MachineId;
|
||||
//newStock.NeedNum = 0;
|
||||
//newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity;
|
||||
|
@ -519,6 +560,7 @@ namespace DM_Weight.ViewModels
|
|||
newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
|
||||
newStock.DrawerType = 1;
|
||||
newStock.NeedNum = 0;
|
||||
newStock.State = 1;
|
||||
AddJJStock.Add(newStock);
|
||||
Jiaojie_ChannelStocks[i].NeedNum = Jiaojie_ChannelStocks[i].NeedNum - csStock.TakeQuantity;
|
||||
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
||||
|
@ -539,6 +581,7 @@ namespace DM_Weight.ViewModels
|
|||
newStock.Id = Guid.NewGuid().ToString();
|
||||
newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
|
||||
newStock.DrawerType = 1;
|
||||
newStock.State = 1;
|
||||
AddJJStock.Add(newStock);
|
||||
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
||||
csStockList[j].TakeQuantity = csStock.TakeQuantity - newStock.AddToJJNum;
|
||||
|
@ -546,11 +589,18 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
}
|
||||
}
|
||||
int addQuantity= AddJJStock.Where(aj => aj.DrugId == jiaoStock.DrugId).Sum(aj => aj.AddToJJNum);
|
||||
int updateQuantity = UpdateJJStock.Where(aj => aj.DrugId == jiaoStock.DrugId).Sum(aj => aj.AddToJJNum);
|
||||
int iUpdateResult= SqlSugarHelper.Db.Updateable<ChannelStock>()
|
||||
.SetColumns(cs => new ChannelStock() { NeedNum = 0,State=1 })
|
||||
.Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo && cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.MachineId == Jiaojie_ChannelStocks[i].MachineId)
|
||||
.ExecuteCommand();
|
||||
jiaoStock.NeedNum = jjNeedQuantity - (addQuantity + updateQuantity);
|
||||
int iUpdateResult2 = SqlSugarHelper.Db.Updateable(jiaoStock)
|
||||
.UpdateColumns(it => new { it.NeedNum })
|
||||
.ExecuteCommand();
|
||||
}
|
||||
SqlSugarHelper.Db.Updateable<ChannelStock>()
|
||||
.SetColumns(cs => new ChannelStock() { NeedNum = 0 })
|
||||
.Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo)
|
||||
.ExecuteCommand();
|
||||
|
||||
}
|
||||
|
||||
//保存交接柜数据
|
||||
|
@ -561,6 +611,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
var ret = jj.First();
|
||||
ret.AddToJJNum = jj.Sum(itx => itx.AddToJJNum);
|
||||
ret.NeedNum = 0;
|
||||
return ret;
|
||||
}).ToList();
|
||||
SqlSugarHelper.Db.Insertable(AddJJStock).ExecuteCommand();
|
||||
|
@ -572,11 +623,12 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
var ret = jj.First();
|
||||
ret.AddToJJNum = jj.Sum(itx => itx.AddToJJNum);
|
||||
ret.NeedNum = 0;
|
||||
return ret;
|
||||
}).ToList();
|
||||
for (int i = 0; i < UpdateJJStock.Count; i++)
|
||||
{
|
||||
SqlSugarHelper.Db.Updateable<ChannelStock>().SetColumns(cs => new ChannelStock() { AddToJJNum = UpdateJJStock[i].AddToJJNum }).Where(cs => cs.Id == UpdateJJStock[i].Id).ExecuteCommand();
|
||||
SqlSugarHelper.Db.Updateable<ChannelStock>().SetColumns(cs => new ChannelStock() { AddToJJNum = UpdateJJStock[i].AddToJJNum, State = 1 }).Where(cs => cs.Id == UpdateJJStock[i].Id).ExecuteCommand();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -606,21 +658,21 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
}
|
||||
//更新交接柜状态为 已取药未入库(等在交接柜入库后再更新交接柜库存)
|
||||
if (Jiaojie_ChannelStocks != null)
|
||||
{
|
||||
Jiaojie_ChannelStocks.ForEach(jj =>
|
||||
{
|
||||
//更新交接柜状态为 已取药未入库
|
||||
SqlSugarHelper.Db.Updateable(new ChannelList()
|
||||
{
|
||||
State = 1,
|
||||
Id = jj.ChannelLst.Id
|
||||
}).UpdateColumns(it => it.State).ExecuteCommand();
|
||||
//if (Jiaojie_ChannelStocks != null)
|
||||
//{
|
||||
// Jiaojie_ChannelStocks.ForEach(jj =>
|
||||
// {
|
||||
// //更新交接柜状态为 已取药未入库
|
||||
// SqlSugarHelper.Db.Updateable(new ChannelList()
|
||||
// {
|
||||
// State = 1,
|
||||
// Id = jj.ChannelLst.Id
|
||||
// }).UpdateColumns(it => it.State).ExecuteCommand();
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
);
|
||||
}
|
||||
// );
|
||||
//}
|
||||
return true;
|
||||
});
|
||||
if (f.Data)
|
||||
|
@ -664,7 +716,8 @@ namespace DM_Weight.ViewModels
|
|||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
//RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
}
|
||||
|
@ -696,6 +749,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
//检查是否是冰箱抽屉(冰箱抽屉打开时需要发送冰箱延迟报警的指令)
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DM_Weight.ViewModels
|
||||
{
|
||||
public class AddToJiaoJieNewDialogViewModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -90,35 +90,6 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
private void RequestData()
|
||||
{
|
||||
//ChannelStocks = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||
// .Includes<ChannelList>(cs => cs.ChannelLst)
|
||||
// .Includes<DrugInfo>(cs => cs.DrugInfo)
|
||||
// .Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5") && cs.BaseQuantity > cs.Quantity)
|
||||
// .OrderBy(cs => cs.Chnguid)
|
||||
// .OrderBy(cs => cs.DrawerNo)
|
||||
// .ToList();
|
||||
////ChannelStocks = ChannelStocks.GroupBy(it => new { it.DrawerNo, it.DrugId })
|
||||
//// .Select(it =>
|
||||
//// {
|
||||
//// var ret = it.First();
|
||||
//// ret.Quantity = it.Sum(itx => itx.Quantity);
|
||||
//// ret.NeedNum=it.Sum(itx => itx.NeedNum);
|
||||
//// return ret;
|
||||
//// }).Where(it=>it.BaseQuantity>it.Quantity)
|
||||
//// .ToList();
|
||||
//ChannelStocks.ForEach(cs => cs.AddQuantity = cs.BaseQuantity - cs.Quantity);
|
||||
|
||||
//ICollectionView vw = CollectionViewSource.GetDefaultView(ChannelStocks);
|
||||
//vw.GroupDescriptions.Add(new PropertyGroupDescription("ChannelLst"));
|
||||
|
||||
//_ChannelLists = SqlSugarHelper.Db.Queryable<ChannelList>()
|
||||
// .Includes<ChannelStock>(cl => cl.channelStocks)
|
||||
// .Includes<DrugInfo>(cl => cl.Drug)
|
||||
// .InnerJoin<ChannelStock>((cl, cs) => cl.Id == cs.Chnguid && cs.BaseQuantity > cs.Quantity)
|
||||
// .Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5"))
|
||||
// .OrderBy(cl => cl.Id)
|
||||
// .OrderBy(cl => cl.DrawerNo)
|
||||
// .ToList();
|
||||
ChannelStocks?.Clear();
|
||||
_ChannelLists?.Clear();
|
||||
//1)查询channel_stock所有要补药的药箱
|
||||
|
@ -159,8 +130,8 @@ namespace DM_Weight.ViewModels
|
|||
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]&&(cs.NeedNum>0||cs.AddToJJNum>0)).ToList());
|
||||
if (channelList != null)
|
||||
{
|
||||
if (channelList.channelStocks[0].AddToJJNum>0)
|
||||
channelList.State=1; //表示有补药
|
||||
//if (channelList.channelStocks[0].AddToJJNum>0)
|
||||
// channelList.State=1; //表示有补药
|
||||
channelLists.Add(channelList);
|
||||
}
|
||||
}
|
||||
|
@ -189,307 +160,6 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
get => new DelegateCommand(() => RequestData());
|
||||
}
|
||||
//一键补药
|
||||
//public DelegateCommand OpenDragCommand
|
||||
//{
|
||||
// get => new DelegateCommand(() =>
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// Status = 1;
|
||||
// IsEnable = false;
|
||||
|
||||
// var varDrawerNO = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||
// .Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
|
||||
// .GroupBy(cs => cs.DrawerNo).Select(DrawerNo => DrawerNo).ToList();
|
||||
|
||||
// iDrawerNoLst = varDrawerNO.Select(item => item.DrawerNo).ToList();
|
||||
// CurrentNum = 0;
|
||||
// _portUtil.SpeakAsync($"正在打开 {iDrawerNoLst[CurrentNum]} 号抽屉");
|
||||
|
||||
|
||||
// _portUtil.WindowName = "AddToJiaoJieWindow";
|
||||
// _portUtil.Operate = true;
|
||||
// //_portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
|
||||
// //_portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
|
||||
// _portUtil.DrawerNo = iDrawerNoLst[CurrentNum];
|
||||
// _portUtil.OpenAllDrawer();
|
||||
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
|
||||
// AlertMsg alertMsg = new AlertMsg
|
||||
// {
|
||||
// Message = $"补药异常{ex.Message}",
|
||||
// Type = MsgType.ERROR,
|
||||
// };
|
||||
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
// logger.Info($"AddToJiaoJieWindowViewModel异常:{ex.Message}");
|
||||
// _portUtil.Operate = false;
|
||||
// }
|
||||
|
||||
// });
|
||||
//}
|
||||
//void DoMyPrismEvent(DeviceMsg msg)
|
||||
//{
|
||||
// if (msg.WindowName == "AddToJiaoJieWindow")
|
||||
// {
|
||||
// switch (msg.EventType)
|
||||
// {
|
||||
// // 抽屉打开
|
||||
// case EventType.DRAWEROPEN:
|
||||
// if (Status == 1)
|
||||
// {
|
||||
// Status = 2;
|
||||
// }
|
||||
// CurrentNum += 1;
|
||||
// if (CurrentNum < iDrawerNoLst.Count)
|
||||
// {
|
||||
// _portUtil.WindowName = "AddToJiaoJieWindow";
|
||||
// _portUtil.Operate = true;
|
||||
// _portUtil.DrawerNo = iDrawerNoLst[CurrentNum];
|
||||
// _portUtil.OpenAllDrawer();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// _portUtil.GetAllDrawerLockState();
|
||||
// }
|
||||
// break;
|
||||
// // 抽屉关闭
|
||||
// case EventType.DRAWERCLOSE:
|
||||
// if (Status == 2)
|
||||
// {
|
||||
// Status = 3;
|
||||
// }
|
||||
// _portUtil.Operate = false;
|
||||
// IsEnable = true;
|
||||
// CurrentNum = 0;
|
||||
|
||||
// break;
|
||||
// // 数量变化
|
||||
// case EventType.UPDATEQUANTITY:
|
||||
// if (Status == 2)
|
||||
// {
|
||||
// ChannelStocks.ForEach(it => it.AddQuantity = msg.Quantitys[it.ColNo - 1]);
|
||||
// }
|
||||
// break;
|
||||
// // 打开失败
|
||||
// case EventType.OPENERROR:
|
||||
// AlertMsg alertMsg = new AlertMsg
|
||||
// {
|
||||
// Message = msg.Message,
|
||||
// Type = MsgType.ERROR,
|
||||
// };
|
||||
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
// Status = 0;
|
||||
// _portUtil.Operate = false;
|
||||
// IsEnable = false;
|
||||
// CurrentNum = 0;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
//}
|
||||
//完成按钮
|
||||
//public DelegateCommand AddFinish
|
||||
//{
|
||||
// get => new DelegateCommand(() =>
|
||||
// {
|
||||
// if (ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).Count <= 0)
|
||||
// {
|
||||
|
||||
// AlertMsg alertMsg = new AlertMsg
|
||||
// {
|
||||
// Message = "请选择药箱",
|
||||
// Type = MsgType.SUCCESS,
|
||||
// };
|
||||
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
// return;
|
||||
// }
|
||||
// List<ChannelStock> jiaojieStocks = new List<ChannelStock>();
|
||||
// List<ChannelStock> cs = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
|
||||
// for (int i = 0; i < cs.Count; i++)
|
||||
// {
|
||||
// ChannelStock copy = TransExpV2<ChannelStock, ChannelStock>.Trans(cs[i]);
|
||||
// jiaojieStocks.Add(copy);
|
||||
// }
|
||||
// csList = jiaojieStocks.FindAll(cs => cs.ChannelLst.IsSelected).GroupBy(cs => cs.DrugId).Select(g => new
|
||||
// {
|
||||
// DrugId = g.Key,
|
||||
// AddQuantity = g.Sum(s => s.AddQuantity)
|
||||
// }).Select(cs => new ChannelStock() { DrugId = cs.DrugId, AddQuantity = cs.AddQuantity }).ToList();
|
||||
|
||||
// List<ChannelStock> channelStocks = new List<ChannelStock>();
|
||||
// List<string> msg = new List<string>();
|
||||
// for (int i = 0; i < csList.Count; i++)
|
||||
// {
|
||||
// List<ChannelStock> HasQChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||
// .Includes<DrugInfo>(cs => cs.DrugInfo)
|
||||
// .Where(cs => cs.Quantity > 0)
|
||||
// .Where(cs => cs.DrawerType == 1)
|
||||
// .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
|
||||
// .Where(cs => cs.DrugId == csList[i].DrugId)
|
||||
// .OrderBy(cs => cs.EffDate)
|
||||
// .OrderBy(cs => cs.DrawerNo)
|
||||
// .ToList();
|
||||
// int total = HasQChannels.Sum(it => it.Quantity);
|
||||
// int TakeQ = csList[i].AddQuantity;
|
||||
// // 说明数量足够
|
||||
// if (total >= TakeQ)
|
||||
// {
|
||||
// for (int j = 0; TakeQ > 0; j++)
|
||||
// {
|
||||
// ChannelStock stock = HasQChannels[j];
|
||||
// if (TakeQ > stock.Quantity)
|
||||
// {
|
||||
// stock.TakeQuantity = stock.Quantity;
|
||||
// channelStocks.Add(stock);
|
||||
// TakeQ -= stock.Quantity;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// stock.TakeQuantity = TakeQ;
|
||||
// channelStocks.Add(stock);
|
||||
// TakeQ = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// msg.Add($"药品【{ChannelStocks[i].DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】");
|
||||
// }
|
||||
|
||||
// }
|
||||
// if (msg.Count > 0)
|
||||
// {
|
||||
// DialogParameters dialogParameters = new DialogParameters();
|
||||
// dialogParameters.Add("msgInfo", msg);
|
||||
// DialogServiceExtensions.ShowDialogHost(_dialogService, "ShowMessageDialog", dialogParameters, "RootDialog");
|
||||
// return;
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// channelStocks.Sort((a, b) =>
|
||||
// {
|
||||
// if ((a.DrawerNo - b.DrawerNo) == 0)
|
||||
// {
|
||||
// return a.ColNo - b.ColNo;
|
||||
// }
|
||||
// return a.DrawerNo - b.DrawerNo;
|
||||
// });
|
||||
// }
|
||||
// List<ChannelStock> record = channelStocks.FindAll(it => it.TakeQuantity > 0).ToList();
|
||||
// if (record.Count > 0)
|
||||
// {
|
||||
// string InvoiceId = "AddJiaoJie_" + CurrentTimeMillis();
|
||||
// var f = SqlSugarHelper.Db.UseTran(() =>
|
||||
// {
|
||||
// for (int i = 0; i < record.Count; i++)
|
||||
// {
|
||||
// ChannelStock it = record[i];
|
||||
// // 更新数据 库存信息
|
||||
// SqlSugarHelper.Db.Updateable(new ChannelStock()
|
||||
// {
|
||||
// Quantity = it.Quantity - it.TakeQuantity,
|
||||
// ManuNo = it.ManuNo,
|
||||
// EffDate = it.EffDate,
|
||||
// Id = it.Id,
|
||||
// }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
|
||||
|
||||
// //更新 交接柜 库存信息
|
||||
// List<ChannelStock> jiaojie = jiaojieStocks.Where(cs => cs.DrugId == it.DrugId).ToList();
|
||||
// if (jiaojie != null && jiaojie.Count > 0)
|
||||
// {
|
||||
// for (int j = 0; j < jiaojie.Count; j++)
|
||||
// {
|
||||
// // 更新数据 交接柜 库存信息
|
||||
// ChannelStock jiaojie_it = jiaojie[j];
|
||||
// SqlSugarHelper.Db.Updateable(new ChannelStock()
|
||||
// {
|
||||
// Quantity = jiaojie_it.BaseQuantity,
|
||||
// //ManuNo = it.ManuNo,
|
||||
// //EffDate = it.EffDate,
|
||||
// Id = jiaojie_it.Id,
|
||||
// }).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).ExecuteCommand();
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// // 保存数据 出库记录
|
||||
// SqlSugarHelper.Db.Insertable(new MachineRecord()
|
||||
// {
|
||||
// MachineId = it.MachineId,
|
||||
// DrawerNo = it.DrawerNo,
|
||||
// ColNo = it.ColNo,
|
||||
// DrugId = it.DrugId,
|
||||
// ManuNo = it.ManuNo,
|
||||
// EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
|
||||
// Operator = HomeWindowViewModel.Operator?.Id,
|
||||
// Reviewer = HomeWindowViewModel.Reviewer?.Id,
|
||||
// OperationTime = DateTime.Now,
|
||||
// Quantity = it.TakeQuantity,
|
||||
// Type = 2,
|
||||
// InvoiceId = InvoiceId
|
||||
// }).ExecuteCommand();
|
||||
// }
|
||||
// return true;
|
||||
// });
|
||||
// if (f.Data)
|
||||
// {
|
||||
// // 更新屏显库存
|
||||
// List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 5);
|
||||
// if (singleChannels.Count > 0)
|
||||
// {
|
||||
// singleChannels.ForEach(it =>
|
||||
// {
|
||||
// _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
|
||||
// });
|
||||
// }
|
||||
// AlertMsg alertMsg = new AlertMsg
|
||||
// {
|
||||
// Message = "补药完成,库存已更新",
|
||||
// Type = MsgType.SUCCESS,
|
||||
// };
|
||||
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
// RequestData();
|
||||
// }
|
||||
// if (!f.IsSuccess)
|
||||
// {
|
||||
// AlertMsg alertMsg = new AlertMsg
|
||||
// {
|
||||
// Message = "补药操作失败,库存更新失败!",
|
||||
// Type = MsgType.ERROR,
|
||||
// };
|
||||
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// AlertMsg alertMsg = new AlertMsg
|
||||
// {
|
||||
// Message = "补药数量有误",
|
||||
// Type = MsgType.ERROR
|
||||
// };
|
||||
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
// }
|
||||
// });
|
||||
//}
|
||||
|
||||
//取消
|
||||
//public DelegateCommand CancleAdd
|
||||
//{
|
||||
// get => new DelegateCommand(() =>
|
||||
// {
|
||||
// _portUtil.ResetData();
|
||||
// Status = 0;
|
||||
// IsEnable = true;
|
||||
// CurrentNum = 0;
|
||||
// });
|
||||
//}
|
||||
|
||||
|
||||
public DelegateCommand RejectReport_Download
|
||||
{
|
||||
get => new DelegateCommand(() =>
|
||||
|
@ -598,17 +268,17 @@ namespace DM_Weight.ViewModels
|
|||
public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
|
||||
public async void OpenOrderDialog()
|
||||
{
|
||||
if (_ChannelList != null && _ChannelList.channelStocks != null && _ChannelList.State == 0)
|
||||
if (_ChannelList != null && _ChannelList.channelStocks != null && _ChannelList.channelStocks.Any(cs=>cs.State==0))
|
||||
{
|
||||
// 此处延时1毫秒,等待页面渲染
|
||||
await Task.Delay(TimeSpan.FromMilliseconds(1));
|
||||
//选中药箱号下的所有药品id
|
||||
DialogParameters dialogParameters = new DialogParameters();
|
||||
dialogParameters.Add("_ChannelStock", _ChannelList.channelStocks);
|
||||
dialogParameters.Add("_ChannelStock", _ChannelList.channelStocks.Where(cs=>cs.State==0).ToList());
|
||||
DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog");
|
||||
|
||||
}
|
||||
if(_ChannelList!=null&& _ChannelList.State == 1)
|
||||
if(_ChannelList!=null)
|
||||
{
|
||||
AlertMsg alertMsg = new AlertMsg
|
||||
{
|
||||
|
|
|
@ -238,6 +238,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -383,6 +383,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -407,6 +408,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -387,6 +387,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -411,6 +412,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -550,7 +550,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
try
|
||||
{
|
||||
if (!_portUtil.Operate)
|
||||
if (!_portUtil.Operate &&_portUtil.OperateFinish)
|
||||
{
|
||||
// 无人操作鼠标键盘
|
||||
if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit)
|
||||
|
|
|
@ -425,7 +425,7 @@ namespace DM_Weight.ViewModels
|
|||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
|
||||
_portUtil.OperateFinish = true;
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -444,6 +444,7 @@ namespace DM_Weight.ViewModels
|
|||
RequestData();
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -479,6 +479,7 @@ namespace DM_Weight.ViewModels
|
|||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
_portUtil.OperateFinish = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -508,6 +509,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -1,36 +1,41 @@
|
|||
using log4net;
|
||||
using log4net.Core;
|
||||
using log4net.Repository.Hierarchy;
|
||||
using Prism.Commands;
|
||||
using Prism.Events;
|
||||
using Prism.Ioc;
|
||||
using Prism.Mvvm;
|
||||
using Prism.Regions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using DM_Weight.Finger;
|
||||
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 System.Collections.ObjectModel;
|
||||
using log4net;
|
||||
using log4net.Core;
|
||||
using log4net.Repository.Hierarchy;
|
||||
using Microsoft.Win32;
|
||||
using System.Xml;
|
||||
using Prism.Commands;
|
||||
using Prism.Events;
|
||||
using Prism.Ioc;
|
||||
using Prism.Mvvm;
|
||||
using Prism.Regions;
|
||||
using ScreenRecorderLib;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using DM_Weight.HIKVISION;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.AccessControl;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using System.Xml;
|
||||
|
||||
namespace DM_Weight.ViewModels
|
||||
{
|
||||
public class LoginWindowViewModel : BindableBase, IRegionMemberLifetime, IConfirmNavigationRequest
|
||||
{
|
||||
|
||||
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(LoginWindowViewModel));
|
||||
|
||||
private string username;
|
||||
|
@ -357,6 +362,8 @@ _exitCommand ??= new DelegateCommand(Exit);
|
|||
|
||||
void Exit()
|
||||
{
|
||||
//清录屏进程
|
||||
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(2);
|
||||
//_chkFunction.HIKLoginOut();
|
||||
Process.GetCurrentProcess().Kill();
|
||||
Environment.Exit(0);
|
||||
|
@ -463,8 +470,10 @@ _exitCommand ??= new DelegateCommand(Exit);
|
|||
//接收导航传过来的参数 现在是在此处初始化了表格数据
|
||||
public void OnNavigatedTo(NavigationContext navigationContext)
|
||||
{
|
||||
//FingerMsg = !_fingerprintUtil.bIsConnected;
|
||||
FingerMsg = !_fingerprintUtil.bIsConnected;
|
||||
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
||||
//结束录屏
|
||||
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -478,6 +487,11 @@ _exitCommand ??= new DelegateCommand(Exit);
|
|||
public void OnNavigatedFrom(NavigationContext navigationContext)
|
||||
{
|
||||
_eventAggregator.GetEvent<FingerprintEvent>().Unsubscribe(LoginEvent);
|
||||
|
||||
#region 录屏
|
||||
//登录进来后开始录屏
|
||||
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(1);
|
||||
#endregion
|
||||
}
|
||||
//手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
|
||||
public string ReadAppSetting(string key)
|
||||
|
@ -489,5 +503,6 @@ _exitCommand ??= new DelegateCommand(Exit);
|
|||
XmlNode node = doc.SelectSingleNode(xPath);
|
||||
return node.Attributes["value"].Value.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,26 +1,38 @@
|
|||
using MaterialDesignThemes.Wpf;
|
||||
using DM_Weight.Finger;
|
||||
using DM_Weight.HIKVISION;
|
||||
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.Events;
|
||||
using Prism.Mvvm;
|
||||
using Prism.Regions;
|
||||
using ScreenRecorderLib;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
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;
|
||||
|
||||
namespace DM_Weight.ViewModels
|
||||
{
|
||||
internal class MainWindowViewModel : BindableBase
|
||||
{
|
||||
#region 录屏相关
|
||||
public Recorder _recorder;
|
||||
private string _outputFolder;
|
||||
private string _outputFilePath;
|
||||
public static MainWindowViewModel vm;
|
||||
#endregion
|
||||
private readonly ILog logger = LogManager.GetLogger(typeof(MainWindowViewModel));
|
||||
|
||||
private string _title = "Prism App"; //标题
|
||||
|
||||
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
|
||||
|
@ -66,9 +78,11 @@ namespace DM_Weight.ViewModels
|
|||
//private CHKFunction _cHKFunction;
|
||||
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, ScreenUtil screenUtil)
|
||||
{
|
||||
vm = this;
|
||||
//_portUtil = portUtil;
|
||||
this.eventAggregator = eventAggregator;
|
||||
this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
|
||||
this.eventAggregator.GetEvent<PrintScreenEvent>().Subscribe(PrintScreen);
|
||||
_screenUtil = screenUtil;
|
||||
_fingerprintUtil = fingerprintUtil;
|
||||
_regionManager = regionManager;
|
||||
|
@ -106,5 +120,90 @@ namespace DM_Weight.ViewModels
|
|||
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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -444,6 +444,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
//RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
}
|
||||
|
@ -464,6 +465,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -459,7 +459,8 @@ namespace DM_Weight.ViewModels
|
|||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
|
||||
//}
|
||||
//else
|
||||
|
@ -490,6 +491,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -497,6 +497,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
//RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
}
|
||||
|
@ -528,6 +529,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -398,6 +398,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
IsFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
|
||||
}, () => !IsFinishClick && ReturnQuantity > 0).ObservesProperty(() => IsFinishClick).ObservesProperty(() => ReturnQuantity);
|
||||
|
@ -416,6 +417,7 @@ namespace DM_Weight.ViewModels
|
|||
IsFinishClick = false;
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -334,6 +334,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
IsFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
} else
|
||||
{
|
||||
|
@ -361,6 +362,7 @@ namespace DM_Weight.ViewModels
|
|||
IsFinishClick = false;
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -412,7 +412,8 @@ namespace DM_Weight.ViewModels
|
|||
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
|
||||
}
|
||||
|
@ -433,6 +434,7 @@ namespace DM_Weight.ViewModels
|
|||
RequestData();
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -383,6 +383,7 @@ namespace DM_Weight.ViewModels
|
|||
}
|
||||
Status = 0;
|
||||
_isFinishClick = false;
|
||||
_portUtil.OperateFinish = true;
|
||||
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
||||
|
||||
}
|
||||
|
@ -402,6 +403,7 @@ namespace DM_Weight.ViewModels
|
|||
{
|
||||
_portUtil.ResetData();
|
||||
Status = 0;
|
||||
_portUtil.OperateFinish = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -263,9 +263,21 @@
|
|||
</DataTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn Width="100"
|
||||
DisplayMemberBinding="{Binding State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"
|
||||
Header="状态"/>
|
||||
<GridViewColumn Width="130"
|
||||
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>
|
||||
|
||||
<!--<GridViewColumn Width="200"
|
||||
DisplayMemberBinding="{Binding Drug.DrugName}"
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
mc:Ignorable="d" >
|
||||
<UserControl.Resources>
|
||||
<convert:StatusConverter x:Key="StatusConverter" />
|
||||
<convert:TakeQuantityVisiable x:Key="TakeQuantityVisiable" />
|
||||
</UserControl.Resources>
|
||||
<materialDesign:Card Padding="0">
|
||||
<Grid>
|
||||
|
@ -105,7 +106,8 @@
|
|||
<DataGridTemplateColumn Header="取出数量">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBox Width="80" Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}">
|
||||
<TextBox Width="80" Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
||||
Visibility="{Binding ColNo,Converter={StaticResource TakeQuantityVisiable}}">
|
||||
<TextBox.Text>
|
||||
<Binding Path="TakeQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
|
||||
</Binding>
|
||||
|
|
|
@ -1,174 +0,0 @@
|
|||
<UserControl x:Class="DM_Weight.Views.Dialog.AddToJiaoJieNewDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:DM_Weight.Views.Dialog"
|
||||
mc:Ignorable="d"
|
||||
xmlns:prism="http://prismlibrary.com/"
|
||||
prism:ViewModelLocator.AutoWireViewModel="True"
|
||||
xmlns:convert="clr-namespace:DM_Weight.Converter"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
MinWidth="880"
|
||||
Width="Auto"
|
||||
Height="Auto">
|
||||
<UserControl.Resources>
|
||||
<convert:StatusConverter x:Key="StatusConverter" />
|
||||
</UserControl.Resources>
|
||||
<materialDesign:Card Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Background="#03a9f4" Grid.Row="0">
|
||||
<TextBlock VerticalAlignment="Center" Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}" Margin="16 4 16 4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Text="交接柜补药" />
|
||||
<Button
|
||||
Style="{StaticResource MaterialDesignIconForegroundButton}"
|
||||
Foreground="{DynamicResource PrimaryHueDarkForegroundBrush}"
|
||||
HorizontalAlignment="Right"
|
||||
Command="{Binding BtnCloseCommand}"
|
||||
IsEnabled="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CloseBtn}"
|
||||
ToolTip="关闭"
|
||||
>
|
||||
<materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
|
||||
</Button>
|
||||
</Grid>
|
||||
<DataGrid
|
||||
Grid.Row="1"
|
||||
materialDesign:DataGridAssist.ColumnHeaderPadding="15"
|
||||
ItemsSource="{Binding ChannelStocks,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
|
||||
materialDesign:DataGridAssist.EnableEditBoxAssist="False"
|
||||
IsSynchronizedWithCurrentItem="True"
|
||||
materialDesign:DataGridAssist.CellPadding="13"
|
||||
CanUserAddRows="False"
|
||||
AutoGenerateColumns="False">
|
||||
<DataGrid.Resources>
|
||||
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
|
||||
<Setter Property="Background" Value="#31ccec" />
|
||||
<Setter Property="Foreground" Value="white" />
|
||||
<Setter Property="Height" Value="56" />
|
||||
<Setter Property="BorderBrush" Value="white"/>
|
||||
<Setter Property="BorderThickness" Value="0.6"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
</Style>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="DataGridCell">
|
||||
<TextBlock TextAlignment="Center" VerticalAlignment="Center" >
|
||||
<ContentPresenter Margin="13" />
|
||||
</TextBlock>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
<Setter Property="BorderBrush" Value="Transparent" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<!--<DataGrid.GroupStyle>
|
||||
<GroupStyle>
|
||||
<GroupStyle.ContainerStyle>
|
||||
<Style TargetType="{x:Type GroupItem}">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type GroupItem}">
|
||||
<Expander IsExpanded="True"
|
||||
materialDesign:ExpanderAssist.HeaderBackground="PaleTurquoise" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed">
|
||||
<Expander.Header >
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="{Binding Path=Name.DrawerNo,StringFormat={}{0}号药箱}" FontWeight="Bold" />
|
||||
</StackPanel>
|
||||
</Expander.Header>
|
||||
<ItemsPresenter/>
|
||||
</Expander>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</GroupStyle.ContainerStyle>
|
||||
</GroupStyle>
|
||||
</DataGrid.GroupStyle>-->
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="药品名称" Binding="{Binding DrugInfo.DrugName}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding DrugInfo.DrugSpec}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="厂家" Binding="{Binding DrugInfo.Manufactory}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding ManuNo}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="药品基数" Binding="{Binding BaseQuantity}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="需补药数量" Binding="{Binding AddQuantity}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="库位" Binding="{Binding AddQuantity}"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="库存数量" Binding="{Binding AddQuantity}"/>
|
||||
<DataGridTemplateColumn Header="补药数量" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<ListBox ItemsSource="{Binding channelStocks}">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBox Width="80" Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}">
|
||||
<TextBox.Text>
|
||||
<Binding Path="AddQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<ExceptionValidationRule />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<Grid Grid.Row="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Center">
|
||||
|
||||
<!--<Button
|
||||
Margin="2"
|
||||
Style="{StaticResource MaterialDesignRaisedAccentButton}"
|
||||
Visibility="{Binding Status,Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnVisible}"
|
||||
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
|
||||
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
|
||||
Content="取药"
|
||||
Command="{Binding OpenDrawer}">
|
||||
</Button>-->
|
||||
<Button
|
||||
Margin="2"
|
||||
Style="{StaticResource MaterialDesignRaisedAccentButton}"
|
||||
Visibility="{Binding Status,Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnVisible}"
|
||||
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
|
||||
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
|
||||
Content="取药"
|
||||
Command="{Binding OpenDrawer}">
|
||||
</Button>
|
||||
<Button
|
||||
Margin="2"
|
||||
Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"
|
||||
Style="{StaticResource MaterialDesignRaisedAccentButton}"
|
||||
Content="完成"
|
||||
Command="{Binding TakeFinish}"/>
|
||||
<Button
|
||||
Margin="2"
|
||||
Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CancelBtn}"
|
||||
Style="{StaticResource MaterialDesignRaisedButton}"
|
||||
Background="Orange"
|
||||
BorderBrush="Orange"
|
||||
Content="取消"
|
||||
Command="{Binding CancleTake}" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</materialDesign:Card>
|
||||
</UserControl>
|
|
@ -1,28 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace DM_Weight.Views.Dialog
|
||||
{
|
||||
/// <summary>
|
||||
/// AddToJiaoJieNewDialog.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class AddToJiaoJieNewDialog : UserControl
|
||||
{
|
||||
public AddToJiaoJieNewDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,10 @@
|
|||
using Prism.Events;
|
||||
using DM_Weight.msg;
|
||||
using DM_Weight.util;
|
||||
using DM_Weight.ViewModels;
|
||||
using Prism.Events;
|
||||
using Prism.Ioc;
|
||||
using Prism.Regions;
|
||||
using ScreenRecorderLib;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
@ -16,8 +20,6 @@ using System.Windows.Media.Imaging;
|
|||
using System.Windows.Shapes;
|
||||
using Unity;
|
||||
using Unity.Lifetime;
|
||||
using DM_Weight.msg;
|
||||
using DM_Weight.util;
|
||||
|
||||
namespace DM_Weight.Views
|
||||
{
|
||||
|
@ -28,9 +30,11 @@ namespace DM_Weight.Views
|
|||
{
|
||||
//IRegionManager _regionManager;
|
||||
//IUnityContainer _container;
|
||||
MainWindowViewModel vms;
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
vms = MainWindowViewModel.vm;
|
||||
//_regionManager = regionManager;
|
||||
//_container = container;
|
||||
//System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
|
||||
|
@ -42,6 +46,11 @@ namespace DM_Weight.Views
|
|||
//}));
|
||||
|
||||
}
|
||||
protected override void OnClosed(EventArgs e)
|
||||
{
|
||||
vms._recorder?.Dispose();
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
using DM_Weight.Models;
|
||||
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