From c57ec7977738765a3a813d73f20e09a89867e39b Mon Sep 17 00:00:00 2001 From: 647556386 <647556386@qq.com> Date: 星期四, 10 四月 2025 23:08:36 +0800 Subject: [PATCH] 前端页面更新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs | 487 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 485 insertions(+), 2 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 d0811af..0192475 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" @@ -1,21 +1,28 @@ 锘縰sing AutoMapper; +using Castle.Core.Resource; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.OrderEnum; +using WIDESEA_Common.StockEnum; using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; +using WIDESEA_Core.CodeConfigEnum; +using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO.ERP; +using WIDESEA_External.ERPService; +using WIDESEA_External.Model; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_IOutboundRepository; using WIDESEA_IOutboundService; using WIDESEA_IRecordService; +using WIDESEA_IStockRepository; using WIDESEA_IStockService; using WIDESEA_Model.Models; @@ -26,14 +33,22 @@ private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IBasicRepository _basicRepository; private readonly IMapper _mapper; + private readonly IStockRepository _stockRepository; + private readonly IOutboundRepository _outboundRepository; + private readonly IOutboundOrderService _outboundOrderService; + private readonly IInvokeERPService _invokeERPService; public IProOutOrderRepository Repository => BaseDal; - public ProOutOrderService(IProOutOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper) : base(BaseDal) + public ProOutOrderService(IProOutOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper, IStockRepository stockRepository, IOutboundRepository outboundRepository, IOutboundOrderService outboundOrderService,IInvokeERPService invokeERPService) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _basicRepository = basicRepository; _mapper = mapper; + _stockRepository = stockRepository; + _outboundRepository = outboundRepository; + _outboundOrderService = outboundOrderService; + _invokeERPService = invokeERPService; } /// <summary> /// 鎺ユ敹ERP鎴愬搧鍑哄簱鍗� @@ -70,6 +85,7 @@ return content.Error($"鍑哄簱鍗曞彿{outOrderDTO.OrderNo}宸插瓨鍦�!"); } Dt_Warehouse warehouse=null; + List<Dt_CustomerInfo> customerInfos = _basicRepository.CustomerInfoRepository.QueryData(); if (outOrderDTO.OType==1 && string.IsNullOrEmpty(outOrderDTO.WaType)) { warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString()); @@ -81,6 +97,12 @@ List<Dt_ProOutOrderDetail> proOutOrderDetails = new List<Dt_ProOutOrderDetail>(); foreach (var item in outOrderDTO.OrderDetails) { + //鍒ゆ柇瀹㈡埛鏄惁瀛樺湪 + Dt_CustomerInfo? customerInfo = customerInfos.Where(x=>x.Code== item.Customer).FirstOrDefault(); + if (customerInfo==null) + { + return content.Error($"瀹㈡埛{item.Customer}涓嶅瓨鍦�!"); + } proOutOrderDetails.Add(_mapper.Map<Dt_ProOutOrderDetail>(item)); } Dt_ProOutOrder proOutOrder= new Dt_ProOutOrder() @@ -111,7 +133,7 @@ WebResponseContent content = new WebResponseContent(); try { - + } catch (Exception ex) { @@ -128,6 +150,250 @@ WebResponseContent content = new WebResponseContent(); try { + Dt_ProOutOrder proOutOrder = _outboundRepository.ProOutOrderRepository.Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOutOrderNo == outOrderDTO.OrderNo).Includes(x => x.Details).First(); + if (proOutOrder==null) + { + return content.Error($"鏈壘鍒板嚭搴撳崟{outOrderDTO.OrderNo}"); + } + if (proOutOrder.ProOrderStatus==OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() || proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱涓�.ObjToInt()) + { + return content.Error("鍑哄簱鍗曟墽琛屼腑"); + } + _unitOfWorkManage.BeginTran(); + _outboundRepository.ProOutOrderRepository.DeleteData(proOutOrder); + _outboundRepository.ProOutOrderDetailRepository.DeleteData(proOutOrder.Details); + _unitOfWorkManage.CommitTran(); + content.OK("鎴愬姛"); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + /// <summary> + /// 鎴愬搧鍑哄緟鍙戣揣鍖�(骞冲簱)+鍚屾ERP鍑哄簱(缁戝畾浜嗗嚭搴撳崟搴撳瓨) + /// </summary> + /// <returns></returns> + public WebResponseContent OutProductPK(SaveModel saveModel, string ProOutNo) + { + WebResponseContent content = new WebResponseContent(); + try + { + List<string> OutPKCodes = saveModel.DelKeys.Select(x => x.ToString()).ToList(); + 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.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()); + foreach (var item in OutPKCodes) + { + //鑾峰彇搴撳瓨 + Dt_ProStockInfo? proStockInfo = AllproStockInfos.Where(x => x.PalletCode == item).FirstOrDefault(); + if (proStockInfo == null) + { + return content.Error($"鏈壘鍒皗item}搴撳瓨"); + } + Dt_Warehouse? dt_Warehouse = warehouses.Where(x=>x.WarehouseId== proStockInfo.WarehouseId).FirstOrDefault(); + if (dt_Warehouse==null) + { + return content.Error($"澶栫鍙穥item},涓嶅睘浜庢垚鍝佷粨"); + } + if (proStockInfo.ShipmentOrder!= proOutOrder.ProOutOrderNo) + { + return content.Error($"澶栫鍙穥item},涓嶅睘浜庡嚭搴撹鍗晎proOutOrder.ProOutOrderNo}"); + } + proStockInfos.Add(proStockInfo); + proStockInfoDetails.AddRange(proStockInfo.proStockInfoDetails); + } + + if (proOutOrder.Details.Sum(x=>x.LockQtyPcs-x.OverQtyPcs)< proStockInfoDetails.Sum(x=>x.StockPcsQty)) + { + return content.Error($"鍑哄簱鏁伴噺{proStockInfoDetails.Sum(x => x.StockPcsQty)}>鎵�鍓╄鍗曟暟閲弡proOutOrder.Details.Sum(x => x.LockQtyPcs - 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(); + } + + } + + 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.鑷姩瀹屾垚); + WebResponseContent contentSaveInfos = SaveOutProPKInfos(proStockInfos); + if (!contentSaveInfos.Status) + { + throw new Exception(contentSaveInfos.Message); + }; + string response = _invokeERPService.InvokeProOutApi(proOutOrderModel); + ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>(); + if (erpRequestContent.res != 1) + { + throw new Exception("鍚屾ERP澶辫触,閿欒淇℃伅:" + erpRequestContent.Data); + } + } + else + { + 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) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + /// <summary> + /// 鑾峰彇鍑哄簱鎵�鏈夌殑澶栧唴鍖呮槑缁� + /// </summary> + /// <param name="proStockInfos"></param> + /// <returns></returns> + public WebResponseContent SaveOutProPKInfos(List<Dt_ProStockInfo> proStockInfos) + { + WebResponseContent content = new WebResponseContent(); + try + { + List<Dt_OutProPKStockInfo> outProPKStockInfos = new List<Dt_OutProPKStockInfo>(); + foreach (var fromItem in proStockInfos) + { + foreach (var lordItem in fromItem.proStockInfoDetails) + { + Dt_OutProPKStockInfo outProPKStockInfo = new Dt_OutProPKStockInfo() + { + PCode = lordItem.ProductCode, + PVer=lordItem.ProductVersion, + PLot=lordItem.ProductVersion, + DateCode=lordItem.DateCode, + StockId=fromItem.Id, + OriginalQuantity=lordItem.StockPcsQty, + AssignQuantity=lordItem.StockPcsQty, + PalletCode=fromItem.PalletCode, + Unit="PCS" + }; + outProPKStockInfos.Add(outProPKStockInfo); + } + } + Db.InsertNav(outProPKStockInfos).Include(x=>x).ExecuteCommand(); + content.OK(); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } + //鏍规嵁鍐呭寘鍑哄簱 + public WebResponseContent BagProductPK(SaveModel saveModel) + { + WebResponseContent content = new WebResponseContent(); + try + { + var outOrder = saveModel.MainData["proOutNo"].ToString(); + var outBags = saveModel.DelKeys.Select(x => x.ToString()).ToList(); + if (outBags.Count<=0) + { + return content.Error("鍐呭寘淇℃伅鑾峰彇澶辫触"); + } } catch (Exception ex) @@ -136,5 +402,222 @@ } 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 = App.User.UserName, + AssignUserNo = App.User.UserName, + 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; + } + /// <summary> + /// PDA鑾峰彇鍑哄簱鍗曟嵁 + /// </summary> + /// <param name="saveModel"></param> + /// <returns></returns> + public WebResponseContent GetProOutOrders(SaveModel saveModel) + { + WebResponseContent content = new WebResponseContent(); + try + { + int pageNo = saveModel.MainData["pageNo"].ObjToInt(); + int warehouseId = saveModel.MainData["warehouseId"].ObjToInt(); + string orderNo = saveModel.MainData["orderNo"].ToString(); + List<Dt_ProOutOrder> proOutOrders = new List<Dt_ProOutOrder>(); + if (string.IsNullOrEmpty(orderNo)) + { + proOutOrders = Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOrderStatus == OutOrderStatusEnum.鍑哄簱涓�.ObjToInt() && x.WarehouseId == warehouseId).Includes(x=>x.Details).OrderByDescending(x => x.Id).ToPageList(pageNo, 5); + } + else + { + proOutOrders = Db.Queryable<Dt_ProOutOrder>().Where(x => (x.ProOutOrderNo.Contains(orderNo) || x.ProOutOrderNo.Contains(orderNo)) && x.ProOrderStatus == OutOrderStatusEnum.鍑哄簱涓�.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.Id).Includes(x => x.Details).ToPageList(pageNo, 5); + } + + content.OK(data: proOutOrders); + } + catch (Exception) + { + + throw; + } + return content; + } + /// <summary> + /// 鑾峰彇鎵爜鑾峰彇璁㈠崟鏄庣粏淇℃伅 + /// </summary> + public WebResponseContent GetOrderDetails(int keyId) + { + WebResponseContent content=new WebResponseContent(); + try + { + //鑾峰彇鍑哄簱鍗曞彿 + Dt_ProOutOrder proOutOrder = BaseDal.QueryFirst(x => x.Id == keyId); + if (proOutOrder == null) + { + return content.Error($"鏈壘鍒板嚭搴撳崟{proOutOrder.ProOutOrderNo}"); + } + //鑾峰彇褰撳墠宸茬粦瀹氱殑澶栧寘鐮�(鍑哄簱鐘舵��) + List<string> outBags = _stockRepository.ProStockInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.骞冲簱寰呭彂璐�.ObjToInt() && x.ShipmentOrder== proOutOrder.ProOutOrderNo).Select(x=>x.PalletCode).ToList(); + //鑾峰彇鏄庣粏 + List<Dt_ProOutOrderDetail> proOutOrderDetails = _outboundRepository.ProOutOrderDetailRepository.QueryData(x=>x.ProOrderId==keyId).OrderBy(x=>x.ProOrderDetailStatus).ThenBy(x=>x.Id).ToList(); + content.OK("鎴愬姛", new { outBags, proOutOrderDetails }); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } } } -- Gitblit v1.9.3