修改录屏方式
This commit is contained in:
parent
3e34ffe912
commit
9915812808
|
@ -37,12 +37,12 @@
|
||||||
<!-- 按处方还药或者按取药记录还药 1:处方(ReturnDrugWindow2)2:药品(ReturnDrugWindow)-->
|
<!-- 按处方还药或者按取药记录还药 1:处方(ReturnDrugWindow2)2:药品(ReturnDrugWindow)-->
|
||||||
<add key="returnDrugMode" value="1" />
|
<add key="returnDrugMode" value="1" />
|
||||||
<!-- 自动退出时间,单位秒,为0时不自动退出 -->
|
<!-- 自动退出时间,单位秒,为0时不自动退出 -->
|
||||||
<add key="autoExit" value="10"/>
|
<add key="autoExit" value="0"/>
|
||||||
|
|
||||||
<!-- 无操作退出录像时间,单位秒,为0时不退出录像 -->
|
<!-- 无操作退出录像时间,单位秒,为0时不退出录像 -->
|
||||||
<add key="stopRecord" value="180"/>
|
<add key="stopRecord" value="180"/>
|
||||||
|
|
||||||
<add key="gridConnectionString" value="MYSQL; Database=xiangtan_mazuike; Password=root; Port=3306; Server=127.0.0.1; User=root;"/>
|
<add key="gridConnectionString" value="MYSQL; Database=xiangtanTest; Password=root; Port=3306; Server=192.168.50.84; User=root;"/>
|
||||||
<!-- 查询处方是orderNo还是orderGroupNo -->
|
<!-- 查询处方是orderNo还是orderGroupNo -->
|
||||||
<add key="OrderNoName" value="orderNo" />
|
<add key="OrderNoName" value="orderNo" />
|
||||||
<!-- 后门耗材板地址 没有则填写0-->
|
<!-- 后门耗材板地址 没有则填写0-->
|
||||||
|
|
|
@ -266,6 +266,8 @@ namespace DM_Weight
|
||||||
containerRegistry.RegisterForNavigation<EmptyWindow, EmptyWindowViewModel>();
|
containerRegistry.RegisterForNavigation<EmptyWindow, EmptyWindowViewModel>();
|
||||||
//紧急开锁页面
|
//紧急开锁页面
|
||||||
containerRegistry.RegisterForNavigation<EmergencyWindow, EmergencyWindowViewModel>();
|
containerRegistry.RegisterForNavigation<EmergencyWindow, EmergencyWindowViewModel>();
|
||||||
|
//交接柜加药页面
|
||||||
|
containerRegistry.RegisterForNavigation<AddToJiaoJieNewWindow, AddToJiaoJieNewWindowViewModel>();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,6 @@
|
||||||
<PackageReference Include="MaterialDesignThemes" Version="4.8.0" />
|
<PackageReference Include="MaterialDesignThemes" Version="4.8.0" />
|
||||||
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
|
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
|
||||||
<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" />
|
||||||
|
|
|
@ -112,7 +112,7 @@ namespace DM_Weight.Models
|
||||||
[SugarColumn(IsIgnore = true)]
|
[SugarColumn(IsIgnore = true)]
|
||||||
public string Location
|
public string Location
|
||||||
{
|
{
|
||||||
get => ColNo == 0 ? DrawerNo + "号交接柜" :ColNo==-1?"未绑定": ColNo == -2 ? "库存不足" : DrawerNo + "-" + ColNo;
|
get => ColNo == 0 ? DrawerNo + "号交接柜" :ColNo==-1?"未绑定/无库存": ColNo == -2 ? "库存不足" : DrawerNo + "-" + ColNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _addQuantity = 0;
|
private int _addQuantity = 0;
|
||||||
|
|
|
@ -94,7 +94,9 @@ namespace DM_Weight.Models
|
||||||
set { SetProperty(ref _base, value); }
|
set { SetProperty(ref _base, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//交接柜补药弹窗对应的需补药数
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public int? NeedQuantity { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Prism.Events;
|
||||||
using Prism.Mvvm;
|
using Prism.Mvvm;
|
||||||
using Prism.Regions;
|
using Prism.Regions;
|
||||||
using Prism.Services.Dialogs;
|
using Prism.Services.Dialogs;
|
||||||
|
using SqlSugar;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
|
@ -24,6 +25,13 @@ namespace DM_Weight.ViewModels
|
||||||
public class AddToJiaoJieDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
|
public class AddToJiaoJieDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
|
||||||
{
|
{
|
||||||
private readonly ILog logger = LogManager.GetLogger(typeof(OrderTakeDialogViewModel));
|
private readonly ILog logger = LogManager.GetLogger(typeof(OrderTakeDialogViewModel));
|
||||||
|
private List<DrugInfo> _drugInfoList = new List<DrugInfo>();
|
||||||
|
|
||||||
|
public List<DrugInfo> _DrugInfoList
|
||||||
|
{
|
||||||
|
get => _drugInfoList;
|
||||||
|
set => SetProperty(ref _drugInfoList, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<ChannelStock> _channelStocks = new List<ChannelStock>();
|
private List<ChannelStock> _channelStocks = new List<ChannelStock>();
|
||||||
|
@ -52,12 +60,12 @@ namespace DM_Weight.ViewModels
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 交接柜的库位信息
|
/// 交接柜的库位信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private ChannelStock _jiaojei_cs;
|
private ChannelStock _jiaojie_cs;
|
||||||
|
|
||||||
public ChannelStock Jiaojie_cs
|
public ChannelStock Jiaojie_cs
|
||||||
{
|
{
|
||||||
get => _jiaojei_cs;
|
get => _jiaojie_cs;
|
||||||
set => SetProperty(ref _jiaojei_cs, value);
|
set => SetProperty(ref _jiaojie_cs, value);
|
||||||
}
|
}
|
||||||
private static readonly DateTime Jan1st1970 = new DateTime
|
private static readonly DateTime Jan1st1970 = new DateTime
|
||||||
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||||
|
@ -209,12 +217,14 @@ namespace DM_Weight.ViewModels
|
||||||
}
|
}
|
||||||
public async void RequestData()
|
public async void RequestData()
|
||||||
{
|
{
|
||||||
List<ChannelStock> channelStocks = new List<ChannelStock>();
|
//List<ChannelStock> channelStocks = new List<ChannelStock>();
|
||||||
List<string> msg = new List<string>();
|
List<DrugInfo> drugList = new List<DrugInfo>();
|
||||||
for (int i = 0; i < ChannelStocks.Count; i++)
|
for (int i = 0; i < ChannelStocks.Count; i++)
|
||||||
{
|
{
|
||||||
|
DrugInfo drug = ChannelStocks[i].DrugInfo;
|
||||||
|
drug.NeedQuantity = ChannelStocks[i].AddQuantity;
|
||||||
List<ChannelStock> HasQChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
List<ChannelStock> HasQChannels = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||||
.Includes<DrugInfo>(cs => cs.DrugInfo)
|
//.Includes<DrugInfo>(cs => cs.DrugInfo)
|
||||||
.Where(cs => cs.Quantity > 0)
|
.Where(cs => cs.Quantity > 0)
|
||||||
.Where(cs => cs.DrawerType == 1)
|
.Where(cs => cs.DrawerType == 1)
|
||||||
.Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
|
.Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
|
||||||
|
@ -222,11 +232,6 @@ namespace DM_Weight.ViewModels
|
||||||
//.OrderBy(cs => cs.EffDate)
|
//.OrderBy(cs => cs.EffDate)
|
||||||
.OrderBy(cs => new { cs.EffDate, cs.DrawerNo, cs.ColNo })
|
.OrderBy(cs => new { cs.EffDate, cs.DrawerNo, cs.ColNo })
|
||||||
.ToList();
|
.ToList();
|
||||||
//if (HasQChannels == null || HasQChannels.Count <= 0)
|
|
||||||
//{
|
|
||||||
// msg.Add($"有药品未绑定,请先绑定");
|
|
||||||
// continue;
|
|
||||||
//}
|
|
||||||
if (HasQChannels != null && HasQChannels.Count > 0)
|
if (HasQChannels != null && HasQChannels.Count > 0)
|
||||||
{
|
{
|
||||||
int total = HasQChannels.Sum(it => it.Quantity);
|
int total = HasQChannels.Sum(it => it.Quantity);
|
||||||
|
@ -264,7 +269,12 @@ namespace DM_Weight.ViewModels
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
channelStocks.AddRange(HasQChannels);
|
|
||||||
|
if (drug.channelStocks == null)
|
||||||
|
{
|
||||||
|
drug.channelStocks = new List<ChannelStock>();
|
||||||
|
}
|
||||||
|
drug.channelStocks.AddRange(HasQChannels);
|
||||||
//}
|
//}
|
||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
|
@ -287,31 +297,13 @@ namespace DM_Weight.ViewModels
|
||||||
channel.ManuNo = null;
|
channel.ManuNo = null;
|
||||||
channel.EffDate = null;
|
channel.EffDate = null;
|
||||||
channel.TakeQuantity = 0;
|
channel.TakeQuantity = 0;
|
||||||
channelStocks.Add(channel);
|
if (drug.channelStocks == null)
|
||||||
}
|
|
||||||
}
|
|
||||||
if (msg.Count > 0)
|
|
||||||
{
|
{
|
||||||
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
|
drug.channelStocks = new List<ChannelStock>();
|
||||||
//MessageBox.Show(string.Join("\n", msg));
|
|
||||||
DialogParameters dialogParameters = new DialogParameters();
|
|
||||||
dialogParameters.Add("msgInfo", msg);
|
|
||||||
DialogServiceExtensions.ShowDialogHost(_dialogService, "ShowMessageDialog", dialogParameters, "RootDialog");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
drug.channelStocks.Add(channel);
|
||||||
{
|
}
|
||||||
//channelStocks.Sort((a, b) =>
|
_DrugInfoList.Add(drug);
|
||||||
//{
|
|
||||||
// if ((a.DrawerNo - b.DrawerNo) == 0)
|
|
||||||
// {
|
|
||||||
// return a.ColNo - b.ColNo;
|
|
||||||
// }
|
|
||||||
// return a.DrawerNo - b.DrawerNo;
|
|
||||||
//});
|
|
||||||
ChannelStocks = channelStocks;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public DelegateCommand OpenDrawer
|
public DelegateCommand OpenDrawer
|
||||||
|
@ -323,7 +315,7 @@ namespace DM_Weight.ViewModels
|
||||||
if (HomeWindowViewModel.Operator.Role != null && HomeWindowViewModel.Operator.Role.RoleName != "管理员")
|
if (HomeWindowViewModel.Operator.Role != null && HomeWindowViewModel.Operator.Role.RoleName != "管理员")
|
||||||
{
|
{
|
||||||
//查看当前用户是否有所在药品抽屉的权限;1-2层所有人能开,其他6层管理员才能开
|
//查看当前用户是否有所在药品抽屉的权限;1-2层所有人能开,其他6层管理员才能开
|
||||||
bool bDrawer = ChannelStocks.Select(it => it.DrawerNo).Where(n => n > 2).Any();
|
bool bDrawer = _DrugInfoList.Where(di => di.channelStocks.Select(it => it.DrawerNo).Where(n => n > 2).Any()).Count() > 0;
|
||||||
if (bDrawer)
|
if (bDrawer)
|
||||||
{
|
{
|
||||||
AlertMsg alertMsg = new AlertMsg
|
AlertMsg alertMsg = new AlertMsg
|
||||||
|
@ -336,7 +328,9 @@ namespace DM_Weight.ViewModels
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
enumerable = ChannelStocks.Where(cs => cs.TakeQuantity > 0).GroupBy(cs => cs.DrawerNo, cs => cs);
|
enumerable = _DrugInfoList.SelectMany(di => di.channelStocks).Where(cs => cs.TakeQuantity > 0).GroupBy(cs => cs.DrawerNo, cs => cs);
|
||||||
|
|
||||||
|
// enumerable = ChannelStocks.Where(cs => cs.TakeQuantity > 0).GroupBy(cs => cs.DrawerNo, cs => cs);
|
||||||
if (enumerable != null && enumerable.Count() > 0)
|
if (enumerable != null && enumerable.Count() > 0)
|
||||||
{
|
{
|
||||||
enumerator = enumerable.GetEnumerator();
|
enumerator = enumerable.GetEnumerator();
|
||||||
|
@ -410,12 +404,12 @@ namespace DM_Weight.ViewModels
|
||||||
|
|
||||||
_isFinishClick = true;
|
_isFinishClick = true;
|
||||||
|
|
||||||
List<ChannelStock> record = ChannelStocks.FindAll(it => it.TakeQuantity > 0).ToList();
|
List<ChannelStock> record = _DrugInfoList.SelectMany(di => di.channelStocks).Where(cs => cs.TakeQuantity > 0).ToList();
|
||||||
if (record.Count > 0)
|
if (record.Count > 0)
|
||||||
{
|
{
|
||||||
//交接柜需要补药数量与加药数量对比,数量不一致则提示
|
//交接柜需要补药数量与加药数量对比,数量不一致则提示
|
||||||
|
|
||||||
var jjSum = from item in Jiaojie_ChannelStocks orderby item.DrugId group item by item.DrugId into g select new { DrugId = g.Key, Quantity = g.Sum(item => item.NeedNum) };
|
var jjSum = from item in Jiaojie_ChannelStocks orderby item.DrugId group item by item.DrugId into g select new { DrugId = g.Key, Quantity = g.Sum(item => item.AddQuantity) };
|
||||||
|
|
||||||
var csSum = from item in record orderby item.DrugId group item by item.DrugId into g select new { DrugId = g.Key, Quantity = g.Sum(item => item.TakeQuantity) };
|
var csSum = from item in record orderby item.DrugId group item by item.DrugId into g select new { DrugId = g.Key, Quantity = g.Sum(item => item.TakeQuantity) };
|
||||||
foreach (var jjItem in jjSum)
|
foreach (var jjItem in jjSum)
|
||||||
|
@ -476,14 +470,30 @@ namespace DM_Weight.ViewModels
|
||||||
for (int i = 0; i < Jiaojie_ChannelStocks.Count; i++)
|
for (int i = 0; i < Jiaojie_ChannelStocks.Count; i++)
|
||||||
{
|
{
|
||||||
ChannelStock jiaoStock = Jiaojie_ChannelStocks[i];
|
ChannelStock jiaoStock = Jiaojie_ChannelStocks[i];
|
||||||
List<ChannelStock> csStockList = record.Where(cs => cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.TakeQuantity > 0).ToList();
|
List<ChannelStock> csStockList = record.Where(cs => cs.DrugId == jiaoStock.DrugId && cs.TakeQuantity > 0).ToList();
|
||||||
if (csStockList != null && csStockList.Count > 0)
|
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);
|
int jjNeedQuantity = jiaoStock.AddQuantity;// SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerNo == jiaoStock.DrawerNo && cs.DrugId == jiaoStock.DrugId && cs.MachineId == jiaoStock.MachineId).Sum(cs => (cs.BaseQuantity-cs.Quantity));
|
||||||
SqlSugarHelper.Db.Deleteable<ChannelStock>().Where(cs => cs.DrawerNo == jiaoStock.DrawerNo && cs.DrugId == jiaoStock.DrugId && cs.MachineId == jiaoStock.MachineId && cs.Quantity <= 0).ExecuteCommand();
|
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++)
|
for (int j = 0; j < csStockList.Count; j++)
|
||||||
{
|
{
|
||||||
|
// 保存数据 记录
|
||||||
|
SqlSugarHelper.Db.Insertable(new MachineRecord()
|
||||||
|
{
|
||||||
|
MachineId = jiaoStock.MachineId,
|
||||||
|
DrawerNo = jiaoStock.DrawerNo,
|
||||||
|
DrugId = jiaoStock.DrugId,
|
||||||
|
ManuNo = csStockList[i].ManuNo,
|
||||||
|
Operator = HomeWindowViewModel.Operator?.Id,
|
||||||
|
Reviewer = HomeWindowViewModel.Reviewer?.Id,
|
||||||
|
OperationTime = DateTime.Now,
|
||||||
|
Quantity = csStockList[i].TakeQuantity,
|
||||||
|
Type = 55,
|
||||||
|
Status = 2,//给交接柜补药不用还空瓶,等真正用了以后再还空瓶,所以先把状态置为2
|
||||||
|
InvoiceId = $"毒麻柜{csStockList[i].Location}给交接柜{jiaoStock.DrawerNo}补药"
|
||||||
|
}).ExecuteCommand();
|
||||||
|
|
||||||
ChannelStock csStock = (ChannelStock)csStockList[j].Clone();
|
ChannelStock csStock = (ChannelStock)csStockList[j].Clone();
|
||||||
ChannelStock jjStockManuNo = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
ChannelStock jjStockManuNo = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||||
.Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo && cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.ManuNo == csStock.ManuNo && cs.MachineId == "DM5").First();
|
.Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo && cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.ManuNo == csStock.ManuNo && cs.MachineId == "DM5").First();
|
||||||
|
@ -491,9 +501,9 @@ namespace DM_Weight.ViewModels
|
||||||
if (jjStockManuNo != null)
|
if (jjStockManuNo != null)
|
||||||
{
|
{
|
||||||
int addNum = csStock.TakeQuantity;
|
int addNum = csStock.TakeQuantity;
|
||||||
logger.Info($"需补药数{Jiaojie_ChannelStocks[i].NeedNum},该批次取药数{csStock.TakeQuantity}");
|
logger.Info($"需补药数{Jiaojie_ChannelStocks[i].AddQuantity},该批次取药数{csStock.TakeQuantity}");
|
||||||
//有该批次
|
//有该批次
|
||||||
if (Jiaojie_ChannelStocks[i].NeedNum > csStock.TakeQuantity)
|
if (Jiaojie_ChannelStocks[i].AddQuantity > csStock.TakeQuantity)
|
||||||
{
|
{
|
||||||
//不够取
|
//不够取
|
||||||
ChannelStock newStock = new ChannelStock();
|
ChannelStock newStock = new ChannelStock();
|
||||||
|
@ -512,7 +522,7 @@ namespace DM_Weight.ViewModels
|
||||||
UpdateJJStock.Add(newStock);
|
UpdateJJStock.Add(newStock);
|
||||||
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
||||||
csStockList[j].TakeQuantity = 0;
|
csStockList[j].TakeQuantity = 0;
|
||||||
Jiaojie_ChannelStocks[i].NeedNum = Jiaojie_ChannelStocks[i].NeedNum - csStock.TakeQuantity;
|
Jiaojie_ChannelStocks[i].AddQuantity = Jiaojie_ChannelStocks[i].AddQuantity - csStock.TakeQuantity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -530,7 +540,7 @@ namespace DM_Weight.ViewModels
|
||||||
newStock.EffDate = Jiaojie_ChannelStocks[i].EffDate;
|
newStock.EffDate = Jiaojie_ChannelStocks[i].EffDate;
|
||||||
newStock.DrawerNo = Jiaojie_ChannelStocks[i].DrawerNo;
|
newStock.DrawerNo = Jiaojie_ChannelStocks[i].DrawerNo;
|
||||||
newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
|
newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
|
||||||
newStock.AddToJJNum = Jiaojie_ChannelStocks[i].NeedNum;
|
newStock.AddToJJNum = Jiaojie_ChannelStocks[i].AddQuantity;
|
||||||
newStock.Id = jjStockManuNo.Id;
|
newStock.Id = jjStockManuNo.Id;
|
||||||
newStock.State = 1;
|
newStock.State = 1;
|
||||||
//newStock.MachineId = jiaoStock.MachineId;
|
//newStock.MachineId = jiaoStock.MachineId;
|
||||||
|
@ -538,14 +548,14 @@ namespace DM_Weight.ViewModels
|
||||||
//newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity;
|
//newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity;
|
||||||
UpdateJJStock.Add(newStock);
|
UpdateJJStock.Add(newStock);
|
||||||
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
||||||
csStockList[j].TakeQuantity = csStock.TakeQuantity - Jiaojie_ChannelStocks[i].NeedNum;
|
csStockList[j].TakeQuantity = csStock.TakeQuantity - Jiaojie_ChannelStocks[i].AddQuantity;
|
||||||
Jiaojie_ChannelStocks[i].NeedNum = 0;
|
Jiaojie_ChannelStocks[i].AddQuantity = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //没有该批次
|
else //没有该批次
|
||||||
{
|
{
|
||||||
if (Jiaojie_ChannelStocks[i].NeedNum > csStock.TakeQuantity)
|
if (Jiaojie_ChannelStocks[i].AddQuantity > csStock.TakeQuantity)
|
||||||
{
|
{
|
||||||
//不够取
|
//不够取
|
||||||
ChannelStock newStock = new ChannelStock();
|
ChannelStock newStock = new ChannelStock();
|
||||||
|
@ -559,10 +569,10 @@ namespace DM_Weight.ViewModels
|
||||||
newStock.Id = Guid.NewGuid().ToString();
|
newStock.Id = Guid.NewGuid().ToString();
|
||||||
newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
|
newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
|
||||||
newStock.DrawerType = 1;
|
newStock.DrawerType = 1;
|
||||||
newStock.NeedNum = 0;
|
newStock.AddQuantity = 0;
|
||||||
newStock.State = 1;
|
newStock.State = 1;
|
||||||
AddJJStock.Add(newStock);
|
AddJJStock.Add(newStock);
|
||||||
Jiaojie_ChannelStocks[i].NeedNum = Jiaojie_ChannelStocks[i].NeedNum - csStock.TakeQuantity;
|
Jiaojie_ChannelStocks[i].AddQuantity = Jiaojie_ChannelStocks[i].AddQuantity - csStock.TakeQuantity;
|
||||||
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
csStockList[j].CheckQuantity = csStockList[j].TakeQuantity;
|
||||||
csStockList[j].TakeQuantity = 0;
|
csStockList[j].TakeQuantity = 0;
|
||||||
}
|
}
|
||||||
|
@ -576,8 +586,8 @@ namespace DM_Weight.ViewModels
|
||||||
newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
|
newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
|
||||||
newStock.ManuNo = csStock.ManuNo;
|
newStock.ManuNo = csStock.ManuNo;
|
||||||
newStock.EffDate = csStock.EffDate;
|
newStock.EffDate = csStock.EffDate;
|
||||||
newStock.AddToJJNum = Jiaojie_ChannelStocks[i].NeedNum;
|
newStock.AddToJJNum = Jiaojie_ChannelStocks[i].AddQuantity;
|
||||||
newStock.NeedNum = 0;
|
newStock.AddQuantity = 0;
|
||||||
newStock.Id = Guid.NewGuid().ToString();
|
newStock.Id = Guid.NewGuid().ToString();
|
||||||
newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
|
newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
|
||||||
newStock.DrawerType = 1;
|
newStock.DrawerType = 1;
|
||||||
|
@ -589,16 +599,16 @@ namespace DM_Weight.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int addQuantity= AddJJStock.Where(aj => aj.DrugId == jiaoStock.DrugId).Sum(aj => aj.AddToJJNum);
|
//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 updateQuantity = UpdateJJStock.Where(aj => aj.DrugId == jiaoStock.DrugId).Sum(aj => aj.AddToJJNum);
|
||||||
int iUpdateResult= SqlSugarHelper.Db.Updateable<ChannelStock>()
|
int iUpdateResult = SqlSugarHelper.Db.Updateable<ChannelStock>()
|
||||||
.SetColumns(cs => new ChannelStock() { NeedNum = 0,State=1 })
|
.SetColumns(cs => new ChannelStock() { State = 1 })
|
||||||
.Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo && cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.MachineId == Jiaojie_ChannelStocks[i].MachineId)
|
.Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo && cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.MachineId == Jiaojie_ChannelStocks[i].MachineId)
|
||||||
.ExecuteCommand();
|
.ExecuteCommand();
|
||||||
jiaoStock.NeedNum = jjNeedQuantity - (addQuantity + updateQuantity);
|
//jiaoStock.NeedNum = jjNeedQuantity - (addQuantity + updateQuantity);
|
||||||
int iUpdateResult2 = SqlSugarHelper.Db.Updateable(jiaoStock)
|
//int iUpdateResult2 = SqlSugarHelper.Db.Updateable(jiaoStock)
|
||||||
.UpdateColumns(it => new { it.NeedNum })
|
// .UpdateColumns(it => new { it.NeedNum })
|
||||||
.ExecuteCommand();
|
// .ExecuteCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -611,7 +621,7 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
var ret = jj.First();
|
var ret = jj.First();
|
||||||
ret.AddToJJNum = jj.Sum(itx => itx.AddToJJNum);
|
ret.AddToJJNum = jj.Sum(itx => itx.AddToJJNum);
|
||||||
ret.NeedNum = 0;
|
//ret.NeedNum = 0;
|
||||||
return ret;
|
return ret;
|
||||||
}).ToList();
|
}).ToList();
|
||||||
SqlSugarHelper.Db.Insertable(AddJJStock).ExecuteCommand();
|
SqlSugarHelper.Db.Insertable(AddJJStock).ExecuteCommand();
|
||||||
|
@ -623,7 +633,7 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
var ret = jj.First();
|
var ret = jj.First();
|
||||||
ret.AddToJJNum = jj.Sum(itx => itx.AddToJJNum);
|
ret.AddToJJNum = jj.Sum(itx => itx.AddToJJNum);
|
||||||
ret.NeedNum = 0;
|
//ret.NeedNum = 0;
|
||||||
return ret;
|
return ret;
|
||||||
}).ToList();
|
}).ToList();
|
||||||
for (int i = 0; i < UpdateJJStock.Count; i++)
|
for (int i = 0; i < UpdateJJStock.Count; i++)
|
||||||
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
using DM_Weight.Models;
|
||||||
|
using DM_Weight.msg;
|
||||||
|
using DM_Weight.Port;
|
||||||
|
using DM_Weight.util;
|
||||||
|
using log4net;
|
||||||
|
using Prism.Commands;
|
||||||
|
using Prism.Events;
|
||||||
|
using Prism.Mvvm;
|
||||||
|
using Prism.Regions;
|
||||||
|
using Prism.Services.Dialogs;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DM_Weight.ViewModels
|
||||||
|
{
|
||||||
|
internal class AddToJiaoJieNewWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
|
||||||
|
{
|
||||||
|
private readonly ILog logger = LogManager.GetLogger(typeof(AddToJiaoJieWindowViewModel));
|
||||||
|
private static readonly DateTime Jan1st1970 = new DateTime
|
||||||
|
(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||||
|
public long CurrentTimeMillis()
|
||||||
|
{
|
||||||
|
return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
|
||||||
|
}
|
||||||
|
public bool KeepAlive => false;
|
||||||
|
public bool IsNavigationTarget(NavigationContext navigationContext)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnNavigatedFrom(NavigationContext navigationContext)
|
||||||
|
{
|
||||||
|
// 取消消息订阅
|
||||||
|
//_eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
|
||||||
|
//_eventAggregator.GetEvent<IsSelectedEvent>().Unsubscribe(SetIsSelected);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<ChannelStock>? channelStocks;
|
||||||
|
public List<ChannelStock>? ChannelStocks
|
||||||
|
{
|
||||||
|
get => channelStocks;
|
||||||
|
set => SetProperty(ref channelStocks, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ChannelStock _channelStock;
|
||||||
|
public ChannelStock _ChannelStock
|
||||||
|
{
|
||||||
|
get => _channelStock;
|
||||||
|
set => SetProperty(ref _channelStock, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ChannelStock>? _channelStocksList;
|
||||||
|
public List<ChannelStock>? _ChannelStocksList
|
||||||
|
{
|
||||||
|
get => _channelStocksList;
|
||||||
|
set => SetProperty(ref _channelStocksList, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ChannelList>? _channelLists;
|
||||||
|
public List<ChannelList>? _ChannelLists
|
||||||
|
{
|
||||||
|
get => _channelLists;
|
||||||
|
set => SetProperty(ref _channelLists, value);
|
||||||
|
}
|
||||||
|
private ChannelList _channelList;
|
||||||
|
public ChannelList _ChannelList
|
||||||
|
{
|
||||||
|
get => _channelList;
|
||||||
|
set => SetProperty(ref _channelList, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
||||||
|
{
|
||||||
|
RequestData();
|
||||||
|
}
|
||||||
|
private PortUtil _portUtil;
|
||||||
|
IEventAggregator _eventAggregator;
|
||||||
|
IDialogService _dialogService;
|
||||||
|
public AddToJiaoJieNewWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator, IDialogService DialogService)
|
||||||
|
{
|
||||||
|
_portUtil = portUtil;
|
||||||
|
_eventAggregator = eventAggregator;
|
||||||
|
_dialogService = DialogService;
|
||||||
|
}
|
||||||
|
private void RequestData()
|
||||||
|
{
|
||||||
|
|
||||||
|
ChannelStocks?.Clear();
|
||||||
|
_ChannelLists?.Clear();
|
||||||
|
//1)查询channel_stock所有要补药的药箱
|
||||||
|
ChannelStocks = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||||
|
.Includes<ChannelList>(cs => cs.ChannelLst)
|
||||||
|
.Includes<DrugInfo>(cs => cs.DrugInfo)
|
||||||
|
.Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5"))
|
||||||
|
.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 = ret.BaseQuantity-it.Sum(itx => itx.Quantity);
|
||||||
|
return ret;
|
||||||
|
}).Where(it => it.BaseQuantity > it.Quantity)
|
||||||
|
.ToList();
|
||||||
|
if (ChannelStocks != null && ChannelStocks.Count > 0)
|
||||||
|
{
|
||||||
|
ChannelStocks.ForEach(cs => cs.AddQuantity =cs.BaseQuantity- cs.Quantity);
|
||||||
|
|
||||||
|
//2)查询channel_list将1)中查询的添加到channel_list的channel_stock里供页面呈现显示
|
||||||
|
List<int> DrawerNoList = ChannelStocks.Select(cs => cs.DrawerNo).Distinct().ToList();
|
||||||
|
List<ChannelList> channelLists = new List<ChannelList>();
|
||||||
|
for (int i = 0; i < DrawerNoList.Count; i++)
|
||||||
|
{
|
||||||
|
var channelList = SqlSugarHelper.Db.Queryable<ChannelList>()
|
||||||
|
.Where(cl => cl.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5") && cl.DrawerNo == DrawerNoList[i])
|
||||||
|
.OrderBy(cl => cl.Id)
|
||||||
|
.OrderBy(cl => cl.DrawerNo)
|
||||||
|
.First();
|
||||||
|
if (channelList.channelStocks == null)
|
||||||
|
{
|
||||||
|
channelList.channelStocks = new List<ChannelStock>();
|
||||||
|
}
|
||||||
|
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]).ToList());
|
||||||
|
if (channelList != null)
|
||||||
|
{
|
||||||
|
//if (channelList.channelStocks[0].AddToJJNum>0)
|
||||||
|
// channelList.State=1; //表示有补药
|
||||||
|
channelLists.Add(channelList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ChannelLists = channelLists;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_ChannelLists?.Clear();
|
||||||
|
_ChannelLists = new List<ChannelList>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private int _status = 0;
|
||||||
|
|
||||||
|
public int Status { get => _status; set => SetProperty(ref _status, value); }
|
||||||
|
|
||||||
|
private bool _isEnable = true;
|
||||||
|
public bool IsEnable { get => _isEnable; set => SetProperty(ref _isEnable, value); }
|
||||||
|
|
||||||
|
private List<int> iDrawerNoLst
|
||||||
|
{ get; set; }
|
||||||
|
private int CurrentNum { get; set; }
|
||||||
|
|
||||||
|
//刷新
|
||||||
|
public DelegateCommand QueryCommand
|
||||||
|
{
|
||||||
|
get => new DelegateCommand(() => RequestData());
|
||||||
|
}
|
||||||
|
public DelegateCommand RejectReport_Download
|
||||||
|
{
|
||||||
|
get => new DelegateCommand(() =>
|
||||||
|
{
|
||||||
|
//GridReportUtil.RejectionReport("");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
public DelegateCommand Account_Download
|
||||||
|
{
|
||||||
|
get => new DelegateCommand(() =>
|
||||||
|
{
|
||||||
|
//GridReportUtil.AccountNewReport();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<ChannelStock> csList = new List<ChannelStock>();
|
||||||
|
//取药 弹出出药列表
|
||||||
|
public DelegateCommand TakeDrugCommand
|
||||||
|
{
|
||||||
|
get => new DelegateCommand(async () =>
|
||||||
|
{
|
||||||
|
csList = _ChannelList.channelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
|
||||||
|
|
||||||
|
if (csList != null && csList.Count > 0)
|
||||||
|
{
|
||||||
|
// 此处延时1毫秒,等待页面渲染
|
||||||
|
await Task.Delay(TimeSpan.FromMilliseconds(1));
|
||||||
|
DialogParameters dialogParameters = new DialogParameters();
|
||||||
|
dialogParameters.Add("_ChannelStock", csList);
|
||||||
|
DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog");
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AlertMsg alertMsg = new AlertMsg
|
||||||
|
{
|
||||||
|
Message = $"未选择药品,请先点选药箱号",
|
||||||
|
Type = MsgType.ERROR,
|
||||||
|
};
|
||||||
|
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||||
|
_portUtil.Operate = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private void DoDialogResult(IDialogResult dialogResult)
|
||||||
|
{
|
||||||
|
RequestData();
|
||||||
|
}
|
||||||
|
|
||||||
|
private DelegateCommand _rowSelected;
|
||||||
|
|
||||||
|
public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
|
||||||
|
public async void OpenOrderDialog()
|
||||||
|
{
|
||||||
|
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.Where(cs => cs.State == 0).ToList());
|
||||||
|
DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog");
|
||||||
|
|
||||||
|
}
|
||||||
|
if (_ChannelList != null)
|
||||||
|
{
|
||||||
|
AlertMsg alertMsg = new AlertMsg
|
||||||
|
{
|
||||||
|
Message = $"药品已取出,待入库",
|
||||||
|
Type = MsgType.ERROR,
|
||||||
|
};
|
||||||
|
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,7 +96,7 @@ namespace DM_Weight.ViewModels
|
||||||
ChannelStocks = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
ChannelStocks = SqlSugarHelper.Db.Queryable<ChannelStock>()
|
||||||
.Includes<ChannelList>(cs => cs.ChannelLst)
|
.Includes<ChannelList>(cs => cs.ChannelLst)
|
||||||
.Includes<DrugInfo>(cs => cs.DrugInfo)
|
.Includes<DrugInfo>(cs => cs.DrugInfo)
|
||||||
.Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5") && (cs.NeedNum > 0 || cs.AddToJJNum > 0))
|
.Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5"))
|
||||||
.OrderBy(cs => cs.Chnguid)
|
.OrderBy(cs => cs.Chnguid)
|
||||||
.OrderBy(cs => cs.DrawerNo)
|
.OrderBy(cs => cs.DrawerNo)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
@ -105,16 +105,16 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
var ret = it.First();
|
var ret = it.First();
|
||||||
ret.Quantity = it.Sum(itx => itx.Quantity);
|
ret.Quantity = it.Sum(itx => itx.Quantity);
|
||||||
ret.NeedNum = it.Sum(itx => itx.NeedNum);
|
//ret.NeedNum = it.Sum(itx => itx.NeedNum);
|
||||||
return ret;
|
return ret;
|
||||||
}).Where(it => it.BaseQuantity > it.Quantity)
|
}).Where(it => it.BaseQuantity > it.Quantity)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (ChannelStocks != null && ChannelStocks.Count > 0)
|
if (ChannelStocks != null && ChannelStocks.Count > 0)
|
||||||
{
|
{
|
||||||
ChannelStocks.ForEach(cs => cs.AddQuantity = cs.NeedNum);
|
ChannelStocks.ForEach(cs => cs.AddQuantity = cs.BaseQuantity-cs.Quantity);
|
||||||
|
|
||||||
//2)查询channel_list将1)中查询的添加到channel_list的channel_stock里供页面呈现显示
|
//2)查询channel_list将1)中查询的添加到channel_list的channel_stock里供页面呈现显示
|
||||||
List<int> DrawerNoList = ChannelStocks.Select(cs => cs.DrawerNo).Distinct().ToList();
|
List<int> DrawerNoList = ChannelStocks.Select(cs => cs.DrawerNo).Distinct().OrderBy(cs=>cs).ToList();
|
||||||
List<ChannelList> channelLists = new List<ChannelList>();
|
List<ChannelList> channelLists = new List<ChannelList>();
|
||||||
for (int i = 0; i < DrawerNoList.Count; i++)
|
for (int i = 0; i < DrawerNoList.Count; i++)
|
||||||
{
|
{
|
||||||
|
@ -127,7 +127,7 @@ namespace DM_Weight.ViewModels
|
||||||
{
|
{
|
||||||
channelList.channelStocks = new List<ChannelStock>();
|
channelList.channelStocks = new List<ChannelStock>();
|
||||||
}
|
}
|
||||||
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]&&(cs.NeedNum>0||cs.AddToJJNum>0)).ToList());
|
channelList.channelStocks.AddRange(ChannelStocks.Where(cs => cs.DrawerNo == DrawerNoList[i]).ToList());
|
||||||
if (channelList != null)
|
if (channelList != null)
|
||||||
{
|
{
|
||||||
//if (channelList.channelStocks[0].AddToJJNum>0)
|
//if (channelList.channelStocks[0].AddToJJNum>0)
|
||||||
|
|
|
@ -349,6 +349,8 @@ namespace DM_Weight.ViewModels
|
||||||
IEventAggregator _eventAggregator;
|
IEventAggregator _eventAggregator;
|
||||||
public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container, IEventAggregator eventAggregator)
|
public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container, IEventAggregator eventAggregator)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
logger.Info("HomeWindowViewModel");
|
||||||
_portUtil = portUtil;
|
_portUtil = portUtil;
|
||||||
_regionManager = iRegionManager;
|
_regionManager = iRegionManager;
|
||||||
_dialogService = dialogService;
|
_dialogService = dialogService;
|
||||||
|
|
|
@ -14,7 +14,6 @@ using Prism.Events;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
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.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
@ -471,6 +470,7 @@ _exitCommand ??= new DelegateCommand(Exit);
|
||||||
public void OnNavigatedTo(NavigationContext navigationContext)
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
||||||
{
|
{
|
||||||
FingerMsg = !_fingerprintUtil.bIsConnected;
|
FingerMsg = !_fingerprintUtil.bIsConnected;
|
||||||
|
logger.Info("OnNavigatedTo");
|
||||||
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
|
||||||
//结束录屏
|
//结束录屏
|
||||||
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(0);
|
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(0);
|
||||||
|
@ -486,8 +486,9 @@ _exitCommand ??= new DelegateCommand(Exit);
|
||||||
//这个方法用于拦截请求
|
//这个方法用于拦截请求
|
||||||
public void OnNavigatedFrom(NavigationContext navigationContext)
|
public void OnNavigatedFrom(NavigationContext navigationContext)
|
||||||
{
|
{
|
||||||
_eventAggregator.GetEvent<FingerprintEvent>().Unsubscribe(LoginEvent);
|
|
||||||
|
|
||||||
|
_eventAggregator.GetEvent<FingerprintEvent>().Unsubscribe(LoginEvent);
|
||||||
|
logger.Info("OnNavigatedFrom");
|
||||||
#region 录屏
|
#region 录屏
|
||||||
//登录进来后开始录屏
|
//登录进来后开始录屏
|
||||||
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(1);
|
_eventAggregator.GetEvent<PrintScreenEvent>().Publish(1);
|
||||||
|
|
|
@ -11,7 +11,6 @@ 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.IO;
|
||||||
|
@ -26,10 +25,10 @@ namespace DM_Weight.ViewModels
|
||||||
internal class MainWindowViewModel : BindableBase
|
internal class MainWindowViewModel : BindableBase
|
||||||
{
|
{
|
||||||
#region 录屏相关
|
#region 录屏相关
|
||||||
public Recorder _recorder;
|
//public Recorder _recorder;
|
||||||
private string _outputFolder;
|
private string _outputFolder;
|
||||||
private string _outputFilePath;
|
private string _outputFilePath;
|
||||||
public static MainWindowViewModel vm;
|
//public static MainWindowViewModel vm;
|
||||||
#endregion
|
#endregion
|
||||||
private readonly ILog logger = LogManager.GetLogger(typeof(MainWindowViewModel));
|
private readonly ILog logger = LogManager.GetLogger(typeof(MainWindowViewModel));
|
||||||
|
|
||||||
|
@ -76,9 +75,10 @@ namespace DM_Weight.ViewModels
|
||||||
IRegionManager _regionManager;
|
IRegionManager _regionManager;
|
||||||
IUnityContainer _container;
|
IUnityContainer _container;
|
||||||
//private CHKFunction _cHKFunction;
|
//private CHKFunction _cHKFunction;
|
||||||
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, ScreenUtil screenUtil)
|
FFmpegHelper fFmpegHelper;
|
||||||
|
public MainWindowViewModel(IRegionManager regionManager, IUnityContainer container, IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil, ScreenUtil screenUtil, FFmpegHelper fFmpegHelper)
|
||||||
{
|
{
|
||||||
vm = this;
|
//vm = this;
|
||||||
//_portUtil = portUtil;
|
//_portUtil = portUtil;
|
||||||
this.eventAggregator = eventAggregator;
|
this.eventAggregator = eventAggregator;
|
||||||
this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
|
this.eventAggregator.GetEvent<SnackbarEvent>().Subscribe(doMyPrismEvent2);
|
||||||
|
@ -101,6 +101,7 @@ namespace DM_Weight.ViewModels
|
||||||
}
|
}
|
||||||
|
|
||||||
}));
|
}));
|
||||||
|
this.fFmpegHelper = fFmpegHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
void doMyPrismEvent2(AlertMsg msg)
|
void doMyPrismEvent2(AlertMsg msg)
|
||||||
|
@ -127,51 +128,38 @@ namespace DM_Weight.ViewModels
|
||||||
/// <param name="type">0停止录屏;1开始录屏;2退出软件清进程</param>
|
/// <param name="type">0停止录屏;1开始录屏;2退出软件清进程</param>
|
||||||
void PrintScreen(int type)
|
void PrintScreen(int type)
|
||||||
{
|
{
|
||||||
if(type==0)
|
logger.Info($"录屏事件PrintScreen{type}");
|
||||||
|
if (type == 0)
|
||||||
{
|
{
|
||||||
StopPrintScreen();
|
fFmpegHelper.stopFlag = true;
|
||||||
//删除7天前的录屏文件
|
fFmpegHelper.StopRecording();
|
||||||
|
//StopPrintScreen();
|
||||||
|
////删除7天前的录屏文件
|
||||||
|
|
||||||
if (Directory.Exists(_outputFolder))
|
//if (Directory.Exists(_outputFolder))
|
||||||
{
|
//{
|
||||||
var files = Directory.GetFiles(_outputFolder);
|
// var files = Directory.GetFiles(_outputFolder);
|
||||||
foreach (var file in files)
|
// foreach (var file in files)
|
||||||
{
|
// {
|
||||||
var fileInfo = new FileInfo(file);
|
// var fileInfo = new FileInfo(file);
|
||||||
if (fileInfo.CreationTime < DateTime.Now.AddDays(-7))
|
// if (fileInfo.CreationTime < DateTime.Now.AddDays(-7))
|
||||||
{
|
// {
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
fileInfo.Delete();
|
// fileInfo.Delete();
|
||||||
}
|
// }
|
||||||
catch (Exception ex)
|
// catch (Exception ex)
|
||||||
{
|
// {
|
||||||
logger.Error($"删除录屏文件失败: {ex.Message}");
|
// logger.Info($"删除录屏文件失败: {ex.Message}");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
else if (type == 1)
|
else if (type == 1)
|
||||||
{
|
{
|
||||||
StartPrintScreen();
|
fFmpegHelper.stopFlag = false;
|
||||||
}
|
// StartPrintScreen();
|
||||||
else if (type == 2)
|
|
||||||
{
|
|
||||||
_recorder?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
void StopPrintScreen()
|
|
||||||
{
|
|
||||||
|
|
||||||
//退出登录结束录屏
|
|
||||||
_recorder?.Stop();
|
|
||||||
}
|
|
||||||
//录屏
|
|
||||||
void StartPrintScreen()
|
|
||||||
{
|
|
||||||
|
|
||||||
// 创建输出目录
|
// 创建输出目录
|
||||||
_outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings");
|
_outputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Log", "ScreenRecordings");
|
||||||
if (!Directory.Exists(_outputFolder))
|
if (!Directory.Exists(_outputFolder))
|
||||||
|
@ -180,30 +168,57 @@ namespace DM_Weight.ViewModels
|
||||||
}
|
}
|
||||||
// 生成输出文件名
|
// 生成输出文件名
|
||||||
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
|
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
|
||||||
_outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.mp4");
|
_outputFilePath = Path.Combine(_outputFolder, $"{timestamp}.webm");
|
||||||
|
fFmpegHelper.StartRecording(_outputFilePath, 25);
|
||||||
// 设置录制选项
|
|
||||||
var options = new RecorderOptions();
|
|
||||||
|
|
||||||
// 创建录制器实例
|
|
||||||
_recorder = Recorder.CreateRecorder(options);
|
|
||||||
|
|
||||||
// 设置事件处理
|
|
||||||
_recorder.OnRecordingComplete += Recorder_OnRecordingComplete;
|
|
||||||
_recorder.OnRecordingFailed += Recorder_OnRecordingFailed;
|
|
||||||
|
|
||||||
// 开始录制
|
|
||||||
_recorder.Record(_outputFilePath);
|
|
||||||
}
|
}
|
||||||
//录制失败
|
else if (type == 2)
|
||||||
private void Recorder_OnRecordingFailed(object sender, RecordingFailedEventArgs e)
|
|
||||||
{
|
{
|
||||||
logger.Info($"录制失败: {e.Error}");
|
// _recorder?.Dispose();
|
||||||
}
|
}
|
||||||
//录制完成
|
|
||||||
private void Recorder_OnRecordingComplete(object sender, RecordingCompleteEventArgs e)
|
|
||||||
{
|
|
||||||
logger.Info($"录制完成: {e.FilePath}");
|
|
||||||
}
|
}
|
||||||
|
#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}");
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
<UserControl x:Class="DM_Weight.Views.AddToJiaoJieNewWindow"
|
||||||
|
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"
|
||||||
|
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||||
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
xmlns:convert="clr-namespace:DM_Weight.Converter"
|
||||||
|
xmlns:prism="http://prismlibrary.com/"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<Style x:Key="st" TargetType="GridViewColumnHeader">
|
||||||
|
<Style.Setters>
|
||||||
|
<Setter Property="Height">
|
||||||
|
<Setter.Value>55</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="Background">
|
||||||
|
<Setter.Value>#31ccec</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="Foreground">
|
||||||
|
<Setter.Value>white</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style.Setters>
|
||||||
|
</Style>
|
||||||
|
</UserControl.Resources>
|
||||||
|
<Grid>
|
||||||
|
<Grid.Resources>
|
||||||
|
<!--<CollectionViewSource x:Key="GroupedDataList" Source="{Binding ChannelStocks}">
|
||||||
|
<CollectionViewSource.GroupDescriptions>
|
||||||
|
<PropertyGroupDescription PropertyName="ChannelLst" />
|
||||||
|
</CollectionViewSource.GroupDescriptions>
|
||||||
|
</CollectionViewSource>-->
|
||||||
|
<convert:GroupSumConverter x:Key="GroupSumConverter" />
|
||||||
|
<convert:TotalCountConverter x:Key="TotalCountConverter" />
|
||||||
|
<convert:StatusConverter x:Key="StatusConverter" />
|
||||||
|
<convert:StockStatusConverter x:Key="StockStatusConverter" />
|
||||||
|
<Style x:Key="st" TargetType="GridViewColumnHeader">
|
||||||
|
<Style.Setters>
|
||||||
|
<Setter Property="Height">
|
||||||
|
<Setter.Value>55</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="Background">
|
||||||
|
<Setter.Value>#31ccec</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="Foreground">
|
||||||
|
<Setter.Value>white</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style.Setters>
|
||||||
|
</Style>
|
||||||
|
</Grid.Resources>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid Margin="0 6 0 6" Grid.Row="0">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="1*" />
|
||||||
|
<ColumnDefinition Width="2*" />
|
||||||
|
<ColumnDefinition Width="7*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
|
<Button Visibility="Collapsed"
|
||||||
|
Margin="3 0 3 0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Command="{Binding RejectReport_Download}"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedLightButton}"
|
||||||
|
Content="注射剂报表" />
|
||||||
|
|
||||||
|
<Button Visibility="Collapsed"
|
||||||
|
Margin="3 0 3 0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Command="{Binding Account_Download}"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedLightButton}"
|
||||||
|
Content="账册报表" />
|
||||||
|
<Button
|
||||||
|
Margin="6 0 6 0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Style="{StaticResource MaterialDesignOutlinedLightButton}"
|
||||||
|
ToolTip="刷新" Command="{Binding QueryCommand}">
|
||||||
|
<materialDesign:PackIcon
|
||||||
|
Kind="Refresh" />
|
||||||
|
</Button>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<ListView Grid.ColumnSpan="2"
|
||||||
|
Padding="0 6 0 0" Grid.Row="1"
|
||||||
|
ItemsSource="{Binding _ChannelLists, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
|
||||||
|
SelectedItem="{Binding _ChannelList}"
|
||||||
|
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
|
||||||
|
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
|
||||||
|
materialDesign:ListViewAssist.ListViewItemPadding="13">
|
||||||
|
<ListView.Resources>
|
||||||
|
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
|
||||||
|
<Setter Property="Foreground" Value="White" />
|
||||||
|
</Style>
|
||||||
|
</ListView.Resources>
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="SelectionChanged">
|
||||||
|
<i:InvokeCommandAction Command="{Binding RowSelected}" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
<ListView.View>
|
||||||
|
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
|
||||||
|
<GridViewColumn Width="80"
|
||||||
|
DisplayMemberBinding="{Binding DrawerNo}"
|
||||||
|
Header="药箱号"/>
|
||||||
|
|
||||||
|
<GridViewColumn Header="药品名称" Width="150">
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="DrugInfo.DrugName" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
<GridViewColumn Header="厂家" Width="150">
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="DrugInfo.Manufactory" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
<GridViewColumn Header="规格" Width="100">
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="DrugInfo.DrugSpec" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
<GridViewColumn Header="基数" Width="100">
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="BaseQuantity" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
<GridViewColumn Header="需补药数" Width="100">
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="AddQuantity" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
<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>
|
||||||
|
</GridView>
|
||||||
|
</ListView.View>
|
||||||
|
</ListView>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
|
@ -0,0 +1,28 @@
|
||||||
|
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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// AddToJiaoJieNewWindow.xaml 的交互逻辑
|
||||||
|
/// </summary>
|
||||||
|
public partial class AddToJiaoJieNewWindow : UserControl
|
||||||
|
{
|
||||||
|
public AddToJiaoJieNewWindow()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -259,7 +259,7 @@
|
||||||
<GridViewColumn Header="需补药数" Width="100">
|
<GridViewColumn Header="需补药数" Width="100">
|
||||||
<GridViewColumn.CellTemplate>
|
<GridViewColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="NeedNum" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="AddQuantity" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</GridViewColumn.CellTemplate>
|
</GridViewColumn.CellTemplate>
|
||||||
</GridViewColumn>
|
</GridViewColumn>
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
<materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
|
<materialDesign:PackIcon Kind="Close" Width="34" Height="34" />
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
<DataGrid Grid.Row="1" ItemsSource="{Binding ChannelStocks}" AutoGenerateColumns="False" CanUserAddRows="False">
|
<DataGrid Grid.Row="1" ItemsSource="{Binding _DrugInfoList}" AutoGenerateColumns="False" CanUserAddRows="False">
|
||||||
<DataGrid.Resources>
|
<DataGrid.Resources>
|
||||||
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
|
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
|
||||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||||
|
@ -53,67 +53,71 @@
|
||||||
</Style>
|
</Style>
|
||||||
</DataGrid.Resources>
|
</DataGrid.Resources>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
|
|
||||||
<DataGridTextColumn Width="100"
|
|
||||||
Header="库位"
|
|
||||||
IsReadOnly="True"
|
|
||||||
Binding="{Binding Location}"
|
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
|
||||||
/>
|
|
||||||
<DataGridTextColumn Width="180"
|
<DataGridTextColumn Width="180"
|
||||||
Header="药品名称"
|
Header="药品名称"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
Binding="{Binding DrugInfo.DrugName}"
|
Binding="{Binding DrugName}"
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
||||||
/>
|
/>
|
||||||
<DataGridTextColumn Width="180"
|
<DataGridTextColumn Width="180"
|
||||||
Header="规格"
|
Header="规格"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
Binding="{Binding DrugInfo.DrugSpec}"
|
Binding="{Binding DrugSpec}"
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
||||||
/>
|
/>
|
||||||
<DataGridTextColumn Width="100"
|
<DataGridTextColumn
|
||||||
Header="库存"
|
Header="需补药数"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
Binding="{Binding Quantity}"
|
Binding="{Binding NeedQuantity}"
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
||||||
/>
|
/>
|
||||||
<DataGridTextColumn Width="130"
|
<DataGridTemplateColumn Header="库存" IsReadOnly="True">
|
||||||
Header="批次"
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
IsReadOnly="True"
|
<DataTemplate>
|
||||||
Binding="{Binding ManuNo}"
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="Quantity" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
</DataTemplate>
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
/>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTextColumn Width="130"
|
<DataGridTemplateColumn
|
||||||
|
Header="库位" IsReadOnly="True">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="Location" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
|
<DataGridTemplateColumn IsReadOnly="True"
|
||||||
|
Header="批次">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="ManuNo" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
|
<DataGridTemplateColumn Width="130"
|
||||||
Header="效期"
|
Header="效期"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True">
|
||||||
Binding="{Binding EffDate}"
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
<DataTemplate>
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="EffDate" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
|
||||||
/>
|
</DataTemplate>
|
||||||
<!--<DataGridTextColumn Width="100"
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
Header="取出数量"
|
</DataGridTemplateColumn>
|
||||||
IsReadOnly="True"
|
|
||||||
Binding="{Binding TakeQuantity}"
|
|
||||||
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
|
|
||||||
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
|
||||||
/>-->
|
|
||||||
<DataGridTemplateColumn Header="取出数量">
|
<DataGridTemplateColumn Header="取出数量">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBox Width="80" Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
|
<ListBox ItemsSource="{Binding channelStocks}" materialDesign:ListBoxItemAssist.ShowSelection="False">
|
||||||
Visibility="{Binding ColNo,Converter={StaticResource TakeQuantityVisiable}}">
|
<ListBox.ItemTemplate>
|
||||||
<TextBox.Text>
|
<DataTemplate>
|
||||||
<Binding Path="TakeQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
|
<TextBox Width="60" Visibility="{Binding ColNo,Converter={StaticResource TakeQuantityVisiable}}" Text="{Binding TakeQuantity}">
|
||||||
</Binding>
|
|
||||||
</TextBox.Text>
|
|
||||||
</TextBox>
|
</TextBox>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
</ListBox.ItemTemplate>
|
||||||
|
</ListBox>
|
||||||
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
|
|
|
@ -4,7 +4,6 @@ using DM_Weight.ViewModels;
|
||||||
using Prism.Events;
|
using Prism.Events;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
using Prism.Regions;
|
using Prism.Regions;
|
||||||
using ScreenRecorderLib;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -30,11 +29,11 @@ namespace DM_Weight.Views
|
||||||
{
|
{
|
||||||
//IRegionManager _regionManager;
|
//IRegionManager _regionManager;
|
||||||
//IUnityContainer _container;
|
//IUnityContainer _container;
|
||||||
MainWindowViewModel vms;
|
//MainWindowViewModel vms;
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
vms = MainWindowViewModel.vm;
|
//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,11 +45,11 @@ namespace DM_Weight.Views
|
||||||
//}));
|
//}));
|
||||||
|
|
||||||
}
|
}
|
||||||
protected override void OnClosed(EventArgs e)
|
//protected override void OnClosed(EventArgs e)
|
||||||
{
|
//{
|
||||||
vms._recorder?.Dispose();
|
// vms._recorder?.Dispose();
|
||||||
base.OnClosed(e);
|
// base.OnClosed(e);
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace DM_Weight.util
|
||||||
|
{
|
||||||
|
public class FFmpegHelper
|
||||||
|
{
|
||||||
|
private Process _ffmpegProcess;
|
||||||
|
private string _ffmpegPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ffmpeg.exe");
|
||||||
|
//是否停止录屏标志
|
||||||
|
public bool stopFlag = false;
|
||||||
|
|
||||||
|
public void StartRecording(string outputPath, int frameRate = 30)
|
||||||
|
{
|
||||||
|
//int width = (int)SystemParameters.PrimaryScreenWidth;
|
||||||
|
//int height =(int)SystemParameters.PrimaryScreenHeight;
|
||||||
|
int segmentDuration = 1800; // 每段半小时
|
||||||
|
string args = $"-f gdigrab -framerate {frameRate} " +
|
||||||
|
$"-i desktop -preset ultrafast -t {segmentDuration} {outputPath}";
|
||||||
|
|
||||||
|
_ffmpegProcess = new Process
|
||||||
|
{
|
||||||
|
StartInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = _ffmpegPath,
|
||||||
|
Arguments = args,
|
||||||
|
UseShellExecute = false,
|
||||||
|
CreateNoWindow = true,
|
||||||
|
RedirectStandardInput = true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
_ffmpegProcess.Start();
|
||||||
|
ThreadPool.QueueUserWorkItem(CheckFFmpegProcess); // 检查FFmpeg进程是否完成,以开始下一个录制段
|
||||||
|
}
|
||||||
|
public void StopRecording()
|
||||||
|
{
|
||||||
|
_ffmpegProcess?.StandardInput.WriteLine("q");
|
||||||
|
_ffmpegProcess?.WaitForExit(1000);
|
||||||
|
_ffmpegProcess?.Close();
|
||||||
|
stopFlag = true;
|
||||||
|
}
|
||||||
|
private void CheckFFmpegProcess(object state)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!stopFlag)
|
||||||
|
{
|
||||||
|
_ffmpegProcess.WaitForExit(); // 等待FFmpeg进程结束
|
||||||
|
if (!_ffmpegProcess.HasExited) return; // 如果进程未结束,则不继续
|
||||||
|
// 开始下一个录制段,如果需要循环录制,可以取消注释下面的代码行并适当调整逻辑
|
||||||
|
// StartRecording(); // 注意:这将无限循环录制,可能需要用户界面干预来停止或重置计数器。
|
||||||
|
string _outputFolder;
|
||||||
|
string _outputFilePath;
|
||||||
|
_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}.webm");
|
||||||
|
StartRecording(_outputFilePath, 25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DM_Weight.util
|
||||||
|
{
|
||||||
|
public class OpenCVScreenRecord
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue