巷道口输送机下发读值校验

This commit is contained in:
FT577-Server
2026-10-19 10:59:31 +08:00
parent 5edf4a62b9
commit 122ac6b34a
3 changed files with 67 additions and 14 deletions

View File

@@ -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);

View File

@@ -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());
}
}
}

View File

@@ -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<Integer> res = plcConv.ReadInt32(readAddr);
if (res.IsSuccess){
return res.Content;
}
return 0;
}
}