pan
2025-11-08 e83bd2f6a38957c0d47c9e0a6c6b2ca45836e114
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -1,5 +1,6 @@
using AutoMapper;
using SqlSugar;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
@@ -29,12 +30,12 @@
        private readonly IRepository<Dt_Task> _taskRepository;
        private IStockService _stockService;
        private readonly IMaterialUnitService _materialUnitService;
        private readonly IInboundOrderDetailService _inboundOrderDetailService;
        private readonly IRepository<Dt_InboundOrderDetail> _inboundOrderDetailRepository;
        public IRepository<Dt_InboundOrder> Repository => BaseDal;
        public InboundOrderService(IRepository<Dt_InboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_Task> taskRepository, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService) : base(BaseDal)
        public InboundOrderService(IRepository<Dt_InboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_Task> taskRepository, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService, IMaterialUnitService materialUnitService) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -42,16 +43,17 @@
            _taskRepository = taskRepository;
            _stockService = stockService;
            _inboundOrderDetailService = inboundOrderDetailService;
            _materialUnitService = materialUnitService;
        }
        public WebResponseContent ReceiveInboundOrder(List<Dt_InboundOrder> models, int operateType)
        public async Task<WebResponseContent> ReceiveInboundOrder(List<Dt_InboundOrder> models, int operateType)
        {
            try
            {
                return operateType switch
                {
                    1 => AddInboundOrder(models),
                    2 => UpdateInboundOrder(models),
                    1 =>await AddInboundOrder(models),
                    2 => await UpdateInboundOrder(models),
                    3 => DeleteInboundOrder(models),
                    _ => WebResponseContent.Instance.OK(),
@@ -63,7 +65,7 @@
            }
        }
        public WebResponseContent AddInboundOrder(List<Dt_InboundOrder> models)
        public async Task<WebResponseContent> AddInboundOrder(List<Dt_InboundOrder> models)
        {
            try
            {
@@ -77,6 +79,13 @@
                foreach (var model in models)
                {
                    foreach (var item in model.Details)
                    {
                        var purchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync(item.MaterielCode, item.BarcodeQty);
                        item.Unit= purchaseToStockResult.Unit;
                        item.OrderQuantity=purchaseToStockResult.Quantity;
                    }
                    model.InboundOrderNo = CreateCodeByRule(nameof(RuleCodeEnum.InboundOrderRule));
                    Db.InsertNav(model).Include(x => x.Details).ExecuteCommand();
                }
@@ -87,7 +96,7 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent UpdateInboundOrder(List<Dt_InboundOrder> models)
        public async Task<WebResponseContent> UpdateInboundOrder(List<Dt_InboundOrder> models)
        {
            try
            {
@@ -131,6 +140,10 @@
                                    BarcodeQty = item.BarcodeQty,
                                    OrderQuantity = item.OrderQuantity
                                };
                                var purchaseToStockResult = await _materialUnitService.ConvertPurchaseToStockAsync(item.MaterielCode, item.BarcodeQty);
                                inboundOrderDetail.Unit = purchaseToStockResult.Unit;
                                inboundOrderDetail.OrderQuantity = purchaseToStockResult.Quantity;
                                inboundOrderDetails.Add(inboundOrderDetail);
                            }
                            else
@@ -304,7 +317,8 @@
                var dbinboundOrderDetails = _inboundOrderDetailService.GetByBarcode(materielGroupDTO.Barcodes);
                if (dbinboundOrderDetails != null && !dbinboundOrderDetails.Any()) {
                if (dbinboundOrderDetails != null && !dbinboundOrderDetails.Any())
                {
                    return content = WebResponseContent.Instance.Error($"单据中没有该{materielGroupDTO.Barcodes}条码数据。");
                }
@@ -332,11 +346,11 @@
                        Barcode = item.Barcode,
                        MaterielCode = item.MaterielCode,
                        BatchNo = item.BatchNo,
                        Unit = item.BarcodeUnit,
                        Unit = item.Unit,
                        InboundOrderRowNo = item.lineNo,
                        SupplyCode = item.SupplyCode,
                        WarehouseCode = item.WarehouseCode,
                        StockQuantity = item.BarcodeQty,
                        StockQuantity = item.OrderQuantity,
                        Status = 0,
                        OrderNo = inboundOrder.InboundOrderNo,
                        BusinessType=inboundOrder.BusinessType,
@@ -351,7 +365,7 @@
                    stockInfo.PalletCode = materielGroupDTO.PalletCode;
                    stockInfo.StockStatus = StockStatusEmun.组盘暂存.ObjToInt();
                }
                stockInfo.PalletType = (int)PalletTypeEnum.None;
                List<int> updateDetailIds = dbinboundOrderDetails.Select(x => x.Id).ToList();
                if (inboundOrder.OrderStatus == InOrderStatusEnum.未开始.ObjToInt())