1
wankeda
3 天以前 be438dd071400936c44a1425ec8d886f63c83329
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -157,45 +157,89 @@
            WebResponseContent content = new();
            try
            {
                OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                orderAddDTO1.OrderNo = orderAddDTO.No;
                orderAddDTO1.UpperOrderNo = orderAddDTO.No;
                orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
                orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode;
                orderAddDTO1.InoutType = orderAddDTO.OrderType;
                orderAddDTO1.OrderType = orderAddDTO.InoutType.ObjToInt();
                IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
                //orderAddDTO1.OrderType = orderAddDTO.OrderType.ObjToInt();
                orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                #region 验证数据
                (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
                if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
                #endregion
                Dt_OutboundOrder inboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO1);
                inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                inboundOrder.Creater = "WMS";
                inboundOrder.CreateDate = DateTime.Now;
                Dt_OutboundOrder oldOutboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
                Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.OrderId == oldOutboundOrder.Id);
                List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>();
                StockSelectViewDTO stockSelectViewDTO = new()
                Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == orderAddDTO.OutWareHouse);
                if (warehouse == null)
                {
                    OrderNo = orderAddDTO1.OrderNo,
                    MaterielCode = outboundOrderDetail.MaterielCode,
                    MaterielName = outboundOrderDetail.MaterielName,
                    UseableQuantity = outboundOrderDetail.OrderQuantity,
                    BatchNo = outboundOrderDetail.BatchNo,
                    LinId = outboundOrderDetail.LinId,
                    PalletCode = outboundOrderDetail.LPNNo,
                };
                _unitOfWorkManage.BeginTran();
                bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                stockSelectViews.Add(stockSelectViewDTO);
                GenerateOutboundTasks(oldOutboundOrder.Id, stockSelectViews);
                _unitOfWorkManage.CommitTran();
                    return WebResponseContent.Instance.Error($"未找到该仓库信息");
                }
                Dt_OutboundOrder oldOuboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO.No).Includes(x => x.Details).First();
                if (oldOuboundOrder != null)
                {
                    //if (oldOuboundOrder.Details.FirstOrDefault(x => x.LinId == Convert.ToInt32(orderAddDTO.LinId)) != null)
                    //{
                    //    return WebResponseContent.Instance.Error($"该明细行号已存在");
                    //}
                    if (oldOuboundOrder.OutWareHouse != warehouse.WarehouseCode)
                    {
                        return WebResponseContent.Instance.Error($"仓库不一致");
                    }
                    else
                    {
                        OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                        orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                        var details = orderAddDTO1.Details.FirstOrDefault();
                        Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail()
                        {
                            LPNNo = details.LPNNo,
                            BatchNo = details.BatchNo,
                            MaterielCode = details.MaterielCode,
                            MaterielName = details.MaterielName,
                            MaterieSpec = details.MaterieSpec,
                            OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                            OrderQuantity = details.OrderQuantity,
                            OrderId = oldOuboundOrder.Id,
                            Creater = "WMS",
                            CreateDate= DateTime.Now,
                        };
                        _outboundOrderDetailRepository.AddData(outboundOrderDetail);
                        //_outboundOrderDetailRepository.AddData(outboundOrderDetail);
                    }
                }
                else
                {
                    OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO();
                    orderAddDTO1.OrderNo = orderAddDTO.No;
                    orderAddDTO1.UpperOrderNo = orderAddDTO.No;
                    orderAddDTO1.OutWareHouse = orderAddDTO.OutWareHouse;
                    orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode;
                    orderAddDTO1.InoutType = orderAddDTO.OrderType;
                    orderAddDTO1.OrderType = orderAddDTO.InoutType.ObjToInt();
                    IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>();
                    //orderAddDTO1.OrderType = orderAddDTO.OrderType.ObjToInt();
                    orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>();
                    #region 验证数据
                    (bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
                    if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
                    #endregion
                    Dt_OutboundOrder inboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO1);
                    inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                    inboundOrder.Creater = "WMS";
                    inboundOrder.CreateDate = DateTime.Now;
                    bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                    Dt_OutboundOrder oldOutboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First();
                    Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.OrderId == oldOutboundOrder.Id);
                    List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>();
                    StockSelectViewDTO stockSelectViewDTO = new()
                    {
                        OrderNo = orderAddDTO1.OrderNo,
                        MaterielCode = outboundOrderDetail.MaterielCode,
                        MaterielName = outboundOrderDetail.MaterielName,
                        UseableQuantity = outboundOrderDetail.OrderQuantity,
                        BatchNo = outboundOrderDetail.BatchNo,
                        LinId = outboundOrderDetail.LinId,
                        PalletCode = outboundOrderDetail.LPNNo,
                    };
                    _unitOfWorkManage.BeginTran();
                    stockSelectViews.Add(stockSelectViewDTO);
                    GenerateOutboundTasks(oldOutboundOrder.Id, stockSelectViews);
                    _unitOfWorkManage.CommitTran();
                }
                content = WebResponseContent.Instance.OK();
            }
            catch (Exception ex)