From 88d52606d0db8fb0343ebcd2d53c8df62fd05f2a Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期六, 28 十二月 2024 23:39:46 +0800 Subject: [PATCH] 1 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs | 109 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 88 insertions(+), 21 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 2363716..6f1f954 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" @@ -1,5 +1,6 @@ 锘縰sing AutoMapper; using HslCommunication.WebSocket; +using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; @@ -152,17 +153,7 @@ { return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅"); } - MatSerNumAnalysisModel model = new MatSerNumAnalysisModel() - { - MaterielCode = "504907335", - LotNo = "20241217001", - ProductionDate = "2024-12-17", - EffectiveDate = "2025-12-17", - PurchaseOrderNo = "POHA02241227285", - Quantity = 1, - SerialNumber = "M:504907335,BS:20241217001,DM:2024-12-17,DE:2025-12-17,Q:1,PO:POHA02241227285" - };//娴嬭瘯 - //CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum); + MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum); Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterielCode); if (materielInfo == null) { @@ -567,15 +558,97 @@ return WebResponseContent.Instance.Error(ex.Message); } } - public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo) + /// <summary> + /// 鍏ュ簱瀹屾垚涓婃姤ERP + /// </summary> + /// <returns></returns> + public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo,Dt_InboundOrder inboundOrder) { WebResponseContent content=new WebResponseContent(); try { - + if (inboundOrder.Details.Count == 0) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅"); + } + if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) + { + return WebResponseContent.Instance.Error($"鍏ュ簱鍗曟嵁宸插畬鎴�"); + } + List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>(); + Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId); + if (warehouse == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�"); + } + List<Dt_InboundOrderDetail> inboundOrderDetails = new List<Dt_InboundOrderDetail>(); + foreach (var item in stockInfo.Details) + { + Dt_InboundOrderDetail? inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x=>x.RowNo==item.InboundOrderRowNo); + if (inboundOrderDetail == null) + { + continue; + } + 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() + }; + inboundOrderDetail.OverInQuantity += detailModel.Quantity.ObjToInt(); + if (inboundOrderDetail.OverInQuantity== inboundOrderDetail.OrderQuantity) + { + inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); + } + inboundOrderDetails.Add(inboundOrderDetail); + detailModels.Add(detailModel); + } + ERPInboundModel model = new ERPInboundModel() + { + Code = inboundOrder.InboundOrderNo, + CreatorCode = "TC20082",//娴嬭瘯 + 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 + }; + //鍏ュ簱鏄庣粏鏂板瀹屾垚鏁伴噺 + int newCount = inboundOrderDetails.Select(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; + //鍏ュ簱鏄庣粏鍘熷畬鎴愭暟閲� + int oldCount = inboundOrder.Details.Select(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; + string response = _invokeERPService.InvokeInboundOrderApi(model); + ErpRequestContent requestContent = JsonConvert.DeserializeObject<ErpRequestContent>(response); + if (requestContent==null) + { + return WebResponseContent.Instance.Error(); + } + if (requestContent.res==0) + { + return WebResponseContent.Instance.Error(requestContent.Data); + } + _unitOfWorkManage.BeginTran(); + _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails); + if (inboundOrder.Details.Count == (newCount + oldCount)) + { + inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt(); + _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder); + } + _unitOfWorkManage.CommitTran(); + return WebResponseContent.Instance.OK(); } catch (Exception ex) { + _unitOfWorkManage.RollbackTran(); content.Error(ex.Message); } return content; @@ -599,13 +672,9 @@ { return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅"); } - if (inboundOrder.OrderStatus != InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) + if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt()) { - return WebResponseContent.Instance.Error($"鍏ュ簱鍗曟嵁鏈畬鎴�"); - } - if (inboundOrder.Details.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) != null) - { - return WebResponseContent.Instance.Error($"鍏ュ簱鏄庣粏鏈畬鎴�"); + return WebResponseContent.Instance.Error($"鍏ュ簱鍗曟嵁宸插畬鎴�"); } List<Dt_StockInfo> stockInfos = Db.Queryable<Dt_StockInfo>().Where(x => x.Details.Any(v => v.OrderNo == inboundOrder.InboundOrderNo)).Includes(x => x.Details).ToList(); @@ -658,9 +727,7 @@ Way = 1, Details = detailModels }; - string response = _invokeERPService.InvokeInboundOrderApi(model); - return WebResponseContent.Instance.OK(); } catch (Exception ex) -- Gitblit v1.9.3