From 5fe90b8bb4ae1913ff1910fcfa341bf87d5399ec Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Mon, 5 Jan 2026 14:10:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20ssj=20tsj=20srgv=20cdz?= =?UTF-8?q?=E7=9A=84=E8=AF=BB=E5=8F=96=E8=B0=83=E5=BA=A6=EF=BC=8C=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E8=B0=83=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/schedule/ScheduleThread.java | 57 +++++++--- .../schedule/plcRead/cdz/PlcCdzRead.java | 2 +- .../schedule/plcRead/srgv/PlcSrgvRead.java | 102 +++++------------- .../schedule/plcRead/ssj/PlcSsjRead.java | 18 +--- .../schedule/plcRead/tsj/PlcTsjRead.java | 4 +- .../schedule/scheduleTask/cdz/CdzThread.java | 2 +- .../scheduleTask/monit/MonitoringThread.java | 30 +++++- .../scheduleTask/srgv/BaseSRgvThread.java | 9 +- .../schedule/scheduleTask/tsj/TsjThread.java | 1 + .../mapper/device/DeviceCdzMapper.xml | 5 - .../mapper/device/DeviceSrgvMapper.xml | 15 +-- .../mapper/device/DeviceTsjMapper.xml | 15 +-- 12 files changed, 124 insertions(+), 136 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java index 193878d..2c2d4d3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -2,15 +2,21 @@ package com.ruoyi.schedule; import com.ruoyi.common.domain.CustomThread; import com.ruoyi.common.domain.PlcConnectInfo; +import com.ruoyi.device.cdz.domain.DeviceCdz; +import com.ruoyi.device.cdz.service.IDeviceCdzService; import com.ruoyi.device.ddj.domain.MsgDdj; import com.ruoyi.device.ddj.service.IMsgDdjService; import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.device.srgv.service.IDeviceSrgvService; import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.device.ssj.service.IDeviceSsjService; +import com.ruoyi.device.tsj.domain.DeviceTsj; +import com.ruoyi.device.tsj.service.IDeviceTsjService; +import com.ruoyi.schedule.plcRead.cdz.PlcCdzRead; import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; +import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; import com.ruoyi.schedule.scheduleTask.cdz.CdzThread; import com.ruoyi.schedule.scheduleTask.ddj.impl.Ddj1Thread; import com.ruoyi.schedule.scheduleTask.monit.MonitoringThread; @@ -31,25 +37,27 @@ import java.util.concurrent.ConcurrentHashMap; public class ScheduleThread { public CustomThread plcSsjReadCustomThread; + public CustomThread plcTsjReadCustomThread; + public CustomThread plcCdzReadCustomThread; public CustomThread plcSrgvReadCustomThread1; public CustomThread plcSrgvReadCustomThread2; public CustomThread plcSrgvReadCustomThread3; + public CustomThread monitoringCustomThread; public CustomThread ssjThreadCustomThread; public CustomThread sRgvThreadCustomThread; public CustomThread tsjThreadCustomThread; public CustomThread cdzThreadCustomThread; -// public CustomThread ddj1CustomThread; - /*public CustomThread ddj2CustomThread; - public CustomThread ddj3CustomThread; - public CustomThread ddj4CustomThread; - public CustomThread ddj5CustomThread; - public CustomThread ddj6CustomThread;*/ + @Autowired private IDeviceSsjService deviceSsjService; @Autowired private IDeviceSrgvService deviceSrgvService; + @Autowired + private IDeviceTsjService deviceTsjService; + @Autowired + private IDeviceCdzService deviceCdzService; private boolean isRun = false; private boolean isRun2 = false; @@ -111,6 +119,7 @@ public class ScheduleThread { Thread plcSsjReadThread = new Thread(plcSsjRead); plcSsjReadCustomThread = new CustomThread(plcSsjReadThread, plcSsjRead); + //四向车读取线程 ConcurrentHashMap srgvList = new ConcurrentHashMap<>(); List srgvs=deviceSrgvService.selectDeviceSrgvList(new DeviceSrgv()); for(DeviceSrgv srgv:srgvs){ @@ -136,6 +145,25 @@ public class ScheduleThread { } PlcSrgvRead.deviceSrgvMap=srgvList; + //提升机读取线程 + ConcurrentHashMap tsjList = new ConcurrentHashMap<>(); + List deviceTsjs = deviceTsjService.selectDeviceTsjList(new DeviceTsj()); + for (DeviceTsj deviceTsj : deviceTsjs) { + tsjList.put(deviceTsj.getId().toString(), deviceTsj); + } + PlcTsjRead plcTsjRead = new PlcTsjRead(tsjList,new PlcConnectInfo("127.0.0.1", 102)); + Thread plcTsjReadThread = new Thread(plcTsjRead); + plcTsjReadCustomThread = new CustomThread<>(plcTsjReadThread, plcTsjRead); + + //充电桩读取线程 + ConcurrentHashMap cdzList = new ConcurrentHashMap<>(); + List deviceCdzs = deviceCdzService.selectDeviceCdzList(new DeviceCdz()); + for (DeviceCdz deviceCdz : deviceCdzs) { + cdzList.put(deviceCdz.getId().toString(), deviceCdz); + } + PlcCdzRead plcCdzRead = new PlcCdzRead(cdzList,new PlcConnectInfo("127.0.0.1", 102)); + Thread plcCdzReadThread = new Thread(plcCdzRead); + plcCdzReadCustomThread = new CustomThread<>(plcCdzReadThread, plcCdzRead); } @@ -145,8 +173,10 @@ public class ScheduleThread { public void startAllThread() { plcSsjReadCustomThread.getThread().start(); plcSrgvReadCustomThread1.getThread().start(); - //plcSrgvReadCustomThread2.getThread().start(); - //plcSrgvReadCustomThread3.getThread().start(); + plcSrgvReadCustomThread2.getThread().start(); + plcSrgvReadCustomThread3.getThread().start(); + plcTsjReadCustomThread.getThread().start(); + plcCdzReadCustomThread.getThread().start(); isRun = true; @@ -157,16 +187,11 @@ public class ScheduleThread { */ public void startAllThread2() { monitoringCustomThread.thread.start(); - ssjThreadCustomThread.thread.start(); + //ssjThreadCustomThread.thread.start(); //tsjThreadCustomThread.thread.start(); - sRgvThreadCustomThread.thread.start(); + //sRgvThreadCustomThread.thread.start(); //cdzThreadCustomThread.thread.start(); -// ddj1CustomThread.thread.start(); - /*ddj2CustomThread.thread.start(); - ddj3CustomThread.thread.start(); - ddj4CustomThread.thread.start(); - ddj5CustomThread.thread.start(); - ddj6CustomThread.thread.start();*/ + isRun2 = true; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/cdz/PlcCdzRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/cdz/PlcCdzRead.java index bf0ba22..0f9eece 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/cdz/PlcCdzRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/cdz/PlcCdzRead.java @@ -67,7 +67,7 @@ public class PlcCdzRead implements Runnable { } private void plcRead(DeviceCdz deviceCdz) { - OperateResultExOne read2 = readWriteNet.Read(deviceCdz.getPlcDbReadAddress(), Short.parseShort("20")); + OperateResultExOne read2 = readWriteNet.Read(deviceCdz.getPlcDbReadAddress(), Short.parseShort("4")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java index a904b4c..1b6b291 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java @@ -7,27 +7,22 @@ import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.ModBus.ModbusTcpNet; import cn.hutool.core.convert.Convert; -import com.ruoyi.common.domain.HslRead; import com.ruoyi.common.domain.PlcConnectInfo; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.srgv.domain.DeviceSrgv; -import com.ruoyi.device.srgv.service.IDeviceSrgvService; import lombok.extern.slf4j.Slf4j; -import java.util.List; import java.util.concurrent.ConcurrentHashMap; @Slf4j public class PlcSrgvRead implements Runnable { public static ConcurrentHashMap deviceSrgvMap; - private static ModbusTcpNet modbusTcpNet; - public static IReadWriteNet readWriteNet = null; + private ModbusTcpNet modbusTcpNet; + public IReadWriteNet readWriteNet = null; public volatile boolean isRun = true; private final String ip; private final int port; private byte station; - private Integer layer; private DeviceSrgv deviceSrgv; private boolean success = false; private IByteTransform byteTransform = null; @@ -41,15 +36,16 @@ public class PlcSrgvRead implements Runnable { public static boolean Write(String address, int[] value){ - OperateResult write = modbusTcpNet.Write(address, value); - return write.IsSuccess; + //OperateResult write = modbusTcpNet.Write(address, value); + return true; + } public static boolean Write(String address, short[] value){ - OperateResult write = modbusTcpNet.Write(address, value); - return write.IsSuccess; + //OperateResult write = modbusTcpNet.Write(address, value); + return true; } @@ -58,24 +54,13 @@ public class PlcSrgvRead implements Runnable { public void run() { while (isRun) { try { - /*if (IsConnect()) { - - *//*if (deviceSrgv != null) { - //readSrgvPlc(deviceSrgv); - - }*//* - + if (IsConnect()) { + if (deviceSrgv != null) { + readSrgvPlc(deviceSrgv); + } } else { reConnect(); - }*/ - IDeviceSrgvService deviceSrgvService = SpringUtils.getBean(IDeviceSrgvService.class); - List srgvs=deviceSrgvService.selectDeviceSrgvList(new DeviceSrgv()); - ConcurrentHashMap srgvList = new ConcurrentHashMap<>(); - for(DeviceSrgv srgv:srgvs){ - srgvList.put(srgv.getDeviceId().toString(),srgv); } - PlcSrgvRead.deviceSrgvMap=srgvList; - Thread.sleep(1000); } catch (InterruptedException e) { // 捕获中断异常,退出循环 @@ -89,20 +74,16 @@ public class PlcSrgvRead implements Runnable { } private void readSrgvPlc(DeviceSrgv deviceSrgv) { - OperateResultExOne read1 = modbusTcpNet.Read("2400", (short) 15);//2400-2414 + OperateResultExOne read1 = modbusTcpNet.Read("4068", (short) 15);//2400-2414 if (read1.IsSuccess) { setValueByByte1(read1.Content, deviceSrgv); } //读取双字 - OperateResultExOne read2 = modbusTcpNet.Read("4800", (short) 8);// 4800-4807任务号、原点、目标点、当前 + OperateResultExOne read2 = modbusTcpNet.Read("4060", (short) 8);// 4800-4807任务号、原点、目标点、当前 if (read2.IsSuccess) { setValueByByte2(read2.Content, deviceSrgv); } - - //读取双字,路径 - OperateResultExOne read3 = modbusTcpNet.Read("5000", (short) 800);// 5000-5799 路径 400个 - setValueByByte3(read3.Content, deviceSrgv); } //单字 @@ -112,17 +93,15 @@ public class PlcSrgvRead implements Runnable { agvData.setWorkMode(Convert.toInt(byteTransform.TransInt16(content, 4))); agvData.setAlarm(Convert.toInt(byteTransform.TransInt16(content, 6))); agvData.setStatus(Convert.toInt(byteTransform.TransInt16(content, 8))); - agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 10))); - agvData.setChargeFlag(Convert.toInt(byteTransform.TransInt16(content, 12))); - agvData.setWorkPhase(Convert.toInt(byteTransform.TransInt16(content, 14))); - agvData.setErrMsg(Convert.toInt(byteTransform.TransInt16(content, 16))); - agvData.setSsjRequest(Convert.toInt(byteTransform.TransInt16(content, 18))); - agvData.setChangeLayer(Convert.toInt(byteTransform.TransInt16(content, 20))); - agvData.setCargoFlag(Convert.toInt(byteTransform.TransInt16(content, 22))); - agvData.setManualCharge(Convert.toInt(byteTransform.TransInt16(content, 24))); - agvData.setSpare1(Convert.toStr(byteTransform.TransInt16(content, 0))); - agvData.setAllowSend(Convert.toInt(byteTransform.TransInt16(content, 16))); - + //接收完成标志 + // agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 10))); + agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 12))); + agvData.setChargeFlag(Convert.toInt(byteTransform.TransInt16(content, 14))); + agvData.setWorkPhase(Convert.toInt(byteTransform.TransInt16(content, 16))); + agvData.setAllowSend(Convert.toInt(byteTransform.TransInt16(content, 18))); + agvData.setSsjRequest(Convert.toInt(byteTransform.TransInt16(content, 20))); + agvData.setSpare2(String.valueOf(Convert.toInt(byteTransform.TransInt16(content, 22)))); + agvData.setChangeLayer(Convert.toInt(byteTransform.TransInt16(content, 24)));//换层标志 } @@ -130,44 +109,21 @@ public class PlcSrgvRead implements Runnable { byteTransform.setDataFormat(DataFormat.CDAB); // TODO 注意双字反转 agvData.setTaskNo(byteTransform.TransInt32(content, 0)); + //log.info("=====小车{}读取到SRGV任务号:{}=======",agvData.getDeviceId(), agvData.getTaskNo()); agvData.setSrcSite(String.format("%06d", byteTransform.TransInt32(content, 4))); + //log.info("=====小车{}读取到SRGV源站点:{}=======",agvData.getDeviceId(), agvData.getSrcSite()); agvData.setTarSite(String.format("%06d", byteTransform.TransInt32(content, 8))); + //log.info("=====小车{}读取到SRGV目标站点:{}=======",agvData.getDeviceId(), agvData.getTarSite()); agvData.setCurrSite(String.format("%06d", byteTransform.TransInt32(content, 12))); + //log.info("=====小车{}读取到SRGV当前站点:{}=======",agvData.getDeviceId(), agvData.getCurrSite()); - //设置库区 - String currSite = agvData.getCurrSite(); - String l = currSite.substring(2, 4); //截取cur的后俩位,获取当前楼层 - int floor = FloorUtils.extractFloor(Integer.parseInt(agvData.getCurrSite())); - this.layer = floor; + int floor = FloorUtils.extractFloor(Integer.parseInt(String.format("%06d", byteTransform.TransInt32(content, 12)))); agvData.setCurrFloor(floor); } - private void setValueByByte3(byte[] content, DeviceSrgv agvData) { - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < content.length; i += 4) { - // 检查剩余字节是否足够4个 - if (i + 4 > content.length) break; - // TODO 注意双字反转 - int value = byteTransform.TransInt32(content, i); - - // 如果值为0,终止循环 - if (value == 0) { - break; - } - sb.append(String.format("%06d", value)).append(","); // 用逗号分隔每个int值 - } - - // 移除最后多余的 "," - if (sb.length() > 0) { - sb.setLength(sb.length() - 1); - } - agvData.setPath(sb.toString()); - } - public void ConnectServer() { - ModbusTcpNet modbusTcpNet = new ModbusTcpNet();//创建一个Modbus对象 + modbusTcpNet = new ModbusTcpNet();//创建一个Modbus对象 try { modbusTcpNet.setIpAddress(this.ip); modbusTcpNet.setPort(this.port); @@ -199,7 +155,7 @@ public class PlcSrgvRead implements Runnable { void reConnect() { closeServer(); ConnectServer(); - log.info("重新连接 SSJ-PLC"); + log.info("重新连接 四象车-PLC"); } void closeServer() { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java index 4b2b5ae..17eb3e7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java @@ -52,14 +52,12 @@ public class PlcSsjRead implements Runnable { while (isRun) { try { //todo 要读重量 - /*if (IsConnect()) { - int step = 20; - int baseOffset = 0; - *//*for (String ssjCode : deviceSsjMap.keySet()) { + if (IsConnect()) { + for (String ssjCode : deviceSsjMap.keySet()) { DeviceSsj ssjDevice = deviceSsjMap.get(ssjCode); switch (ssjDevice.getType()) { case "1": - readPlcLineSsj(ssjDevice); + readPlcRoadWaySsj(ssjDevice); break; case "2": readPlcInOutSsj(ssjDevice); @@ -68,18 +66,11 @@ public class PlcSsjRead implements Runnable { readPlcOtherSsj(ssjDevice); break; } - }*//* + } } else { reConnect(); - }*/ - DeviceSsjServiceImpl deviceSsjService = SpringUtils.getBean(DeviceSsjServiceImpl.class); - List deviceSsjs = deviceSsjService.selectDeviceSsjList(new DeviceSsj()); - ConcurrentHashMap ssjList = new ConcurrentHashMap<>(); - for (DeviceSsj deviceSsj : deviceSsjs) { - ssjList.put(deviceSsj.getDeviceCode(), deviceSsj); } - PlcSsjRead.deviceSsjMap = ssjList; Thread.sleep(1000); } catch (InterruptedException e) { // 捕获中断异常,退出循环 @@ -140,7 +131,6 @@ public class PlcSsjRead implements Runnable { ssjDevice.setException(ParseUtil.optInt(4, ddsx1)); ssjDevice.setAllowPut(ParseUtil.optInt(6, ddsx1)); ssjDevice.setTaskNo(ParseUtil.optDInt(8, ddsx1)); - } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java index 14cde2e..3ebfd2f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java @@ -68,7 +68,7 @@ public class PlcTsjRead implements Runnable { } private void plcRead(DeviceTsj tsjDevice) { - OperateResultExOne read2 = readWriteNet.Read(tsjDevice.getPlcDbReadAddress(), Short.parseShort("220")); + OperateResultExOne read2 = readWriteNet.Read(tsjDevice.getPlcDbReadAddress(), Short.parseShort("48")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); @@ -122,7 +122,7 @@ public class PlcTsjRead implements Runnable { void reConnect() { closeServer(); ConnectServer(); - log.info("重新连接 SSJ-PLC"); + log.info("重新连接 TSJ-PLC"); } void closeServer() { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/cdz/CdzThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/cdz/CdzThread.java index 4171313..e9cdf19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/cdz/CdzThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/cdz/CdzThread.java @@ -48,7 +48,7 @@ public class CdzThread implements Runnable { init(); while (isRun) { try { - dispatch(); + dispatch(); Thread.sleep(1500); }catch (Exception e){ log.error(e.getMessage(),e); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java index 8320ca2..0dbcc7e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/monit/MonitoringThread.java @@ -1,11 +1,20 @@ package com.ruoyi.schedule.scheduleTask.monit; import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.device.cdz.domain.DeviceCdz; +import com.ruoyi.device.cdz.service.IDeviceCdzService; import com.ruoyi.device.ddj.service.IMsgDdjService; +import com.ruoyi.device.srgv.domain.DeviceSrgv; +import com.ruoyi.device.srgv.service.IDeviceSrgvService; import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.device.ssj.service.IDeviceSsjService; +import com.ruoyi.device.tsj.domain.DeviceTsj; +import com.ruoyi.device.tsj.service.IDeviceTsjService; +import com.ruoyi.schedule.plcRead.cdz.PlcCdzRead; import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead; +import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; +import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; import lombok.extern.slf4j.Slf4j; /** @@ -18,24 +27,39 @@ public class MonitoringThread implements Runnable { private IDeviceSsjService deviceSsjService; private IMsgDdjService msgDdjService; + private IDeviceSrgvService deviceSrgvService; + private IDeviceTsjService deviceTsjService; + private IDeviceCdzService deviceCdzService; public void init() { deviceSsjService = SpringUtils.getBean(IDeviceSsjService.class); msgDdjService = SpringUtils.getBean(IMsgDdjService.class); + deviceSrgvService = SpringUtils.getBean(IDeviceSrgvService.class); + deviceTsjService = SpringUtils.getBean(IDeviceTsjService.class); + deviceCdzService = SpringUtils.getBean(IDeviceCdzService.class); } @Override public void run() { init(); while (isRun){ + //输送机监控 for (String ssjCode : PlcSsjRead.deviceSsjMap.keySet()) { DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ssjCode); - deviceSsj.setTraySize(deviceSsj.getModel()); deviceSsjService.updateDeviceSsj(deviceSsj); } - for (String ddjCode : PlcDdjRead.deviceDdjMap.keySet()) { - msgDdjService.updateMsgDdj(PlcDdjRead.deviceDdjMap.get(ddjCode)); + for (String srgvCode : PlcSrgvRead.deviceSrgvMap.keySet()) { + DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(srgvCode); + deviceSrgvService.updateDeviceSrgv(deviceSrgv); + } + for (String tsjCode : PlcTsjRead.deviceTsjMap.keySet()) { + DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(tsjCode); + deviceTsjService.updateDeviceTsj(deviceTsj); + } + for (String cdzCode : PlcCdzRead.deviceCdzMap.keySet()) { + DeviceCdz deviceCdz = PlcCdzRead.deviceCdzMap.get(cdzCode); + deviceCdzService.updateDeviceCdz(deviceCdz); } try { Thread.sleep(1500); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java index 0938fbd..afb61b8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap; import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService; @@ -351,10 +352,11 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { if (deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) { deviceSrgv = deviceSrgv1; break; // 找到了相同楼层的直接选它 - } else if (deviceSrgv == null || deviceSrgv1.getCurrFloor() < deviceSrgv.getCurrFloor()) { + } else { WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString()); if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) { deviceSrgv = deviceSrgv1; // 更新为更小楼层的小车 + break; } } } @@ -370,6 +372,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { String executionStatus = "1"; WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); wcsSrgvMap.setRemark(mydoJob1.getEntranceId()); + if (StrUtil.isEmpty(wcsSrgvMap.getRemark())) { + log.error("入库任务号:{} 入库入口ID为空" , mydoJob1.getTaskNo()); + return; + } List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); //取货地址 String cargoPickSite = wcsSrgvMaps.get(0).getSiteId(); @@ -423,6 +429,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { wcsSrgvQueue3.setDefault02("4"); wcsSrgvQueue3.setDefault07(sameSiteDevices.get(0).getCurrFloor().toString()); wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue3); + return; } } 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 53bf0fe..454bb08 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 @@ -160,6 +160,7 @@ public class TsjThread implements Runnable { } if (StrUtil.isNotEmpty(startSite) && StrUtil.isNotEmpty(endSite)){ + wcsSrgvQueue.setStartSite(startSite); wcsSrgvQueue.setEndSite(endSite); wcsSrgvQueueService.updateWcsSrgvQueue(wcsSrgvQueue); diff --git a/ruoyi-admin/src/main/resources/mapper/device/DeviceCdzMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/DeviceCdzMapper.xml index 4405b27..14fb8ef 100644 --- a/ruoyi-admin/src/main/resources/mapper/device/DeviceCdzMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/device/DeviceCdzMapper.xml @@ -100,11 +100,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update device_cdz - name = #{name}, - ip = #{ip}, - port = #{port}, - plc_db_read_address = #{plcDbReadAddress}, - plc_db_write_address = #{plcDbWriteAddress}, rwh = #{rwh}, status = #{status}, xtxh = #{xtxh}, diff --git a/ruoyi-admin/src/main/resources/mapper/device/DeviceSrgvMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/DeviceSrgvMapper.xml index 6c32118..d17fbeb 100644 --- a/ruoyi-admin/src/main/resources/mapper/device/DeviceSrgvMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/device/DeviceSrgvMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + and name like concat('%', #{name}, '%') and ip = #{ip} and port = #{port} @@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and spare3 = #{spare3} - +