修改一楼出库执行阶段

This commit is contained in:
liuhanqing
2025-09-25 10:36:55 +08:00
parent 94e7d0c617
commit d91bc2c37b
4 changed files with 62 additions and 34 deletions

View File

@@ -6,18 +6,16 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse;
import com.ruoyi.api.service.IApiService; import com.ruoyi.api.service.IApiService;
import com.ruoyi.bas.cargospace.domain.BasCargoSpace; import com.ruoyi.bas.cargospace.domain.BasCargoSpace;
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService; import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.domain.SendData; import com.ruoyi.common.domain.SendData;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.agv.domain.AgvQueue;
import com.ruoyi.queue.agv.service.IAgvQueueService; import com.ruoyi.queue.agv.service.IAgvQueueService;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.queue.ddj.domain.DdjDeviceExecutionQueue; import com.ruoyi.queue.ddj.domain.DdjDeviceExecutionQueue;
import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueService; import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueService;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
@@ -26,7 +24,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.*; import java.util.*;
import static com.ruoyi.common.TaskType.DDJ_RWLX_2; import static com.ruoyi.common.TaskStatusCode.*;
import static com.ruoyi.common.TaskType.DDJ_RWLX_3; import static com.ruoyi.common.TaskType.DDJ_RWLX_3;
/** /**
@@ -104,7 +102,11 @@ public class Floor1BothWayInSsjThread implements Runnable {
if (ssj.getDw() == 1 && ssj.getTaskNo() > 0) { if (ssj.getDw() == 1 && ssj.getTaskNo() > 0) {
int taskNo = ssj.getTaskNo(); int taskNo = ssj.getTaskNo();
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(taskNo)); MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(taskNo));
if (ObjUtil.isNotNull(mydoJob)) { if (ObjUtil.isNotNull(mydoJob) && mydoJob.getExecutionPhase().equals(TASK_EP_SSJ)) {
mydoJob.setExecutionPhase(TASK_EP_ROADWAY_SSJ);
mydoJobService.updateMydoJob(mydoJob);
}
if (ObjUtil.isNotNull(mydoJob) && mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) {
List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_3, Convert.toInt(mydoJob.getRoadwayId())); List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_3, Convert.toInt(mydoJob.getRoadwayId()));
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
List<Integer> pclList = roadwayMap.get(ssj.getDeviceCode()); List<Integer> pclList = roadwayMap.get(ssj.getDeviceCode());
@@ -126,13 +128,16 @@ public class Floor1BothWayInSsjThread implements Runnable {
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
mydoJob.setExecutionPhase(TASK_EP_DDJ);
mydoJobService.updateMydoJob(mydoJob);
} }
} }
} }
} }
private void dispatch2(DeviceSsj ssj) { private void dispatch2(DeviceSsj ssj) {
if (ssj.getDw() == 1 && ssj.getTaskNo() > 0 && ssj.getRkqq() == 1) { if (ssj.getDw() == 1 && ssj.getTaskNo() > 0 && ssj.getTaskNo() < 1000 && ssj.getRkqq() == 1) {
//先检测有没有出库作业,有出库作业直接退回 //先检测有没有出库作业,有出库作业直接退回
MydoJob outMydoJob = mydoJobService.selectMydoJobByExitList(Collections.singletonList(exitRoadwayMap.get(ssj.getDeviceCode()))); MydoJob outMydoJob = mydoJobService.selectMydoJobByExitList(Collections.singletonList(exitRoadwayMap.get(ssj.getDeviceCode())));
if (ObjUtil.isNotNull(outMydoJob)) { if (ObjUtil.isNotNull(outMydoJob)) {
@@ -156,7 +161,7 @@ public class Floor1BothWayInSsjThread implements Runnable {
} else { } else {
if (StrUtil.isNotEmpty(ssj.getTrayCode())) { if (StrUtil.isNotEmpty(ssj.getTrayCode())) {
MydoJob param = new MydoJob(); MydoJob param = new MydoJob();
param.setStatus("3"); param.setStatus(TASK_STATUS_CREATE);
param.setExecutionPhase("0"); param.setExecutionPhase("0");
if ("L2005".equals(ssj.getDeviceCode())) { if ("L2005".equals(ssj.getDeviceCode())) {
param.setEntranceId("L2013"); param.setEntranceId("L2013");
@@ -172,8 +177,6 @@ public class Floor1BothWayInSsjThread implements Runnable {
AjaxResult result = apiService.requestEnterByEnterIdAndTrayCode(); AjaxResult result = apiService.requestEnterByEnterIdAndTrayCode();
if (result.isSuccess()) { if (result.isSuccess()) {
inJob = (MydoJob) result.get("data"); inJob = (MydoJob) result.get("data");
inJob.setStatus("3");
inJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.insertMydoJob(inJob); mydoJobService.insertMydoJob(inJob);
} else { } else {
log.info("未检测到托盘码请求入库作业 rwh:{},trayCode:{}", ssj.getTaskNo(), ssj.getTrayCode()); log.info("未检测到托盘码请求入库作业 rwh:{},trayCode:{}", ssj.getTaskNo(), ssj.getTrayCode());
@@ -194,6 +197,11 @@ public class Floor1BothWayInSsjThread implements Runnable {
break; break;
} }
if (i == 1) { if (i == 1) {
inJob.setStatus(TASK_STATUS_RUNNING);
inJob.setExecutionPhase(TASK_EP_SSJ);
inJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
inJob.setTargetRoadwayId(Convert.toStr(qx));
mydoJobService.updateMydoJob(inJob);
log.info("入库请求下发任务号加去向 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode()); log.info("入库请求下发任务号加去向 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode());
} }
} }

View File

@@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.*; import java.util.*;
import static com.ruoyi.common.TaskStatusCode.*;
import static com.ruoyi.common.TaskType.DDJ_RWLX_2; import static com.ruoyi.common.TaskType.DDJ_RWLX_2;
import static com.ruoyi.common.TaskType.DDJ_RWLX_3; import static com.ruoyi.common.TaskType.DDJ_RWLX_3;
@@ -111,13 +112,21 @@ public class Floor1BothWayOutSsjThread implements Runnable {
for (DeviceSsj ssj : ssjList) { for (DeviceSsj ssj : ssjList) {
if (ssj.getDw()==1 && ssj.getTaskNo()>0){ if (ssj.getDw()==1 && ssj.getTaskNo()>0){
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(ssj.getTaskNo())); MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(ssj.getTaskNo()));
if (ObjUtil.isNotNull(mydoJob)) { if (ObjUtil.isNotNull(mydoJob) && mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) {
mydoJob.setExecutionPhase(TASK_EP_SSJ);
mydoJobService.updateMydoJob(mydoJob);
}
if (ObjUtil.isNotNull(mydoJob) && mydoJob.getExecutionPhase().equals(TASK_EP_SSJ)) {
HashMap<String,Object> param = new HashMap<>(); HashMap<String,Object> param = new HashMap<>();
param.put("taskNo",mydoJob.getTaskNo()); param.put("taskNo",mydoJob.getTaskNo());
param.put("jobId",mydoJob.getJobId()); param.put("jobId",mydoJob.getJobId());
RequestLog result = apiService.finishMydoJob(param); RequestLog result = apiService.finishMydoJob(param);
if ("1".equals(result.getIsSuccessful())){ if ("1".equals(result.getIsSuccessful())){
log.info("完成任务 taskNo{} ",mydoJob.getTaskNo()); log.info("完成任务 taskNo{} ",mydoJob.getTaskNo());
mydoJob.setStatus(TASK_STATUS_FINISH);
mydoJob.setExecutionPhase(TASK_EP_WMS_FINISH);
mydoJob.setFinishTime(DateUtil.formatDateTime(new Date()));
mydoJobService.updateMydoJob(mydoJob);
mydoJobService.insertHistory(mydoJob.getJobId()); mydoJobService.insertHistory(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
} }
@@ -162,6 +171,11 @@ public class Floor1BothWayOutSsjThread implements Runnable {
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
pdOutJob.setStatus(TASK_STATUS_RUNNING);
pdOutJob.setExecutionPhase(TASK_EP_DDJ);
pdOutJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.updateMydoJob(pdOutJob);
} }
} }

View File

@@ -22,8 +22,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.*; import java.util.*;
import static com.ruoyi.common.TaskStatusCode.TASK_EP_DDJ; import static com.ruoyi.common.TaskStatusCode.*;
import static com.ruoyi.common.TaskStatusCode.TASK_STATUS_RUNNING;
import static com.ruoyi.common.TaskType.DDJ_RWLX_2; import static com.ruoyi.common.TaskType.DDJ_RWLX_2;
/** /**
@@ -36,10 +35,10 @@ public class Floor1SingleSsjThread implements Runnable {
private IApiService apiService; private IApiService apiService;
private IMydoJobService mydoJobService; private IMydoJobService mydoJobService;
public boolean isRun = true; public boolean isRun = true;
private final Map<String,String> exitRoadwayMap = new HashMap<>(); private final Map<String, String> exitRoadwayMap = new HashMap<>();
private IDdjDeviceExecutionQueueService ddjDeviceExecutionQueueService; private IDdjDeviceExecutionQueueService ddjDeviceExecutionQueueService;
private IBasCargoSpaceService basCargoSpaceService; private IBasCargoSpaceService basCargoSpaceService;
private final Map<String,List<Integer>> roadwayMap = new HashMap<>(); private final Map<String, List<Integer>> roadwayMap = new HashMap<>();
public void init() { public void init() {
@@ -62,18 +61,18 @@ public class Floor1SingleSsjThread implements Runnable {
basCargoSpaceService = SpringUtils.getBean(IBasCargoSpaceService.class); basCargoSpaceService = SpringUtils.getBean(IBasCargoSpaceService.class);
//初始化出口和巷道口映射关系 //初始化出口和巷道口映射关系
exitRoadwayMap.put("L2001","L2002"); exitRoadwayMap.put("L2001", "L2002");
exitRoadwayMap.put("L2007","L2008"); exitRoadwayMap.put("L2007", "L2008");
//初始化巷道口 排 列 层 //初始化巷道口 排 列 层
roadwayMap.put("L2001",Arrays.asList(1,1,1)); roadwayMap.put("L2001", Arrays.asList(1, 1, 1));
roadwayMap.put("L2007",Arrays.asList(1,1,1)); roadwayMap.put("L2007", Arrays.asList(1, 1, 1));
} }
@Override @Override
public void run() { public void run() {
init(); init();
while (isRun){ while (isRun) {
for (String type : ssjCodeList.keySet()) { for (String type : ssjCodeList.keySet()) {
//一楼单向巷道口 //一楼单向巷道口
if ("outRoadwaySsj".equals(type)) { if ("outRoadwaySsj".equals(type)) {
@@ -90,7 +89,7 @@ public class Floor1SingleSsjThread implements Runnable {
} }
} }
if ("outSsj".equals(type)){ if ("outSsj".equals(type)) {
for (String ssjCode : ssjCodeList.get(type)) { for (String ssjCode : ssjCodeList.get(type)) {
try { try {
if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) {
@@ -119,15 +118,21 @@ public class Floor1SingleSsjThread implements Runnable {
* @param ssj 输送机 * @param ssj 输送机
*/ */
private void dispatch2(DeviceSsj ssj) { private void dispatch2(DeviceSsj ssj) {
if (ssj.getDw()==1 && ssj.getTaskNo()>0){ if (ssj.getDw() == 1 && ssj.getTaskNo() > 0) {
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(ssj.getTaskNo())); MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(ssj.getTaskNo()));
if (ObjUtil.isNotNull(mydoJob)) { if (ObjUtil.isNotNull(mydoJob)) {
HashMap<String,Object> param = new HashMap<>(); mydoJob.setExecutionPhase(TASK_EP_SSJ);
param.put("taskNo",mydoJob.getTaskNo()); mydoJobService.updateMydoJob(mydoJob);
param.put("jobId",mydoJob.getJobId()); HashMap<String, Object> param = new HashMap<>();
param.put("taskNo", mydoJob.getTaskNo());
param.put("jobId", mydoJob.getJobId());
RequestLog result = apiService.finishMydoJob(param); RequestLog result = apiService.finishMydoJob(param);
if ("1".equals(result.getIsSuccessful())){ if ("1".equals(result.getIsSuccessful())) {
log.info("完成任务 taskNo{} ",mydoJob.getTaskNo()); log.info("完成任务 taskNo{} ", mydoJob.getTaskNo());
mydoJob.setStatus(TASK_STATUS_FINISH);
mydoJob.setFinishTime(DateUtil.formatDateTime(new Date()));
mydoJob.setExecutionPhase(TASK_EP_WMS_FINISH);
mydoJobService.updateMydoJob(mydoJob);
mydoJobService.insertHistory(mydoJob.getJobId()); mydoJobService.insertHistory(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
} }
@@ -137,24 +142,25 @@ public class Floor1SingleSsjThread implements Runnable {
/** /**
* 一楼单向巷道口调度 * 一楼单向巷道口调度
*
* @param ssj 输送机 * @param ssj 输送机
*/ */
public void dispatch(DeviceSsj ssj) { public void dispatch(DeviceSsj ssj) {
//如果入库请求1 并且 托盘码不为空 //如果入库请求1 并且 托盘码不为空
if (ssj.getKx()==1){ if (ssj.getKx() == 1) {
String exitId = exitRoadwayMap.get(ssj.getDeviceCode()); String exitId = exitRoadwayMap.get(ssj.getDeviceCode());
List<String> exitList = new ArrayList<>(); List<String> exitList = new ArrayList<>();
exitList.add(exitId); exitList.add(exitId);
MydoJob mydoJob = mydoJobService.selectMydoJobByExitList(exitList); MydoJob mydoJob = mydoJobService.selectMydoJobByExitList(exitList);
if (ObjUtil.isNotNull(mydoJob)){ if (ObjUtil.isNotNull(mydoJob)) {
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
if (ObjUtil.isNull(basCargoSpace)){ if (ObjUtil.isNull(basCargoSpace)) {
log.error("货位不存在 cargoSpaceId{}",mydoJob.getCargoSpaceId()); log.error("货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId());
}else { } else {
//生成队列 //生成队列
List<DdjDeviceExecutionQueue> list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2,Convert.toInt(mydoJob)); List<DdjDeviceExecutionQueue> list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob));
List<Integer> pclList = roadwayMap.get(ssj.getDeviceCode()); List<Integer> pclList = roadwayMap.get(ssj.getDeviceCode());
if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)){ if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo())); ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo()));

View File

@@ -76,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item} #{item}
</foreach> </foreach>
and in_or_out > 20 and in_or_out > 20
and status = 1 and status = 1 and execution_phase= 0
order by priority desc,create_time desc order by priority desc,create_time desc
</select> </select>