Quellcode durchsuchen

电计量计算调整

xieshengjie vor 3 Jahren
Ursprung
Commit
7b37fbb194
23 geänderte Dateien mit 1533 neuen und 322 gelöschten Zeilen
  1. 146 82
      cache/src/main/java/com/gyee/cache/init/CacheContext.java
  2. 96 0
      cache/src/main/resources/application-hbtd.yml
  3. 1 1
      cache/src/main/resources/application.yml
  4. 3 0
      common/src/main/java/com/gyee/common/contant/Contant.java
  5. 39 0
      common/src/main/java/com/gyee/common/util/DateUtils.java
  6. 20 0
      realtime/generation-service/src/main/java/com/gyee/generation/controller/MeterpointvalueController.java
  7. 53 24
      realtime/generation-service/src/main/java/com/gyee/generation/init/CacheContext.java
  8. 16 0
      realtime/generation-service/src/main/java/com/gyee/generation/mapper/auto/MeterpointvalueMapper.java
  9. 73 0
      realtime/generation-service/src/main/java/com/gyee/generation/model/auto/Meterpointvalue.java
  10. 108 93
      realtime/generation-service/src/main/java/com/gyee/generation/service/GenerationService.java
  11. 16 0
      realtime/generation-service/src/main/java/com/gyee/generation/service/auto/IMeterpointvalueService.java
  12. 20 0
      realtime/generation-service/src/main/java/com/gyee/generation/service/auto/impl/MeterpointvalueServiceImpl.java
  13. 3 2
      realtime/generation-service/src/main/java/com/gyee/generation/util/realtimesource/EdosUtil.java
  14. 102 0
      realtime/generation-service/src/main/resources/application-td.yml
  15. 12 10
      realtime/generation-service/src/main/resources/application-test.yml
  16. 4 95
      realtime/generation-service/src/main/resources/application.yml
  17. 738 5
      web/adapter-td-hb/src/main/java/com/gyee/adapter/dao/TaosLatestDao.java
  18. 1 1
      web/adapter-td-hb/src/main/resources/application.yml
  19. 31 0
      web/adapter-td-hb/src/test/java/com/gyee/adapter/AdapterTest.java
  20. 27 6
      web/benchmarking-web-hb/src/main/java/com/gyee/benchmarkingweb/service/benching/BenchmarkingService.java
  21. 2 2
      web/benchmarking-web-hb/src/main/resources/application.yml
  22. 21 1
      web/monitor-web/src/main/java/com/gyee/monitor/controller/matrix/MatrixController.java
  23. 1 0
      web/monitor-web/src/main/java/com/gyee/monitor/service/matrix/MatrixService.java

+ 146 - 82
cache/src/main/java/com/gyee/cache/init/CacheContext.java

@@ -9,6 +9,7 @@ import com.gyee.cache.service.auto.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
@@ -51,6 +52,8 @@ public class CacheContext implements CommandLineRunner {
     private IWindturbinetestingpointnewService windturbinetestingpointnewService;
     @Autowired
     private IWindpowerstationpointnewService windpowerstationpointnewService;
+    @Value("${runWindpowerstation}")
+    private String runWindpowerstation;
 
     public static Map<String, Map<String, Windturbinetestingpointai>> wtpointMap = new HashMap<>();
     public static List<Windturbine> wtls = new ArrayList<>();
@@ -182,93 +185,154 @@ public class CacheContext implements CommandLineRunner {
 //        }
 //        logger.info("----------------------MODELPOWERRD表结束");
 //
+//-------------------------------------------------------------------------------------------------------------------------------------------------------------
+//        logger.info("----------------------设备点开始");
+//        //缓存设备点
+//        redisService.remove("PRODUCT-WT");
+//        if (!redisService.hasKey("PRODUCT-WT")){
+//            Map<String,Map<String,Windturbinetestingpointnew>> wtaimap = new HashMap<>();
+//            List<Windturbine> windturbineList = windturbineService.list();
+//            windturbineList.stream().forEach(i->{
+//                Map<String,Windturbinetestingpointnew> codeaimap = new HashMap<>();
+//                QueryWrapper<Windturbinetestingpointnew> qw = new QueryWrapper<>();
+//                qw.eq("windturbineid",i.getId());
+//                List<Windturbinetestingpointnew> windturbinetestingpointai2List = windturbinetestingpointnewService.list(qw);
+//                windturbinetestingpointai2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                wtaimap.put(i.getId(),codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(wtaimap);
+//            redisService.set("PRODUCT-WT",s);
+//        };
+//        logger.info("----------------------设备点结束");
+//        logger.info("----------------------线路点开始");
+//        //缓存线路点
+//        redisService.remove("PRODUCT-LN");
+//        if (!redisService.hasKey("PRODUCT-LN")){
+//            Map<String,Map<String, Windpowerstationpointnew>> lnaimap = new HashMap<>();
+//            List<Line> lineList = lineService.list();
+//            lineList.stream().forEach(i->{
+//                Map<String,Windpowerstationpointnew> codeaimap = new HashMap<>();
+//                QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
+//                qw.eq("windpowerstationid",i.getId());
+//                List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
+//                windpowerstationtestingpoint2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                lnaimap.put(i.getId(),codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(lnaimap);
+//            redisService.set("PRODUCT-LN",s);
+//        };
+//        logger.info("----------------------线路点结束");
+//        logger.info("----------------------工程点开始");
+//        //缓存工程点
+//        redisService.remove("PRODUCT-PJ");
+//        if (!redisService.hasKey("PRODUCT-PJ")){
+//            Map<String,Map<String, Windpowerstationpointnew>> pjaimap = new HashMap<>();
+//            List<Project> projectList = projectService.list();
+//            projectList.stream().forEach(i->{
+//                Map<String,Windpowerstationpointnew> codeaimap = new HashMap<>();
+//                QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
+//                qw.eq("windpowerstationid",i.getId());
+//                List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
+//                windpowerstationtestingpoint2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                pjaimap.put(i.getId(),codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(pjaimap);
+//            redisService.set("PRODUCT-PJ",s);
+//        };
+//        logger.info("----------------------工程点结束");
+//        logger.info("----------------------场站点开始");
+//        //缓存场站点
+//        redisService.remove("PRODUCT-WP");
+//        if (!redisService.hasKey("PRODUCT-WP")){
+//            Map<String,Map<String, Windpowerstationpointnew>> wpaimap = new HashMap<>();
+//            List<Windpowerstation> wpList = windpowerstationService.list();
+//            List<String> wpids = wpList.stream().map(i -> i.getId()).collect(Collectors.toList());
+//            wpids.add("0");
+//            wpids.add("-1");
+//            wpids.add("-2");
+//            wpids.stream().forEach(i->{
+//                Map<String, Windpowerstationpointnew> codeaimap = new HashMap<>();
+//                QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
+//                qw.eq("windpowerstationid",i);
+//                List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
+//                windpowerstationtestingpoint2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                wpaimap.put(i,codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(wpaimap);
+//
+//            redisService.set("PRODUCT-WP",s);
+//        };
+//        logger.info("----------------------场站点结束");
 
-        logger.info("----------------------设备点开始");
-        //缓存设备点
-        redisService.remove("PRODUCT-WT");
-        if (!redisService.hasKey("PRODUCT-WT")){
-            Map<String,Map<String,Windturbinetestingpointnew>> wtaimap = new HashMap<>();
-            List<Windturbine> windturbineList = windturbineService.list();
-            windturbineList.stream().forEach(i->{
-                Map<String,Windturbinetestingpointnew> codeaimap = new HashMap<>();
-                QueryWrapper<Windturbinetestingpointnew> qw = new QueryWrapper<>();
-                qw.eq("windturbineid",i.getId());
-                List<Windturbinetestingpointnew> windturbinetestingpointai2List = windturbinetestingpointnewService.list(qw);
-                windturbinetestingpointai2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                wtaimap.put(i.getId(),codeaimap);
-            });
-            String s = JSONObject.toJSONString(wtaimap);
-            redisService.set("PRODUCT-WT",s);
-        };
-        logger.info("----------------------设备点结束");
-        logger.info("----------------------线路点开始");
-        //缓存线路点
-        redisService.remove("PRODUCT-LN");
-        if (!redisService.hasKey("PRODUCT-LN")){
-            Map<String,Map<String, Windpowerstationpointnew>> lnaimap = new HashMap<>();
-            List<Line> lineList = lineService.list();
-            lineList.stream().forEach(i->{
-                Map<String,Windpowerstationpointnew> codeaimap = new HashMap<>();
-                QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
-                qw.eq("windpowerstationid",i.getId());
-                List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
-                windpowerstationtestingpoint2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                lnaimap.put(i.getId(),codeaimap);
-            });
-            String s = JSONObject.toJSONString(lnaimap);
-            redisService.set("PRODUCT-LN",s);
-        };
-        logger.info("----------------------线路点结束");
-        logger.info("----------------------工程点开始");
-        //缓存工程点
-        redisService.remove("PRODUCT-PJ");
-        if (!redisService.hasKey("PRODUCT-PJ")){
-            Map<String,Map<String, Windpowerstationpointnew>> pjaimap = new HashMap<>();
-            List<Project> projectList = projectService.list();
-            projectList.stream().forEach(i->{
-                Map<String,Windpowerstationpointnew> codeaimap = new HashMap<>();
-                QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
-                qw.eq("windpowerstationid",i.getId());
-                List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
-                windpowerstationtestingpoint2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                pjaimap.put(i.getId(),codeaimap);
+
+        logger.info("--------------------------redisWT");
+        List<Windturbine> windturbineList = windturbineService.list();
+        windturbineList.stream().forEach(i->{
+            Map<String,Windturbinetestingpointnew> codeaimap = new HashMap<>();
+            QueryWrapper<Windturbinetestingpointnew> qw = new QueryWrapper<>();
+            qw.eq("windturbineid",i.getId());
+            List<Windturbinetestingpointnew> windturbinetestingpointai2List = windturbinetestingpointnewService.list(qw);
+            windturbinetestingpointai2List.stream().forEach(x->{
+                codeaimap.put(x.getUniformcode(),x);
             });
-            String s = JSONObject.toJSONString(pjaimap);
-            redisService.set("PRODUCT-PJ",s);
-        };
-        logger.info("----------------------工程点结束");
-        logger.info("----------------------场站点开始");
-        //缓存场站点
-        redisService.remove("PRODUCT-WP");
-        if (!redisService.hasKey("PRODUCT-WP")){
-            Map<String,Map<String, Windpowerstationpointnew>> wpaimap = new HashMap<>();
-            List<Windpowerstation> wpList = windpowerstationService.list();
-            List<String> wpids = wpList.stream().map(i -> i.getId()).collect(Collectors.toList());
-            wpids.add("0");
-            wpids.add("-1");
-            wpids.add("-2");
-            wpids.stream().forEach(i->{
-                Map<String, Windpowerstationpointnew> codeaimap = new HashMap<>();
-                QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
-                qw.eq("windpowerstationid",i);
-                List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
-                windpowerstationtestingpoint2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                wpaimap.put(i,codeaimap);
+            String s = JSONObject.toJSONString(codeaimap);
+            redisService.set(i.getId(),s);
+        });
+
+
+        logger.info("--------------------------redisLN");
+        List<Line> lineList = lineService.list();
+        lineList.stream().forEach(i->{
+            Map<String,Windpowerstationpointnew> codeaimap = new HashMap<>();
+            QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
+            qw.eq("windpowerstationid",i.getId());
+            List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
+            windpowerstationtestingpoint2List.stream().forEach(x->{
+                codeaimap.put(x.getUniformcode(),x);
             });
-            String s = JSONObject.toJSONString(wpaimap);
+            String s = JSONObject.toJSONString(codeaimap);
+            redisService.set(i.getId(),s);
+        });
 
-            redisService.set("PRODUCT-WP",s);
-        };
-        logger.info("----------------------场站点结束");
+        logger.info("--------------------------redisPJ");
+        List<Project> projectList = projectService.list();
+        projectList.stream().forEach(i->{
+            Map<String,Windpowerstationpointnew> codeaimap = new HashMap<>();
+            QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
+            qw.eq("windpowerstationid",i.getId());
+            List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
+            windpowerstationtestingpoint2List.stream().forEach(x->{
+                codeaimap.put(x.getUniformcode(),x);
+            });
+            String s = JSONObject.toJSONString(codeaimap);
+            redisService.set(i.getId(),s);
+        });
 
+        logger.info("--------------------------redisWP");
+        List<Windpowerstation> wpList = windpowerstationService.list();
+        List<String> wpids = wpList.stream().map(i -> i.getId()).collect(Collectors.toList());
+        wpids.add("0");
+        wpids.add("-1");
+        wpids.add("-2");
+        wpids.stream().forEach(i->{
+            Map<String, Windpowerstationpointnew> codeaimap = new HashMap<>();
+            QueryWrapper<Windpowerstationpointnew> qw = new QueryWrapper<>();
+            qw.eq("windpowerstationid",i);
+            List<Windpowerstationpointnew> windpowerstationtestingpoint2List = windpowerstationpointnewService.list(qw);
+            windpowerstationtestingpoint2List.stream().forEach(x->{
+                codeaimap.put(x.getUniformcode(),x);
+            });
+            String s = JSONObject.toJSONString(codeaimap);
+            redisService.set(i,s);
+        });
 
     }
 }

+ 96 - 0
cache/src/main/resources/application-hbtd.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8044
+  servlet:
+    context-path: /
+
+
+spring:
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  #redis集群
+  redis:
+
+#    host: 49.4.50.80
+    host: 10.83.68.151
+    port: 6379
+    timeout: 100000
+
+    #    集群环境打开下面注释,单机不需要打开
+    cluster:
+      #集群信息
+      nodes: 10.83.68.151:6379,10.83.68.152:6379,10.83.68.153:6379,10.83.68.154:6379,10.83.68.155:6379,10.83.68.156:6379,10.83.68.157:6379,10.83.68.158:6379,10.83.68.159:6379
+      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+      maxRedirects: 3
+    password: Dsjpt@2021
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 0
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+#    url: jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd
+    #    url: jdbc:oracle:thin:@172.168.1.14:1521:gdnxfd
+    username: gdprod
+    password: gd123
+    oracle-schema=:
+    #    type: com.alibaba.druid.pool.DruidDataSource
+    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+
+golden:
+  baseURL: http://10.83.68.159:8011/ts
+
+
+

+ 1 - 1
cache/src/main/resources/application.yml

@@ -1,4 +1,4 @@
 spring:
   profiles:
 #    active: jn
-    active: hb
+    active: hbtd

+ 3 - 0
common/src/main/java/com/gyee/common/contant/Contant.java

@@ -52,6 +52,9 @@ public class Contant {
     public static final String TPOINT_WP_CXGL = "AGC001";// 出线功率SSFS
     public static final String TPOINT_WP_SSFS = "SSFS";// 实时风速
 
+
+    public static final String TPOINT_WP_DJNUM = "DJNUM"; //待机明细
+
     public static final String TPOINT_WP_MATRIX = "XDTS,YXTS,DJTS,WHTJ,GZTJ,TXZD,SSFS,DWSLNUM,HJSLNUM,FCFGCDQ0001,ZBZGL,ZZSGL,SSZGL,AGC002,AGC001";
 
 

+ 39 - 0
common/src/main/java/com/gyee/common/util/DateUtils.java

@@ -1026,6 +1026,45 @@ public class DateUtils  {
         return calendar.getTime();
     }
 
+    /**
+     * 获取当前日期小时数
+     * @param
+     * @return
+     */
+    public static int getCurrentHour(){
+        Calendar calendar = Calendar.getInstance();
+        int i = calendar.get(Calendar.HOUR_OF_DAY);
+        return i;
+    }
 
+    /**
+     * 判断是否为当天日期
+     * @param inputJudgeDate
+     * @return
+     */
+    public static boolean isToday(Date inputJudgeDate) {
+        boolean flag = false;
+        // 获取当前系统时间
+        long longDate = System.currentTimeMillis();
+        Date nowDate = new Date(longDate);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dateFormat.format(nowDate);
+        String subDate = format.substring(0, 10);
+        // 定义每天的24h时间范围
+        String beginTime = subDate + " 00:00:00";
+        String endTime = subDate + " 23:59:59";
+        Date paseBeginTime = null;
+        Date paseEndTime = null;
+        try {
+            paseBeginTime = dateFormat.parse(beginTime);
+            paseEndTime = dateFormat.parse(endTime);
 
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (inputJudgeDate.after(paseBeginTime) && inputJudgeDate.before(paseEndTime)) {
+            flag = true;
+        }
+        return flag;
+    }
 }

+ 20 - 0
realtime/generation-service/src/main/java/com/gyee/generation/controller/MeterpointvalueController.java

@@ -0,0 +1,20 @@
+package com.gyee.generation.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-03-21
+ */
+@RestController
+@RequestMapping("//meterpointvalue")
+public class MeterpointvalueController {
+
+}

+ 53 - 24
realtime/generation-service/src/main/java/com/gyee/generation/init/CacheContext.java

@@ -8,14 +8,13 @@ import com.gyee.generation.service.auto.*;
 import com.gyee.generation.util.redis.RedisService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : CacheContext
@@ -39,6 +38,8 @@ public class CacheContext implements CommandLineRunner {
     private IMeterpointService meterpointService;
     @Resource
     private RedisService redisService;
+    @Value("${runWindpowerstation}")
+    private String runWindpowerstation;
 
     public static List<Windturbine> wtls = new ArrayList<>();
     public static List<Project> projects = new ArrayList<>();
@@ -51,22 +52,22 @@ public class CacheContext implements CommandLineRunner {
     public static Map<String,Map<String, Windpowerstationpointnew>> linepointmap =new HashMap<>();
     public static Map<String,Map<String, Windpowerstationpointnew>> propointmap =new HashMap<>();
     public static Map<String,Map<String, Windpowerstationpointnew>> wppointmap =new HashMap<>();
+    public static Map<String,Project> proMap = new HashMap<>();
     @Override
     public void run(String... args) throws Exception {
         logger.info("缓存开始------------------------------------------------------------");
-        wtls = windturbineService.list();
-        lines = lineService.list();
-        lines.stream().forEach(l->{
-            if (prolinemap.containsKey(l.getProjectid())){
-                prolinemap.get(l.getProjectid()).add(l);
-            }else {
-                List<Line> lineList = new ArrayList<>();
-                lineList.add(l);
-                prolinemap.put(l.getProjectid(),lineList);
-            }
+        List<String> runWpids = Arrays.asList(runWindpowerstation.split(","));
+        wtls = windturbineService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());
+        wtls.forEach(wt->{
+            String wtString = redisService.get(wt.getId());
+            Map<String, Windturbinetestingpointnew> stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference<Map<String, Windturbinetestingpointnew>>() {
+            });
+            wtpAimap.put(wt.getId(),stringWindturbinetestingpointnewMap);
         });
-        projects = projectService.list();
+
+        projects = projectService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());
         projects.stream().forEach(p->{
+            proMap.put(p.getId(),p);
             if (wppromap.containsKey(p.getWindpowerstationid())){
                 wppromap.get(p.getWindpowerstationid()).add(p);
             }else {
@@ -74,21 +75,49 @@ public class CacheContext implements CommandLineRunner {
                 prolist.add(p);
                 wppromap.put(p.getWindpowerstationid(),prolist);
             }
+            String pjString = redisService.get(p.getId());
+            Map<String, Windpowerstationpointnew> stringWindpowerstationpointnewMap = JSONObject.parseObject(pjString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
+            });
+            propointmap.put(p.getId(),stringWindpowerstationpointnewMap);
 
         });
-        wpls = windpowerstationService.list();
-        meterpoints = meterpointService.list();
 
-        String wpString = redisService.get("PRODUCT-WP");
-        wppointmap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
-        });
-        String pjString = redisService.get("PRODUCT-PJ");
-        propointmap = JSONObject.parseObject(pjString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
+        lines = lineService.list().stream().filter(i->runWpids.contains(proMap.get(i.getProjectid()).getWindpowerstationid())).collect(Collectors.toList());
+        lines.stream().forEach(l->{
+            if (prolinemap.containsKey(l.getProjectid())){
+                prolinemap.get(l.getProjectid()).add(l);
+            }else {
+                List<Line> lineList = new ArrayList<>();
+                lineList.add(l);
+                prolinemap.put(l.getProjectid(),lineList);
+            }
+            String lnString = redisService.get(l.getId());
+            Map<String, Windpowerstationpointnew> stringWindpowerstationpointnewMap = JSONObject.parseObject(lnString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
+            });
+            linepointmap.put(l.getId(),stringWindpowerstationpointnewMap);
         });
-        String lnString = redisService.get("PRODUCT-LN");
-        linepointmap = JSONObject.parseObject(lnString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
+
+        wpls = windpowerstationService.list().stream().filter(i->runWpids.contains(i.getId())).collect(Collectors.toList());;
+        meterpoints = meterpointService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());;
+
+
+        wpls.stream().forEach(wp->{
+            String wpString = redisService.get(wp.getId());
+            Map<String, Windpowerstationpointnew> stringMapMap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
+            });
+            wppointmap.put(wp.getId(),stringMapMap);
         });
 
+//        String wpString = redisService.get("PRODUCT-WP");
+//        wppointmap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
+//        });
+//        String pjString = redisService.get("PRODUCT-PJ");
+//        propointmap = JSONObject.parseObject(pjString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
+//        });
+//        String lnString = redisService.get("PRODUCT-LN");
+//        linepointmap = JSONObject.parseObject(lnString, new TypeReference<Map<String, Map<String, Windpowerstationpointnew>>>() {
+//        });
+
         String wtString = redisService.get("PRODUCT-WT");
         wtpAimap = JSONObject.parseObject(wtString, new TypeReference<Map<String, Map<String, Windturbinetestingpointnew>>>() {
         });

+ 16 - 0
realtime/generation-service/src/main/java/com/gyee/generation/mapper/auto/MeterpointvalueMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.generation.mapper.auto;
+
+import com.gyee.generation.model.auto.Meterpointvalue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-03-21
+ */
+public interface MeterpointvalueMapper extends BaseMapper<Meterpointvalue> {
+
+}

+ 73 - 0
realtime/generation-service/src/main/java/com/gyee/generation/model/auto/Meterpointvalue.java

@@ -0,0 +1,73 @@
+package com.gyee.generation.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-03-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("METERPOINTVALUE")
+public class Meterpointvalue extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private Long id;
+
+    @TableField("RECORDDATE")
+    private Date recorddate;
+
+    @TableField("METERID")
+    private String meterid;
+
+    @TableField("YEAR")
+    private Double year;
+
+    @TableField("MONTH")
+    private Double month;
+
+    @TableField("DAY")
+    private Double day;
+
+    @TableField("NOW")
+    private Double now;
+
+    @TableField("TOTALVALUE")
+    private Double totalvalue;
+
+    @TableField("YEARVALUE")
+    private Double yearvalue;
+
+    @TableField("MONTHVALUE")
+    private Double monthvalue;
+
+    @TableField("DAYVALUE")
+    private Double dayvalue;
+
+    @TableField("YEAR4")
+    private Double year4;
+
+    @TableField("MONTH4")
+    private Double month4;
+
+    @TableField("DAY4")
+    private Double day4;
+
+    @TableField("NOW4")
+    private Double now4;
+
+
+}

+ 108 - 93
realtime/generation-service/src/main/java/com/gyee/generation/service/GenerationService.java

@@ -1,17 +1,20 @@
 package com.gyee.generation.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.gyee.common.contant.Contant;
 import com.gyee.common.model.PointData;
 import com.gyee.common.model.StringUtils;
 import com.gyee.common.util.DateUtils;
+import com.gyee.common.util.DoubleUtils;
 import com.gyee.generation.init.CacheContext;
 import com.gyee.generation.model.auto.*;
-import com.gyee.generation.util.realtimesource.EdosUtil;
+import com.gyee.generation.service.auto.IMeterpointvalueService;
 import com.gyee.generation.util.realtimesource.IEdosUtil;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -25,8 +28,11 @@ import java.util.concurrent.atomic.AtomicReference;
 public class GenerationService {
 
    private Log log = LogFactory.getLog(GenerationService.class);
+    @Resource
+    private IEdosUtil edosUtil;
+    @Resource
+    private IMeterpointvalueService meterpointvalueService;
 
-    private IEdosUtil edosUtil = new EdosUtil();
 
     /**
      * 保存电计量电量,场用电量,购网电量,上网电量
@@ -47,41 +53,14 @@ public class GenerationService {
         Date monthFirstZero = DateUtils.getMonthFirstZero();
         Date yearFirstZero = DateUtils.getYearFirstZero();
         Date currentDate = DateUtils.getCurrentDate();
-        AtomicReference<Double> fdrfdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdyfdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdnfdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfrfdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfyfdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfnfdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdrswdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdyswdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdnswdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfrswdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfyswdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfnswdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdrgwdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdygwdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdngwdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfrgwdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfygwdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfngwdl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfrcydl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfycydl = new AtomicReference<>(0.0);
-        AtomicReference<Double> gfncydl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdrcydl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdycydl = new AtomicReference<>(0.0);
-        AtomicReference<Double> fdncydl = new AtomicReference<>(0.0);
-
-        Double gsrfdl = 0.0;
-        Double gsyfdl = 0.0;
-        Double gsnfdl = 0.0;
-        lines.parallelStream().forEach(line->{
+
+        lines.stream().forEach(line->{
             Map<String, Windpowerstationpointnew> linemap = linepointmap.get(line.getId());
             //线路发电量
-            Optional<Meterpoint> fdlOptional = meterpoints.stream().filter(me -> me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("进线") && me.getMetersort().equals("主")).findFirst();
+            Optional<Meterpoint> fdlOptional = meterpoints.stream().filter(me -> me.getLineid().equals(line.getId()) &&  me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("进线") && me.getMetersort().equals("主")).findFirst();
             computeFdl(fdlList, samedayZero, monthFirstZero, yearFirstZero, currentDate, linemap, fdlOptional);
         });
-        wpls.parallelStream().forEach(wp->{
+        wpls.stream().forEach(wp->{
             Map<String, Windpowerstationpointnew> wpmap = wppointmap.get(wp.getId());
             AtomicReference<Double> fcrfdl = new AtomicReference<>((double) 0);
             AtomicReference<Double> fcyfdl = new AtomicReference<>((double) 0);
@@ -95,7 +74,7 @@ public class GenerationService {
             AtomicReference<Double> fcrcydl = new AtomicReference<>((double) 0);
             AtomicReference<Double> fcycydl = new AtomicReference<>((double) 0);
             AtomicReference<Double> fcncydl = new AtomicReference<>((double) 0);
-            wppromap.get(wp.getId()).parallelStream().forEach(project -> {
+            wppromap.get(wp.getId()).stream().forEach(project -> {
                 Map<String, Windpowerstationpointnew> projectmap = propointmap.get(project.getId());
                 AtomicReference<Double> qcrfdl = new AtomicReference<>(0.0);
                 AtomicReference<Double> qcyfdl = new AtomicReference<>(0.0);
@@ -109,22 +88,22 @@ public class GenerationService {
                 AtomicReference<Double> qcrcydl = new AtomicReference<>(0.0);
                 AtomicReference<Double> qcycydl = new AtomicReference<>(0.0);
                 AtomicReference<Double> qcncydl = new AtomicReference<>(0.0);
-                prolinemap.get(project.getId()).parallelStream().forEach(line -> {
+                prolinemap.get(project.getId()).stream().forEach(line -> {
                     Map<String, Windpowerstationpointnew> linemap = linepointmap.get(line.getId());
                     //线路发电量
-                    Optional<Meterpoint> fdlOptional = meterpoints.stream().filter(me -> me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("进线") && me.getMetersort().equals("主")).findFirst();
+                    Optional<Meterpoint> fdlOptional = meterpoints.stream().filter(me -> me.getLineid().equals(line.getId()) &&   me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("进线") && me.getMetersort().equals("主")).findFirst();
                     lineFdl(resultList, samedayZero, monthFirstZero, yearFirstZero, currentDate, qcrfdl, qcyfdl, qcnfdl, linemap, fdlOptional);
                     log.info(line.getName()+"电计量电量计算完毕!");
                     //线路上网电量
-                    Optional<Meterpoint> swdlOptional = meterpoints.stream().filter(me -> me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("出线") && me.getMetersort().equals("主") && me.getLineid().contains(line.getId())).findFirst();
+                    Optional<Meterpoint> swdlOptional = meterpoints.stream().filter(me -> me.getLineid().equals(line.getId()) &&   me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("出线") && me.getMetersort().equals("主") && me.getLineid().contains(line.getId())).findFirst();
                     lineOrtherdl(fdlList,resultList, linepointmap, samedayZero, monthFirstZero, yearFirstZero, currentDate, qcrswdl, qcyswdl, qcnswdl, line, linemap, swdlOptional,Contant.SWDLB,Contant.SWDLY,Contant.SWDLN);
                     log.info(line.getName()+"上网电量计算完毕!");
                     //线路购网电量
-                    Optional<Meterpoint> gwdlOptional = meterpoints.stream().filter(me -> me.getUniformcode().equals("FXYG") && me.getMetertype().equals("出线") && me.getMetersort().equals("主") && me.getLineid().contains(line.getId())).findFirst();
+                    Optional<Meterpoint> gwdlOptional = meterpoints.stream().filter(me -> me.getLineid().equals(line.getId()) &&   me.getUniformcode().equals("FXYG") && me.getMetertype().equals("出线") && me.getMetersort().equals("主") && me.getLineid().contains(line.getId())).findFirst();
                     lineOrtherdl(fdlList,resultList, linepointmap, samedayZero, monthFirstZero, yearFirstZero, currentDate, qcrgwdl, qcygwdl, qcngwdl, line, linemap, gwdlOptional,Contant.GWGWB,Contant.GWGWY,Contant.GWGWN);
                     log.info(line.getName()+"工网购网电量计算完毕!");
                     //厂用电量
-                    Optional<Meterpoint> zybOptional = meterpoints.stream().filter(me -> me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("站用变") && me.getMetersort().equals("主") && me.getLineid().contains(line.getId())).findFirst();
+                    Optional<Meterpoint> zybOptional = meterpoints.stream().filter(me -> me.getLineid().equals(line.getId()) &&   me.getUniformcode().equals("ZXYG") && me.getMetertype().equals("站用变") && me.getMetersort().equals("主") && me.getLineid().contains(line.getId())).findFirst();
                     lineOrtherdl(fdlList,resultList, linepointmap, samedayZero, monthFirstZero, yearFirstZero, currentDate, qcrcydl, qcycydl, qcncydl, line, linemap, zybOptional,Contant.CYDLB,Contant.CYDLY,Contant.CYDLN);
                     log.info(line.getName()+"场用电量计算完毕!");
                     //农网购网电量
@@ -163,54 +142,87 @@ public class GenerationService {
             //场站农网电量
             setZero(resultList,currentDate,wpmap,Contant.NWGWB,Contant.NWGWY,Contant.NWGWN);
             log.info(wp.getName()+"农网购网电量计算完毕!");
+        });
+
+        edosUtil.sendMultiPoint(resultList);
+    }
 
-            //给0,-1,-2赋值
-            if (wp.getId().endsWith("FDC")){
-                fdrfdl.updateAndGet(v -> v + fcrfdl.get());
-                fdyfdl.updateAndGet(v -> v + fcyfdl.get());
-                fdnfdl.updateAndGet(v -> v + fcnfdl.get());
-                fdrswdl.updateAndGet(v -> v + fcrswdl.get());
-                fdyswdl.updateAndGet(v -> v + fcyswdl.get());
-                fdnswdl.updateAndGet(v -> v + fcnswdl.get());
-                fdrgwdl.updateAndGet(v -> v + fcrgwdl.get());
-                fdygwdl.updateAndGet(v -> v + fcygwdl.get());
-                fdngwdl.updateAndGet(v -> v + fcngwdl.get());
-                fdrcydl.updateAndGet(v -> v + fcrcydl.get());
-                fdycydl.updateAndGet(v -> v + fcycydl.get());
-                fdncydl.updateAndGet(v -> v + fcncydl.get());
-            }else if (wp.getId().endsWith("GDC")){
-                gfrfdl.updateAndGet(v -> v + fcrfdl.get());
-                gfyfdl.updateAndGet(v -> v + fcyfdl.get());
-                gfnfdl.updateAndGet(v -> v + fcnfdl.get());
-                gfrswdl.updateAndGet(v -> v + fcrswdl.get());
-                gfyswdl.updateAndGet(v -> v + fcyswdl.get());
-                gfnswdl.updateAndGet(v -> v + fcnswdl.get());
-                gfrgwdl.updateAndGet(v -> v + fcrgwdl.get());
-                gfygwdl.updateAndGet(v -> v + fcygwdl.get());
-                gfngwdl.updateAndGet(v -> v + fcngwdl.get());
-                gfrcydl.updateAndGet(v -> v + fcrcydl.get());
-                gfycydl.updateAndGet(v -> v + fcycydl.get());
-                gfncydl.updateAndGet(v -> v + fcncydl.get());
+    /**
+     * 存储meterpointvalue表
+     */
+    public void saveMeterpointValue(String beginDate,String endDate){
+        List<Meterpoint> meterpoints = CacheContext.meterpoints;
+        Date samedayZero = DateUtils.getSamedayZero();
+        Date monthFirstZero = DateUtils.getMonthFirstZero();
+        Date yearFirstZero = DateUtils.getYearFirstZero();
+        Date currentDate = DateUtils.getCurrentDate();
+        int hour = DateUtils.getCurrentHour();
+
+        List<String> days = DateUtils.getDays(beginDate, endDate);
+
+        if (hour == 0 && days.size()==1 && DateUtils.isToday(DateUtils.parseDate(days.get(0)))){
+            beginDate = DateUtils.toDate1(DateUtils.addDays(DateUtils.parseDate(beginDate),-1));
+            days = DateUtils.getDays(beginDate, endDate);
+        }
+
+
+        days.stream().forEach(day->{
+            List<Meterpointvalue> resultList = new ArrayList<>();
+            Date date = DateUtils.parseDate(day);
+            QueryWrapper<Meterpointvalue> qw = new QueryWrapper();
+            qw.eq("recorddate",date);
+            List<Meterpointvalue> meterpointvalues = meterpointvalueService.list(qw);
+            if (StringUtils.isEmpty(meterpointvalues)){
+                meterpoints.stream().forEach(meterpoint -> {
+                    String meterid = meterpoint.getId();
+                    Double magnification = meterpoint.getMagnification();
+                    Double xs = meterpoint.getXs();
+                    Meterpointvalue meterpointvalue = new Meterpointvalue();
+                    Date date1 = DateUtils.addDays(date, 1);
+                    meterpointvalue.setRecorddate(date1);
+                    Double real = 0.0;
+                    Double sameday = 0.0;
+                    Double month = 0.0;
+                    Double year = 0.0;
+                    try {
+                        Optional<PointData> first = edosUtil.getHistoryDatasSnap(meterid, date1.getTime() / 1000, date1.getTime() / 1000, 1l, null).stream().findFirst();
+                        if (first.isPresent()){
+                            real = first.get().getPointValueInDouble();
+                        }
+                        Optional<PointData> dayFirst = edosUtil.getHistoryDatasSnap(meterid, samedayZero.getTime() / 1000, samedayZero.getTime() / 1000, 1l, null).stream().findFirst();
+                        if (dayFirst.isPresent()){
+                            sameday = dayFirst.get().getPointValueInDouble();
+                        }
+                        Optional<PointData> monthFirst = edosUtil.getHistoryDatasSnap(meterid, monthFirstZero.getTime() / 1000, monthFirstZero.getTime() / 1000, 1l, null).stream().findFirst();
+                        if (monthFirst.isPresent()){
+                            month = monthFirst.get().getPointValueInDouble();
+                        }
+                        Optional<PointData> yearFirst = edosUtil.getHistoryDatasSnap(meterid, yearFirstZero.getTime() / 1000, yearFirstZero.getTime() / 1000, 1l, null).stream().findFirst();
+                        if (yearFirst.isPresent()){
+                            year = yearFirst.get().getPointValueInDouble();
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    meterpointvalue.setYear(DoubleUtils.keepPrecision(year/xs,2));
+                    meterpointvalue.setYear4(DoubleUtils.keepPrecision(year/xs,4));
+                    meterpointvalue.setMonth(DoubleUtils.keepPrecision(month/xs,2));
+                    meterpointvalue.setMonth4(DoubleUtils.keepPrecision(month/xs,4));
+                    meterpointvalue.setDay(DoubleUtils.keepPrecision(sameday/xs,2));
+                    meterpointvalue.setDay4(DoubleUtils.keepPrecision(sameday/xs,4));
+                    meterpointvalue.setNow(DoubleUtils.keepPrecision(real/xs,2));
+                    meterpointvalue.setNow4(DoubleUtils.keepPrecision(real/xs,4));
+                    Double yearvalue = (real - year) * magnification;
+                    Double monthvalue = (real - month) * magnification;
+                    Double dayvalue = (real - sameday) * magnification;
+                    meterpointvalue.setYearvalue(yearvalue);
+                    meterpointvalue.setMonthvalue(monthvalue);
+                    meterpointvalue.setDayvalue(dayvalue);
+                    resultList.add(meterpointvalue);
+                });
             }
+            meterpointvalueService.saveBatch(resultList);
         });
-        //0,-1,-2公司发电量
-        qygsFdl(resultList, wppointmap, currentDate, gsrfdl,gsyfdl,gsnfdl,fdrfdl, fdyfdl, fdnfdl, gfrfdl, gfyfdl, gfnfdl,Contant.RFDLB,Contant.YFDLB,Contant.NFDLB);
-        log.info("公司发电量计算完毕!");
-        //0,-1,-2公司上网电量
-        qygsFdl(resultList, wppointmap, currentDate, gsrfdl,gsyfdl,gsnfdl,fdrswdl, fdyswdl, fdnswdl, gfrswdl, gfyswdl, gfnswdl,Contant.SWDLB,Contant.SWDLY,Contant.SWDLN);
-        log.info("公司上网电量计算完毕!");
-        //0,-1,-2公司购网电量
-        qygsFdl(resultList, wppointmap, currentDate, gsrfdl,gsyfdl,gsnfdl,fdrgwdl, fdygwdl, fdngwdl, gfrgwdl, gfygwdl, gfngwdl,Contant.GWGWB,Contant.GWGWY,Contant.GWGWN);
-        log.info("公司工网购网电量计算完毕!");
-        //0,-1,-2公司场用电量
-        qygsFdl(resultList, wppointmap, currentDate, gsrfdl,gsyfdl,gsnfdl,fdrcydl, fdycydl, fdncydl, gfrcydl, gfycydl, gfncydl,Contant.CYDLB,Contant.CYDLY,Contant.CYDLN);
-        log.info("公司场用电量计算完毕!");
-        //0,-1,-2公司农网电量
-        setGsZero(resultList,currentDate,wppointmap,"-1",Contant.NWGWB,Contant.NWGWY,Contant.NWGWN);
-        setGsZero(resultList,currentDate,wppointmap,"-2",Contant.NWGWB,Contant.NWGWY,Contant.NWGWN);
-        setGsZero(resultList,currentDate,wppointmap,"-0",Contant.NWGWB,Contant.NWGWY,Contant.NWGWN);
-        log.info("公司农网购网电量计算完毕!");
-        edosUtil.sendMultiPoint(resultList);
     }
 
 
@@ -341,8 +353,9 @@ public class GenerationService {
                     year = yearFirst.get().getPointValueInDouble();
                 }
                 Double magnification = optionalMeterpoint.get().getMagnification();
+                Double xs = optionalMeterpoint.get().getXs();
 
-                double xlswdl = (real - sameday) * magnification * percentageMap.get("percentage");
+                double xlswdl = (real - sameday) * magnification / xs * percentageMap.get("percentage");
                 qcrswdl.updateAndGet(v -> new Double((double) (v + xlswdl)));
                 //线路上网电量
                 PointData r = new PointData();
@@ -353,7 +366,7 @@ public class GenerationService {
                 r.setPointName(linemap.get(rcode).getName());
                 resultList.add(r);
                 //线路月上网发电量
-                double xlyswdl = (real - month) * magnification * percentageMap.get("ypercentage");
+                double xlyswdl = (real - month) * magnification / xs * percentageMap.get("ypercentage");
                 qcyswdl.updateAndGet(v -> new Double((double) (v + xlyswdl)));
                 PointData y = new PointData();
                 y.setPointTime(currentDate.getTime());
@@ -363,7 +376,7 @@ public class GenerationService {
                 y.setPointName(linemap.get(ycode).getName());
                 resultList.add(y);
                 //线路年上网发电量
-                double xlnswfdl = (real - year) * magnification * percentageMap.get("npercentage");
+                double xlnswfdl = (real - year) * magnification / xs * percentageMap.get("npercentage");
                 qcnswdl.updateAndGet(v -> new Double((double) (v + xlnswfdl)));
                 PointData n = new PointData();
                 n.setPointTime(currentDate.getTime());
@@ -399,7 +412,8 @@ public class GenerationService {
                     year = yearFirst.get().getPointValueInDouble();
                 }
                 Double magnification = fdlOptional.get().getMagnification();
-                double xlrfdl = (real - sameday) * magnification;
+                Double xs = fdlOptional.get().getXs();
+                double xlrfdl = (real - sameday) * magnification / xs;
                 //线路日发电量
                 PointData r = new PointData();
                 r.setPointTime(currentDate.getTime());
@@ -409,7 +423,7 @@ public class GenerationService {
                 r.setPointName(linemap.get(Contant.RFDLB).getName());
                 fdlList.add(r);
                 //线路月发电量
-                double xlyfdl = (real - month) * magnification;
+                double xlyfdl = (real - month) * magnification / xs;
                 PointData y = new PointData();
                 y.setPointTime(currentDate.getTime());
                 y.setPointValue(String.valueOf(xlyfdl));
@@ -418,7 +432,7 @@ public class GenerationService {
                 y.setPointName(linemap.get(Contant.YFDLB).getName());
                 fdlList.add(y);
                 //线路年发电量
-                double xlnfdl = (real - year) * magnification;
+                double xlnfdl = (real - year) * magnification / xs;
                 PointData n = new PointData();
                 n.setPointTime(currentDate.getTime());
                 n.setPointValue(String.valueOf(xlnfdl));
@@ -454,7 +468,8 @@ public class GenerationService {
                     year = yearFirst.get().getPointValueInDouble();
                 }
                 Double magnification = optionalMeterpoint.get().getMagnification();
-                double xlrfdl = (real - sameday) * magnification;
+                Double xs = optionalMeterpoint.get().getXs();
+                double xlrfdl = (real - sameday) * magnification / xs;
                 qcrfdl.updateAndGet(v -> new Double((double) (v + xlrfdl)));
                 //线路日发电量
                 PointData r = new PointData();
@@ -465,7 +480,7 @@ public class GenerationService {
                 r.setPointName(linemap.get(Contant.RFDLB).getName());
                 resultList.add(r);
                 //线路月发电量
-                double xlyfdl = (real - month) * magnification;
+                double xlyfdl = (real - month) * magnification / xs;
                 qcyfdl.updateAndGet(v -> new Double((double) (v + xlyfdl)));
                 PointData y = new PointData();
                 y.setPointTime(currentDate.getTime());
@@ -475,7 +490,7 @@ public class GenerationService {
                 y.setPointName(linemap.get(Contant.YFDLB).getName());
                 resultList.add(y);
                 //线路年发电量
-                double xlnfdl = (real - year) * magnification;
+                double xlnfdl = (real - year) * magnification / xs;
                 qcnfdl.updateAndGet(v -> new Double((double) (v + xlnfdl)));
                 PointData n = new PointData();
                 n.setPointTime(currentDate.getTime());

+ 16 - 0
realtime/generation-service/src/main/java/com/gyee/generation/service/auto/IMeterpointvalueService.java

@@ -0,0 +1,16 @@
+package com.gyee.generation.service.auto;
+
+import com.gyee.generation.model.auto.Meterpointvalue;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-03-21
+ */
+public interface IMeterpointvalueService extends IService<Meterpointvalue> {
+
+}

+ 20 - 0
realtime/generation-service/src/main/java/com/gyee/generation/service/auto/impl/MeterpointvalueServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.generation.service.auto.impl;
+
+import com.gyee.generation.model.auto.Meterpointvalue;
+import com.gyee.generation.mapper.auto.MeterpointvalueMapper;
+import com.gyee.generation.service.auto.IMeterpointvalueService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-03-21
+ */
+@Service
+public class MeterpointvalueServiceImpl extends ServiceImpl<MeterpointvalueMapper, Meterpointvalue> implements IMeterpointvalueService {
+
+}

+ 3 - 2
realtime/generation-service/src/main/java/com/gyee/generation/util/realtimesource/EdosUtil.java

@@ -11,6 +11,7 @@ import com.gyee.generation.model.auto.Windpowerstationtestingpoint;
 import com.gyee.generation.model.auto.Windturbinetestingpointai;
 import com.gyee.generation.util.realtimesource.timeseries.ErrorRequest;
 import com.gyee.generation.util.realtimesource.timeseries.JsonObjectHelper;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -26,8 +27,8 @@ import java.util.*;
 public class EdosUtil implements IEdosUtil {
 
     private RestTemplate restTemplate =new RestTemplate();
-    private static String baseURL = "http://10.83.66.201:8029/ts";
-//    private static String baseURL = "http://10.65.79.30:8019/ts";
+    @Value("${db.url}")
+    private String baseURL;
     @Override
     public PointData getRealData(Windpowerstationtestingpoint point) throws Exception {
         try {

+ 102 - 0
realtime/generation-service/src/main/resources/application-td.yml

@@ -0,0 +1,102 @@
+server:
+  port: 7011
+  servlet:
+    context-path: /
+
+
+spring:
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  #redis集群
+  redis:
+    host: 10.83.68.151
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    cluster:
+      #集群信息
+      nodes: 10.83.68.151:6379,10.83.68.152:6379,10.83.68.153:6379,10.83.68.154:6379,10.83.68.155:6379,10.83.68.156:6379,10.83.68.157:6379,10.83.68.158:6379,10.83.68.159:6379
+      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+      maxRedirects: 3
+    password: Dsjpt@2021
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 0
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+    username: gdprod
+    password: gd123
+    oracle-schema=:
+    #    type: com.alibaba.druid.pool.DruidDataSource
+    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+db:
+  url: http://10.83.68.159:8011/ts
+
+runWindpowerstation: CL_FDC,KB_FDC,DX_FDC,SY_FDC
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 12 - 10
realtime/generation-service/src/main/resources/application-test.yml

@@ -9,16 +9,16 @@ spring:
     allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
   #redis集群
   redis:
-    host: 10.83.68.94
+    host: 10.83.68.151
     port: 6379
     timeout: 100000
     #    集群环境打开下面注释,单机不需要打开
-    #    cluster:
-    #      集群信息
-    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
-    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
-    #      maxRedirects: 3
-    password:
+    cluster:
+      #集群信息
+      nodes: 10.83.68.151:6379,10.83.68.152:6379,10.83.68.153:6379,10.83.68.154:6379,10.83.68.155:6379,10.83.68.156:6379,10.83.68.157:6379,10.83.68.158:6379,10.83.68.159:6379
+      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+      maxRedirects: 3
+    password: Dsjpt@2021
     application:
       name: test
     jedis:
@@ -27,7 +27,7 @@ spring:
         min-idle: 0
         max-idle: 8
         max-wait: -1
-    database: 19
+    database: 0
   autoconfigure:
     exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
   datasource:
@@ -84,8 +84,10 @@ logging:
     com.example: debug
 
 
-#baseURL: http://10.83.68.205:8011/ts
-baseURL: http://localhost:8029/ts
+db:
+  url: http://10.83.68.205:8011/ts
+
+runWindpowerstation: CL_FDC,KB_FDC,DX_FDC,SY_FDC
 
 
 

+ 4 - 95
realtime/generation-service/src/main/resources/application.yml

@@ -1,96 +1,5 @@
-server:
-  port: 7011
-  servlet:
-    context-path: /
-
-
+# 场站,期次,线路电计量信息
 spring:
-  main:
-    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
-  #redis集群
-  redis:
-    host: 10.83.68.94
-    port: 6379
-    timeout: 100000
-    #    集群环境打开下面注释,单机不需要打开
-    #    cluster:
-    #      集群信息
-    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
-    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
-    #      maxRedirects: 3
-    password:
-    application:
-      name: test
-    jedis:
-      pool:
-        max-active: 8
-        min-idle: 0
-        max-idle: 8
-        max-wait: -1
-    database: 19
-  autoconfigure:
-    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
-  datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    driver-class-name: oracle.jdbc.OracleDriver
-    #外网
-    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
-    username: gdprod
-    password: gd123
-    oracle-schema=:
-    #    type: com.alibaba.druid.pool.DruidDataSource
-    #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
-    #    username: root
-    #    password: root
-    #    driver-class-name: com.mysql.jdbc.Driver
-    druid:
-      max-active: 20
-      initial-size: 1
-      min-idle: 3
-      max-wait: 60000
-      time-between-eviction-runs-millis: 60000
-      min-evictable-idle-time-millis: 300000
-      test-while-idle: true
-      test-on-borrow: false
-      test-on-return: false
-  servlet:
-    multipart:
-      # 开启 multipart 上传功能
-      enabled: true
-      # 文件写入磁盘的阈值
-      file-size-threshold: 2KB
-      # 最大文件大小
-      max-file-size: 200MB
-      # 最大请求大小
-      max-request-size: 215MB
-
-mybatis-plus:
-  configuration:
-    map-underscore-to-camel-case: true
-    auto-mapping-behavior: full
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-  mapper-locations: classpath*:mapper/**/*Mapper.xml
-  global-config:
-    # 逻辑删除配置
-    db-config:
-      id-type: auto
-      # 删除前
-      logic-not-delete-value: 1
-      # 删除后
-      logic-delete-value: 0
-logging:
-  level:
-    root: info
-    com.example: debug
-
-
-#baseURL: http://10.83.68.205:8011/ts
-baseURL: http://localhost:8029/ts
-
-
-
-
-
-
-
-
+  profiles:
+#    active: td
+    active: test

+ 738 - 5
web/adapter-td-hb/src/main/java/com/gyee/adapter/dao/TaosLatestDao.java

@@ -4,7 +4,6 @@ package com.gyee.adapter.dao;
 import com.gyee.adapter.common.config.TaosConfiguration;
 import com.gyee.adapter.common.config.ThreadPoolTaskConfig;
 import com.gyee.adapter.common.exception.WisdomException;
-import com.gyee.adapter.common.util.TaosCovertUtil;
 import com.gyee.adapter.model.adapter.TsData;
 import com.gyee.adapter.model.adapter.TsDataType;
 import com.gyee.adapter.model.adapter.TsPoint;
@@ -16,11 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.sql.Connection;
+import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.Future;
 import java.util.stream.Collectors;
 
@@ -34,6 +31,742 @@ public class TaosLatestDao implements ILatestDao {
     @Autowired
     private ThreadPoolTaskConfig taskConfig;
 
+    public void test1() throws SQLException {
+        Connection connection = config.getConnect();
+        Statement st = connection.createStatement();
+        String aaa = "HB_GD_CLF_JS_P2_L5_XXX_CI0057!HB_GD_CLF_JS_P2_L5_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0078" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0133" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0078" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0133" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0078" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P1_L1_XXX_CI0133" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P2_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0027" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0126" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0127" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0128" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0133" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0001" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0002" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0003" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0006" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0007" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0008" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0057" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0058" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0059" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0133" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0059" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0008" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0059" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0126" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_L1_XXX_CI0133" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0008" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0008" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0059" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0126" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0133" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0001" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0002" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0003" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0006" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0007" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0008" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0027" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0057" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0058" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0059" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0078" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0127" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0128" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0133" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0008" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0059" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0126" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_XX_XXX_CI0133" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0027" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0057" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0058" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0059" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0078" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0126" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0127" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0128" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L16_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L15_XXX_CI0133" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0126" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0127" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0128" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0133" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0001" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0002" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0003" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0006" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0007" +
+                "!HB_GD_DXF_JS_P1_L2_XXX_CI0008" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0001" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0002" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0003" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0006" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0007" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0008" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0027" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0057" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0058" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0059" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0078" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0126" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0127" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0128" +
+                "!HB_GD_DXF_JS_P1_L1_XXX_CI0133" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0001" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0002" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0003" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0006" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0007" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0008" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0027" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0057" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0058" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0059" +
+                "!HB_GD_DXF_JS_P1_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L17_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0027" +
+                "HB_GD_KBF_JS_P4_L18_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L18_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P3_L7_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P3_L8_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L14_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P3_L9_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0078" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P1_L2_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P2_L4_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P3_XX_XXX_CI0133" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0001" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0002" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0003" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0006" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0006" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0007" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0128" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0027" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0057" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P1_L1_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P1_L3_XXX_CI0133" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0027" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0058" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0059" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0126" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0127" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0128" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0001" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0002" +
+                "!HB_GD_KBF_JS_P1_L2_XXX_CI0003" +
+                "!HB_GD_KBF_JS_P1_XX_XXX_CI0133" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P2_L6_XXX_CI0027" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0001" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0002" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0003" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0006" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0007" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0008" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0027" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0057" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0058" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0059" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0078" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0126" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0127" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0128" +
+                "!HB_GD_QYG_JS_XX_XX_XXX_CI0133" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0057" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0058" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0059" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0078" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0126" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0127" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0128" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0133" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0057" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0059" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0078" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0126" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0127" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0128" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0133" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0001" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0002" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0003" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0006" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0007" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0008" +
+                "!HB_GD_CLF_JS_XX_XX_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0001" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0002" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0003" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0006" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0007" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P1_XX_XXX_CI0027" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0078" +
+                "!HB_GD_CLF_JS_P1_L3_XXX_CI0058" +
+                "!HB_GD_CLF_JS_P2_L4_XXX_CI0133" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L21_XXX_CI0127" +
+                "!HB_GD_DXF_JS_XX_XX_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0057" +
+                "!HB_GD_KBF_JS_P4_L20_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L6_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0126" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0133" +
+                "!HB_GD_SYF_JS_XX_XX_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L19_XXX_CI0059" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0008" +
+                "!HB_GD_KBF_JS_P4_L10_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P2_L5_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0059" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0078" +
+                "!HB_GD_KBF_JS_P4_L11_XXX_CI0127" +
+                "!HB_GD_KBF_JS_P4_L13_XXX_CI0128" +
+                "!HB_GD_KBF_JS_P2_L6_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P4_L12_XXX_CI0126" +
+                "!HB_GD_KBF_JS_P2_XX_XXX_CI0133" +
+                "!HB_GD_KBF_JS_P4_XX_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_L4_XXX_CI0133" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0008" +
+                "!HB_GD_CLF_JS_P2_L5_XXX_CI0133" +
+                "!HB_GD_KBF_JS_XX_XX_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0008" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0126" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_L2_XXX_CI0133" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0027" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0057" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0058" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0059" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0078" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0126" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0127" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0128" +
+                "!HB_GD_SYF_JS_P1_L5_XXX_CI0133" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0001" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0002" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0003" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0006" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0007" +
+                "!HB_GD_SYF_JS_P1_L3_XXX_CI0008";
+        String[] split = aaa.split("!");
+        Arrays.stream(split).forEach(i->{
+            StringBuilder  sb = new StringBuilder();
+            sb.append("create table if not exists ").append(i).append("(point_time TIMESTAMP,value_double DOUBLE(8),tag_name BINARY(64));");
+            try {
+                st.execute(String.valueOf(sb));
+            } catch (SQLException throwables) {
+                throwables.printStackTrace();
+                System.out.println(i);
+            }
+        });
+
+    }
+
 
     /**
      * 查询多测点最新数据

+ 1 - 1
web/adapter-td-hb/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 server:
-  port: 8029
+  port: 8011
   netty:
     connection-timeout: 8000
 

+ 31 - 0
web/adapter-td-hb/src/test/java/com/gyee/adapter/AdapterTest.java

@@ -0,0 +1,31 @@
+package com.gyee.adapter;
+
+import com.gyee.adapter.dao.TaosLatestDao;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.sql.SQLException;
+
+/**
+ * @ClassName : AdapterTest
+ * @Author : xieshengjie
+ * @Date: 2022/3/21 13:45
+ * @Description :
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
+public class AdapterTest {
+    @Resource
+    private TaosLatestDao taosLatestDao;
+    @Test
+    public void test1() throws SQLException {
+        taosLatestDao.test1();
+        System.out.println(1);
+    }
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 27 - 6
web/benchmarking-web-hb/src/main/java/com/gyee/benchmarkingweb/service/benching/BenchmarkingService.java


+ 2 - 2
web/benchmarking-web-hb/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 spring:
   profiles:
-    active: jn
-#    active: dev
+#    active: jn
+    active: dev
 #    active: test

+ 21 - 1
web/monitor-web/src/main/java/com/gyee/monitor/controller/matrix/MatrixController.java

@@ -20,6 +20,10 @@ public class MatrixController {
     @Resource
     private MatrixService matrixService;
 
+    /**
+     * 简单矩阵
+     * @return
+     */
     @GetMapping("/matrixDatas")
     @ResponseBody
     @CrossOrigin(origins = "*", maxAge = 3600)
@@ -31,7 +35,23 @@ public class MatrixController {
         }else{
             return R.error().message("访问失败");
         }
-
     }
 
+//    /**
+//     * 明细矩阵
+//     * @return
+//     */
+//    @GetMapping("/matrixMxDatas")
+//    @ResponseBody
+//    @CrossOrigin(origins = "*", maxAge = 3600)
+//    public R matrixMxDatas()  {
+//
+//        Map<String, Object> resultMap = matrixService.matrixMxDatas();
+//        if (StringUtils.isNotNull(resultMap)) {
+//            return R.ok(resultMap.size()).data(resultMap);
+//        }else{
+//            return R.error().message("访问失败");
+//        }
+//    }
+
 }

+ 1 - 0
web/monitor-web/src/main/java/com/gyee/monitor/service/matrix/MatrixService.java

@@ -158,4 +158,5 @@ public class MatrixService {
     }
 
 
+
 }