@page "/Box/BoxReplace" @using MasaBlazorApp3.Pojo.Config; @using MasaBlazorApp3.Pojo.Vo; @using MasaBlazorApp3.Util; @using Microsoft.Extensions.Options; @using Newtonsoft.Json; @using log4net; 药名: @(channelStock.Drug.DrugName) 规格: @(channelStock.Drug.DrugSpec) 批次: @(channelStock.ManuNo) 效期: @(channelStock.EffDate) 库存: @(channelStock.Quantity) 交换药箱: @(SelectedDrawerNo) @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; int[] DrawerNos; int SelectedDrawerNo=0; [Parameter] public ChannelStock channelStock { get; set; } private bool CanTakeDrug = true; // public List data { get; set; } public List selectedDrawerData{ 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() { DrawerNos = await channelListDao.GetDrawerNum(channelStock); base.OnInitializedAsync(); } async Task LoadData(LoadDataArgs args) { isLoading = true; if (DrawerNos != null && DrawerNos.Count() > 0) { SelectedDrawerNo = DrawerNos[0]; var result = await channelListDao.GetChannelStockByDrug(channelStock, SelectedDrawerNo, args.Top, args.Skip); selectedDrawerData = result.Desserts; count = result.TotalDesserts; } isLoading = false; } void RestData() { // PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); // this.status = 0; // data.ForEach(it => // { // it.Status = 0; // it.BeforeQuantity = new int[9]; // it.AfterQuantity = new int[9]; // }); // this.WeightFinnalQuantity = new int[9]; // DrawerNoColNoList.Clear(); } void Cancel() { RestData(); // 关闭弹窗 dialogService.Close(false); } async Task Save() { if (selectedDrawerData!=null&&selectedDrawerData.Any(cl => cl.AddQuantity != 0 && cl.DrugId != null && cl.ManuNo != null)) { if (selectedDrawerData.Where(cs => cs.AddQuantity != 0).Sum(cs => cs.Quantity) > channelStock.Quantity) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "提示", Detail = $"交换总数量不能大于库存", Duration = 4000 }); return; } var b = await channelListDao.BoxReplaceFinish(channelStock,selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList()); if (!b) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 }); logger.Error($"药箱药品替换保存数据库失败,数据{JsonConvert.SerializeObject(selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList())}"); } else { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"交换完成", Duration = 4000 }); // 关闭弹窗 dialogService.Close(true); } //重置状态 this.RestData(); } else { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "提示", Detail = $"无可交换数据或未输入交换数量", Duration = 4000 }); return; } } async Task SelectedDrawerChange(object drawerNo) { var result = await channelListDao.GetChannelStockByDrug(channelStock, Convert.ToInt32(drawerNo), 8, 0); selectedDrawerData = result.Desserts; } int currentCol = 0; RadzenDataGrid grid; void OnCellClick(DataGridCellMouseEventArgs args) { currentCol = args.Data.ColNo; grid.EditRow(args.Data); } }