huangxiaoqiang
2025-03-26 1b8cce65d4987e4b7e94d1b178abb3af0978a2d4
123123
已删除5个文件
已修改3个文件
234 ■■■■ 文件已修改
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs 192 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目图纸/2024-09-04电控提供的图纸/08二楼输送布局点位图1106(4).dwg.bak 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目图纸/后段线体点位图/09三楼输送光电位置图1108(1).dwl 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目图纸/后段线体点位图/09三楼输送光电位置图1108(1).dwl2 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目图纸/后段线体点位图/电芯车间三楼09编号光电位置图1108.dwl 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目图纸/后段线体点位图/电芯车间三楼09编号光电位置图1108.dwl2 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -285,7 +285,19 @@
        {
            string isTrue = string.Empty;
            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
            ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
            if (result.SerialNos.Count == 0)
            {
                var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                if (Traycontent.Status)
                {
                    ConsoleHelper.WriteSuccessLine("请求回流静置");
                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                }
            }
            List<string> strings = stationManager.Roadway.Split(",").ToList();
            foreach (string item in strings)
@@ -539,61 +551,157 @@
                }
            }
        }
        public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue ,string childDeviceCode)
        //public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue ,string childDeviceCode)
        //{
        //    var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
        //    if (task != null)
        //    {
        //        var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
        //        var valueList = value.Split(',').ToList();
        //        if (valueList.Contains(task.SourceAddress))
        //        {
        //            conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
        //            var log = $"【{conveyorLine._deviceName}】任务号:【{task.TaskNum}】,托盘条码:【{task.PalletCode}】已到达【{childDeviceCode}】请求扫码入库(实盘),下一目标地址【{1000}】";
        //            ConsoleHelper.WriteWarningLine(log);
        //            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
        //            WriteInfo(conveyorLine.DeviceName, log);
        //            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
        //        }
        //        else if (task.TargetAddress == "1020-1")
        //        {
        //            var next = task.NextAddress;
        //            var taskCommand = MapTaskCommand(task, command);
        //            task.NextAddress = next;
        //            var log = $"【{conveyorLine._deviceName}】任务号:【{command.TaskNum}】,托盘条码:【{command.Barcode}】已到达【{childDeviceCode}】请求扫码入库(实盘),下一目标地址【{taskCommand.TargetAddress}】";
        //            ConsoleHelper.WriteWarningLine(log);
        //            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
        //            WriteInfo(conveyorLine.DeviceName, log);
        //            conveyorLine.SendCommand(taskCommand, childDeviceCode);
        //            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
        //            var taskHty = task.Adapt<Dt_Task_Hty>();
        //            _task_HtyRepository.AddData(taskHty);
        //            _taskService.DeleteData(task);
        //        }
        //        else
        //        {
        //            var next = task.NextAddress;
        //            var taskCommand = MapTaskCommand(task, command);
        //            task.NextAddress = next;
        //            var log = $"【{conveyorLine._deviceName}】任务号:【{command.TaskNum}】,托盘条码:【{command.Barcode}】已到达【{childDeviceCode}】请求扫码入库(实盘),下一目标地址【{taskCommand.TargetAddress}】";
        //            ConsoleHelper.WriteWarningLine(log);
        //            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
        //            WriteInfo(conveyorLine.DeviceName, log);
        //            conveyorLine.SendCommand(taskCommand, childDeviceCode);
        //            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
        //            _taskService.UpdateTaskStatusToNext(task);
        //        }
        //    }
        //}
        /// <summary>
        /// æ‰§è¡Œè¾“送线任务
        /// </summary>
        /// <param name="conveyorLine">输送线对象</param>
        /// <param name="command">输送线任务命令</param>
        /// <param name="ProtocalDetailValue">协议明细值</param>
        /// <param name="childDeviceCode">子设备编号</param>
        public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue, string childDeviceCode)
        {
            // æŸ¥è¯¢ä»»åŠ¡ä¿¡æ¯
            var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
            if (task != null)
            if (task == null) return;
            // èŽ·å–é…ç½®å€¼å¹¶è½¬æ¢ä¸ºåˆ—è¡¨
            var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
            var valueList = value.Split(',').ToList();
            // æ—¥å¿—模板
            var logMessage = $"【{conveyorLine._deviceName}】任务号:【{task.TaskNum}】,托盘条码:【{task.PalletCode}】已到达【{childDeviceCode}】请求扫码入库(实盘),下一目标地址【{{0}}】";
            // åˆ¤æ–­ä»»åŠ¡çš„èµ·å§‹åœ°å€æ˜¯å¦åœ¨é…ç½®åˆ—è¡¨ä¸­
            if (valueList.Contains(task.SourceAddress))
            {
                var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
                var valueList = value.Split(',').ToList();
                if (valueList.Contains(task.SourceAddress))
                // è®¾ç½®ç›®æ ‡åœ°å€ä¸º "1000"
                conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
                // è®°å½•日志并发送完成信号
                LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, "1000");
            }
            else if (task.Roadway.Contains("JZ"))
            {
                // æŸ¥è¯¢æ˜¯å¦å­˜åœ¨é™ç½®å‡ºåº“任务
                var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
                    (x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting ||
                     x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting ||
                     x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish));
                if (outJZTask.IsNullOrEmpty())
                {
                    conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
                    var log = $"【{conveyorLine._deviceName}】任务号:【{task.TaskNum}】,托盘条码:【{task.PalletCode}】已到达【{childDeviceCode}】请求扫码入库(实盘or空盘),下一目标地址【{1000}】";
                    ConsoleHelper.WriteWarningLine(log);
                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                    WriteInfo(conveyorLine.DeviceName, log);
                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
                }
                else if (task.TargetAddress == "1020-1")
                {
                    var next = task.NextAddress;
                    // æ˜ å°„任务命令
                    var taskCommand = MapTaskCommand(task, command);
                    task.NextAddress = next;
                    var log = $"【{conveyorLine._deviceName}】任务号:【{command.TaskNum}】,托盘条码:【{command.Barcode}】已到达【{childDeviceCode}】请求扫码入库(实盘),下一目标地址【{taskCommand.TargetAddress}】";
                    ConsoleHelper.WriteWarningLine(log);
                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                    WriteInfo(conveyorLine.DeviceName, log);
                    // å‘送任务命令
                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
                    var taskHty = task.Adapt<Dt_Task_Hty>();
                    _task_HtyRepository.AddData(taskHty);
                    _taskService.DeleteData(task);
                    // è®°å½•日志并发送完成信号
                    LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, taskCommand.TargetAddress.ToString());
                    // æ›´æ–°ä»»åŠ¡çŠ¶æ€
                    _taskService.UpdateTaskStatusToNext(task);
                }
                else
                {
                    var next = task.NextAddress;
                    var taskCommand = MapTaskCommand(task, command);
                    task.NextAddress = next;
                    var log = $"【{conveyorLine._deviceName}】任务号:【{command.TaskNum}】,托盘条码:【{command.Barcode}】已到达【{childDeviceCode}】请求扫码入库(实盘),下一目标地址【{taskCommand.TargetAddress}】";
                    ConsoleHelper.WriteWarningLine(log);
                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                    WriteInfo(conveyorLine.DeviceName, log);
                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
                    _taskService.UpdateTaskStatusToNext(task);
                    ConsoleHelper.WriteWarningLine("已存在静置出库任务,静置入库任务无法下发至线体");
                }
            }
            else
            {
                // æ˜ å°„任务命令
                var taskCommand = MapTaskCommand(task, command);
                // å‘送任务命令
                conveyorLine.SendCommand(taskCommand, childDeviceCode);
                // è®°å½•日志并发送完成信号
                LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, taskCommand.TargetAddress.ToString());
                // æ›´æ–°ä»»åŠ¡çŠ¶æ€
                _taskService.UpdateTaskStatusToNext(task);
            }
        }
        /// <summary>
        /// è®°å½•日志并发送完成信号
        /// </summary>
        /// <param name="conveyorLine">输送线对象</param>
        /// <param name="childDeviceCode">子设备编号</param>
        /// <param name="ProtocalDetailValue">协议明细值</param>
        /// <param name="logMessage">日志消息模板</param>
        /// <param name="targetAddress">目标地址</param>
        private void LogAndSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, string logMessage, string targetAddress)
        {
            // æ ¼å¼åŒ–日志消息
            var log = string.Format(logMessage, targetAddress);
            // è¾“出警告日志
            ConsoleHelper.WriteWarningLine(log);
            // è®°å½•日志
            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log, time = DateTime.Now.ToString("G"), color = "red" });
            WriteInfo(conveyorLine.DeviceName, log);
            // å‘送完成信号
            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
        }
    }
}
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs
@@ -189,7 +189,7 @@
            //var proAddress = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationInfo.stationChildCode).Where(x => x.DeviceProParamName == ConveyorLineDBName_After.Reserve5.ToString()).FirstOrDefault().DeviceProAddress;
            var cache = Convert.ToInt16(conveyorLine.ReadValue(ConveyorLineDBName_After.Reserve5, stationInfo.stationChildCode));
            ConsoleHelper.WriteColorLine($"已经有{taskNew.Count}个任务,可以放{cache}个空托盘", ConsoleColor.DarkCyan);
            if (taskNew.Count + 1 <= cache)   //不存在空框出库任务 åˆ™è¯·æ±‚WMS出空库
            if (taskNew.Count + 1 < cache)   //不存在空框出库任务 åˆ™è¯·æ±‚WMS出空库
            {
                //ConsoleHelper.WriteWarningLine("请求空托盘");
                if (_taskService.RequestTask(command.ConveyorLineBarcode, stationInfo).Result.Status)
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -1,4 +1,5 @@
using Mapster;
using Masuit.Tools;
using Newtonsoft.Json;
using Quartz;
using System.Diagnostics.CodeAnalysis;
@@ -60,7 +61,6 @@
        {
            try
            {
                CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
                if (commonStackerCrane != null)
                {
@@ -218,7 +218,7 @@
        /// <returns></returns>
        private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
        {
            Dt_Task task;
            Dt_Task task = null;
            if (commonStackerCrane.LastTaskType == null)
            {
                task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
@@ -266,6 +266,22 @@
                    return task;
                }
                #region é™ç½®å‡ºåº“判断是否能执行任务
                if (!task.IsNullOrEmpty() && task.Roadway.Contains("JZ") && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                {
                    // æŸ¥è¯¢æ˜¯å¦å­˜åœ¨é™ç½®å…¥åº“任务
                    var inJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
                        (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting ||
                         x.TaskState == (int)TaskInStatusEnum.SC_InExecuting ||
                         x.TaskState == (int)TaskInStatusEnum.Line_InFinish));
                    ConsoleHelper.WriteErrorLine($"当前静置线体存在入库任务{inJZTask.Count()}条,{(inJZTask.Count() > 0 ? "可入库" : "不可入库")}");
                    if (!inJZTask.IsNullOrEmpty())
                        return null;
                }
                #endregion é™ç½®å‡ºåº“判断是否能执行任务
            }
            else if (task == null)
            {
@@ -414,7 +430,7 @@
            {
                var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
                var valueList = value.Split(',').ToList();
                if ((valueList.Contains(task.SourceAddress)) && task.Roadway.Contains("CH")||task.Roadway.Contains("JZ"))
                if ((valueList.Contains(task.SourceAddress)) && task.Roadway.Contains("CH") || task.Roadway.Contains("JZ"))
                {
                    string[] souredCodes = task.CurrentAddress.Split("-");
                    if (souredCodes.Length == 3)
ÏîÄ¿×ÊÁÏ/ÏîĿͼֽ/2024-09-04µç¿ØÌṩµÄͼֽ/08¶þÂ¥ÊäËͲ¼¾Öµãλͼ1106(4).dwg.bak
Binary files differ
ÏîÄ¿×ÊÁÏ/ÏîĿͼֽ/ºó¶ÎÏßÌåµãλͼ/09ÈýÂ¥ÊäË͹âµçλÖÃͼ1108(1).dwl
ÎļþÒÑɾ³ý
ÏîÄ¿×ÊÁÏ/ÏîĿͼֽ/ºó¶ÎÏßÌåµãλͼ/09ÈýÂ¥ÊäË͹âµçλÖÃͼ1108(1).dwl2
ÎļþÒÑɾ³ý
ÏîÄ¿×ÊÁÏ/ÏîĿͼֽ/ºó¶ÎÏßÌåµãλͼ/µçо³µ¼äÈýÂ¥09±àºÅ¹âµçλÖÃͼ1108.dwl
ÎļþÒÑɾ³ý
ÏîÄ¿×ÊÁÏ/ÏîĿͼֽ/ºó¶ÎÏßÌåµãλͼ/µçо³µ¼äÈýÂ¥09±àºÅ¹âµçλÖÃͼ1108.dwl2
ÎļþÒÑɾ³ý