Jelajahi Sumber

汤阴二期采集压力数据采集bug修复和一年数据采集逻辑优化

1037015548@qq.com 3 minggu lalu
induk
melakukan
de1cfecd35
16 mengubah file dengan 763 tambahan dan 673 penghapusan
  1. 70 51
      dc3-gateway/src/main/java/io/github/pnoker/gateway/bizmgr/KprTangyinWaterBizFun.java
  2. 12 0
      dc3-gateway/src/main/java/io/github/pnoker/gateway/comtool/ScheduleTaskMgr.java
  3. 113 106
      dc3-gateway/src/main/java/io/github/pnoker/gateway/config/Child2SourceConfiguration.java
  4. 113 106
      dc3-gateway/src/main/java/io/github/pnoker/gateway/config/Child3SourceConfiguration.java
  5. 10 1
      dc3-gateway/src/main/java/io/github/pnoker/gateway/config/Child4SourceConfiguration.java
  6. 114 107
      dc3-gateway/src/main/java/io/github/pnoker/gateway/config/ChildSourceConfiguration.java
  7. 116 114
      dc3-gateway/src/main/java/io/github/pnoker/gateway/config/MainSourceConfiguration.java
  8. 66 59
      dc3-gateway/src/main/java/io/github/pnoker/gateway/config/OrcaleDataSourceConfig.java
  9. 1 1
      dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/mapper/WaterYuceDao.java
  10. 1 1
      dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/mapper/WaterZILAISHUIDao.java
  11. 1 1
      dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/tangyinSource/TangyinPressDataDao.java
  12. 1 1
      dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/tangyinSource/service/impl/TangyinPressDataServiceImpl.java
  13. 2 2
      dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/zilaishuiSource/ZilaishuiRealListDao.java
  14. 6 1
      dc3-gateway/src/main/java/io/github/pnoker/gateway/utils/InfulxTyDbUtil.java
  15. 10 2
      dc3-gateway/src/main/java/io/github/pnoker/gateway/utils/TestUtil.java
  16. 127 120
      dc3-gateway/src/main/resources/application.yml

+ 70 - 51
dc3-gateway/src/main/java/io/github/pnoker/gateway/bizmgr/KprTangyinWaterBizFun.java

@@ -9,11 +9,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-import java.time.ZonedDateTime;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -33,7 +31,7 @@ public class KprTangyinWaterBizFun {
     public static TangyinPressDataService getApi(){
         return DBMgrProxy.getInstance().applyTangyinPressDataService();
     }
-    private static long formaterUTCnano(LocalDateTime localDateTime){
+    public static long formaterUTCnano(LocalDateTime localDateTime){
         // 转换为 Instant(基于 UTC 时间)
         Instant instant = localDateTime.toInstant(ZoneOffset.UTC);
 
@@ -41,6 +39,7 @@ public class KprTangyinWaterBizFun {
         long nanoTimestamp = instant.getEpochSecond() * 1_000_000_000L + instant.getNano();
         return nanoTimestamp;
     }
+
     //TODO 查询一年的数据调用selectPressCollecation
     public static void selectOneYear(){
         log.info("启动时执行一年压力数据操作");
@@ -69,15 +68,29 @@ public class KprTangyinWaterBizFun {
         final CountDownLatch latch = new CountDownLatch(timeRanges.keySet().size());
         for (LocalDateTime startTime:timeRanges.keySet()){
             new Thread(() -> {
-                long startLong = formaterUTCnano(startTime);
-                long endLong = formaterUTCnano(timeRanges.get(startTime));
-                String queryInfluxdbSql = "SELECT time,dev_id,press_cur FROM WaterMeter WHERE " +
-                        " time >= "+startLong+" and time<="+endLong+" ORDER BY time desc tz('Asia/Shanghai')";
-                log.info(startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))+"---"+
-                        timeRanges.get(startTime).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))+"进行中.....");
-                selectPressCollecation(queryInfluxdbSql);
-                log.info(startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))+"---"+
-                        timeRanges.get(startTime).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))+"已完成");
+                //TODO 查询条件必须转换为UTC 因为influxdb存储的是UTC时间,查询时候增加了TZ+8,因此得转换
+                LocalDateTime currentStartTime = startTime.atZone(ZoneId.systemDefault())
+                        .withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();//最初开始日
+                LocalDateTime currentEndTime = timeRanges.get(startTime).atZone(ZoneId.systemDefault())
+                        .withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();//最终结束日
+                while (currentStartTime.isBefore(currentEndTime)) {
+                    long startLong = formaterUTCnano(currentStartTime);
+                    LocalDateTime currentEnd = currentStartTime.minusDays(-1);
+                    // 如果计算的结束时间超过最终结束时间,则将其调整为最终结束时间
+                    if (currentEnd.isAfter(currentEndTime)) {
+                        currentEnd = currentEndTime;
+                    }
+                    long endLong = formaterUTCnano(currentEnd);
+                    String queryInfluxdbSql = "SELECT time,dev_id,press_cur FROM WaterMeter WHERE " +
+                            " time >= " + startLong + " and time<=" + endLong + " ORDER BY time desc tz('Asia/Shanghai')";
+                    log.info(currentStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "---" +
+                            currentEnd.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "进行中.....");
+                    selectPressCollecation(queryInfluxdbSql);
+                    log.info(currentStartTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "---" +
+                            currentEnd.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "已完成");
+                    // 更新开始时间为当前结束时间
+                    currentStartTime = currentEnd;
+                }
                 latch.countDown();
             }).start();
         }
@@ -95,43 +108,49 @@ public class KprTangyinWaterBizFun {
             if(infulxTyDbUtil!=null){
                 log.info("查询压力并插入到pgsql开始,SQL语句:"+queryInfluxdbSql);
                 QueryResult queryResult = infulxTyDbUtil.queryDatabase(queryInfluxdbSql);
-                List<QueryResult.Series> seriesList = queryResult.getResults().get(0).getSeries();
-                if (seriesList != null) {
-                    for (QueryResult.Series series : seriesList) {
-                        List<List<Object>> values = series.getValues();
-                        for (List<Object> value : values) {
-                            try {
-                                // 解析字段
-                                String timeString = (String) value.get(0); // 时间戳
-                                String devId = (String) value.get(1);       // 设备ID
-                                Double pressCur = (Double) value.get(2);    // 当前压力
-
-                                // 解析ISO 8601格式的日期时间
-                                ZonedDateTime zonedDateTime = ZonedDateTime.parse(timeString);
-
-                                // 转换为LocalDateTime(去除时区信息)
-                                LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
-
-                                // 定义目标格式
-                                DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
-                                // 格式化为目标格式字符串
-                                String formattedDate = localDateTime.format(targetFormatter);
-
-                                // 打印结果
-                                System.out.println("Formatted Date: " + formattedDate + ", Dev ID: " + devId + ", Press Cur: " + pressCur);
-                                //TODO 将数据插入或修改到pgsql
-                                Map<String,Object> map = new HashMap<>();
-                                map.put("collecation_time",formattedDate);
-                                map.put("dev_id",devId);
-                                map.put("press_cur",pressCur);
-                                int resultDb = getApi().insertOrUpdateTbmHourLevel(map);
-                                if(!(resultDb>0)){
-                                    log.error("function selectPressCollecation insertOrUpdate error:"+resultDb);
+                if(queryResult==null){
+                    log.info("queryResult==null:"+queryInfluxdbSql);
+                }
+                if (queryResult!=null) {
+                    List<QueryResult.Series> seriesList = queryResult.getResults().get(0).getSeries();
+                    if (seriesList != null) {
+                        for (QueryResult.Series series : seriesList) {
+                            List<List<Object>> values = series.getValues();
+                            if (values == null) {
+                                continue;
+                            }
+                            for (List<Object> value : values) {
+                                try {
+                                    // 解析字段
+                                    String timeString = (String) value.get(0); // 时间戳
+                                    String devId = (String) value.get(1);       // 设备ID
+                                    Double pressCur = (Double) value.get(2);    // 当前压力
+                                    // 解析ISO 8601格式的日期时间
+                                    ZonedDateTime zonedDateTime = ZonedDateTime.parse(timeString);
+
+                                    // 转换为LocalDateTime(去除时区信息)
+                                    LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
+
+                                    // 定义目标格式
+                                    DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+                                    // 格式化为目标格式字符串
+                                    String formattedDate = localDateTime.format(targetFormatter);
+                                    // 打印结果
+                                    //TODO 将数据插入或修改到pgsql
+                                    Map<String, Object> map = new HashMap<>();
+                                    map.put("collecation_time", formattedDate);
+                                    map.put("dev_id", devId);
+                                    map.put("press_cur", pressCur);
+                                    System.out.println(getApi());
+                                    int resultDb = getApi().insertOrUpdateTbmHourLevel(map);
+                                    if (!(resultDb > 0)) {
+                                        log.error("function selectPressCollecation insertOrUpdate error:" + resultDb);
+                                    }
+                                } catch (Exception ex) {
+                                    ex.printStackTrace();
+                                    log.error("function selectPressCollecation forEach error:" + ex.getMessage());
                                 }
-                            } catch (Exception ex) {
-                                ex.printStackTrace();
-                                log.error("function selectPressCollecation forEach error:"+ex.getLocalizedMessage());
                             }
                         }
                     }
@@ -139,7 +158,7 @@ public class KprTangyinWaterBizFun {
                 log.info("function selectPressCollecation success:"+queryInfluxdbSql);
             }
         }catch (Exception ex){
-            log.error("function selectPressCollecation error:"+ex.getLocalizedMessage());
+            log.error("function selectPressCollecation error:"+ex.getMessage());
         }
     }
 }

+ 12 - 0
dc3-gateway/src/main/java/io/github/pnoker/gateway/comtool/ScheduleTaskMgr.java

@@ -23,6 +23,7 @@ import java.sql.Time;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.Timer;
@@ -537,4 +538,15 @@ public class ScheduleTaskMgr {
             }
         },7000);
     }
+    //TODO 任务逻辑 每五分钟往前同步一个小时数据,取LocalDateTime的UTC时间
+    @Scheduled(cron = "0 */5 * * * ?")
+    public void performTask() {
+        LocalDateTime startTime = LocalDateTime.now().minusHours(1).atZone(ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();
+        long startLong = KprTangyinWaterBizFun.formaterUTCnano(startTime);
+        long endLong = KprTangyinWaterBizFun.formaterUTCnano(startTime.minusHours(-1));
+        String queryInfluxdbSql = "SELECT time,dev_id,press_cur FROM WaterMeter WHERE " +
+                " time >= " + startLong + " and time<=" + endLong + " ORDER BY time desc tz('Asia/Shanghai')";
+        KprTangyinWaterBizFun.selectPressCollecation(queryInfluxdbSql);
+    }
+
 }

+ 113 - 106
dc3-gateway/src/main/java/io/github/pnoker/gateway/config/Child2SourceConfiguration.java

@@ -1,106 +1,113 @@
-package io.github.pnoker.gateway.config;
-
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-
-import javax.annotation.PostConstruct;
-import javax.sql.DataSource;
-
-@Configuration
-@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "child2SqlSessionTemplate")
-public class Child2SourceConfiguration {
-    @Value("${spring.datasource.child2pg.driver-class-name:}")
-    private String driveClass = "org.postgresql.Driver";
-
-    @Value("${spring.datasource.child2pg.jdbc-url:}")
-    private String url = "";
-
-    @Value("${spring.datasource.child2pg.username:}")
-    private String username = "";
-
-    @Value("${spring.datasource.child2pg.password:}")
-    private String password = "";
-
-    @Value("${spring.datasource.data.maximum-pool-size:200}")
-    private Integer maxPoolSize;
-
-    @Value("${spring.datasource.data.minimum-idle:1}")
-    private Integer minIdle;
-
-    @Value("${spring.datasource.data.connection-test-query:}")
-    private String connectionTestQuery;
-
-    @Value("${spring.datasource.data.max-lifetime:120000}")
-    private Long maxLifetime;
-
-    @Value("${spring.datasource.data.idle-timeout:30000}")
-    private Long idleTimeout;
-
-    @Value("${spring.datasource.data.connection-timeout:30000}")
-    private Long connectionTimeout;
-
-    @Value("${spring.datasource.data.validation-timeout:30000}")
-    private Long validTimeout;
-
-    @Bean(name = "child2Datasource")
-    //@ConfigurationProperties(prefix = "spring.datasource.data")
-    public DataSource mainDataSource() {
-        return new HikariDataSource(getConfig());
-        //return DataSourceBuilder.create().build();
-        //Spring Boot 2.x默认使用HikariCP
-    }
-
-    private HikariConfig getConfig() {
-        HikariConfig hikariConfig = new HikariConfig();
-        hikariConfig.setDriverClassName(driveClass);
-        hikariConfig.setJdbcUrl(url);
-        hikariConfig.setUsername(username);
-        hikariConfig.setPassword(password);
-
-        hikariConfig.setMaximumPoolSize(maxPoolSize);
-        hikariConfig.setMinimumIdle(minIdle);
-        hikariConfig.setConnectionTestQuery(connectionTestQuery);
-        hikariConfig.setMaxLifetime(maxLifetime);
-        hikariConfig.setIdleTimeout(idleTimeout);
-        hikariConfig.setConnectionTimeout(connectionTimeout);
-        hikariConfig.setValidationTimeout(validTimeout);
-        return hikariConfig;
-    }
-
-    @Bean("child2SqlSessionFactory")
-    public SqlSessionFactory child2SqlSessionFactoryBean(@Qualifier("child2Datasource") DataSource dataSource) throws Exception {
-        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
-        sessionFactoryBean.setDataSource(dataSource);
-
-        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
-        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
-        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
-        configuration.setCacheEnabled(false);
-        sessionFactoryBean.setConfiguration(configuration);
-        return sessionFactoryBean.getObject();
-    }
-
-    @Bean("child2SqlSessionTemplate")
-    public SqlSessionTemplate child2SqlSessionTemplate(@Qualifier("child2SqlSessionFactory") SqlSessionFactory sessionFactory) {
-        return new SqlSessionTemplate(sessionFactory);
-    }
-
-    @Bean(name = "child2DbTransactionManager")
-    public DataSourceTransactionManager child2DbTransactionManager(@Qualifier("child2Datasource") DataSource dataSource){
-        return new DataSourceTransactionManager(dataSource);
-    }
-
-    @PostConstruct
-    public void init(){
-        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
-    }
-}
+//package io.github.pnoker.gateway.config;
+//
+//import com.zaxxer.hikari.HikariConfig;
+//import com.zaxxer.hikari.HikariDataSource;
+//import org.apache.ibatis.session.SqlSessionFactory;
+//import org.mybatis.spring.SqlSessionFactoryBean;
+//import org.mybatis.spring.SqlSessionTemplate;
+//import org.mybatis.spring.annotation.MapperScan;
+//import org.springframework.beans.factory.annotation.Qualifier;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+//
+//import javax.annotation.PostConstruct;
+//import javax.sql.DataSource;
+//
+//@Configuration
+//@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "child2SqlSessionTemplate")
+//public class Child2SourceConfiguration {
+//    @Value("${spring.datasource.child2pg.driver-class-name:}")
+//    private String driveClass = "org.postgresql.Driver";
+//
+//    @Value("${spring.datasource.child2pg.jdbc-url:}")
+//    private String url = "";
+//
+//    @Value("${spring.datasource.child2pg.username:}")
+//    private String username = "";
+//
+//    @Value("${spring.datasource.child2pg.password:}")
+//    private String password = "";
+//
+//    @Value("${spring.datasource.data.maximum-pool-size:200}")
+//    private Integer maxPoolSize;
+//
+//    @Value("${spring.datasource.data.minimum-idle:1}")
+//    private Integer minIdle;
+//
+//    @Value("${spring.datasource.data.connection-test-query:}")
+//    private String connectionTestQuery;
+//
+//    @Value("${spring.datasource.data.max-lifetime:120000}")
+//    private Long maxLifetime;
+//
+//    @Value("${spring.datasource.data.idle-timeout:30000}")
+//    private Long idleTimeout;
+//
+//    @Value("${spring.datasource.data.connection-timeout:30000}")
+//    private Long connectionTimeout;
+//
+//    @Value("${spring.datasource.data.validation-timeout:30000}")
+//    private Long validTimeout;
+//
+//    @Bean(name = "child2Datasource")
+//    @ConditionalOnProperty(name = "datasource.child2pg.enabled", havingValue = "true")
+//    //@ConfigurationProperties(prefix = "spring.datasource.data")
+//    public DataSource mainDataSource() {
+//        return new HikariDataSource(getConfig());
+//        //return DataSourceBuilder.create().build();
+//        //Spring Boot 2.x默认使用HikariCP
+//    }
+//
+//    private HikariConfig getConfig() {
+//        HikariConfig hikariConfig = new HikariConfig();
+//        hikariConfig.setDriverClassName(driveClass);
+//        hikariConfig.setJdbcUrl(url);
+//        hikariConfig.setUsername(username);
+//        hikariConfig.setPassword(password);
+//
+//        hikariConfig.setMaximumPoolSize(maxPoolSize);
+//        hikariConfig.setMinimumIdle(minIdle);
+//        hikariConfig.setConnectionTestQuery(connectionTestQuery);
+//        hikariConfig.setMaxLifetime(maxLifetime);
+//        hikariConfig.setIdleTimeout(idleTimeout);
+//        hikariConfig.setConnectionTimeout(connectionTimeout);
+//        hikariConfig.setValidationTimeout(validTimeout);
+//        return hikariConfig;
+//    }
+//
+//    @Bean("child2SqlSessionFactory")
+//    public SqlSessionFactory child2SqlSessionFactoryBean(@Qualifier("child2Datasource") DataSource dataSource) throws Exception {
+//        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+//        sessionFactoryBean.setDataSource(dataSource);
+//
+//        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+//        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
+//        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
+//        configuration.setCacheEnabled(false);
+//        sessionFactoryBean.setConfiguration(configuration);
+//        return sessionFactoryBean.getObject();
+//    }
+//
+//    @Bean("child2SqlSessionTemplate")
+//    public SqlSessionTemplate child2SqlSessionTemplate(@Qualifier("child2SqlSessionFactory") SqlSessionFactory sessionFactory) {
+//        return new SqlSessionTemplate(sessionFactory);
+//    }
+//
+//    @Bean(name = "child2DbTransactionManager")
+//    public DataSourceTransactionManager child2DbTransactionManager(@Qualifier("child2Datasource") DataSource dataSource){
+//        return new DataSourceTransactionManager(dataSource);
+//    }
+//
+//    @PostConstruct
+//    public void init(){
+//        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
+//    }
+//    @Bean
+//    public DBMgrProxy startDBMgrProxy(){
+//        DBMgrProxy.getInstance().init();
+//        return DBMgrProxy.getInstance();
+//    }
+//}

+ 113 - 106
dc3-gateway/src/main/java/io/github/pnoker/gateway/config/Child3SourceConfiguration.java

@@ -1,106 +1,113 @@
-package io.github.pnoker.gateway.config;
-
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-
-import javax.annotation.PostConstruct;
-import javax.sql.DataSource;
-
-@Configuration
-@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "child3SqlSessionTemplate")
-public class Child3SourceConfiguration {
-    @Value("${spring.datasource.child3pg.driver-class-name:}")
-    private String driveClass = "org.postgresql.Driver";
-
-    @Value("${spring.datasource.child3pg.jdbc-url:}")
-    private String url = "";
-
-    @Value("${spring.datasource.child3pg.username:}")
-    private String username = "";
-
-    @Value("${spring.datasource.child3pg.password:}")
-    private String password = "";
-
-    @Value("${spring.datasource.data.maximum-pool-size:200}")
-    private Integer maxPoolSize;
-
-    @Value("${spring.datasource.data.minimum-idle:1}")
-    private Integer minIdle;
-
-    @Value("${spring.datasource.data.connection-test-query:}")
-    private String connectionTestQuery;
-
-    @Value("${spring.datasource.data.max-lifetime:120000}")
-    private Long maxLifetime;
-
-    @Value("${spring.datasource.data.idle-timeout:30000}")
-    private Long idleTimeout;
-
-    @Value("${spring.datasource.data.connection-timeout:30000}")
-    private Long connectionTimeout;
-
-    @Value("${spring.datasource.data.validation-timeout:30000}")
-    private Long validTimeout;
-
-    @Bean(name = "child3Datasource")
-    //@ConfigurationProperties(prefix = "spring.datasource.data")
-    public DataSource mainDataSource() {
-        return new HikariDataSource(getConfig());
-        //return DataSourceBuilder.create().build();
-        //Spring Boot 2.x默认使用HikariCP
-    }
-
-    private HikariConfig getConfig() {
-        HikariConfig hikariConfig = new HikariConfig();
-        hikariConfig.setDriverClassName(driveClass);
-        hikariConfig.setJdbcUrl(url);
-        hikariConfig.setUsername(username);
-        hikariConfig.setPassword(password);
-
-        hikariConfig.setMaximumPoolSize(maxPoolSize);
-        hikariConfig.setMinimumIdle(minIdle);
-        hikariConfig.setConnectionTestQuery(connectionTestQuery);
-        hikariConfig.setMaxLifetime(maxLifetime);
-        hikariConfig.setIdleTimeout(idleTimeout);
-        hikariConfig.setConnectionTimeout(connectionTimeout);
-        hikariConfig.setValidationTimeout(validTimeout);
-        return hikariConfig;
-    }
-
-    @Bean("child3SqlSessionFactory")
-    public SqlSessionFactory child3SqlSessionFactoryBean(@Qualifier("child3Datasource") DataSource dataSource) throws Exception {
-        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
-        sessionFactoryBean.setDataSource(dataSource);
-
-        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
-        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
-        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
-        configuration.setCacheEnabled(false);
-        sessionFactoryBean.setConfiguration(configuration);
-        return sessionFactoryBean.getObject();
-    }
-
-    @Bean("child3SqlSessionTemplate")
-    public SqlSessionTemplate child3SqlSessionTemplate(@Qualifier("child3SqlSessionFactory") SqlSessionFactory sessionFactory) {
-        return new SqlSessionTemplate(sessionFactory);
-    }
-
-    @Bean(name = "child3DbTransactionManager")
-    public DataSourceTransactionManager child3DbTransactionManager(@Qualifier("child3Datasource") DataSource dataSource){
-        return new DataSourceTransactionManager(dataSource);
-    }
-
-    @PostConstruct
-    public void init(){
-        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
-    }
-}
+//package io.github.pnoker.gateway.config;
+//
+//import com.zaxxer.hikari.HikariConfig;
+//import com.zaxxer.hikari.HikariDataSource;
+//import org.apache.ibatis.session.SqlSessionFactory;
+//import org.mybatis.spring.SqlSessionFactoryBean;
+//import org.mybatis.spring.SqlSessionTemplate;
+//import org.mybatis.spring.annotation.MapperScan;
+//import org.springframework.beans.factory.annotation.Qualifier;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+//
+//import javax.annotation.PostConstruct;
+//import javax.sql.DataSource;
+//
+//@Configuration
+//@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "child3SqlSessionTemplate")
+//public class Child3SourceConfiguration {
+//    @Value("${spring.datasource.child3pg.driver-class-name:}")
+//    private String driveClass = "org.postgresql.Driver";
+//
+//    @Value("${spring.datasource.child3pg.jdbc-url:}")
+//    private String url = "";
+//
+//    @Value("${spring.datasource.child3pg.username:}")
+//    private String username = "";
+//
+//    @Value("${spring.datasource.child3pg.password:}")
+//    private String password = "";
+//
+//    @Value("${spring.datasource.data.maximum-pool-size:200}")
+//    private Integer maxPoolSize;
+//
+//    @Value("${spring.datasource.data.minimum-idle:1}")
+//    private Integer minIdle;
+//
+//    @Value("${spring.datasource.data.connection-test-query:}")
+//    private String connectionTestQuery;
+//
+//    @Value("${spring.datasource.data.max-lifetime:120000}")
+//    private Long maxLifetime;
+//
+//    @Value("${spring.datasource.data.idle-timeout:30000}")
+//    private Long idleTimeout;
+//
+//    @Value("${spring.datasource.data.connection-timeout:30000}")
+//    private Long connectionTimeout;
+//
+//    @Value("${spring.datasource.data.validation-timeout:30000}")
+//    private Long validTimeout;
+//
+//    @Bean(name = "child3Datasource")
+//    @ConditionalOnProperty(name = "datasource.child3pg.enabled", havingValue = "true")
+//    //@ConfigurationProperties(prefix = "spring.datasource.data")
+//    public DataSource mainDataSource() {
+//        return new HikariDataSource(getConfig());
+//        //return DataSourceBuilder.create().build();
+//        //Spring Boot 2.x默认使用HikariCP
+//    }
+//
+//    private HikariConfig getConfig() {
+//        HikariConfig hikariConfig = new HikariConfig();
+//        hikariConfig.setDriverClassName(driveClass);
+//        hikariConfig.setJdbcUrl(url);
+//        hikariConfig.setUsername(username);
+//        hikariConfig.setPassword(password);
+//
+//        hikariConfig.setMaximumPoolSize(maxPoolSize);
+//        hikariConfig.setMinimumIdle(minIdle);
+//        hikariConfig.setConnectionTestQuery(connectionTestQuery);
+//        hikariConfig.setMaxLifetime(maxLifetime);
+//        hikariConfig.setIdleTimeout(idleTimeout);
+//        hikariConfig.setConnectionTimeout(connectionTimeout);
+//        hikariConfig.setValidationTimeout(validTimeout);
+//        return hikariConfig;
+//    }
+//
+//    @Bean("child3SqlSessionFactory")
+//    public SqlSessionFactory child3SqlSessionFactoryBean(@Qualifier("child3Datasource") DataSource dataSource) throws Exception {
+//        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+//        sessionFactoryBean.setDataSource(dataSource);
+//
+//        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+//        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
+//        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
+//        configuration.setCacheEnabled(false);
+//        sessionFactoryBean.setConfiguration(configuration);
+//        return sessionFactoryBean.getObject();
+//    }
+//
+//    @Bean("child3SqlSessionTemplate")
+//    public SqlSessionTemplate child3SqlSessionTemplate(@Qualifier("child3SqlSessionFactory") SqlSessionFactory sessionFactory) {
+//        return new SqlSessionTemplate(sessionFactory);
+//    }
+//
+//    @Bean(name = "child3DbTransactionManager")
+//    public DataSourceTransactionManager child3DbTransactionManager(@Qualifier("child3Datasource") DataSource dataSource){
+//        return new DataSourceTransactionManager(dataSource);
+//    }
+//
+//    @PostConstruct
+//    public void init(){
+//        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
+//    }
+//    @Bean
+//    public DBMgrProxy startDBMgrProxy(){
+//        DBMgrProxy.getInstance().init();
+//        return DBMgrProxy.getInstance();
+//    }
+//}

+ 10 - 1
dc3-gateway/src/main/java/io/github/pnoker/gateway/config/Child4SourceConfiguration.java

@@ -2,12 +2,14 @@ package io.github.pnoker.gateway.config;
 
 import com.zaxxer.hikari.HikariConfig;
 import com.zaxxer.hikari.HikariDataSource;
+import io.github.pnoker.gateway.dbdao.DBMgrProxy;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.mybatis.spring.SqlSessionFactoryBean;
 import org.mybatis.spring.SqlSessionTemplate;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@@ -16,7 +18,8 @@ import javax.annotation.PostConstruct;
 import javax.sql.DataSource;
 
 @Configuration
-@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "child4SqlSessionTemplate")
+@MapperScan(basePackages = {"io.github.pnoker.gateway.dbdao.mapper",
+        "io.github.pnoker.gateway.dbdao.tangyinSource.mapper"}, sqlSessionTemplateRef = "child4SqlSessionTemplate")
 public class Child4SourceConfiguration {
     @Value("${spring.datasource.child4pg.driver-class-name:}")
     private String driveClass = "org.postgresql.Driver";
@@ -103,4 +106,10 @@ public class Child4SourceConfiguration {
     public void init(){
         GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
     }
+
+    @Bean
+    public DBMgrProxy startDBMgrProxy(){
+        DBMgrProxy.getInstance().init();
+        return DBMgrProxy.getInstance();
+    }
 }

+ 114 - 107
dc3-gateway/src/main/java/io/github/pnoker/gateway/config/ChildSourceConfiguration.java

@@ -1,107 +1,114 @@
-package io.github.pnoker.gateway.config;
-
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-import io.github.pnoker.gateway.dbdao.DBMgrProxy;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-
-import javax.annotation.PostConstruct;
-import javax.sql.DataSource;
-
-@Configuration
-@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "childSqlSessionTemplate")
-public class ChildSourceConfiguration {
-    @Value("${spring.datasource.childpg.driver-class-name:}")
-    private String driveClass = "org.postgresql.Driver";
-
-    @Value("${spring.datasource.childpg.jdbc-url:}")
-    private String url = "";
-
-    @Value("${spring.datasource.childpg.username:}")
-    private String username = "";
-
-    @Value("${spring.datasource.childpg.password:}")
-    private String password = "";
-
-    @Value("${spring.datasource.data.maximum-pool-size:200}")
-    private Integer maxPoolSize;
-
-    @Value("${spring.datasource.data.minimum-idle:1}")
-    private Integer minIdle;
-
-    @Value("${spring.datasource.data.connection-test-query:}")
-    private String connectionTestQuery;
-
-    @Value("${spring.datasource.data.max-lifetime:120000}")
-    private Long maxLifetime;
-
-    @Value("${spring.datasource.data.idle-timeout:30000}")
-    private Long idleTimeout;
-
-    @Value("${spring.datasource.data.connection-timeout:30000}")
-    private Long connectionTimeout;
-
-    @Value("${spring.datasource.data.validation-timeout:30000}")
-    private Long validTimeout;
-
-    @Bean(name = "childDatasource")
-    //@ConfigurationProperties(prefix = "spring.datasource.data")
-    public DataSource mainDataSource() {
-        return new HikariDataSource(getConfig());
-        //return DataSourceBuilder.create().build();
-        //Spring Boot 2.x默认使用HikariCP
-    }
-
-    private HikariConfig getConfig() {
-        HikariConfig hikariConfig = new HikariConfig();
-        hikariConfig.setDriverClassName(driveClass);
-        hikariConfig.setJdbcUrl(url);
-        hikariConfig.setUsername(username);
-        hikariConfig.setPassword(password);
-
-        hikariConfig.setMaximumPoolSize(maxPoolSize);
-        hikariConfig.setMinimumIdle(minIdle);
-        hikariConfig.setConnectionTestQuery(connectionTestQuery);
-        hikariConfig.setMaxLifetime(maxLifetime);
-        hikariConfig.setIdleTimeout(idleTimeout);
-        hikariConfig.setConnectionTimeout(connectionTimeout);
-        hikariConfig.setValidationTimeout(validTimeout);
-        return hikariConfig;
-    }
-
-    @Bean("childSqlSessionFactory")
-    public SqlSessionFactory childSqlSessionFactoryBean(@Qualifier("mainDatasource") DataSource dataSource) throws Exception {
-        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
-        sessionFactoryBean.setDataSource(dataSource);
-
-        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
-        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
-        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
-        configuration.setCacheEnabled(false);
-        sessionFactoryBean.setConfiguration(configuration);
-        return sessionFactoryBean.getObject();
-    }
-
-    @Bean("childSqlSessionTemplate")
-    public SqlSessionTemplate childSqlSessionTemplate(@Qualifier("childSqlSessionFactory") SqlSessionFactory sessionFactory) {
-        return new SqlSessionTemplate(sessionFactory);
-    }
-
-    @Bean(name = "childDbTransactionManager")
-    public DataSourceTransactionManager childDbTransactionManager(@Qualifier("childDatasource") DataSource dataSource){
-        return new DataSourceTransactionManager(dataSource);
-    }
-
-    @PostConstruct
-    public void init(){
-        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
-    }
-}
+//package io.github.pnoker.gateway.config;
+//
+//import com.zaxxer.hikari.HikariConfig;
+//import com.zaxxer.hikari.HikariDataSource;
+//import io.github.pnoker.gateway.dbdao.DBMgrProxy;
+//import org.apache.ibatis.session.SqlSessionFactory;
+//import org.mybatis.spring.SqlSessionFactoryBean;
+//import org.mybatis.spring.SqlSessionTemplate;
+//import org.mybatis.spring.annotation.MapperScan;
+//import org.springframework.beans.factory.annotation.Qualifier;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+//
+//import javax.annotation.PostConstruct;
+//import javax.sql.DataSource;
+//
+//@Configuration
+//@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "childSqlSessionTemplate")
+//public class ChildSourceConfiguration {
+//    @Value("${spring.datasource.childpg.driver-class-name:}")
+//    private String driveClass = "org.postgresql.Driver";
+//
+//    @Value("${spring.datasource.childpg.jdbc-url:}")
+//    private String url = "";
+//
+//    @Value("${spring.datasource.childpg.username:}")
+//    private String username = "";
+//
+//    @Value("${spring.datasource.childpg.password:}")
+//    private String password = "";
+//
+//    @Value("${spring.datasource.data.maximum-pool-size:200}")
+//    private Integer maxPoolSize;
+//
+//    @Value("${spring.datasource.data.minimum-idle:1}")
+//    private Integer minIdle;
+//
+//    @Value("${spring.datasource.data.connection-test-query:}")
+//    private String connectionTestQuery;
+//
+//    @Value("${spring.datasource.data.max-lifetime:120000}")
+//    private Long maxLifetime;
+//
+//    @Value("${spring.datasource.data.idle-timeout:30000}")
+//    private Long idleTimeout;
+//
+//    @Value("${spring.datasource.data.connection-timeout:30000}")
+//    private Long connectionTimeout;
+//
+//    @Value("${spring.datasource.data.validation-timeout:30000}")
+//    private Long validTimeout;
+//
+//    @Bean(name = "childDatasource")
+//    @ConditionalOnProperty(name = "datasource.childpg.enabled", havingValue = "true")
+//    //@ConfigurationProperties(prefix = "spring.datasource.data")
+//    public DataSource mainDataSource() {
+//        return new HikariDataSource(getConfig());
+//        //return DataSourceBuilder.create().build();
+//        //Spring Boot 2.x默认使用HikariCP
+//    }
+//
+//    private HikariConfig getConfig() {
+//        HikariConfig hikariConfig = new HikariConfig();
+//        hikariConfig.setDriverClassName(driveClass);
+//        hikariConfig.setJdbcUrl(url);
+//        hikariConfig.setUsername(username);
+//        hikariConfig.setPassword(password);
+//
+//        hikariConfig.setMaximumPoolSize(maxPoolSize);
+//        hikariConfig.setMinimumIdle(minIdle);
+//        hikariConfig.setConnectionTestQuery(connectionTestQuery);
+//        hikariConfig.setMaxLifetime(maxLifetime);
+//        hikariConfig.setIdleTimeout(idleTimeout);
+//        hikariConfig.setConnectionTimeout(connectionTimeout);
+//        hikariConfig.setValidationTimeout(validTimeout);
+//        return hikariConfig;
+//    }
+//
+//    @Bean("childSqlSessionFactory")
+//    public SqlSessionFactory childSqlSessionFactoryBean(@Qualifier("mainDatasource") DataSource dataSource) throws Exception {
+//        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+//        sessionFactoryBean.setDataSource(dataSource);
+//
+//        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+//        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
+//        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
+//        configuration.setCacheEnabled(false);
+//        sessionFactoryBean.setConfiguration(configuration);
+//        return sessionFactoryBean.getObject();
+//    }
+//
+//    @Bean("childSqlSessionTemplate")
+//    public SqlSessionTemplate childSqlSessionTemplate(@Qualifier("childSqlSessionFactory") SqlSessionFactory sessionFactory) {
+//        return new SqlSessionTemplate(sessionFactory);
+//    }
+//
+//    @Bean(name = "childDbTransactionManager")
+//    public DataSourceTransactionManager childDbTransactionManager(@Qualifier("childDatasource") DataSource dataSource){
+//        return new DataSourceTransactionManager(dataSource);
+//    }
+//
+//    @PostConstruct
+//    public void init(){
+//        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
+//    }
+//    @Bean
+//    public DBMgrProxy startDBMgrProxy(){
+//        DBMgrProxy.getInstance().init();
+//        return DBMgrProxy.getInstance();
+//    }
+//}

+ 116 - 114
dc3-gateway/src/main/java/io/github/pnoker/gateway/config/MainSourceConfiguration.java

@@ -1,114 +1,116 @@
-package io.github.pnoker.gateway.config;
-
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-import io.github.pnoker.gateway.dbdao.DBMgrProxy;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-
-import javax.annotation.PostConstruct;
-import javax.sql.DataSource;
-
-@Configuration
-@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "mainSqlSessionTemplate")
-public class MainSourceConfiguration {
-    @Value("${spring.datasource.driver-class-name:}")
-    private String driveClass = "org.postgresql.Driver";
-
-    @Value("${spring.datasource.jdbc-url:}")
-    private String url = "";
-
-    @Value("${spring.datasource.username:}")
-    private String username = "";
-
-    @Value("${spring.datasource.password:}")
-    private String password = "";
-
-    @Value("${spring.datasource.data.maximum-pool-size:200}")
-    private Integer maxPoolSize;
-
-    @Value("${spring.datasource.data.minimum-idle:1}")
-    private Integer minIdle;
-
-    @Value("${spring.datasource.data.connection-test-query:}")
-    private String connectionTestQuery;
-
-    @Value("${spring.datasource.data.max-lifetime:120000}")
-    private Long maxLifetime;
-
-    @Value("${spring.datasource.data.idle-timeout:30000}")
-    private Long idleTimeout;
-
-    @Value("${spring.datasource.data.connection-timeout:30000}")
-    private Long connectionTimeout;
-
-    @Value("${spring.datasource.data.validation-timeout:30000}")
-    private Long validTimeout;
-
-    @Bean(name = "mainDatasource")
-    //@ConfigurationProperties(prefix = "spring.datasource.data")
-    public DataSource mainDataSource() {
-        return new HikariDataSource(getConfig());
-        //return DataSourceBuilder.create().build();
-        //Spring Boot 2.x默认使用HikariCP
-    }
-
-    private HikariConfig getConfig() {
-        HikariConfig hikariConfig = new HikariConfig();
-        hikariConfig.setDriverClassName(driveClass);
-        hikariConfig.setJdbcUrl(url);
-        hikariConfig.setUsername(username);
-        hikariConfig.setPassword(password);
-
-        hikariConfig.setMaximumPoolSize(maxPoolSize);
-        hikariConfig.setMinimumIdle(minIdle);
-        hikariConfig.setConnectionTestQuery(connectionTestQuery);
-        hikariConfig.setMaxLifetime(maxLifetime);
-        hikariConfig.setIdleTimeout(idleTimeout);
-        hikariConfig.setConnectionTimeout(connectionTimeout);
-        hikariConfig.setValidationTimeout(validTimeout);
-        return hikariConfig;
-    }
-
-    @Bean("mainSqlSessionFactory")
-    public SqlSessionFactory mainSqlSessionFactoryBean(@Qualifier("mainDatasource") DataSource dataSource) throws Exception {
-        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
-        sessionFactoryBean.setDataSource(dataSource);
-
-        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
-        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
-        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
-        configuration.setCacheEnabled(false);
-        sessionFactoryBean.setConfiguration(configuration);
-        return sessionFactoryBean.getObject();
-    }
-
-    @Bean("mainSqlSessionTemplate")
-    public SqlSessionTemplate mainSqlSessionTemplate(@Qualifier("mainSqlSessionFactory") SqlSessionFactory sessionFactory) {
-        return new SqlSessionTemplate(sessionFactory);
-    }
-
-    @Bean(name = "mainDbTransactionManager")
-    public DataSourceTransactionManager mainDbTransactionManager(@Qualifier("mainDatasource") DataSource dataSource){
-        return new DataSourceTransactionManager(dataSource);
-    }
-
-    @PostConstruct
-    public void init(){
-        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
-    }
-
-    @Bean
-    public DBMgrProxy startDBMgrProxy(){
-        DBMgrProxy.getInstance().init();
-        return DBMgrProxy.getInstance();
-    }
-}
+//package io.github.pnoker.gateway.config;
+//
+//import com.zaxxer.hikari.HikariConfig;
+//import com.zaxxer.hikari.HikariDataSource;
+//import io.github.pnoker.gateway.dbdao.DBMgrProxy;
+//import org.apache.ibatis.session.SqlSessionFactory;
+//import org.mybatis.spring.SqlSessionFactoryBean;
+//import org.mybatis.spring.SqlSessionTemplate;
+//import org.mybatis.spring.annotation.MapperScan;
+//import org.springframework.beans.factory.annotation.Qualifier;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.context.annotation.PropertySource;
+//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+//
+//import javax.annotation.PostConstruct;
+//import javax.sql.DataSource;
+//
+//@Configuration
+//@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "mainSqlSessionTemplate")
+//public class MainSourceConfiguration {
+//    @Value("${spring.datasource.driver-class-name:}")
+//    private String driveClass = "org.postgresql.Driver";
+//
+//    @Value("${spring.datasource.jdbc-url:}")
+//    private String url = "";
+//
+//    @Value("${spring.datasource.username:}")
+//    private String username = "";
+//
+//    @Value("${spring.datasource.password:}")
+//    private String password = "";
+//
+//    @Value("${spring.datasource.data.maximum-pool-size:200}")
+//    private Integer maxPoolSize;
+//
+//    @Value("${spring.datasource.data.minimum-idle:1}")
+//    private Integer minIdle;
+//
+//    @Value("${spring.datasource.data.connection-test-query:}")
+//    private String connectionTestQuery;
+//
+//    @Value("${spring.datasource.data.max-lifetime:120000}")
+//    private Long maxLifetime;
+//
+//    @Value("${spring.datasource.data.idle-timeout:30000}")
+//    private Long idleTimeout;
+//
+//    @Value("${spring.datasource.data.connection-timeout:30000}")
+//    private Long connectionTimeout;
+//
+//    @Value("${spring.datasource.data.validation-timeout:30000}")
+//    private Long validTimeout;
+//
+//    @Bean(name = "mainDatasource")
+//    //@ConfigurationProperties(prefix = "spring.datasource.data")
+//    @ConditionalOnProperty(name = "datasource.enabled", havingValue = "true")
+//    public DataSource mainDataSource() {
+//        return new HikariDataSource(getConfig());
+//        //return DataSourceBuilder.create().build();
+//        //Spring Boot 2.x默认使用HikariCP
+//    }
+//
+//    private HikariConfig getConfig() {
+//        HikariConfig hikariConfig = new HikariConfig();
+//        hikariConfig.setDriverClassName(driveClass);
+//        hikariConfig.setJdbcUrl(url);
+//        hikariConfig.setUsername(username);
+//        hikariConfig.setPassword(password);
+//
+//        hikariConfig.setMaximumPoolSize(maxPoolSize);
+//        hikariConfig.setMinimumIdle(minIdle);
+//        hikariConfig.setConnectionTestQuery(connectionTestQuery);
+//        hikariConfig.setMaxLifetime(maxLifetime);
+//        hikariConfig.setIdleTimeout(idleTimeout);
+//        hikariConfig.setConnectionTimeout(connectionTimeout);
+//        hikariConfig.setValidationTimeout(validTimeout);
+//        return hikariConfig;
+//    }
+//
+//    @Bean("mainSqlSessionFactory")
+//    public SqlSessionFactory mainSqlSessionFactoryBean(@Qualifier("mainDatasource") DataSource dataSource) throws Exception {
+//        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+//        sessionFactoryBean.setDataSource(dataSource);
+//
+//        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+//        configuration.setCallSettersOnNulls(true);       //数据库中字段值为null时也要求返回
+//        configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
+//        configuration.setCacheEnabled(false);
+//        sessionFactoryBean.setConfiguration(configuration);
+//        return sessionFactoryBean.getObject();
+//    }
+//
+//    @Bean("mainSqlSessionTemplate")
+//    public SqlSessionTemplate mainSqlSessionTemplate(@Qualifier("mainSqlSessionFactory") SqlSessionFactory sessionFactory) {
+//        return new SqlSessionTemplate(sessionFactory);
+//    }
+//
+//    @Bean(name = "mainDbTransactionManager")
+//    public DataSourceTransactionManager mainDbTransactionManager(@Qualifier("mainDatasource") DataSource dataSource){
+//        return new DataSourceTransactionManager(dataSource);
+//    }
+//
+//    @PostConstruct
+//    public void init(){
+//        GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
+//    }
+//
+//    @Bean
+//    public DBMgrProxy startDBMgrProxy(){
+//        DBMgrProxy.getInstance().init();
+//        return DBMgrProxy.getInstance();
+//    }
+//}

+ 66 - 59
dc3-gateway/src/main/java/io/github/pnoker/gateway/config/OrcaleDataSourceConfig.java

@@ -1,59 +1,66 @@
-package io.github.pnoker.gateway.config;
-
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
-
-/**
- * @ClassName OrcaleDataSourceConfig
- * @Description: TODO
- * @Author LX
- * @Date 2024/5/21
- * @Version V1.0
- **/
-@Configuration
-public class OrcaleDataSourceConfig {
-    @Bean(name = "primaryDataSource")
-    public DataSource primaryDataSource(@Value("${spring.datasource.primary.url}") String url,
-                                        @Value("${spring.datasource.primary.username}") String username,
-                                        @Value("${spring.datasource.primary.password}") String password,
-                                        @Value("${spring.datasource.primary.driver-class-name}") String driverClassName) {
-        HikariConfig config = new HikariConfig();
-        config.setJdbcUrl(url);
-        config.setUsername(username);
-        config.setPassword(password);
-        config.setDriverClassName(driverClassName);
-        config.setInitializationFailTimeout(-1);
-        return new HikariDataSource(config);
-    }
-
-    @Bean(name = "zilaishuiDataSource")
-    public DataSource secondaryDataSource(@Value("${spring.datasource.zilaishui.url}") String url,
-                                          @Value("${spring.datasource.zilaishui.username}") String username,
-                                          @Value("${spring.datasource.zilaishui.password}") String password,
-                                          @Value("${spring.datasource.zilaishui.driver-class-name}") String driverClassName) {
-        HikariConfig config = new HikariConfig();
-        config.setJdbcUrl(url);
-        config.setUsername(username);
-        config.setPassword(password);
-        config.setDriverClassName(driverClassName);
-        return new HikariDataSource(config);
-    }
-
-    @Bean(name = "oneTemplate")
-    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
-        return new JdbcTemplate(dataSource);
-    }
-
-    @Bean(name = "twoTemplate")
-    public JdbcTemplate zilaishuiJdbcTemplate(@Qualifier("zilaishuiDataSource") DataSource dataSource) {
-        return new JdbcTemplate(dataSource);
-    }
-
-}
+//package io.github.pnoker.gateway.config;
+//
+//import com.zaxxer.hikari.HikariConfig;
+//import com.zaxxer.hikari.HikariDataSource;
+//import org.springframework.beans.factory.annotation.Qualifier;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.jdbc.core.JdbcTemplate;
+//
+//import javax.sql.DataSource;
+//
+///**
+// * @ClassName OrcaleDataSourceConfig
+// * @Description: TODO
+// * @Author LX
+// * @Date 2024/5/21
+// * @Version V1.0
+// **/
+//@Configuration
+//public class OrcaleDataSourceConfig {
+//    @Bean(name = "primaryDataSource")
+//    @ConditionalOnProperty(name = "datasource.primary.enabled", havingValue = "true")
+//    public DataSource primaryDataSource(@Value("${spring.datasource.primary.url}") String url,
+//                                        @Value("${spring.datasource.primary.username}") String username,
+//                                        @Value("${spring.datasource.primary.password}") String password,
+//                                        @Value("${spring.datasource.primary.driver-class-name}") String driverClassName) {
+//        HikariConfig config = new HikariConfig();
+//        config.setJdbcUrl(url);
+//        config.setUsername(username);
+//        config.setPassword(password);
+//        config.setDriverClassName(driverClassName);
+//        config.setInitializationFailTimeout(-1);
+//        return new HikariDataSource(config);
+//    }
+//
+//    @Bean(name = "zilaishuiDataSource")
+//    @ConditionalOnProperty(name = "datasource.zilaishui.enabled", havingValue = "true")
+//    public DataSource secondaryDataSource(@Value("${spring.datasource.zilaishui.url}") String url,
+//                                          @Value("${spring.datasource.zilaishui.username}") String username,
+//                                          @Value("${spring.datasource.zilaishui.password}") String password,
+//                                          @Value("${spring.datasource.zilaishui.driver-class-name}") String driverClassName) {
+//        HikariConfig config = new HikariConfig();
+//        config.setJdbcUrl(url);
+//        config.setUsername(username);
+//        config.setPassword(password);
+//        config.setDriverClassName(driverClassName);
+//        return new HikariDataSource(config);
+//    }
+//
+//    @Bean(name = "oneTemplate")
+//    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
+//        return new JdbcTemplate(dataSource);
+//    }
+//
+//    @Bean(name = "twoTemplate")
+//    public JdbcTemplate zilaishuiJdbcTemplate(@Qualifier("zilaishuiDataSource") DataSource dataSource) {
+//        return new JdbcTemplate(dataSource);
+//    }
+//    @Bean
+//    public DBMgrProxy startDBMgrProxy(){
+//        DBMgrProxy.getInstance().init();
+//        return DBMgrProxy.getInstance();
+//    }
+//}

+ 1 - 1
dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/mapper/WaterYuceDao.java

@@ -22,7 +22,7 @@ import java.util.Map;
 @Repository
 public class WaterYuceDao {
     @Autowired
-    @Qualifier("childDatasource")
+//    @Qualifier("childDatasource")
     private DataSource childDataSource;
 
     //TODO 查询配置项8

+ 1 - 1
dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/mapper/WaterZILAISHUIDao.java

@@ -27,7 +27,7 @@ public class WaterZILAISHUIDao {
     private JdbcTemplate oneTemplate;
 
     @Autowired
-    @Qualifier("childDatasource")
+//    @Qualifier("childDatasource")
     private DataSource childDataSource;
 
     //TODO orcale相关

+ 1 - 1
dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/tangyinSource/TangyinPressDataDao.java

@@ -1,4 +1,4 @@
-package io.github.pnoker.gateway.dbdao.tangyinSource;
+package io.github.pnoker.gateway.dbdao.tangyinSource.mapper;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/tangyinSource/service/impl/TangyinPressDataServiceImpl.java

@@ -1,6 +1,6 @@
 package io.github.pnoker.gateway.dbdao.tangyinSource.service.impl;
 
-import io.github.pnoker.gateway.dbdao.tangyinSource.TangyinPressDataDao;
+import io.github.pnoker.gateway.dbdao.tangyinSource.mapper.TangyinPressDataDao;
 import io.github.pnoker.gateway.dbdao.tangyinSource.service.TangyinPressDataService;
 import org.springframework.stereotype.Service;
 

+ 2 - 2
dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/zilaishuiSource/ZilaishuiRealListDao.java

@@ -30,11 +30,11 @@ public class ZilaishuiRealListDao {
     private JdbcTemplate twoTemplate;
 
     @Autowired
-    @Qualifier("child2Datasource")
+//    @Qualifier("child2Datasource")
     private DataSource child2DataSource;
 
     @Autowired
-    @Qualifier("child3Datasource")
+//    @Qualifier("child3Datasource")
     private DataSource child3DataSource;
 
     //TODO orcale相关

+ 6 - 1
dc3-gateway/src/main/java/io/github/pnoker/gateway/utils/InfulxTyDbUtil.java

@@ -1,5 +1,6 @@
 package io.github.pnoker.gateway.utils;
 
+import io.github.pnoker.gateway.bizmgr.KprTangyinWaterBizFun;
 import io.github.pnoker.gateway.comtool.ResponseCode;
 import org.influxdb.InfluxDB;
 import org.influxdb.InfluxDBFactory;
@@ -7,6 +8,8 @@ import org.influxdb.dto.BatchPoints;
 import org.influxdb.dto.Point;
 import org.influxdb.dto.Query;
 import org.influxdb.dto.QueryResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
@@ -25,6 +28,8 @@ public class InfulxTyDbUtil {
     @Value("${tangyin.inluxdb.database:}")
     private String database = ""; // 数据库名称
 
+    private static final Logger log = LoggerFactory.getLogger(InfulxTyDbUtil.class);
+
     private InfluxDB influxDB = null;
 
     public void initInfluxDataBase() {
@@ -62,7 +67,7 @@ public class InfulxTyDbUtil {
             return result;
         } catch (Exception ex) {
             // 处理异常
-            ex.printStackTrace();
+            log.error("queryDatabase error:"+ex.getMessage());
             return null;
         }
     }

+ 10 - 2
dc3-gateway/src/main/java/io/github/pnoker/gateway/utils/TestUtil.java

@@ -1,6 +1,7 @@
 package io.github.pnoker.gateway.utils;
 
 import com.alibaba.fastjson.JSONObject;
+import io.github.pnoker.gateway.bizmgr.KprTangyinWaterBizFun;
 import org.influxdb.InfluxDB;
 import org.influxdb.InfluxDBFactory;
 import org.influxdb.dto.Point;
@@ -9,6 +10,7 @@ import org.influxdb.dto.QueryResult;
 
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -25,16 +27,22 @@ public class TestUtil {
     public static void main(String[] args) throws Exception{
         // 转换ISO时间戳为目标格式
         // 转换为毫秒时间戳
-        long nanoTimestamp = 1640999400000000000L;
-        long milliTimestamp = TimeUnit.MILLISECONDS.convert(nanoTimestamp, TimeUnit.NANOSECONDS);
+        LocalDateTime startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).atZone(ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();
+        long startLong = KprTangyinWaterBizFun.formaterUTCnano(startTime);//转换乘纳秒
+        long endLong = KprTangyinWaterBizFun.formaterUTCnano(startTime.minusHours(-1));//转换乘纳秒
+        long milliTimestamp = TimeUnit.MILLISECONDS.convert(startLong, TimeUnit.NANOSECONDS);
+        long milliTimestamp2 = TimeUnit.MILLISECONDS.convert(endLong, TimeUnit.NANOSECONDS);
 
         // 创建Date对象
         Date date = new Date(milliTimestamp);
+        Date date2 = new Date(milliTimestamp2);
 
         // 格式化为目标格式
         SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         targetFormat.setTimeZone(java.util.TimeZone.getTimeZone("Asia/Shanghai")); // 转换为上海时区
         String formattedDate = targetFormat.format(date);
+        String formattedDate2 = targetFormat.format(date2);
         System.out.println(formattedDate);
+        System.out.println(formattedDate2);
     }
 }

+ 127 - 120
dc3-gateway/src/main/resources/application.yml

@@ -127,11 +127,12 @@ spring:
             #   name: default
             #   fallbackUri: 'forward:/fallback'
   datasource:
-      driver-class-name: org.postgis.DriverWrapper
-#      jdbc-url: jdbc:postgresql_postGIS://192.168.0.4:5432/watersmart?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-      jdbc-url: jdbc:postgresql_postGIS://140.246.183.164:5432/water_smart_develop_branch?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-      username: postgres
-      password: kpr.23417.postgres
+#      enabled: flase
+#      driver-class-name: org.postgis.DriverWrapper
+##      jdbc-url: jdbc:postgresql_postGIS://192.168.0.4:5432/watersmart?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#      jdbc-url: jdbc:postgresql_postGIS://140.246.183.164:5432/water_smart_develop_branch?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#      username: postgres
+#      password: kpr.23417.postgres
       data:
         maximum-pool-size: 200
         validation-query: SELECT 1
@@ -139,35 +140,44 @@ spring:
         test-on-return: false
         idle-timeout: 30000
         connection-timeout: 30000
-      primary:
-            url: jdbc:oracle:thin:@10.127.16.117:1521/ORCLPDB1
-            username: v_jiangjin
-            password: JiangJin@1127
-            driver-class-name: oracle.jdbc.driver.OracleDriver
-      zilaishui:
-            url: jdbc:oracle:thin:@10.127.16.117:1521/ORCLPDB1
-            username: v_shizilaishui
-            password: ShiZiLaiShui@0811
-            driver-class-name: oracle.jdbc.driver.OracleDriver
-      childpg:
-        driver-class-name: org.postgis.DriverWrapper
-#        jdbc-url: jdbc:postgresql_postGIS://10.101.3.104:5432/water_volume_prediction_jiangjin2?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-        jdbc-url: jdbc:postgresql_postGIS://140.246.183.164:5432/water_volume_prediction_jiangjin?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-        username: postgres
-        password: kpr.23417.postgres
-      child2pg:
-        driver-class-name: org.postgis.DriverWrapper
-        jdbc-url: jdbc:postgresql_postGIS://10.101.5.50:5432/water_level_prediction?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-        username: postgres
-        password: ygt.23417.postgres
-      child3pg:
-        driver-class-name: org.postgis.DriverWrapper
-        jdbc-url: jdbc:postgresql_postGIS://10.101.5.50:5432/water_volume_prediction?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#      primary:
+#            enabled: flase
+#            url: jdbc:oracle:thin:@10.127.16.117:1521/ORCLPDB1
+#            username: v_jiangjin
+#            password: JiangJin@1127
+#            driver-class-name: oracle.jdbc.driver.OracleDriver
+#      zilaishui:
+#            enabled: flase
+#            url: jdbc:oracle:thin:@10.127.16.117:1521/ORCLPDB1
+#            username: v_shizilaishui
+#            password: ShiZiLaiShui@0811
+#            driver-class-name: oracle.jdbc.driver.OracleDriver
+#      childpg:
+#        enabled: flase
+#        driver-class-name: org.postgis.DriverWrapper
+##        jdbc-url: jdbc:postgresql_postGIS://10.101.3.104:5432/water_volume_prediction_jiangjin2?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#        jdbc-url: jdbc:postgresql_postGIS://140.246.183.164:5432/water_volume_prediction_jiangjin?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#        username: postgres
+#        password: kpr.23417.postgres
+#      child2pg:
+#        enabled: flase
+#        driver-class-name: org.postgis.DriverWrapper
+##        jdbc-url: jdbc:postgresql_postGIS://10.101.5.50:5432/water_level_prediction?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+##        username: postgres
+##        password: ygt.23417.postgres
 #        jdbc-url: jdbc:postgresql_postGIS://140.246.183.164:5432/water_volume_prediction?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-        username: postgres
-        password: ygt.23417.postgres
+#        username: postgres
+#        password: kpr.23417.postgres
+#      child3pg:
+#        enabled: flase
+#        driver-class-name: org.postgis.DriverWrapper
+##        jdbc-url: jdbc:postgresql_postGIS://10.101.5.50:5432/water_volume_prediction?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#        jdbc-url: jdbc:postgresql_postGIS://140.246.183.164:5432/water_volume_prediction?useSSL=false&useAffectedRows=false&allowMultiQueries=true
+#        username: postgres
+##        password: ygt.23417.postgres
 #        password: kpr.23417.postgres
       child4pg:
+        enabled: true
         driver-class-name: org.postgis.DriverWrapper
         jdbc-url: jdbc:postgresql_postGIS://221.176.189.184:5432/tangyin_press?useSSL=false&useAffectedRows=false&allowMultiQueries=true
         username: postgres
@@ -181,101 +191,98 @@ logging:
   file:
     name: dc3/logs/gateway/${spring.application.name}.log
 
-#许昌八百支户表相关参数配置,密码为MD532位大写前二十位
-xuchang:
-  user: zzsfy
-  pwd: D41D8CD98F00B204E980
-  url: http://42.227.69.38:8004/WebServiceOfNBIoT.asmx
-
-#当阳influxdb配置
-dangyang:
-#influxdb相关配置
-  inluxdb:
-    database: iot_test
-#    database: iot
-    serverUrl: http://192.168.0.4:8086
-    username: kpr
-    password: kpr.2024dy.influxdb
-#    serverUrl: http://127.0.0.1:8086
-#    username: admin
-#    password: yourpassword
-#设备数据相关接口地址
-  http:
-    username: shkpr
-    password: shkpr
-    token: http://192.168.0.9:48085/admin-api/system/auth/login
-    realtimeDataList: http://192.168.0.9:48085/admin-api/data/device/realtimeDataList
-    hisDataList: http://192.168.0.9:48085/admin-api/data/device/hisDataList
-    list: http://192.168.0.9:48085/admin-api/data/device/list
-#设备类型列表配置
-  device:
-    type: >
-              [{
-                	"key": "FLOW_METER",
-                	"name": "流量计"
-                }, {
-                	"key": "WATER_QUALITY",
-                	"name": "水质仪"
-                }, {
-                	"key": "WATER_PUMP",
-                	"name": "水泵"
-                }, {
-                	"key": "WATER_METER",
-                	"name": "水表"
-                }, {
-                	"key": "PRESS_METER",
-                	"name": "压力计"
-                }, {
-                	"key": "LIQUID_LEVEL_METER",
-                	"name": "液位计"
-                }, {
-                	"key": "ELEC_CTRL_VALVE",
-                	"name": "电控阀"
-                }]
-#当阳远程物联网接口返回字段信息 ___后跟的是自己的字段
-
-watermeter: ftotal___flow_total_pos,rtotal___flow_total_rev,flow___flow_cur,press___press_cur,soc___battery
-flowmeter: ftotal___flow_total_pos,rtotal___flow_total_rev,flow___flow_cur,speed___flow_speed,alarm___alarm,csq___csq,press___press_cur
-pressmeter: press___press_cur
-waterquality: ph___ph,wd___dev_temperature,yl___chlorine,zd___turbidity
-waterpump: power___power,currentA___ia,currentB___ib,currentC___ic,voltageA___ua,voltageB___ub,voltageC___uc,soc___battery,dn___quantity,runTime,runFrequency___frequency
-elecctrlvalve: RP16___battery_voltage,RW01___flow_total_pos,RW03___flow_speed,RW02___flow_cur,rp16___battery_voltage,rw01___flow_total_pos,rw03___flow_speed,rw02___flow_cur
-liquidlevelmeter: level___level
-
-WATER_METER: WaterMeter
-FLOW_METER: WaterMeter
-PRESS_METER: WaterMeter
-WATER_QUALITY: WaterQuality
-WATER_PUMP: WaterPump
-ELEC_CTRL_VALVE: ValveMeter
-LIQUID_LEVEL_METER: LiquidLevel
-
-#江津influxdb配置
-jiangjin:
-#influxdb相关配置
-  inluxdb:
-    database: iot_test
-#    database: iot
-    serverUrl: http://10.101.16.13:8086
+##许昌八百支户表相关参数配置,密码为MD532位大写前二十位
+#xuchang:
+#  user: zzsfy
+#  pwd: D41D8CD98F00B204E980
+#  url: http://42.227.69.38:8004/WebServiceOfNBIoT.asmx
+#
+##当阳influxdb配置
+#dangyang:
+##influxdb相关配置
+#  inluxdb:
+#    database: iot_test
+##    database: iot
+#    serverUrl: http://192.168.0.4:8086
 #    username: kpr
 #    password: kpr.2024dy.influxdb
-
-#自来水influxdb配置
-zilaishui:
-  #influxdb相关配置
-  inluxdb:
-    database: iot_test
-#    database: iot
-    serverUrl: http://10.101.5.201:8086
+##    serverUrl: http://127.0.0.1:8086
+##    username: admin
+##    password: yourpassword
+##设备数据相关接口地址
+#  http:
+#    username: shkpr
+#    password: shkpr
+#    token: http://192.168.0.9:48085/admin-api/system/auth/login
+#    realtimeDataList: http://192.168.0.9:48085/admin-api/data/device/realtimeDataList
+#    hisDataList: http://192.168.0.9:48085/admin-api/data/device/hisDataList
+#    list: http://192.168.0.9:48085/admin-api/data/device/list
+##设备类型列表配置
+#  device:
+#    type: >
+#              [{
+#                	"key": "FLOW_METER",
+#                	"name": "流量计"
+#                }, {
+#                	"key": "WATER_QUALITY",
+#                	"name": "水质仪"
+#                }, {
+#                	"key": "WATER_PUMP",
+#                	"name": "水泵"
+#                }, {
+#                	"key": "WATER_METER",
+#                	"name": "水表"
+#                }, {
+#                	"key": "PRESS_METER",
+#                	"name": "压力计"
+#                }, {
+#                	"key": "LIQUID_LEVEL_METER",
+#                	"name": "液位计"
+#                }, {
+#                	"key": "ELEC_CTRL_VALVE",
+#                	"name": "电控阀"
+#                }]
+##当阳远程物联网接口返回字段信息 ___后跟的是自己的字段
+#
+#watermeter: ftotal___flow_total_pos,rtotal___flow_total_rev,flow___flow_cur,press___press_cur,soc___battery
+#flowmeter: ftotal___flow_total_pos,rtotal___flow_total_rev,flow___flow_cur,speed___flow_speed,alarm___alarm,csq___csq,press___press_cur
+#pressmeter: press___press_cur
+#waterquality: ph___ph,wd___dev_temperature,yl___chlorine,zd___turbidity
+#waterpump: power___power,currentA___ia,currentB___ib,currentC___ic,voltageA___ua,voltageB___ub,voltageC___uc,soc___battery,dn___quantity,runTime,runFrequency___frequency
+#elecctrlvalve: RP16___battery_voltage,RW01___flow_total_pos,RW03___flow_speed,RW02___flow_cur,rp16___battery_voltage,rw01___flow_total_pos,rw03___flow_speed,rw02___flow_cur
+#liquidlevelmeter: level___level
+#
+#WATER_METER: WaterMeter
+#FLOW_METER: WaterMeter
+#PRESS_METER: WaterMeter
+#WATER_QUALITY: WaterQuality
+#WATER_PUMP: WaterPump
+#ELEC_CTRL_VALVE: ValveMeter
+#LIQUID_LEVEL_METER: LiquidLevel
+#
+##江津influxdb配置
+#jiangjin:
+##influxdb相关配置
+#  inluxdb:
+#    database: iot_test
+##    database: iot
+#    serverUrl: http://10.101.16.13:8086
+##    username: kpr
+##    password: kpr.2024dy.influxdb
+#
+##自来水influxdb配置
+#zilaishui:
+#  #influxdb相关配置
+#  inluxdb:
+#    database: iot_test
+##    database: iot
+#    serverUrl: http://10.101.5.201:8086
 
 #汤阴二期相关配置
 tangyin:
 #influxdb相关配置
   inluxdb:
-      database: iot_test
-      serverUrl: http://10.101.16.13:8086
-#    database: iot_test
 #    database: iot
 #    serverUrl: http://221.176.189.184:8086
-#    username: kpr
-#    password: kpr.2024dy.influxdb
+    database: iot_test
+    serverUrl: http://10.101.16.13:8086