From 189ef97da64b5e3156199320c28e897c19b06eb9 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期四, 16 一月 2025 17:20:19 +0800 Subject: [PATCH] 入库上报优化 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs | 134 ++++++++------------------------------------ 1 files changed, 26 insertions(+), 108 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" index 42c0d58..92e8817 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" @@ -342,7 +342,6 @@ List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); List<int> detailKeys = new List<int>(); - int newCount = 0; foreach (var model in models) { if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null) @@ -373,7 +372,7 @@ EffectiveDate = model.EffectiveDate, InboundOrderRowNo = notGroupDetail.RowNo, }; - newCount++; + oldCount++; if (stockInfo.Id > 0) { @@ -389,8 +388,7 @@ } //鍏ュ簱鏄庣粏鏂板瀹屾垚鏁伴噺 - //int newCount = inboundOrderDetails.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; - if (inboundOrder.Details.Count == (newCount + oldCount)) + if (inboundOrder.Details.Count == oldCount) { inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt(); } @@ -412,39 +410,9 @@ _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.Inbound); _unitOfWorkManage.CommitTran(); - #region 涓婃姤ERP鍏ュ簱瀹屾垚 - List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>(); - foreach (var item in stockInfo.Details) - { - ERPInboundDetailModel detailModel = new ERPInboundDetailModel() - { - ExpiryDate = item.EffectiveDate ?? "", - LocationCode = warehouse.WarehouseCode, - MaterialsCode = item.MaterielCode, - MfgDate = item.ProductionDate ?? "", - QtyCustoms = "0", - Quantity = item.StockQuantity.ToString(), - Rack = stockInfo.LocationCode, - ReceiptCode = inboundOrder.UpperOrderNo, - ReceiptSerNo = item.InboundOrderRowNo.ToString() - }; - detailModels.Add(detailModel); - } - ERPInboundModel eRPInboundModel = new ERPInboundModel() - { - Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)), - CreatorCode = inboundOrder.Creater, - EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"), - StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - SuppliersId = inboundOrder.SupplierId, - Type = "S", - UniqueTag = inboundOrder.Id.ToString(), - WarehouseCode = warehouse.WarehouseCode, - Way = 1, - Details = detailModels - }; - //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴 - _invokeERPService.InvokeInboundOrderApi(eRPInboundModel); + #region 鍏ュ簱瀹屾垚涓婃姤ERP + if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) + FeedbackInboundOrder(inboundOrder); #endregion content.OK(); } @@ -513,7 +481,7 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�"); } - List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode && x.BatchNo==(models.FirstOrDefault()?.LotNo ?? "")).ToList(); + List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode && x.BatchNo == (models.FirstOrDefault()?.LotNo ?? "")).ToList(); if (inboundOrderDetails == null || inboundOrderDetails.Count <= 0) { @@ -534,7 +502,7 @@ PalletCode = palletCode, StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(), WarehouseId = inboundOrder.WarehouseId, - PalletType = GetPalletType(warehouse, palletCode, materielInfo), + PalletType = GetPalletType(warehouse, palletCode), Details = new List<Dt_StockInfoDetail>() }; } @@ -678,7 +646,7 @@ PalletCode = palletCode, StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt(), WarehouseId = warehouse.WarehouseId, - PalletType = GetPalletType(warehouse, palletCode, materielInfo), + PalletType = GetPalletType(warehouse, palletCode), Details = new List<Dt_StockInfoDetail>() }; } @@ -766,59 +734,10 @@ return content; } /// <summary> - /// 鍏ュ簱瀹屾垚涓婃姤ERP 寮冪敤 - /// </summary> - /// <returns></returns> - #region 寮冪敤 - public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo, Dt_InboundOrder inboundOrder, List<ERPInboundDetailModel> detailModels) - { - WebResponseContent content = new WebResponseContent(); - try - { - if (inboundOrder.Details.Count == 0) - { - return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅"); - } - if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) - { - return WebResponseContent.Instance.Error($"鍏ュ簱鍗曟嵁宸插畬鎴�"); - } - Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId); - if (warehouse == null) - { - return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�"); - } - - ERPInboundModel model = new ERPInboundModel() - { - Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)), - CreatorCode = inboundOrder.Creater,//娴嬭瘯 - EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"), - StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - SuppliersId = inboundOrder.SupplierId, - Type = "S", - UniqueTag = inboundOrder.Id.ToString(), - WarehouseCode = warehouse.WarehouseCode, - Way = 1, - Details = detailModels - }; - //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴 - _invokeERPService.InvokeInboundOrderApi(model); - return WebResponseContent.Instance.OK(); - } - catch (Exception ex) - { - _unitOfWorkManage.RollbackTran(); - content.Error(ex.Message); - } - return content; - } - #endregion - /// <summary> /// 鍏ュ簱瀹屾垚涓婃姤ERP /// </summary> /// <returns></returns> - public WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder, List<Dt_StockInfoDetail> stockInfoDetails) + public WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder) { WebResponseContent content = new WebResponseContent(); try @@ -827,37 +746,36 @@ { return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅"); } - if (stockInfoDetails.Count==0) + + List<Dt_StockInfoDetail> stockInfoDetails = _stockRepository.StockInfoDetailRepository.QueryData(x => x.OrderNo == inboundOrder.InboundOrderNo); + if (stockInfoDetails.Count == 0) { return WebResponseContent.Instance.Error($"鏈壘鍒板簱瀛樻槑缁嗕俊鎭�"); } + //鑾峰彇璇ュ叆搴撳崟鎵�鏈夊簱瀛� + List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => stockInfoDetails.GroupBy(x => x.StockId).Select(x => x.Key).Contains(x.Id)).Includes(x => x.Details).ToList(); Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == inboundOrder.WarehouseId); if (warehouse == null) { return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�"); } - List<ERPInboundDetailModel>? detailModels = null; - foreach (var item in stockInfoDetails) + List<ERPInboundDetailModel>? detailModels = new List<ERPInboundDetailModel>(); + foreach (var stockInfo in stockInfos) { - Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.Id == item.StockId); - if (detailModels!=null && detailModels.FirstOrDefault(x=>x.Rack==stockInfo.LocationCode)!=null) + foreach (var item in stockInfo.Details.GroupBy(x=>x.InboundOrderRowNo).Select(x=>x.Key)) { - var detailModel = detailModels.FirstOrDefault(x => x.Rack == stockInfo.LocationCode); - detailModel.Quantity = (Convert.ToDouble(detailModel.Quantity) + item.StockQuantity).ToString(); - } - else - { + Dt_StockInfoDetail? dt_StockInfoDetail = stockInfo.Details.Where(x => x.InboundOrderRowNo == item).FirstOrDefault(); ERPInboundDetailModel detailModel = new ERPInboundDetailModel() { - ExpiryDate = item.EffectiveDate ?? "", + ExpiryDate = dt_StockInfoDetail?.EffectiveDate ?? "", LocationCode = warehouse.WarehouseCode, - MaterialsCode = item.MaterielCode, - MfgDate = item.ProductionDate ?? "", + MaterialsCode = dt_StockInfoDetail.MaterielCode, + MfgDate = dt_StockInfoDetail.ProductionDate ?? "", QtyCustoms = "0", - Quantity = item.StockQuantity.ToString(), + Quantity = stockInfo.Details.Where(x => x.InboundOrderRowNo == item).Sum(x => x.StockQuantity).ToString(), Rack = stockInfo.LocationCode, ReceiptCode = inboundOrder.UpperOrderNo, - ReceiptSerNo = item.InboundOrderRowNo.ToString() + ReceiptSerNo = item.ToString() }; detailModels.Add(detailModel); } @@ -865,7 +783,7 @@ ERPInboundModel model = new ERPInboundModel() { Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)), - CreatorCode = inboundOrder.Creater,//娴嬭瘯 + CreatorCode = inboundOrder.Creater, EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"), StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), SuppliersId = inboundOrder.SupplierId, @@ -875,7 +793,7 @@ Way = 1, Details = detailModels }; - //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴 + //鎺ㄩ�丒RP _invokeERPService.InvokeInboundOrderApi(model); return WebResponseContent.Instance.OK(); } @@ -1029,7 +947,7 @@ // } //} - public int GetPalletType(Dt_Warehouse warehouse, string palletCode, Dt_MaterielInfo materielInfo) + public int GetPalletType(Dt_Warehouse warehouse, string palletCode) { if (warehouse.WarehouseCode == WarehouseEnum.HA64.ToString()) { -- Gitblit v1.9.3