Browse Source

大数据训练样本库接口

chenminghua 3 years ago
parent
commit
754a55c9a0
17 changed files with 500 additions and 75 deletions
  1. 6 1
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/common/constant/Constants.java
  2. 1 1
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/common/result/ResultCode.java
  3. 26 0
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/common/util/StationMapperUtil.java
  4. 42 0
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/controller/AnalysePerformanceWarningController.java
  5. 2 1
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/controller/CaseFaultController.java
  6. 33 8
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/controller/CaseperformanceController.java
  7. 4 2
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/model/kudu/Caseperformance.java
  8. 52 28
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/custom/GoldenService.java
  9. 12 13
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/CasefaultServiceImpl.java
  10. 257 5
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/CaseperformanceServiceImpl.java
  11. 3 3
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/KnowfaultfixServiceImpl.java
  12. 3 3
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/KnowfaultsymptomServiceImpl.java
  13. 6 6
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/KnowfaulttypeServiceImpl.java
  14. 1 1
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/kudu/CasefaultService.java
  15. 44 2
      gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/kudu/CaseperformanceService.java
  16. 6 0
      gyee-sample-impala/src/main/resources/application.yaml
  17. 2 1
      gyee-sample-impala/src/main/resources/mapper/CaseperformanceMapper.xml

+ 6 - 1
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/common/constant/Constants.java

@@ -1,7 +1,6 @@
 package com.gyee.sampleimpala.common.constant;
 
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
 
 
 @Slf4j
@@ -14,4 +13,10 @@ public class Constants {
     public static final String FDJZSB = "AI012B";
     // 明细状态
     public static final String FJMXZT = "ZTMX";
+    // 风机风速
+    public static final String POINT_SPEED = "AI022";
+    // 风机实发功率
+    public static final String POINT_POWER = "AI130";
+    // 风机理论功率
+    public static final String POINT_POWER_LLGL = "LLGL";
 }

+ 1 - 1
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/common/result/ResultCode.java

@@ -14,7 +14,7 @@ public enum ResultCode {
     ERROR(4000, "失败"),
     ERROR_CONNECT(4005, "数据库连接异常"),
     ERROR_DATA(4006, "数据库操作失败"),
-    ERROR_DATA_REPEAT(4006, "数据重复"),
+    ERROR_DATA_REPEAT(4007, "数据已存在"),
 
     /* 参数错误:1000~1999 */
     PARAM_NOT_VALID(1001, "参数无效"),

+ 26 - 0
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/common/util/StationMapperUtil.java

@@ -0,0 +1,26 @@
+package com.gyee.sampleimpala.common.util;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class StationMapperUtil {
+
+    public static String stationCN(String station){
+        if (StringUtils.isEmpty(station))
+            return null;
+
+        switch (station){
+            case "MHS_FDC":
+                return "麻黄山";
+            case "NSS_FDC":
+                return "牛首山";
+            case "QS_FDC":
+                return "青山";
+            case "SBQ_FDC":
+                return "石板泉";
+            case "XS_FDC":
+                return "香山";
+            default:
+                return null;
+        }
+    }
+}

+ 42 - 0
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/controller/AnalysePerformanceWarningController.java

@@ -0,0 +1,42 @@
+package com.gyee.sampleimpala.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.sampleimpala.common.result.JsonResult;
+import com.gyee.sampleimpala.common.result.ResultCode;
+import com.gyee.sampleimpala.model.kudu.Casefault;
+import com.gyee.sampleimpala.model.kudu.Caseperformance;
+import com.gyee.sampleimpala.service.kudu.CaseperformanceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  场站基础库配置
+ * </p>
+ *
+ * @author chenmh
+ * @since 2021-10-15
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/analyse")
+public class AnalysePerformanceWarningController {
+
+    @Autowired
+    private CaseperformanceService caseperformanceService;
+
+
+    @GetMapping("/basic")
+    public JSONObject faultAll(String station, String intervals, Integer tag,
+                               String st, String et){
+        List<Caseperformance> list = caseperformanceService.getPerformanceList(station, intervals, tag, st, et);
+
+        return JsonResult.successData(ResultCode.SUCCESS, list);
+    }
+}

+ 2 - 1
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/controller/CaseFaultController.java

@@ -36,11 +36,12 @@ public class CaseFaultController {
      */
     @GetMapping("/fault/list")
     public JSONObject faultAll(String station, String[] model, String[] widget,
-                                 String st, String et, String[] ids){
+                                 String st, String et, Long[] ids){
         List<Casefault> list = casefaultService.getAll(station, model, widget, st, et, ids);
         return JsonResult.successData(ResultCode.SUCCESS, list);
     }
 
+
     /**
      * 批量新增或修改数据
      * @param list

+ 33 - 8
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/controller/CaseperformanceController.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 
 /**
@@ -30,7 +31,7 @@ import org.springframework.web.bind.annotation.RestController;
 @CrossOrigin
 @RestController
 @RequestMapping("/case")
-public class CaseperformanceController {
+public class CasePerformanceController {
 
 
     @Autowired
@@ -51,8 +52,8 @@ public class CaseperformanceController {
      */
     @GetMapping("/performance/list")
     public JSONObject getPerformanceList(String station, String[] model, Integer tag,
-                                         String st, String et) {
-        List<Caseperformance> list = caseperformanceService.getPerformanceList(station, model, tag, st, et);
+                                         String interval, String st, String et) {
+        List<Caseperformance> list = caseperformanceService.getPerformanceList(station, model, tag, interval, st, et);
         return JsonResult.successData(ResultCode.SUCCESS, list);
     }
 
@@ -107,18 +108,42 @@ public class CaseperformanceController {
 
 
     /**
+     * 性能分析散点图
      *
-     * @param id 样本id(数组)
-     * @param interval 数据时间间隔
+     * @param id        样本ID
+     * @param interval  数据时间间隔
+     * @param type      类型 0-单台  1-多台合并  2-同名合并
      * @return
      */
     @GetMapping("/performance/scatter")
     public JSONObject getCurveScatter(
-            @RequestParam(value = "id") Integer[] id,
-            @RequestParam(value = "interval") Integer interval
+            @RequestParam(value = "id") String[] id,
+            @RequestParam(value = "interval") Integer interval,
+            @RequestParam(value = "type") Optional<Integer> type
     ) {
+        int temp = type.isPresent() ? type.get() : 0;
+        Map<String,List> maps  = caseperformanceService.getCurveScatter(id,interval,temp);
 
-        Map<String,List> maps  = goldenService.getCurveScatter(id,interval);
+        return JsonResult.successData(ResultCode.SUCCESS, maps);
+    }
+
+
+    /**
+     * 性能分析折线图
+     *
+     * @param id        样本ID
+     * @param interval  数据时间间隔
+     * @param type      类型 0-单台  1-多台合并  2-同名合并
+     * @return
+     */
+    @GetMapping("/performance/line")
+    public JSONObject getLine(
+            @RequestParam(value = "id") String[] id,
+            @RequestParam(value = "interval") Integer interval,
+            @RequestParam(value = "type") Optional<Integer> type
+    ) {
+        int temp = type.isPresent() ? type.get() : 0;
+        Map<String,List> maps  = caseperformanceService.getLines(id,interval,temp);
 
         return JsonResult.successData(ResultCode.SUCCESS, maps);
     }

+ 4 - 2
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/model/kudu/Caseperformance.java

@@ -33,12 +33,14 @@ public class Caseperformance extends Model<Caseperformance> {
 
     private String endtime;
 
-    private Integer algtype;
+    private Double intervals;
 
-    private String model;
+    private Integer algtype;
 
     private String stationcn;
 
+    private String model;
+
     private String manufacturer;
 
     private String remark;

+ 52 - 28
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/custom/GoldenService.java

@@ -2,6 +2,7 @@ package com.gyee.sampleimpala.service.custom;
 
 
 import com.gyee.sampleimpala.common.config.UniformcodeConfig;
+import com.gyee.sampleimpala.common.constant.Constants;
 import com.gyee.sampleimpala.common.exception.CustomException;
 import com.gyee.sampleimpala.common.feign.RemoteServiceBuilder;
 import com.gyee.sampleimpala.common.result.ResultCode;
@@ -75,42 +76,65 @@ public class GoldenService {
 
 
     /**
-     * H获取风速和转速的曲线数据
-     *
-     * @param ids      ids
-     * @param interval 数据时间间隔
+     * 获取风速和功率的曲线数据
+     * @param ids       样本ID
+     * @param interval  数据时间间隔
+     * @param type      类型 0-单台  1-多台合并  2-同名合并
      * @return
      */
-    public Map<String, List> getCurveScatter(Integer[] ids, int interval) {
-
+    public Map<String, List> getCurveScatter(String[] ids, int interval, Integer type) {
+        Map<String, List> maps = new HashMap<>();
 
         try {
-            Map<String, List> maps = new HashMap<>();
-            for (Integer id : ids) {
-                List<String> codeList = uniformcodeConfig.getUniformcode();
-                String[] codes = codeList.toArray(new String[codeList.size()]);
+            for (String id : ids) {
+                String[] codes = new String[]{Constants.POINT_SPEED, Constants.POINT_POWER};
                 Caseperformance cp = caseperformanceService.getPerformanceByid(id);
-                List<Windturbinepoint> windturbinepoints = windturbinepointService.getListByStationAndWtIdAndUniformCode(cp.getStationen(), cp.getWindturbineid(), codes);
-                List<TsPointData> data1 = remoteService.ShardingService().getHistorySnap(windturbinepoints.get(0).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+
+                //查询测点名
+                List<Windturbinepoint> winds = windturbinepointService.getListByStationAndWtIdAndUniformCode(cp.getStationen(), cp.getWindturbineid(), codes);
+
+                //golden适配器取数据
+                List<TsPointData> speedList = remoteService.ShardingService().getHistorySnap(winds.get(0).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
                         DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
-                List<TsPointData> data2 = remoteService.ShardingService().getHistorySnap(windturbinepoints.get(1).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+                List<TsPointData> powerList = remoteService.ShardingService().getHistorySnap(winds.get(1).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
                         DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
-                if (null != data1 && null != data2 && data1.size() == data2.size()) {
-                    List list = new ArrayList();
-                    List<Map> lp = new ArrayList<>();
-                    for (int i = 0; i < data1.size(); i++) {
-                        List l = new ArrayList();
-                        Map c = new HashMap();
-                        l.add(data1.get(i).getDoubleValue());
-                        l.add(data2.get(i).getDoubleValue());
-                        c.put("fs", data1.get(i).getDoubleValue());
-                        c.put("zs", data2.get(i).getDoubleValue());
-                        list.add(l);
-                        lp.add(c);
-                    }
-                    maps.put("S_" + id + "_" + cp.getWindturbineid(), list);
-                    maps.put("C_" + id + "_" + cp.getWindturbineid(), lp);
+
+                if (speedList == null || powerList == null)
+                    return maps;
+
+                //计算数组最小的
+                int len = speedList.size() <= powerList.size() ? speedList.size() : powerList.size();
+                //折线图
+//                List listZ = new ArrayList<>();
+                //散点图
+                List listS = new ArrayList<>();
+
+//                int val = len / 5 > 0 ? len / 5 : 1;
+                for (int i = 0; i < len; i++) {
+                    //计算折线图
+//                    List lp = new ArrayList();
+//                    if (i % val == 0){
+//                        lp.add(speedList.get(i).getDoubleValue());
+//                        lp.add(powerList.get(i).getDoubleValue());
+//                        listZ.add(lp);
+//                        listZ.add(powerList.get(i).getDoubleValue());
+//                    }
+                    //补齐最后一条
+//                    if (i == len - 1){
+//                        lp.add(speedList.get(i).getDoubleValue());
+//                        lp.add(powerList.get(i).getDoubleValue());
+//                        listZ.add(lp);
+//                        listZ.add(powerList.get(i).getDoubleValue());
+//                    }
+
+                    //计算散点图
+                    List ls = new ArrayList();
+                    ls.add(speedList.get(i).getDoubleValue());
+                    ls.add(powerList.get(i).getDoubleValue());
+                    listS.add(ls);
                 }
+
+                maps.put(cp.getWindturbineid(), listS);
             }
 
             return maps;

+ 12 - 13
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/CasefaultServiceImpl.java

@@ -37,34 +37,33 @@ public class CasefaultServiceImpl extends ServiceImpl<CasefaultMapper, Casefault
     private RemoteServiceBuilder serviceBuilder;
 
     @Override
-    public List<Casefault> getAll(String station, String[] model, String[] widget, String st, String et, String[] ids) {
+    public List<Casefault> getAll(String station, String[] model, String[] widget, String st, String et, Long[] ids) {
         ExcludeQueryWrapper<Casefault> wrapper = new ExcludeQueryWrapper<>();
 
-        List<Long> collect = null;
-        // string数组转成List<Long>
-        if (ids != null)
-            collect = Arrays.stream(ids).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
+//        List<Long> collect = null;
+//        // string数组转成List<Long>
+//        if (ids != null)
+//            collect = Arrays.stream(ids).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
 
         wrapper.eq("stationen", station)
                 .in("model", model)
                 .in("faultcode", widget)
-                .in("faultid", collect)
+                .in("faultid", ids)
                 .ge("starttime", st)
-                .le("endtime", et);
+                .le("starttime", et);
 
-        List<Casefault> list = new ArrayList<>();
         try {
-            list = baseMapper.selectList(wrapper);
+            List<Casefault> list = baseMapper.selectList(wrapper);
+
+            return list;
+
         } catch (Exception e) {
             log.error(e.getMessage());
             throw new CustomException(ResultCode.ERROR_DATA);
         }
-
-        return list;
     }
 
 
-    @Transactional
     @Override
     public boolean insertOrUpdate(List<Casefault> list) {
         boolean flag = false;
@@ -80,7 +79,7 @@ public class CasefaultServiceImpl extends ServiceImpl<CasefaultMapper, Casefault
                 }
             }
 
-            flag = saveOrUpdateBatch(list);
+            flag = saveOrUpdateBatch(list, list.size());
 
         } catch (CustomException e) {
             log.error(e.getMessage());

+ 257 - 5
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/CaseperformanceServiceImpl.java

@@ -3,16 +3,26 @@ package com.gyee.sampleimpala.service.impl.kudu;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.sampleimpala.common.base.ExcludeQueryWrapper;
+import com.gyee.sampleimpala.common.constant.Constants;
 import com.gyee.sampleimpala.common.exception.CustomException;
+import com.gyee.sampleimpala.common.feign.RemoteServiceBuilder;
 import com.gyee.sampleimpala.common.result.ResultCode;
+import com.gyee.sampleimpala.common.util.DateUtil;
 import com.gyee.sampleimpala.common.util.SnowFlakeGenerator;
+import com.gyee.sampleimpala.common.util.StationMapperUtil;
 import com.gyee.sampleimpala.mapper.kudu.CaseperformanceMapper;
+import com.gyee.sampleimpala.model.custom.TsPointData;
 import com.gyee.sampleimpala.model.kudu.Caseperformance;
+import com.gyee.sampleimpala.model.kudu.Windturbinepoint;
 import com.gyee.sampleimpala.service.kudu.CaseperformanceService;
+import com.gyee.sampleimpala.service.kudu.WindturbinepointService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.velocity.runtime.directive.Foreach;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -25,16 +35,28 @@ import java.util.List;
 @Service
 public class CaseperformanceServiceImpl extends ServiceImpl<CaseperformanceMapper, Caseperformance> implements CaseperformanceService {
 
+    @Autowired
+    private RemoteServiceBuilder remoteService;
+    @Autowired
+    private WindturbinepointService windturbinepointService;
+
+
     @Override
-    public List<Caseperformance> getPerformanceList(String station, String[] model, Integer tag, String st, String et) {
+    public List<Caseperformance> getPerformanceList(String station, String[] model, Integer tag, String interval, String st, String et) {
         ExcludeQueryWrapper<Caseperformance> wrapper = new ExcludeQueryWrapper<>();
+
+        //前端传的*-*类型,需要保持一致
+        String[] temp = !StringUtils.isEmpty(interval) ? interval.split("-") : new String[]{"0", "0.5"};
+
         wrapper.eq("stationen", station)
                 .in("model", model)
                 .eq("tag", tag)
+                .ge("intervals", Double.valueOf(temp[0]))
+                .le("intervals", Double.valueOf(temp[1]))
                 .ge("starttime", st)
                 .le("endtime", et);
 
-        List<Caseperformance> list = new ArrayList<>();
+        List<Caseperformance> list = null;
         try {
             list = baseMapper.selectList(wrapper);
         } catch (Exception e) {
@@ -95,10 +117,240 @@ public class CaseperformanceServiceImpl extends ServiceImpl<CaseperformanceMappe
     }
 
     @Override
-    public Caseperformance getPerformanceByid(Integer id) {
+    public Caseperformance getPerformanceByid(String id) {
         Caseperformance cp = baseMapper.selectById(id);
         return cp;
     }
 
+    @Override
+    public Map<String, List> getCurveScatter(String id, int interval) {
+        Map<String, List> maps = new HashMap<>();
+
+        try {
+            String[] codes = new String[]{Constants.POINT_SPEED, Constants.POINT_POWER};
+            Caseperformance cp = getPerformanceByid(id);
+
+            //查询测点名
+            List<Windturbinepoint> winds = windturbinepointService.getListByStationAndWtIdAndUniformCode(cp.getStationen(), cp.getWindturbineid(), codes);
+
+            //golden适配器取数据
+            List<TsPointData> speedList = remoteService.ShardingService().getHistorySnap(winds.get(0).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+                    DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
+            List<TsPointData> powerList = remoteService.ShardingService().getHistorySnap(winds.get(1).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+                    DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
+
+            if (speedList == null || powerList == null)
+                return maps;
+
+            //计算数组最小的
+            int len = speedList.size() <= powerList.size() ? speedList.size() : powerList.size();
+            //散点图
+            List listS = new ArrayList<>();
+
+            for (int i = 0; i < len; i++) {
+                //计算散点图
+                List ls = new ArrayList();
+                ls.add(speedList.get(i).getDoubleValue());
+                ls.add(powerList.get(i).getDoubleValue());
+                listS.add(ls);
+            }
+
+            maps.put(cp.getWindturbineid(), listS);
+
+            return maps;
+
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new CustomException(ResultCode.ERROR_DATA);
+        }
+    }
+
+
+    @Override
+    public Map<String, List> getCurveScatter(String[] ids, int interval, Integer type) {
+        Map<String, List> maps = new HashMap<>();
+        List<Map<String, List>> list = new ArrayList<>();
+
+        try {
+            for (String id : ids) {
+                list.add(getCurveScatter(id, interval));
+            }
+
+            if (list.size() <= 0)
+                return maps;
+
+            switch (type) {
+                //单台
+                case 0:
+                    maps = list.get(0);
+                    break;
+                //多台
+                case 1:
+                    for (Map<String, List> ls : list) {
+                        Set<String> keys = ls.keySet();
+                        for (String key : keys)
+                            maps.put(key, ls.get(key));
+                    }
+                    break;
+                //多台拟合
+                case 2:
+                case 3:
+                    List<List> merge = new ArrayList<>();
+                    for (Map<String, List> ls : list) {
+                        Set<String> keys = ls.keySet();
+                        for (String key : keys) {
+                            List<Object> lp = ls.get(key);
+                            for (int i = 0; i < lp.size(); i++)
+                                merge.add((List) lp.get(i));
+                        }
+                    }
+                    maps.put("NH", merge);
+                    break;
+            }
+
+            return maps;
+
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new CustomException(ResultCode.ERROR_DATA);
+        }
+    }
+
+    @Override
+    public Map<String, List> getLines(String[] ids, int interval, Integer type) {
+        Map<String, List> maps = new HashMap<>();
+
+        try {
+            if (ids == null || ids.length == 0)
+                return maps;
+
+//           for (String id : ids){
+//                list.add(getLine(id, interval));
+//            }
+
+            return getLine(ids[0], interval);
+
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new CustomException(ResultCode.ERROR_DATA);
+        }
+    }
+
+    @Override
+    public List getPerformanceList(String station, String interval, Integer tag, String st, String et) {
+        List list = new ArrayList();
+        ExcludeQueryWrapper<Caseperformance> wrapper = new ExcludeQueryWrapper<>();
+
+        //前端传的*-*类型,需要保持一致
+        String[] temp = !StringUtils.isEmpty(interval) ? interval.split("-") : new String[]{"0", "0.5"};
+
+        try{
+            wrapper.eq("stationen", station)
+                    .eq("tag", tag)
+                    .ge("intervals", Double.valueOf(temp[0]))
+                    .le("intervals", Double.valueOf(temp[1]))
+                    .ge("starttime", st)
+                    .le("endtime", et)
+                    .groupBy("id","windturbineid", "starttime", "endtime")
+                    .select("id", "windturbineid", "starttime", "endtime")
+                    .orderByAsc("windturbineid");
+
+            List<Caseperformance> cases = baseMapper.selectList(wrapper);
+
+            // 根据风机编号分组
+            Map<String, List<Caseperformance>> singleMap = cases.stream()
+                    .sorted(Comparator.comparing(Caseperformance::getWindturbineid))
+                    .collect(Collectors.groupingBy(Caseperformance::getWindturbineid));
+
+            String wtId = StationMapperUtil.stationCN(station);
+            int i = 0; //前端树状展示,需要id
+            for (Map.Entry<String, List<Caseperformance>> entry : singleMap.entrySet()){
+                Map<String, Object> map = new LinkedHashMap<>();
+                String key = entry.getKey();
+                String windId = wtId + key.substring(key.lastIndexOf("_") + 1) + "号风机";
+
+                List<Caseperformance> value = entry.getValue();
+                List childList = new ArrayList();
+                for (Caseperformance performance : value){
+                    Map<String, Object> childMap = new LinkedHashMap<>();
+                    childMap.put("id", performance.getId());
+                    childMap.put("wtId", key);
+                    childMap.put("windturbineId", performance.getStarttime() + "性能下降");
+                    childMap.put("st", performance.getStarttime());
+                    childMap.put("et", performance.getEndtime());
+                    childList.add(childMap);
+                }
+                map.put("id", i);
+                map.put("windturbineId", windId);
+                map.put("children", childList);
+
+                list.add(map);
+                i++;
+            }
+
+            return list;
+
+        }catch (Exception e) {
+            log.error(e.getMessage());
+            throw new CustomException(ResultCode.ERROR_DATA);
+        }
+    }
+
+    /**
+     * 查询单台风机风速功率
+     *
+     * @param id
+     * @param interval
+     * @return
+     */
+    public Map<String, List> getLine(String id, int interval) {
+        Map<String, List> maps = new HashMap<>();
+
+        try {
+            if (StringUtils.isEmpty(id))
+                return maps;
+
+            String[] codes = new String[]{Constants.POINT_SPEED, Constants.POINT_POWER, Constants.POINT_POWER_LLGL};
+            //单台风机
+            Caseperformance cp = getPerformanceByid(id);
+            //查询测点名
+            List<Windturbinepoint> winds = windturbinepointService.getListByStationAndWtIdAndUniformCode(cp.getStationen(), cp.getWindturbineid(), codes);
+            //golden适配器取数据
+            List<TsPointData> speedList = remoteService.ShardingService().getHistorySnap(winds.get(0).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+                    DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
+            List<TsPointData> powerList = remoteService.ShardingService().getHistorySnap(winds.get(1).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+                    DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
+            List<TsPointData> llglList = remoteService.ShardingService().getHistorySnap(winds.get(2).getPoint(), DateUtil.covertDateTimestamp(cp.getStarttime()),
+                    DateUtil.covertDateTimestamp(cp.getEndtime()), interval);
+
+            if (speedList == null || powerList == null || llglList == null)
+                return maps;
+
+            //计算数组最小的
+            int len = speedList.size() <= powerList.size() ? speedList.size() : powerList.size();
+            List listPower = new ArrayList();
+            List listSpeed = new ArrayList();
+            List listLLGL = new ArrayList();
+            //返回给前端的点数
+            int temp = 10;
+            int snap = len / temp;
+            for (int i = 0; i < temp; i++) {
+                listPower.add(powerList.get(snap * i));
+                listSpeed.add(speedList.get(snap * i));
+                listLLGL.add(llglList.get(snap * i));
+            }
+
+            maps.put("power", listPower);
+            maps.put("llglpower", listLLGL);
+            maps.put("speed", listSpeed);
+
+            return maps;
+
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new CustomException(ResultCode.ERROR_DATA);
+        }
+    }
+
 
 }

+ 3 - 3
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/KnowfaultfixServiceImpl.java

@@ -26,14 +26,14 @@ public class KnowfaultfixServiceImpl extends ServiceImpl<KnowfaultfixMapper, Kno
 
     @Override
     public List<Knowfaultfix> getAll() {
-        List<Knowfaultfix> list = null;
         try {
-            list = baseMapper.selectList(null);
+            List<Knowfaultfix> list = baseMapper.selectList(null);
+
+            return list;
         } catch (CustomException e){
             log.error(e.getMessage());
             throw new CustomException(ResultCode.ERROR_DATA);
         }
-        return list;
     }
 
     @Override

+ 3 - 3
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/KnowfaultsymptomServiceImpl.java

@@ -26,14 +26,14 @@ public class KnowfaultsymptomServiceImpl extends ServiceImpl<KnowfaultsymptomMap
 
     @Override
     public List<Knowfaultsymptom> getAll() {
-        List<Knowfaultsymptom> list = null;
         try {
-            list = baseMapper.selectList(null);
+            List<Knowfaultsymptom> list = baseMapper.selectList(null);
+
+            return list;
         } catch (CustomException e){
             log.error(e.getMessage());
             throw new CustomException(ResultCode.ERROR_DATA);
         }
-        return list;
     }
 
     @Override

+ 6 - 6
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/impl/kudu/KnowfaulttypeServiceImpl.java

@@ -9,10 +9,9 @@ import com.gyee.sampleimpala.model.kudu.Knowfaulttype;
 import com.gyee.sampleimpala.mapper.kudu.KnowfaulttypeMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.sampleimpala.service.kudu.KnowfaulttypeService;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
+
 import java.util.Comparator;
 import java.util.List;
 
@@ -29,17 +28,18 @@ public class KnowfaulttypeServiceImpl extends ServiceImpl<KnowfaulttypeMapper, K
 
     @Override
     public List<Knowfaulttype> getAll() {
-        List<Knowfaulttype> list = new ArrayList<>();
+        ExcludeQueryWrapper<Knowfaulttype> wrapper = new ExcludeQueryWrapper<>();
         try {
-            ExcludeQueryWrapper<Knowfaulttype> wrapper = new ExcludeQueryWrapper<>();
             wrapper.orderByAsc("id");
-            list = baseMapper.selectList(wrapper);
+
+            List<Knowfaulttype> list = baseMapper.selectList(wrapper);
             list.sort(Comparator.comparing(Knowfaulttype::getId));
+
+            return list;
         } catch (CustomException e){
             log.error(e.getMessage());
             throw new CustomException(ResultCode.ERROR_DATA);
         }
-        return list;
     }
 
     @Override

+ 1 - 1
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/kudu/CasefaultService.java

@@ -25,7 +25,7 @@ public interface CasefaultService extends IService<Casefault> {
      * @param ids      与oracle关联的snapid
      * @return
      */
-    List<Casefault> getAll(String station, String[] model, String[] widget, String st, String et, String[] ids);
+    List<Casefault> getAll(String station, String[] model, String[] widget, String st, String et, Long[] ids);
 
     /**
      * 批量插入或更新

+ 44 - 2
gyee-sample-impala/src/main/java/com/gyee/sampleimpala/service/kudu/CaseperformanceService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.gyee.sampleimpala.model.kudu.Caseperformance;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -21,12 +22,13 @@ public interface CaseperformanceService extends IService<Caseperformance> {
      * @param station 场站
      * @param model   风机模型
      * @param tag     样本类型
+     * @param interval 时间间隔
      * @param st      开始时间
      * @param et      结束时间
      * @return
      */
     List<Caseperformance> getPerformanceList(String station, String[] model, Integer tag,
-                                             String st, String et);
+                                             String interval, String st, String et);
 
 
     /**
@@ -61,7 +63,47 @@ public interface CaseperformanceService extends IService<Caseperformance> {
      * @param id 样本id
      * @return
      */
-    Caseperformance getPerformanceByid(Integer id);
+    Caseperformance getPerformanceByid(String id);
 
 
+    /**
+     * 获取风速和功率的曲线数据
+     * @param id       样本ID
+     * @param interval  数据时间间隔
+     * @return
+     */
+    Map<String, List> getCurveScatter(String id, int interval);
+
+
+    /**
+     * 获取风速和功率的曲线数据  多台拟合
+     * @param ids       样本ID
+     * @param interval  数据时间间隔
+     * @param type      类型 0-单台  1-多台对比  2-同名合并  3-多台合并
+     * @return
+     */
+     Map<String, List> getCurveScatter(String[] ids, int interval, Integer type);
+
+
+    /**
+     * 获取风速和功率的曲线数据
+     * @param ids         样本ID
+     * @param interval    数据时间间隔
+     * @param type        类型 0-单台  1-同名合并  2-多台合并
+     * @return
+     */
+     Map<String, List> getLines(String[] ids, int interval, Integer type);
+
+
+    /**
+     * 性能预警综合
+     * @param station
+     * @param interval
+     * @param tag
+     * @param st
+     * @param et
+     * @return
+     */
+     List getPerformanceList(String station, String interval, Integer tag, String st, String et);
+
 }

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

@@ -4,6 +4,12 @@ gyee:
 
 server:
   port: 9002
+  servlet:
+    encoding:
+      charset: utf-8
+      force: true
+      enabled: true
+
 spring:
   main:
     allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册

+ 2 - 1
gyee-sample-impala/src/main/resources/mapper/CaseperformanceMapper.xml

@@ -10,9 +10,10 @@
         <result column="windturbineid" property="windturbineid" />
         <result column="starttime" property="starttime" />
         <result column="endtime" property="endtime" />
+        <result column="intervals" property="intervals" />
         <result column="algtype" property="algtype" />
-        <result column="model" property="model" />
         <result column="stationcn" property="stationcn" />
+        <result column="model" property="model" />
         <result column="manufacturer" property="manufacturer" />
         <result column="remark" property="remark" />
         <result column="category" property="category" />