wangxinhui
2026-03-17 89bccb9b8fb1070f7ac5f36510c868fecead9384
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -59,6 +59,10 @@
                {
                    return content.Error($"生成任务失败");
                }
                tasks.ForEach(x =>
                {
                    x.Grade = 99;
                });
                stockInfos.ForEach(x =>
                {
                    x.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
@@ -679,7 +683,7 @@
                List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
                //生成任务、库存等信息
                (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutSGOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutSGTaskDataHandle(keys);
                (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutSGOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?,string) result = OutSGTaskDataHandle(keys);
                if (result.Item2 != null && result.Item2.Count > 0)
                {
                    stockInfos.AddRange(result.Item2);
@@ -700,6 +704,7 @@
                {
                    tasks.AddRange(result.Item1);
                }
                content.Message = result.Item6;
                //处理出库数据
                return GenerateOutboundTaskDataUpdate(tasks, stockInfos, outSGOrderDetails, outStockLockInfos, locationInfos);
            }
@@ -717,7 +722,7 @@
        /// <param name="stockSelectViews"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutSGOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) OutSGTaskDataHandle(int[] keys)
        public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutSGOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?,string) OutSGTaskDataHandle(int[] keys)
        {
            List<Dt_Task> tasks = new List<Dt_Task>();
            List<Dt_OutSGOrderDetail> outSGOrderDetails = _outboundRepository.OutSGOrderDetailRepository.QueryData(x => keys.Contains(x.Id));
@@ -737,7 +742,7 @@
            List<Dt_LocationInfo>? locationInfos = null;
            //分配库存
            (List<Dt_StockInfo>, List<Dt_OutSGOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutSGOrderDetailService.AssignStockOutbound(outSGOrderDetails);
            (List<Dt_StockInfo>, List<Dt_OutSGOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>,string) result = _outboundService.OutSGOrderDetailService.AssignStockOutbound(outSGOrderDetails);
            if (result.Item1 != null && result.Item1.Count > 0)
            {
                //获取任务
@@ -771,7 +776,7 @@
                throw new Exception("无库存");
            }
            return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos);
            return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos, result.Item5);
        }
        /// <summary>
        /// å¤„理出库数据
@@ -893,11 +898,13 @@
                    }
                }
                #endregion
                List<Dt_OutLineView> outLineViewsDel = _outboundRepository.OutLineViewRepository.QueryData(x => stockInfos.Select(x=>x.PalletCode).Contains(x.PalletCode));
                _unitOfWorkManage.BeginTran();
                _stockRepository.StockInfoRepository.UpdateData(stockInfos);
                _outboundRepository.OutStockLockInfoRepository.UpdateData(outStockLockInfos);
                _outboundRepository.OutSGOrderRepository.UpdateData(outSGOrders);
                _outboundRepository.OutSGOrderDetailRepository.UpdateData(orderDetails);
                _outboundRepository.OutLineViewRepository.DeleteData(outLineViewsDel);
                _unitOfWorkManage.CommitTran();
                content.OK(ExistNoCodes.Count>0 ? string.Join(",", ExistNoCodes)+"老厂可扣库存不存在" : "");
            }
@@ -947,6 +954,7 @@
        public WebResponseContent ReceiveOutBound(List<OutMESOrderDTO> outMESOrderDTOs)
        {
            WebResponseContent content = new WebResponseContent();
            string ErrorMsg = "";
            try
            {
                if (outMESOrderDTOs == null || outMESOrderDTOs.Count <= 0)
@@ -976,11 +984,11 @@
                //获取所有加工中心
                List<Dt_MakeCenterInfo> makeCenterInfos = _basicRepository.MakeCenterInfoRepository.QueryData();
                OutMESOrderDTO? CheckMaterialCode = outMESOrderDTOs.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode));
                if (CheckMaterialCode != null)
                {
                    return content.Error($"物料编码{nameof(OutMESOrderDTO.MaterialCode)}:{CheckMaterialCode.MaterialCode}信息不存在");
                }
                //OutMESOrderDTO? CheckMaterialCode = outMESOrderDTOs.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode));
                //if (CheckMaterialCode != null)
                //{
                //    return content.Error($"物料编码{nameof(OutMESOrderDTO.MaterialCode)}:{CheckMaterialCode.MaterialCode}信息不存在");
                //}
                OutMESOrderDTO? CheckMakeCenterCode = outMESOrderDTOs.FirstOrDefault(x => !makeCenterInfos.Select(x => x.MakeCode).Contains(x.MakeCode));
                if (CheckMakeCenterCode!=null)
                {
@@ -991,17 +999,23 @@
                {
                    return content.Error($"领料计划{nameof(OutMESOrderDTO.OutDetailId)}:{OldoutMESOrder.OutDetailId}信息已存在");
                }
                List<Dt_OutMESOrder> AddoutMESOrders = outMESOrderDTOs.Select(x => _mapper.Map<Dt_OutMESOrder>(x)).ToList();
                foreach (var item in AddoutMESOrders)
                List<Dt_OutMESOrder> AddoutMESOrders = new List<Dt_OutMESOrder>();
                foreach (var item in outMESOrderDTOs)
                {
                    Dt_MaterielInfo materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialCode);
                    Dt_MakeCenterInfo makeCenterInfo=makeCenterInfos.FirstOrDefault(x => x.MakeCode == item.MakeCode);
                    item.MakeArea = makeCenterInfo.MakeArea;
                    item.WarehouseId = materielInfo.WarehouseId;
                    item.MaterielUnit = materielInfo.MaterielUnit;
                    item.AssistUnitCode = materielInfo.AssistUnitCode;
                    Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialCode);
                    if (materielInfo==null)
                    {
                        ErrorMsg += $"物料编码:{item.MaterialCode}信息不存在;";
                        continue;
                    }
                    Dt_MakeCenterInfo makeCenterInfo = makeCenterInfos.FirstOrDefault(x => x.MakeCode == item.MakeCode);
                    Dt_OutMESOrder outMESOrder = _mapper.Map<Dt_OutMESOrder>(item);
                    outMESOrder.MakeArea = makeCenterInfo.MakeArea;
                    outMESOrder.WarehouseId = materielInfo.WarehouseId;
                    outMESOrder.MaterielUnit = materielInfo.MaterielUnit;
                    outMESOrder.AssistUnitCode = materielInfo.AssistUnitCode;
                    AddoutMESOrders.Add(outMESOrder);
                }
                _unitOfWorkManage.BeginTran();
                //操作数据,并分配需求库存
                _outboundRepository.OutMESOrderRepository.AddData(AddoutMESOrders);
@@ -1090,8 +1104,7 @@
                //    }
                //}
                _unitOfWorkManage.CommitTran();
                return content.OK("接收成功");
                return content.OK(ErrorMsg.IsNullOrEmpty()? "接收成功" : $"信息:{ErrorMsg}");
            }
            catch (Exception ex)
            {