wangxinhui
4 天以前 9ec715d2deb18a269dd49c48da91a36632d08c81
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -41,6 +41,7 @@
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_IBasicService;
using WIDESEA_ICheckRepository;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_IOutboundRepository;
@@ -75,6 +76,7 @@
        private readonly IOutboundRepository _outboundRepository;
        private readonly IProInStatisticsRepository _proInStatisticsRepository;
        private readonly IProInStatisticsService _proInStatisticsService;
        private readonly ICheckOrderRepository _checkOrderRepository;
        public ITaskRepository Repository => BaseDal;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -87,7 +89,7 @@
        public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IOutboundService outboundService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IInboundRepository inboundRepository, IInboundOrderService inboundOrderService, IPalletTypeInfoRepository palletTypeInfoRepository, IOutProStockInfoRepository outProStockInfoRepository, IOutboundRepository outboundRepository, IProInStatisticsRepository proInStatisticsRepository, IProInStatisticsService proInStatisticsService) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IOutboundService outboundService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IInboundRepository inboundRepository, IInboundOrderService inboundOrderService, IPalletTypeInfoRepository palletTypeInfoRepository, IOutProStockInfoRepository outProStockInfoRepository, IOutboundRepository outboundRepository, IProInStatisticsRepository proInStatisticsRepository, IProInStatisticsService proInStatisticsService, ICheckOrderRepository checkOrderRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -106,6 +108,7 @@
            _outboundRepository = outboundRepository;
            _proInStatisticsRepository = proInStatisticsRepository;
            _proInStatisticsService = proInStatisticsService;
            _checkOrderRepository = checkOrderRepository;
        }
        /// <summary>
@@ -628,7 +631,9 @@
                List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
                List<Dt_MesOutboundOrder> mesOutboundOrders = new List<Dt_MesOutboundOrder>();
                List<Dt_MesPPOutboundOrder> mesPPOutboundOrders = new List<Dt_MesPPOutboundOrder>();
                if ((outStockLockInfos == null || outStockLockInfos.Count == 0) &&(warehouse.WarehouseCode != WarehouseEnum.HA64.ToString()|| warehouse.WarehouseCode != WarehouseEnum.HA154.ToString()) && (task.TaskType != TaskTypeEnum.OutEmpty.ObjToInt()))
                Dt_CheckOrder? checkOrder = null;
                Dt_OutboundOrder? outboundOrder = null;
                if ((outStockLockInfos == null || outStockLockInfos.Count == 0) && warehouse.WarehouseCode != WarehouseEnum.HA64.ToString() && warehouse.WarehouseCode != WarehouseEnum.HA154.ToString() && (task.TaskType != TaskTypeEnum.OutEmpty.ObjToInt()))
                {
                    return WebResponseContent.Instance.Error($"未找到出库详情信息");
                }
@@ -665,6 +670,7 @@
                        }
                        else
                        {
                            //获取出库单明细
                            Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == item.OrderDetailId);
                            if (outboundOrderDetail != null)
                            {
@@ -674,7 +680,32 @@
                                    outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                                }
                                outboundOrderDetails.Add(outboundOrderDetail);
                                //获取出库单
                                outboundOrder = _outboundRepository.OutboundOrderRepository.Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outboundOrderDetail.OrderId).Includes(x => x.Details).First() ?? throw new Exception("未找到出库单");
                                if (task.TaskType == TaskTypeEnum.OutQuality.ObjToInt())
                                {
                                    Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode== outboundOrderDetail.MaterielCode);
                                    checkOrder = new Dt_CheckOrder
                                    {
                                        ReceivedQuantity = item.OriginalQuantity,
                                        OrderType = CheckTypeEnum.InspectCheck.ObjToInt(),
                                        ReceiveOrderNo = outboundOrder.OrderNo,
                                        LotNo= item.BatchNo,
                                        Result = CheckAcceptEnum.NotCheckAccept.ToString(),
                                        QualifiedQuantity = 0,
                                        ReceiveDetailRowNo = item.Id,
                                        WarehouseId = outboundOrder.WarehouseId,
                                        ScrappedQuantity = 0,
                                        MaterielCode=materielInfo.MaterielCode,
                                        MaterielSpec = materielInfo.MaterielSpec,
                                        Unit = materielInfo.MaterielUnit,
                                        ReturnQuantity = 0,
                                        DefectedQuantity = 0
                                    };
                            }
                            }
                        }
                        item.Status = OutLockStockStatusEnum.出库完成.ObjToInt();
                    }
@@ -684,12 +715,22 @@
                FeedBackWCSTaskCompleted(taskNum);
                _unitOfWorkManage.BeginTran();
                if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt())
                if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutQuality.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt())
                {
                    //处理出库详情
                    //处理出库详情以及库存状态
                    if (outboundOrderDetails.Count > 0)
                    {
                        _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
                        //更新出库单状态
                        if (task.TaskType == TaskTypeEnum.OutQuality.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt())
                        {
                            int detailCount = outboundOrderDetails.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
                            if ((outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count + detailCount) == outboundOrder.Details.Count)
                            {
                                outboundOrder.OrderStatus = OutOrderStatusEnum.出库完成.ObjToInt();
                                _outboundRepository.OutboundOrderRepository.UpdateData(outboundOrder);
                            }
                        }
                    }
                    stockInfo.LocationCode = "";
                    stockInfo.StockStatus = StockStatusEmun.出库完成.ObjToInt();
@@ -701,15 +742,24 @@
                    {
                        stockInfo.StockLength = 0;
                    }
                    if (checkOrder!=null)
                    {
                        stockInfo.StockStatus = StockStatusEmun.送检完成.ObjToInt();
                        stockInfo.Details.ForEach(x =>
                        {
                            x.Status = StockStatusEmun.送检完成.ObjToInt();
                        });
                        _checkOrderRepository.AddData(checkOrder);
                    }
                    _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                    _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                }
                else if (task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt())
                else if (task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt())//辅料空箱出库完成
                {
                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
                    _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                }
                else if (task.TaskType == TaskTypeEnum.MesOutbound.ObjToInt())
                else if (task.TaskType == TaskTypeEnum.MesOutbound.ObjToInt())//板料Mes出库完成逻辑
                {
                    _outboundService.MesOutboundOrderService.Repository.UpdateData(mesOutboundOrders);
                    _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);