From a6e0ea9ce13e791f3edae4edffeb3be3ccb760be Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期一, 31 三月 2025 02:14:59 +0800 Subject: [PATCH] 版本更新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs | 266 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 228 insertions(+), 38 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" index 7effb11..9954061 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" @@ -159,7 +159,7 @@ return content; } /// <summary> - /// 鎴愬搧鍑哄緟鍙戣揣鍖�(骞冲簱)+鍚屾ERP鍑哄簱 + /// 鎴愬搧鍑哄緟鍙戣揣鍖�(骞冲簱)+鍚屾ERP鍑哄簱(缁戝畾浜嗗嚭搴撳崟搴撳瓨) /// </summary> /// <returns></returns> public WebResponseContent OutProductPK(string[] OutPKCodes,string ProOutNo) @@ -183,8 +183,12 @@ string? userName = App.User.UserName;//GSWMS //鑾峰彇鎵�鏈夊绠辩殑鏁版嵁 List<Dt_ProStockInfo> AllproStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>() - .Where(x => OutPKCodes.Contains(x.PalletCode) && x.StockStatus == StockStatusEmun.骞冲簱鍏ュ簱瀹屾垚.ObjToInt()) + .Where(x => OutPKCodes.Contains(x.PalletCode) && x.ShipmentOrder == proOutOrder.ProOutOrderNo && x.StockStatus == StockStatusEmun.骞冲簱鍏ュ簱瀹屾垚.ObjToInt()) .Includes(x => x.proStockInfoDetails).ToList(); + if (AllproStockInfos.Count<=0) + { + return content.Error($"鍑哄簱鍗晎ProOutNo}宸叉棤缁戝畾搴撳瓨"); + } List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>(); List<Dt_ProStockInfoDetail> proStockInfoDetails=new List<Dt_ProStockInfoDetail>(); List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(x => x.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString()); @@ -219,6 +223,7 @@ { return content.Error("瀵瑰簲鍑哄簱璁㈠崟鏄庣粏涓虹┖"); } + int OldOverCount = proOutOrder.Details.Where(x => x.ProOrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); foreach (var item in proStockInfoDetails) { //鑾峰彇瀵瑰簲鏄庣粏澶勭悊鍑哄簱鏁版嵁 @@ -236,54 +241,80 @@ { proOutOrderDetail.ProOrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); } - StockOutItemsItem outItemsItem = new StockOutItemsItem() - { - PartNum=item.ProductCode, - Rev=item.ProductVersion, - SoNumber=item.SaleOrder, - BatchNumber=item.BagNo, - QtyPcs=item.StockPcsQty, - QtySet=item.SETQty - }; - stockOutItems.Add(outItemsItem); + } - int OldOverCount = proOutOrder.Details.Where(x => x.ProOrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); + int AddOverCount = proOutOrderDetails.Where(x => x.ProOrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); - if (proOutOrder.Details.Count== (OldOverCount + AddOverCount)) + if (proOutOrder.Details.Count == (AddOverCount + OldOverCount)) { proOutOrder.ProOrderStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt(); + //鑾峰彇鎵�鏈夊凡鎵爜寰呭彂璐х殑搴撳瓨 + List<Dt_ProStockInfo> AllOutStocks = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>() + .Where(x => x.ShipmentOrder== ProOutNo && x.StockStatus == StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt()) + .Includes(x => x.proStockInfoDetails).ToList(); + AllOutStocks.ForEach(x => + { + proStockInfoDetails.AddRange(x.proStockInfoDetails); + }); + proStockInfos.AddRange(AllOutStocks); + foreach (var item in proStockInfoDetails) + { + StockOutItemsItem outItemsItem = new StockOutItemsItem() + { + PartNum = item.ProductCode, + Rev = item.ProductVersion, + SoNumber = item.SaleOrder, + BatchNumber = item.BagNo, + QtyPcs = item.StockPcsQty, + QtySet = item.SETQty + }; + stockOutItems.Add(outItemsItem); + } } + _unitOfWorkManage.BeginTran(); Dt_Warehouse warehouse = warehouses.Where(x => x.WarehouseId == proOutOrder.WarehouseId).FirstOrDefault(); //澶勭悊搴撳瓨鏁版嵁鍜屼笂浼燛RP - _unitOfWorkManage.BeginTran(); - _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfos, OperateTypeEnum.鑷姩瀹屾垚); - _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfoDetails, OperateTypeEnum.鑷姩瀹屾垚); - _outboundRepository.ProOutOrderDetailRepository.UpdateData(proOutOrderDetails); - BaseDal.UpdateData(proOutOrder); - //鎴愬搧搴撳瓨璁板綍鍙樺姩寰呭姞鍏� - ERPProOutOrderModel proOutOrderModel = new ERPProOutOrderModel() + if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) { - Way = 1, - StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)), - ConfirmedUserNo=userName, - AssignUserNo=userName, - WarehouseCode=warehouse.WarehouseCode, - ShipDate=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - DeliverplanCode=proOutOrder.ProOutOrderNo, - Remark=proOutOrder.Remark, - StockOutItems= stockOutItems - }; - string response = _invokeERPService.InvokeProOutApi(proOutOrderModel); - ErpRequestContent erpRequestContent= response.DeserializeObject<ErpRequestContent>(); - if (erpRequestContent.res==1) - { - _unitOfWorkManage.CommitTran(); - content.OK(); + //鎴愬搧搴撳瓨璁板綍鍙樺姩寰呭姞鍏� + ERPProOutOrderModel proOutOrderModel = new ERPProOutOrderModel() + { + Way = 1, + StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)), + ConfirmedUserNo = "admin", + AssignUserNo = "admin", + WarehouseCode = warehouse.WarehouseCode, + ShipDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + DeliverplanCode = proOutOrder.ProOutOrderNo, + Remark = proOutOrder.Remark, + StockOutItems = stockOutItems + }; + _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfos, OperateTypeEnum.鑷姩瀹屾垚); + _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfoDetails, OperateTypeEnum.鑷姩瀹屾垚); + string response = _invokeERPService.InvokeProOutApi(proOutOrderModel); + ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>(); + if (erpRequestContent.res != 1) + { + throw new Exception("鍚屾ERP澶辫触,閿欒淇℃伅:" + erpRequestContent.Data); + } } else { - throw new Exception(erpRequestContent.Data); + proStockInfos.ForEach(x => + { + x.StockStatus = StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt(); + }); + proStockInfoDetails.ForEach(x => + { + x.ProOutDetailStatus = StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt(); + }); + _stockRepository.ProStockInfoRepository.UpdateData(proStockInfos); + _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails); } + _outboundRepository.ProOutOrderDetailRepository.UpdateData(proOutOrderDetails); + BaseDal.UpdateData(proOutOrder); + _unitOfWorkManage.CommitTran(); + content.OK(); } catch (Exception ex) { @@ -292,5 +323,164 @@ } return content; } + /// <summary> + /// 鎴愬搧鍑哄緟鍙戣揣鍖�(骞冲簱)+鍚屾ERP鍑哄簱(鏈粦瀹氬嚭搴撳崟搴撳瓨) + /// </summary> + /// <returns></returns> + public WebResponseContent OutProductNoPK(string[] OutPKCodes, string ProOutNo) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (OutPKCodes.IsNullOrEmpty()) + { + return content.Error("涓嶈兘涓虹┖"); + } + Dt_ProOutOrder proOutOrder = _outboundRepository.ProOutOrderRepository.Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOutOrderNo == ProOutNo).Includes(x => x.Details).First(); + if (proOutOrder == null) + { + return content.Error($"鍑哄簱鍗晎ProOutNo}涓嶅瓨鍦�"); + } + if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + { + return content.Error($"鍑哄簱鍗晎ProOutNo}宸插畬鎴�"); + } + string? userName = App.User.UserName;//GSWMS + //鑾峰彇鎵�鏈夊绠辩殑鏁版嵁 + List<Dt_ProStockInfo> AllproStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>() + .Where(x => OutPKCodes.Contains(x.PalletCode) && x.StockStatus == StockStatusEmun.骞冲簱鍏ュ簱瀹屾垚.ObjToInt()) + .Includes(x => x.proStockInfoDetails).ToList(); + List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>(); + List<Dt_ProStockInfoDetail> proStockInfoDetails = new List<Dt_ProStockInfoDetail>(); + List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(x => x.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString()); + foreach (var item in OutPKCodes) + { + //鑾峰彇搴撳瓨 + Dt_ProStockInfo? proStockInfo = AllproStockInfos.Where(x => x.PalletCode == item).FirstOrDefault(); + if (proStockInfo == null) + { + return content.Error($"鏈壘鍒皗item}搴撳瓨"); + } + if (proStockInfo.ShipmentOrder!=null) + { + return content.Error($"澶栫鍙穥item}涓哄嚭搴撳崟{proStockInfo.ShipmentOrder}鎸囧畾搴撳瓨!"); + } + Dt_Warehouse? dt_Warehouse = warehouses.Where(x => x.WarehouseId == proStockInfo.WarehouseId).FirstOrDefault(); + if (dt_Warehouse == null) + { + return content.Error($"澶栫鍙穥item},涓嶅睘浜庢垚鍝佷粨"); + } + proStockInfos.Add(proStockInfo); + proStockInfoDetails.AddRange(proStockInfo.proStockInfoDetails); + } + + if (proOutOrder.Details.Sum(x => x.QtyPcs - x.OverQtyPcs) < proStockInfoDetails.Sum(x => x.StockPcsQty)) + { + return content.Error($"鍑哄簱鏁伴噺{proStockInfoDetails.Sum(x => x.StockPcsQty)}>鎵�鍓╄鍗曟暟閲弡proOutOrder.Details.Sum(x => x.QtyPcs - x.OverQtyPcs)}"); + } + List<StockOutItemsItem> stockOutItems = new List<StockOutItemsItem>(); + List<Dt_ProOutOrderDetail> proOutOrderDetails = proOutOrder.Details.Where(x => proStockInfoDetails.Select(x => x.SaleOrder).Contains(x.SaleOrder) && proStockInfoDetails.Select(x => x.ProductCode).Contains(x.PCode) && proStockInfoDetails.Select(x => x.ProductVersion).Contains(x.PVer)).ToList(); + if (proOutOrderDetails == null || proOutOrderDetails.Count <= 0) + { + return content.Error("瀵瑰簲鍑哄簱璁㈠崟鏄庣粏涓虹┖"); + } + int OldOverCount = proOutOrder.Details.Where(x => x.ProOrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); + foreach (var item in proStockInfoDetails) + { + //鑾峰彇瀵瑰簲鏄庣粏澶勭悊鍑哄簱鏁版嵁 + Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrderDetails.Where(x => x.SaleOrder == item.SaleOrder && x.PVer == item.ProductVersion && x.PCode == item.ProductCode).FirstOrDefault(); + if (proOutOrderDetail == null) + { + return content.Error("鏈壘鍒板搴斿嚭搴撹鍗曟槑缁�"); + } + proOutOrderDetail.OverQtyPcs += item.StockPcsQty; + if (proOutOrderDetail.OverQtyPcs > proOutOrderDetail.QtyPcs) + { + return content.Error($"鍑哄簱璁㈠崟鏄庣粏琛寋proOutOrderDetail.RowId},婧㈠嚭{proOutOrderDetail.QtyPcs - proOutOrderDetail.OverQtyPcs}"); + } + if (proOutOrderDetail.OverQtyPcs == proOutOrderDetail.QtyPcs) + { + proOutOrderDetail.ProOrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); + } + + } + proStockInfos.ForEach(x => + { + x.StockStatus = StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt(); + }); + proStockInfoDetails.ForEach(x => + { + x.ProOutDetailStatus = StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt(); + }); + int AddOverCount = proOutOrderDetails.Where(x => x.ProOrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); + if (proOutOrder.Details.Count == (AddOverCount + OldOverCount)) + { + proOutOrder.ProOrderStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt(); + //鑾峰彇鎵�鏈夊凡鎵爜寰呭彂璐х殑搴撳瓨 + List<Dt_ProStockInfo> AllOutStocks = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>() + .Where(x => x.ShipmentOrder == ProOutNo && x.StockStatus == StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt()) + .Includes(x => x.proStockInfoDetails).ToList(); + AllOutStocks.ForEach(x => + { + proStockInfoDetails.AddRange(x.proStockInfoDetails); + }); + proStockInfos.AddRange(AllOutStocks); + foreach (var item in proStockInfoDetails) + { + StockOutItemsItem outItemsItem = new StockOutItemsItem() + { + PartNum = item.ProductCode, + Rev = item.ProductVersion, + SoNumber = item.SaleOrder, + BatchNumber = item.BagNo, + QtyPcs = item.StockPcsQty, + QtySet = item.SETQty + }; + stockOutItems.Add(outItemsItem); + } + } + _unitOfWorkManage.BeginTran(); + Dt_Warehouse warehouse = warehouses.Where(x => x.WarehouseId == proOutOrder.WarehouseId).FirstOrDefault(); + //澶勭悊搴撳瓨鏁版嵁鍜屼笂浼燛RP + if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + { + //鎴愬搧搴撳瓨璁板綍鍙樺姩寰呭姞鍏� + ERPProOutOrderModel proOutOrderModel = new ERPProOutOrderModel() + { + Way = 1, + StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)), + ConfirmedUserNo = "admin", + AssignUserNo = "admin", + WarehouseCode = warehouse.WarehouseCode, + ShipDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + DeliverplanCode = proOutOrder.ProOutOrderNo, + Remark = proOutOrder.Remark, + StockOutItems = stockOutItems + }; + _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfos, OperateTypeEnum.鑷姩瀹屾垚); + _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfoDetails, OperateTypeEnum.鑷姩瀹屾垚); + string response = _invokeERPService.InvokeProOutApi(proOutOrderModel); + ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>(); + if (erpRequestContent.res != 1) + { + throw new Exception("鍚屾ERP澶辫触,閿欒淇℃伅:" + erpRequestContent.Data); + } + } + else + { + _stockRepository.ProStockInfoRepository.UpdateData(proStockInfos); + _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails); + } + _outboundRepository.ProOutOrderDetailRepository.UpdateData(proOutOrderDetails); + BaseDal.UpdateData(proOutOrder); + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } } } -- Gitblit v1.9.3