using DM_Weight.Models; using DM_Weight.msg; using DM_Weight.util; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using SqlSugar; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Reflection.PortableExecutable; using System.Text; using System.Threading.Channels; using System.Threading.Tasks; using static Unity.Storage.RegistrationSet; namespace DM_Weight.ViewModels { public class DestoryEmptyDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime { public bool KeepAlive => false; public string Title => "空瓶销毁"; private List _machineRecords = new(); public List _MachineRecords { get => _machineRecords; set { SetProperty(ref _machineRecords, value); } } private MachineRecord _machineRecord = new(); public MachineRecord _MachineRecord { get => _machineRecord; set { SetProperty(ref _machineRecord, value); } } private ChannelStock _channelStock; public ChannelStock _ChannelStock { get => _channelStock; set => SetProperty(ref _channelStock, value); } IEventAggregator _eventAggregator; public DestoryEmptyDialogViewModel(IEventAggregator eventAggregator) { _eventAggregator = eventAggregator; } public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { ChannelStock _record = parameters.GetValue("channel"); _ChannelStock = _record; RequestData(); } public void RequestData() { List queryData = SqlSugarHelper.Db.Queryable() .Includes(mr => mr.User) .Where(mr => mr.DrugId == _ChannelStock.DrugId) .Where(mr => mr.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")) .Where(mr => mr.Type == 32) //.Where(mr => mr.Status != 2) .Where(mr=>mr.IsDestroy==0) .OrderByDescending(mr => mr.OperationTime) .OrderBy(mr => mr.Id) .ToList(); _MachineRecords = queryData; } // 取消按钮 public DelegateCommand CancleTake { get => new DelegateCommand(() => { RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); } public DelegateCommand BtnCloseCommand { get => new DelegateCommand(() => { //DialogParameters parameters = new DialogParameters(); //parameters.Add("",); // 关闭当前窗口 RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); } public DelegateCommand RowSelected { get => new DelegateCommand(() => { if (_MachineRecord != null && _MachineRecord.Quantity > 0) { _MachineRecords = _MachineRecords.Select(x => { if (x.Id == _MachineRecord.Id) { x.IsSelected = !x.IsSelected; } return x; }).ToList(); //DialogParameters dialogParameters = new DialogParameters(); //dialogParameters.Add("channel", Channel); //DialogServiceExtensions.ShowDialogHost(_dialogService, "ReturnEmptyDialog", dialogParameters, DoDialogResult, "RootDialog"); } }); } /// /// 空瓶销毁 /// public DelegateCommand DestoryEmptyCommand { get => new DelegateCommand(() => { List records = _MachineRecords.FindAll(it => it.IsSelected).ToList(); if (records != null && records.Count > 0) { var f = SqlSugarHelper.Db.UseTran(() => { for (int i = 0; i < records.Count; i++) { MachineRecord record= records[i]; //修改库存数量 _ChannelStock.Quantity = _ChannelStock.Quantity - record.Quantity; SqlSugarHelper.Db.Updateable(_ChannelStock).ExecuteCommand(); //修改记录表中状态 SqlSugarHelper.Db.Updateable(record).ReSetValue(mr => { mr.IsDestroy = 1; }).ExecuteCommand(); //记录销毁明细 SqlSugarHelper.Db.Insertable(new DestoryDetail() { MachineId = ConfigurationManager.AppSettings["machineId"].ToString(), Operatorid = HomeWindowViewModel.Operator?.Id, Reviewerid = HomeWindowViewModel.Reviewer?.Id, RecordId = record.Id, //OrderId = ChannelStock.ManuNo, //,StockQuantity = nowChannels.Sum(it => it.Quantity) }).ExecuteCommand(); } }); if (f.Data) { RequestData(); AlertMsg alertMsg = new AlertMsg { Message = "销毁完成", Type = MsgType.SUCCESS, }; _eventAggregator.GetEvent().Publish(alertMsg); RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); } if (!f.IsSuccess) { AlertMsg alertMsg = new AlertMsg { Message = "销毁失败!", Type = MsgType.ERROR, }; _eventAggregator.GetEvent().Publish(alertMsg); } } else { AlertMsg alertMsg = new AlertMsg { Message = "请选择要销毁的数据", Type = MsgType.ERROR, }; _eventAggregator.GetEvent().Publish(alertMsg); } }); } } }