Browse Source

20241223

java8
qiezi 1 year ago
parent
commit
635694c27d
  1. 91
      src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java

91
src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java

@ -134,47 +134,60 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService {
log.info("没有维护RS232/RS485的设备信息"); log.info("没有维护RS232/RS485的设备信息");
return; return;
} }
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(list.size());
for (EquipmentFolderLocation device : list) { for (EquipmentFolderLocation device : list) {
String IP = device.getIp();//IP
int PORT = device.getPort();//端口
int unitId = device.getUnitId();// 从站ID
int ref = device.getRegisterAddress();// 开始地址
int count = device.getRegisterNum();//数量
String type = device.getRegisterNumColumntype();// 类型
EquipmentFolderSortEntity sort = equipmentFolderSortService.lambdaQuery()
.eq(EquipmentFolderSortEntity::getSite, device.getSite())
.eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo())
.eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo())
.one();
List<Integer> values = CollectUtil.getValues(IP, PORT, unitId, ref-1, count);
if (values.size() != 2 && "float".equals(type)){
log.info("获取数据失败");
continue;
}
float num = registersToFloat(values.get(0), values.get(1));
if ((num == 0 || num == 0.0) && (Objects.isNull(sort.getValue()) || "0".equalsIgnoreCase(sort.getValue()) || "0.0".equalsIgnoreCase(sort.getValue()))){
continue;
}
Date createDate = new Date();
EquipmentDataDetail detail = new EquipmentDataDetail();
detail.setSite(device.getSite());
detail.setBuNo(device.getBuNo());
detail.setFileNo(device.getFileNo());
detail.setValue0(String.valueOf(num));
detail.setGroupValue(sort.getBatchNo());
detail.setCreateDate(createDate);
detail.setEquipmentNo(device.getEquipmentNo());
equipmentDataDetailService.save(detail);
if (num == 0 || num == 0.0){
sort.setBatchNo(sort.getBatchNo() + 1);
}
equipmentFolderSortService.lambdaUpdate()
.set(EquipmentFolderSortEntity::getValue, String.valueOf(num))
.set(EquipmentFolderSortEntity::getBatchNo, sort.getBatchNo())
.eq(EquipmentFolderSortEntity::getId, sort.getId())
.update();
executor.submit(()->{
try {
getDateByTransparentFlag(device);
}catch (Exception e){
log.info("获取数据失败:{}", e.getMessage());
}
});
}
}
private void getDateByTransparentFlag(EquipmentFolderLocation device) {
String IP = device.getIp();//IP
int PORT = device.getPort();//端口
int unitId = device.getUnitId();// 从站ID
int ref = device.getRegisterAddress();// 开始地址
int count = device.getRegisterNum();//数量
String type = device.getRegisterNumColumntype();// 类型
EquipmentFolderSortEntity sort = equipmentFolderSortService.lambdaQuery()
.eq(EquipmentFolderSortEntity::getSite, device.getSite())
.eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo())
.eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo())
.one();
List<Integer> values = CollectUtil.getValues(IP, PORT, unitId, ref-1, count);
if (values.size() != 2 && "float".equals(type)){
log.info("获取数据失败");
return;
}
float num = registersToFloat(values.get(0), values.get(1));
if ((num == 0 || num == 0.0) && (Objects.isNull(sort.getValue()) || "0".equalsIgnoreCase(sort.getValue()) || "0.0".equalsIgnoreCase(sort.getValue()))){
return;
}
Date createDate = new Date();
EquipmentDataDetail detail = new EquipmentDataDetail();
detail.setSite(device.getSite());
detail.setBuNo(device.getBuNo());
detail.setFileNo(device.getFileNo());
detail.setValue0(String.valueOf(num));
detail.setGroupValue(sort.getBatchNo());
detail.setCreateDate(createDate);
detail.setEquipmentNo(device.getEquipmentNo());
equipmentDataDetailService.save(detail);
if (num == 0 || num == 0.0){
sort.setBatchNo(sort.getBatchNo() + 1);
} }
equipmentFolderSortService.lambdaUpdate()
.set(EquipmentFolderSortEntity::getValue, String.valueOf(num))
.set(EquipmentFolderSortEntity::getBatchNo, sort.getBatchNo())
.eq(EquipmentFolderSortEntity::getId, sort.getId())
.update();
} }

Loading…
Cancel
Save