From 6152646e1b8334ab2448df1916905f1aef46f2a4 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Tue, 3 Feb 2026 09:26:42 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=B0=E5=9C=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/schedule/ScheduleThread.java | 8 ++ .../schedule/plcRead/ddj/PlcDdjRead.java | 2 +- .../schedule/plcRead/ssj/PlcSsjRead.java | 4 +- .../scheduleTask/ddj/BaseDdjThread.java | 106 +++++++++++------- .../scheduleTask/ddj/impl/Ddj1Thread.java | 10 ++ .../scheduleTask/ddj/impl/Ddj2Thread.java | 58 ++++++---- .../scheduleTask/ddj/impl/Ddj4Thread.java | 7 ++ .../com/ruoyi/schedule/util/CheckWeight.java | 7 +- .../queue/DdjDeviceExecutionQueueMapper.xml | 2 +- 9 files changed, 134 insertions(+), 70 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 00c4957..04a4474 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -165,6 +165,10 @@ public class ScheduleThread { if (plcDdj1ReadCustomThread!=null){ plcDdj1ReadCustomThread.getThread().start(); + } + if (plcDdj2ReadCustomThread!=null){ + plcDdj2ReadCustomThread.getThread().start(); + } if (plcDdj4ReadCustomThread!=null){ plcDdj4ReadCustomThread.getThread().start(); @@ -186,6 +190,10 @@ public class ScheduleThread { if (ddj1CustomThread!=null){ ddj1CustomThread.thread.start(); + } + if (ddj2CustomThread!=null){ + ddj2CustomThread.thread.start(); + } if (ddj4CustomThread!=null){ ddj4CustomThread.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 f680318..6f35def 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 @@ -125,7 +125,7 @@ public class PlcDdjRead extends Thread { } void closeServer() { - if (readWriteNet != null) { + if (siemensS7Net != null) { siemensS7Net.ConnectClose(); } setIsConnect(false); 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 672f461..aefd4ac 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 @@ -150,8 +150,8 @@ public class PlcSsjRead implements Runnable { } void closeServer() { - if (readWriteNet != null) { - readWriteNet.ConnectClose(); + if (siemensS7Net != null) { + siemensS7Net.ConnectClose(); } setIsConnect(false); } 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 aff8c5e..8a6ee46 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 @@ -48,10 +48,15 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { public Map> roadwayMap = new HashMap<>(); private PlcDdjRead plcDdjRead; private PlcSsjRead plcSsjRead; - + //称重 ip port public Map czRoadwayMap = new HashMap<>(); - public BaseDdjThread(PlcDdjRead plcDdjRead,PlcSsjRead plcSsjRead) { + //超重DB块 + public Map czOverMap = new HashMap<>(); + //出库任务信号DB块 + public Map outJobMap = new HashMap<>(); + + public BaseDdjThread(PlcDdjRead plcDdjRead, PlcSsjRead plcSsjRead) { this.plcDdjRead = plcDdjRead; this.plcSsjRead = plcSsjRead; } @@ -112,11 +117,11 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { Long rwh = msgDdj.getRwh(); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, msgDdj.getId()); - if (ddjDeviceExecutionQueue !=null && ddjDeviceExecutionQueue.getDdjxf().equals("1") && (ddjDeviceExecutionQueue.getRwlx().equals(DDJ_RWLX_3)||ddjDeviceExecutionQueue.getRwlx().equals(DDJ_RWLX_4))){ - DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ddjDeviceExecutionQueue.getSpare2()); - SendData by1 = new SendData(Tools.INT,1); + if (ddjDeviceExecutionQueue != null && ddjDeviceExecutionQueue.getDdjxf().equals("1") && (ddjDeviceExecutionQueue.getRwlx().equals(DDJ_RWLX_3) || ddjDeviceExecutionQueue.getRwlx().equals(DDJ_RWLX_4))) { + SendData by1 = new SendData(Tools.INT, 1); byte[] sendData = Tools.sendData(by1); - plcSsjRead.writeToSsJ(deviceSsj.getPlcDbWriteAddress(),sendData); + String dbWrite = outJobMap.get(ddjDeviceExecutionQueue.getSpare2()); + plcSsjRead.writeToSsJ(dbWrite, sendData); }//else if (ddjDeviceExecutionQueue !=null){ // DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ddjDeviceExecutionQueue.getSpare2()); // SendData by1 = new SendData(Tools.INT,0); @@ -137,17 +142,17 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { String outSsj = ""; switch (exitId) { case "1": - List outSsj1 = getDeviceSsjs("outSsj1"); + List outSsj1 = getDeviceSsjs("outSsj1"); if (outSsj1.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { outSsj = outSsj1.get(0).getDeviceCode(); - if (StrUtil.isNotEmpty(outSsj) ) { + if (StrUtil.isNotEmpty(outSsj)) { break; } } List outSsj2 = getDeviceSsjs("outSsj2"); if (outSsj2.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { outSsj = outSsj2.get(0).getDeviceCode(); - if (StrUtil.isNotEmpty(outSsj) ) { + if (StrUtil.isNotEmpty(outSsj)) { break; } } @@ -156,14 +161,14 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { List outSsj3 = getDeviceSsjs("outSsj3"); if (outSsj3.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getYxxf() == 1 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { outSsj = outSsj3.get(0).getDeviceCode(); - if (StrUtil.isNotEmpty(outSsj) ) { + if (StrUtil.isNotEmpty(outSsj)) { break; } } List outSsj4 = getDeviceSsjs("outSsj4"); if (outSsj4.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getTaskNo() == 0 && ddj.getYxxf() == 1 && ddj.getHczt() == 0 && ddj.getSbzt() == 0)) { outSsj = outSsj4.get(0).getDeviceCode(); - if (StrUtil.isNotEmpty(outSsj) ) { + if (StrUtil.isNotEmpty(outSsj)) { break; } } @@ -175,7 +180,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { if ("0".equals(outJob.getExecutionPhase()) && StrUtil.isNotEmpty(outSsj)) { int ssjJobCount = ddjDeviceExecutionQueueService.selectOutJobCount(getOtherOutDdjQueue(outSsj)); - if (ssjJobCount==0){ + if (ssjJobCount == 0) { DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(outJob.getTaskNo()), ddj.getId()); //查询这个站点是否存在任务 if (ObjUtil.isNull(ddjQueue)) { @@ -382,30 +387,51 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { String[] split = czDeviceIpPort.split(":"); String weight = CheckWeight.sendWeight(split[0], Convert.toInt(split[1])); Double aDouble = Convert.toDouble(weight); - DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(ssj.getTaskNo()), ddj.getId()); - if (ObjUtil.isNull(ddjQueue) && aDouble > 0) { - DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); - ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); - ddjDeviceExecutionQueue.setRwh(Convert.toLong(ssj.getTaskNo())); - ddjDeviceExecutionQueue.setDevName(ddj.getName()); - ddjDeviceExecutionQueue.setDevId(ddj.getId()); - ddjDeviceExecutionQueue.setRwzt(0); - ddjDeviceExecutionQueue.setMbph(1); - ddjDeviceExecutionQueue.setMblh(1); - ddjDeviceExecutionQueue.setMbch(1); - List integers = roadwayMap.get(ssj.getDeviceCode()); - ddjDeviceExecutionQueue.setYph(integers.get(0)); - ddjDeviceExecutionQueue.setYlh(integers.get(1)); - ddjDeviceExecutionQueue.setYch(integers.get(2)); - ddjDeviceExecutionQueue.setDdjxf("0"); - ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); - ddjDeviceExecutionQueue.setScsj(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); - ddjDeviceExecutionQueue.setMlfs(3); - ddjDeviceExecutionQueue.setSpare1("0"); - ddjDeviceExecutionQueue.setSpare3(Convert.toStr(weight)); - ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); + DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(taskNo), ddj.getId()); + if (ObjUtil.isNull(ddjQueue)) { + if (aDouble > 0 && aDouble < 1500) { + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); + ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); + ddjDeviceExecutionQueue.setRwh(Convert.toLong(ssj.getTaskNo())); + ddjDeviceExecutionQueue.setDevName(ddj.getName()); + ddjDeviceExecutionQueue.setDevId(ddj.getId()); + ddjDeviceExecutionQueue.setRwzt(0); + ddjDeviceExecutionQueue.setMbph(1); + ddjDeviceExecutionQueue.setMblh(1); + ddjDeviceExecutionQueue.setMbch(1); + List integers = roadwayMap.get(ssj.getDeviceCode()); + ddjDeviceExecutionQueue.setYph(integers.get(0)); + ddjDeviceExecutionQueue.setYlh(integers.get(1)); + ddjDeviceExecutionQueue.setYch(integers.get(2)); + ddjDeviceExecutionQueue.setDdjxf("0"); + ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); + ddjDeviceExecutionQueue.setScsj(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + ddjDeviceExecutionQueue.setMlfs(3); + ddjDeviceExecutionQueue.setSpare1("0"); + ddjDeviceExecutionQueue.setSpare3(Convert.toStr(weight)); + ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); + } /*else if (aDouble>=1500) { + //写入超重信号 + SendData by1 = new SendData(Tools.INT,1); + byte[] sendData = Tools.sendData(by1); + String dbWrite = czOverMap.get(ssj.getDeviceCode()); + int i = plcSsjRead.writeToSsJ(dbWrite, sendData); + if (i==1){ + log.info("写入 设备:{} 超重信号DB块:{}",ssj.getDeviceCode(),dbWrite); + } + }*/ + } - } + }/*else { + //写入超重默认信号 0 + SendData by1 = new SendData(Tools.INT,0); + byte[] sendData = Tools.sendData(by1); + String dbWrite = czOverMap.get(ssj.getDeviceCode()); + int i = plcSsjRead.writeToSsJ(dbWrite, sendData); + if (i==1){ + log.info("写入 设备:{} 默认信号DB块:{}",ssj.getDeviceCode(),dbWrite); + } + }*/ } } @@ -430,9 +456,8 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { } else if (ddjDeviceExecutionQueue.getRwlx() == 4) { ddjTaskFinish(rwh, ddj.getId(), 2); } else if (ddjDeviceExecutionQueue.getRwlx() == 1) { - if (hczt==0){ - //回传完成信号 - ddjTaskFinish(rwh, ddj.getId(), 2); + if (hczt == 0) { + ddjTaskFinish(ddj.getRwh(), ddj.getId(), 2); } } } @@ -533,6 +558,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5) { DdjDeviceExecutionQueue ddjDeviceExecutionRunningQueueParam = new DdjDeviceExecutionQueue(); ddjDeviceExecutionRunningQueueParam.setDdjxf("1"); + ddjDeviceExecutionRunningQueueParam.setDevId(ddj.getId()); List ddjDeviceExecutionQueues1 = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionRunningQueueParam); if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues1)) { @@ -638,7 +664,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface { public static void main(String[] args) { String a = "00001234"; String b = "004567"; - System.out.println(a.substring(a.length()-4)); - System.out.println(b.substring(b.length()-4)); + System.out.println(a.substring(a.length() - 4)); + System.out.println(b.substring(b.length() - 4)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java index 678bc10..05fdb90 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj1Thread.java @@ -70,6 +70,16 @@ public class Ddj1Thread extends BaseDdjThread { czRoadwayMap.put("L2007", "172.19.50.73:4001"); czRoadwayMap.put("L2008", "172.19.50.74:4001"); + czOverMap.put("L2001", "DB502.12"); + czOverMap.put("L2002", "DB502.26"); + czOverMap.put("L2007", "DB502.96"); + czOverMap.put("L2008", "DB502.110"); + + outJobMap.put("L2001", "DB502.10"); + outJobMap.put("L2002", "DB502.24"); + outJobMap.put("L2007", "DB502.94"); + outJobMap.put("L2008", "DB502.108"); + log.info("Ddj1Thread init"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java index b33f7e0..c6a616a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj2Thread.java @@ -25,42 +25,58 @@ public class Ddj2Thread extends BaseDdjThread { @Override public void init() { - /*super.init(); + super.init(); ddjCodeList = new HashMap<>(); ssjList = new HashMap<>(); - ArrayList ddjCodes = new ArrayList<>(); - ddjCodes.add(PlcDdjRead.deviceDdjMap.get("ddj2")); + ArrayList ddjCodes = new ArrayList<>(); + ddjCodes.add("ddj2"); ddjCodeList.put("ddj", ddjCodes); - ArrayList roadSsjList = new ArrayList<>(); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2003")); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2004")); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2009")); - roadSsjList.add(PlcSsjRead.deviceSsjMap.get("L2010")); + ArrayList roadSsjList = new ArrayList<>(); + roadSsjList.add("L2003"); + roadSsjList.add("L2004"); + roadSsjList.add("L2009"); + roadSsjList.add("L2010"); ssjList.put("roadSsjList", roadSsjList); - ArrayList outSsj1 = new ArrayList<>(); - outSsj1.add(PlcSsjRead.deviceSsjMap.get("L2003")); + ArrayList outSsj1 = new ArrayList<>(); + outSsj1.add("L2003"); ssjList.put("outSsj1", outSsj1); - ArrayList outSsj2 = new ArrayList<>(); - outSsj2.add(PlcSsjRead.deviceSsjMap.get("L2004")); + ArrayList outSsj2 = new ArrayList<>(); + outSsj2.add("L2004"); ssjList.put("outSsj2", outSsj2); - ArrayList outSsj3 = new ArrayList<>(); - outSsj3.add(PlcSsjRead.deviceSsjMap.get("L2009")); + ArrayList outSsj3 = new ArrayList<>(); + outSsj3.add("L2009"); ssjList.put("outSsj3", outSsj3); - ArrayList outSsj4 = new ArrayList<>(); - outSsj4.add(PlcSsjRead.deviceSsjMap.get("L2010")); + ArrayList outSsj4 = new ArrayList<>(); + outSsj4.add("L2010"); ssjList.put("outSsj4", outSsj4); //初始化巷道口 排 列 层 - roadwayMap.put("L2003", Arrays.asList(3, 1, 1)); - roadwayMap.put("L2004", Arrays.asList(4, 1, 1)); - roadwayMap.put("L2009", Arrays.asList(3, 22, 1)); - roadwayMap.put("L2010", Arrays.asList(4, 22, 1)); + roadwayMap.put("L2003", Arrays.asList(1, 0, 1)); + roadwayMap.put("L2004", Arrays.asList(2, 0, 1)); + roadwayMap.put("L2009", Arrays.asList(1, 20, 1)); + roadwayMap.put("L2010", Arrays.asList(2, 20, 1)); roadwayRollback.put("L2003", 84); roadwayRollback.put("L2004", 85); roadwayRollback.put("L2009", 86); roadwayRollback.put("L2010", 87); + //初始化称重设备连接ip port + czRoadwayMap.put("L2003", "172.19.50.75:4001"); + czRoadwayMap.put("L2004", "172.19.50.76:4001"); + czRoadwayMap.put("L2009", "172.19.50.77:4001"); + czRoadwayMap.put("L2010","172.19.50.78:4001"); - log.info("Ddj2Thread init");*/ + czOverMap.put("L2003", "DB502.12"); + czOverMap.put("L2004", "DB502.26"); + czOverMap.put("L2009", "DB502.96"); + czOverMap.put("L2010", "DB502.110"); + + outJobMap.put("L2003", "DB502.38"); + outJobMap.put("L2004", "DB502.52"); + outJobMap.put("L2009", "DB502.122"); + outJobMap.put("L2010", "DB502.136"); + + + log.info("Ddj2Thread init"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java index 602082a..0627b47 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/impl/Ddj4Thread.java @@ -53,6 +53,13 @@ public class Ddj4Thread extends BaseDdjThread { //初始化称重设备连接ip port czRoadwayMap.put("L1001", "172.19.40.203:4001"); czRoadwayMap.put("L1002", "172.19.40.202:4001"); + + czOverMap.put("L1001", "DB502.12"); + czOverMap.put("L1002", "DB502.26"); + + outJobMap.put("L1001", "DB502.10"); + outJobMap.put("L1002", "DB502.24"); + log.info("Ddj4Thread init"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java index af494f4..229f930 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/util/CheckWeight.java @@ -50,11 +50,8 @@ public class CheckWeight { } public static void main(String[] args) { - /*CheckWeight checkWeight = new CheckWeight(); - System.out.println(checkWeight.sendWeight("172.19.40.203", 4001)); - System.out.println(checkWeight.sendWeight("172.19.40.202", 4001));*/ - Double aDouble = Convert.toDouble("-000019"); - System.out.println(aDouble); + CheckWeight checkWeight = new CheckWeight(); + System.out.println(checkWeight.sendWeight("172.19.50.75", 4001)); } } diff --git a/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml b/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml index bd33e19..e8b2f27 100644 --- a/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml @@ -60,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - order by scsj asc + order by rwlx desc,scsj asc