From 9ce6731460179c71f0f2c636b2a1598324d5194e Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期六, 20 九月 2025 15:16:48 +0800 Subject: [PATCH] 最新代码更新 --- 项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs | 64 +++++++++++++++++++++++++------- 1 files changed, 50 insertions(+), 14 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" index 4f27480..3d8336d 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" @@ -5,12 +5,13 @@ using System.Text; using System.Threading.Tasks; using WIDESEA_Common.MaterielEnum; +using WIDESEA_Common.OrderEnum; using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; -using WIDESEA_DTO.Basic; +using WIDESEA_DTO.ERP; using WIDESEA_IBasicRepository; using WIDESEA_IOutboundRepository; using WIDESEA_IOutboundService; @@ -24,12 +25,14 @@ private readonly IBasicRepository _basicRepository; private readonly IMapper _mapper; private readonly IUnitOfWorkManage _unitOfWorkManage; + private readonly IOutBSTOrderDetailRepository _outBSTOrderDetailRepository; - public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) + public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage,IOutBSTOrderDetailRepository outBSTOrderDetailRepository) : base(BaseDal) { _basicRepository = basicRepository; _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; + _outBSTOrderDetailRepository = outBSTOrderDetailRepository; } /// <summary> /// 娣诲姞鍑哄簱鎺掔▼淇℃伅 @@ -39,20 +42,25 @@ WebResponseContent content = new WebResponseContent(); try { - //鑾峰彇鎵�鏈夊嚭搴撳崟 - List<Dt_OutBSTOrder> OldoutBSTOrders = BaseDal.Db.Queryable<Dt_OutBSTOrder>().Includes(x => x.Details).ToList(); //鏂板 List<BSTOutOrderDTO> outOrderDTOsAdd = bSTOutOrderDTOs.Where(x => x.Way == 1).ToList(); //淇敼 List<BSTOutOrderDTO> outOrderDTOsUpdate = bSTOutOrderDTOs.Where(x => x.Way == 2).ToList(); //鍒犻櫎 List<BSTOutOrderDTO> outOrderDTOsDel = bSTOutOrderDTOs.Where(x => x.Way == 3).ToList(); + if (outOrderDTOsAdd.Count==0 && outOrderDTOsUpdate.Count==0 && outOrderDTOsDel.Count==0) + { + return content.Error($"鍑哄簱鎺掔▼淇℃伅浼犲叆涓虹┖"); + } + //鑾峰彇鎵�鏈夊嚭搴撳崟 + List<Dt_OutBSTOrder> OldoutBSTOrders = BaseDal.Db.Queryable<Dt_OutBSTOrder>().Includes(x => x.Details).ToList(); //鑾峰彇鎵�鏈夌墿鏂� List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt() && x.MaterialSourceId != 0); List<Dt_OutBSTOrder> outBSTAddOrders = new List<Dt_OutBSTOrder>(); List<Dt_OutBSTOrder> outBSTUpOrders = new List<Dt_OutBSTOrder>(); List<Dt_OutBSTOrder> outBSTDelOrders = new List<Dt_OutBSTOrder>(); + List<Dt_OutBSTOrderDetail> outBSTOrderDetailsDel = new List<Dt_OutBSTOrderDetail>(); //鏂板 if (outOrderDTOsAdd.Count>0) { @@ -62,8 +70,8 @@ { return content.Error($"鍑哄簱鎺掔▼Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}宸插瓨鍦�"); } - List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList(); //鍒ゆ柇鏄惁瀛樺湪鐗╂枡 + List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList(); BstBoardMpsDetailItem? bstBoardMpsDetailItem = bstBoardMpsDetailItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); if (bstBoardMpsDetailItem != null) { @@ -71,6 +79,10 @@ } foreach (var item in outOrderDTOsAdd) { + if (outOrderDTOsUpdate.FirstOrDefault(x => x.BoardMpsId == item.BoardMpsId) != null) + { + continue; + } List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item); outBSTOrder.Details=bSTOrderDetails; @@ -80,16 +92,38 @@ //淇敼 if (outOrderDTOsUpdate.Count > 0) { - List<Dt_OutBSTOrder>? ExistUpdateoutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); - //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦� - if (ExistUpdateoutBSTOrders.Count == outOrderDTOsUpdate.Count) + List<Dt_OutBSTOrder>? ExistUpdateOutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); + + foreach (var item in outOrderDTOsUpdate) { - - } - else - { - BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); - return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}"); + Dt_OutBSTOrder? outBSTOrderUpdate = ExistUpdateOutBSTOrders.FirstOrDefault(x=>x.BoardMpsId==item.BoardMpsId); + //濡傛灉璁㈠崟宸插瓨鍦ㄥ垯杩涜鏇存敼 + if (outBSTOrderUpdate != null) + { + if (outBSTOrderUpdate.OutBSTOrderStatus != OutOrderStatusEnum.鏈紑濮�.ObjToInt()) + { + return content.Error($"閲囪喘{nameof(outBSTOrderUpdate.BoardMpsId)}:{outBSTOrderUpdate.BoardMpsId}璁㈠崟鍑哄簱涓紝涓嶅彲鏇存敼"); + } + //鏇存柊鏁版嵁 + outBSTOrderDetailsDel.AddRange(outBSTOrderUpdate.Details); + List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); + bSTOrderDetails.ForEach(x => + { + x.OutBSTOrderId = outBSTOrderUpdate.Id; + }); + outBSTOrderUpdate.Details = bSTOrderDetails; + outBSTOrderUpdate.BoardMpsId= item.BoardMpsId; + outBSTOrderUpdate.BoardMpsNo= item.BoardMpsNo; + outBSTOrderUpdate.ProductionDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ProductionDate).DateTime; + outBSTUpOrders.Add(outBSTOrderUpdate); + } + else//濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板 + { + List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); + Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item); + outBSTOrder.Details = bSTOrderDetails; + outBSTAddOrders.Add(outBSTOrder); + } } } //鍒犻櫎 @@ -109,6 +143,8 @@ } _unitOfWorkManage.BeginTran(); BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand(); + _outBSTOrderDetailRepository.DeleteData(outBSTOrderDetailsDel); + BaseDal.Db.UpdateNav(outBSTUpOrders).Include(x => x.Details).ExecuteCommand(); _unitOfWorkManage.CommitTran(); content.OK("鎺ユ敹鎴愬姛"); } -- Gitblit v1.9.3