diff --git a/src/main/java/com/isu/gaswellwatch/modbus/data/ModbusDeviceTypeEnum.java b/src/main/java/com/isu/gaswellwatch/modbus/data/ModbusDeviceTypeEnum.java deleted file mode 100644 index cb98cba..0000000 --- a/src/main/java/com/isu/gaswellwatch/modbus/data/ModbusDeviceTypeEnum.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.isu.gaswellwatch.modbus.data; - -import lombok.Getter; - -import java.util.HashMap; -import java.util.Map; - -@Getter -public enum ModbusDeviceTypeEnum { - - KNPCV1("4", PersistenceHandler.KNPCV1_MODBUS_TYPE), - ETC("5", PersistenceHandler.ETC_MODBUS_TYPE), - SCSS("6", PersistenceHandler.SCSS_MODBUS_TYPE); - - private final String id; - private final String code; - - ModbusDeviceTypeEnum(String id, String code) { - this.id = id; - this.code = code; - } - - @Override - public String toString() { - return getCode(); - } - - public static String getCodeById(String id) { - return enumMap.get(id); - } - - private static final Map enumMap = new HashMap(); - - static { - for (ModbusDeviceTypeEnum type : ModbusDeviceTypeEnum.values()) { - enumMap.put(type.id, type.code); - } - } - -} diff --git a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java index c4a6f09..b5424a9 100644 --- a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java +++ b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java @@ -37,8 +37,10 @@ import java.util.stream.Collectors; public class Redis2DBPersistenceService { public static final String DEFAULT_DATA_TABLE = "t_device_data_"; - private static final String DEVICE_INFO_SQL = "SELECT d.*, dp.code as modbus_device_product_code from device d " + "join dictionary dp on dp.id = d.product where id = "; - private static final String EXISTS_TABLE_SQL = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA" + " IN ('gaswellwatch', 'gas_well_watch') AND TABLE_NAME='$TableName$'"; + private static final String DEVICE_INFO_SQL = "SELECT d.*, dp.code as modbus_device_product_code from device d " + + "join dictionary dp on dp.id = d.product where id = "; + private static final String EXISTS_TABLE_SQL = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA" + + " IN ('gaswellwatch', 'gas_well_watch') AND TABLE_NAME='$TableName$'"; @Resource private JdbcTemplate jdbcTemplate; @Resource(name = "stringRedisTemplate") @@ -53,7 +55,8 @@ public class Redis2DBPersistenceService { public void write() { Map idGatewayMappingMap = getOnlineGateway(); HashOperations operations = this.redisTemplate.opsForHash(); - try (Cursor cursor = this.redisTemplate.scan(ScanOptions.scanOptions().match(PersistenceHandler.DEVICE_DATA_CACHE + "*").build())) { + try (Cursor cursor = this.redisTemplate.scan(ScanOptions.scanOptions() + .match(PersistenceHandler.DEVICE_DATA_CACHE + "*").build())) { Long deviceId; String cacheKey, tableName; Map deviceMap; @@ -69,9 +72,11 @@ public class Redis2DBPersistenceService { continue; } if (Objects.nonNull(idGatewayMappingMap)) { - operations.put(PersistenceHandler.DEVICE_DATA_CACHE + deviceId, "online", String.valueOf(idGatewayMappingMap.containsKey(deviceId))); + operations.put(PersistenceHandler.DEVICE_DATA_CACHE + deviceId, + "online", String.valueOf(idGatewayMappingMap.containsKey(deviceId))); } - String modbusDeviceProductCode = (String) operations.get(PersistenceHandler.DEVICE_INFO_CACHE + deviceId, "modbus_device_product_code"); + String modbusDeviceProductCode = (String) operations.get( + PersistenceHandler.DEVICE_INFO_CACHE + deviceId, "modbus_device_product_code"); if (StringUtils.isEmpty(modbusDeviceProductCode)) { Map deviceInfo = this.jdbcTemplate.queryForMap(DEVICE_INFO_SQL + deviceId); if (ObjectUtils.isNotEmpty(deviceInfo)) { @@ -84,7 +89,9 @@ public class Redis2DBPersistenceService { persistenceHandler = persistenceHandlerMap.get(modbusDeviceProductCode); tableName = DEFAULT_DATA_TABLE + deviceId; existsTableList = this.jdbcTemplate.queryForList(StringUtils.replace(EXISTS_TABLE_SQL, "$TableName$", tableName)); - if (ObjectUtils.isEmpty(existsTableList) || ObjectUtils.isEmpty(existsTableList.get(0)) || StringUtils.isBlank(MapUtil.getStr(existsTableList.get(0), "TABLE_NAME"))) { + if (ObjectUtils.isEmpty(existsTableList) + || ObjectUtils.isEmpty(existsTableList.get(0)) + || StringUtils.isBlank(MapUtil.getStr(existsTableList.get(0), "TABLE_NAME"))) { persistenceHandler.createTable(tableName, deviceId); } Map rowData = persistenceHandler.insert(tableName, cacheKey); @@ -105,12 +112,16 @@ public class Redis2DBPersistenceService { private Map getOnlineGateway() { try { RequestEntity request = RequestEntity.get("http://127.0.0.1:9999/modbus-tcp/online").build(); - ResponseEntity>> response = this.restTemplate.exchange(request, new ParameterizedTypeReference>>() { - }); + ResponseEntity>> response = this.restTemplate.exchange(request, + new ParameterizedTypeReference>>() { + }); if (Objects.isNull(response) || Objects.isNull(response.getBody()) || ObjectUtils.isEmpty(response.getBody().getData())) { return null; } - List> idGatewayMappingList = this.jdbcTemplate.queryForList("select id, gateway_sn" + " from device where gateway_sn in (" + response.getBody().getData().stream().map(value -> "'" + value + "'").collect(Collectors.joining(",")) + ")"); + List> idGatewayMappingList = this.jdbcTemplate.queryForList("select id, gateway_sn" + + " from device where gateway_sn in (" + + response.getBody().getData().stream().map(value -> "'" + + value + "'").collect(Collectors.joining(",")) + ")"); if (ObjectUtils.isEmpty(idGatewayMappingList)) { return null; } diff --git a/src/main/resources/command_change.sql b/src/main/resources/command_change.sql new file mode 100644 index 0000000..ea6ef70 --- /dev/null +++ b/src/main/resources/command_change.sql @@ -0,0 +1,16 @@ +ALTER TABLE `commands` + MODIFY COLUMN `ref_type` varchar(20) NOT NULL COMMENT '引用类型,DEVICE:设备;DEVICE_PRODUCT_CODE:设备类型' AFTER `id`; + +ALTER TABLE `command_points` + DROP COLUMN `device_id`; + +update commands +set ref_type = 'DEVICE_PRODUCT_CODE', + ref_id = 4 +where ref_type = 'DEVICE' + and ref_id = 1; +update commands +set ref_type = 'DEVICE_PRODUCT_CODE', + ref_id = 6 +where ref_type = 'DEVICE' + and ref_id = 2; \ No newline at end of file