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