| | |
| | | using AutoMapper; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Globalization; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_ICheckRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_IStockRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundService |
| | |
| | | private readonly IInboundRepository _inboundRepository; |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly ICheckOrderRepository _checkOrderRepository; |
| | | private readonly IStockRepository _stockRepository; |
| | | |
| | | public ReceiveOrderDetailService(IReceiveOrderDetailRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, ICheckOrderRepository checkOrderRepository) : base(BaseDal) |
| | | public ReceiveOrderDetailService(IReceiveOrderDetailRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, ICheckOrderRepository checkOrderRepository, IStockRepository stockRepository) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _inboundRepository = inboundRepository; |
| | | _basicRepository = basicRepository; |
| | | _checkOrderRepository = checkOrderRepository; |
| | | _stockRepository = stockRepository; |
| | | } |
| | | |
| | | private static object _rowNoLocker = new object(); |
| | |
| | | } |
| | | |
| | | MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum); |
| | | //æ¶è´§å¢å æ¹æ¬¡å¡æ§ |
| | | //æ¥è¯¢æ¶è´§æç»æ¯å¦æåå¨åä¸ä¸ªæ¹æ¬¡ |
| | | Dt_ReceiveOrderDetail receiveOrderDetailOld = _inboundRepository.ReceiveOrderDetailRepository.QueryFirst(x => x.LotNo == model.LotNo); |
| | | Dt_ReceiveOrder? receiveOrderOld = null; |
| | | if (receiveOrderDetailOld!=null) |
| | | { |
| | | receiveOrderOld = _inboundRepository.ReceiveOrderRepository.QueryFirst(x => x.ReceiveOrderId == receiveOrderDetailOld.ReceiveOrderId); |
| | | } |
| | | if (receiveOrderDetailOld!=null && receiveOrderOld?.WarehouseId== receiveOrder.WarehouseId) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æ¶è´§åå·{receiveOrderOld.ReceiveOrderNo}䏿¹æ¬¡{model.LotNo}å·²åå¨"); |
| | | } |
| | | //æ¥è¯¢åºåæ¹æ¬¡æ¯å¦æåå¨åä¸ä¸ªæ¹æ¬¡ |
| | | Dt_StockInfoDetail stockInfoDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == model.LotNo); |
| | | Dt_StockInfo? stockInfo = null; |
| | | if (stockInfoDetail!=null) |
| | | { |
| | | stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.Id == stockInfoDetail.Id); |
| | | } |
| | | if (stockInfoDetail!=null && stockInfo?.WarehouseId==receiveOrder.WarehouseId) |
| | | { |
| | | return WebResponseContent.Instance.Error($"åºå{stockInfo.PalletCode}䏿¹æ¬¡{model.LotNo}å·²åå¨"); |
| | | } |
| | | if (model!=null) |
| | | { |
| | | string format = "yyyy-MM-dd"; // ç®æ æ ¼å¼ |
| | | DateTime parsedDate; |
| | | // è§£æéªè¯æ ¼å¼ |
| | | bool isValidEffDate = DateTime.TryParseExact( |
| | | model.EffectiveDate, |
| | | format, |
| | | CultureInfo.InvariantCulture, |
| | | DateTimeStyles.None, |
| | | out parsedDate |
| | | ); |
| | | bool isValidProDate = DateTime.TryParseExact( |
| | | model.ProductionDate, |
| | | format, |
| | | CultureInfo.InvariantCulture, |
| | | DateTimeStyles.None, |
| | | out parsedDate |
| | | ); |
| | | |
| | | if (!isValidEffDate || !isValidProDate) |
| | | { |
| | | return WebResponseContent.Instance.Error("æ ¼å¼æ æææ¥æä¸åæ³"); |
| | | } |
| | | } |
| | | Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterielCode); |
| | | if (materielInfo == null) |
| | | { |