Explorar o código

Merge branch 'master' of http://124.70.43.205:3000/xieshengjie/sis-background

# Conflicts:
#	gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/TrainFaultPredictController.java
chenminghua %!s(int64=2) %!d(string=hai) anos
pai
achega
24bfca5643

+ 0 - 3
gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/DiagnosetrainhistoryController.java

@@ -4,8 +4,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.gyee.impala.common.result.JsonResult;
 import com.gyee.impala.common.result.ResultCode;
 import com.gyee.impala.common.spring.InitialRunner;
-import com.gyee.impala.common.util.DateUtil;
-import com.gyee.impala.model.custom.diagnose.DataInfo;
 import com.gyee.impala.model.master.diagnose.Diagnosetrainhistory;
 import com.gyee.impala.service.master.diagnose.DiagnosetrainhistoryService;
 import lombok.extern.slf4j.Slf4j;
@@ -13,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.List;
 
 

+ 50 - 10
gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/TrainFaultPredictController.java

@@ -5,11 +5,13 @@ import com.alibaba.fastjson.JSONObject;
 import com.gyee.impala.common.result.JsonResult;
 import com.gyee.impala.common.result.ResultCode;
 import com.gyee.impala.common.util.DateUtil;
+import com.gyee.impala.model.custom.diagnose.Algorithm;
 import com.gyee.impala.model.custom.diagnose.DataInfo;
 import com.gyee.impala.model.custom.diagnose.ExecuteInfo;
 import com.gyee.impala.model.master.Casefault;
 import com.gyee.impala.model.master.diagnose.Diagnosepoint;
 import com.gyee.impala.model.master.diagnose.Diagnosetrainhistory;
+import com.gyee.impala.model.master.diagnose.TrainInfo;
 import com.gyee.impala.service.custom.diagnose.DataPredictService;
 import com.gyee.impala.service.custom.diagnose.CmdFaultPredictService;;
 import lombok.extern.slf4j.Slf4j;
@@ -61,7 +63,6 @@ public class TrainFaultPredictController {
 
     private static final Object locker = new Object();
 
-    private String name1;
     private String forecastLabel1;
     private String[] inputLabel1;
     private String host1;
@@ -115,20 +116,23 @@ public class TrainFaultPredictController {
     /** 开始预测 查询 golden 所有原始数据
      *  flag  ture: 所有数据 ;false: 前10条数据
      * **/
-    @PostMapping("/pointfaultdata")
+    @PostMapping("/pointdata")
     public JSONObject getPointData(@RequestBody JSONObject json){
         if (json == null)
             return JsonResult.error(ResultCode.PARAM_IS_BLANK);
 
-
+        executeInfo = new ExecuteInfo();
         log.info("进入预测程序");
         boolean flag = json.getBooleanValue("flag");
+        Algorithm  algorithm = new Algorithm();
+        algorithm.setParameter(json.getJSONArray("predictPoints").toJSONString());
+        executeInfo.setAlgorithm(algorithm);
         List<Diagnosepoint> points = JSONObject.parseArray(json.getJSONArray("points").toString(), Diagnosepoint.class);
         List<Casefault> faults = JSONObject.parseArray(json.getJSONArray("faults").toString(), Casefault.class);
 
         /** 组装数据  删除添加的故障类型**/
         dataDiagnoseService.formatUniformcode(points.stream().filter(a -> !a.getUniformcode().equals("faulttype")).collect(Collectors.toList()));
-        executeInfo = new ExecuteInfo();
+
         Calendar cal = Calendar.getInstance();
         DataInfo[] dataInfos = new DataInfo[faults.size()];
         for (int i = 0; i < faults.size(); i++){
@@ -169,7 +173,7 @@ public class TrainFaultPredictController {
     private void execute() {
 
         fileName = dataDiagnoseService.getFormDataAll(executeInfo);
-        cmdFaultPredictService.exec();
+//        cmdFaultPredictService.exec();
 
     }
 
@@ -180,7 +184,7 @@ public class TrainFaultPredictController {
      *
      * @return
      */
-    @GetMapping("/trainfaultdata")
+    @GetMapping("/traindata")
     public JSONObject getData() {
         Map<String, Object> map = new HashMap<>();
         map.put("info", this.executeInfo);
@@ -230,7 +234,7 @@ public class TrainFaultPredictController {
      *  flag  ture: 所有数据 ;false: 前10条数据
      * **/
     @PostMapping("/pointfaultdata")
-    public JSONObject getWarningData(@RequestBody JSONObject json){
+    public JSONObject getWarningData(@RequestBody JSONObject json) {
         if (json == null)
             return JsonResult.error(ResultCode.PARAM_IS_BLANK);
 
@@ -245,7 +249,7 @@ public class TrainFaultPredictController {
         executeInfo = new ExecuteInfo();
         Calendar cal = Calendar.getInstance();
         DataInfo[] dataInfos = new DataInfo[faults.size()];
-        for (int i = 0; i < faults.size(); i++){
+        for (int i = 0; i < faults.size(); i++) {
             DataInfo data = new DataInfo();
             data.setId(Long.valueOf(faults.get(i).getId()));
             data.setStationId(faults.get(i).getStationen());
@@ -262,7 +266,7 @@ public class TrainFaultPredictController {
             dataInfos[i] = data;
         }
         executeInfo.setDataInfos(dataInfos);
-        if (flag){
+        if (flag) {
             if (!cmdFaultPredictService.isComplete()) {
                 return JsonResult.error(4000, "已有正在预测的故障模型...");
             }
@@ -270,12 +274,48 @@ public class TrainFaultPredictController {
                 taskExecutor.submit(this::execute);
             }
             return JsonResult.success(ResultCode.SUCCESS);
-        }else {
+        } else {
             Map<String, Object> mp = dataDiagnoseService.getFormData(executeInfo);
             return JsonResult.successData(ResultCode.SUCCESS, mp);
         }
     }
 
 
+    /**
+     * 生产控制台信息
+     * @param trainInfo
+     * @return
+     */
+    @PostMapping("/addtrainInfo")
+    public JSONObject addProducer(@RequestBody String trainInfo) {
+
+        try {
+            TrainInfo t = JSONObject.parseObject(trainInfo, TrainInfo.class);
+            cmdFaultPredictService.produce(t);
+
+            return JsonResult.success(ResultCode.SUCCESS);
+        } catch (Exception e) {
+            return JsonResult.error(ResultCode.ERROR);
+        }
+
+    }
+
+
+
+    /**
+     * 消费控制台信息
+     * @return
+     */
+    @GetMapping("/gettrainInfo")
+    @ResponseBody
+    public JSONObject getConsume() {
+        try {
+            List<TrainInfo> list = cmdFaultPredictService.consume();
+            System.out.println(JsonResult.successData(ResultCode.SUCCESS, list));
+            return JsonResult.successData(ResultCode.SUCCESS, list);
+        } catch (Exception e) {
+            return JsonResult.error(ResultCode.ERROR);
+        }
+    }
 
 }

+ 41 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/service/custom/diagnose/CmdFaultPredictService.java

@@ -6,6 +6,7 @@ import com.gyee.impala.common.config.GyeeConfig;
 import com.gyee.impala.common.config.jsch.JSchConfig;
 import com.gyee.impala.common.util.JudeSystem;
 import com.gyee.impala.model.master.diagnose.Diagnosetrainhistory;
+import com.gyee.impala.model.master.diagnose.TrainInfo;
 import com.gyee.impala.service.custom.SftpFileService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +15,10 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
 
 @Slf4j
 @Service
@@ -52,6 +57,10 @@ public class CmdFaultPredictService {
     }
 
 
+    //控制台输出信息队列
+    BlockingQueue<TrainInfo> infoQueue = new LinkedBlockingQueue<>();
+
+
     /**
      * 使用文件训练故障预测模型
      * @param forecastLabel
@@ -166,4 +175,36 @@ public class CmdFaultPredictService {
     }
 
 
+
+    /**
+     * 控制台信息
+     * @param trainInfo
+     * @throws Exception
+     */
+    public void produce(TrainInfo trainInfo) throws Exception {
+        // put 控制台信息到队列中
+        log.debug("add log =[" + trainInfo.getLog() + "]  time = [" + trainInfo.getTime() + "] complete = [" + trainInfo.getComplete() + "]");
+        infoQueue.put(trainInfo);
+    }
+
+
+    /**
+     * 输出控制台信息
+     * @return list
+     * @throws Exception
+     */
+    public List<TrainInfo> consume() throws Exception {
+        // take方法取出一条记录
+        List<TrainInfo> list = new ArrayList<>();
+        int sise = infoQueue.size();
+        for (int i = 0; i < sise; i++) {
+            TrainInfo info = infoQueue.take();
+            list.add(info);
+        }
+        return list;
+    }
+
+
+
+
 }