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));
 | 
						||
            });
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |