diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/AgvPathProcessor.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/AgvPathProcessor.java index c9576b4..af17c9d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/AgvPathProcessor.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/AgvPathProcessor.java @@ -32,6 +32,7 @@ public class AgvPathProcessor { } public void processAgvPathInfo(int[][] ints, int floor) { + } public void processOnlineAgvSites(int[][] ints, int floor) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/device/srgv/domain/DeviceSrgv.java b/ruoyi-admin/src/main/java/com/ruoyi/device/srgv/domain/DeviceSrgv.java index f66cf51..461138d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/device/srgv/domain/DeviceSrgv.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/srgv/domain/DeviceSrgv.java @@ -155,7 +155,7 @@ public class DeviceSrgv extends BaseEntity private String spare1; /** */ - @Excel(name = "") + @Excel(name = "请求进入提升机 0-否 1-是") private String spare2; /** */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java index 17c1b69..7239dad 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java @@ -11,14 +11,18 @@ import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService; import com.ruoyi.bas.port.domain.WcsPort; import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.common.domain.SendData; +import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.tsj.domain.DeviceTsj; import com.ruoyi.device.tsj.service.IDeviceTsjService; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IMydoJobService; +import com.ruoyi.queue.srgv.domain.WcsSrgvQueue; +import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService; import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue; import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueueFinish; import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueFinishService; import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService; +import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; import com.ruoyi.schedule.plcRead.util.Tools; import lombok.extern.slf4j.Slf4j; @@ -41,6 +45,8 @@ public class TsjThread implements Runnable { private IWcsPortService wcsPortService; private IBasCargoSpaceService basCargoSpaceService; + private IWcsSrgvQueueService wcsSrgvQueueService; + public void init() { } @@ -106,60 +112,37 @@ public class TsjThread implements Runnable { * 创建卸车队列 */ private void createQueue(DeviceTsj tsj) { - //todo 根据当前楼层和执行阶段查询任务 获取目标队列 生成提升机队列 当小车出去后 解锁提升机 - List tsjDeviceExecutionQueues = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueList(new TsjDeviceExecutionQueue()); - if (CollUtil.isNotEmpty(tsjDeviceExecutionQueues)) { - // 提升机存在任务 - return; - } - - DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get("1"); - //判断提升机锁定 并且 小车已进入提升机 - if (deviceTsj.getSpare1() == 1 && tsj.getSbzt() == 3 && tsj.getYxxf() == 1) { - WcsPort param = new WcsPort(); - param.setStatus("1"); - List wcsPorts = wcsPortService.selectWcsPortList(param); - wcsPorts = wcsPorts.stream().filter(x-> "1".equals(x.getStatus()) &&("1".equals(x.getPortType()) || "2".equals(x.getPortType()))).collect(Collectors.toList()); - - for (WcsPort wcsPort : wcsPorts) { - //生成提升机队列 - TsjDeviceExecutionQueue tsjDeviceExecutionQueue = new TsjDeviceExecutionQueue(); - - MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(wcsPort.getSpare1())); - BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); - if (ObjUtil.isNull(mydoJob)){ - continue; - } - if (ObjUtil.isNull(basCargoSpace)){ - continue; - } - if (Convert.toInt(mydoJob.getInOrOut())<20){ - //入库 - if (mydoJob.getRoadwayId().equals(wcsPort.getPortCode())){ - //从1层到对应楼层 + for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) { + DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv); + if (deviceSrgv.getSsjRequest()==1 && deviceSrgv.getTaskNo()>0){ + //请求进入输送机 + WcsSrgvQueue sRgvQueueParam = new WcsSrgvQueue(); + sRgvQueueParam.setAgvId(Convert.toStr(deviceSrgv.getDeviceId())); + sRgvQueueParam.setTaskNo(Convert.toStr(deviceSrgv.getTaskNo())); + List wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(sRgvQueueParam); + if (CollUtil.isNotEmpty(wcsSrgvQueues)) { + TsjDeviceExecutionQueue tsjDeviceExecutionQueueByRwh = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueByRwh(Convert.toLong(deviceSrgv.getTaskNo())); + if (tsjDeviceExecutionQueueByRwh == null){ + WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueues.get(0); + String strFloor = wcsSrgvQueue.getTheFloor(); + String tarFloor = wcsSrgvQueue.getDefault07(); + TsjDeviceExecutionQueue tsjDeviceExecutionQueue = new TsjDeviceExecutionQueue(); + tsjDeviceExecutionQueue.setGuid(IdUtil.simpleUUID()); + tsjDeviceExecutionQueue.setDeviceId(tsj.getId()); + tsjDeviceExecutionQueue.setDeviceName(tsj.getName()); + tsjDeviceExecutionQueue.setTaskNo(Convert.toLong(deviceSrgv.getTaskNo())); tsjDeviceExecutionQueue.setSrcRow("0"); - tsjDeviceExecutionQueue.setSrcLayer("0"); - tsjDeviceExecutionQueue.setTarRow(Convert.toStr(basCargoSpace.getThePlatoon())); - tsjDeviceExecutionQueue.setTarLayer(Convert.toStr(basCargoSpace.getTheFloor())); - } - }else { - if (mydoJob.getRoadwayId().equals(wcsPort.getPortCode())){ - //从对应楼层到指定楼层 - tsjDeviceExecutionQueue.setSrcRow("0"); - tsjDeviceExecutionQueue.setSrcLayer("0"); - tsjDeviceExecutionQueue.setTarRow(Convert.toStr(basCargoSpace.getThePlatoon())); - tsjDeviceExecutionQueue.setTarLayer(Convert.toStr(basCargoSpace.getTheFloor())); + tsjDeviceExecutionQueue.setSrcLayer(strFloor); + tsjDeviceExecutionQueue.setTarRow("0"); + tsjDeviceExecutionQueue.setTarLayer(tarFloor); + tsjDeviceExecutionQueue.setSendType("1"); + tsjDeviceExecutionQueue.setCreateDate(DateUtil.formatDateTime(new Date())); + tsjDeviceExecutionQueue.setSpare1(Convert.toStr(deviceSrgv.getDeviceId())); + tsjDeviceExecutionQueue.setTaskType("1"); + tsjDeviceExecutionQueue.setRwlx("1"); + tsjDeviceExecutionQueueService.insertTsjDeviceExecutionQueue(tsjDeviceExecutionQueue); } } - tsjDeviceExecutionQueue.setGuid(IdUtil.simpleUUID()); - tsjDeviceExecutionQueue.setDeviceId(tsj.getId()); - tsjDeviceExecutionQueue.setDeviceName(tsj.getName()); - tsjDeviceExecutionQueue.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); - tsjDeviceExecutionQueue.setSendFlag("0"); - tsjDeviceExecutionQueue.setSendType("1"); - tsjDeviceExecutionQueue.setRwlx("1"); - tsjDeviceExecutionQueue.setCreateDate(DateUtil.formatDateTime(new Date())); - tsjDeviceExecutionQueueService.insertTsjDeviceExecutionQueue(tsjDeviceExecutionQueue); } } } @@ -169,31 +152,29 @@ public class TsjThread implements Runnable { if (CollUtil.isNotEmpty(tsjDeviceExecutionQueues)) { TsjDeviceExecutionQueue tsjDeviceExecutionQueue = tsjDeviceExecutionQueues.get(0); - if ("1".equals(tsjDeviceExecutionQueue.getRwlx())) { - //提升机移动到小车楼层 需要判断目标楼层入库点位小车是否到位 - WcsPort param = new WcsPort(); - param.setPortType("1"); - param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); - param.setStatus("1"); - param.setSpare2("1"); - List wcsPorts = wcsPortService.selectWcsPortList(param); - if (CollUtil.isEmpty(wcsPorts)) { - log.info("提升机任务[{}]下发 目标楼层[{}]入库点位空闲 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); - return; - } - } else if ("2".equals(tsjDeviceExecutionQueue.getRwlx())) { - //提升机承载小车到目标楼层 需要判断目标楼层出库点位是否空闲 - WcsPort param = new WcsPort(); - param.setPortType("1"); - param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); - param.setStatus("0"); - param.setSpare2("1"); - List wcsPorts = wcsPortService.selectWcsPortList(param); - if (CollUtil.isEmpty(wcsPorts)) { - log.info("提升机任务[{}]下发 目标楼层[{}]出库点位占用 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); - return; - } + //提升机移动到小车楼层 需要判断目标楼层入库点位小车是否到位 + WcsPort param = new WcsPort(); + param.setPortType("1"); + param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); + param.setStatus("1"); + param.setSpare2("1"); + List wcsInPorts = wcsPortService.selectWcsPortList(param); + if (CollUtil.isEmpty(wcsInPorts)) { + log.info("提升机任务[{}]下发 目标楼层[{}]入库点位空闲 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); + return; } + //提升机承载小车到目标楼层 需要判断目标楼层出库点位是否空闲 + WcsPort param1 = new WcsPort(); + param1.setPortType("1"); + param1.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); + param1.setStatus("0"); + param1.setSpare2("1"); + List wcsOutPorts = wcsPortService.selectWcsPortList(param1); + if (CollUtil.isEmpty(wcsOutPorts)) { + log.info("提升机任务[{}]下发 目标楼层[{}]出库点位占用 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); + return; + } + writeToTsj(tsjDeviceExecutionQueues.get(0)); log.info("提升机任务下发 taskNo{} 任务类型:{}", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getRwlx()); }