添加现场存活日志校验

This commit is contained in:
刘汗青
2026-05-18 15:21:26 +08:00
parent b4ed427de9
commit 2272a89b2a
6 changed files with 183 additions and 134 deletions

View File

@@ -161,28 +161,37 @@ public class ScheduleThread {
* 开始线程 * 开始线程
*/ */
public void startAllThread() { public void startAllThread() {
plcSsjReadCustomThread.getThread().start(); if (plcSsjReadCustomThread !=null){
plcSsjReadCustomThread.getThread().setName("输送机读取线程");
plcSsjReadCustomThread.getThread().start();
}
if (plcDdj1ReadCustomThread!=null){ if (plcDdj1ReadCustomThread!=null){
plcDdj1ReadCustomThread.getThread().setName("ddj1读取线程");
plcDdj1ReadCustomThread.getThread().start(); plcDdj1ReadCustomThread.getThread().start();
} }
if (plcDdj2ReadCustomThread!=null){ if (plcDdj2ReadCustomThread!=null){
plcDdj2ReadCustomThread.getThread().setName("ddj2读取线程");
plcDdj2ReadCustomThread.getThread().start(); plcDdj2ReadCustomThread.getThread().start();
} }
if (plcDdj3ReadCustomThread!=null){ if (plcDdj3ReadCustomThread!=null){
plcDdj3ReadCustomThread.getThread().setName("ddj3读取线程");
plcDdj3ReadCustomThread.getThread().start(); plcDdj3ReadCustomThread.getThread().start();
} }
if (plcDdj4ReadCustomThread!=null){ if (plcDdj4ReadCustomThread!=null){
plcDdj4ReadCustomThread.getThread().setName("ddj4读取线程");
plcDdj4ReadCustomThread.getThread().start(); plcDdj4ReadCustomThread.getThread().start();
} }
if (plcDdj5ReadCustomThread!=null){ if (plcDdj5ReadCustomThread!=null){
plcDdj5ReadCustomThread.getThread().setName("ddj5读取线程");
plcDdj5ReadCustomThread.getThread().start(); plcDdj5ReadCustomThread.getThread().start();
} }
if (plcDdj6ReadCustomThread!=null){ if (plcDdj6ReadCustomThread!=null){
plcDdj6ReadCustomThread.getThread().setName("ddj6读取线程");
plcDdj6ReadCustomThread.getThread().start(); plcDdj6ReadCustomThread.getThread().start();
} }
@@ -193,28 +202,37 @@ public class ScheduleThread {
* 开启线程2 * 开启线程2
*/ */
public void startAllThread2() { public void startAllThread2() {
monitoringCustomThread.thread.start(); if (monitoringCustomThread!=null){
monitoringCustomThread.thread.setName("监控线程");
monitoringCustomThread.thread.start();
}
if (ddj1CustomThread!=null){ if (ddj1CustomThread!=null){
ddj1CustomThread.thread.setName("ddj1调度线程");
ddj1CustomThread.thread.start(); ddj1CustomThread.thread.start();
} }
if (ddj2CustomThread!=null){ if (ddj2CustomThread!=null){
ddj2CustomThread.thread.setName("ddj5调度线程");
ddj2CustomThread.thread.start(); ddj2CustomThread.thread.start();
} }
if (ddj3CustomThread!=null){ if (ddj3CustomThread!=null){
ddj3CustomThread.thread.setName("ddj3调度线程");
ddj3CustomThread.thread.start(); ddj3CustomThread.thread.start();
} }
if (ddj4CustomThread!=null){ if (ddj4CustomThread!=null){
ddj4CustomThread.thread.setName("ddj4调度线程");
ddj4CustomThread.thread.start(); ddj4CustomThread.thread.start();
} }
if (ddj5CustomThread!=null){ if (ddj5CustomThread!=null){
ddj5CustomThread.thread.setName("ddj5调度线程");
ddj5CustomThread.thread.start(); ddj5CustomThread.thread.start();
} }
if (ddj6CustomThread!=null){ if (ddj6CustomThread!=null){
ddj6CustomThread.thread.setName("ddj6调度线程");
ddj6CustomThread.thread.start(); ddj6CustomThread.thread.start();
} }

View File

@@ -37,6 +37,7 @@ public class PlcDdjRead extends Thread {
@Override @Override
public void run() { public void run() {
int i = 0;
while (isRun) { while (isRun) {
try { try {
if (IsConnect()) { if (IsConnect()) {
@@ -45,9 +46,13 @@ public class PlcDdjRead extends Thread {
} else { } else {
reConnect(); reConnect();
} }
} catch (InterruptedException e) { i++;
Thread.currentThread().interrupt(); if (i==100){
log.info("读取线程执行正常");
i=0;
}
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(),e);
log.info("********IP:" + this.ip + " port:" + this.port + "端口号 " + e.getMessage()); log.info("********IP:" + this.ip + " port:" + this.port + "端口号 " + e.getMessage());
} }

View File

@@ -46,6 +46,7 @@ public class PlcSsjRead implements Runnable {
@Override @Override
public void run() { public void run() {
int i = 0;
while (isRun) { while (isRun) {
try { try {
if (IsConnect()) { if (IsConnect()) {
@@ -72,11 +73,13 @@ public class PlcSsjRead implements Runnable {
} else { } else {
reConnect(); reConnect();
} }
} catch (InterruptedException e) { i++;
// 捕获中断异常,退出循环 if (i==100){
Thread.currentThread().interrupt(); // 重新设置中断标志 log.info("读取线程执行正常");
return; i=0;
} catch (Exception e) { }
} catch (Exception e) {
log.error(e.getMessage(),e);
log.info("********IP:" + this.ip + " port:" + this.port + "读取数据异常 " + e.getMessage()); log.info("********IP:" + this.ip + " port:" + this.port + "读取数据异常 " + e.getMessage());
} }

View File

@@ -84,6 +84,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
@Override @Override
public void run() { public void run() {
init(); init();
int i = 0;
while (isRun) { while (isRun) {
for (String type : ddjCodeList.keySet()) { for (String type : ddjCodeList.keySet()) {
@@ -96,6 +97,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
generateOutBoundQueue(msgDdj); generateOutBoundQueue(msgDdj);
setOutSsjStatus(msgDdj); setOutSsjStatus(msgDdj);
ddjTask(msgDdj); ddjTask(msgDdj);
} else { } else {
log.error("堆垛机设备为空"); log.error("堆垛机设备为空");
} }
@@ -105,10 +107,15 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
} }
} }
i++;
if (i==100){
log.info("ddj{},循环完成",ddjCodeList);
i=0;
}
try { try {
Thread.sleep(1500); Thread.sleep(1500);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); log.error(e.getMessage(),e);
} }
} }

View File

@@ -45,153 +45,169 @@ public class MonitoringThread implements Runnable {
@Override @Override
public void run() { public void run() {
init(); init();
int i =0;
while (isRun){ while (isRun){
try { try {
for (String ssjCode : PlcSsjRead.deviceSsjMap.keySet()) { for (String ssjCode : PlcSsjRead.deviceSsjMap.keySet()) {
DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ssjCode); try {
deviceSsjService.updateDeviceSsj(deviceSsj); DeviceSsj deviceSsj = PlcSsjRead.deviceSsjMap.get(ssjCode);
int taskNo = deviceSsj.getTaskNo(); deviceSsjService.updateDeviceSsj(deviceSsj);
int taskNo = deviceSsj.getTaskNo();
//输送机外形异常 101-前超长 102-后超长 103-左超宽 104-右超宽 105-超高 106-超重 //输送机外形异常 101-前超长 102-后超长 103-左超宽 104-右超宽 105-超高 106-超重
if (deviceSsj.getException() >= 101 && deviceSsj.getException() <= 120 && deviceSsj.getTaskNo()>0) { if (deviceSsj.getException() >= 101 && deviceSsj.getException() <= 120 && deviceSsj.getTaskNo()>0) {
BasFaultRecord param = new BasFaultRecord(); BasFaultRecord param = new BasFaultRecord();
param.setTaskNo(Convert.toStr(deviceSsj.getTaskNo())); param.setTaskNo(Convert.toStr(deviceSsj.getTaskNo()));
param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode()));
param.setJobId("0"); param.setJobId("0");
List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param);
if (CollUtil.isEmpty(basFaultRecords)) { if (CollUtil.isEmpty(basFaultRecords)) {
BasFaultRecord record = new BasFaultRecord(); BasFaultRecord record = new BasFaultRecord();
record.setId(IdUtil.simpleUUID()); record.setId(IdUtil.simpleUUID());
record.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); record.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode()));
record.setDeviceName(deviceSsj.getName()); record.setDeviceName(deviceSsj.getName());
record.setDeviceType("ssj"); record.setDeviceType("ssj");
record.setTaskNo(Convert.toStr(deviceSsj.getTaskNo())); record.setTaskNo(Convert.toStr(deviceSsj.getTaskNo()));
record.setStartTime(DateUtil.formatDateTime(new Date())); record.setStartTime(DateUtil.formatDateTime(new Date()));
record.setFault(getSsjZt(deviceSsj.getException())); record.setFault(getSsjZt(deviceSsj.getException()));
record.setJobId("0"); record.setJobId("0");
basFaultRecordService.insertBasFaultRecord(record); basFaultRecordService.insertBasFaultRecord(record);
}
} }
}
//人工处理 恢复异常 //人工处理 恢复异常
if (deviceSsj.getException() == 0 && deviceSsj.getTaskNo() >= 200) { if (deviceSsj.getException() == 0 && deviceSsj.getTaskNo() >= 200) {
//查询记录 更新故障结束时间 //查询记录 更新故障结束时间
BasFaultRecord param = new BasFaultRecord(); BasFaultRecord param = new BasFaultRecord();
param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode())); param.setDeviceId(Convert.toStr(deviceSsj.getDeviceCode()));
param.setJobId("0"); param.setJobId("0");
List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param);
if (CollUtil.isNotEmpty(basFaultRecords)) { if (CollUtil.isNotEmpty(basFaultRecords)) {
BasFaultRecord record = basFaultRecords.get(0); BasFaultRecord record = basFaultRecords.get(0);
record.setJobId("1"); record.setJobId("1");
record.setFinishTime(DateUtil.formatDateTime(new Date())); record.setFinishTime(DateUtil.formatDateTime(new Date()));
basFaultRecordService.updateBasFaultRecord(record); basFaultRecordService.updateBasFaultRecord(record);
}
} }
}
if (taskNo >= 50 && taskNo < 200) { if (taskNo >= 50 && taskNo < 200) {
//扫码失败+0 无任务+100 无货位+20 已存在当前托盘+40 //扫码失败+0 无任务+100 无货位+20 已存在当前托盘+40
/* /*
"L2001", 80 "L2002", 81 "L2007", 82 "L2008", 83 "L2003", 84 "L2004", 85 "L2001", 80 "L2002", 81 "L2007", 82 "L2008", 83 "L2003", 84 "L2004", 85
"L2009", 86 "L2010", 87 "L2005", 88 "L2006", 89 "L2011", 90 "L2012", 91 "L2009", 86 "L2010", 87 "L2005", 88 "L2006", 89 "L2011", 90 "L2012", 91
"L1001", 92 "L1002", 93 "L1003", 94 "L1004", 95 "L1005", 96 "L1006", 97 "L1001", 92 "L1002", 93 "L1003", 94 "L1004", 95 "L1005", 96 "L1006", 97
*/ */
String trayCode = null; String trayCode = null;
if (taskNo>100){ if (taskNo>100){
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(taskNo), Convert.toInt(deviceSsj.getId())); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(taskNo), Convert.toInt(deviceSsj.getId()));
if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) { if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) {
trayCode = ddjDeviceExecutionQueue.getSpare4(); trayCode = ddjDeviceExecutionQueue.getSpare4();
}
}
BasFaultRecord param = new BasFaultRecord();
param.setTaskNo(Convert.toStr(taskNo));
param.setDeviceId(ssjCode);
param.setJobId("0");
List<BasFaultRecord> 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<BasFaultRecord> 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(); } catch (Exception e) {
param.setTaskNo(Convert.toStr(taskNo)); log.error(e.getMessage(),e);
param.setDeviceId(ssjCode);
param.setJobId("0");
List<BasFaultRecord> 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<BasFaultRecord> 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()) { for (String ddjCode : PlcDdjRead.deviceDdjMap.keySet()) {
MsgDdj msgDdj = PlcDdjRead.deviceDdjMap.get(ddjCode); try {
msgDdjService.updateMsgDdj(msgDdj); MsgDdj msgDdj = PlcDdjRead.deviceDdjMap.get(ddjCode);
//记录异常 msgDdjService.updateMsgDdj(msgDdj);
if (msgDdj.getSbzt() > 1000) { //记录异常
//查询记录,添加故障开始时间 if (msgDdj.getSbzt() > 1000) {
BasFaultRecord param = new BasFaultRecord(); //查询记录,添加故障开始时间
param.setTaskNo(Convert.toStr(msgDdj.getRwh())); BasFaultRecord param = new BasFaultRecord();
param.setDeviceId(Convert.toStr(msgDdj.getId())); param.setTaskNo(Convert.toStr(msgDdj.getRwh()));
param.setJobId("0"); param.setDeviceId(Convert.toStr(msgDdj.getId()));
List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); param.setJobId("0");
if (CollUtil.isEmpty(basFaultRecords)){ List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param);
BasFaultRecord record = new BasFaultRecord(); if (CollUtil.isEmpty(basFaultRecords)){
record.setId(IdUtil.simpleUUID()); BasFaultRecord record = new BasFaultRecord();
record.setDeviceId(Convert.toStr(msgDdj.getId())); record.setId(IdUtil.simpleUUID());
record.setDeviceName(msgDdj.getName()); record.setDeviceId(Convert.toStr(msgDdj.getId()));
record.setDeviceType("ddj"); record.setDeviceName(msgDdj.getName());
record.setTaskNo(Convert.toStr(msgDdj.getRwh())); record.setDeviceType("ddj");
record.setStartTime(DateUtil.formatDateTime(new Date())); record.setTaskNo(Convert.toStr(msgDdj.getRwh()));
record.setFault(getDdjZt(msgDdj.getSbzt(), null)); record.setStartTime(DateUtil.formatDateTime(new Date()));
record.setJobId("0"); record.setFault(getDdjZt(msgDdj.getSbzt(), null));
basFaultRecordService.insertBasFaultRecord(record); record.setJobId("0");
basFaultRecordService.insertBasFaultRecord(record);
}
} }
} //恢复异常
//恢复异常 if (msgDdj.getSbzt() < 1000 && msgDdj.getCzfs()==5){
if (msgDdj.getSbzt() < 1000 && msgDdj.getCzfs()==5){ //查询记录 更新故障结束时间
//查询记录 更新故障结束时间 BasFaultRecord param = new BasFaultRecord();
BasFaultRecord param = new BasFaultRecord(); //param.setTaskNo(Convert.toStr(msgDdj.getRwh()));
//param.setTaskNo(Convert.toStr(msgDdj.getRwh())); param.setDeviceId(Convert.toStr(msgDdj.getId()));
param.setDeviceId(Convert.toStr(msgDdj.getId())); param.setJobId("0");
param.setJobId("0"); List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param);
List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param); if (CollUtil.isNotEmpty(basFaultRecords)){
if (CollUtil.isNotEmpty(basFaultRecords)){ BasFaultRecord record = basFaultRecords.get(0);
BasFaultRecord record = basFaultRecords.get(0); record.setJobId("1");
record.setJobId("1"); record.setFinishTime(DateUtil.formatDateTime(new Date()));
record.setFinishTime(DateUtil.formatDateTime(new Date())); basFaultRecordService.updateBasFaultRecord(record);
basFaultRecordService.updateBasFaultRecord(record); }
} }
} catch (Exception e) {
log.error(e.getMessage(),e);
} }
} }
i++;
if (i==100){
log.info("监控线程循环完成");
i=0;
}
Thread.sleep(1500); Thread.sleep(1500);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);

View File

@@ -6,8 +6,8 @@ spring:
druid: druid:
#主数据信息 #主数据信息
master: master:
# url: jdbc:sqlserver://172.19.1.119:1433;databaseName=FT541-wcs; 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-2;
username: sa username: sa
password: Flrd0914. password: Flrd0914.
# 从库数据源 # 从库数据源