From 122ac6b34a04325799e8351092c5d8f1749dcb2a Mon Sep 17 00:00:00 2001 From: FT577-Server Date: Mon, 19 Oct 2026 10:59:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B7=E9=81=93=E5=8F=A3=E8=BE=93=E9=80=81?= =?UTF-8?q?=E6=9C=BA=E4=B8=8B=E5=8F=91=E8=AF=BB=E5=80=BC=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/service/impl/MydoJobServiceImpl.java | 27 ++++++---- .../scheduleTask/ddj/DdjThread_1.java | 4 +- .../scheduleTask/ssj/RoadConvThread.java | 50 ++++++++++++++++++- 3 files changed, 67 insertions(+), 14 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java index 8a2b992..984d4e0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java @@ -6,6 +6,7 @@ import java.util.List; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.UUID; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; @@ -157,33 +158,34 @@ public class MydoJobServiceImpl implements IMydoJobService @Override public boolean taskFinish(Long rwh) { - MydoJob task = selectMydoJobByTaskNo(rwh); + MydoJob mydoJob = selectMydoJobByTaskNo(rwh); + mydoJob.setFinishTime(DateUtil.now()); //插入历史表 - insertHistory(task.getJobId()); + insertHistory(mydoJob.getJobId()); //删除执行中的作业 - deleteMydoJobByJobId(task.getJobId()); + deleteMydoJobByJobId(mydoJob.getJobId()); //移除“可能存在”的堆垛机队列 - DdjDeviceExecutionQueue queue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByTaskNo(task.getTaskNo()); + DdjDeviceExecutionQueue queue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByTaskNo(mydoJob.getTaskNo()); if (queue != null){ - ddjDeviceExecutionQueueService.deleteDdjDeviceExecutionQueueByTaskNo(task.getTaskNo()); + ddjDeviceExecutionQueueService.deleteDdjDeviceExecutionQueueByTaskNo(mydoJob.getTaskNo()); } //插入回传表 JobCallBack jobCallBack = new JobCallBack(); - jobCallBack.setType(task.getInOrOut()); - jobCallBack.setMydoJobId(task.getJobId()); + jobCallBack.setType(mydoJob.getInOrOut()); + jobCallBack.setMydoJobId(mydoJob.getJobId()); jobCallBack.setStatus("0"); - jobCallBack.setTaskNo(Convert.toLong(task.getTaskNo())); + jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); jobCallBack.setCreateTime(new Date()); jobCallBack.setTaskTypeCode(WMS_TASK_TYPE_FINISH); jobCallBack.setReqCode(UUID.randomUUID().toString().replace("-", "")); - jobCallBack.setTaskCode(task.getWmsTaskNo()); + jobCallBack.setTaskCode(mydoJob.getWmsTaskNo()); jobCallBackService.insertJobCallBack(jobCallBack); - log.info("【任务自动完成】生成历史记录,插入回传列表,作业号:{},wcs任务号:{}", task.getJobId(), rwh); + log.info("【任务自动完成】生成历史记录,插入回传列表,作业号:{},wcs任务号:{}", mydoJob.getJobId(), rwh); return true; } @@ -251,6 +253,7 @@ public class MydoJobServiceImpl implements IMydoJobService //生成回传记录 MydoJob mydoJob = mydoJobMapper.selectMydoJobByJobId(jobId); + mydoJob.setFinishTime(DateUtil.now()); mydoJob.setStatus(TASK_STATUS_FINISH_MANUAL); updateMydoJob(mydoJob); @@ -277,6 +280,7 @@ public class MydoJobServiceImpl implements IMydoJobService //标记状态为【手动完成】插入历史表 mydoJob.setStatus(TASK_STATUS_FINISH_MANUAL); + mydoJob.setFinishTime(DateUtil.now()); updateMydoJob(mydoJob); mydoJobMapper.insertHistory(mydoJob.getJobId()); @@ -380,6 +384,7 @@ public class MydoJobServiceImpl implements IMydoJobService } //标记状态为【手动完成】插入历史表 mydoJob.setStatus(TASK_STATUS_FINISH_MANUAL); + mydoJob.setFinishTime(DateUtil.now()); updateMydoJob(mydoJob); mydoJobMapper.insertHistory(jobId); try { @@ -429,6 +434,7 @@ public class MydoJobServiceImpl implements IMydoJobService //标记状态为【手动作废】插入历史表 mydoJob.setStatus(TASK_STATUS_INVALID); + mydoJob.setFinishTime(DateUtil.now()); updateMydoJob(mydoJob); mydoJobMapper.insertHistory(mydoJob.getJobId()); @@ -482,6 +488,7 @@ public class MydoJobServiceImpl implements IMydoJobService //标记状态为【手动作废】插入历史表 mydoJob.setStatus(TASK_STATUS_INVALID); + mydoJob.setFinishTime(DateUtil.now()); updateMydoJob(mydoJob); mydoJobMapper.insertHistory(jobId); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread_1.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread_1.java index ec72661..636b7f3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread_1.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread_1.java @@ -270,9 +270,9 @@ public class DdjThread_1 implements Runnable { ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setDdjxf("1"); ddjDeviceExecutionQueueService.updateDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); - log.info("【堆垛机入库】下发任务成功,任务执行中, 任务号:{}", ddjDeviceExecutionQueue.getRwh()); + log.info("【堆垛机作业】下发任务成功,任务执行中, 任务号:{}", ddjDeviceExecutionQueue.getRwh()); } else { - log.error("【堆垛机入库】堆垛机下发任务失败,任务号:{},等待重新下发...", ddjDeviceExecutionQueue.getRwh()); + log.error("【堆垛机作业】堆垛机下发任务失败,任务号:{},等待重新下发...", ddjDeviceExecutionQueue.getRwh()); } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java index c835838..7006256 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java @@ -1,5 +1,9 @@ package com.ruoyi.schedule.scheduleTask.ssj; +import HslCommunication.Core.Types.OperateResult; +import HslCommunication.Core.Types.OperateResultExOne; +import HslCommunication.Profinet.Siemens.SiemensPLCS; +import HslCommunication.Profinet.Siemens.SiemensS7Net; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; @@ -54,6 +58,8 @@ public class RoadConvThread implements Runnable { private IDeviceSsjService deviceSsjService; public boolean isRun = true; + private static SiemensS7Net plcConv = new SiemensS7Net(SiemensPLCS.S1500, "172.16.30.140"); + public void init() { ssjCodeList = new HashMap<>(); @@ -487,6 +493,15 @@ public class RoadConvThread implements Runnable { //输送机去向值【1】 int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), mydoJobStockin.getTaskNo(), 1, 1); + //检查是否生成了当前任务号的堆垛机取货队列 +// DdjDeviceExecutionQueue queue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByTaskNo(mydoJobStockin.getTaskNo()); + + //执行下发后再次读输送机任务号检查是否写入成功 + boolean sendConvIsSuccess = mydoJobStockin.getTaskNo().equals(getRoadConvTaskNo(inSsjDevice.getDeviceCode())); + if (!sendConvIsSuccess){ + log.info("【更新状态】巷道口输送机{}未读到下发任务号,尝试重新下发,任务号:{}", inSsjDevice.getDeviceCode(), mydoJobStockin.getTaskNo()); + } + if (i == 1) { //写入成功则更新执行阶段 mydoJobStockin.setStatus(TASK_STATUS_RUNNING); @@ -494,9 +509,9 @@ public class RoadConvThread implements Runnable { // mydoJobStockin.setEntranceId(inSsjDevice.getDeviceCode()); mydoJobStockin.setStartTime(DateUtil.formatDateTime(DateUtil.date())); mydoJobService.updateMydoJob(mydoJobStockin); - log.info("【更新状态】巷道输送机{}下发成功,任务号:{},等待堆垛机取货", inSsjDevice.getDeviceCode(), mydoJobStockin.getTaskNo()); + log.info("【更新状态】巷道输送机{}入库到位,下发成功,任务号:{},等待堆垛机取货", inSsjDevice.getDeviceCode(), mydoJobStockin.getTaskNo()); }else{ - log.info("【更新状态】巷道输送机{}下发失败,任务号:{},等待重试中...", inSsjDevice.getDeviceCode(), mydoJobStockin.getTaskNo()); + log.info("【更新状态】巷道输送机{}入库到位,下发失败,任务号:{},等待重试中...", inSsjDevice.getDeviceCode(), mydoJobStockin.getTaskNo()); } } @@ -711,4 +726,35 @@ public class RoadConvThread implements Runnable { } + + + int getRoadConvTaskNo(String deviceCode){ + + String readAddr = ""; + switch (deviceCode){ + case "1003": + readAddr = "DB501.88"; + break; + case "1005": + readAddr = "DB501.116"; + break; + case "1007": + readAddr = "DB501.146"; + break; + case "1010": + readAddr = "DB501.172"; + break; + } + + OperateResultExOne res = plcConv.ReadInt32(readAddr); + + if (res.IsSuccess){ + return res.Content; + } + + return 0; + + } + + }