交接柜补药页面启用channnel_list表

This commit is contained in:
maqiao 2025-04-11 13:39:50 +08:00
parent 1d27a080fa
commit 7e91a2136b
7 changed files with 382 additions and 246 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 啦!也就是说,程序并不会因为这次的异常而崩溃退出。--><!--

View File

@ -209,5 +209,12 @@ namespace DM_Weight.Models
private string _drugSpec; private string _drugSpec;
[SugarColumn(ColumnName = "drug_manu_no")] [SugarColumn(ColumnName = "drug_manu_no")]
public string DrugSpec { get=> _drugSpec;set=>SetProperty(ref _drugSpec, value); } public string DrugSpec { get=> _drugSpec;set=>SetProperty(ref _drugSpec, value); }
[SugarColumn(ColumnName = "Stock_Quantity")]
public int BaseQuantity
{
get; set;
}
} }
} }

View File

@ -27,12 +27,25 @@ namespace DM_Weight.ViewModels
private readonly ILog logger = LogManager.GetLogger(typeof(AdditionWindowViewModel)); private readonly ILog logger = LogManager.GetLogger(typeof(AdditionWindowViewModel));
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 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);
}
List<ChannelStock> selectedStock = new List<ChannelStock>(); List<ChannelStock> selectedStock = new List<ChannelStock>();
private object _finishStatus = Visibility.Collapsed; private object _finishStatus = Visibility.Collapsed;
public object FinishStatus public object FinishStatus
@ -40,7 +53,7 @@ namespace DM_Weight.ViewModels
get => _finishStatus; get => _finishStatus;
set => SetProperty(ref _finishStatus, value); set => SetProperty(ref _finishStatus, value);
} }
private bool _openStatusBtn =false; private bool _openStatusBtn = false;
public bool OpenStatusBtn public bool OpenStatusBtn
{ {
get => _openStatusBtn; get => _openStatusBtn;
@ -51,12 +64,12 @@ namespace DM_Weight.ViewModels
//private PortUtil _portUtil; //private PortUtil _portUtil;
SocketHelper _socketHelper; SocketHelper _socketHelper;
public AdditionWindowViewModel(IEventAggregator eventAggregator,SocketHelper socketHelper) public AdditionWindowViewModel(IEventAggregator eventAggregator, SocketHelper socketHelper)
{ {
//_dialogService = dialogService; //_dialogService = dialogService;
_eventAggregator = eventAggregator; _eventAggregator = eventAggregator;
//_portUtil = portUtil; //_portUtil = portUtil;
_socketHelper= socketHelper; _socketHelper = socketHelper;
} }
public bool IsNavigationTarget(NavigationContext navigationContext) public bool IsNavigationTarget(NavigationContext navigationContext)
{ {
@ -70,11 +83,13 @@ namespace DM_Weight.ViewModels
public void OnNavigatedTo(NavigationContext navigationContext) public void OnNavigatedTo(NavigationContext navigationContext)
{ {
_eventAggregator.GetEvent<IsSelectedEvent>().Subscribe(SetIsSelected); //_eventAggregator.GetEvent<IsSelectedEvent>().Subscribe(SetIsSelected);
RequestData(); RequestData();
} }
private void RequestData() private void RequestData()
{ {
_ChannelLists?.Clear();
ChannelStocks?.Clear();
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)
@ -83,21 +98,54 @@ namespace DM_Weight.ViewModels
.OrderBy(cs => cs.DrawerNo) .OrderBy(cs => cs.DrawerNo)
.OrderBy(cs => cs.DrugId) .OrderBy(cs => cs.DrugId)
.ToList(); .ToList();
//ChannelStocks= ChannelStocks.GroupBy(it=>new {it.DrawerNo,it.DrugId}) if (ChannelStocks != null && ChannelStocks.Count > 0)
// .Select(it=> {
// { //2)查询channel_list将1中查询的添加到channel_list的channel_stock里供页面呈现显示
// var ret = it.First(); List<int> DrawerNoList = ChannelStocks.Select(cs => cs.DrawerNo).Distinct().ToList();
// ret.Quantity = it.Sum(itx => itx.Quantity); List<ChannelList> channelLists = new List<ChannelList>();
// return ret; for (int i = 0; i < DrawerNoList.Count; i++)
// }).ToList(); {
//ChannelStocks.ForEach(cs => cs.AddQuantity = cs.BaseQuantity - cs.Quantity); ChannelList 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)
{
channelList.State = 1;//统一将所有的状态设置为已取药待入库
channelLists.Add(channelList);
}
}
_ChannelLists = channelLists;
}
else
{
_ChannelLists = null;
}
} }
//开药箱放入药品 //开药箱放入药品
public DelegateCommand OpenBoxCommand public DelegateCommand OpenBoxCommand
{ {
get => new DelegateCommand(() => get => new DelegateCommand(() =>
{ {
selectedStock = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList(); if (_ChannelList == null || _ChannelList.channelStocks == null)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请先选择数据行",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
//selectedStock = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList();
selectedStock = _ChannelList.channelStocks.ToList();
if (selectedStock != null && selectedStock.Count > 0) if (selectedStock != null && selectedStock.Count > 0)
{ {
selectedStock.ForEach(cs => cs.ChannelLst.State = 2); selectedStock.ForEach(cs => cs.ChannelLst.State = 2);
@ -168,7 +216,7 @@ namespace DM_Weight.ViewModels
// //ModbusHelper.SpeakAsync("请及时关闭药箱"); // //ModbusHelper.SpeakAsync("请及时关闭药箱");
// i = 10; // i = 10;
//} //}
OpenStatusBtn =true; OpenStatusBtn = true;
next(); next();
} }
else else
@ -245,39 +293,45 @@ namespace DM_Weight.ViewModels
// jiaojie_it.Quantity = jiaojie_it.AddToJJNum; // jiaojie_it.Quantity = jiaojie_it.AddToJJNum;
// jiaojie_it.NeedNum = 0; // jiaojie_it.NeedNum = 0;
// jiaojie_it.AddToJJNum = 0; // jiaojie_it.AddToJJNum = 0;
//SqlSugarHelper.Db.Updateable(new ChannelStock() //SqlSugarHelper.Db.Updateable(new ChannelStock()
//{ //{
// Quantity = jiaojie_it.AddToJJNum, // Quantity = jiaojie_it.AddToJJNum,
// ManuNo = jiaojie_it.ManuNo, // ManuNo = jiaojie_it.ManuNo,
// //EffDate = it.EffDate, // //EffDate = it.EffDate,
// //Id = jiaojie_it.Id, // //Id = jiaojie_it.Id,
// DrugId=jiaojie_it.DrugId, // DrugId=jiaojie_it.DrugId,
// DrawerNo=jiaojie_it.DrawerNo, // DrawerNo=jiaojie_it.DrawerNo,
// MachineId=jiaojie_it.MachineId, // MachineId=jiaojie_it.MachineId,
//}).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).WhereColumns(jiaojie_it=>new { jiaojie_it.DrugId, jiaojie_it.DrawerNo, jiaojie_it.MachineId }).ExecuteCommand(); //}).UpdateColumns(jiaojie_it => new { jiaojie_it.Quantity }).WhereColumns(jiaojie_it=>new { jiaojie_it.DrugId, jiaojie_it.DrawerNo, jiaojie_it.MachineId }).ExecuteCommand();
//} //}
selectedStock.ForEach(cs => selectedStock.ForEach(cs =>
{ {
cs.Quantity = cs.Quantity+cs.AddToJJNum; cs.Quantity = cs.Quantity + cs.AddToJJNum;
cs.NeedNum= 0; cs.NeedNum = 0;
cs.AddToJJNum = 0; cs.AddToJJNum = 0;
}); });
SqlSugarHelper.Db.Updateable(selectedStock).ExecuteCommand(); SqlSugarHelper.Db.Updateable(selectedStock).ExecuteCommand();
// 更新交接柜状态为 已取药未入库
List<ChannelStock> jiaojie = selectedStock.GroupBy(cs => cs.DrawerNo).Select(cs => cs.FirstOrDefault()).ToList(); SqlSugarHelper.Db.Updateable(new ChannelList()
if (jiaojie != null && jiaojie.Count > 0)
{ {
for (int j = 0; j < jiaojie.Count; j++) State = 0
{ }).UpdateColumns(it => it.State).Where(it => it.DrawerNo == _ChannelList.DrawerNo).ExecuteCommand();
ChannelStock jiaojie_it = jiaojie[j];
ChannelList jiaojieList = new ChannelList(); //List<ChannelStock> jiaojie = selectedStock.GroupBy(cs => cs.DrugId).Select(cs => cs.FirstOrDefault()).ToList();
jiaojieList.State = 0; //if (jiaojie != null && jiaojie.Count > 0)
jiaojieList.Id = jiaojie_it.ChannelLst.Id; //{
//更新交接柜状态为0 // for (int j = 0; j < jiaojie.Count; j++)
var result = SqlSugarHelper.Db.Updateable(jiaojieList) // {
.UpdateColumns(it => new { it.State, it.Id }).ExecuteCommand(); // ChannelStock jiaojie_it = jiaojie[j];
} // ChannelList jiaojieList = new ChannelList();
} // jiaojieList.State = 0;
// jiaojieList.Id = jiaojie_it.ChannelLst.Id;
// //更新交接柜状态为0
// var result = SqlSugarHelper.Db.Updateable(jiaojieList)
// .UpdateColumns(it => new { it.State, it.Id }).ExecuteCommand();
// }
//}
} }
}); });
if (f.Data) if (f.Data)

View File

@ -50,30 +50,70 @@ namespace DM_Weight.ViewModels
set => SetProperty(ref _snackbarMessageQueue, value); set => SetProperty(ref _snackbarMessageQueue, value);
} }
private List<ChannelStock>? _channels; private List<ChannelList>? _channelLists;
public List<ChannelStock>? Channels public List<ChannelList>? _ChannelLists
{ {
get => _channels; get => _channelLists;
set => SetProperty(ref _channels, value); set => SetProperty(ref _channelLists, value);
} }
private ChannelList? _channelList;
private ChannelStock _channelStock; public ChannelList? _ChannelList
public ChannelStock Channel
{ {
get { return _channelStock; } get => _channelList;
set set
{ {
if (value != null) if (value != null)
{ {
DrugInfo = DrugInfos.Where(di => di.DrugId == value.DrugInfo.DrugId).First(); DrugInfo = DrugInfos.Where(di => di.DrugId == value.Drug.DrugId).First();
BaseQuantity = value.BaseQuantity.ToString(); BaseQuantity = value.BaseQuantity.ToString();
//DrugManuNo = DrugManuNos.Where(dm => dm.DrugId == value.DrugId && dm.ManuNo == value.ManuNo).First();
} }
SetProperty(ref _channelStock, value); SetProperty(ref _channelList, value);
} }
} }
//private List<ChannelStock>? _channels;
//public List<ChannelStock>? Channels
//{
// get => _channels;
// set => SetProperty(ref _channels, value);
//}
//private ChannelStock _channelStock;
//public ChannelStock Channel
//{
// get { return _channelStock; }
// set
// {
// if (value != null)
// {
// DrugInfo = DrugInfos.Where(di => di.DrugId == value.DrugInfo.DrugId).First();
// BaseQuantity = value.BaseQuantity.ToString();
// //DrugManuNo = DrugManuNos.Where(dm => dm.DrugId == value.DrugId && dm.ManuNo == value.ManuNo).First();
// }
// SetProperty(ref _channelStock, value);
// }
//}
//private DrugManuNo? _drugManuNo;
//public DrugManuNo? DrugManuNo
//{
// get => _drugManuNo;
// set => SetProperty(ref _drugManuNo, value);
//}
//private List<DrugManuNo>? _drugManuNos;
//public List<DrugManuNo>? DrugManuNos
//{
// get => _drugManuNos;
// set => SetProperty(ref _drugManuNos, value);
//}
private List<DrugInfo>? _drugInfos; private List<DrugInfo>? _drugInfos;
@ -90,6 +130,18 @@ namespace DM_Weight.ViewModels
set set
{ {
SetProperty(ref _drugInfo, value); SetProperty(ref _drugInfo, value);
//if (_drugInfo != null)
//{
// DrugManuNos = SqlSugarHelper.Db.Queryable<DrugManuNo>().Where(m => m.DrugId == _drugInfo.DrugId.ToString()).ToList();
// if (DrugManuNos != null)
// {
// DrugManuNo = DrugManuNos[0];
// }
//}
//else
//{
// DrugManuNo = null;
//}
} }
} }
//药品基数 //药品基数
@ -120,26 +172,36 @@ namespace DM_Weight.ViewModels
private void RequestData() private void RequestData()
{ {
Channels?.Clear(); _ChannelLists?.Clear();
BaseQuantity = ""; BaseQuantity = "";
var list = SqlSugarHelper.Db.Queryable<ChannelStock>() var list = SqlSugarHelper.Db.Queryable<ChannelList>()
//.Includes(cl => cl.channelStocks, cs => cs.DrugInfo,di=>di.drugBase) //.Includes(cl => cl.channelStocks, cs => cs.DrugInfo,di=>di.drugBase)
.Includes(cs => cs.DrugInfo) .Includes(cl => cl.channelStocks)
.Where(cs => cs.MachineId.Equals("DM5")) .Includes(cl => cl.Drug)
.Where(cs => cs.DrawerNo == DrawerNo + 1).ToList(); .Where(cl => cl.MachineId.Equals("DM5"))
.Where(cl => cl.DrawerNo == DrawerNo + 1)
.OrderBy(cl => cl.DrugId).ToList();
//if (list != null && list.Count > 0)
//{
// Channels = list.GroupBy(cs =>new { cs.DrugId, cs.ManuNo }).Select(cs =>
// {
// var ret = cs.First();
// ret.Quantity = cs.Sum(itx => itx.Quantity);
// return ret;
// }).ToList();
//}
//else
//{
// Channels = null;
//}
if (list != null && list.Count > 0) if (list != null && list.Count > 0)
{ {
Channels = list.GroupBy(cs => cs.DrugId).Select(cs => _ChannelLists = list;
{
var ret = cs.First();
ret.Quantity = cs.Sum(itx => itx.Quantity);
return ret;
}).ToList();
} }
else else
{ {
Channels = null; _ChannelLists = null;
} }
} }
@ -202,9 +264,9 @@ namespace DM_Weight.ViewModels
SnackbarMessageQueue.Enqueue("药品基数请输入正确的整数"); SnackbarMessageQueue.Enqueue("药品基数请输入正确的整数");
return; return;
} }
if (Channels != null) if (_ChannelList != null)
{ {
int iNum = Channels.Where(cs => cs.DrugId == DrugInfo.DrugId.ToString()).Count(); int iNum = _ChannelLists.Where(cs => cs.DrugId == DrugInfo.DrugId.ToString()).Count();
if (iNum > 0) if (iNum > 0)
{ {
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
@ -215,24 +277,41 @@ namespace DM_Weight.ViewModels
} }
var f = SqlSugarHelper.Db.UseTran(() => var f = SqlSugarHelper.Db.UseTran(() =>
{ {
string chnguid = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.MachineId == ConfigurationManager.AppSettings["machineId"].ToString() && cs.DrawerNo == DrawerNo + 1).Select(cs => cs.Id).First(); //string chnguid = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.MachineId == ConfigurationManager.AppSettings["machineId"].ToString() && cs.DrawerNo == DrawerNo + 1).Select(cs => cs.Id).First();
int colNoCount = SqlSugarHelper.Db.Queryable<ChannelList>()
.Where(cs => cs.MachineId == ConfigurationManager.AppSettings["machineId"].ToString() && cs.DrawerNo == DrawerNo + 1)
.Count();
string chnguid = $"DM5_{(DrawerNo + 1)}_{(colNoCount+1)}_{DrugInfo.DrugId}";
SqlSugarHelper.Db.Insertable(new ChannelList()
{
Id = chnguid,
DrawerNo = (DrawerNo + 1),
ColNo=(colNoCount+1),
DrugId = DrugInfo.DrugId,
BaseQuantity = baseQuantity,
MachineId = "DM5",
DrawerType=1
}).ExecuteCommand();
SqlSugarHelper.Db.Insertable(new ChannelStock() SqlSugarHelper.Db.Insertable(new ChannelStock()
{ {
Chnguid = chnguid, Chnguid = chnguid,
DrawerNo = DrawerNo + 1, DrawerNo = DrawerNo + 1,
DrugId = DrugInfo.DrugId.ToString(), DrugId = DrugInfo.DrugId,
BaseQuantity = baseQuantity, BaseQuantity = baseQuantity,
Id = Guid.NewGuid().ToString(), Id = Guid.NewGuid().ToString(),
MachineId = "DM5", MachineId = "DM5",
AddToJJNum = 0, AddToJJNum = 0,
NeedNum = baseQuantity NeedNum = baseQuantity,
//ManuNo=DrugManuNo.ManuNo
}).ExecuteCommand(); }).ExecuteCommand();
// 保存数据 入库记录 // 保存数据 入库记录
SqlSugarHelper.Db.Insertable(new MachineRecord() SqlSugarHelper.Db.Insertable(new MachineRecord()
{ {
MachineId = "DM5", MachineId = "DM5",
DrawerNo = DrawerNo + 1, DrawerNo = DrawerNo + 1,
DrugId = DrugInfo.DrugId.ToString(), DrugId = DrugInfo.DrugId,
Operator = HomeWindowViewModel.Operator?.Id, Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now, OperationTime = DateTime.Now,
Quantity = baseQuantity, Quantity = baseQuantity,
@ -276,52 +355,56 @@ namespace DM_Weight.ViewModels
try try
{ {
if (Channels == null) if (_ChannelList == null)
{ {
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("所选手术间中无可解绑药品"); SnackbarMessageQueue.Enqueue("所选手术间中无可解绑药品");
return; return;
} }
if (Channel != null) if (_ChannelList != null)
{ {
//解绑选定行的单个药品 //解绑选定行的单个药品
SqlSugarHelper.Db.Deleteable(Channel).ExecuteCommand(); SqlSugarHelper.Db.Deleteable(_ChannelList.channelStocks).ExecuteCommand();
//解绑ChannelList表中的药品
SqlSugarHelper.Db.Deleteable<ChannelList>().Where(cl => cl.Id == _ChannelList.Id).ExecuteCommand();
// 保存数据 入库记录 // 保存数据 入库记录
SqlSugarHelper.Db.Insertable(new MachineRecord() SqlSugarHelper.Db.Insertable(new MachineRecord()
{ {
MachineId = "DM5", MachineId = "DM5",
DrawerNo = DrawerNo, DrawerNo = DrawerNo,
DrugId = Channel.DrugId.ToString(), DrugId = _ChannelList.DrugId,
Operator = HomeWindowViewModel.Operator?.Id, Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now, OperationTime = DateTime.Now,
Quantity = Channel.Quantity, Quantity = _ChannelList.BaseQuantity,
Type = 55, Type = 55,
InvoiceId = "解绑手术间单个药品", InvoiceId = "解绑手术间单个药品",
}).ExecuteCommand(); }).ExecuteCommand();
} }
else else
{ {
//解绑药箱下的所有药品 SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
Channels.ForEach(item => SnackbarMessageQueue.Enqueue("请选择要解绑的药品");
{ ////解绑药箱下的所有药品
//Channels.ForEach(item =>
//{
SqlSugarHelper.Db.Deleteable(item).ExecuteCommand(); // SqlSugarHelper.Db.Deleteable(item).ExecuteCommand();
// 保存数据 入库记录 // // 保存数据 入库记录
SqlSugarHelper.Db.Insertable(new MachineRecord() // SqlSugarHelper.Db.Insertable(new MachineRecord()
{ // {
MachineId = "DM5", // MachineId = "DM5",
DrawerNo = DrawerNo, // DrawerNo = DrawerNo,
DrugId = item.DrugId.ToString(), // DrugId = item.DrugId.ToString(),
Operator = HomeWindowViewModel.Operator?.Id, // Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now, // OperationTime = DateTime.Now,
Quantity = item.Quantity, // Quantity = item.Quantity,
Type = 55, // Type = 55,
InvoiceId = "绑定手术间全部药品", // InvoiceId = "绑定手术间全部药品",
}).ExecuteCommand(); // }).ExecuteCommand();
}); //});
} }
@ -341,7 +424,7 @@ namespace DM_Weight.ViewModels
{ {
get => new DelegateCommand(() => get => new DelegateCommand(() =>
{ {
if (DrugInfo.DrugId != Channel.DrugId) if (DrugInfo.DrugId != _ChannelList.DrugId)
{ {
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue("只能修改药品基数,不能更换绑定药品!"); SnackbarMessageQueue.Enqueue("只能修改药品基数,不能更换绑定药品!");
@ -350,19 +433,29 @@ namespace DM_Weight.ViewModels
int baseQty = 0; int baseQty = 0;
if (int.TryParse(BaseQuantity, out baseQty)) if (int.TryParse(BaseQuantity, out baseQty))
{ {
logger.Info($"修改药品基数{Channel.BaseQuantity}改为{baseQty}"); logger.Info($"修改药品基数{_ChannelList.BaseQuantity}改为{baseQty}");
if (baseQty > Channel.BaseQuantity) if (baseQty > _ChannelList.BaseQuantity)
{ {
//基数变大,需要补药 //基数变大,需要补药
Channel.NeedNum = baseQty - Channel.BaseQuantity; _ChannelList.channelStocks[0].NeedNum = baseQty - _ChannelList.BaseQuantity;
} }
Channel.BaseQuantity = baseQty; else
int iUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>(Channel).ExecuteCommand(); {
if (iUpdate > 0) _ChannelList.channelStocks[0].NeedNum = 0;
}
_ChannelList.BaseQuantity = baseQty;
_ChannelList.channelStocks[0].BaseQuantity = baseQty;
int iUpdate = SqlSugarHelper.Db.Updateable<ChannelStock>(_ChannelList.channelStocks[0]).ExecuteCommand();
//更新ChannelList表中的BaseQuantity
int iUpdateChannelList = SqlSugarHelper.Db.Updateable<ChannelList>()
.SetColumns(it => new ChannelList() { BaseQuantity = baseQty })
.Where(it => it.Id == _ChannelList.Id).ExecuteCommand();
if (iUpdate > 0 && iUpdateChannelList > 0)
{ {
SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676")); SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
SnackbarMessageQueue.Enqueue("保存修改完成!"); SnackbarMessageQueue.Enqueue("保存修改完成!");
RequestData();
} }
else else
{ {
@ -386,127 +479,5 @@ namespace DM_Weight.ViewModels
{ {
get => new DelegateCommand(RequestData); get => new DelegateCommand(RequestData);
} }
//打开全部药箱
public DelegateCommand OpenBox
{
get => new DelegateCommand(() => OpenBoxAction());
}
private void OpenBoxAction()
{
iList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5")
.Select(cl => cl.DrawerNo).ToList();
if (iList.Count > 0)
{
for (int i = 0; i < iList.Count; i++)
{
//记录开药箱日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
DrawerNo = DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = $"打开{DrawerNo}号手术间",
}).ExecuteCommand();
IsEnable = false;
Status = 1;
Console.WriteLine($"正在打开{iList[i]}号手术间");
ModbusHelper.GetInstance().OpenBoxDoor(iList[i] - 1);
//iNumber++;
}
//ModbusHelper.GetInstance().GetAllBoxState();
//if (Status == 2)
//{
// Status = 3;
//}
//IsEnable = true;
}
}
void DoMyPrismEvent(DeviceMsg msg)
{
switch (msg.EventType)
{
// 药箱打开
case EventType.DRAWEROPEN:
//记录开药箱日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
//DrawerNo = _portUtil.DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间打开",
}).ExecuteCommand();
//if (iNumber < iList.Count)
//{
// //_portUtil.DrawerNo = iList[iNumber];
// iNumber++;
// if (Status == 1)
// {
// Status = 2;
// }
// //_portUtil.OpenBox();
//}
//else
{
//iNumber = 0;
//_portUtil.GetBoxStatus();
}
break;
// 药箱关闭
case EventType.DRAWERCLOSE:
//记录药箱操作日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
//DrawerNo = _portUtil.DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间关闭",
}).ExecuteCommand();
if (Status == 2)
{
Status = 3;
}
IsEnable = true;
DrawerNo = -1;
//_portUtil.Operate = false;
break;
// 打开失败
case EventType.OPENERROR:
AlertMsg alertMsg = new AlertMsg
{
Message = msg.Message,
Type = MsgType.ERROR
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
IsEnable = true;
DrawerNo = -1;
Status = 0;
//记录药箱操作日志
SqlSugarHelper.Db.Insertable(new MachineRecord()
{
MachineId = "DM5",
//DrawerNo = _portUtil.DrawerNo,
Operator = HomeWindowViewModel.Operator?.Id,
OperationTime = DateTime.Now,
Type = 55,
InvoiceId = "手术间打开失败",
}).ExecuteCommand();
//_portUtil.Operate = false;
break;
}
}
} }
} }

View File

@ -296,7 +296,7 @@ namespace DM_Weight.ViewModels
{ {
get => new DelegateCommand(() => get => new DelegateCommand(() =>
{ {
if (DrawerNo > 0) if (DrawerNo >= 0)
{ {
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerNo == (DrawerNo+1) && cs.MachineId == "DM5").First(); ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cs => cs.DrawerNo == (DrawerNo+1) && cs.MachineId == "DM5").First();
if (BoxTypeSelectedItem != null) if (BoxTypeSelectedItem != null)

View File

@ -10,6 +10,21 @@
xmlns:local="clr-namespace:DM_Weight.Views" xmlns:local="clr-namespace:DM_Weight.Views"
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}">
@ -86,7 +101,7 @@
</Grid> </Grid>
<DataGrid <!--<DataGrid
Grid.Row="1" Grid.Row="1"
materialDesign:DataGridAssist.ColumnHeaderPadding="15" materialDesign:DataGridAssist.ColumnHeaderPadding="15"
ItemsSource="{Binding Source={StaticResource GroupedDataList}}" ItemsSource="{Binding Source={StaticResource GroupedDataList}}"
@ -104,7 +119,7 @@
<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" />
@ -112,7 +127,7 @@
</Trigger> </Trigger>
</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>
@ -159,13 +174,77 @@
<DataGrid.Columns> <DataGrid.Columns>
<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 ManuNo}"/>
<DataGridTextColumn IsReadOnly="True" Header="效期" Binding="{Binding EffDate}"/>
<DataGridTextColumn IsReadOnly="True" Header="厂家" Binding="{Binding DrugInfo.Manufactory}"/> <DataGridTextColumn IsReadOnly="True" Header="厂家" Binding="{Binding DrugInfo.Manufactory}"/>
<!--<DataGridTextColumn IsReadOnly="True" Header="药品基数" Binding="{Binding BaseQuantity}"/>--> <DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding ManuNo}"/>
<DataGridTextColumn IsReadOnly="True" Header="需补药数量" Binding="{Binding AddToJJNum}"/> --><!--<DataGridTextColumn IsReadOnly="True" Header="效期" Binding="{Binding EffDate}"/>-->
<!--<DataGridTextColumn IsReadOnly="True" Header="药品基数" Binding="{Binding BaseQuantity}"/>--><!--
<DataGridTextColumn IsReadOnly="True" Header="待入库数量" Binding="{Binding AddToJJNum}"/>
<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="ManuNo" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="待入库数" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="AddToJJNum" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding State,Converter={StaticResource StockStatusConverter},ConverterParameter=TextState}"
Header="状态"/>
</GridView>
</ListView.View>
</ListView>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@ -154,10 +154,17 @@
SelectedItem="{Binding DrugInfo}" SelectedItem="{Binding DrugInfo}"
DisplayMemberPath="drug_name_spec" IsEnabled="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp" DisplayMemberPath="drug_name_spec" IsEnabled="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
/> />
<!--<ComboBox
Margin="6 0 6 0"
Grid.Column="1"
materialDesign:HintAssist.Hint="批次"
ItemsSource="{Binding DrugManuNos}"
SelectedItem="{Binding DrugManuNo}"
DisplayMemberPath="ManuNo"/>-->
<TextBox <TextBox
Grid.Column="1" Grid.Column="1"
Text="{Binding BaseQuantity}" Text="{Binding BaseQuantity}"
materialDesign:HintAssist.Hint="药品基数" materialDesign:HintAssist.Hint="基数"
Margin="16 0 32 6" Width="100" Margin="16 0 32 6" Width="100"
Style="{StaticResource MaterialDesignTextBoxBase}"/> Style="{StaticResource MaterialDesignTextBoxBase}"/>
<Button <Button
@ -194,8 +201,8 @@
</StackPanel> </StackPanel>
<ListView Grid.ColumnSpan="2" <ListView Grid.ColumnSpan="2"
Padding="0 6 0 0" Grid.Row="1" Padding="0 6 0 0" Grid.Row="1"
ItemsSource="{Binding Channels, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" ItemsSource="{Binding _ChannelLists, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedItem="{Binding Channel}" SelectedItem="{Binding _ChannelList}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec" materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.ColumnHeaderPadding="10" materialDesign:DataGridAssist.ColumnHeaderPadding="10"
materialDesign:ListViewAssist.ListViewItemPadding="13"> materialDesign:ListViewAssist.ListViewItemPadding="13">
@ -205,22 +212,40 @@
</Style> </Style>
</ListView.Resources> </ListView.Resources>
<ListView.View> <ListView.View>
<GridView> <GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="200" <GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugInfo.DrugName}" DisplayMemberBinding="{Binding Drug.DrugName}"
Header="药品名称"/> Header="药品名称"/>
<GridViewColumn Width="200" <GridViewColumn Width="150"
DisplayMemberBinding="{Binding DrugInfo.Manufactory}" DisplayMemberBinding="{Binding Drug.Manufactory}"
Header="厂家"/> Header="厂家"/>
<GridViewColumn Width="200" <GridViewColumn Width="100"
DisplayMemberBinding="{Binding DrugInfo.DrugSpec}" DisplayMemberBinding="{Binding Drug.DrugSpec}"
Header="规格"/> Header="规格"/>
<GridViewColumn Width="100" <GridViewColumn Width="50"
DisplayMemberBinding="{Binding BaseQuantity}" DisplayMemberBinding="{Binding BaseQuantity}"
Header="药品基数"/> Header="基数"/>
<GridViewColumn Width="100" <GridViewColumn Header="批次" Width="80">
DisplayMemberBinding="{Binding Quantity}" <GridViewColumn.CellTemplate>
Header="药品库存"/> <DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="ManuNo" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="库存" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="Quantity" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!--<GridViewColumn Header="效期" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding channelStocks}" DisplayMemberPath="EffDate" materialDesign:ListBoxItemAssist.ShowSelection="False"></ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>-->
</GridView> </GridView>
</ListView.View> </ListView.View>