From 452132d37fd32cc7f39ed5f70328cd3de1fd4732 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 16 一月 2025 10:30:11 +0800 Subject: [PATCH] 优化入库完成上报ERP --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs | 139 ++++++---------------------------- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs | 9 -- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 40 ++++------ 3 files changed, 43 insertions(+), 145 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" index 5939418..bc3971c 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" @@ -27,17 +27,10 @@ WebResponseContent MaterielGroup(SaveModel saveModel); /// <summary> - /// 鍏ュ簱瀹屾垚涓婃姤 寮冪敤 - /// </summary> - /// <returns></returns> - #region 寮冪敤 - WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo,Dt_InboundOrder inboundOrder, List<ERPInboundDetailModel> detailModels); - #endregion - /// <summary> /// 鍏ュ簱瀹屾垚涓婃姤 /// </summary> /// <returns></returns> - WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder,List<Dt_StockInfoDetail> stockInfoDetails); + WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder); /// <summary> /// /// </summary> 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 bcf23c8..b7ab61d 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) { @@ -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,45 +746,39 @@ { 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.QueryData(x => stockInfoDetails.Select(x => x.StockId).ToList().Contains(x.Id)); Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == inboundOrder.WarehouseId); if (warehouse == null) { return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�"); } - List<ERPInboundDetailModel>? detailModels = null; + List<ERPInboundDetailModel>? detailModels = new List<ERPInboundDetailModel>(); foreach (var item in stockInfoDetails) { - Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.Id == item.StockId); - if (detailModels!=null && detailModels.FirstOrDefault(x=>x.Rack==stockInfo.LocationCode)!=null) + ERPInboundDetailModel detailModel = new ERPInboundDetailModel() { - var detailModel = detailModels.FirstOrDefault(x => x.Rack == stockInfo.LocationCode); - detailModel.Quantity = (Convert.ToDouble(detailModel.Quantity) + item.StockQuantity).ToString(); - } - else - { - 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); - } + ExpiryDate = item.EffectiveDate ?? "", + LocationCode = warehouse.WarehouseCode, + MaterialsCode = item.MaterielCode, + MfgDate = item.ProductionDate ?? "", + QtyCustoms = "0", + Quantity = item.StockQuantity.ToString(), + Rack = stockInfos.FirstOrDefault(x => x.Id == item.StockId).LocationCode, + ReceiptCode = inboundOrder.UpperOrderNo, + ReceiptSerNo = item.InboundOrderRowNo.ToString() + }; + detailModels.Add(detailModel); } 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 +788,7 @@ Way = 1, Details = detailModels }; - //鎺ㄩ�丒RP 娴嬭瘯娉ㄩ噴 + //鎺ㄩ�丒RP _invokeERPService.InvokeInboundOrderApi(model); return WebResponseContent.Instance.OK(); } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" index 1501360..875c1e5 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" @@ -214,16 +214,15 @@ #endregion Dt_InboundOrder? inboundOrder = _inboundRepository.InboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First(); + if (inboundOrder == null) + { + return WebResponseContent.Instance.Error($"瀵瑰簲鍏ュ簱鍗曚笉瀛樺湪"); + } + //鏌ヨ鍘熷畬鎴愮殑鍏ュ簱鏄庣粏鏁伴噺 + int overCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; Dt_InboundOrderDetail? inboundOrderDetail = null; - List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>(); if (stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()) { - if (inboundOrder == null) - { - return WebResponseContent.Instance.Error($"瀵瑰簲鍏ュ簱鍗曚笉瀛樺湪"); - } - //鏌ヨ鍘熷畬鎴愮殑鍏ュ簱鏄庣粏鏁伴噺 - int overCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.RowNo == stockInfo.Details.FirstOrDefault()?.InboundOrderRowNo); foreach (var item in stockInfo.Details) { @@ -249,16 +248,15 @@ inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); overCount += 1; } - else if(inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) + else if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) { inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Inbounding.ObjToInt(); } - detailModels.Add(detailModel); } - if (inboundOrder.Details.Count == overCount) - { - inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt(); - } + } + if (inboundOrder.Details.Count == overCount) + { + inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt(); } if ((stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt() || stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt()) && warehouse.WarehouseCode == WarehouseEnum.HA64.ToString()) @@ -292,20 +290,14 @@ _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details); _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted); _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, stockInfo.Details.Sum(x => x.StockQuantity), stockInfo.Details.Sum(x => x.StockQuantity), StockChangeTypeEnum.Inbound, taskNum); - if (inboundOrder != null) + _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder); + if (inboundOrderDetail != null) { - _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder); - if (inboundOrderDetail!=null) - { - _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail); - } + _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail); } _unitOfWorkManage.CommitTran(); - if (stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt() && inboundOrder.OrderStatus== InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) - { - List<Dt_StockInfoDetail> stockInfoDetails = _stockRepository.StockInfoDetailRepository.QueryData(x => x.OrderNo == inboundOrder.InboundOrderNo); - _inboundOrderService.FeedbackInboundOrder(inboundOrder, stockInfoDetails); - } + if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) + _inboundOrderService.FeedbackInboundOrder(inboundOrder); return WebResponseContent.Instance.OK(); } catch (Exception ex) -- Gitblit v1.9.3