初始化调度线程 数据

This commit is contained in:
liuhanqing
2025-07-04 11:54:16 +08:00
parent ae778084c4
commit a26319dbd6
7 changed files with 171 additions and 157 deletions

View File

@@ -22,7 +22,7 @@ public class ThreadOperationController {
* @return
*/
@RequestMapping("/startAllThread")
@PreAuthorize("@ss.hasPermi('device:operation:start')")
//@PreAuthorize("@ss.hasPermi('device:operation:start')")
public AjaxResult startAllThread() {
scheduleThread.startAllThread();
return AjaxResult.success();
@@ -34,7 +34,7 @@ public class ThreadOperationController {
* @return
*/
@RequestMapping("/stopAllThread")
@PreAuthorize("@ss.hasPermi('device:operation:stop')")
//@PreAuthorize("@ss.hasPermi('device:operation:stop')")
public AjaxResult stopAllThread() {
scheduleThread.stopAllThread();
return AjaxResult.success();

View File

@@ -5,7 +5,6 @@ import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.schedule.plcRead.ssj.domain.PlcConnectInfo;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.CustomThread;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -25,8 +24,8 @@ public class ScheduleThread {
*/
@PostConstruct
public void init() {
String ip = "192.168.0.1";
int port = 80;
String ip = "127.0.0.1";
int port = 102;
PlcConnectInfo ssjPlcConnectInfo = new PlcConnectInfo(ip, port);
ConcurrentHashMap<String, DeviceSsj>list = new ConcurrentHashMap<>();
//获取要去取的输送机

View File

@@ -8,11 +8,10 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.domain.PlcConnectInfo;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import com.ruoyi.schedule.plcRead.util.ParseUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.Offset;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@@ -38,7 +37,8 @@ public class PlcRead implements Runnable {
while (running && !Thread.currentThread().isInterrupted()) {
try {
if (IsConnect()) {
int step = 20;
int baseOffset = 0;
for (String ssjCode : deviceMap.keySet()) {
DeviceSsj ssjDevice = deviceMap.get(ssjCode);
String readAddress = "";
@@ -47,362 +47,363 @@ public class PlcRead implements Runnable {
switch (ssjDevice.getDeviceCode()) {
case "G5011":
// 处理 G5011
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5012":
// 处理 G5012
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5016":
// 处理 G5016
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5017":
// 处理 G5017
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5002":
// 处理 G5002
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5003":
// 处理 G5003
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5007":
// 处理 G5007
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5008":
// 处理 G5008
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3011":
// 处理 G3011
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3012":
// 处理 G3012
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4007":
// 处理 G4007
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4008":
// 处理 G4008
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4016":
// 处理 G4016
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4017":
// 处理 G4017
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4011":
// 处理 G4011
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4012":
// 处理 G4012
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4002":
// 处理 G4002
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4003":
// 处理 G4003
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3002":
// 处理 G3002
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3003":
// 处理 G3003
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2002":
// 处理 G2002
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2003":
// 处理 G2003
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1011":
// 处理 G1011
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3016":
// 处理 G3016
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3017":
// 处理 G3017
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3007":
// 处理 G3007
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3008":
// 处理 G3008
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1007":
// 处理 G1007
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1008":
// 处理 G1008
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1005":
// 处理 G1005
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1001":
// 处理 G1001
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1002":
// 处理 G1002
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2010":
// 处理 G2010
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2011":
// 处理 G2011
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1003":
// 处理 G1003
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1009":
// 处理 G1009
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2012":
// 处理 G2012
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3009":
// 处理 G3009
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3018":
// 处理 G3018
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4009":
// 处理 G4009
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4018":
// 处理 G4018
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5009":
// 处理 G5009
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5018":
// 处理 G5018
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5013":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5014":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5015":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5004":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5005":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5006":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4013":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4014":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4015":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4004":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4005":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4006":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1012":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3004":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3005":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3006":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3013":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3014":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3015":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1006":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2004":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2005":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2006":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2007":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2008":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2009":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1004":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G1010":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G2001":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3001":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G3010":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4001":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G4010":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5001":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
case "G5010":
readAddress = "";
readAddress = "DB501." + baseOffset;
writeAddress = "";
break;
default:
continue;
}
baseOffset +=step;
ssjDevice.setPlcDbReadAddress(readAddress);
ssjDevice.setPlcDbWriteAddress(writeAddress);
@@ -443,15 +444,15 @@ public class PlcRead implements Runnable {
* @param ssjDevice
*/
private void readPlcOtherSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(2, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(4, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(6, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(10, ddsx1));
}
}
@@ -461,15 +462,15 @@ public class PlcRead implements Runnable {
* @param ssjDevice
*/
private void readPlcInSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(2, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(4, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(6, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(10, ddsx1));
}
}
@@ -479,15 +480,15 @@ public class PlcRead implements Runnable {
* @param ssjDevice
*/
private void readPlcPickSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(2, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(4, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(6, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(10, ddsx1));
}
}
@@ -497,15 +498,15 @@ public class PlcRead implements Runnable {
* @param ssjDevice
*/
private void readPlcOutSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(2, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(4, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(6, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(10, ddsx1));
}
}

View File

@@ -1,30 +0,0 @@
package com.ruoyi.schedule.plcRead.ssj.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Ssj {
private String deviceCode;
private String plcReadAddress;
private String plcWriteAddress;
//输送机类型:1-出库 2-拣选 3-入库 4-其他
private String type;
//空闲 0-否 1-是
private Integer empty;
//到位 0-否 1-是
private Integer inPlace;
//入库请求 0-否 1-是
private Integer entryRequest;
//条码
private String trayCode;
//任务号
private Integer taskNo;
}

View File

@@ -12,11 +12,13 @@ import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -25,7 +27,7 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class InSsjThread {
public ConcurrentHashMap<String, DeviceSsj> deviceMap;
public HashMap<String, List<String>> ssjCodeList;
@Resource
private IApiService apiService;
@@ -33,15 +35,26 @@ public class InSsjThread {
private IAgvQueueService agvQueueService;
public void run(){
for (String ssjCode : PlcRead.deviceMap.keySet()) {
DeviceSsj deviceSsj = PlcRead.deviceMap.get(ssjCode);
if ("3".equals(deviceSsj.getType())){
inDispatch(deviceSsj);
}
}
@PostConstruct
public void init() {
//todo 获取设备编码列表
ssjCodeList = new HashMap<>();
}
public void run() {
for (String type : ssjCodeList.keySet()) {
if ("in".equals(type)) {
for (String ssjCode : ssjCodeList.get(type)) {
if (PlcRead.deviceMap.containsKey(ssjCode)) {
inDispatch(PlcRead.deviceMap.get(ssjCode));
} else {
log.error("设备不存在 ssjCode{}", ssjCode);
}
}
}
}
}
public void inDispatch(DeviceSsj inSsjDevice) {

View File

@@ -9,11 +9,13 @@ import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -22,18 +24,30 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class OutSsjThread {
public ConcurrentHashMap<String, DeviceSsj> deviceMap;
public HashMap<String, List<String>> ssjCodeList;
@Resource
private IApiService apiService;
@Resource
private IAgvQueueService agvQueueService;
@PostConstruct
public void init() {
//todo 获取设备编码列表
ssjCodeList = new HashMap<>();
}
public void run() {
for (String ssjCode : PlcRead.deviceMap.keySet()) {
DeviceSsj deviceSsj = PlcRead.deviceMap.get(ssjCode);
if ("1".equals(deviceSsj.getType())){
outDispatch(deviceSsj);
for (String type : ssjCodeList.keySet()) {
if ("out".equals(type)) {
for (String ssjCode : ssjCodeList.get(type)) {
if (PlcRead.deviceMap.containsKey(ssjCode)) {
outDispatch(PlcRead.deviceMap.get(ssjCode));
} else {
log.error("设备不存在 ssjCode{}", ssjCode);
}
}
}
}
}

View File

@@ -7,11 +7,14 @@ import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -20,18 +23,32 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class PickSsjTread {
public ConcurrentHashMap<String, DeviceSsj> deviceMap;
public HashMap<String, List<String>> ssjCodeList;
@Resource
private IApiService apiService;
@Resource
private IAgvQueueService agvQueueService;
@PostConstruct
public void init() {
//todo 获取设备编码列表
ssjCodeList = new HashMap<>();
}
@Scheduled(fixedDelay = 5000)
public void run(){
for (String ssjCode : PlcRead.deviceMap.keySet()) {
DeviceSsj deviceSsj = PlcRead.deviceMap.get(ssjCode);
if ("2".equals(deviceSsj.getType())){
pickDispatch(deviceSsj);
for (String type : ssjCodeList.keySet()) {
if ("pick".equals(type)) {
for (String ssjCode : ssjCodeList.get(type)) {
if (PlcRead.deviceMap.containsKey(ssjCode)) {
pickDispatch(PlcRead.deviceMap.get(ssjCode));
} else {
log.error("设备不存在 ssjCode{}", ssjCode);
}
}
}
}
}