| | |
| | | using WIDESEA_Common.MaterielEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core.Helper; |
| | | using System.Reflection; |
| | | |
| | | namespace WIDESEA_OutboundService |
| | | { |
| | |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | } |
| | | |
| | | |
| | | public WebResponseContent AddOutSGOrder(List<SGOutOrderDTO> outOrderDTOs) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //è·åæææç¨å |
| | | List<Dt_OutSGOrder> outSGOrders=BaseDal.Db.Queryable<Dt_OutSGOrder>().Includes(x => x.Details).ToList(); |
| | | //夿忮 |
| | | Dt_OutSGOrder? ExistAddOutOrder = outSGOrders.FirstOrDefault(x => outOrderDTOs.Select(x => x.OrderId).Distinct().Contains(x.OrderId)); |
| | | if (ExistAddOutOrder != null) |
| | | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | return content.Error($"åºåºæç¨åå·{nameof(SGOutOrderDTO.OrderId)}:{ExistAddOutOrder.OrderId}å·²åå¨"); |
| | | } |
| | | //è·åææç©æ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && x.MaterialSourceId != 0); |
| | | SGOutOrderDTO? sGOutOrderDTO = outOrderDTOs.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialNo)); |
| | | if (sGOutOrderDTO != null) |
| | | { |
| | | return content.Error($"ç产æç¨{sGOutOrderDTO.OrderId}ç©æ:{sGOutOrderDTO.MaterialNo}ä¸åå¨"); |
| | | } |
| | | List<Dt_OutSGOrder> AddOutSGOrders = new List<Dt_OutSGOrder>(); |
| | | foreach (var item in outOrderDTOs) |
| | | { |
| | | //è·åå·¥å |
| | | Dt_OutSGOrder? ExistOutSGOrder = AddOutSGOrders.FirstOrDefault(x=>x.OrderId== item.OrderId); |
| | | //è·åç©æ |
| | | Dt_MaterielInfo materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialNo); |
| | | //æç»æåè½¬æ¢ |
| | | Dt_OutSGOrderDetail outSGOrderDetail = _mapper.Map<Dt_OutSGOrderDetail>(item); |
| | | outSGOrderDetail.MaterialName = materielInfo.MaterielName; |
| | | //夿工忝å¦å·²ç»åå¨ |
| | | if (ExistOutSGOrder!=null) |
| | | //è·åæææç¨å |
| | | List<Dt_OutSGOrder> outSGOrders = BaseDal.Db.Queryable<Dt_OutSGOrder>().Includes(x => x.Details).ToList(); |
| | | //夿忮 |
| | | Dt_OutSGOrder? ExistAddOutOrder = outSGOrders.FirstOrDefault(x => outOrderDTOs.Select(x => x.OrderId).Distinct().Contains(x.OrderId)); |
| | | if (ExistAddOutOrder != null) |
| | | { |
| | | ExistOutSGOrder.Details.Add(outSGOrderDetail); |
| | | return content.Error($"åºåºæç¨åå·{nameof(SGOutOrderDTO.OrderId)}:{ExistAddOutOrder.OrderId}å·²åå¨"); |
| | | } |
| | | else |
| | | //è·åææç©æ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && x.MaterialSourceId != 0); |
| | | SGOutOrderDTO? sGOutOrderDTO = outOrderDTOs.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialNo)); |
| | | if (sGOutOrderDTO != null) |
| | | { |
| | | |
| | | Dt_OutSGOrder outSGOrder=_mapper.Map<Dt_OutSGOrder>(item); |
| | | outSGOrder.Details=new List<Dt_OutSGOrderDetail>() { outSGOrderDetail }; |
| | | AddOutSGOrders.Add(outSGOrder); |
| | | return content.Error($"ç产æç¨{sGOutOrderDTO.OrderId}ç©æ:{sGOutOrderDTO.MaterialNo}ä¸åå¨"); |
| | | } |
| | | List<Dt_OutSGOrder> AddOutSGOrders = new List<Dt_OutSGOrder>(); |
| | | foreach (var item in outOrderDTOs) |
| | | { |
| | | //è·åå·¥å |
| | | Dt_OutSGOrder? ExistOutSGOrder = AddOutSGOrders.FirstOrDefault(x => x.OrderId == item.OrderId); |
| | | //è·åç©æ |
| | | Dt_MaterielInfo materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialNo); |
| | | //æç»æåè½¬æ¢ |
| | | Dt_OutSGOrderDetail outSGOrderDetail = _mapper.Map<Dt_OutSGOrderDetail>(item); |
| | | outSGOrderDetail.MaterialName = materielInfo.MaterielName; |
| | | //夿工忝å¦å·²ç»åå¨ |
| | | if (ExistOutSGOrder != null) |
| | | { |
| | | ExistOutSGOrder.Details.Add(outSGOrderDetail); |
| | | } |
| | | else |
| | | { |
| | | |
| | | Dt_OutSGOrder outSGOrder = _mapper.Map<Dt_OutSGOrder>(item); |
| | | outSGOrder.Details = new List<Dt_OutSGOrderDetail>() { outSGOrderDetail }; |
| | | AddOutSGOrders.Add(outSGOrder); |
| | | } |
| | | } |
| | | BaseDal.Db.InsertNav(AddOutSGOrders).Include(x => x.Details).ExecuteCommand(); |
| | | content.OK("æ¥æ¶æç¨æå"); |
| | | } |
| | | BaseDal.Db.InsertNav(AddOutSGOrders).Include(x => x.Details).ExecuteCommand(); |
| | | content.OK("æ¥æ¶æç¨æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |