huangxiaoqiang
2025-02-15 bcde5ea70330cb16597c2320b94b5f1d7cb15752
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,18 +1,11 @@
using Castle.Components.DictionaryAdapter.Xml;
using log4net.Core;
using Masuit.Tools;
using System.CodeDom;
using System.Threading.Tasks;
using Masuit.Tools;
using WIDESEA_Common;
using WIDESEA_Common.CustomModels;
//using WIDESEA_Common.CustomModels;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Const;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_StorageTaskRepository;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.Models;
@@ -123,7 +116,6 @@
        {
            throw new Exception(ex.Message);
        }
    }
    /// <summary>
@@ -411,7 +403,7 @@
            ////// 调用GetProcessResponseAsync方法,获取工艺响应
            ////var processResponse = await GetProcessResponseAsync(process, input.Position);
            var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
            #endregion
            #endregion 入库任务
        }
        var task = new Dt_Task
@@ -444,11 +436,12 @@
        return task;
    }
    #endregion 入库任务
    #endregion 请求任务入库
    #region 库位分配
    #region 获取货位
    /// <summary>
    ///
    /// </summary>
@@ -482,9 +475,11 @@
            return null;
        }
    }
    #endregion 获取货位
    #region 异常口入库获取库位
    private async Task<DtLocationInfo> RequestLocationByAbnormal(RequestTaskDto requestTask, bool isCheckRequest = false)
    {
        try
@@ -512,7 +507,8 @@
            return null;
        }
    }
    #endregion
    #endregion 异常口入库获取库位
    #endregion 库位分配
@@ -535,6 +531,7 @@
    #endregion 请求任务入库
    #region 创建空框出库任务
    public async Task<Dt_Task> CreateEmptyOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
    {
        try
@@ -576,6 +573,7 @@
            throw new Exception(ex.Message);
        }
    }
    #endregion
    #region 直接出库任务完成
@@ -599,11 +597,13 @@
            return content.Error(ex.Message);
        }
    }
    #endregion
    #region 异常口任务检测
    /// <summary>
    /// 异常排出口入库校验  所有异常交给WCS做原地址NG处理
    /// 异常排出口入库校验  所有异常交给WCS做原地址NG处理
    /// </summary>
    /// <param name="input"></param>
    /// <param name="stationManager"></param>
@@ -627,7 +627,7 @@
            // 调用GetTrayCellStatusAsync方法,获取整盘电芯
            WebResponseContent content = await GetTrayCellStatusAsync(trayCells);
            // 如果状态为false,则返回content
            if (!content.Status)  //获取整盘电芯数据, 如异常 使用空框类型入库
            if (!content.Status)  //获取整盘电芯数据, 如异常 使用空框类型入库
            {
                ConsoleHelper.WriteErrorLine(content.Message);
                throw new Exception("MOM整盘电芯属性获取异常");
@@ -742,9 +742,11 @@
            throw new Exception(ex.Message);
        }
    }
    #endregion
    #region 移库任务事务
    private async Task<bool> ExecuteTransaction(DtStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation, DtLocationInfo toLocation, int taskId)
    {
        _unitOfWorkManage.BeginTran();
@@ -787,6 +789,7 @@
    #endregion MyRegion
    #region 检测高温库是否有可出库库存
    public WebResponseContent StockCheckingAsync()
    {
        WebResponseContent webResponseContent = new WebResponseContent();
@@ -871,12 +874,13 @@
    #endregion 检测高温库是否有可出库库存
    #region 常温补空托盘至分容
    public async Task<WebResponseContent> GetFROutTrayToCW(RequestTaskDto taskDTO)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTO.Position);
            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTO.Position && x.stationStatus == "1");
            var locations = _locationRepository.QueryData(x => x.RoadwayNo == station.Roadway && x.LocationStatus == (int)LocationEnum.Free && x.LocationType == 1);
            if (locations.Count > 10)
@@ -934,7 +938,6 @@
        ConsoleHelper.WriteColorLine(station.Roadway, ConsoleColor.Magenta);
        var stackers = station.Roadway.Split(',').ToList();
        var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
            .Where(x => x.DeviceStatus == "1")
            .Where(x => stackers.Contains(x.DeviceCode))
@@ -960,6 +963,13 @@
    #endregion
    #region  常温3出库至包装
    /// <summary>
    /// 常温3出库至包装
    /// </summary>
    /// <param name="json"></param>
    /// <returns></returns>
    public async Task<WebResponseContent> RequestOutTaskToBZAsync(RequestTaskDto json)
    {
        WebResponseContent content = new WebResponseContent();
@@ -1022,9 +1032,10 @@
        }
    }
    #endregion
    #region 火警出库
    public WebResponseContent EmergencyTask(object obj)
    {
        WebResponseContent content = new WebResponseContent();
@@ -1070,7 +1081,6 @@
            {
                throw new Exception("已添加火警出库任务");
            }
            int taskNum = BaseDal.GetTaskNo().Result;
            Dt_Task task = new Dt_Task
@@ -1134,7 +1144,6 @@
            LogFactory.GetLog("DTS火警出库").Info(true, $"\r\r--------------------------------------");
            LogFactory.GetLog("DTS火警出库").Info(true, obj.ToJsonString());
            return content.OK();
        }
        catch (Exception ex)
        {
@@ -1143,5 +1152,46 @@
            return content.Error(ex.Message);
        }
    }
    #endregion
    #region 分容空框入库改为直接出库
    public async Task<WebResponseContent> SetEmptyOutbyInToOutAsync(RequestTaskDto request)
    {
        WebResponseContent content = new WebResponseContent();
        var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == request.PalletCode && x.CurrentAddress == request.Position);
        if (!task.IsNullOrEmpty())
        {
            var fromStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == request.Position);
            var toStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 7 && x.productLine == fromStation.productLine && x.stationArea == fromStation.stationArea);
            if (!toStation.IsNullOrEmpty())
            {
                var location = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress && x.AreaId == int.Parse(fromStation.stationArea));
                task.TargetAddress = toStation.stationLocation;
                task.NextAddress = toStation.stationChildCode;
                task.Grade = 3;
                task.TaskType = (int)TaskOutboundTypeEnum.InToOut;
                task.TaskState = (int)TaskOutStatusEnum.OutNew;
                location.LocationStatus = (int)LocationEnum.Free;
                await _locationRepository.UpdateDataAsync(location);
                await BaseDal.UpdateDataAsync(task);
                return content.OK("成功");
            }
            else
            {
                ConsoleHelper.WriteErrorLine("分容空框入库改为直接出库:未找到对应站台");
                content.Error("未找到对应站台");
            }
        }
        else
        {
            ConsoleHelper.WriteErrorLine("分容空框入库改为直接出库:未找到任务");
            content.Error("未找到任务");
        }
        return content;
    }
    #endregion
}