XiangTan_DM/DM_Weight/ViewModels/CollectDrugDialogViewModel.cs

232 lines
8.0 KiB
C#
Raw Normal View History

2024-12-03 13:22:42 +08:00
using DM_Weight.Models;
using DM_Weight.msg;
using DM_Weight.select;
using DM_Weight.util;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
public class CollectDrugDialogViewModel : BindableBase, IDialogAware
{
public string Title => "请领申请确认";
//请领数量
private int _quantityCount;
public int QuantityCount { get { return _quantityCount; } set { SetProperty(ref _quantityCount, value); } }
//交处方张数
private int _orderCount;
public int OrderCount { get { return _orderCount; } set { SetProperty(ref _orderCount, value); } }
//空瓶数量
//private int _emptyCount;
//public int EmptyCount { get { return _emptyCount; } set { SetProperty(ref _emptyCount, value); } }
static string[] strColloctedId=ConfigurationManager.AppSettings["colloctedId"].Split(',');
public static List<OrderTakeSelect> StaticSelects = new()
{
new OrderTakeSelect
{
Code = strColloctedId[1] is null?"":strColloctedId[1],
Name = strColloctedId[0]is null?"":strColloctedId[0]
},
new OrderTakeSelect
{
Code = strColloctedId[1] is null?"":strColloctedId[3],
Name = strColloctedId[0]is null?"":strColloctedId[2]
}
};
private List<OrderTakeSelect> _selects = StaticSelects;
public List<OrderTakeSelect> Selects
{
get { return _selects; }
set
{
SetProperty(ref _selects, value);
}
}
private OrderTakeSelect _selectedItem = StaticSelects[0];
/// <summary>
/// 查询条件 查询字段
/// </summary>
public OrderTakeSelect SelectedItem
{
get { return _selectedItem; }
set
{
SetProperty(ref _selectedItem, value);
}
}
private List<CollectDrug> _beforeGroupcollectDrugList;
public List<CollectDrug> BeforeGroupCollectDrugList
{
get { return _beforeGroupcollectDrugList; }
set { SetProperty(ref _beforeGroupcollectDrugList, value); }
}
private List<CollectDrug> _collectDrugList;
public List<CollectDrug> CollectDrugList
{
get { return _collectDrugList; }
set { SetProperty(ref _collectDrugList, value); }
}
IEventAggregator _eventAggregator;
public CollectDrugDialogViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
}
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
BeforeGroupCollectDrugList = parameters.GetValue<List<CollectDrug>>("ApplyDrug");
QuantityCount = BeforeGroupCollectDrugList.Sum(ap => ap.Quantity);
OrderCount = BeforeGroupCollectDrugList.Count;
CollectDrugList = BeforeGroupCollectDrugList.GroupBy(cd => cd.DrugId).Select(cd => new CollectDrug
{
DrugName = cd.Aggregate("", (Ccurrent, collectdrug) => collectdrug.DrugName),
Quantity = cd.Sum(cd => cd.Quantity),
DrugSpec = cd.Max(cd => cd.DrugSpec),
Manufactory = cd.Max(cd => cd.Manufactory),
DrugId=cd.Max(cd=>cd.DrugId)
}).ToList();
//EmptyCount = 0;
}
public DelegateCommand CreateApply
{
get => new DelegateCommand(CreateApplyMethod);
}
/// <summary>
/// 生成请领单
/// </summary>
public void CreateApplyMethod()
{
var f = SqlSugarHelper.Db.UseTran(() =>
{
string pleaseNo = DateTime.Now.ToString("yyyyMMddHHmmss");
if (CollectDrugList != null && CollectDrugList.Count > 0)
{
for (int d = 0; d < CollectDrugList.Count; d++)
{
CollectDrug groupDrug= CollectDrugList[d];
//保存请领申请表
SqlSugarHelper.Db.Insertable(new DrugPleaseClaim()
{
GetQuantity = groupDrug.Quantity,// QuantityCount,
ReturnPrQuantity = OrderCount,
Type = 32,
State = 0,
MachineId = SelectedItem.Code,
ApplyUser = HomeWindowViewModel.Operator.Id,
ReviewUser = HomeWindowViewModel.Reviewer == null ? 0 : HomeWindowViewModel.Reviewer.Id,
DoDate = DateTime.Now,
Department = ConfigurationManager.AppSettings["department"].ToString(),
PleaseNo = pleaseNo,
DrugId = groupDrug.DrugId,
TotalQuantity= QuantityCount
}).ExecuteCommand();
}
}
for (int i = 0; i < BeforeGroupCollectDrugList.Count; i++)
{
CollectDrug collectDrug = BeforeGroupCollectDrugList[i];
//修改处方表里的 药品请领状态0未请领;1已请领
SqlSugarHelper.Db.Updateable(new OrderInfo()
{
ApplyStatus = 1,
OrderNo = collectDrug.OrderNo,
MachineId = ConfigurationManager.AppSettings["machineId"].ToString()
}).UpdateColumns(it => new { it.ApplyStatus }).Where(it => it.OrderNo == collectDrug.OrderNo).ExecuteCommand();
//保存处方、请领申请中间表
SqlSugarHelper.Db.Insertable(new CollectDrug()
{
DrugPleaseClaimId = pleaseNo,
OrderNo = collectDrug.OrderNo,
DrugId = collectDrug.DrugId,
Createdate = DateTime.Now,
Status = 0,
MachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
CurrentMachineId = ConfigurationManager.AppSettings["machineId"].ToString(),
//ConfigurationManager.AppSettings["colloctedId"].ToString(),
Quantity = collectDrug.Quantity
}).ExecuteCommand();
}
});
if (f.IsSuccess)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请领单已生成!",
Type = MsgType.SUCCESS,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请领单生成失败!",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
}
public DelegateCommand BtnCloseCommand
{
get => new DelegateCommand(() =>
{
//DialogParameters parameters = new DialogParameters();
//parameters.Add("",);
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
}
}