XiangTan_JiaoJie_Bak/DM_Weight/ViewModels/CheckSelfOrderWindowViewMod...

1250 lines
51 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.Port;
using DM_Weight.util;
using DM_Weight.Views;
using log4net;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Media;
namespace DM_Weight.ViewModels
{
internal class CheckSelfOrderWindowViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(CheckOrderNewWindowViewModel));
//System.Timers.Timer CheckBoxStatusTimer;
private int _drawerType = -1;
public int DrawerType
{
get => _drawerType;
set => SetProperty(ref _drawerType, value);
}
//1取药箱0还药箱
private int _operationType = -1;
public int OperationType
{
get => _operationType;
set => SetProperty(ref _operationType, value);
}
public bool KeepAlive => false;
private int _pageNum = 1;
public int PageNum
{
get => _pageNum;
set
{
SetProperty(ref _pageNum, value);
RequestData();
}
}
private int _pageCount = 1;
public int PageCount
{
get => _pageCount;
set
{
SetProperty(ref _pageCount, value);
}
}
private int _pageSize = 8;
public int PageSize
{
get => _pageSize;
set
{
SetProperty(ref _pageSize, value);
}
}
private int _totalCount = 0;
public int TotalCount
{
get => _totalCount;
set
{
SetProperty(ref _totalCount, value);
}
}
//所选药箱号
private int _drawerNo = -1;
public int DrawerNo
{
get => _drawerNo;
set => SetProperty(ref _drawerNo, value);
}
//所选药箱号
private int _currentDrawerNo = -1;
public int CurrentDrawerNo
{
get => _currentDrawerNo;
set => SetProperty(ref _currentDrawerNo, value);
}
//开名下药箱按钮的显示状态
//private bool _selfEnable = false;
//public bool SelfEnable { get => _selfEnable; set => SetProperty(ref _selfEnable, value); }
////名下药箱按钮显示内容
//private string _selfContent = "打开药箱";
//public string SelfContent { get => _selfContent; set => SetProperty(ref _selfContent, value); }
//开公共药箱按钮的显示状态
private bool _publicEnable = true;
public bool PublicEnable { get => _publicEnable; set => SetProperty(ref _publicEnable, value); }
//公共药箱按钮显示内容
private string _publicContent;
public string PublicContent { get => _publicContent; set => SetProperty(ref _publicContent, value); }
private string _orderDate = DateTime.Now.ToString("yyyy-MM-dd");
//名下药箱状态
private int _selfStatus = 0;
public int SelfStatus { get => _selfStatus; set => SetProperty(ref _selfStatus, value); }
//抽屉号列表
public static List<ChannelList> iList = new List<ChannelList>();
/// <summary>
/// 查询条件 处方日期
/// </summary>
public string OrderDate
{
get { return _orderDate; }
set
{
if (!String.IsNullOrEmpty(value))
{
SetProperty(ref _orderDate, DateTime.Parse(value).ToString("yyyy-MM-dd"));
}
else
{
SetProperty(ref _orderDate, value);
}
RequestData();
}
}
private bool _isEnable = true;
public bool IsEnable { get => _isEnable; set => SetProperty(ref _isEnable, value); }
private int _status = 0;
public int Status { get => _status; set { SetProperty(ref _status, value); } }
private List<OrderInfo> _ordersList = new List<OrderInfo>();
public List<OrderInfo> OrderInfoList
{
get => _ordersList;
set => SetProperty(ref _ordersList, value);
}
private List<TotalDrug>? _totalDrugList = new List<TotalDrug>();
public List<TotalDrug>? TotalDrugList
{
get => _totalDrugList;
set => SetProperty(ref _totalDrugList, value);
}
private OrderInfo _selectOrderInfo;
public OrderInfo selectOrderInfo { get => _selectOrderInfo; set => SetProperty(ref _selectOrderInfo, value); }
#region
private Brush _button1Color = Brushes.White;
public Brush Button1Color
{
get => _button1Color;
set => SetProperty(ref _button1Color, value);
}
private Brush _button2Color = Brushes.White;
public Brush Button2Color
{
get => _button2Color;
set => SetProperty(ref _button2Color, value);
}
private Brush _button3Color = Brushes.White;
public Brush Button3Color
{
get => _button3Color;
set => SetProperty(ref _button3Color, value);
}
private Brush _button4Color = Brushes.White;
public Brush Button4Color
{
get => _button4Color;
set => SetProperty(ref _button4Color, value);
}
private Brush _button5Color = Brushes.White;
public Brush Button5Color
{
get => _button5Color;
set => SetProperty(ref _button5Color, value);
}
private Brush _button6Color = Brushes.White;
public Brush Button6Color
{
get => _button6Color;
set => SetProperty(ref _button6Color, value);
}
private Brush _button7Color = Brushes.White;
public Brush Button7Color
{
get => _button7Color;
set => SetProperty(ref _button7Color, value);
}
private Brush _button8Color = Brushes.White;
public Brush Button8Color
{
get => _button8Color;
set => SetProperty(ref _button8Color, value);
}
private Brush _button9Color = Brushes.White;
public Brush Button9Color
{
get => _button9Color;
set => SetProperty(ref _button9Color, value);
}
private Brush _button10Color = Brushes.White;
public Brush Button10Color
{
get => _button10Color;
set => SetProperty(ref _button10Color, value);
}
private Brush _button11Color = Brushes.White;
public Brush Button11Color
{
get => _button11Color;
set => SetProperty(ref _button11Color, value);
}
private Brush _button12Color = Brushes.White;
public Brush Button12Color
{
get => _button12Color;
set => SetProperty(ref _button12Color, value);
}
private Brush _button13Color = Brushes.White;
public Brush Button13Color
{
get => _button13Color;
set => SetProperty(ref _button13Color, value);
}
private Brush _button14Color = Brushes.White;
public Brush Button14Color
{
get => _button14Color;
set => SetProperty(ref _button14Color, value);
}
private Brush _button15Color = Brushes.White;
public Brush Button15Color
{
get => _button15Color;
set => SetProperty(ref _button15Color, value);
}
private Brush _button16Color = Brushes.White;
public Brush Button16Color
{
get => _button16Color;
set => SetProperty(ref _button16Color, value);
}
private Brush _button17Color = Brushes.White;
public Brush Button17Color
{
get => _button17Color;
set => SetProperty(ref _button17Color, value);
}
private Brush _button18Color = Brushes.White;
public Brush Button18Color
{
get => _button18Color;
set => SetProperty(ref _button18Color, value);
}
private bool _button1Enable = false;
public bool Button1Enable
{
get => _button1Enable;
set => SetProperty(ref _button1Enable, value);
}
private bool _button2Enable = false;
public bool Button2Enable
{
get => _button2Enable;
set => SetProperty(ref _button2Enable, value);
}
private bool _button3Enable = false;
public bool Button3Enable
{
get => _button3Enable;
set => SetProperty(ref _button3Enable, value);
}
private bool _button4Enable = false;
public bool Button4Enable
{
get => _button4Enable;
set => SetProperty(ref _button4Enable, value);
}
private bool _button5Enable = false;
public bool Button5Enable
{
get => _button5Enable;
set => SetProperty(ref _button5Enable, value);
}
private bool _button6Enable = false;
public bool Button6Enable
{
get => _button6Enable;
set => SetProperty(ref _button6Enable, value);
}
private bool _button7Enable = false;
public bool Button7Enable
{
get => _button7Enable;
set => SetProperty(ref _button7Enable, value);
}
private bool _button8Enable = false;
public bool Button8Enable
{
get => _button8Enable;
set => SetProperty(ref _button8Enable, value);
}
private bool _button9Enable = false;
public bool Button9Enable
{
get => _button9Enable;
set => SetProperty(ref _button9Enable, value);
}
private bool _button10Enable = false;
public bool Button10Enable
{
get => _button10Enable;
set => SetProperty(ref _button10Enable, value);
}
private bool _button11Enable = false;
public bool Button11Enable
{
get => _button11Enable;
set => SetProperty(ref _button11Enable, value);
}
private bool _button12Enable = false;
public bool Button12Enable
{
get => _button12Enable;
set => SetProperty(ref _button12Enable, value);
}
private bool _button13Enable = false;
public bool Button13Enable
{
get => _button13Enable;
set => SetProperty(ref _button13Enable, value);
}
private bool _button14Enable = false;
public bool Button14Enable
{
get => _button14Enable;
set => SetProperty(ref _button14Enable, value);
}
private bool _button15Enable = false;
public bool Button15Enable
{
get => _button15Enable;
set => SetProperty(ref _button15Enable, value);
}
private bool _button16Enable = false;
public bool Button16Enable
{
get => _button16Enable;
set => SetProperty(ref _button16Enable, value);
}
private bool _button17Enable = false;
public bool Button17Enable
{
get => _button17Enable;
set => SetProperty(ref _button17Enable, value);
}
private bool _button18Enable = false;
public bool Button18Enable
{
get => _button18Enable;
set => SetProperty(ref _button18Enable, value);
}
#endregion
//设置按钮颜色
private void SetBtnColor(int drawerNo)
{
switch (drawerNo)
{
case 1:
Button1Color = Brushes.Yellow;
break;
case 2:
Button2Color = Brushes.Yellow;
break;
case 3:
Button3Color = Brushes.Yellow;
break;
case 4:
Button4Color = Brushes.Yellow;
break;
case 5:
Button5Color = Brushes.Yellow;
break;
case 6:
Button6Color = Brushes.Yellow;
break;
case 7:
Button7Color = Brushes.Yellow;
break;
case 8:
Button8Color = Brushes.Yellow;
break;
case 9:
Button9Color = Brushes.Yellow;
break;
case 10:
Button10Color = Brushes.Yellow;
break;
case 11:
Button11Color = Brushes.Yellow;
break;
case 12:
Button12Color = Brushes.Yellow;
break;
case 13:
Button13Color = Brushes.Yellow;
break;
case 14:
Button14Color = Brushes.Yellow;
break;
case 15:
Button15Color = Brushes.Yellow;
break;
case 16:
Button16Color = Brushes.Yellow;
break;
case 17:
Button17Color = Brushes.Yellow;
break;
case 18:
Button18Color = Brushes.Yellow;
break;
default:
break;
}
}
//设置按钮可用状态
private void SetBtnEnable(int drawerNo, bool status)
{
switch (drawerNo)
{
case 1:
Button1Enable = status;
//SelfEnable=status;
break;
case 2:
Button2Enable = status;
//SelfEnable = status;
break;
case 3:
Button3Enable = status;
//SelfEnable = status;
break;
case 4:
Button4Enable = status;
//SelfEnable = status;
break;
case 5:
Button5Enable = status;
//SelfEnable = status;
break;
case 6:
Button6Enable = status;
//SelfEnable = status;
break;
case 7:
Button7Enable = status;
//SelfEnable = status;
break;
case 8:
Button8Enable = status;
//SelfEnable = status;
break;
case 9:
Button9Enable = status;
//SelfEnable = status;
break;
case 10:
Button10Enable = status;
//SelfEnable = status;
break;
case 11:
Button11Enable = status;
//SelfEnable = status;
break;
case 12:
Button12Enable = status;
//SelfEnable = status;
break;
case 13:
Button13Enable = status;
//SelfEnable = status;
break;
case 14:
Button14Enable = status;
//SelfEnable = status;
break;
case 15:
Button15Enable = status;
//SelfEnable = status;
break;
case 16:
Button16Enable = status;
//SelfEnable = status;
break;
case 17:
Button17Enable = status;
//SelfEnable = status;
break;
case 18:
Button18Enable = status;
//SelfEnable = status;
break;
default:
break;
}
}
////打开某个药箱时不可点击其他药箱按钮避免保存数据时减错药箱库存(确认或取消后按钮即可用)
//private void SetAllBtnEnableFalse()
//{
// Button1Enable = false;
// Button2Enable = false;
// Button3Enable = false;
// Button4Enable = false;
// Button5Enable = false;
// Button6Enable = false;
// Button7Enable = false;
// Button8Enable = false;
// Button9Enable = false;
// Button10Enable = false;
// Button11Enable = false;
// Button12Enable = false;
// Button13Enable = false;
// Button14Enable = false;
// Button15Enable = false;
// Button16Enable = false;
// Button17Enable = false;
// Button18Enable = false;
//}
IEventAggregator _eventAggregator;
//private PortUtil _portUtil;
IDialogService _dialogService;
SocketHelper _socketHelper;
public CheckSelfOrderWindowViewModel(IEventAggregator eventAggregator, SocketHelper socketHelper)
{
//_portUtil = portUtil;
_eventAggregator = eventAggregator;
_socketHelper = socketHelper;
}
private string? _searchValue;
/// <summary>
/// 查询条件 查询字段值
/// </summary>
public string? SearchValue
{
get { return _searchValue; }
set
{
SetProperty(ref _searchValue, value);
RequestData();
}
}
void RequestData()
{
int totalCount = 0;
if (DrawerNo >= 0)
{
//查询当前药箱归属的药师
ChannelList currentList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.DrawerNo == DrawerNo && cl.MachineId == "DM5").First();//.Select(cl => cl.BelongUser).First();
DrawerType = currentList.DrawerType;
//string currentDrawerUser = currentList.BelongUser;
string currentDrawerUser = HomeWindowViewModel.Operator.UserBarcode;
OrderInfoList = SqlSugarHelper.Db.Queryable<OrderInfo>()
.Includes(oi => oi._OrderDetail, od => od.DrugInfo)
.Includes(oi => oi._OrderDetail, od => od.surgicalResidual)
//.Includes(cl => cl.channelStocks, cs => cs.DrugInfo,di=>di.drugBase)
//.InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
//.InnerJoin<DrugInfo>((oi, od, di) => od.DrugId == di.DrugId.ToString())
.WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
.WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), oi => oi.Pharmacy == ConfigurationManager.AppSettings["storage"])
.Where(oi => oi.DmStatus == 0)
.Where(oi => oi.HisDispFlag == 0)
.Where(oi => oi.CancelFlag == 0)
.Where(oi => oi.DoctorCode == currentDrawerUser)
.Where(oi => oi._OrderDetail.SetManuNo != null && oi._OrderDetail.SetManuNo != "null")
.Where(oi => oi._OrderDetail.Quantity > 0)
//.Where(oi => oi._OrderDetail.surgicalResidual.SendNo == DrawerNo.ToString())
.OrderBy(oi => oi.OrderId)
.ToPageList(PageNum, PageSize, ref totalCount);
//OrderInfoList = SqlSugarHelper.Db.Queryable<OrderInfo>()
// .Includes(oi => oi.OrderDetailList, od => od.DrugInfo)
// .Includes(oi => oi.OrderDetailList, od => od.surgicalResidual)
// //.Includes(cl => cl.channelStocks, cs => cs.DrugInfo,di=>di.drugBase)
// //.InnerJoin<OrderDetail>((oi, od) => oi.OrderNo == od.OrderNo)
// //.InnerJoin<DrugInfo>((oi, od, di) => od.DrugId == di.DrugId.ToString())
// .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
// .WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), oi => oi.Pharmacy == ConfigurationManager.AppSettings["storage"])
// .Where(oi => oi.DmStatus == 1)
// .Where(oi => oi.HisDispFlag == 0)
// .Where(oi => oi.CancelFlag == 0)
// .Where(oi => oi.DoctorCode == currentDrawerUser)
// .OrderBy(oi => oi.OrderId)
// .ToPageList(PageNum, PageSize, ref totalCount);
if (OrderInfoList != null && OrderInfoList.Count() > 0)
{
OrderInfoList.ForEach(oi => oi.ItemIsChecked = true);
OrderInfoList.ForEach(oi => oi._OrderDetail.DrugInfo = oi._OrderDetail.DrugInfo ?? new DrugInfo());
OrderInfoList.Where(oi=>oi._OrderDetail.surgicalResidual?.SendNo==DrawerNo.ToString()).ToList()?.ForEach(oi => oi.ItemIsChecked = true);
//TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi.OrderDetailList.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item.OrderDetailList.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
}
else
{
TotalDrugList = null;
}
TotalCount = totalCount;
PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
if (Convert.ToDateTime(currentList.EffDate).ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
{
switch (DrawerNo)
{
case 1:
_button1Color = Brushes.Yellow;
break;
case 2:
_button2Color = Brushes.Yellow;
break;
case 3:
_button3Color = Brushes.Yellow;
break;
case 4:
_button4Color = Brushes.Yellow;
break;
case 5:
_button5Color = Brushes.Yellow;
break;
case 6:
_button6Color = Brushes.Yellow;
break;
case 7:
_button7Color = Brushes.Yellow;
break;
case 8:
_button8Color = Brushes.Yellow;
break;
case 9:
_button9Color = Brushes.Yellow;
break;
case 10:
_button10Color = Brushes.Yellow;
break;
case 11:
_button11Color = Brushes.Yellow;
break;
case 12:
_button12Color = Brushes.Yellow;
break;
case 13:
_button13Color = Brushes.Yellow;
break;
case 14:
_button14Color = Brushes.Yellow;
break;
case 15:
_button15Color = Brushes.Yellow;
break;
case 16:
_button16Color = Brushes.Yellow;
break;
case 17:
_button17Color = Brushes.Yellow;
break;
case 18:
_button18Color = Brushes.Yellow;
break;
default:
break;
}
}
}
else
{
GetUseBox();
//List<ChannelList> chlList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5").ToList();//.Select(cl => cl.BelongUser).First();
//if (chlList != null && chlList.Count > 0)
//{
// for (int i = 0; i < chlList.Count; i++)
// {
// ChannelList chl = chlList[i];
// if (Convert.ToDateTime(chl.EffDate).ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
// {
// SetBtnColor(chl.DrawerNo);
// }
// //DrawerType== 1为公共药箱
// if (chl.DrawerType == 1)
// {
// SetBtnEnable(chl.DrawerNo);
// }
// if (!string.IsNullOrEmpty(chl.BelongUser) && chl.BelongUser == HomeWindowViewModel.Operator.UserBarcode)
// {
// if (DrawerType == -1)
// {
// DrawerType = chl.DrawerType;
// }
// SetBtnEnable(chl.DrawerNo);
// }
// }
//}
//查询当前药师下所有的待确认的单子
//string currentDrawerUser = HomeWindowViewModel.Operator.UserBarcode;
//OrderInfoList = SqlSugarHelper.Db.Queryable<OrderInfo>()
// .Includes(oi => oi._OrderDetail, od => od.DrugInfo)
// .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate)
// .WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), oi => oi.Pharmacy == ConfigurationManager.AppSettings["storage"])
// .Where(oi => oi.DmStatus == 0)
// .Where(oi => oi.HisDispFlag == 0)
// .Where(oi => oi.CancelFlag == 0)
// .Where(oi => oi.DoctorCode == currentDrawerUser)
// .OrderBy(oi => oi.OrderId)
// .ToPageList(PageNum, PageSize, ref totalCount);
//if (OrderInfoList != null && OrderInfoList.Count() > 0)
//{
// OrderInfoList.ForEach(oi => oi.ItemIsChecked = true);
// OrderInfoList.ForEach(oi => oi._OrderDetail.DrugInfo = oi._OrderDetail.DrugInfo ?? new DrugInfo());
// //TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi.OrderDetailList.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item.OrderDetailList.Quantity) }).ToList();
// TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
//}
//else
//{
// TotalDrugList = null;
//}
//TotalCount = totalCount;
//PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
}
}
/// <summary>
/// 选择药箱,打开药箱
/// </summary>
public DelegateCommand<string> UpdateDrawerNo
{
get => new DelegateCommand<string>(OpenBoxAction);
}
public void OpenBoxAction(string strDrawerNo)
{
//if (ModbusHelper.BoxOperate)
//{
// Task.Factory.StartNew(() => { ModbusHelper.SpeakAsync("请关闭药箱后再打开"); });
// return;
//}
if (_socketHelper.OpenStatus)
{
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync("请关闭手术间后再打开");
return;
}
//SetAllBtnEnableFalse();
DrawerNo = Convert.ToInt32(strDrawerNo);
//DrawerType = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == Convert.ToInt32(strDrawerNo)).Select(cl => cl.DrawerType).First();
//SelfEnable = true;
//int listSelfState = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5")
// .WhereIf(cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerState).First();
//int listDrawerState = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType)
// .WhereIF(this.DrawerType == 0, cl => cl.BelongUser == HomeWindowViewModel.Operator.UserBarcode).Select(cl => cl.DrawerState).First();
DrawerNo = Convert.ToInt32(strDrawerNo);
CurrentDrawerNo += DrawerNo + 1;
MachineRecord machineRecord = new MachineRecord();
machineRecord.MachineId = "DM5";
machineRecord.DrawerNo = DrawerNo;
machineRecord.Operator = HomeWindowViewModel.Operator?.Id;
machineRecord.OperationTime = DateTime.Now;
machineRecord.Type = 55;
machineRecord.InvoiceId = $"麻醉师,打开{DrawerNo}号手术间";
if (DrawerNo > 0)
{
RequestData();
Status = 1;
_socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
_socketHelper.speechSynthesizer.Resume();
_socketHelper.SpeakAsync($"正在打开{DrawerNo}号手术间");
logger.Info($"正在打开{DrawerNo}号手术间");
//记录开药箱日志
SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand();
//ModbusHelper.GetInstance().OpenBoxDoor(DrawerNo-1);
try
{
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo - 1) });
_socketHelper.dateTime = DateTime.Now;
}
catch (Exception ex)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
return;
}
_socketHelper.OpenStatus = true;
//记录药箱打开时间
ChannelList channelList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerNo == DrawerNo).First();
if (channelList != null && (channelList.EffDate is null || Convert.ToDateTime(channelList.EffDate).ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd")))
{
channelList.DrawerState = 0;
channelList.EffDate = DateTime.Now.ToString();
SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand();
SqlSugarHelper.Db.Updateable<ChannelList>().SetColumns(it => it.EffDate == DateTime.Now.ToString()).SetColumns(it => it.DrawerState == 0)
.Where(it => it.MachineId == "DM5" && it.DrawerNo == DrawerNo).ExecuteCommand();
}
//if (OperationType == 1)
//{
// //取药箱,将当前药箱号记录到当前登录人身上
// if (!string.IsNullOrEmpty(HomeWindowViewModel.Operator.BoxNumber))
// {
// HomeWindowViewModel.Operator.BoxNumber += $",{DrawerNo.ToString()}";
// SqlSugarHelper.Db.Updateable(HomeWindowViewModel.Operator).UpdateColumns(it => new { it.BoxNumber }).ExecuteCommand();
// }
// else
// {
// HomeWindowViewModel.Operator.BoxNumber = $",{DrawerNo.ToString()}";
// SqlSugarHelper.Db.Updateable(HomeWindowViewModel.Operator).UpdateColumns(it => new { it.BoxNumber }).ExecuteCommand();
// }
// SqlSugarHelper.Db.Updateable<ChannelList>().SetColumns(it => it.EffDate == DateTime.Now.ToString()).SetColumns(it => it.DrawerState == 0)
// .Where(it => it.MachineId == "DM5" && it.DrawerNo == DrawerNo).ExecuteCommand();
// //记录取药箱信息
// SqlSugarHelper.Db.Insertable(new MachineRecord()
// {
// MachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
// DrawerNo = DrawerNo,
// Operator = HomeWindowViewModel.Operator?.Id,
// Reviewer = HomeWindowViewModel.Reviewer?.Id,
// OperationTime = DateTime.Now,
// Type = 70,
// Status= 70,
// InvoiceId = $"{DateTime.Now} 取出药箱"
// }).ExecuteCommand();
//}
//else if (OperationType == 0)
//{
// RequestData();
// //还药箱,将当前药箱号从当前登录人身上删除
// if (HomeWindowViewModel.Operator.BoxNumber == $",{DrawerNo.ToString()}")
// {
// HomeWindowViewModel.Operator.BoxNumber = string.Empty;
// }
// else
// {
// HomeWindowViewModel.Operator.BoxNumber = HomeWindowViewModel.Operator.BoxNumber.Replace($",{DrawerNo.ToString()},", ",");
// }
// SqlSugarHelper.Db.Updateable(HomeWindowViewModel.Operator).UpdateColumns(it => new { it.BoxNumber }).ExecuteCommand();
// SqlSugarHelper.Db.Updateable<ChannelList>().SetColumns(it => it.EffDate ==null).SetColumns(it => it.DrawerState == 1)
// .Where(it => it.MachineId == "DM5" && it.DrawerNo == DrawerNo).ExecuteCommand();
// //记录还药箱时间
// MachineRecord returnRecord = SqlSugarHelper.Db.Queryable<MachineRecord>().Where(mc => mc.MachineId == "DM5" && mc.DrawerNo == DrawerNo&&mc.Type==70&&mc.Operator==HomeWindowViewModel.Operator.Id).First();
// if(returnRecord!=null)
// {
// returnRecord.EffDate = DateTime.Now;
// returnRecord.Status = 71;
// returnRecord.Type = 71;
// returnRecord.InvoiceId += $";{DateTime.Now} 还回药箱";
// SqlSugarHelper.Db.Updateable(returnRecord).UpdateColumns(it => new { it.EffDate,it.Status,it.Type,it.InvoiceId }).ExecuteCommand();
// }
//}
Thread.Sleep(200);
int iException = 0;
new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) =>
{
try
{
if (_socketHelper.OpenStatus)
{
//bool[] boolsl = ModbusHelper.GetInstance().GetAllBoxState();
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = 0x33, functionCode = 4, delay = 2 });
//ModbusHelper.SpeakAsync($"i为{i};状态为:{_socketHelper.OpenStatus}");
//bool state = Array.TrueForAll(boolsl, b => b == false);
if (_socketHelper.OpenStatus)
{
//if (i == 0)
//{
// ModbusHelper.SpeakAsync("请及时关闭药箱");
// i = 10;
//}
next();
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
stop();
}
}
else
{
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
stop();
}
iException = 0;
}
catch (Exception ex)
{
iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
}
// _socketHelper.OpenStatus = false;
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
next();
}
});
}
}
public DelegateCommand RowSelected
{
get => new DelegateCommand(() =>
{
if (selectOrderInfo != null)
{
OrderInfoList = OrderInfoList.Select(x =>
{
if (x.OrderNo == selectOrderInfo.OrderNo)
{
x.ItemIsChecked = !x.ItemIsChecked;
}
return x;
}).ToList();
if (OrderInfoList != null && OrderInfoList.Count() > 0)
{
//TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).GroupBy(oi => oi._OrderDetail.DrugInfo.DrugName).Select(oi => new TotalDrug { DrugName = oi.Key, TotalCount = oi.Sum(item => item._OrderDetail.Quantity) }).ToList();
TotalDrugList = OrderInfoList.Where(oi => oi.ItemIsChecked).Select(OrderDetailList => OrderDetailList._OrderDetail).GroupBy(item => item.DrugInfo.DrugName).Select(group => new TotalDrug { DrugName = group.Key, TotalCount = group.Sum(item => item.Quantity) }).ToList();
}
}
});
}
public DelegateCommand Query
{
get => new DelegateCommand(() =>
{
RequestData();
});
}
//确认
public DelegateCommand CheckOrder
{
get => new DelegateCommand(() =>
{
if (DrawerNo == -1)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请先选择手术间",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
GetUseBox();
CheckOrderAction();
});
}
void CheckOrderAction()
{
var confirmData = OrderInfoList.Where(oi => oi.ItemIsChecked == true).ToList();
if (confirmData.Count > 0)
{
var f = SqlSugarHelper.Db.UseTran(() =>
{
//string empChannelStock = string.Empty;
for (int i = 0; i < confirmData.Count; i++)
{
OrderInfo oi = confirmData[i];
//更新处方状态
if (oi.DmStatus == 0)
{
//查询该药箱是否有该批次的药品,没有则无法确认(避免管理进行确认时确认不过去)
if (oi._OrderDetail != null)
{
//for (int j = 0; j < oi.OrderDetailList.Count; j++)
//{
// oi._OrderDetail = oi.OrderDetailList[j];
int drawerNo = DrawerNo;
ChannelStock cs = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.DrugId == oi._OrderDetail.DrugId
&& cs.ManuNo == oi._OrderDetail.SetManuNo
&& cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM5")
&& cs.DrawerNo == drawerNo).First();
if (cs == null)
{
AlertMsg alertMsg = new AlertMsg
{
Message = $"处方{oi.OrderNo}因药品批次{oi._OrderDetail.SetManuNo}无库存,无法确认",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return false;
}
//}
}
SqlSugarHelper.Db.Updateable(new OrderInfo()
{
DmStatus = 1,
OrderNo = oi.OrderNo,
DrawerCode = DrawerNo
}).UpdateColumns(it => new { it.DmStatus, it.DrawerCode }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand();
SqlSugarHelper.Db.Insertable(new OrderFinish()
{
OrderNo = oi.OrderNo,
PatientId = oi.PatientId,
Pharmacy = oi.Pharmacy,
State = 1,
Operator = HomeWindowViewModel.Operator?.Nickname,
}).ExecuteCommand();
}
}
//if (!string.IsNullOrEmpty(empChannelStock))
//{
// AlertMsg alertMsg = new AlertMsg
// {
// Message = $"所选处方对应药品批次效期无库存{empChannelStock}",
// Type = MsgType.ERROR,
// };
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
// logger.Info($"所选处方对应药品批次效期无库存{empChannelStock}");
// throw new Exception("事务回滚");
// return false;
//}
return true;
});
if (f.Data)
{
RequestData();
AlertMsg alertMsg = new AlertMsg
{
Message = "所选单子已确认",
Type = MsgType.SUCCESS,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
RequestData();
}
if (!f.IsSuccess)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "核对失败!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
Status = 0;
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请勾选要核对的数据",
Type = MsgType.ERROR
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}
//取消
public DelegateCommand CancleTake
{
get => new DelegateCommand(() =>
{
GetUseBox();
});
}
private void GetUseBox()
{
List<ChannelList> chlList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5").ToList();//.Select(cl => cl.BelongUser).First();
//chlList = chlList.GroupBy(cl => cl.DrawerNo).Select(cl => cl.FirstOrDefault()).ToList();
if (chlList != null && chlList.Count > 0)
{
for (int i = 0; i < chlList.Count; i++)
{
ChannelList chl = chlList[i];
if (chl != null && chl.EffDate != null)
{
SetBtnColor(chl.DrawerNo);
}
//DrawerType== 1为公共药箱
if (chl.DrawerType == 1)
{
//if (OperationType == 1)
//{
// //取药箱,在库则可取,不在则不可取
// if (chl.DrawerState == 1)
// {
// SetBtnEnable(chl.DrawerNo, true);
// }
// else
// {
// SetBtnEnable(chl.DrawerNo, false);
// }
//}
//else
//{
// //还药箱,只能还自己取过的药箱
// //查询用户取过哪些药箱
// string[] BoxNumber = HomeWindowViewModel.Operator.BoxNumber.Split(',');
// if (BoxNumber != null && BoxNumber.Contains(chl.DrawerNo.ToString()))
// {
// SetBtnEnable(chl.DrawerNo, true);
// }
// else
// {
SetBtnEnable(chl.DrawerNo, true);
//}
//}
}
if (!string.IsNullOrEmpty(chl.BelongUser) && chl.BelongUser == HomeWindowViewModel.Operator.UserBarcode)
{
if (DrawerType == -1)
{
DrawerType = chl.DrawerType;
}
SetBtnEnable(chl.DrawerNo, true);
}
}
}
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info("进入OnNavigatedTo");
//OpenOrderDialog();
RequestData();
logger.Info("结束RequestData");
}
public async Task OpenOrderDialog()
{
// 此处延时1毫秒等待页面渲染
await Task.Delay(TimeSpan.FromMilliseconds(1));
DialogServiceExtensions.ShowDialogHost(_dialogService, "SelectOperationTypeDialog", null, DoDialogResult, "RootDialog");
}
private void DoDialogResult(IDialogResult dialogResult)
{
// 委托 被动执行 被子窗口执行
// dialogResult 第一方面可以拿到任意参数 第二方面 可判断关闭状态
if (dialogResult.Result == ButtonResult.OK)
{
//取药箱,只能取在库存的药箱
OperationType = 1;
GetUseBox();
}
else
{
//还药箱,只能点自己取过的药箱
OperationType = 0;
RequestData();
}
//MessageBox.Show("返回值:" + dialogResult.Result.ToString());
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
// 取消消息订阅
//_eventAggregator.GetEvent<PortUtilEvent>().Unsubscribe(DoMyPrismEvent);
}
/// <summary>
/// 点击取药箱按钮
/// </summary>
//public DelegateCommand TakeBoxCommand
//{
// get => new DelegateCommand(TakeBoxMethod);
//}
//public void TakeBoxMethod()
//{
// OperationType = 1;
// GetUseBox();
//}
/// <summary>
/// 点击还药箱按钮
/// </summary>
//public DelegateCommand ReturnBoxCommand
//{
// get => new DelegateCommand(ReturnBoxMethod);
//}
//public void ReturnBoxMethod()
//{
// OperationType = 0;
// GetUseBox();
// RequestData();
//}
}
}