duyongjia
2024-12-02 208a9afadac81484fa150c0a236618facab93c52
最新修改上传
已修改6个文件
已添加1个文件
163 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Client/src/api/http.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Client/src/assets/imgs/wcs_x.png 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Client/src/views/Index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Client/src/views/Login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/api/http.js
@@ -12,7 +12,7 @@
let loadingInstance;
let loadingStatus = false;
if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = 'http://10.0.250.15:9291/';
    axios.defaults.baseURL = 'http://127.0.0.1:9291/';
}
else if (process.env.NODE_ENV == 'debug') {
    axios.defaults.baseURL = 'http://10.0.250.15:9291/';
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/assets/imgs/wcs_x.png
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/views/Index.vue
@@ -120,7 +120,7 @@
import VolMenu from "@/components/basic/VolElementMenu.vue";
import Message from "./index/Message.vue";
import MessageConfig from "./index/MessageConfig.js";
var imgUrl = require("@/assets/imgs/wms_x.png");
var imgUrl = require("@/assets/imgs/wcs_x.png");
var $this;
var $interval;
var $indexDate;
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/views/Login.vue
@@ -1,6 +1,6 @@
<template>
  <div class="login-container">
    <div class="project-name">WIDESEA_WMS</div>
    <div class="project-name">WCS</div>
    <div class="login-form">
      <div class="form-user" @keypress="loginPress">
        <div class="login-text">
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -66,7 +66,7 @@
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        [Route("CancelTask")]
        [HttpPost,Route("CancelTask")]
        public WebResponseContent CancelTask(int taskNum)
        {
           return  Service.CancelTask(taskNum);
@@ -78,7 +78,7 @@
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("ForceCompleteTask")]
        [HttpPost, Route("ForceCompleteTask")]
        public WebResponseContent ForceCompleteTask (int taskNum)
        {
            return Service.ForceCompleteTask(taskNum);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -8,7 +8,9 @@
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Common.ServiceLog;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
@@ -51,18 +53,19 @@
        public Task Execute(IJobExecutionContext context)
        {
            WriteDebug("大堆垛机运行日志", "开始时间" + DateTime.Now);
            WriteDebug("大堆垛机运行日志", $"大堆垛机任务执行中...");
            //CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
            CommonStackerCrane commonStackerCrane = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC01") as CommonStackerCrane;
            //WriteDebug("大堆垛机运行日志", "开始时间" + DateTime.Now);
            Console.WriteLine("当前线程数"+ThreadPool.ThreadCount);
             //CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
             CommonStackerCrane commonStackerCrane = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC01") as CommonStackerCrane;
            try
            {  
                if (commonStackerCrane != null)
                {
                    if (!commonStackerCrane.IsEventSubscribed)
                    {
                        commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订阅任务完成事件
                    }
                   WriteDebug("大堆垛机运行日志", $"大堆垛机任务执行中...");
                    //if (!commonStackerCrane.IsEventSubscribed)
                    //{
                    //    commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订阅任务完成事件
                    //}
                    if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal)
                    {
@@ -73,6 +76,7 @@
                            Dt_Task? task = GetTask(commonStackerCrane);
                            if (task != null)
                            {
                                WriteDebug("大堆垛机运行日志", $"大堆垛机任务号{task.TaskNum}");
                                StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
                                if (stackerCraneTaskCommand != null)
@@ -95,8 +99,12 @@
                                        //空车出库命令发送成功后,回传 status=1,
                                        if (task.TaskType == (int)TaskOutboundTypeEnum.OutPick)
                                        {
                                            Dt_LocationInfo srcLocation = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
                                            srcLocation.LocationStatus = (int)LocationStatusEnum.Free;
                                            _locationInfoRepository.UpdateData(srcLocation);
                                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 1 };
                                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
                                            WriteDebug(nameof(CommonStackerCraneJob), $"堆垛机回传Status:1,用于生成出库任务,任务号{task.TaskNum}");
                                        }
                                    }
                                    else
@@ -109,6 +117,10 @@
                        }
                    }
                }
                else
                {
                    WriteDebug(nameof(DoubleStackerCraneJob), "未查询到当前可以执行上料任务的大堆垛机!");
                }
            }
            catch (Exception ex)
            {
@@ -116,14 +128,37 @@
            }
            //查询提升机/组立机信号
            //Task.Run(delegate
            //{
            try
            {
                if (commonStackerCrane != null)
                {
                    //读取大堆垛机任务号和任务完成确认状态(因为封装的事件经常不触发,所以加个直接读的逻辑,以免出现堆垛机一直接处于等待wcs确认)
                    byte IsOver = commonStackerCrane.Communicator.Read<byte>("DB106.22");
                    int tasknum = commonStackerCrane.Communicator.Read<int>("DB106.18");
                    //WriteDebug(nameof(CommonStackerCraneJob), $"读取大堆垛机SC01任务完成信号值:{IsOver} ä»»åŠ¡å·ï¼š{tasknum}");
                    if (IsOver == 6)
                    {
                        if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
                        {
                            _taskService.StackCraneTaskCompleted(tasknum);
                            Console.Out.WriteLine("TaskCompleted" + tasknum);
                            bool issuccess = commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
                            if (issuccess)
                            {
                                WriteDebug(nameof(CommonStackerCraneJob), $"大堆垛机SC01任务号写入任务完成确认值5成功{tasknum}");
                            }
                            else
                            {
                                WriteDebug(nameof(CommonStackerCraneJob), $"大堆垛机SC01任务号写入任务完成确认值5失败{tasknum}");
                            }
                        }
                    }
                    //提升机交互
                    Dt_Task? task1001 = _taskService.QueryStackerCraneTaskByAGVRequest("SC01");
                    if (task1001 != null)
                    {
@@ -293,13 +328,15 @@
                    }
                }
            }
            catch (Exception ex)
            {
                WriteError(nameof(CommonStackerCraneJob), "查询或写入PLC状态失败!", ex);
            }
            WriteDebug("大堆垛机运行日志", "结束时间" + DateTime.Now);
           // WriteDebug("大堆垛机运行日志", "结束时间" + DateTime.Now);
            //});
            return Task.CompletedTask;
        }
@@ -318,7 +355,11 @@
                {
                    Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
                    _taskService.StackCraneTaskCompleted(e.TaskNum);
                    commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
                    bool issuccess=commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
                    if (issuccess)
                    {
                        WriteDebug(nameof(CommonStackerCraneJob), $"任务号写入任务完成确认值5成功{e.TaskNum}");
                    }
                }
            }
        }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/DoubleStackerCraneJob.cs
@@ -52,10 +52,9 @@
        public  Task Execute(IJobExecutionContext context)
        {
            WriteDebug("小堆垛机运行日志", "开始时间" + DateTime.Now);
            //WriteDebug("小堆垛机运行日志", "开始时间" + DateTime.Now);
            CommonStackerCrane? stackerCraneOne = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC02") as CommonStackerCrane;
            CommonStackerCrane? stackerCraneTwo = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "SC03") as CommonStackerCrane;
            WriteDebug(nameof(DoubleStackerCraneJob), $"小堆垛机任务执行中...");
          
            try
            {
@@ -63,11 +62,11 @@
                Dt_Task? task = GetTask();
                
                if (task != null)
                {
                    WriteDebug("小堆垛机运行日志", $"小堆垛机任务号{task.TaskNum}");
                {
                    CommonStackerCrane? StackerCrane = GetStrackerCrane(task, stackerCraneOne, stackerCraneTwo);
                    if (StackerCrane != null)
                    {
                        WriteDebug("小堆垛机运行日志", $"小堆垛机任务号{task.TaskNum}");
                        StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
                        if (stackerCraneTaskCommand != null)
                        {
@@ -96,55 +95,74 @@
            }
            catch (Exception ex)
            {
                WriteError(nameof(CommonStackerCraneJob), "小堆垛机执行任务异常!", ex);
                WriteError(nameof(DoubleStackerCraneJob), "小堆垛机执行任务异常!", ex);
            }
            //读取堆垛机任务号和任务完成确认状态
            //Task.Run(delegate
            //{
                try
            try
            {
                if (stackerCraneOne != null)//SC02
                {
                    if (stackerCraneOne != null)
                    {
                        byte IsFinish = stackerCraneOne.Communicator.Read<byte>("DB106.22");
                        int tasknum = stackerCraneOne.Communicator.Read<int>("DB106.18");
                        if (IsFinish == 6)
                        {
                            if (stackerCraneOne.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
                            {
                                //暂时 å…ˆå†™5:完成确认 ä¿¡å·
                                _taskService.StackCraneTaskCompleted(tasknum);
                                stackerCraneOne.SetValue(StackerCraneDBName.WorkType, 5);
                            }
                        }
                    }
                    if (stackerCraneTwo != null)
                    byte IsOver = stackerCraneOne.Communicator.Read<byte>("DB106.22");
                    int tasknum = stackerCraneOne.Communicator.Read<int>("DB106.18");
                   // WriteDebug(nameof(DoubleStackerCraneJob), $"读取小堆垛机SC02任务完成信号值:{IsOver}任务号:{tasknum}");
                    if (IsOver == 6)
                    {
                        //读取堆垛机任务号和任务完成确认状态
                        byte IsFinish = stackerCraneTwo.Communicator.Read<byte>("DB106.22");
                        int tasknum = stackerCraneTwo.Communicator.Read<int>("DB106.18");
                        if (IsFinish == 6)
                        if (stackerCraneOne.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
                        {
                            if (stackerCraneTwo.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
                            _taskService.StackCraneTaskCompleted(tasknum);
                            Console.Out.WriteLine("TaskCompleted" + tasknum);
                            bool issuccess = stackerCraneOne.SetValue(StackerCraneDBName.WorkType, 5);
                            if (issuccess)
                            {
                                _taskService.StackCraneTaskCompleted(tasknum);
                                stackerCraneTwo.SetValue(StackerCraneDBName.WorkType, 5);
                                WriteDebug(nameof(DoubleStackerCraneJob), $"小堆垛机SC02任务号写入任务完成确认值5成功{tasknum}");
                            }
                            else
                            {
                                WriteDebug(nameof(DoubleStackerCraneJob), $"小堆垛机SC02任务号写入任务完成确认值5失败{tasknum}");
                            }
                        }
                    }
                }
                if (stackerCraneTwo != null)//SC03
                {
                    //读取堆垛机任务号和任务完成确认状态
                    byte IsOver = stackerCraneTwo.Communicator.Read<byte>("DB106.22");
                    int tasknum = stackerCraneTwo.Communicator.Read<int>("DB106.18");
                   // WriteDebug(nameof(DoubleStackerCraneJob), $"读取小堆垛机SC03任务完成信号值:{IsOver}任务号:{tasknum}");
                    if (IsOver == 6)
                    {
                        if (stackerCraneTwo.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
                        {
                            _taskService.StackCraneTaskCompleted(tasknum);
                            Console.Out.WriteLine("TaskCompleted" + tasknum);
                            bool issuccess = stackerCraneTwo.SetValue(StackerCraneDBName.WorkType, 5);
                            if (issuccess)
                            {
                                WriteDebug(nameof(DoubleStackerCraneJob), $"小堆垛机SC03任务号写入任务完成确认值5成功{tasknum}");
                            }
                            else
                            {
                                WriteDebug(nameof(DoubleStackerCraneJob), $"小堆垛机SC03任务号写入任务完成确认值5失败{tasknum}");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    WriteError(nameof(DoubleStackerCraneJob), "查询或写入PLC状态失败!", ex);
                }
            }
            catch (Exception ex)
            {
                WriteError(nameof(DoubleStackerCraneJob), "查询或写入PLC状态失败!", ex);
            }
            //});
            WriteDebug("小堆垛机运行日志", "结束时间" + DateTime.Now);
            //WriteDebug("小堆垛机运行日志", "结束时间" + DateTime.Now);
            return Task.CompletedTask;
        }