XiangTan_DM/DM_Weight/ViewModels/DestoryEmptyDialogViewModel.cs

212 lines
7.1 KiB
C#

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<MachineRecord> _machineRecords = new();
public List<MachineRecord> _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<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
ChannelStock _record = parameters.GetValue<ChannelStock>("channel");
_ChannelStock = _record;
RequestData();
}
public void RequestData()
{
List<MachineRecord> queryData = SqlSugarHelper.Db.Queryable<MachineRecord>()
.Includes<UserList>(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");
}
});
}
/// <summary>
/// 空瓶销毁
/// </summary>
public DelegateCommand DestoryEmptyCommand
{
get => new DelegateCommand(() =>
{
List<MachineRecord> 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<SnackbarEvent>().Publish(alertMsg);
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
}
if (!f.IsSuccess)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "销毁失败!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请选择要销毁的数据",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
});
}
}
}