heshaofeng
2026-02-04 83161ba784c838117bbebb5d712f2e2037b269be
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
@@ -29,7 +29,8 @@
        private readonly ILogger<OutboundOrderService> _logger;
        private readonly IRepository<Dt_OutboundOrderDetail> _outboundOrderDetailRepository;
        private readonly IMaterialUnitService _materialUnitService;
        public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService) : base(BaseDal)
        private readonly IRepository<Dt_OutStockLockInfo> _outStockLockInfoRepository;
        public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService, IRepository<Dt_OutStockLockInfo> outStockLockInfoRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -37,6 +38,7 @@
            _logger = logger;
            _materialUnitService = materialUnitService;
            _materielInfoService = materielInfoService;
            _outStockLockInfoRepository = outStockLockInfoRepository;
        }
        private int[] OrderTypes = new int[] { (int)InOrderTypeEnum.AllocatOutbound, (int)InOrderTypeEnum.InternalAllocat, (int)InOrderTypeEnum.ReCheck };
@@ -161,22 +163,29 @@
                        {
                            return WebResponseContent.Instance.Error($"修改的行号{item.lineNo}数量超过了智仓出库锁定数量加上挪料数量,不允许修改");
                        }
                        outboundOrderDetail.lineNo = item.lineNo;
                        outboundOrderDetail.MaterielCode = item.MaterielCode;
                        outboundOrderDetail.SupplyCode = item.SupplyCode;
                        outboundOrderDetail.BatchNo = item.BatchNo;
                        outboundOrderDetail.Unit = item.Unit;
                        outboundOrderDetail.WarehouseCode = item.WarehouseCode;
                        outboundOrderDetail.MoveQty = item.MoveQty;
                        outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                        outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
                        outboundOrderDetail.BarcodeQty = item.OrderQuantity;
                        outboundOrderDetail.BarcodeUnit = item.Unit;
                        var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                        outboundOrderDetail.Unit = issueoStockResult.Unit;
                        outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
                        var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
                        outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
                        if(outboundOrderDetail.LockQuantity == 0)
                        {
                            outboundOrderDetail.lineNo = item.lineNo;
                            outboundOrderDetail.MaterielCode = item.MaterielCode;
                            outboundOrderDetail.SupplyCode = item.SupplyCode;
                            outboundOrderDetail.BatchNo = item.BatchNo;
                            outboundOrderDetail.Unit = item.Unit;
                            outboundOrderDetail.WarehouseCode = item.WarehouseCode;
                            outboundOrderDetail.MoveQty = item.MoveQty;
                            outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                            outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
                            outboundOrderDetail.BarcodeQty = item.OrderQuantity;
                            outboundOrderDetail.BarcodeUnit = item.Unit;
                            var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                            outboundOrderDetail.Unit = issueoStockResult.Unit;
                            outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
                            var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
                            outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
                        }
                        else
                        {
                            outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                        }
                        if (materielInfos.Any())
                        {
                            outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
@@ -276,6 +285,19 @@
        }
        /// <summary>
        /// æ ¹æ®æ‰˜ç›˜å·èŽ·å–å•æ®ç¼–å·
        /// </summary>
        public WebResponseContent GetOrderNoByPalletCode(string palletCode)
        {
           var orderNo = _outStockLockInfoRepository.QueryData(x => x.PalletCode == palletCode).Select(x=>x.OrderNo).FirstOrDefault();
            if(string.IsNullOrWhiteSpace(orderNo))
            {
                return WebResponseContent.Instance.Error($"该托盘{palletCode}已拣选完");
            }
            return WebResponseContent.Instance.OK(data: orderNo);
        }
        static object lock_code = new object();
        public string CreateCodeByRule(string ruleCode)
        {