wangxinhui
2026-03-23 531c6e89dc07bb6997e6249a6cd9f53a9bd474a5
ÏîÄ¿´úÂë/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,6 +37,7 @@
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;
@@ -133,6 +136,28 @@
            }
        }
        /// <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>
        /// æ”¾è´§å®Œæˆ
        /// </summary>
        /// <param name="code"></param>
@@ -169,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卷出库条件");
                    //}
                }
            }
@@ -185,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;
        }
    }
}