@page "/Box/BoxAddBoxDetail"
@using MasaBlazorApp3.Pojo.Config;
@using MasaBlazorApp3.Pojo.Vo;
@using MasaBlazorApp3.Util;
@using Microsoft.Extensions.Options;
@using Newtonsoft.Json;
@using log4net;
@code {
@inject Radzen.DialogService dialogService;
@inject IChannelListDao channelListDao;
@inject IOptions setting;
@inject NotificationService _message
@inject PortUtil PortUtil;
private readonly ILog logger = LogManager.GetLogger(typeof(OrderDetailDialog));
// int status;
bool isLoading;
int count;
[Parameter] public ChannelList boxChannelList { get; set; }
public List data { get; set; }
//称重取药数量
int[] WeightFinnalQuantity { get; set; } = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
//开抽屉前操作标识
List DrawerNoColNoList = new List();
protected override async Task OnInitializedAsync()
{
base.OnInitializedAsync();
}
async Task LoadData(LoadDataArgs args)
{
isLoading = true;
data = await channelListDao.getBoxWaitByBox(boxChannelList, args.Top, args.Skip);
// Update the Data property
isLoading = false;
}
// async Task OpenDrawer()
// {
// this.status = 1;
// // 解析需要打开的抽屉列表
// List drawerNos = this.data.GroupBy(it => it.ChannelStock.DrawerNo).Select(it => it.First()).ToList();
// // 根据抽屉类型来决定打开前是否需要查询数量
// var promiseUtil = new PromiseUtil();
// await promiseUtil.taskAsyncLoop(500, 0, async (options, next, stop) =>
// {
// var orderTakeVo = drawerNos[options._data];
// var drawerNo = orderTakeVo.ChannelStock.DrawerNo;
// try
// {
// if (this.status == 0)
// {
// stop();
// }
// // 开启抽屉
// else if (this.status == 1)
// {
// if (orderTakeVo.Status == 0)
// {
// // 判断是否为单支抽屉
// if (setting.Value.single.Contains(drawerNo))
// {
// byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
// orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
// logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
// await PortUtil.HasLightOnByCol(drawerNo, data.Where(ot => ot.ChannelStock.DrawerNo == drawerNo).Select(ot => ot.ChannelStock.ColNo).ToArray());
// }
// for (int i = 0; i < data.Count; i++)
// {
// if (!DrawerNoColNoList.Contains(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo))
// {
// if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
// {
// PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
// PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
// data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
// logger.Info($"称重抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】");
// await Task.Delay(200);
// }
// //是药盒抽屉开药盒
// if (data[i].ChannelStock.BoardType.ToString().Contains("3"))
// {
// PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;
// await PortUtil.OpenBoxByColNo(data[i].ChannelStock.ColNo);
// await Task.Delay(200);
// }
// DrawerNoColNoList.Add(data[i].ChannelStock.DrawerNo.ToString() + data[i].ChannelStock.ColNo);
// }
// }
// var b = await PortUtil.OpenDrawerStatus(drawerNo);
// if (b)
// {
// PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
// PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,取药");
// orderTakeVo.Status = 1;
// next();
// }
// else
// {
// _message.Notify(
// new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 }
// );
// logger.Info($"抽屉打开失败");
// PortUtil.AllLightOff();
// RestData();
// stop();
// }
// }
// // 检测状态
// else if (orderTakeVo.Status == 1)
// {
// // 查询抽屉是否为关闭状态
// var b = await PortUtil.CheckDrawerStatus2(drawerNo);
// // 关闭则改变状态并终止循环
// if (b)
// {
// data.ForEach(cl =>
// {
// if (cl.ChannelStock.DrawerNo == drawerNo)
// {
// cl.GetQuantity = cl.Quantity;
// }
// });
// orderTakeVo.Status = 2;
// PortUtil.AllLightOff();
// if (options._data == drawerNos.Count - 1)
// {
// PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
// PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
// PortUtil.SpeakAsync($"取药完成,请,点击完成按钮进行确认");
// this.status = 2;
// string alertMessage = string.Empty;
// //检查是否称重抽屉,核对实际取出数量是否与应取数量一致,不一致则弹出提示
// for (int i = 0; i < data.Count; i++)
// {
// if (data[i].ChannelStock.BoardType.ToString().Contains("6"))
// {
// PortUtil.DrawerNo = data[i].ChannelStock.DrawerNo;// drawerNo;
// PortUtil.ColNoLst.Add(data[i].ChannelStock.ColNo);
// orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStock.ColNo);
// logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
// WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
// if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
// {
// //称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据
// alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
// }
// await Task.Delay(200);
// }
// if (data[i].ChannelStock.BoardType.ToString().Contains("2"))
// {
// byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo);
// orderTakeVo.AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray();
// logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", orderTakeVo.AfterQuantity)}】");
// WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1] = orderTakeVo.BeforeQuantity[data[i].ChannelStock.ColNo - 1] - orderTakeVo.AfterQuantity[data[i].ChannelStock.ColNo - 1];
// if (data[i].Quantity != WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1])
// {
// alertMessage += $"{data[i].Drug.DrugName}应取数量【{orderTakeVo.Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStock.ColNo - 1]}】";
// }
// }
// }
// if (!string.IsNullOrEmpty(alertMessage))
// {
// //弹出确认对话框
// alertMessage += "应取数与实际取出数不一致确认要保存吗?";
// //弹出确认提示框
// var confirm = await dialogService.OpenAsync(
// $"保存确认",
// new Dictionary() { { "confirmInfo", alertMessage } },
// new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
// logger.Info(alertMessage);
// if (!confirm)
// {
// RestData();
// logger.Info("取消保存");
// // 关闭弹窗
// dialogService.Close(false);
// }
// }
// stop();
// }
// else
// {
// options._data += 1;
// next();
// }
// }
// else
// {
// next(); // continue iteration
// }
// }
// }
// }
// catch (Exception e)
// {
// RestData();
// logger.Info($"{boxChannelList.DrawerNo}药盒取药发生错误,{e.Message}");
// _message.Notify(
// new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"发生错误,{e.Message}", Duration = 4000 }
// );
// if (setting.Value.single.Contains(drawerNo))
// {
// PortUtil.AllLightOff();
// }
// stop();
// }
// });
// }
void Cancel()
{
// 关闭弹窗
dialogService.Close(false);
}
async Task Finish()
{
// 保存账册、操作记录
var b = await channelListDao.BoxAddBoxFinish(boxChannelList);
if (!b)
{
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 });
logger.Error($"手术室药箱取药保存数据库失败,数据{JsonConvert.SerializeObject(data)}");
// 关闭弹窗
dialogService.Close(false);
}
else
{
// 关闭弹窗
dialogService.Close(true);
}
}
}