浏览代码

故障前权重测点曲线

wangchangsheng 2 年之前
父节点
当前提交
04edc146b4

+ 15 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/controller/diagnose/DiagnoseReportController.java

@@ -4,9 +4,11 @@ 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.model.custom.diagnose.PointData;
 import com.gyee.impala.model.master.Casefaultalg;
 import com.gyee.impala.model.master.diagnose.Diagnosetrainhistory;
 import com.gyee.impala.service.master.CasefaultalgService;
+import com.gyee.impala.service.master.diagnose.DiagnosereportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -25,13 +27,26 @@ public class DiagnoseReportController {
     @Autowired
     private CasefaultalgService casefaultalgService;
 
+    @Autowired
+    private DiagnosereportService diagnosereportService;
+
     @GetMapping("/item")
     public JSONObject getOne(String id){
         Casefaultalg fault = casefaultalgService.getById(id);
         List<Diagnosetrainhistory> info = InitialRunner.historyModelMap.get(fault.getStationen() + "_" + fault.getModel());
         Map<String, Object> map = new HashMap<>();
+        Map<String, List<PointData>> mappoint = diagnosereportService.getpointweightDataList(fault.getStationen(), fault.getModel(), fault.getWindturbineid(), fault.getStarttime(),info.get(0).getPointweight());
         map.put("fault", fault);
         map.put("info", info);
+        map.put("curve",mappoint);
         return JsonResult.successData(ResultCode.SUCCESS, map);
     }
+
+    @GetMapping("/pointName")
+    public JSONObject getPointqx(String id,String pointName) {
+        Casefaultalg fault = casefaultalgService.getById(id);
+        Map<String, List<PointData>> list = diagnosereportService.getpointweightData(fault.getStationen(), fault.getModel(), fault.getWindturbineid(), fault.getStarttime(),pointName);
+        return JsonResult.successData(ResultCode.SUCCESS, list);
+
+    }
 }

+ 79 - 1
gyee-sample-impala/src/main/java/com/gyee/impala/service/impl/master/diagnose/DiagnosereportServiceImpl.java

@@ -1,19 +1,31 @@
 package com.gyee.impala.service.impl.master.diagnose;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.impala.common.base.ExcludeQueryWrapper;
 import com.gyee.impala.common.config.datasource.KuduDataSourceConfig;
 import com.gyee.impala.common.exception.CustomException;
 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.common.util.SnowFlakeUtil;
 import com.gyee.impala.mapper.master.diagnose.DiagnosereportMapper;
+import com.gyee.impala.model.custom.diagnose.DataInfo;
+import com.gyee.impala.model.custom.diagnose.PointData;
+import com.gyee.impala.model.master.diagnose.Diagnosepoint;
 import com.gyee.impala.model.master.diagnose.Diagnosereport;
+import com.gyee.impala.service.custom.diagnose.DataPointService;
 import com.gyee.impala.service.master.diagnose.DiagnosereportService;
 import org.apache.kudu.client.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import java.util.List;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -22,6 +34,10 @@ public class DiagnosereportServiceImpl extends ServiceImpl<DiagnosereportMapper,
     @Autowired
     private KuduDataSourceConfig kuduConfig;
 
+    @Autowired
+    private DataPointService dataPointService;
+
+
     @Override
     public List<Diagnosereport> getAll(String wtId, String model, String modelName, String trainingTimes) {
         ExcludeQueryWrapper<Diagnosereport> wrapper = new ExcludeQueryWrapper<>();
@@ -48,6 +64,68 @@ public class DiagnosereportServiceImpl extends ServiceImpl<DiagnosereportMapper,
         }
     }
 
+    @Override
+    public Map<String, List<PointData>> getpointweightDataList(String stationen, String model, String wtId, String faultTime, String pointweight) {
+
+        Calendar cal = Calendar.getInstance();
+        DataInfo info = new DataInfo();
+        info.setStationId(stationen);
+        info.setModelId(model);
+        info.setThingId(wtId);
+
+        cal.setTime(DateUtil.parseStrtoDate(faultTime, DateUtil.YYYY_MM_DD_HH_MM_SS));
+        cal.add(Calendar.MINUTE, -10);
+        info.setStartTs(cal.getTimeInMillis() + "");
+        cal.add(Calendar.MINUTE, 15);
+        info.setEndTs(cal.getTimeInMillis() + "");
+
+        List<Diagnosepoint> point = InitialRunner.mapPoint.get(stationen).get(model).stream().filter(distinctByKey(Diagnosepoint::getUniformcode)).collect(Collectors.toList());
+//        Map<String, String> map = point.stream().collect(Collectors.toMap(Diagnosepoint::getName, Diagnosepoint::getUniformcode));
+        Map<String, Diagnosepoint> map = point.stream().collect(Collectors.toMap(Diagnosepoint::getName,d->d,(k1, k2)->k2));
+        JSONArray jarr = JSONArray.parseArray(pointweight);
+        List<Diagnosepoint> newpoint = new ArrayList<>();
+        for (Iterator iterator = jarr.iterator(); iterator.hasNext(); ) {
+            JSONObject job = (JSONObject) iterator.next();
+            String pointname = job.get("Measuring_point").toString();
+            Double importance  = Double.valueOf(job.get("Importance").toString());
+            if(importance<1){
+                continue;
+            }
+            newpoint.add(map.get(pointname));
+        }
+        dataPointService.formatUniformcode(newpoint);
+        Map<String, List<PointData>> pairs = dataPointService.getData(info);
+        return pairs;
+    }
+
+    @Override
+    public Map<String, List<PointData>> getpointweightData(String stationen, String model, String wtId, String faultTime, String pointName) {
+        Calendar cal = Calendar.getInstance();
+        DataInfo info = new DataInfo();
+        info.setStationId(stationen);
+        info.setModelId(model);
+        info.setThingId(wtId);
+
+        cal.setTime(DateUtil.parseStrtoDate(faultTime, DateUtil.YYYY_MM_DD_HH_MM_SS));
+        cal.add(Calendar.MINUTE, -10);
+        info.setStartTs(cal.getTimeInMillis() + "");
+        cal.add(Calendar.MINUTE, 15);
+        info.setEndTs(cal.getTimeInMillis() + "");
+
+        Map<String,List<Diagnosepoint>> points = InitialRunner.mapPoint.get(stationen).get(model).stream().
+                filter(distinctByKey(Diagnosepoint::getUniformcode)).collect(Collectors.groupingBy(Diagnosepoint::getName));
+
+        dataPointService.formatUniformcode(points.get(pointName));
+        Map<String, List<PointData>> pairs = dataPointService.getData(info);
+        return pairs;
+    }
+
+
+    public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
+        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
+        return object -> seen.putIfAbsent(keyExtractor.apply(object), Boolean.TRUE) == null;
+    }
+
 
     /**
      * 由于mybatis-plus存储的中文乱码

+ 26 - 0
gyee-sample-impala/src/main/java/com/gyee/impala/service/master/diagnose/DiagnosereportService.java

@@ -1,9 +1,11 @@
 package com.gyee.impala.service.master.diagnose;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.impala.model.custom.diagnose.PointData;
 import com.gyee.impala.model.master.diagnose.Diagnosereport;
 
 import java.util.List;
+import java.util.Map;
 
 public interface DiagnosereportService extends IService<Diagnosereport> {
 
@@ -24,4 +26,28 @@ public interface DiagnosereportService extends IService<Diagnosereport> {
      * @param obj
      */
     void insertItem(Diagnosereport obj);
+
+
+    /**
+     * @param stationen   场站
+     * @param model       机型
+     * @param wtId        风机编号
+     * @param faultTime   报警时间点
+     * @param pointweight 权重测点(json字符串)
+     * @return
+     */
+    Map<String, List<PointData>> getpointweightDataList(String stationen, String model, String wtId, String faultTime, String pointweight);
+
+
+    /**
+     * @param stationen   场站
+     * @param model       机型
+     * @param wtId        风机编号
+     * @param faultTime   报警时间点
+     * @param pointName 权重测点(单独测点名)
+     * @return
+     */
+    Map<String, List<PointData>> getpointweightData(String stationen, String model, String wtId, String faultTime, String pointName);
+
+
 }