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