wangxinhui
2025-03-19 d8db1698c125618c1b5f62b009204ddc5d4eed5a
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs
@@ -2,6 +2,7 @@
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -12,11 +13,13 @@
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
@@ -28,14 +31,16 @@
        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();
@@ -61,7 +66,54 @@
                }
                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)
                {