|
|
|
@ -156,10 +156,7 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService { |
|
|
|
List<EquipmentFolderLocation> list = equipmentFolderLocationService |
|
|
|
.lambdaQuery() |
|
|
|
.eq(EquipmentFolderLocation::getSuffix, "RS232/RS485") |
|
|
|
.and(wrapper -> { |
|
|
|
wrapper.isNull(EquipmentFolderLocation::getTransparentFlag) |
|
|
|
.or().eq(EquipmentFolderLocation::getTransparentFlag,"N"); |
|
|
|
}) |
|
|
|
.ne(EquipmentFolderLocation::getTransparentFlag,"Y") |
|
|
|
.list(); |
|
|
|
if (list.isEmpty()){ |
|
|
|
log.info("没有维护RS232/RS485的设备信息"); |
|
|
|
@ -171,70 +168,51 @@ public class ModbusCommunicateServiceImpl implements ModbusCommunicateService { |
|
|
|
int unitId = device.getUnitId();// 从站ID |
|
|
|
int ref = device.getRegisterAddress();// 开始地址 |
|
|
|
int count = device.getRegisterNum();//数量 |
|
|
|
// int size = device.getRegisterAddressInspection();// 记录条数所在寄存器地址 |
|
|
|
String type = device.getRegisterNumColumntype();// 类型 |
|
|
|
|
|
|
|
// EquipmentFolderSortEntity sort = equipmentFolderSortService.lambdaQuery() |
|
|
|
// .eq(EquipmentFolderSortEntity::getSite, device.getSite()) |
|
|
|
// .eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo()) |
|
|
|
// .eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo()) |
|
|
|
// .one(); |
|
|
|
// log.info("IP:{},Port:{}",IP, PORT); |
|
|
|
// Integer value = CollectUtil.getValue(IP, PORT, unitId, size-1); |
|
|
|
// if (Objects.isNull(sort) || value == null) { |
|
|
|
// continue; |
|
|
|
// }else if (Integer.valueOf(sort.getBatchNo()).equals(value)){ |
|
|
|
// continue; |
|
|
|
// }else if (value.equals(0)){ |
|
|
|
// equipmentFolderSortService.lambdaUpdate() |
|
|
|
// .eq(EquipmentFolderSortEntity::getSite, device.getSite()) |
|
|
|
// .eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo()) |
|
|
|
// .eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo()) |
|
|
|
// .set(EquipmentFolderSortEntity::getBatchNo,value) |
|
|
|
// .update(); |
|
|
|
// continue; |
|
|
|
// } |
|
|
|
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); |
|
|
|
List<EquipmentDataDetail> details = new ArrayList<>(); |
|
|
|
Date createDate = new Date(); |
|
|
|
if ("float".equals(type) && count % 2 == 0){ |
|
|
|
int value = 1; |
|
|
|
for (int i = 0; i < values.size(); i+=2) { |
|
|
|
EquipmentDataDetail detail = new EquipmentDataDetail(); |
|
|
|
detail.setSite(device.getSite()); |
|
|
|
detail.setBuNo(device.getBuNo()); |
|
|
|
detail.setFileNo(device.getFileNo()); |
|
|
|
detail.setValue0(values.get(i)+"."+values.get(i+1)); |
|
|
|
detail.setNum(value++); |
|
|
|
detail.setCreateDate(createDate); |
|
|
|
detail.setEquipmentNo(device.getEquipmentNo()); |
|
|
|
details.add(detail); |
|
|
|
} |
|
|
|
}else if ("int".equals(type)){ |
|
|
|
for (int i = 0; i < values.size(); i++) { |
|
|
|
EquipmentDataDetail detail = new EquipmentDataDetail(); |
|
|
|
detail.setSite(device.getSite()); |
|
|
|
detail.setBuNo(device.getBuNo()); |
|
|
|
detail.setFileNo(device.getFileNo()); |
|
|
|
detail.setValue0(values.get(i).toString()); |
|
|
|
detail.setNum(i+1); |
|
|
|
detail.setCreateDate(createDate); |
|
|
|
detail.setEquipmentNo(device.getEquipmentNo()); |
|
|
|
details.add(detail); |
|
|
|
} |
|
|
|
if (values.size() != 2 && "float".equals(type)){ |
|
|
|
log.info("获取数据失败"); |
|
|
|
continue; |
|
|
|
} |
|
|
|
for (EquipmentDataDetail detail : details) { |
|
|
|
equipmentDataDetailService.save(detail); |
|
|
|
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; |
|
|
|
} |
|
|
|
// equipmentFolderSortService.lambdaUpdate() |
|
|
|
// .eq(EquipmentFolderSortEntity::getSite, device.getSite()) |
|
|
|
// .eq(EquipmentFolderSortEntity::getBuNo, device.getBuNo()) |
|
|
|
// .eq(EquipmentFolderSortEntity::getFileNo, device.getFileNo()) |
|
|
|
// .set(EquipmentFolderSortEntity::getBatchNo,value) |
|
|
|
// .update(); |
|
|
|
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){ |
|
|
|
sort.setBatchNo(sort.getBatchNo() + 1); |
|
|
|
} |
|
|
|
equipmentFolderSortService.lambdaUpdate() |
|
|
|
.set(EquipmentFolderSortEntity::getValue, String.valueOf(num)) |
|
|
|
.set(EquipmentFolderSortEntity::getBatchNo, sort.getBatchNo()) |
|
|
|
.eq(EquipmentFolderSortEntity::getId, sort.getId()) |
|
|
|
.update(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static float registersToFloat(int highRegister, int lowRegister) { |
|
|
|
// 合并两个寄存器 |
|
|
|
int combined = (highRegister << 16) | (lowRegister & 0xFFFF); |
|
|
|
// 转换为浮点数 |
|
|
|
return Float.intBitsToFloat(combined); |
|
|
|
} |
|
|
|
|
|
|
|
//应为modbus 寄存器每次最大请求一百多个 这里一次连接多次分多次请求 |
|
|
|
//获取具体值(连接modbus) |
|
|
|
@Transactional |
|
|
|
|