交接柜补药时列出所有要补药的批次让补药人选择对应批次

This commit is contained in:
maqiao 2025-04-11 13:45:20 +08:00
parent 88b97e213f
commit c971e9d1bc
10 changed files with 959 additions and 468 deletions

View File

@ -3,7 +3,7 @@
<connectionStrings> <connectionStrings>
<!-- 数据库连接字符串 --> <!-- 数据库连接字符串 -->
<!--<add name="database" connectionString="server=127.0.0.1;database=wpf_dm_program;userid=root;password=qq1223" />--> <!--<add name="database" connectionString="server=127.0.0.1;database=wpf_dm_program;userid=root;password=qq1223" />-->
<add name="database" connectionString="server=127.0.0.1;port=3306;database=xiangtan_mazuike;userid=root;password=root" /> <add name="database" connectionString="server=127.0.0.1;port=3306;database=xiangtan_mazuike_xx;userid=root;password=root" />
</connectionStrings> </connectionStrings>
<!--<runtime> <!--<runtime>
--><!--配置之后Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!-- --><!--配置之后Appdomain.CurrentDomain.UnhandledException 事件的 IsTerminating 就变成了 false 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--
@ -54,7 +54,7 @@
<!-- 抽屉串口使用的协议232或者485 --> <!-- 抽屉串口使用的协议232或者485 -->
<add key="DrawerProtocol" value="485" /> <add key="DrawerProtocol" value="485" />
<!-- 抽屉串口的串口号 --> <!-- 抽屉串口的串口号 -->
<add key="DrawerPortPath" value="COM5" /> <add key="DrawerPortPath" value="COM1" />
<!-- can总线串口的串口号 --> <!-- can总线串口的串口号 -->
<add key="CanBusPortPath" value="COM3" /> <add key="CanBusPortPath" value="COM3" />
<!-- 条码枪串口的串口号 --> <!-- 条码枪串口的串口号 -->

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.Models
{
public class StringVSIntModels
{
public string StringId { get; set; }
public int IntQuantity { get; set; }
}
}

View File

@ -3,6 +3,7 @@ using DM_Weight.msg;
using DM_Weight.Port; using DM_Weight.Port;
using DM_Weight.util; using DM_Weight.util;
using log4net; using log4net;
using MaterialDesignThemes.Wpf;
using Prism.Commands; using Prism.Commands;
using Prism.Events; using Prism.Events;
using Prism.Mvvm; using Prism.Mvvm;
@ -16,6 +17,7 @@ using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
namespace DM_Weight.ViewModels namespace DM_Weight.ViewModels
{ {
@ -41,6 +43,8 @@ namespace DM_Weight.ViewModels
get => _jiaojie_channelStocks; get => _jiaojie_channelStocks;
set => SetProperty(ref _jiaojie_channelStocks, value); set => SetProperty(ref _jiaojie_channelStocks, value);
} }
//交接柜所在药箱下的所有药品id
List<string> drugIdLst = new List<string>();
//交接柜中无该批次添加实体 //交接柜中无该批次添加实体
public List<ChannelStock> AddJJStock = new List<ChannelStock>(); public List<ChannelStock> AddJJStock = new List<ChannelStock>();
//交接柜中有该批次更新实体 //交接柜中有该批次更新实体
@ -61,6 +65,20 @@ namespace DM_Weight.ViewModels
private IEnumerable<IGrouping<int, ChannelStock>> enumerable; private IEnumerable<IGrouping<int, ChannelStock>> enumerable;
private IEnumerator<IGrouping<int, ChannelStock>> enumerator; private IEnumerator<IGrouping<int, ChannelStock>> enumerator;
private SolidColorBrush _colorBrush;
public SolidColorBrush SnackbarBackground
{
get => _colorBrush;
set => SetProperty(ref _colorBrush, value);
}
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
public ISnackbarMessageQueue SnackbarMessageQueue
{
get => _snackbarMessageQueue;
set => SetProperty(ref _snackbarMessageQueue, value);
}
public string Title => "交接柜补药"; public string Title => "交接柜补药";
@ -82,18 +100,19 @@ namespace DM_Weight.ViewModels
public void OnDialogOpened(IDialogParameters parameters) public void OnDialogOpened(IDialogParameters parameters)
{ {
_eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent); _eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
Jiaojie_ChannelStocks = parameters.GetValue<List<ChannelStock>>("ChannelStocks"); Jiaojie_ChannelStocks = parameters.GetValue<List<ChannelStock>>("_ChannelStock");
for (int i = 0; i < Jiaojie_ChannelStocks.Count; i++) for (int i = 0; i < Jiaojie_ChannelStocks.Count; i++)
{ {
ChannelStock copy = TransExpV2<ChannelStock, ChannelStock>.Trans(Jiaojie_ChannelStocks[i]); ChannelStock copy = TransExpV2<ChannelStock, ChannelStock>.Trans(Jiaojie_ChannelStocks[i]);
ChannelStocks.Add(copy); ChannelStocks.Add(copy);
} }
ChannelStocks = Jiaojie_ChannelStocks.GroupBy(cs =>new { cs.DrugId, cs.ManuNo }).Select(g => new //ChannelStocks = Jiaojie_ChannelStocks.GroupBy(cs =>new { cs.DrugId }).Select(g => new
{ //{
Key = g.Key, // Key = g.Key,
AddQuantity = g.Sum(s => s.AddQuantity) // AddQuantity = g.Sum(s => s.AddQuantity)
}).Select(cs => new ChannelStock() { DrugId = cs.Key.DrugId,ManuNo=cs.Key.ManuNo, AddQuantity = cs.AddQuantity }).ToList(); //}).Select(cs => new ChannelStock() { DrugId = cs.Key.DrugId,ManuNo=cs.Key.ManuNo, AddQuantity = cs.AddQuantity }).ToList();
RequestData(); RequestData();
} }
@ -199,9 +218,9 @@ namespace DM_Weight.ViewModels
.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"))
.Where(cs => cs.DrugId == ChannelStocks[i].DrugId && cs.ManuNo == ChannelStocks[i].ManuNo) .Where(cs => cs.DrugId == ChannelStocks[i].DrugId)
.OrderBy(cs => cs.EffDate) //.OrderBy(cs => cs.EffDate)
.OrderBy(cs => cs.DrawerNo) .OrderBy(cs => new { cs.EffDate, cs.DrawerNo, cs.ColNo })
.ToList(); .ToList();
if (HasQChannels == null || HasQChannels.Count <= 0) if (HasQChannels == null || HasQChannels.Count <= 0)
{ {
@ -213,22 +232,37 @@ namespace DM_Weight.ViewModels
// 说明数量足够 // 说明数量足够
if (total >= TakeQ) if (total >= TakeQ)
{ {
for (int j = 0; TakeQ > 0; j++) //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++)
{ {
ChannelStock stock = HasQChannels[j]; if ((ChannelStocks[i].AddQuantity - hadTakeQ) > HasQChannels[j].Quantity)
if (TakeQ > stock.Quantity)
{ {
stock.TakeQuantity = stock.Quantity; HasQChannels[j].TakeQuantity = HasQChannels[j].Quantity;
channelStocks.Add(stock); hadTakeQ += HasQChannels[j].Quantity;
TakeQ -= stock.Quantity;
} }
else else
{ {
stock.TakeQuantity = TakeQ; HasQChannels[j].TakeQuantity = ChannelStocks[i].AddQuantity - hadTakeQ;
channelStocks.Add(stock); break;
TakeQ = 0;
} }
} }
channelStocks.AddRange(HasQChannels);
} }
else else
{ {
@ -247,14 +281,14 @@ namespace DM_Weight.ViewModels
} }
else else
{ {
channelStocks.Sort((a, b) => //channelStocks.Sort((a, b) =>
{ //{
if ((a.DrawerNo - b.DrawerNo) == 0) // if ((a.DrawerNo - b.DrawerNo) == 0)
{ // {
return a.ColNo - b.ColNo; // return a.ColNo - b.ColNo;
} // }
return a.DrawerNo - b.DrawerNo; // return a.DrawerNo - b.DrawerNo;
}); //});
ChannelStocks = channelStocks; ChannelStocks = channelStocks;
@ -282,7 +316,7 @@ namespace DM_Weight.ViewModels
} }
} }
enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs); enumerable = ChannelStocks.Where(cs=>cs.TakeQuantity>0).GroupBy(cs => cs.DrawerNo, cs => cs);
enumerator = enumerable.GetEnumerator(); enumerator = enumerable.GetEnumerator();
enumerator.MoveNext(); enumerator.MoveNext();
Status = 1; Status = 1;
@ -337,11 +371,36 @@ namespace DM_Weight.ViewModels
{ {
if (!_isFinishClick) if (!_isFinishClick)
{ {
_isFinishClick = true; _isFinishClick = true;
List<ChannelStock> record = ChannelStocks.FindAll(it => it.TakeQuantity > 0).ToList(); List<ChannelStock> record = ChannelStocks.FindAll(it => it.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 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 csItem in csSum)
{
if (jjItem.DrugId == csItem.DrugId)
{
if (jjItem.Quantity != csItem.Quantity)
{
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("输入药品数量与需要补药品数不一致!");
_isFinishClick = false;
return;
}
}
}
}
string InvoiceId = "AddJiaoJie_" + CurrentTimeMillis(); string InvoiceId = "AddJiaoJie_" + CurrentTimeMillis();
var f = SqlSugarHelper.Db.UseTran(() => var f = SqlSugarHelper.Db.UseTran(() =>
{ {
@ -357,35 +416,6 @@ namespace DM_Weight.ViewModels
Id = it.Id, Id = it.Id,
}).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand(); }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
////更新 交接柜 批次信息
//List<ChannelStock> jiaojieStock = Jiaojie_ChannelStocks.Where(cs => cs.DrugId == it.DrugId).ToList();
////交接柜中有该药品及批次的数据则更新;没有则插入一条
//if (jiaojieStock != null)
//{
// for (int j = 0; j < jiaojieStock.Count; j++)
// {
// if(it.Quantity> jiaojieStock[j].Quantity)
// {
// //取的数量够不够被
// }
// List<ChannelStock> searchStock = SqlSugarHelper.Db.Queryable<ChannelStock>()
// .Where(cs => cs.DrawerNo == jiaojieStock[j].DrawerNo
// && cs.DrugId == jiaojieStock[j].DrugId
// && cs.DrugId == it.DrugId
// && cs.ManuNo == it.ManuNo
// &&cs.MachineId==(ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5"))
// .ToList();
// //List<ChannelStock> stockManuList = jiaojieStock.Where(cs => cs.ManuNo == it.ManuNo).ToList();
// if (searchStock == null || searchStock.Count <= 0)
// {
// SqlSugarHelper.Db.Deleteable<ChannelStock>().Where(cs=>cs.DrawerNo== jiaojieStock[j].DrawerNo&&cs.DrugId== jiaojieStock[j].DrugId&&cs.Quantity<=0).ExecuteCommand();
// jiaojieStock[j].ManuNo = it.ManuNo;
// jiaojieStock[j].Id = Guid.NewGuid().ToString();
// SqlSugarHelper.Db.Insertable(jiaojieStock[j]).ExecuteCommand();
// }
// }
//}
// 保存数据 出库记录 // 保存数据 出库记录
SqlSugarHelper.Db.Insertable(new MachineRecord() SqlSugarHelper.Db.Insertable(new MachineRecord()
{ {
@ -408,31 +438,31 @@ 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];
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 == 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 == jiaoStock.DrugId && cs.TakeQuantity > 0).ToList(); List<ChannelStock> csStockList = record.Where(cs => cs.DrugId == Jiaojie_ChannelStocks[i].DrugId && cs.TakeQuantity > 0).ToList();
if (csStockList != null && csStockList.Count > 0) if (csStockList != null && csStockList.Count > 0)
{ {
for (int j = 0; j < csStockList.Count; j++) for (int j = 0; j < csStockList.Count; j++)
{ {
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 == jiaoStock.DrawerNo && cs.DrugId == jiaoStock.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();
logger.Info($"库中{jiaoStock.DrawerNo}号手术间,{jiaoStock.DrugId},{csStock.ManuNo};有该批次{jjStockManuNo!=null};jjStockManuNo是空{jjStockManuNo==null}"); logger.Info($"库中{Jiaojie_ChannelStocks[i].DrawerNo}号手术间,{Jiaojie_ChannelStocks[i].DrugId},{csStock.ManuNo};有该批次{jjStockManuNo != null};jjStockManuNo是空{jjStockManuNo == null}");
if (jjStockManuNo != null) if (jjStockManuNo != null)
{ {
int addNum = csStock.TakeQuantity; int addNum = csStock.TakeQuantity;
logger.Info($"需补药数{jiaoStock.NeedNum},该批次取药数{csStock.TakeQuantity}"); logger.Info($"需补药数{Jiaojie_ChannelStocks[i].NeedNum},该批次取药数{csStock.TakeQuantity}");
//有该批次 //有该批次
if (jiaoStock.NeedNum > csStock.TakeQuantity) if (Jiaojie_ChannelStocks[i].NeedNum > csStock.TakeQuantity)
{ {
//不够取 //不够取
ChannelStock newStock = new ChannelStock(); ChannelStock newStock = new ChannelStock();
//newStock.Chnguid = jiaoStock.Chnguid; //newStock.Chnguid = jiaoStock.Chnguid;
//newStock.BaseQuantity = jiaoStock.BaseQuantity; //newStock.BaseQuantity = jiaoStock.BaseQuantity;
newStock.ManuNo = jiaoStock.ManuNo; newStock.ManuNo = Jiaojie_ChannelStocks[i].ManuNo;
newStock.DrawerNo = jiaoStock.DrawerNo; newStock.DrawerNo = Jiaojie_ChannelStocks[i].DrawerNo;
newStock.DrugId = jiaoStock.DrugId; newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
newStock.AddToJJNum = addNum; newStock.AddToJJNum = addNum;
newStock.Id = jjStockManuNo.Id; newStock.Id = jjStockManuNo.Id;
//newStock.MachineId = jiaoStock.MachineId; //newStock.MachineId = jiaoStock.MachineId;
@ -440,7 +470,7 @@ namespace DM_Weight.ViewModels
//newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity; //newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity;
UpdateJJStock.Add(newStock); UpdateJJStock.Add(newStock);
csStockList[j].TakeQuantity = 0; csStockList[j].TakeQuantity = 0;
jiaoStock.NeedNum = jiaoStock.NeedNum - csStock.TakeQuantity; Jiaojie_ChannelStocks[i].NeedNum = Jiaojie_ChannelStocks[i].NeedNum - csStock.TakeQuantity;
} }
else else
{ {
@ -454,53 +484,53 @@ namespace DM_Weight.ViewModels
ChannelStock newStock = new ChannelStock(); ChannelStock newStock = new ChannelStock();
//newStock.Chnguid = jiaoStock.Chnguid; //newStock.Chnguid = jiaoStock.Chnguid;
//newStock.BaseQuantity = jiaoStock.BaseQuantity; //newStock.BaseQuantity = jiaoStock.BaseQuantity;
newStock.ManuNo = jiaoStock.ManuNo; newStock.ManuNo = Jiaojie_ChannelStocks[i].ManuNo;
newStock.DrawerNo = jiaoStock.DrawerNo; newStock.DrawerNo = Jiaojie_ChannelStocks[i].DrawerNo;
newStock.DrugId = jiaoStock.DrugId; newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
newStock.AddToJJNum = jiaoStock.NeedNum; newStock.AddToJJNum = Jiaojie_ChannelStocks[i].NeedNum;
newStock.Id = jjStockManuNo.Id; newStock.Id = jjStockManuNo.Id;
//newStock.MachineId = jiaoStock.MachineId; //newStock.MachineId = jiaoStock.MachineId;
//newStock.NeedNum = 0; //newStock.NeedNum = 0;
//newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity; //newStock.Quantity = jiaoStock.Quantity + csStock.TakeQuantity;
UpdateJJStock.Add(newStock); UpdateJJStock.Add(newStock);
csStockList[j].TakeQuantity = csStock.TakeQuantity - jiaoStock.NeedNum; csStockList[j].TakeQuantity = csStock.TakeQuantity - Jiaojie_ChannelStocks[i].NeedNum;
jiaoStock.NeedNum = 0; Jiaojie_ChannelStocks[i].NeedNum = 0;
break; break;
} }
} }
else //没有该批次 else //没有该批次
{ {
if (jiaoStock.NeedNum > csStock.TakeQuantity) if (Jiaojie_ChannelStocks[i].NeedNum > csStock.TakeQuantity)
{ {
//不够取 //不够取
ChannelStock newStock = new ChannelStock(); ChannelStock newStock = new ChannelStock();
newStock.BaseQuantity = jiaoStock.BaseQuantity; newStock.BaseQuantity = Jiaojie_ChannelStocks[i].BaseQuantity;
newStock.Chnguid = jiaoStock.Chnguid; newStock.Chnguid = Jiaojie_ChannelStocks[i].Chnguid;
newStock.DrawerNo = jiaoStock.DrawerNo; newStock.DrawerNo = Jiaojie_ChannelStocks[i].DrawerNo;
newStock.DrugId = jiaoStock.DrugId; newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
newStock.ManuNo = csStock.ManuNo; newStock.ManuNo = csStock.ManuNo;
newStock.AddToJJNum = csStock.TakeQuantity; newStock.AddToJJNum = csStock.TakeQuantity;
newStock.Id = Guid.NewGuid().ToString(); newStock.Id = Guid.NewGuid().ToString();
newStock.MachineId = jiaoStock.MachineId; newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
newStock.DrawerType = 1; newStock.DrawerType = 1;
newStock.NeedNum = 0; newStock.NeedNum = 0;
AddJJStock.Add(newStock); AddJJStock.Add(newStock);
jiaoStock.NeedNum = jiaoStock.NeedNum - csStock.TakeQuantity; Jiaojie_ChannelStocks[i].NeedNum = Jiaojie_ChannelStocks[i].NeedNum - csStock.TakeQuantity;
csStockList[j].TakeQuantity = 0; csStockList[j].TakeQuantity = 0;
} }
else else
{ {
//够取 //够取
ChannelStock newStock = new ChannelStock(); ChannelStock newStock = new ChannelStock();
newStock.Chnguid = jiaoStock.Chnguid; newStock.Chnguid = Jiaojie_ChannelStocks[i].Chnguid;
newStock.BaseQuantity = jiaoStock.BaseQuantity; newStock.BaseQuantity = Jiaojie_ChannelStocks[i].BaseQuantity;
newStock.DrawerNo = jiaoStock.DrawerNo; newStock.DrawerNo = Jiaojie_ChannelStocks[i].DrawerNo;
newStock.DrugId = jiaoStock.DrugId; newStock.DrugId = Jiaojie_ChannelStocks[i].DrugId;
newStock.ManuNo = csStock.ManuNo; newStock.ManuNo = csStock.ManuNo;
newStock.AddToJJNum = jiaoStock.NeedNum; newStock.AddToJJNum = Jiaojie_ChannelStocks[i].NeedNum;
newStock.NeedNum = 0; newStock.NeedNum = 0;
newStock.Id = Guid.NewGuid().ToString(); newStock.Id = Guid.NewGuid().ToString();
newStock.MachineId = jiaoStock.MachineId; newStock.MachineId = Jiaojie_ChannelStocks[i].MachineId;
newStock.DrawerType = 1; newStock.DrawerType = 1;
AddJJStock.Add(newStock); AddJJStock.Add(newStock);
csStockList[j].TakeQuantity = csStock.TakeQuantity - newStock.AddToJJNum; csStockList[j].TakeQuantity = csStock.TakeQuantity - newStock.AddToJJNum;
@ -511,7 +541,7 @@ namespace DM_Weight.ViewModels
} }
SqlSugarHelper.Db.Updateable<ChannelStock>() SqlSugarHelper.Db.Updateable<ChannelStock>()
.SetColumns(cs => new ChannelStock() { NeedNum = 0 }) .SetColumns(cs => new ChannelStock() { NeedNum = 0 })
.Where(cs => cs.DrawerNo == jiaoStock.DrawerNo) .Where(cs => cs.DrawerNo == Jiaojie_ChannelStocks[i].DrawerNo)
.ExecuteCommand(); .ExecuteCommand();
} }
@ -568,19 +598,20 @@ namespace DM_Weight.ViewModels
} }
} }
//更新交接柜状态为 已取药未入库(等在交接柜入库后再更新交接柜库存) //更新交接柜状态为 已取药未入库(等在交接柜入库后再更新交接柜库存)
List<ChannelStock> jiaojie = Jiaojie_ChannelStocks.GroupBy(cs => cs.DrawerNo).Select(cs => cs.FirstOrDefault()).ToList(); if (Jiaojie_ChannelStocks != null)
if (jiaojie != null && jiaojie.Count > 0)
{ {
for (int j = 0; j < jiaojie.Count; j++) Jiaojie_ChannelStocks.ForEach(jj =>
{ {
ChannelStock jiaojie_it = jiaojie[j];
//更新交接柜状态为 已取药未入库 //更新交接柜状态为 已取药未入库
SqlSugarHelper.Db.Updateable(new ChannelList() SqlSugarHelper.Db.Updateable(new ChannelList()
{ {
State = 1, State = 1,
Id = jiaojie_it.ChannelLst.Id Id = jj.ChannelLst.Id
}).UpdateColumns(it => it.State).ExecuteCommand(); }).UpdateColumns(it => it.State).ExecuteCommand();
} }
);
} }
return true; return true;
}); });

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class AddToJiaoJieNewDialogViewModel
{
}
}

View File

@ -39,24 +39,44 @@ namespace DM_Weight.ViewModels
public void OnNavigatedFrom(NavigationContext navigationContext) public void OnNavigatedFrom(NavigationContext navigationContext)
{ {
// 取消消息订阅 // 取消消息订阅
_eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent); //_eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
_eventAggregator.GetEvent<IsSelectedEvent>().Unsubscribe(SetIsSelected); //_eventAggregator.GetEvent<IsSelectedEvent>().Unsubscribe(SetIsSelected);
} }
private List<ChannelStock> channelStocks; private List<ChannelStock>? channelStocks;
public List<ChannelStock> ChannelStocks public List<ChannelStock>? ChannelStocks
{ {
get => channelStocks; get => channelStocks;
set => SetProperty(ref channelStocks, value); set => SetProperty(ref channelStocks, value);
} }
private ChannelStock _channelStock;
public ChannelStock _ChannelStock
{
get => _channelStock;
set => SetProperty(ref _channelStock, 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) public void OnNavigatedTo(NavigationContext navigationContext)
{ {
_eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent); //_eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
_eventAggregator.GetEvent<IsSelectedEvent>().Subscribe(SetIsSelected); //_eventAggregator.GetEvent<IsSelectedEvent>().Subscribe(SetIsSelected);
RequestData(); RequestData();
} }
private PortUtil _portUtil; private PortUtil _portUtil;
@ -70,26 +90,85 @@ namespace DM_Weight.ViewModels
} }
private void RequestData() private void RequestData()
{ {
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.BaseQuantity > cs.Quantity) // .Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["jj_machineId"] ?? "DM5") && cs.BaseQuantity > cs.Quantity)
.OrderBy(cs => cs.Chnguid) // .OrderBy(cs => cs.Chnguid)
.OrderBy(cs => cs.DrawerNo) // .OrderBy(cs => cs.DrawerNo)
.ToList(); // .ToList();
//ChannelStocks = ChannelStocks.GroupBy(it => new { it.DrawerNo, it.DrugId }) ////ChannelStocks = ChannelStocks.GroupBy(it => new { it.DrawerNo, it.DrugId })
// .Select(it => //// .Select(it =>
// { //// {
// 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();
ChannelStocks.ForEach(cs => cs.AddQuantity = cs.BaseQuantity - cs.Quantity); //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所有要补药的药箱
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.NeedNum > 0)
.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();
if (ChannelStocks != null && ChannelStocks.Count > 0)
{
ChannelStocks.ForEach(cs => cs.AddQuantity = cs.NeedNum);
//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]&&(cs.NeedNum>0||cs.AddToJJNum>0)).ToList());
if (channelList != null)
{
channelLists.Add(channelList);
}
}
_ChannelLists = channelLists;
}
else
{
_ChannelLists.Clear();
}
ICollectionView vw = CollectionViewSource.GetDefaultView(ChannelStocks);
vw.GroupDescriptions.Add(new PropertyGroupDescription("ChannelLst"));
} }
private int _status = 0; private int _status = 0;
@ -108,304 +187,304 @@ namespace DM_Weight.ViewModels
get => new DelegateCommand(() => RequestData()); get => new DelegateCommand(() => RequestData());
} }
//一键补药 //一键补药
public DelegateCommand OpenDragCommand //public DelegateCommand OpenDragCommand
{ //{
get => new DelegateCommand(() => // get => new DelegateCommand(() =>
{ // {
try // try
{ // {
Status = 1; // Status = 1;
IsEnable = false; // IsEnable = false;
var varDrawerNO = SqlSugarHelper.Db.Queryable<ChannelStock>() // var varDrawerNO = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM3")) // .Where(cs => cs.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM3"))
.GroupBy(cs => cs.DrawerNo).Select(DrawerNo => DrawerNo).ToList(); // .GroupBy(cs => cs.DrawerNo).Select(DrawerNo => DrawerNo).ToList();
iDrawerNoLst = varDrawerNO.Select(item => item.DrawerNo).ToList(); // iDrawerNoLst = varDrawerNO.Select(item => item.DrawerNo).ToList();
CurrentNum = 0; // CurrentNum = 0;
_portUtil.SpeakAsync($"正在打开 {iDrawerNoLst[CurrentNum]} 号抽屉"); // _portUtil.SpeakAsync($"正在打开 {iDrawerNoLst[CurrentNum]} 号抽屉");
_portUtil.WindowName = "AddToJiaoJieWindow"; // _portUtil.WindowName = "AddToJiaoJieWindow";
_portUtil.Operate = true; // _portUtil.Operate = true;
//_portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1; // //_portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1;
//_portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray(); // //_portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray();
_portUtil.DrawerNo = iDrawerNoLst[CurrentNum]; // _portUtil.DrawerNo = iDrawerNoLst[CurrentNum];
_portUtil.OpenAllDrawer(); // _portUtil.OpenAllDrawer();
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
AlertMsg alertMsg = new AlertMsg // AlertMsg alertMsg = new AlertMsg
{ // {
Message = $"补药异常{ex.Message}", // Message = $"补药异常{ex.Message}",
Type = MsgType.ERROR, // Type = MsgType.ERROR,
}; // };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); // _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"AddToJiaoJieWindowViewModel异常{ex.Message}"); // logger.Info($"AddToJiaoJieWindowViewModel异常{ex.Message}");
_portUtil.Operate = false; // _portUtil.Operate = false;
} // }
}); // });
} //}
void DoMyPrismEvent(DeviceMsg msg) //void DoMyPrismEvent(DeviceMsg msg)
{ //{
if (msg.WindowName == "AddToJiaoJieWindow") // if (msg.WindowName == "AddToJiaoJieWindow")
{ // {
switch (msg.EventType) // switch (msg.EventType)
{ // {
// 抽屉打开 // // 抽屉打开
case EventType.DRAWEROPEN: // case EventType.DRAWEROPEN:
if (Status == 1) // if (Status == 1)
{ // {
Status = 2; // Status = 2;
} // }
CurrentNum += 1; // CurrentNum += 1;
if (CurrentNum < iDrawerNoLst.Count) // if (CurrentNum < iDrawerNoLst.Count)
{ // {
_portUtil.WindowName = "AddToJiaoJieWindow"; // _portUtil.WindowName = "AddToJiaoJieWindow";
_portUtil.Operate = true; // _portUtil.Operate = true;
_portUtil.DrawerNo = iDrawerNoLst[CurrentNum]; // _portUtil.DrawerNo = iDrawerNoLst[CurrentNum];
_portUtil.OpenAllDrawer(); // _portUtil.OpenAllDrawer();
} // }
else // else
{ // {
_portUtil.GetAllDrawerLockState(); // _portUtil.GetAllDrawerLockState();
} // }
break; // break;
// 抽屉关闭 // // 抽屉关闭
case EventType.DRAWERCLOSE: // case EventType.DRAWERCLOSE:
if (Status == 2) // if (Status == 2)
{ // {
Status = 3; // Status = 3;
} // }
_portUtil.Operate = false; // _portUtil.Operate = false;
IsEnable = true; // IsEnable = true;
CurrentNum = 0; // CurrentNum = 0;
break; // break;
// 数量变化 // // 数量变化
case EventType.UPDATEQUANTITY: // case EventType.UPDATEQUANTITY:
if (Status == 2) // if (Status == 2)
{ // {
ChannelStocks.ForEach(it => it.AddQuantity = msg.Quantitys[it.ColNo - 1]); // ChannelStocks.ForEach(it => it.AddQuantity = msg.Quantitys[it.ColNo - 1]);
} // }
break; // break;
// 打开失败 // // 打开失败
case EventType.OPENERROR: // case EventType.OPENERROR:
AlertMsg alertMsg = new AlertMsg // AlertMsg alertMsg = new AlertMsg
{ // {
Message = msg.Message, // Message = msg.Message,
Type = MsgType.ERROR, // Type = MsgType.ERROR,
}; // };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); // _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
Status = 0; // Status = 0;
_portUtil.Operate = false; // _portUtil.Operate = false;
IsEnable = false; // IsEnable = false;
CurrentNum = 0; // CurrentNum = 0;
break; // break;
} // }
} // }
} //}
//完成按钮 //完成按钮
public DelegateCommand AddFinish //public DelegateCommand AddFinish
{ //{
get => new DelegateCommand(() => // get => new DelegateCommand(() =>
{ // {
if (ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).Count <= 0) // if (ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).Count <= 0)
{ // {
AlertMsg alertMsg = new AlertMsg // AlertMsg alertMsg = new AlertMsg
{ // {
Message = "请选择药箱", // Message = "请选择药箱",
Type = MsgType.SUCCESS, // Type = MsgType.SUCCESS,
}; // };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); // _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return; // return;
} // }
List<ChannelStock> jiaojieStocks = new List<ChannelStock>(); // List<ChannelStock> jiaojieStocks = new List<ChannelStock>();
List<ChannelStock> cs = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList(); // List<ChannelStock> cs = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
for (int i = 0; i < cs.Count; i++) // for (int i = 0; i < cs.Count; i++)
{ // {
ChannelStock copy = TransExpV2<ChannelStock, ChannelStock>.Trans(cs[i]); // ChannelStock copy = TransExpV2<ChannelStock, ChannelStock>.Trans(cs[i]);
jiaojieStocks.Add(copy); // jiaojieStocks.Add(copy);
} // }
csList = jiaojieStocks.FindAll(cs => cs.ChannelLst.IsSelected).GroupBy(cs => cs.DrugId).Select(g => new // csList = jiaojieStocks.FindAll(cs => cs.ChannelLst.IsSelected).GroupBy(cs => cs.DrugId).Select(g => new
{ // {
DrugId = g.Key, // DrugId = g.Key,
AddQuantity = g.Sum(s => s.AddQuantity) // AddQuantity = g.Sum(s => s.AddQuantity)
}).Select(cs => new ChannelStock() { DrugId = cs.DrugId, AddQuantity = cs.AddQuantity }).ToList(); // }).Select(cs => new ChannelStock() { DrugId = cs.DrugId, AddQuantity = cs.AddQuantity }).ToList();
List<ChannelStock> channelStocks = new List<ChannelStock>(); // List<ChannelStock> channelStocks = new List<ChannelStock>();
List<string> msg = new List<string>(); // List<string> msg = new List<string>();
for (int i = 0; i < csList.Count; i++) // for (int i = 0; i < csList.Count; i++)
{ // {
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"))
.Where(cs => cs.DrugId == csList[i].DrugId) // .Where(cs => cs.DrugId == csList[i].DrugId)
.OrderBy(cs => cs.EffDate) // .OrderBy(cs => cs.EffDate)
.OrderBy(cs => cs.DrawerNo) // .OrderBy(cs => cs.DrawerNo)
.ToList(); // .ToList();
int total = HasQChannels.Sum(it => it.Quantity); // int total = HasQChannels.Sum(it => it.Quantity);
int TakeQ = csList[i].AddQuantity; // int TakeQ = csList[i].AddQuantity;
// 说明数量足够 // // 说明数量足够
if (total >= TakeQ) // if (total >= TakeQ)
{ // {
for (int j = 0; TakeQ > 0; j++) // for (int j = 0; TakeQ > 0; j++)
{ // {
ChannelStock stock = HasQChannels[j]; // ChannelStock stock = HasQChannels[j];
if (TakeQ > stock.Quantity) // if (TakeQ > stock.Quantity)
{ // {
stock.TakeQuantity = stock.Quantity; // stock.TakeQuantity = stock.Quantity;
channelStocks.Add(stock); // channelStocks.Add(stock);
TakeQ -= stock.Quantity; // TakeQ -= stock.Quantity;
} // }
else // else
{ // {
stock.TakeQuantity = TakeQ; // stock.TakeQuantity = TakeQ;
channelStocks.Add(stock); // channelStocks.Add(stock);
TakeQ = 0; // TakeQ = 0;
} // }
} // }
} // }
else // else
{ // {
msg.Add($"药品【{ChannelStocks[i].DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】"); // msg.Add($"药品【{ChannelStocks[i].DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】");
} // }
} // }
if (msg.Count > 0) // if (msg.Count > 0)
{ // {
DialogParameters dialogParameters = new DialogParameters(); // DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("msgInfo", msg); // dialogParameters.Add("msgInfo", msg);
DialogServiceExtensions.ShowDialogHost(_dialogService, "ShowMessageDialog", dialogParameters, "RootDialog"); // DialogServiceExtensions.ShowDialogHost(_dialogService, "ShowMessageDialog", dialogParameters, "RootDialog");
return; // return;
} // }
else // else
{ // {
channelStocks.Sort((a, b) => // channelStocks.Sort((a, b) =>
{ // {
if ((a.DrawerNo - b.DrawerNo) == 0) // if ((a.DrawerNo - b.DrawerNo) == 0)
{ // {
return a.ColNo - b.ColNo; // return a.ColNo - b.ColNo;
} // }
return a.DrawerNo - b.DrawerNo; // return a.DrawerNo - b.DrawerNo;
}); // });
} // }
List<ChannelStock> record = channelStocks.FindAll(it => it.TakeQuantity > 0).ToList(); // List<ChannelStock> record = channelStocks.FindAll(it => it.TakeQuantity > 0).ToList();
if (record.Count > 0) // if (record.Count > 0)
{ // {
string InvoiceId = "AddJiaoJie_" + CurrentTimeMillis(); // string InvoiceId = "AddJiaoJie_" + CurrentTimeMillis();
var f = SqlSugarHelper.Db.UseTran(() => // var f = SqlSugarHelper.Db.UseTran(() =>
{ // {
for (int i = 0; i < record.Count; i++) // for (int i = 0; i < record.Count; i++)
{ // {
ChannelStock it = record[i]; // ChannelStock it = record[i];
// 更新数据 库存信息 // // 更新数据 库存信息
SqlSugarHelper.Db.Updateable(new ChannelStock() // SqlSugarHelper.Db.Updateable(new ChannelStock()
{ // {
Quantity = it.Quantity - it.TakeQuantity, // Quantity = it.Quantity - it.TakeQuantity,
ManuNo = it.ManuNo, // ManuNo = it.ManuNo,
EffDate = it.EffDate, // EffDate = it.EffDate,
Id = it.Id, // Id = it.Id,
}).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand(); // }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand();
//更新 交接柜 库存信息 // //更新 交接柜 库存信息
List<ChannelStock> jiaojie = jiaojieStocks.Where(cs => cs.DrugId == it.DrugId).ToList(); // List<ChannelStock> jiaojie = jiaojieStocks.Where(cs => cs.DrugId == it.DrugId).ToList();
if (jiaojie != null && jiaojie.Count > 0) // if (jiaojie != null && jiaojie.Count > 0)
{ // {
for (int j = 0; j < jiaojie.Count; j++) // for (int j = 0; j < jiaojie.Count; j++)
{ // {
// 更新数据 交接柜 库存信息 // // 更新数据 交接柜 库存信息
ChannelStock jiaojie_it = jiaojie[j]; // ChannelStock jiaojie_it = jiaojie[j];
SqlSugarHelper.Db.Updateable(new ChannelStock() // SqlSugarHelper.Db.Updateable(new ChannelStock()
{ // {
Quantity = jiaojie_it.BaseQuantity, // Quantity = jiaojie_it.BaseQuantity,
//ManuNo = it.ManuNo, // //ManuNo = it.ManuNo,
//EffDate = it.EffDate, // //EffDate = it.EffDate,
Id = jiaojie_it.Id, // Id = jiaojie_it.Id,
}).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).ExecuteCommand(); // }).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).ExecuteCommand();
} // }
} // }
// 保存数据 出库记录 // // 保存数据 出库记录
SqlSugarHelper.Db.Insertable(new MachineRecord() // SqlSugarHelper.Db.Insertable(new MachineRecord()
{ // {
MachineId = it.MachineId, // MachineId = it.MachineId,
DrawerNo = it.DrawerNo, // DrawerNo = it.DrawerNo,
ColNo = it.ColNo, // ColNo = it.ColNo,
DrugId = it.DrugId, // DrugId = it.DrugId,
ManuNo = it.ManuNo, // ManuNo = it.ManuNo,
EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null, // EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null,
Operator = HomeWindowViewModel.Operator?.Id, // Operator = HomeWindowViewModel.Operator?.Id,
Reviewer = HomeWindowViewModel.Reviewer?.Id, // Reviewer = HomeWindowViewModel.Reviewer?.Id,
OperationTime = DateTime.Now, // OperationTime = DateTime.Now,
Quantity = it.TakeQuantity, // Quantity = it.TakeQuantity,
Type = 2, // Type = 2,
InvoiceId = InvoiceId // InvoiceId = InvoiceId
}).ExecuteCommand(); // }).ExecuteCommand();
} // }
return true; // return true;
}); // });
if (f.Data) // if (f.Data)
{ // {
// 更新屏显库存 // // 更新屏显库存
List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 5); // List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 5);
if (singleChannels.Count > 0) // if (singleChannels.Count > 0)
{ // {
singleChannels.ForEach(it => // singleChannels.ForEach(it =>
{ // {
_portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity); // _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.Quantity - it.TakeQuantity);
}); // });
} // }
AlertMsg alertMsg = new AlertMsg // AlertMsg alertMsg = new AlertMsg
{ // {
Message = "补药完成,库存已更新", // Message = "补药完成,库存已更新",
Type = MsgType.SUCCESS, // Type = MsgType.SUCCESS,
}; // };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); // _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
RequestData(); // RequestData();
} // }
if (!f.IsSuccess) // if (!f.IsSuccess)
{ // {
AlertMsg alertMsg = new AlertMsg // AlertMsg alertMsg = new AlertMsg
{ // {
Message = "补药操作失败,库存更新失败!", // Message = "补药操作失败,库存更新失败!",
Type = MsgType.ERROR, // Type = MsgType.ERROR,
}; // };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); // _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
} // }
} // }
else // else
{ // {
AlertMsg alertMsg = new AlertMsg // AlertMsg alertMsg = new AlertMsg
{ // {
Message = "补药数量有误", // Message = "补药数量有误",
Type = MsgType.ERROR // Type = MsgType.ERROR
}; // };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); // _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
} // }
}); // });
} //}
//取消 //取消
public DelegateCommand CancleAdd //public DelegateCommand CancleAdd
{ //{
get => new DelegateCommand(() => // get => new DelegateCommand(() =>
{ // {
_portUtil.ResetData(); // _portUtil.ResetData();
Status = 0; // Status = 0;
IsEnable = true; // IsEnable = true;
CurrentNum = 0; // CurrentNum = 0;
}); // });
} //}
public DelegateCommand RejectReport_Download public DelegateCommand RejectReport_Download
@ -437,14 +516,16 @@ namespace DM_Weight.ViewModels
// DrugId = g.Key, AddQuantity = g.Sum(s => s.AddQuantity) // DrugId = g.Key, AddQuantity = g.Sum(s => s.AddQuantity)
//}).Select(cs=>new ChannelStock() { DrugId=cs.DrugId,AddQuantity=cs.AddQuantity }).ToList(); //}).Select(cs=>new ChannelStock() { DrugId=cs.DrugId,AddQuantity=cs.AddQuantity }).ToList();
csList = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList(); csList = _ChannelList.channelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
if (csList != null && csList.Count > 0) if (csList != null && csList.Count > 0)
{ {
// 此处延时1毫秒等待页面渲染 // 此处延时1毫秒等待页面渲染
await Task.Delay(TimeSpan.FromMilliseconds(1)); await Task.Delay(TimeSpan.FromMilliseconds(1));
DialogParameters dialogParameters = new DialogParameters(); DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("ChannelStocks", csList); dialogParameters.Add("_ChannelStock", csList);
//List<string> drugIdLst = ChannelStocks.FindAll(cs => cs.DrawerNo == _ChannelStock.DrawerNo).Select(cs => cs.DrugId).ToList();
//dialogParameters.Add("drugIdLst", drugIdLst);
DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog"); DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog");
} }
@ -470,38 +551,61 @@ namespace DM_Weight.ViewModels
//} //}
//MessageBox.Show("返回值:" + dialogResult.Result.ToString()); //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
} }
int AddToJiaoJieClickNum = 1; //int AddToJiaoJieClickNum = 1;
//设置选中药箱的复选框状态 ////设置选中药箱的复选框状态
private void SetIsSelected(ChannelStock channelStock) //private void SetIsSelected(ChannelStock channelStock)
//{
// if (channelStock != null)
// {
// //channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected;
// if (channelStock.ChannelLst.State == 0)
// {
// channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected;
// }
// else
// {
// return;
// }
// if (_ChannelList.channelStocks != null && _ChannelList.channelStocks != null)
// {
// _ChannelList.channelStocks = _ChannelList.channelStocks.Select(x =>
// {
// for (int i = 0; i < _ChannelList.channelStocks.Count; i++)
// {
// if (_ChannelList.channelStocks[i].DrawerNo == channelStock.DrawerNo)
// {
// _ChannelList.channelStocks[i].ChannelLst = channelStock.ChannelLst;
// }
// else
// {
// _ChannelList.channelStocks[i].ChannelLst.IsSelected = false;
// }
// }
// return x;
// }).ToList();
// }
// ICollectionView vw = CollectionViewSource.GetDefaultView(_ChannelList.channelStocks);
// vw.GroupDescriptions.Add(new PropertyGroupDescription("ChannelLst"));
// }
//}
private DelegateCommand _rowSelected;
public DelegateCommand RowSelected => _rowSelected ??= new DelegateCommand(OpenOrderDialog);
public async void OpenOrderDialog()
{ {
if (channelStock != null) if (_ChannelList != null && _ChannelList.channelStocks != null && _ChannelList.State == 0)
{ {
//channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected; // 此处延时1毫秒等待页面渲染
if (channelStock.ChannelLst.State == 0) await Task.Delay(TimeSpan.FromMilliseconds(1));
{ //选中药箱号下的所有药品id
channelStock.ChannelLst.IsSelected = !channelStock.ChannelLst.IsSelected; DialogParameters dialogParameters = new DialogParameters();
} dialogParameters.Add("_ChannelStock", _ChannelList.channelStocks);
else DialogServiceExtensions.ShowDialogHost(_dialogService, "AddToJiaoJieDialog", dialogParameters, DoDialogResult, "RootDialog");
{
return;
}
if (channelStock != null && ChannelStocks != null)
{
ChannelStocks = ChannelStocks.Select(x =>
{
for (int i = 0; i < ChannelStocks.Count; i++)
{
if (ChannelStocks[i].DrawerNo == channelStock.DrawerNo)
{
ChannelStocks[i].ChannelLst = channelStock.ChannelLst;
}
}
return x;
}).ToList();
}
ICollectionView vw = CollectionViewSource.GetDefaultView(ChannelStocks);
vw.GroupDescriptions.Add(new PropertyGroupDescription("ChannelLst"));
} }
} }
} }
} }

View File

@ -10,6 +10,21 @@
xmlns:prism="http://prismlibrary.com/" xmlns:prism="http://prismlibrary.com/"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"> 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>
<Grid.Resources> <Grid.Resources>
<!--<CollectionViewSource x:Key="GroupedDataList" Source="{Binding ChannelStocks}"> <!--<CollectionViewSource x:Key="GroupedDataList" Source="{Binding ChannelStocks}">
@ -21,6 +36,19 @@
<convert:TotalCountConverter x:Key="TotalCountConverter" /> <convert:TotalCountConverter x:Key="TotalCountConverter" />
<convert:StatusConverter x:Key="StatusConverter" /> <convert:StatusConverter x:Key="StatusConverter" />
<convert:StockStatusConverter x:Key="StockStatusConverter" /> <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.Resources>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@ -73,12 +101,12 @@
Style="{StaticResource MaterialDesignOutlinedLightButton}" Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="账册报表" /> Content="账册报表" />
<Button <!--<Button
Margin="3 0 3 0" Margin="3 0 3 0"
VerticalAlignment="Center" VerticalAlignment="Center"
Command="{Binding TakeDrugCommand}" Command="{Binding TakeDrugCommand}"
Style="{StaticResource MaterialDesignOutlinedLightButton}" Style="{StaticResource MaterialDesignOutlinedLightButton}"
Content="取药" /> Content="取药" />-->
<Button <Button
Margin="6 0 6 0" Margin="6 0 6 0"
@ -92,7 +120,7 @@
</Grid> </Grid>
<DataGrid <!--<DataGrid
Grid.Row="1" Grid.Row="1"
materialDesign:DataGridAssist.ColumnHeaderPadding="15" materialDesign:DataGridAssist.ColumnHeaderPadding="15"
ItemsSource="{Binding ChannelStocks,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding ChannelStocks,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
@ -110,7 +138,8 @@
<Setter Property="BorderThickness" Value="0.6"/> <Setter Property="BorderThickness" Value="0.6"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style> </Style>
<!--<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}"> -->
<!--<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
<Style.Triggers> <Style.Triggers>
<Trigger Property="IsReadOnly" Value="True"> <Trigger Property="IsReadOnly" Value="True">
<Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="BorderBrush" Value="Transparent" />
@ -119,6 +148,7 @@
</Style.Triggers> </Style.Triggers>
<Setter Property="HorizontalAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>--> </Style>-->
<!--
<Style TargetType="DataGridCell"> <Style TargetType="DataGridCell">
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
@ -166,12 +196,94 @@
<DataGridTextColumn IsReadOnly="True" Header="药品名称" Binding="{Binding DrugInfo.DrugName}"/> <DataGridTextColumn IsReadOnly="True" Header="药品名称" Binding="{Binding DrugInfo.DrugName}"/>
<DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding DrugInfo.DrugSpec}"/> <DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding DrugInfo.DrugSpec}"/>
<DataGridTextColumn IsReadOnly="True" Header="厂家" Binding="{Binding DrugInfo.Manufactory}"/> <DataGridTextColumn IsReadOnly="True" Header="厂家" Binding="{Binding DrugInfo.Manufactory}"/>
<DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding ManuNo}"/> -->
<!--<DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding ManuNo}"/>-->
<!--
<DataGridTextColumn IsReadOnly="True" Header="药品基数" Binding="{Binding BaseQuantity}"/> <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 ChannelLst.State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"/> <DataGridTextColumn IsReadOnly="True" Header="状态" Binding="{Binding ChannelLst.State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"/>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>-->
<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="NeedNum" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"
Header="状态"/>
<!--<GridViewColumn Width="200"
DisplayMemberBinding="{Binding Drug.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="200"
DisplayMemberBinding="{Binding Drug.Manufactory}"
Header="厂家"/>
<GridViewColumn Width="200"
DisplayMemberBinding="{Binding Drug.DrugSpec}"
Header="规格"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding BaseQuantity}"
Header="药品基数"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding BaseQuantity}"
Header="需补药数量"/>-->
</GridView>
</ListView.View>
</ListView>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@ -23,42 +23,42 @@ namespace DM_Weight.Views
/// </summary> /// </summary>
public partial class AddToJiaoJieWindow : UserControl public partial class AddToJiaoJieWindow : UserControl
{ {
IEventAggregator _eventAggregator; //IEventAggregator _eventAggregator;
public AddToJiaoJieWindow(IEventAggregator eventAggregator) public AddToJiaoJieWindow()
{ {
InitializeComponent(); InitializeComponent();
_eventAggregator = eventAggregator; //_eventAggregator = eventAggregator;
} }
//展开 //展开
private void Expander_Expanded(object sender, RoutedEventArgs e) //private void Expander_Expanded(object sender, RoutedEventArgs e)
{ //{
//Expander expander = sender as Expander; // //Expander expander = sender as Expander;
//if (expander != null) // //if (expander != null)
//{ // //{
// // 假设你的数据在DataContext中 // // // 假设你的数据在DataContext中
// List<ChannelStock> data = expander.DataContext as List<ChannelStock>; // // List<ChannelStock> data = expander.DataContext as List<ChannelStock>;
// if (data != null&&data.Count>0) // // if (data != null&&data.Count>0)
// { // // {
// // 使用data做你需要的操作 // // // 使用data做你需要的操作
// } // // }
//} // //}
} //}
//收起 //收起
private void Expander_Collapsed(object sender, RoutedEventArgs e) //private void Expander_Collapsed(object sender, RoutedEventArgs e)
{ //{
Expander expander = sender as Expander; // Expander expander = sender as Expander;
if (expander != null) // if (expander != null)
{ // {
// 假设你的数据在DataContext中 // // 假设你的数据在DataContext中
CollectionViewGroup group = expander.DataContext as CollectionViewGroup; // CollectionViewGroup group = expander.DataContext as CollectionViewGroup;
if (group != null) // if (group != null)
{ // {
ChannelStock internalGroup = group.Items[0] as ChannelStock; // ChannelStock internalGroup = group.Items[0] as ChannelStock;
_eventAggregator.GetEvent<IsSelectedEvent>().Publish(internalGroup); // _eventAggregator.GetEvent<IsSelectedEvent>().Publish(internalGroup);
} // }
} // }
} //}
} }
} }

View File

@ -75,7 +75,7 @@
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
/> />
<DataGridTextColumn Width="100" <DataGridTextColumn Width="100"
Header="数量" Header="库存"
IsReadOnly="True" IsReadOnly="True"
Binding="{Binding Quantity}" Binding="{Binding Quantity}"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}" ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
@ -95,13 +95,25 @@
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}" ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
/> />
<DataGridTextColumn Width="100" <!--<DataGridTextColumn Width="100"
Header="取出数量" Header="取出数量"
IsReadOnly="True" IsReadOnly="True"
Binding="{Binding TakeQuantity}" Binding="{Binding TakeQuantity}"
ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}" ElementStyle="{StaticResource MaterialDesignDataGridTextColumnStyle}"
EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}"
/> />-->
<DataGridTemplateColumn Header="取出数量">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Width="80" Style="{StaticResource MaterialDesignDataGridTextColumnEditingStyle}">
<TextBox.Text>
<Binding Path="TakeQuantity" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
</Binding>
</TextBox.Text>
</TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
<Grid Grid.Row="2"> <Grid Grid.Row="2">
@ -147,6 +159,9 @@
</StackPanel> </StackPanel>
</Grid> </Grid>
<materialDesign:Snackbar
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>
</Grid> </Grid>
</materialDesign:Card> </materialDesign:Card>
</UserControl> </UserControl>

View File

@ -0,0 +1,174 @@
<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>

View File

@ -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.Dialog
{
/// <summary>
/// AddToJiaoJieNewDialog.xaml 的交互逻辑
/// </summary>
public partial class AddToJiaoJieNewDialog : UserControl
{
public AddToJiaoJieNewDialog()
{
InitializeComponent();
}
}
}