liulijun
2026-03-12 7dcd8da0f2467d077551ddd39f33be5836dd80a9
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs
@@ -18,11 +18,13 @@
using AutoMapper;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using SqlSugar;
using System.Reflection.Emit;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
using WIDESEA_Common.MaterielEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
@@ -35,9 +37,11 @@
using WIDESEA_DTO;
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Outbound;
using WIDESEA_DTO.Stock;
using WIDESEA_DTO.Task;
using WIDESEA_External.ERPService;
using WIDESEA_External.MESService;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_IBasicService;
@@ -66,6 +70,7 @@
        private readonly IBasicRepository _basicRepository;
        private readonly IBasicService _basicService;
        private readonly IInvokeERPService _invokeERPService;
        private readonly IInvokeMESService _invokeMESService;
        private readonly IOutboundRepository _outboundRepository;
        private readonly IOutboundService _outboundService;
        private readonly IInboundRepository _inboundRepository;
@@ -82,7 +87,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, IInvokeERPService invokeERPService,  IOutboundRepository outboundRepository, IOutboundService outboundService, IInboundRepository inboundRepository,IInboundService inboundService) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IInvokeERPService invokeERPService,  IOutboundRepository outboundRepository, IOutboundService outboundService, IInboundRepository inboundRepository,IInboundService inboundService,IInvokeMESService invokeMESService) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -92,6 +97,7 @@
            _stockService = stockService;
            _basicRepository = basicRepository;
            _invokeERPService = invokeERPService;
            _invokeMESService = invokeMESService;
            _outboundRepository = outboundRepository;
            _outboundService = outboundService;
            _inboundRepository = inboundRepository;
@@ -127,6 +133,28 @@
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// ä»»åŠ¡ä¿¡æ¯æŽ¨é€è‡³WCS
        /// </summary>
        /// <returns></returns>
        public List<string> ExistRoadwaysError()
        {
            try
            {
                string url = AppSettings.Get("WCS");
                if (string.IsNullOrEmpty(url))
                {
                    return null;
                }
                string response = HttpHelper.Get($"{url}/api/Task/ExistRoadwaysError");
                return JsonConvert.DeserializeObject<List<string>>(response) ?? throw new Exception("返回错误");
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        /// <summary>
@@ -166,13 +194,24 @@
                    {
                        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;
                    //获取所有的出库详情判断是否满足出库量小于5万且小于17卷
                    //List<Dt_OutStockLockInfo> outStockLockInfos = _outboundRepository.OutStockLockInfoRepository.QueryData(x=>x.OrderType==OutOrderTypeEnum.OutSGPick.ObjToInt() && x.Status<OutLockStockStatusEnum.关闭.ObjToInt());
                    //decimal sumAssignQty = outStockLockInfos.Sum(x => x.AssignQuantity);
                    //int outCount= outStockLockInfos.Select(x=>x.PalletCode).Distinct().Count();
                    //if (sumAssignQty < AppSettings.Get("OutSGLength").ObjToInt() && outCount < AppSettings.Get("OutSGCount").ObjToInt())
                    //{
                        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;
                    //}
                    //else
                    //{
                    //    return content.Error($"当前出库量:{sumAssignQty},当前出库卷数:{outCount},不满足小于5万且小于17卷出库条件");
                    //}
                }
            }
@@ -182,5 +221,68 @@
            }
            return content;
        }
        /// <summary>
        /// å¯ç”¨
        /// </summary>
        /// <returns></returns>
        public WebResponseContent EnableStatus(int[] keys)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                List<Dt_Task> tasks = BaseDal.QueryData(x => x.TaskType < TaskTypeEnum.Inbound.ObjToInt());
                List<Dt_AGVStationInfo> stationInfos = _basicRepository.AGVStationInfoRepository.QueryData(x => keys.Contains(x.Id));
                foreach (var station in stationInfos)
                {
                    Dt_Task? taskOld = tasks.FirstOrDefault(x => x.TargetAddress == station.AGVStationCode);
                    if (taskOld!=null)
                    {
                        content.Message+= $"{station.AGVStationCode}出库{taskOld.TaskNum}任务执行中;";
                        continue;
                    }
                    if (station.StationArea==StationAreaEnum.一楼暂存架.ToString())
                    {
                        Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x=>x.LocationCode==station.AGVStationCode);
                        if (stockInfo!=null)
                        {
                            content.Message += $"{station.AGVStationCode}{stockInfo.PalletCode}库存绑定;";
                            continue;
                        }
                    }
                    station.IsOccupied = WhetherEnum.False.ObjToInt();
                }
                _basicRepository.AGVStationInfoRepository.UpdateData(stationInfos);
                content.OK(content.Message.IsNullOrEmpty() ? "成功" : $"部分成功启用!{content.Message}无法启用");
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// ç¦ç”¨
        /// </summary>
        /// <returns></returns>
        public WebResponseContent DisableStatus(int[] keys)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                List<Dt_AGVStationInfo> stationInfos = _basicRepository.AGVStationInfoRepository.QueryData(x => keys.Contains(x.Id));
                stationInfos.ForEach(x =>
                {
                    x.IsOccupied = WhetherEnum.True.ObjToInt();
                });
                _basicRepository.AGVStationInfoRepository.UpdateData(stationInfos);
                content.OK("成功");
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
    }
}