From 2b25f973bb6d72ce6971d6f9c3cdccf51b7962ab Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期六, 06 九月 2025 14:27:08 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhiHuiQiCe/LongDeLiLiKu --- 项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs | 123 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 123 insertions(+), 0 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" new file mode 100644 index 0000000..4f27480 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" @@ -0,0 +1,123 @@ +锘縰sing AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Common.MaterielEnum; +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_IBasicRepository; +using WIDESEA_IOutboundRepository; +using WIDESEA_IOutboundService; +using WIDESEA_Model.Models; + +namespace WIDESEA_OutboundService +{ + public class OutBSTOrderService : ServiceBase<Dt_OutBSTOrder, IOutBSTOrderRepository>, IOutBSTOrderService + { + public IOutBSTOrderRepository Repository => BaseDal; + private readonly IBasicRepository _basicRepository; + private readonly IMapper _mapper; + private readonly IUnitOfWorkManage _unitOfWorkManage; + + public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) + { + _basicRepository = basicRepository; + _mapper = mapper; + _unitOfWorkManage = unitOfWorkManage; + } + /// <summary> + /// 娣诲姞鍑哄簱鎺掔▼淇℃伅 + /// </summary> + public WebResponseContent AddOutBSTOrder(List<BSTOutOrderDTO> bSTOutOrderDTOs) + { + 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(); + //鑾峰彇鎵�鏈夌墿鏂� + 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>(); + //鏂板 + if (outOrderDTOsAdd.Count>0) + { + //鍒ゆ柇鍗曟嵁 + Dt_OutBSTOrder? ExistAddOutOrder = OldoutBSTOrders.FirstOrDefault(x => outOrderDTOsAdd.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); + if (ExistAddOutOrder != null) + { + return content.Error($"鍑哄簱鎺掔▼Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}宸插瓨鍦�"); + } + 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) + { + return content.Error($"鐢熶骇鎺掔▼{nameof(bstBoardMpsDetailItem.BoardMpsId)}鐗╂枡Id:{bstBoardMpsDetailItem.MaterialId}涓嶅瓨鍦�"); + } + foreach (var item in outOrderDTOsAdd) + { + 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); + } + } + //淇敼 + 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) + { + + } + else + { + BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); + return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}"); + } + } + //鍒犻櫎 + if (outOrderDTOsDel.Count > 0) + { + List<Dt_OutBSTOrder>? ExistDeloutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsDel.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); + //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦� + if (ExistDeloutBSTOrders.Count == outOrderDTOsDel.Count) + { + + } + else + { + BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsDel.FirstOrDefault(x => !ExistDeloutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); + return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}"); + } + } + _unitOfWorkManage.BeginTran(); + BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand(); + _unitOfWorkManage.CommitTran(); + content.OK("鎺ユ敹鎴愬姛"); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + } +} -- Gitblit v1.9.3