添加现场存活日志校验

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() {
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();
}

View File

@@ -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());
}

View File

@@ -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());
}

View File

@@ -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);
}
}

View File

@@ -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<BasFaultRecord> 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<BasFaultRecord> 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<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);
//人工处理 恢复异常
if (deviceSsj.getException() == 0 && deviceSsj.getTaskNo() >= 200) {
//查询记录 更新故障结束时间
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);
}
}
}
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<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();
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);
}
} 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<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()) {
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<BasFaultRecord> 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<BasFaultRecord> 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<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);
//恢复异常
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<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);
}
}
} 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);

View File

@@ -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.
# 从库数据源