xxyy
2025-02-15 abff6261e5e74ff16a844f4739f84d49b6133000
新增分容空框出库功能及代码结构优化

本次提交主要包括以下更新:

1. 在`SysConfigKeyConst.cs`中添加了`SetEmptyOutbyInToOutAsync`常量,支持"分容空框入库改为直接出库"的配置。
2. 在`TaskService.cs`和`Dt_TaskService.cs`中,引入新的配置项,并处理分容空框入库转直接出库的业务逻辑。
3. 完善了`Dt_TaskService.cs`中的`SetEmptyOutbyInToOutAsync`方法,涉及任务更新、位置状态更新及WMS接口调用。
4. 删除了`TaskService.cs`中的无用代码注释,并修正了`CommonConveyorLine_AfterJob.cs`中的判断条件。
5. 调整了多个文件中的WMS接口配置项,新增了对`SetEmptyOutbyInToOutAsync`配置项的引用。
已修改5个文件
88 ■■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerStationJob/CommonStackerStationCraneJob.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
@@ -76,5 +76,10 @@
        /// 静置NG入库站台
        /// </summary>
        public const string JZNGInBoundStation = "JZNGInBoundStation";
        /// <summary>
        /// 分容空框入库改为直接出库
        /// </summary>
        public const string SetEmptyOutbyInToOutAsync = "SetEmptyOutbyInToOutAsync";
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -16,6 +16,7 @@
using System.Drawing;
using WIDESEAWCS_ITaskInfoService;
using Mapster;
using AngleSharp.Io;
namespace WIDESEAWCS_TaskInfoService
{
@@ -85,6 +86,40 @@
                    return content.Error("当前托盘存在任务");
                }
                if (stationManager.stationType == 7)
                {
                    var Station = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 6 && x.productLine == stationManager.productLine && x.stationArea == stationManager.stationArea);
                    var runTask = await BaseDal.QueryFirstAsync(x => x.SourceAddress == Station.stationChildCode && x.TaskState == (int)TaskInStatusEnum.InNew && x.TaskType == (int)TaskInboundTypeEnum.InTray);
                    if (runTask != null)
                    {
                        runTask.TargetAddress = stationManager.stationLocation;
                        runTask.NextAddress = stationManager.stationChildCode;
                        runTask.Grade = 3;
                        runTask.TaskType = (int)TaskOutboundTypeEnum.InToOut;
                        var config1 = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                        var wmsBase1 = config1.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                        var requestTask1 = config1.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.SetEmptyOutbyInToOutAsync)?.ConfigValue;
                        if (wmsBase1 == null || requestTask1 == null)
                        {
                            throw new InvalidOperationException("WMS IP 未配置");
                        }
                        var wmsIpAddrss1 = wmsBase1 + requestTask1;
                        var result1 = await HttpHelper.PostAsync(wmsIpAddrss1, new { palletCode = runTask.PalletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString());
                        content = JsonConvert.DeserializeObject<WebResponseContent>(result1);
                        if (content.Status)
                        {
                            await BaseDal.UpdateDataAsync(runTask);
                            return content.OK("成功");
                        }
                        else
                            ConsoleHelper.WriteErrorLine(content.Message);
                    }
                    else
                        ConsoleHelper.WriteErrorLine("未找到空托盘入库任务");
                }
                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInTask)?.ConfigValue;
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs
@@ -271,7 +271,7 @@
            {
                var needBarcode = _needBarcodeRepository.QueryFirst(x => x.toArea == stationManager.stationChildCode);
                if (needBarcode.inLineNum <= needBarcode.cacheNum)
                if (needBarcode.inLineNum < needBarcode.cacheNum)
                {
                    var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                    var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerStationJob/CommonStackerStationCraneJob.cs
@@ -51,10 +51,6 @@
        {
            try
            {
                // speStackerCrane.GetStackerCraneStatus<StackerCraneAutoStatus>();
                // speStackerCrane.GetStackerCraneStatus<StackerCraneWorkStatus>();
                // speStackerCrane.GetStackerCraneStatus<StackerCraneStatus>();
                CommonStackerStationCrane commonStackerCrane = (CommonStackerStationCrane)context.JobDetail.JobDataMap.Get("JobParams");
                if (commonStackerCrane != null)
                {
@@ -81,8 +77,6 @@
                                    bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
                                    if (sendFlag)
                                    {
                                        //commonStackerCrane.LastTaskType = task.TaskType;
                                        //_taskService.UpdateTaskStatusToNext(task.TaskNum);
                                        StringBuilder builder = new StringBuilder();
                                        builder.AppendLine();
                                        builder.AppendLine($"【{commonStackerCrane.DeviceName}】堆垛机状态:【{commonStackerCrane.StackerCraneStatusDes}】,时间:【{DateTime.Now}】");
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,4 +1,5 @@
using Masuit.Tools;
using WIDESEA_Common;
using WIDESEA_Common.CustomModels;
//using WIDESEA_Common.CustomModels;
@@ -1153,4 +1154,43 @@
    }
    #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())
            {
                task.TargetAddress = toStation.stationLocation;
                task.NextAddress = toStation.stationChildCode;
                task.Grade = 3;
                task.TaskType = (int)TaskOutboundTypeEnum.InToOut;
                var location = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
                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
}