| | |
| | | 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; |
| | |
| | | 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> |
| | | /// æ·»å åºåºæç¨ä¿¡æ¯ |
| | |
| | | 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) |
| | | { |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | } |
| | | 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; |
| | |
| | | //ä¿®æ¹ |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | //å é¤ |
| | |
| | | } |
| | | _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("æ¥æ¶æå"); |
| | | } |