Explorar el Código

增加报警,迁移至大数据

chenminghua hace 2 años
padre
commit
c1ec5c92ab
Se han modificado 26 ficheros con 356 adiciones y 54 borrados
  1. 1 0
      .gitignore
  2. 10 0
      gyee-sample-impala/src/main/java/com/gyee/impala/common/config/CorsConfig.java
  3. 37 0
      gyee-sample-impala/src/main/java/com/gyee/impala/common/config/URLInterceptor.java
  4. 12 8
      gyee-sample-impala/src/main/java/com/gyee/impala/common/feign/IShardingService.java
  5. 3 3
      gyee-sample-impala/src/main/java/com/gyee/impala/common/spring/InitialRunner.java
  6. 12 12
      gyee-sample-impala/src/main/java/com/gyee/impala/common/util/FileUtil.java
  7. 10 6
      gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/SupervisedController.java
  8. 0 5
      gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/TrainFileModeController.java
  9. 1 2
      gyee-sample-impala/src/main/java/com/gyee/impala/controller/sample/cases/CaseWarningController.java
  10. 6 0
      gyee-sample-impala/src/main/java/com/gyee/impala/mapper/master/CasewarningcustomMapper.java
  11. 5 0
      gyee-sample-impala/src/main/java/com/gyee/impala/mapper/master/CasewarningscadaMapper.java
  12. 24 0
      gyee-sample-impala/src/main/java/com/gyee/impala/model/custom/AlertCustom.java
  13. 2 5
      gyee-sample-impala/src/main/java/com/gyee/impala/model/custom/AlertHistory.java
  14. 24 1
      gyee-sample-impala/src/main/java/com/gyee/impala/model/master/Casewarningcustom.java
  15. 1 0
      gyee-sample-impala/src/main/java/com/gyee/impala/model/master/Casewarningscada.java
  16. 1 1
      gyee-sample-impala/src/main/java/com/gyee/impala/schdule/TaskPerformance.java
  17. 150 0
      gyee-sample-impala/src/main/java/com/gyee/impala/schdule/TaskWarning.java
  18. 1 1
      gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/WarningService.java
  19. 11 4
      gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/diagnose/DataService.java
  20. 2 1
      gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/diagnose/SupervisedCmdService.java
  21. 10 0
      gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/CasewarningcustomServiceImpl.java
  22. 10 1
      gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/CasewarningscadaServiceImpl.java
  23. 1 0
      gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/KnowcategoryServiceImpl.java
  24. 8 0
      gyee-sample-impala/src/main/java/com/gyee/impala/service/master/CasewarningcustomService.java
  25. 8 0
      gyee-sample-impala/src/main/java/com/gyee/impala/service/master/CasewarningscadaService.java
  26. 6 4
      gyee-sample-impala/src/main/resources/application.yaml

+ 1 - 0
.gitignore

@@ -36,3 +36,4 @@ build/
 /gyee-sample-impala/mvnw.cmd
 /logs
 /gyee-sample-impala/logs
+/gyee-sample-impala/logs

+ 10 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/common/config/CorsConfig.java

@@ -1,7 +1,9 @@
 package com.gyee.impala.common.config;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 /**
@@ -9,6 +11,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 @Configuration
 public class CorsConfig implements WebMvcConfigurer {
 
+    @Autowired
+    private URLInterceptor urlInterceptor;
+
     static final String[] ORIGINS = new String[]{"GET", "POST", "PUT", "DELETE"};  //请求方式
 
     @Override
@@ -19,4 +24,9 @@ public class CorsConfig implements WebMvcConfigurer {
                 .allowedMethods(ORIGINS) //当前站点支持的跨域请求类型是什么
                 .maxAge(3600);  //超是时长,单位为秒。
     }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(urlInterceptor);
+    }
 }

+ 37 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/common/config/URLInterceptor.java

@@ -0,0 +1,37 @@
+package com.gyee.impala.common.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Slf4j
+@Component
+public class URLInterceptor implements HandlerInterceptor {
+
+    /**
+     * 请求前置处理(后置处理同理)
+     *
+     * @param request
+     * @param response
+     * @param handler
+     * @return boolean
+     */
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+//        String path = request.getServletPath();
+//        log.info(path);
+//        if (path.matches("xxxxx")) {
+//            log.info("requestUrl: {}", path);
+//            // 进行前置处理
+//            return true;
+//            // 或者 return false; 禁用某些请求
+//        } else {
+//            return true;
+//        }
+
+        return true;
+    }
+}

+ 12 - 8
gyee-sample-impala/src/main/java/com/gyee/impala/common/feign/IShardingService.java

@@ -1,6 +1,7 @@
 package com.gyee.impala.common.feign;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.gyee.impala.model.custom.diagnose.FaultInfo;
 import feign.Headers;
@@ -24,13 +25,16 @@ public interface IShardingService {
   List<FaultInfo> getFaultHistoryById(@Param(value = "historyId") String historyId);
 
 
-  @Headers({"Content-Type: application/json", "Accept: application/json"})
-  @RequestLine("GET /alarm/history/page2?category1={category}&starttime={starttime}&pagenum=1&pagesize=1000&endtime={endtime}&stationid={stationeid}" +
+  @RequestLine("GET /alarm/history/page?category1={category1}&starttime={starttime}&pagenum=1&pagesize=10000&endtime={endtime}&stationid={stationeid}" +
           "&category2=&keyword=&windturbineid={windturbineid}")
-  JSONObject getAlertHistory(@Param(value = "category") String category,
-                             @Param(value = "starttime") String st,
-                             @Param(value = "endtime") String et,
-                             @Param(value = "stationeid") String station,
-                             @Param(value = "windturbineid") String wtId);
-
+  JSONObject getAlertHistory(@Param(value = "category1") String category1,
+                             @Param(value = "starttime") String starttime,
+                             @Param(value = "endtime") String endtime,
+                             @Param(value = "stationeid") String stationeid,
+                             @Param(value = "windturbineid") String windturbineid);
+
+  @RequestLine("GET /alarm/count/query/new?stationid={station}&startdate={startdate}&enddate={enddate}")
+  JSONArray getAlarmCount(@Param(value = "station") String station,
+                          @Param(value = "startdate") String startdate,
+                          @Param(value = "enddate") String enddate);
 }

+ 3 - 3
gyee-sample-impala/src/main/java/com/gyee/impala/common/spring/InitialRunner.java

@@ -101,15 +101,15 @@ public class InitialRunner implements CommandLineRunner {
         faultType.stream().forEach(obj -> {
             if (obj.getCategory().equals("GZ")) {
                 faultTypeList.add(obj);
-                faultTypeMap.put(obj.getCode(), obj.getName());
+                faultTypeMap.put(obj.getCode(), obj.getName().toUpperCase());
             }
             else if (obj.getCategory().equals("SCADABJ")) {
                 scadaWarnList.add(obj);
-                scadaWarnMap.put(obj.getCode(), obj.getName());
+                scadaWarnMap.put(obj.getCode(), obj.getName().toUpperCase());
             }
             else if (obj.getCategory().equals("CUSTOMBJ")) {
                 customWarnList.add(obj);
-                customWarnMap.put(obj.getCode(), obj.getName());
+                customWarnMap.put(obj.getCode(), obj.getName().toUpperCase());
             }
         });
     }

+ 12 - 12
gyee-sample-impala/src/main/java/com/gyee/impala/common/util/FileUtil.java

@@ -21,26 +21,26 @@ public class FileUtil {
      * 写入文件
      *
      * @param fileName
-     * @param list
+     * @param content
      */
-    public static void writeFile(String fileName, List<String> list) {
+    public static void writeFile(String fileName, String content) {
         BufferedWriter bw = null;
 
-        if (list == null || list.size() < 0)
-            return;
-
         try {
             File file = new File(fileName);
-            if (file.exists()) file.delete();
-            else file.createNewFile();
+            if (!file.exists())
+                file.createNewFile();
 
-            bw = new BufferedWriter(new FileWriter(file, false));
+            bw = new BufferedWriter(new FileWriter(file, true));
 
-            for (String str : list) {
-                bw.write(str);
-                bw.flush();
+            String[] list = content.split("\n");
+            for(int i = 0; i < list.length; i++){
+                bw.write(list[i]);
+                bw.write("\n");
+                if (i % 500 == 0)
+                    bw.flush();
             }
-
+            bw.flush();
         } catch (Exception e) {
             log.error(e.getMessage());
         } finally {

+ 10 - 6
gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/SupervisedController.java

@@ -100,9 +100,9 @@ public class SupervisedController {
      */
     @GetMapping("/progress")
     public JSONObject updateCoordinateCache() {
-        Value value = new Value(supervisedCmdService.getProcess());
+    Value value = new Value(supervisedCmdService.getProcess());
         return JsonResult.successData(ResultCode.SUCCESS, value);
-    }
+}
 
     /**
      * 获取数据
@@ -168,10 +168,14 @@ public class SupervisedController {
     @GetMapping("/data")
     public JSONObject getData() {
         Map<String, Object> map = new HashMap<>();
-        String data = dataService.getFormData(supervisedCmdService.getExecuteInfo());
-        map.put("info", executeInfo);
-        map.put("data", data);
-        return JsonResult.successData(ResultCode.SUCCESS, data);
+        ExecuteInfo executeInfo = supervisedCmdService.getExecuteInfo();
+        if (executeInfo == null || executeInfo.getDataInfos().length == 0)
+            return JsonResult.successData(ResultCode.SUCCESS, map);
+
+        String file = dataService.getFormData(executeInfo);
+        map.put("info", this.executeInfo);
+        map.put("filename", file);
+        return JsonResult.successData(ResultCode.SUCCESS, map);
     }
 
     /**

+ 0 - 5
gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/TrainFileModeController.java

@@ -1,7 +1,5 @@
 package com.gyee.impala.controller.diagnose;
 
-
-import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.gyee.impala.common.result.JsonResult;
 import com.gyee.impala.common.result.ResultCode;
@@ -9,12 +7,9 @@ import com.gyee.impala.model.master.diagnose.TrainParam;
 import com.gyee.impala.service.custom.SftpFileService;
 import com.gyee.impala.service.master.diagnose.TrainFileModeService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
-
 
 /**
  * 文件方式训练模型

+ 1 - 2
gyee-sample-impala/src/main/java/com/gyee/impala/controller/sample/cases/CaseWarningController.java

@@ -1,5 +1,6 @@
 package com.gyee.impala.controller.sample.cases;
 
+
 import com.alibaba.fastjson.JSONObject;
 import com.gyee.impala.common.result.JsonResult;
 import com.gyee.impala.common.result.ResultCode;
@@ -9,7 +10,6 @@ import com.gyee.impala.service.master.CasewarningcustomService;
 import com.gyee.impala.service.master.CasewarningscadaService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 
 /**
@@ -47,5 +47,4 @@ public class CaseWarningController {
         scadaService.insertBatch(list);
         return JsonResult.success(ResultCode.SUCCESS);
     }
-
 }

+ 6 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/mapper/master/CasewarningcustomMapper.java

@@ -2,6 +2,12 @@ package com.gyee.impala.mapper.master;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gyee.impala.model.master.Casewarningcustom;
+import org.apache.ibatis.annotations.Select;
+
 
 public interface CasewarningcustomMapper extends BaseMapper<Casewarningcustom> {
+
+    @Select("SELECT * from casewarningcustom where time = (SELECT max(time) as time " +
+            "from casewarningcustom where stationen = #{station} order by time desc) and stationen = #{station} limit 1")
+    Casewarningcustom getOneMaxTimeByStation(String station);
 }

+ 5 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/mapper/master/CasewarningscadaMapper.java

@@ -2,6 +2,11 @@ package com.gyee.impala.mapper.master;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gyee.impala.model.master.Casewarningscada;
+import org.apache.ibatis.annotations.Select;
 
 public interface CasewarningscadaMapper extends BaseMapper<Casewarningscada> {
+
+    @Select("SELECT * from casewarningscada where warntime = (SELECT max(warntime) as warntime " +
+            "from casewarningscada where stationen = #{station} order by warntime desc) and stationen = #{station} limit 1")
+    Casewarningscada getOneMaxTimeByStation(String station);
 }

+ 24 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/model/custom/AlertCustom.java

@@ -0,0 +1,24 @@
+package com.gyee.impala.model.custom;
+
+import lombok.Data;
+
+@Data
+public class AlertCustom {
+
+    private Long snapId;
+    //场站
+    private String stationId;
+    //风机ID
+    private String windturbineId;
+    //报警描述
+    private String alertText;
+    //报警次数
+    private Integer count;
+    //报警时长
+    private Double time;
+    //报警部件英文
+    private String relateParts;
+    //报警部件中文
+    private String relatePartsText;
+
+}

+ 2 - 5
gyee-sample-impala/src/main/java/com/gyee/impala/model/custom/AlertHistory.java

@@ -5,12 +5,11 @@ import lombok.Data;
 @Data
 public class AlertHistory {
 
-    private long id;
+    private String id;
     private String alertTime;
     private Integer messageType;
-    private long snapId;
+    private Long snapId;
     private String dataInfo;
-    private String alertTextLast;
     private String stationId;
     private String projectId;
     private String lineId;
@@ -20,9 +19,7 @@ public class AlertHistory {
     private String category2;
     private String category3;
     private String rank;
-    private String lastUpdateTime;
     private String stationName;
-    private String lineName;
     private String windturbineName;
     private String alertText;
     private String modelId;

+ 24 - 1
gyee-sample-impala/src/main/java/com/gyee/impala/model/master/Casewarningcustom.java

@@ -2,6 +2,9 @@ package com.gyee.impala.model.master;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.gyee.impala.common.spring.InitialRunner;
+import com.gyee.impala.model.ToData;
+import com.gyee.impala.model.custom.AlertCustom;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -10,7 +13,7 @@ import java.io.Serializable;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @TableName("casewarningcustom")
-public class Casewarningcustom extends Model<Casewarningcustom> {
+public class Casewarningcustom extends Model<Casewarningcustom> implements ToData<Object> {
 
     private static final long serialVersionUID = 1L;
 
@@ -34,4 +37,24 @@ public class Casewarningcustom extends Model<Casewarningcustom> {
         return this.id;
     }
 
+    @Override
+    public Object toData(Object t) {
+        AlertCustom obj = (AlertCustom) t;
+        if (obj == null)
+            return null;
+
+        Casewarningcustom warn = new Casewarningcustom();
+        warn.setStationen(obj.getStationId());
+        warn.setStationcn(InitialRunner.stationMap.get(obj.getStationId()));
+        warn.setWarntype(obj.getRelatePartsText());
+        warn.setWarncode(obj.getRelateParts());
+        warn.setWarndes(obj.getAlertText());
+        warn.setCount(obj.getCount());
+        warn.setDuration(obj.getTime());
+        warn.setModel(InitialRunner.wtMap.get(obj.getWindturbineId()).getModel());
+        warn.setWindturbineid(obj.getWindturbineId());
+        warn.setWindturbinename(InitialRunner.wtMap.get(obj.getWindturbineId()).getName());
+
+        return warn;
+    }
 }

+ 1 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/model/master/Casewarningscada.java

@@ -50,6 +50,7 @@ public class Casewarningscada extends Model<Casewarningscada> implements ToData<
         warn.setStationen(obj.getStationId());
         warn.setWindturbineid(obj.getWindturbineId());
         warn.setWindturbinename(obj.getWindturbineName());
+        warn.setWarntype(InitialRunner.scadaWarnMap.containsKey(obj.getCategory2().toUpperCase()) ? InitialRunner.scadaWarnMap.get(obj.getCategory2().toUpperCase()) : "");
         warn.setWarncode(obj.getCategory2());
         warn.setWarndes(obj.getAlertText());
         warn.setWarntime(obj.getAlertTime());

+ 1 - 1
gyee-sample-impala/src/main/java/com/gyee/impala/schdule/TaskPerformance.java

@@ -35,7 +35,7 @@ public class TaskPerformance {
     private CaseperformanceService performanceService;
 
 
-    @Scheduled(initialDelay = 10 * 1000, fixedRate = 2 * 86400000 * 1000)
+//    @Scheduled(initialDelay = 10 * 1000, fixedRate = 2 * 86400000 * 1000)
     public void performanceNSS(){
         InitialRunner.wpMap.forEach((k, v) -> {
             if (!k.equals("NSS_FDC"))

+ 150 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/schdule/TaskWarning.java

@@ -0,0 +1,150 @@
+package com.gyee.impala.schdule;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.impala.common.feign.RemoteServiceBuilder;
+import com.gyee.impala.common.spring.InitialRunner;
+import com.gyee.impala.common.util.DateUtil;
+import com.gyee.impala.model.custom.AlertCustom;
+import com.gyee.impala.model.custom.AlertHistory;
+import com.gyee.impala.model.master.Casewarningcustom;
+import com.gyee.impala.model.master.Casewarningscada;
+import com.gyee.impala.service.master.CasewarningcustomService;
+import com.gyee.impala.service.master.CasewarningscadaService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Set;
+
+@Component
+public class TaskWarning {
+
+    @Autowired
+    private CasewarningcustomService customService;
+    @Autowired
+    private CasewarningscadaService scadaService;
+    @Autowired
+    private RemoteServiceBuilder remoteService;
+
+    private String initTime = "2022-01-01";
+
+
+    /**
+     * 自定义报警同步
+     * “30 10 1 * * ?” 每天1点40分30触发任务
+     */
+    @Scheduled(cron = "0 40 1 * * ?")
+    //@Scheduled(initialDelay = 10 * 1000, fixedRate = 2 * 86400000 * 1000)
+    public void customWarningTask(){
+        if (InitialRunner.stationMap.size() == 0)
+            return;
+
+        Calendar cal = Calendar.getInstance();
+        InitialRunner.stationMap.forEach((k, v) -> {
+            String time = initTime;
+            Casewarningcustom custom = customService.getOneMaxTimeByStation(k);
+            if (custom != null)
+                time = custom.getTime();
+
+            String currentTime = DateUtil.format(cal.getTime(), DateUtil.YYYY_MM_DD_HH_MM_SS);
+            while(time.compareTo(currentTime) <= -1){
+                String st = time;
+                cal.setTime(DateUtil.parseStrtoDate(time, DateUtil.YYYY_MM_DD));
+                cal.add(Calendar.DATE, 1);
+                String et = DateUtil.format(cal.getTime(), DateUtil.YYYY_MM_DD);
+                saveCustomWarning(k, st, et);
+                time = DateUtil.format(cal.getTime(), DateUtil.YYYY_MM_DD);
+                try {
+                    Thread.sleep(200);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    private void saveCustomWarning(String station, String st, String et){
+        List<Casewarningcustom> list = new ArrayList<>();
+        JSONArray data = remoteService.sharding().getAlarmCount(station, st, et);
+        for (int i = 0; i < data.size(); i++){
+            JSONObject json = data.getJSONObject(i);
+            Set<String> keys = json.keySet();
+            for(String key : keys){
+                JSONArray array = json.getJSONArray(key);
+                for (int j = 0; j < array.size(); j++){
+                    JSONObject obj = array.getJSONObject(j);
+                    AlertCustom alert = JSON.toJavaObject(obj, AlertCustom.class);
+                    if (alert != null && !StringUtils.isEmpty(alert.getRelatePartsText())) {
+                        Casewarningcustom cw = (Casewarningcustom) new Casewarningcustom().toData(alert);
+                        cw.setTime(st);
+                        list.add(cw);
+                    }
+                }
+            }
+        }
+        customService.insertBatch(list);
+    }
+
+
+    /**
+     * scada报警同步
+     * “30 10 1 * * ?” 每天1点40分30触发任务
+     */
+    @Scheduled(cron = "0 55 1 * * ?")
+    //@Scheduled(initialDelay = 10 * 1000, fixedRate = 2 * 86400000 * 1000)
+    public void scadaWarningTask(){
+        if (InitialRunner.stationMap.size() == 0)
+            return;
+
+        Calendar cal = Calendar.getInstance();
+        InitialRunner.stationMap.forEach((k, v) -> {
+            String time = initTime;
+            Casewarningscada scada = scadaService.getOneMaxTimeByStation(k);
+            if (scada != null)
+                time = scada.getWarntime();
+
+            String currentTime = DateUtil.format(cal.getTime(), DateUtil.YYYY_MM_DD);
+            while(time.compareTo(currentTime) <= -1){
+                String st = time;
+                cal.setTime(DateUtil.parseStrtoDate(time, DateUtil.YYYY_MM_DD));
+                cal.add(Calendar.DATE, 1);
+                String et = DateUtil.format(cal.getTime(), DateUtil.YYYY_MM_DD);
+                saveScadaWarning(k, st, et);
+                time = DateUtil.format(cal.getTime(), DateUtil.YYYY_MM_DD);
+                try {
+                    Thread.sleep(200);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    private void saveScadaWarning(String station, String st, String et){
+        List<Casewarningscada> list = new ArrayList<>();
+        JSONObject data = remoteService.sharding().getAlertHistory("windturbine", st, et, station, null);
+        if (data == null)
+            return;
+
+        JSONArray records = data.getJSONArray("records");
+        for (int i = 0; i < records.size(); i++){
+            JSONObject json = records.getJSONObject(i);
+            AlertHistory alert = JSON.toJavaObject(json, AlertHistory.class);
+            if (alert != null && !StringUtils.isEmpty(alert.getCategory2()) && alert.getMessageType() == 1) {
+                Casewarningscada cs = (Casewarningscada) new Casewarningscada().toData(alert);
+                list.add(cs);
+            }
+        }
+        scadaService.insertBatch(list);
+    }
+
+
+    public static void main(String[] args){
+    }
+}

+ 1 - 1
gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/WarningService.java

@@ -79,7 +79,7 @@ public class WarningService {
                 .collect(Collectors.groupingBy(Casewarningscada::getWarncode));
         collect.forEach((k, v) -> {
             Map<String, Object> mp = new HashMap<>();
-            mp.put("label", InitialRunner.scadaWarnMap.get(k.toUpperCase()));
+            mp.put("label", InitialRunner.scadaWarnMap.containsKey(k.toUpperCase()) ? InitialRunner.scadaWarnMap.get(k.toUpperCase()) : "");
             mp.put("value", k);
             mp.put("children", v);
             result.add(mp);

+ 11 - 4
gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/diagnose/DataService.java

@@ -6,8 +6,10 @@ import com.alibaba.fastjson.parser.Feature;
 import com.gyee.impala.common.cache.InfoCache;
 import com.gyee.impala.common.config.GyeeConfig;
 import com.gyee.impala.common.feign.RemoteServiceBuilder;
+import com.gyee.impala.common.util.DateUtil;
+import com.gyee.impala.common.util.FileUtil;
 import com.gyee.impala.model.custom.diagnose.*;
-import org.apache.jasper.tagplugins.jstl.If;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -23,6 +25,7 @@ import java.util.stream.Collectors;
  *
  * @author xysn
  */
+@Slf4j
 @Component
 public class DataService {
 
@@ -96,19 +99,23 @@ public class DataService {
      */
     public String getFormData(ExecuteInfo executeInfo) {
         System.out.println("有监督学习获取数据...");
-        StringBuilder sb = new StringBuilder();
+        String fileName = gyeeConfig.getDiagnoseFile() + executeInfo.getDataInfos()[0].getStationId() + "-"
+                + executeInfo.getDataInfos()[0].getModelId() + "-"
+                + DateUtil.dateTimeNow() + ".csv";
+        log.info("===filename: " + fileName);
         boolean isFirst = true;
+
         for (DataInfo di : executeInfo.getDataInfos()) {
             if (!uniformCodeInfoMap.containsKey(di.getStationId())) {
                 continue;
             }
             Map<String, List<PointData>> data = getData(di);
             String s = getDataString(data, di.getTag(), isFirst);
-            sb.append(s);
+            FileUtil.writeFile(fileName, s);
             isFirst = false;
         }
         System.out.println("有监督学习获取数据结束...");
-        return sb.toString();
+        return fileName;
     }
 
     private String getDataString(Map<String, List<PointData>> data, String tag, boolean isFirst) {

+ 2 - 1
gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/diagnose/SupervisedCmdService.java

@@ -64,7 +64,8 @@ public class SupervisedCmdService {
         Process p;
         String cmdPath = gyeeConfig.getDiagnosePath();
         try {
-            String[] cmd = {"/bin/sh", "-c", "python " + cmdPath + executeInfo.getAlgorithm().getName() + ".py " + JSON.toJSONString(executeInfo.getDataInfos())};
+            String[] cmd = {"/bin/sh", "-c", "python " + cmdPath + "Deeplearning.py"};
+            //String[] cmd = {"/bin/sh", "-c", "python " + cmdPath + executeInfo.getAlgorithm().getName() + ".py " + JSON.toJSONString(executeInfo.getDataInfos())};
             //String s = JSON.toJSONString(Arrays.stream(executeInfo.getAlgorithm().getParameters()).map(Parameter::getValue).toArray());
             //String order = "cmd /c python " + cmdPath + executeInfo.getAlgorithm().getName() + ".py " + executeInfo.getAlgorithm().getParameter();
 

+ 10 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/CasewarningcustomServiceImpl.java

@@ -50,6 +50,16 @@ public class CasewarningcustomServiceImpl extends ServiceImpl<CasewarningcustomM
         }
     }
 
+    @Override
+    public Casewarningcustom getOneMaxTimeByStation(String station) {
+        try {
+            return baseMapper.getOneMaxTimeByStation(station);
+        }catch (CustomException e){
+            log.error(e.getMessage());
+        }
+        return null;
+    }
+
     /**
      * 由于mybatis-plus存储的中文乱码
      * 采用原生写法

+ 10 - 1
gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/CasewarningscadaServiceImpl.java

@@ -27,7 +27,6 @@ public class CasewarningscadaServiceImpl extends ServiceImpl<CasewarningscadaMap
     public void insertBatch(List<Casewarningscada> list) {
         if (list == null || list.size() == 0)
             return;
-
         try{
             insert(list);
         } catch (Exception e) {
@@ -36,6 +35,16 @@ public class CasewarningscadaServiceImpl extends ServiceImpl<CasewarningscadaMap
         }
     }
 
+    @Override
+    public Casewarningscada getOneMaxTimeByStation(String station) {
+        try {
+            return baseMapper.getOneMaxTimeByStation(station);
+        }catch (CustomException e){
+            log.error(e.getMessage());
+        }
+        return null;
+    }
+
 
     /**
      * 由于mybatis-plus存储的中文乱码

+ 1 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/KnowcategoryServiceImpl.java

@@ -55,6 +55,7 @@ public class KnowcategoryServiceImpl extends ServiceImpl<KnowcategoryMapper, Kno
             if (obj == null)
                 return;
             baseMapper.updateById(obj);
+            initialRunner.cacheKnowCategory();
         } catch (CustomException e) {
             log.error(e.getMessage());
             throw new CustomException(ResultCode.ERROR_DATA);

+ 8 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/service/master/CasewarningcustomService.java

@@ -23,4 +23,12 @@ public interface CasewarningcustomService extends IService<Casewarningcustom> {
      * @param list
      */
     void insertBatch(List<Casewarningcustom> list);
+
+
+    /**
+     * 通过场站查找最大时间
+     * @param station
+     * @return
+     */
+    Casewarningcustom getOneMaxTimeByStation(String station);
 }

+ 8 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/service/master/CasewarningscadaService.java

@@ -14,4 +14,12 @@ public interface CasewarningscadaService extends IService<Casewarningscada> {
      * @return
      */
     void insertBatch(List<Casewarningscada> list);
+
+
+    /**
+     * 通过场站查找最大时间
+     * @param station
+     * @return
+     */
+    Casewarningscada getOneMaxTimeByStation(String station);
 }

+ 6 - 4
gyee-sample-impala/src/main/resources/application.yaml

@@ -1,7 +1,8 @@
 gyee:
   # golden实时适配器的url
   golden-url: http://10.155.32.4:8011
-  alert-url: http://192.168.1.18:8075
+  # 报警url
+  alert-url: http://192.168.1.14:8075
   host-url: http://10.155.32.14:8520
   # 故障样本数据导入模板路径
   template-path-window: D://java//kudu//template//
@@ -12,8 +13,8 @@ gyee:
   diagnose-path-window: d:/
   diagnose-path-linux: /home/gyee/fault_digonsis/scripts/
   # 故障诊断保存数据文件的位置
-  diagnose-file-window: D://diagnose//data
-  diagnose-file-linux:  /diagnose/file/
+  diagnose-file-window: D://test//
+  diagnose-file-linux: /home/gyee/fault_digonsis/data/
 
 server:
   port: 9002
@@ -35,7 +36,7 @@ spring:
       #kudu数据库
       master:
         driver-class-name: com.cloudera.impala.jdbc41.Driver
-        jdbc-url: jdbc:impala://192.168.1.66:21050/gyee_sample_kudu
+        jdbc-url: jdbc:impala://192.168.1.62:21050/gyee_sample_kudu
       #三区oracle数据库
       slave:
         jdbc-url: jdbc:oracle:thin:@192.168.1.105:1521:gdnxfd
@@ -96,4 +97,5 @@ logging:
 
 
 ## 故障诊断部署  运行  source activate tensorflow-gpu   ##
+## java -jar -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPerSize=512M  /home/gyee/fault_digonsis/services/diagnose-kudu/gyee-sample-impala-0.0.1-SNAPSHOT.jar ##