wangxinhui
2025-10-17 ce40df5daffae0d17b4e9fa7cb6d677afaa4d66f
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs
@@ -33,6 +33,7 @@
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Stock;
using WIDESEA_DTO.Task;
@@ -74,6 +75,9 @@
        private readonly IOutBSTOrderDetailService _outBSTOrderDetailService;
        private readonly IOutMESOrderService _outMESOrderService;
        private readonly IOutMESOrderRepository _outMESOrderRepository;
        private readonly IOutboundRepository _outboundRepository;
        private readonly IOutboundService _outboundService;
        private readonly IInboundRepository _inboundRepository;
        public ITaskRepository Repository => BaseDal;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -86,7 +90,7 @@
        public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList();
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository, IPurchaseBSTOrderRepository purchaseBSTOrderRepository, IPurchaseBSTOrderDetailRepository purchaseBSTOrderDetailRepository, IOutBSTOrderDetailRepository outBSTOrderDetailRepository, IOutBSTOrderRepository outBSTOrderRepository,IOutBSTOrderDetailService outBSTOrderDetailService, IOutMESOrderService outMESOrderService, IOutMESOrderRepository outMESOrderRepository) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository, IPurchaseBSTOrderRepository purchaseBSTOrderRepository, IPurchaseBSTOrderDetailRepository purchaseBSTOrderDetailRepository, IOutBSTOrderDetailRepository outBSTOrderDetailRepository, IOutBSTOrderRepository outBSTOrderRepository,IOutBSTOrderDetailService outBSTOrderDetailService, IOutMESOrderService outMESOrderService, IOutMESOrderRepository outMESOrderRepository, IOutboundRepository outboundRepository, IOutboundService outboundService, IInboundRepository inboundRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -106,6 +110,9 @@
            _outBSTOrderDetailService = outBSTOrderDetailService;
            _outMESOrderService = outMESOrderService;
            _outMESOrderRepository = outMESOrderRepository;
            _outboundRepository = outboundRepository;
            _outboundService = outboundService;
            _inboundRepository = inboundRepository;
        }
        /// <summary>
@@ -158,5 +165,36 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        private readonly static object lockerAddSG = new object();
        public WebResponseContent AddOutSGOrder(List<SGOutOrderDTO> outOrderDTOs)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                lock (lockerAddSG)
                {
                    int outDetailId = _outboundRepository.OutSGOrderDetailRepository.QueryData().OrderByDescending(x=>x.Id).FirstOrDefault().Id;
                    content = _outboundService.OutSGOrderService.AddOutSGOrder(outOrderDTOs);
                    if (!content.Status)
                    {
                        return content;
                    }
                    List<int> ints = _outboundRepository.OutSGOrderDetailRepository.QueryData(x=>x.Id>outDetailId).Select(x=>x.Id).ToList();
                    int[] reseponse= new int[ints.Count];
                    for (int i = 0; i < ints.Count; i++)
                    {
                        reseponse[i] = ints[i];
                    }
                    content.Message = CreateSGOutboundTasks(reseponse).Message;
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}