yanjinhui
9 天以前 0f83419ea162d10cb3bc9f4a471ab1e65df68dff
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs
@@ -43,8 +43,9 @@
        private readonly ISupplyTaskService _supplyTaskService;
        private readonly ISupplyTaskHtyService _supplyTaskHtyService;
        private readonly ITacticsService _tacticsService;
        private readonly IMessageInfoService _messageInfoService;
        public IRepository<Dt_DeliveryOrder> Repository => BaseDal;
        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ISupplyTaskHtyService supplyTaskHtyService) : base(BaseDal)
        public DeliveryOrderServices(IRepository<Dt_DeliveryOrder> BaseDal, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ISupplyTaskHtyService supplyTaskHtyService, IMessageInfoService messageInfoService) : base(BaseDal)
        {
            _basicService = basicService;
            _unitOfWorkManage = unitOfWorkManage;
@@ -55,6 +56,7 @@
            _cabinOrderServices = cabinOrderServices;
            _tacticsService = tacticsService;
            _supplyTaskHtyService = supplyTaskHtyService;
            _messageInfoService = messageInfoService;
        }
        #region åˆ›å»ºå‡ºåº“单
        /// <summary>
@@ -225,7 +227,6 @@
                        if (materielInfo == null) throw new Exception($"未找到药品编码【{detail.goods_no}】的信息");
                        if (!Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType))
                            throw new Exception($"请设置药品编号【{detail.goods_no}】的属性分类");
                        if (materielInfo.BoxQty < 1) throw new Exception($"请设置药品编号【{detail.goods_no}】的箱规数量");
                        #endregion
                        #region å¤§ä»¶
                        if (materielInfo.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart)//如果物料是大件
@@ -307,6 +308,7 @@
                        #endregion
                        else
                        {
                            if (materielInfo.BoxQty < 1) throw new Exception($"请设置药品编号【{detail.goods_no}】的箱规数量");
                            List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>();
                            Dt_DeliveryOrderDetail orderDetail = null;
                            Dt_DeliveryOrderDetail orderDetailLK = null;
@@ -449,6 +451,7 @@
                        BaseDal.Db.InsertNav(entityOrderLK).Include(x => x.Details).ExecuteCommand();
                    #endregion
                }
                webResponseContent.OK();
            }
            catch (Exception ex)
            {
@@ -555,7 +558,7 @@
                        if (Qty != item.order_qty) throw new Exception($"盘盈入库单【{order.order_no}】物料编号【{item.goods_no}】物料批次【{item.batch_num}】的盘盈数量有误");
                        //找所有库存
                        List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo);
                        //获取立库盘点差异数
                        //获取立库盘点差异数.。。。。。。。。。。。。
                        var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
                        var LkQty = Math.Abs(inventoryLK.StockQuantity - inventoryLK.SupplyQuantity);
                        //获取大件库盘点差异数
@@ -624,7 +627,8 @@
                                    Status = 2,
                                }).ToList()
                            };
                            Repository.AddData(entityOrder);
                            Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
                            //Repository.AddData(entityOrder);
                            #endregion
                        }
                        else
@@ -653,7 +657,7 @@
                                        OrderNo = order.order_no,
                                        StockQuantity = Math.Abs(inventoryInfo.StockQuantity - inventoryInfo.SupplyQuantity),
                                        SupplyQuantity = 0,
                                        Remark = "盘盈入库"
                                        Remark = "盘亏出库"
                                    };
                                    _supplyTaskHtyService.AddData(supplyTask_Hty);
                                }
@@ -689,7 +693,8 @@
                                        Status = 2,
                                    }).ToList()
                                };
                                Repository.AddData(cabinOrder);
                                //Repository.AddData(cabinOrder);
                                Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand();
                            }
                            #endregion
@@ -714,15 +719,17 @@
                                    Status = 0,
                                }).ToList()
                            };
                            Repository.AddData(entityOrder);
                            Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand();
                            //Repository.AddData(entityOrder);
                            #endregion
                        }
                        return WebResponseContent.Instance.OK("成功");
                    }
                }
            }
            catch (Exception e)
            catch (Exception ex)
            {
                content.Error(e.Message);
                content.Error(ex.Message);
            }
            return content;
        }
@@ -848,6 +855,12 @@
            return content;
        }
        /// <summary>
        /// pad出库完成
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent OutFinish(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
@@ -935,24 +948,27 @@
                supplyTask.TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt();
                _supplyTaskService.Repository.DeleteAndMoveIntoHty(supplyTask, OperateTypeEnum.人工完成);
                #region åº“存批次
                Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode == inventoryInfo.MaterielCode);
                if (inventory_Batch != null)
                #region åº“存批次 å¦‚果任务类型是调拨出库任务(8)就不修改批次库存
                if (supplyTask.TaskType != TaskTypeEnum.AllocatOut.ObjToInt())
                {
                    inventory_Batch.StockQuantity -= supplyTask.StockQuantity;
                    inventory_Batch.OutboundQuantity -= supplyTask.StockQuantity;
                    if (inventory_Batch.StockQuantity <= 0)
                        _inventory_BatchServices.DeleteData(inventory_Batch);
                    else
                        _inventory_BatchServices.UpdateData(inventory_Batch);
                    Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode == inventoryInfo.MaterielCode);
                    if (inventory_Batch != null)
                    {
                        inventory_Batch.StockQuantity -= supplyTask.StockQuantity;
                        inventory_Batch.OutboundQuantity -= supplyTask.StockQuantity;
                        if (inventory_Batch.StockQuantity <= 0)
                            _inventory_BatchServices.DeleteData(inventory_Batch);
                        else
                            _inventory_BatchServices.UpdateData(inventory_Batch);
                    }
                }
                #endregion
                if (supplyTask.WarehouseCode == WarehouseEnum.立库.ObjToInt().ToString("000"))
                {
                    materielInfo.Business_qty -= supplyTask.StockQuantity;
                    _basicService.MaterielInfoService.Repository.UpdateData(materielInfo);
                    //if (materielInfo.Business_qty < materielInfo.MinQty)
                    //    CreateAllocatInOut(materielInfo);//创建调拨任务
                    if (materielInfo.Business_qty < materielInfo.MinQty)
                        CreateAllocatInOut(materielInfo);//创建调拨任务
                }
                _unitOfWorkManage.CommitTran();
                #endregion
@@ -964,5 +980,54 @@
            }
            return content;
        }
        /// <summary>
        /// äººå·¥åœ¨å‡ºåº“单中点击完成按钮实现上报
        /// </summary>
        /// <param name="key">id</param>
        /// <returns></returns>
        public WebResponseContent FinishOutOrder(int key)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_DeliveryOrder deliveryOrder = BaseDal.QueryFirst(x => x.Id == key);
                List<Dt_DeliveryOrder> deliveryOrders = Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == deliveryOrder.Out_no).Includes(x => x.Details).ToList();//找出所有出库单号相同的出库单
                _unitOfWorkManage.BeginTran();
                foreach (var item in deliveryOrders)
                {
                    if (item.Details != null)
                        _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.人工完成);
                    item.Modifier = App.User.UserName;
                    item.ModifyDate = DateTime.Now;
                    item.Details = null;
                }
                BaseDal.DeleteAndMoveIntoHty(deliveryOrders, OperateTypeEnum.人工完成);
                if (deliveryOrder.Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString())
                    _unitOfWorkManage.CommitTran();
                else
                {
                    var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
                    var requestDate = new
                    {
                        order_no = deliveryOrder.Out_no
                    };
                    var result = HttpHelper.Post(url, requestDate.ToJsonString());
                    var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                    if (response == null) throw new Exception("上报ERP出库单完成失败!");
                    if (response.resultCode != "0") throw new Exception(response.resultMsg);
                    _unitOfWorkManage.CommitTran();
                }
                content.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
    }
}