From 2272a89b2a42e5f298161bb6f30f875d73c56db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B1=97=E9=9D=92?= Date: Mon, 18 May 2026 15:21:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8E=B0=E5=9C=BA=E5=AD=98?= =?UTF-8?q?=E6=B4=BB=E6=97=A5=E5=BF=97=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/schedule/ScheduleThread.java | 22 +- .../schedule/plcRead/ddj/PlcDdjRead.java | 9 +- .../schedule/plcRead/ssj/PlcSsjRead.java | 13 +- .../scheduleTask/ddj/BaseDdjThread.java | 9 +- .../scheduleTask/monit/MonitoringThread.java | 260 ++++++++++-------- .../src/main/resources/application-druid.yml | 4 +- 6 files changed, 183 insertions(+), 134 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 211d4ce..28527bb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -161,28 +161,37 @@ public class ScheduleThread { * 开始线程 */ public void startAllThread() { - plcSsjReadCustomThread.getThread().start(); + if (plcSsjReadCustomThread !=null){ + plcSsjReadCustomThread.getThread().setName("输送机读取线程"); + plcSsjReadCustomThread.getThread().start(); + } if (plcDdj1ReadCustomThread!=null){ + plcDdj1ReadCustomThread.getThread().setName("ddj1读取线程"); plcDdj1ReadCustomThread.getThread().start(); } if (plcDdj2ReadCustomThread!=null){ + plcDdj2ReadCustomThread.getThread().setName("ddj2读取线程"); plcDdj2ReadCustomThread.getThread().start(); } if (plcDdj3ReadCustomThread!=null){ + plcDdj3ReadCustomThread.getThread().setName("ddj3读取线程"); plcDdj3ReadCustomThread.getThread().start(); } if (plcDdj4ReadCustomThread!=null){ + plcDdj4ReadCustomThread.getThread().setName("ddj4读取线程"); plcDdj4ReadCustomThread.getThread().start(); } if (plcDdj5ReadCustomThread!=null){ + plcDdj5ReadCustomThread.getThread().setName("ddj5读取线程"); plcDdj5ReadCustomThread.getThread().start(); } if (plcDdj6ReadCustomThread!=null){ + plcDdj6ReadCustomThread.getThread().setName("ddj6读取线程"); plcDdj6ReadCustomThread.getThread().start(); } @@ -193,28 +202,37 @@ public class ScheduleThread { * 开启线程2 */ public void startAllThread2() { - monitoringCustomThread.thread.start(); + if (monitoringCustomThread!=null){ + monitoringCustomThread.thread.setName("监控线程"); + monitoringCustomThread.thread.start(); + } if (ddj1CustomThread!=null){ + ddj1CustomThread.thread.setName("ddj1调度线程"); ddj1CustomThread.thread.start(); } if (ddj2CustomThread!=null){ + ddj2CustomThread.thread.setName("ddj5调度线程"); ddj2CustomThread.thread.start(); } if (ddj3CustomThread!=null){ + ddj3CustomThread.thread.setName("ddj3调度线程"); ddj3CustomThread.thread.start(); } if (ddj4CustomThread!=null){ + ddj4CustomThread.thread.setName("ddj4调度线程"); ddj4CustomThread.thread.start(); } if (ddj5CustomThread!=null){ + ddj5CustomThread.thread.setName("ddj5调度线程"); ddj5CustomThread.thread.start(); } if (ddj6CustomThread!=null){ + ddj6CustomThread.thread.setName("ddj6调度线程"); ddj6CustomThread.thread.start(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java index 6f35def..107a697 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdjRead.java @@ -37,6 +37,7 @@ public class PlcDdjRead extends Thread { @Override public void run() { + int i = 0; while (isRun) { try { if (IsConnect()) { @@ -45,9 +46,13 @@ public class PlcDdjRead extends Thread { } else { reConnect(); } - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); + i++; + if (i==100){ + log.info("读取线程执行正常"); + i=0; + } } catch (Exception e) { + log.error(e.getMessage(),e); log.info("********IP:" + this.ip + " port:" + this.port + "端口号 " + e.getMessage()); } 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 aefd4ac..8064525 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 @@ -46,6 +46,7 @@ public class PlcSsjRead implements Runnable { @Override public void run() { + int i = 0; while (isRun) { try { if (IsConnect()) { @@ -72,11 +73,13 @@ public class PlcSsjRead implements Runnable { } else { reConnect(); } - } catch (InterruptedException e) { - // 捕获中断异常,退出循环 - Thread.currentThread().interrupt(); // 重新设置中断标志 - return; - } catch (Exception e) { + i++; + if (i==100){ + log.info("读取线程执行正常"); + i=0; + } + } catch (Exception e) { + log.error(e.getMessage(),e); log.info("********IP:" + this.ip + " port:" + this.port + "读取数据异常 " + e.getMessage()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java index c1cbeb8..4f6db19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/BaseDdjThread.java @@ -84,6 +84,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { @Override public void run() { init(); + int i = 0; while (isRun) { for (String type : ddjCodeList.keySet()) { @@ -96,6 +97,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { generateOutBoundQueue(msgDdj); setOutSsjStatus(msgDdj); ddjTask(msgDdj); + } else { log.error("堆垛机设备为空"); } @@ -105,10 +107,15 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { } } + i++; + if (i==100){ + log.info("ddj{},循环完成",ddjCodeList); + i=0; + } try { Thread.sleep(1500); } catch (InterruptedException e) { - throw new RuntimeException(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 03d412c..58465c3 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 @@ -45,153 +45,169 @@ public class MonitoringThread implements Runnable { @Override public void run() { init(); + int i =0; while (isRun){ try { + for (String ssjCode : PlcSsjRead.deviceSsjMap.keySet()) { - DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ssjCode); - deviceSsjService.updateDeviceSsj(deviceSsj); - int taskNo = deviceSsj.getTaskNo(); + try { + DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ssjCode); + deviceSsjService.updateDeviceSsj(deviceSsj); + int taskNo = deviceSsj.getTaskNo(); - //输送机外形异常 101-前超长 102-后超长 103-左超宽 104-右超宽 105-超高 106-超重 - if (deviceSsj.getException() >= 101 && deviceSsj.getException() <= 120 && deviceSsj.getTaskNo()>0) { - BasFaultRecord param = new BasFaultRecord(); - param.setTaskNo(Convert.toStr(deviceSsj.getTaskNo())); - param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); - param.setJobId("0"); - List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); - if (CollUtil.isEmpty(basFaultRecords)) { - BasFaultRecord record = new BasFaultRecord(); - record.setId(IdUtil.simpleUUID()); - record.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); - record.setDeviceName(deviceSsj.getName()); - record.setDeviceType("ssj"); - record.setTaskNo(Convert.toStr(deviceSsj.getTaskNo())); - record.setStartTime(DateUtil.formatDateTime(new Date())); - record.setFault(getSsjZt(deviceSsj.getException())); - record.setJobId("0"); - basFaultRecordService.insertBasFaultRecord(record); + //输送机外形异常 101-前超长 102-后超长 103-左超宽 104-右超宽 105-超高 106-超重 + if (deviceSsj.getException() >= 101 && deviceSsj.getException() <= 120 && deviceSsj.getTaskNo()>0) { + BasFaultRecord param = new BasFaultRecord(); + param.setTaskNo(Convert.toStr(deviceSsj.getTaskNo())); + param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); + param.setJobId("0"); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isEmpty(basFaultRecords)) { + BasFaultRecord record = new BasFaultRecord(); + record.setId(IdUtil.simpleUUID()); + record.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); + record.setDeviceName(deviceSsj.getName()); + record.setDeviceType("ssj"); + record.setTaskNo(Convert.toStr(deviceSsj.getTaskNo())); + record.setStartTime(DateUtil.formatDateTime(new Date())); + record.setFault(getSsjZt(deviceSsj.getException())); + record.setJobId("0"); + basFaultRecordService.insertBasFaultRecord(record); + } } - } - //人工处理 恢复异常 - if (deviceSsj.getException() == 0 && deviceSsj.getTaskNo() >= 200) { - //查询记录 更新故障结束时间 - BasFaultRecord param = new BasFaultRecord(); - param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); - param.setJobId("0"); - List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); - if (CollUtil.isNotEmpty(basFaultRecords)) { - BasFaultRecord record = basFaultRecords.get(0); - record.setJobId("1"); - record.setFinishTime(DateUtil.formatDateTime(new Date())); - basFaultRecordService.updateBasFaultRecord(record); + //人工处理 恢复异常 + if (deviceSsj.getException() == 0 && deviceSsj.getTaskNo() >= 200) { + //查询记录 更新故障结束时间 + BasFaultRecord param = new BasFaultRecord(); + param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); + param.setJobId("0"); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isNotEmpty(basFaultRecords)) { + BasFaultRecord record = basFaultRecords.get(0); + record.setJobId("1"); + record.setFinishTime(DateUtil.formatDateTime(new Date())); + basFaultRecordService.updateBasFaultRecord(record); + } } - } - if (taskNo >= 50 && taskNo < 200) { - //扫码失败+0 无任务+100 无货位+20 已存在当前托盘+40 + if (taskNo >= 50 && taskNo < 200) { + //扫码失败+0 无任务+100 无货位+20 已存在当前托盘+40 /* "L2001", 80 "L2002", 81 "L2007", 82 "L2008", 83 "L2003", 84 "L2004", 85 "L2009", 86 "L2010", 87 "L2005", 88 "L2006", 89 "L2011", 90 "L2012", 91 "L1001", 92 "L1002", 93 "L1003", 94 "L1004", 95 "L1005", 96 "L1006", 97 */ - String trayCode = null; - if (taskNo>100){ - DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(taskNo), Convert.toInt(deviceSsj.getId())); - if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) { - trayCode = ddjDeviceExecutionQueue.getSpare4(); + String trayCode = null; + if (taskNo>100){ + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(taskNo), Convert.toInt(deviceSsj.getId())); + if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) { + trayCode = ddjDeviceExecutionQueue.getSpare4(); + } + } + BasFaultRecord param = new BasFaultRecord(); + param.setTaskNo(Convert.toStr(taskNo)); + param.setDeviceId(ssjCode); + param.setJobId("0"); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isEmpty(basFaultRecords)) { + BasFaultRecord record = new BasFaultRecord(); + record.setId(IdUtil.simpleUUID()); + record.setDeviceId(ssjCode); + record.setDeviceName(ssjCode); + record.setDeviceType("ssj"); + record.setTaskNo(Convert.toStr(taskNo)); + record.setStartTime(DateUtil.formatDateTime(new Date())); + if (taskNo >= 80 && taskNo <= 97) { + //扫码失败 + record.setFault(getDdjZt(107, trayCode)); + } else if (taskNo >= 100 && taskNo < 120) { + //无货位 + record.setFault(getDdjZt(108, trayCode)); + } else if (taskNo >= 120 && taskNo < 140) { + //已存在当前托盘 + record.setFault(getDdjZt(109, trayCode)); + } else { + //无任务 + record.setFault(getDdjZt(110, trayCode)); + } + record.setJobId("0"); + basFaultRecordService.insertBasFaultRecord(record); + } + + + } + + //取走托盘 恢复异常 + if (deviceSsj.getTaskNo() == 0 && deviceSsj.getKx() == 1) { + //查询记录 更新故障结束时间 + BasFaultRecord param = new BasFaultRecord(); + param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); + param.setJobId("0"); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isNotEmpty(basFaultRecords)) { + BasFaultRecord record = basFaultRecords.get(0); + record.setJobId("1"); + record.setFinishTime(DateUtil.formatDateTime(new Date())); + basFaultRecordService.updateBasFaultRecord(record); } } - BasFaultRecord param = new BasFaultRecord(); - param.setTaskNo(Convert.toStr(taskNo)); - param.setDeviceId(ssjCode); - param.setJobId("0"); - List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); - if (CollUtil.isEmpty(basFaultRecords)) { - BasFaultRecord record = new BasFaultRecord(); - record.setId(IdUtil.simpleUUID()); - record.setDeviceId(ssjCode); - record.setDeviceName(ssjCode); - record.setDeviceType("ssj"); - record.setTaskNo(Convert.toStr(taskNo)); - record.setStartTime(DateUtil.formatDateTime(new Date())); - if (taskNo >= 80 && taskNo <= 97) { - //扫码失败 - record.setFault(getDdjZt(107, trayCode)); - } else if (taskNo >= 100 && taskNo < 120) { - //无货位 - record.setFault(getDdjZt(108, trayCode)); - } else if (taskNo >= 120 && taskNo < 140) { - //已存在当前托盘 - record.setFault(getDdjZt(109, trayCode)); - } else { - //无任务 - record.setFault(getDdjZt(110, trayCode)); - } - record.setJobId("0"); - basFaultRecordService.insertBasFaultRecord(record); - } - - + } catch (Exception e) { + log.error(e.getMessage(),e); } - //取走托盘 恢复异常 - if (deviceSsj.getTaskNo() == 0 && deviceSsj.getKx() == 1) { - //查询记录 更新故障结束时间 - BasFaultRecord param = new BasFaultRecord(); - param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); - param.setJobId("0"); - List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); - if (CollUtil.isNotEmpty(basFaultRecords)) { - BasFaultRecord record = basFaultRecords.get(0); - record.setJobId("1"); - record.setFinishTime(DateUtil.formatDateTime(new Date())); - basFaultRecordService.updateBasFaultRecord(record); - } - } } for (String ddjCode : PlcDdjRead.deviceDdjMap.keySet()) { - MsgDdj msgDdj = PlcDdjRead.deviceDdjMap.get(ddjCode); - msgDdjService.updateMsgDdj(msgDdj); - //记录异常 - if (msgDdj.getSbzt() > 1000) { - //查询记录,添加故障开始时间 - BasFaultRecord param = new BasFaultRecord(); - param.setTaskNo(Convert.toStr(msgDdj.getRwh())); - param.setDeviceId(Convert.toStr(msgDdj.getId())); - param.setJobId("0"); - List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); - if (CollUtil.isEmpty(basFaultRecords)){ - BasFaultRecord record = new BasFaultRecord(); - record.setId(IdUtil.simpleUUID()); - record.setDeviceId(Convert.toStr(msgDdj.getId())); - record.setDeviceName(msgDdj.getName()); - record.setDeviceType("ddj"); - record.setTaskNo(Convert.toStr(msgDdj.getRwh())); - record.setStartTime(DateUtil.formatDateTime(new Date())); - record.setFault(getDdjZt(msgDdj.getSbzt(), null)); - record.setJobId("0"); - basFaultRecordService.insertBasFaultRecord(record); + try { + MsgDdj msgDdj = PlcDdjRead.deviceDdjMap.get(ddjCode); + msgDdjService.updateMsgDdj(msgDdj); + //记录异常 + if (msgDdj.getSbzt() > 1000) { + //查询记录,添加故障开始时间 + BasFaultRecord param = new BasFaultRecord(); + param.setTaskNo(Convert.toStr(msgDdj.getRwh())); + param.setDeviceId(Convert.toStr(msgDdj.getId())); + param.setJobId("0"); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isEmpty(basFaultRecords)){ + BasFaultRecord record = new BasFaultRecord(); + record.setId(IdUtil.simpleUUID()); + record.setDeviceId(Convert.toStr(msgDdj.getId())); + record.setDeviceName(msgDdj.getName()); + record.setDeviceType("ddj"); + record.setTaskNo(Convert.toStr(msgDdj.getRwh())); + record.setStartTime(DateUtil.formatDateTime(new Date())); + record.setFault(getDdjZt(msgDdj.getSbzt(), null)); + record.setJobId("0"); + basFaultRecordService.insertBasFaultRecord(record); + } } - } - //恢复异常 - if (msgDdj.getSbzt() < 1000 && msgDdj.getCzfs()==5){ - //查询记录 更新故障结束时间 - BasFaultRecord param = new BasFaultRecord(); - //param.setTaskNo(Convert.toStr(msgDdj.getRwh())); - param.setDeviceId(Convert.toStr(msgDdj.getId())); - param.setJobId("0"); - List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); - if (CollUtil.isNotEmpty(basFaultRecords)){ - BasFaultRecord record = basFaultRecords.get(0); - record.setJobId("1"); - record.setFinishTime(DateUtil.formatDateTime(new Date())); - basFaultRecordService.updateBasFaultRecord(record); + //恢复异常 + if (msgDdj.getSbzt() < 1000 && msgDdj.getCzfs()==5){ + //查询记录 更新故障结束时间 + BasFaultRecord param = new BasFaultRecord(); + //param.setTaskNo(Convert.toStr(msgDdj.getRwh())); + param.setDeviceId(Convert.toStr(msgDdj.getId())); + param.setJobId("0"); + List basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); + if (CollUtil.isNotEmpty(basFaultRecords)){ + BasFaultRecord record = basFaultRecords.get(0); + record.setJobId("1"); + record.setFinishTime(DateUtil.formatDateTime(new Date())); + basFaultRecordService.updateBasFaultRecord(record); + } } + } catch (Exception e) { + log.error(e.getMessage(),e); } } + i++; + if (i==100){ + log.info("监控线程循环完成"); + i=0; + } Thread.sleep(1500); } catch (Exception e) { log.error(e.getMessage(), e); diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index bbd42ff..259c348 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -6,8 +6,8 @@ spring: druid: #主数据信息 master: -# url: jdbc:sqlserver://172.19.1.119:1433;databaseName=FT541-wcs; - url: jdbc:sqlserver://172.19.1.119:1433;databaseName=FT541-wcs-2; + url: jdbc:sqlserver://172.19.1.119:1433;databaseName=FT541-wcs; +# url: jdbc:sqlserver://172.19.1.119:1433;databaseName=FT541-wcs-2; username: sa password: Flrd0914. # 从库数据源