diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java index a617e33..a27b6e1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java @@ -6,18 +6,16 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; -import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse; import com.ruoyi.api.service.IApiService; import com.ruoyi.bas.cargospace.domain.BasCargoSpace; import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.domain.SendData; import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IMydoJobService; -import com.ruoyi.queue.agv.domain.AgvQueue; 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.service.IDdjDeviceExecutionQueueService; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; @@ -26,7 +24,7 @@ import lombok.extern.slf4j.Slf4j; 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; /** @@ -104,7 +102,11 @@ public class Floor1BothWayInSsjThread implements Runnable { if (ssj.getDw() == 1 && ssj.getTaskNo() > 0) { int taskNo = ssj.getTaskNo(); 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 ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_3, Convert.toInt(mydoJob.getRoadwayId())); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); List pclList = roadwayMap.get(ssj.getDeviceCode()); @@ -126,13 +128,16 @@ public class Floor1BothWayInSsjThread implements Runnable { ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); + + mydoJob.setExecutionPhase(TASK_EP_DDJ); + mydoJobService.updateMydoJob(mydoJob); } } } } 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()))); if (ObjUtil.isNotNull(outMydoJob)) { @@ -156,7 +161,7 @@ public class Floor1BothWayInSsjThread implements Runnable { } else { if (StrUtil.isNotEmpty(ssj.getTrayCode())) { MydoJob param = new MydoJob(); - param.setStatus("3"); + param.setStatus(TASK_STATUS_CREATE); param.setExecutionPhase("0"); if ("L2005".equals(ssj.getDeviceCode())) { param.setEntranceId("L2013"); @@ -172,8 +177,6 @@ public class Floor1BothWayInSsjThread implements Runnable { AjaxResult result = apiService.requestEnterByEnterIdAndTrayCode(); if (result.isSuccess()) { inJob = (MydoJob) result.get("data"); - inJob.setStatus("3"); - inJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); mydoJobService.insertMydoJob(inJob); } else { log.info("未检测到托盘码请求入库作业 rwh:{},trayCode:{}", ssj.getTaskNo(), ssj.getTrayCode()); @@ -194,6 +197,11 @@ public class Floor1BothWayInSsjThread implements Runnable { break; } 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()); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java index 95c4dc2..e2dede0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java @@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; 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_3; @@ -111,13 +112,21 @@ public class Floor1BothWayOutSsjThread implements Runnable { for (DeviceSsj ssj : ssjList) { if (ssj.getDw()==1 && ssj.getTaskNo()>0){ 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 param = new HashMap<>(); param.put("taskNo",mydoJob.getTaskNo()); param.put("jobId",mydoJob.getJobId()); RequestLog result = apiService.finishMydoJob(param); if ("1".equals(result.getIsSuccessful())){ 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.deleteMydoJobByJobId(mydoJob.getJobId()); } @@ -162,6 +171,11 @@ public class Floor1BothWayOutSsjThread implements Runnable { ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); + + pdOutJob.setStatus(TASK_STATUS_RUNNING); + pdOutJob.setExecutionPhase(TASK_EP_DDJ); + pdOutJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); + mydoJobService.updateMydoJob(pdOutJob); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java index bd1a574..ec9cb44 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1SingleSsjThread.java @@ -22,8 +22,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.*; -import static com.ruoyi.common.TaskStatusCode.TASK_EP_DDJ; -import static com.ruoyi.common.TaskStatusCode.TASK_STATUS_RUNNING; +import static com.ruoyi.common.TaskStatusCode.*; import static com.ruoyi.common.TaskType.DDJ_RWLX_2; /** @@ -36,10 +35,10 @@ public class Floor1SingleSsjThread implements Runnable { private IApiService apiService; private IMydoJobService mydoJobService; public boolean isRun = true; - private final Map exitRoadwayMap = new HashMap<>(); + private final Map exitRoadwayMap = new HashMap<>(); private IDdjDeviceExecutionQueueService ddjDeviceExecutionQueueService; private IBasCargoSpaceService basCargoSpaceService; - private final Map> roadwayMap = new HashMap<>(); + private final Map> roadwayMap = new HashMap<>(); public void init() { @@ -62,18 +61,18 @@ public class Floor1SingleSsjThread implements Runnable { basCargoSpaceService = SpringUtils.getBean(IBasCargoSpaceService.class); //初始化出口和巷道口映射关系 - exitRoadwayMap.put("L2001","L2002"); - exitRoadwayMap.put("L2007","L2008"); + exitRoadwayMap.put("L2001", "L2002"); + exitRoadwayMap.put("L2007", "L2008"); //初始化巷道口 排 列 层 - roadwayMap.put("L2001",Arrays.asList(1,1,1)); - roadwayMap.put("L2007",Arrays.asList(1,1,1)); + roadwayMap.put("L2001", Arrays.asList(1, 1, 1)); + roadwayMap.put("L2007", Arrays.asList(1, 1, 1)); } @Override public void run() { init(); - while (isRun){ + while (isRun) { for (String type : ssjCodeList.keySet()) { //一楼单向巷道口 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)) { try { if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { @@ -119,15 +118,21 @@ public class Floor1SingleSsjThread implements Runnable { * @param 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())); if (ObjUtil.isNotNull(mydoJob)) { - HashMap param = new HashMap<>(); - param.put("taskNo",mydoJob.getTaskNo()); - param.put("jobId",mydoJob.getJobId()); + mydoJob.setExecutionPhase(TASK_EP_SSJ); + mydoJobService.updateMydoJob(mydoJob); + HashMap param = new HashMap<>(); + param.put("taskNo", mydoJob.getTaskNo()); + param.put("jobId", mydoJob.getJobId()); RequestLog result = apiService.finishMydoJob(param); - if ("1".equals(result.getIsSuccessful())){ - log.info("完成任务 taskNo{} ",mydoJob.getTaskNo()); + if ("1".equals(result.getIsSuccessful())) { + 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.deleteMydoJobByJobId(mydoJob.getJobId()); } @@ -137,24 +142,25 @@ public class Floor1SingleSsjThread implements Runnable { /** * 一楼单向巷道口调度 + * * @param ssj 输送机 */ public void dispatch(DeviceSsj ssj) { //如果入库请求1 并且 托盘码不为空 - if (ssj.getKx()==1){ + if (ssj.getKx() == 1) { String exitId = exitRoadwayMap.get(ssj.getDeviceCode()); List exitList = new ArrayList<>(); exitList.add(exitId); MydoJob mydoJob = mydoJobService.selectMydoJobByExitList(exitList); - if (ObjUtil.isNotNull(mydoJob)){ + if (ObjUtil.isNotNull(mydoJob)) { BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); - if (ObjUtil.isNull(basCargoSpace)){ - log.error("货位不存在 cargoSpaceId{}",mydoJob.getCargoSpaceId()); - }else { + if (ObjUtil.isNull(basCargoSpace)) { + log.error("货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId()); + } else { //生成队列 - List list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2,Convert.toInt(mydoJob)); + List list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob)); List pclList = roadwayMap.get(ssj.getDeviceCode()); - if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)){ + if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) { DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo())); diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index 5d2a818..7071042 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -76,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} and in_or_out > 20 - and status = 1 + and status = 1 and execution_phase= 0 order by priority desc,create_time desc