232 lines
8.0 KiB
C#
232 lines
8.0 KiB
C#
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));
|
||
});
|
||
}
|
||
}
|
||
}
|