|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import com.fazecast.jSerialComm.SerialPort;
|
|
|
|
import com.fazecast.jSerialComm.SerialPort;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
|
|
|
import org.jeecg.custom.enums.DEVICE_STATUS;
|
|
|
|
import org.jeecg.custom.enums.DEVICE_TYPE;
|
|
|
|
import org.jeecg.custom.enums.DEVICE_TYPE;
|
|
|
|
import org.jeecg.custom.utils.RS485Handler;
|
|
|
|
import org.jeecg.custom.utils.RS485Handler;
|
|
|
|
import org.jeecg.modules.demo.ttelectricmeter.entity.TtElectricMeter;
|
|
|
|
import org.jeecg.modules.demo.ttelectricmeter.entity.TtElectricMeter;
|
|
|
@ -25,6 +26,7 @@ import java.math.BigDecimal;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
@Configuration //1.主要用于标记配置类,兼备Component的效果。
|
|
|
|
@Configuration //1.主要用于标记配置类,兼备Component的效果。
|
|
|
@ -73,14 +75,15 @@ public class TtDataCollectTask implements SchedulingConfigurer {
|
|
|
|
for(Map.Entry<DEVICE_TYPE, RS485Handler> entry : jzjHandlerMap.entrySet()) {
|
|
|
|
for(Map.Entry<DEVICE_TYPE, RS485Handler> entry : jzjHandlerMap.entrySet()) {
|
|
|
|
RS485Handler handler = entry.getValue();
|
|
|
|
RS485Handler handler = entry.getValue();
|
|
|
|
DEVICE_TYPE deviceType = entry.getKey();
|
|
|
|
DEVICE_TYPE deviceType = entry.getKey();
|
|
|
|
|
|
|
|
// 原子计数器
|
|
|
|
|
|
|
|
AtomicInteger atomic = new AtomicInteger();
|
|
|
|
Runnable runnable = () -> {
|
|
|
|
Runnable runnable = () -> {
|
|
|
|
log.info("5min执行一次浇注设备温度采集:" + LocalDateTime.now().toLocalTime());
|
|
|
|
log.info("5min执行一次浇注设备温度采集:" + LocalDateTime.now().toLocalTime());
|
|
|
|
String str = handler.write(deviceType.getCommand());
|
|
|
|
String str = handler.write(deviceType.getCommand());
|
|
|
|
String temp = handler.parseData(str, 1);
|
|
|
|
String temp = handler.parseData(str, 1);
|
|
|
|
log.info("device com {} read str = {} | parse temp = {}", deviceType.name(), str, temp);
|
|
|
|
String eqtIp = deviceType.getHostNum();
|
|
|
|
if (StringUtils.isNotBlank(temp)) {
|
|
|
|
if (StringUtils.isNotBlank(temp)) {
|
|
|
|
Integer type = jzjMolds.contains(deviceType) ? 2 : 1;
|
|
|
|
Integer type = jzjMolds.contains(deviceType) ? 2 : 1;
|
|
|
|
String eqtIp = deviceType.getHostNum();
|
|
|
|
|
|
|
|
TtPouringEquip ttPouringEquip = new TtPouringEquip();
|
|
|
|
TtPouringEquip ttPouringEquip = new TtPouringEquip();
|
|
|
|
ttPouringEquip.setTemperature(new BigDecimal(temp));
|
|
|
|
ttPouringEquip.setTemperature(new BigDecimal(temp));
|
|
|
|
ttPouringEquip.setCreateTime(new Date());
|
|
|
|
ttPouringEquip.setCreateTime(new Date());
|
|
|
@ -89,7 +92,16 @@ public class TtDataCollectTask implements SchedulingConfigurer {
|
|
|
|
ttPouringEquip.setEqtNo(Optional.ofNullable(eqtNoIpMap.get(eqtIp)).orElse("0"));
|
|
|
|
ttPouringEquip.setEqtNo(Optional.ofNullable(eqtNoIpMap.get(eqtIp)).orElse("0"));
|
|
|
|
ttPouringEquip.setEqtIp(eqtIp);
|
|
|
|
ttPouringEquip.setEqtIp(eqtIp);
|
|
|
|
pouringEquipService.save(ttPouringEquip);
|
|
|
|
pouringEquipService.save(ttPouringEquip);
|
|
|
|
|
|
|
|
atomic.getAndSet(0); // 重新记为 0
|
|
|
|
|
|
|
|
updateEqtStatus(eqtIp, DEVICE_STATUS.RUNNING.getVal());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
int number = atomic.getAndIncrement(); // 采集失败次数 +1;
|
|
|
|
|
|
|
|
if (number >= 6) {
|
|
|
|
|
|
|
|
updateEqtStatus(eqtIp, DEVICE_STATUS.SHUTDOWN.getVal());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
log.info("device com {} read str = {} | parse temp = {} | atomic = {}", deviceType.name(),
|
|
|
|
|
|
|
|
str, temp, atomic.get());
|
|
|
|
};
|
|
|
|
};
|
|
|
|
this.addTriggerTask(runnable, cron1);
|
|
|
|
this.addTriggerTask(runnable, cron1);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -156,12 +168,25 @@ public class TtDataCollectTask implements SchedulingConfigurer {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取所有运行状态正常的Ip设备
|
|
|
|
// 更新浇注机设备采集状态
|
|
|
|
|
|
|
|
private void updateEqtStatus(String ip, Integer status) {
|
|
|
|
|
|
|
|
LambdaQueryWrapper<TtEqtBase> lqw = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
|
lqw.eq(TtEqtBase::getEqtIp, ip);
|
|
|
|
|
|
|
|
TtEqtBase eqtInfo = iTtEqtBaseService.getOne(lqw);
|
|
|
|
|
|
|
|
if (eqtInfo != null) {
|
|
|
|
|
|
|
|
eqtInfo.setEqtStatus(status);
|
|
|
|
|
|
|
|
iTtEqtBaseService.save(eqtInfo);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取所有串口采集运行的Ip设备
|
|
|
|
private Map<String,String> getEqtNoIpMapping() {
|
|
|
|
private Map<String,String> getEqtNoIpMapping() {
|
|
|
|
Map<String,String> map;
|
|
|
|
Map<String,String> map;
|
|
|
|
LambdaQueryWrapper<TtEqtBase> lqw = new LambdaQueryWrapper<>();
|
|
|
|
LambdaQueryWrapper<TtEqtBase> lqw = new LambdaQueryWrapper<>();
|
|
|
|
lqw.isNotNull(TtEqtBase::getEqtIp);
|
|
|
|
lqw.isNotNull(TtEqtBase::getEqtIp);
|
|
|
|
lqw.eq(TtEqtBase::getEqtStatus,1); // 运行正常
|
|
|
|
// lqw.eq(TtEqtBase::getEqtStatus,1); // 运行正常
|
|
|
|
|
|
|
|
lqw.in(TtEqtBase::getEqtType, 2,5,6,7);
|
|
|
|
List<TtEqtBase> list = iTtEqtBaseService.list(lqw);
|
|
|
|
List<TtEqtBase> list = iTtEqtBaseService.list(lqw);
|
|
|
|
map = list.stream().collect(Collectors.toMap(TtEqtBase::getEqtIp, TtEqtBase::getEqtNo));
|
|
|
|
map = list.stream().collect(Collectors.toMap(TtEqtBase::getEqtIp, TtEqtBase::getEqtNo));
|
|
|
|
log.info("running eqt ip no mappings = {}", map);
|
|
|
|
log.info("running eqt ip no mappings = {}", map);
|
|
|
|