Przeglądaj źródła

风险管理定时任务以及首页正式数据

wukai 10 miesięcy temu
rodzic
commit
a482910d3d

+ 38 - 27
jjt-biz/src/main/java/com/jjt/biz/controller/IndexController.java

@@ -15,6 +15,7 @@ import com.jjt.hl.service.IHlScoreService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -48,6 +49,8 @@ public class IndexController extends BaseController {
     private IBizObjMetricsDataService dataService;
     @Resource
     private IAlarmRecordService alarmRecordService;
+    @Resource
+    private JdbcTemplate jdbcTemplate;
 
     String[] MODEL_NAMES = {"市场服务", "市场出清", "信息发布", "市场合规", "市场结算"};
 
@@ -137,35 +140,43 @@ public class IndexController extends BaseController {
     @ApiOperation("运行风险预测结果")
     @GetMapping("/risk")
     public AjaxResult risk() {
-        Map<String, Object> result = new HashMap<>();
-        List<Map<String, Object>> list = new ArrayList<>();
-        String[] objs = {"出清node1", "出清ecs", "业务应用3", "业务应用4", "业务应用5", "业务应用6", "业务应用7"};
-        String[] ms = {"cpu使用率", "慢访问次数", "GC次数", "空间交换", "打开文件数", "交换分区访问"};
-        Random random = new Random();
-        int x = objs.length * ms.length;
-        int xx = x / 2;
-        int max = random.nextInt(xx) + 12;
-        int num = 0;
-        for (int i = 0; i < max; i++) {
-            boolean flag = random.nextInt(888) % 2 == 0;
-            int mi = random.nextInt(ms.length - 1);
-            Map<String, Object> map = new HashMap<>(16);
-            String objName = objs[i % 6];
-            String metricsName = ms[mi];
-            map.put("objName", objName);
-            map.put("metricsName", metricsName);
-            String status = "1";
-//            if (flag) {
-            //风险
-            num++;
-            status = "2";
-//            }
-            map.put("status", status);
-            list.add(map);
-        }
+        String sql = "SELECT b.metrics_name metricsName,c.obj_name objName,'2' status" +
+                " FROM (SELECT a.obj_id FROM risk_analysis a,risk_model b WHERE a.ANALYSE_TIME = (SELECT MAX(ANALYSE_TIME) FROM risk_analysis) AND a.risk_id=b.risk_id AND b.risk_type!='3' AND result LIKE '%恶化%') a," +
+                "biz_obj_metrics b,biz_obj c" +
+                " where a.obj_id = b.obj_metrics_id AND b.obj_id=c.obj_id";
+        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
 
-        result.put("num", num);
+        Map<String, Object> result = new HashMap<>();
+        result.put("num", list.size());
         result.put("data", list);
+//        List<Map<String, Object>> resul = new ArrayList<>();
+//        String[] objs = {"出清node1", "出清ecs", "业务应用3", "业务应用4", "业务应用5", "业务应用6", "业务应用7"};
+//        String[] ms = {"cpu使用率", "慢访问次数", "GC次数", "空间交换", "打开文件数", "交换分区访问"};
+//        Random random = new Random();
+//        int x = objs.length * ms.length;
+//        int xx = x / 2;
+//        int max = random.nextInt(xx) + 12;
+//        int num = 0;
+//        for (int i = 0; i < max; i++) {
+//            boolean flag = random.nextInt(888) % 2 == 0;
+//            int mi = random.nextInt(ms.length - 1);
+//            Map<String, Object> map = new HashMap<>(16);
+//            String objName = objs[i % 6];
+//            String metricsName = ms[mi];
+//            map.put("objName", objName);
+//            map.put("metricsName", metricsName);
+//            String status = "1";
+////            if (flag) {
+//            //风险
+//            num++;
+//            status = "2";
+////            }
+//            map.put("status", status);
+//            resul.add(map);
+//        }
+//
+//        result.put("num", num);
+//        result.put("data", resul);
         return success(result);
     }
 

+ 2 - 2
jjt-biz/src/main/java/com/jjt/hl/vo/HlMetricsVO.java

@@ -41,10 +41,10 @@ public class HlMetricsVO {
     @ApiModelProperty("事件ID")
     private Long eventId;
     @ApiModelProperty("事件开始时间")
-    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
     @ApiModelProperty("事件结束时间")
-    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
     @ApiModelProperty("事件状态")
     @Excel(name = "事件状态")

+ 2 - 145
jjt-biz/src/main/java/com/jjt/risk/controller/RiskAnalysisController.java

@@ -1,29 +1,18 @@
 package com.jjt.risk.controller;
 
 import com.alibaba.fastjson2.JSONArray;
-import com.alibaba.fastjson2.JSONObject;
-import com.jjt.biz.domain.BizObj;
-import com.jjt.biz.domain.BizObjMetrics;
-import com.jjt.biz.domain.BizObjMetricsData;
-import com.jjt.biz.service.IBizObjMetricsDataService;
-import com.jjt.biz.service.IBizObjMetricsService;
-import com.jjt.biz.service.IBizObjService;
 import com.jjt.common.annotation.Log;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.AjaxResult;
 import com.jjt.common.core.page.TableDataInfo;
 import com.jjt.common.enums.BusinessType;
-import com.jjt.common.utils.http.HttpUtils;
 import com.jjt.common.utils.poi.ExcelUtil;
 import com.jjt.risk.domain.RiskAnalysis;
 import com.jjt.risk.domain.RiskModel;
-import com.jjt.risk.domain.RiskObj;
 import com.jjt.risk.service.IRiskAnalysisService;
 import com.jjt.risk.service.IRiskModelService;
-import com.jjt.system.service.ISysConfigService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -33,9 +22,7 @@ import java.io.UnsupportedEncodingException;
 import java.text.DecimalFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 风险分析结果Controller
@@ -51,16 +38,6 @@ public class RiskAnalysisController extends BaseController {
     private IRiskAnalysisService riskAnalysisService;
     @Resource
     private IRiskModelService riskModelService;
-    @Resource
-    private IBizObjService objService;
-    @Resource
-    private JdbcTemplate jdbcTemplate;
-    @Resource
-    private IBizObjMetricsService objMetricsService;
-    @Resource
-    private IBizObjMetricsDataService dataService;
-    @Resource
-    private ISysConfigService configService;
 
     /**
      * 查询风险分析结果列表
@@ -101,132 +78,12 @@ public class RiskAnalysisController extends BaseController {
     @ApiOperation("立即分析")
     @GetMapping(value = "/atOnce/{riskId}")
     public AjaxResult atOnce(@PathVariable("riskId") Long riskId) throws UnsupportedEncodingException {
-        String uri = configService.selectConfigByKey("risk.api.uri");
         RiskModel rm = riskModelService.selectRiskModelByRiskId(riskId);
-        List<Long> objIds = new ArrayList<>();
-        //找到对象
-        if ("1".equals(rm.getObjType())) {
-            //1.所有对象
-            List<BizObj> list = objService.selectBizObjListByMetricsId(rm.getMetricsId());
-            if (list != null) {
-                objIds = list.stream().map(BizObj::getObjId).collect(Collectors.toList());
-            }
-        } else {
-            //2.选择的对象
-            List<RiskObj> objList = rm.getRiskObjList();
-            if (objList != null) {
-                objIds = objList.stream().map(RiskObj::getObjId).collect(Collectors.toList());
-            }
-        }
-
-        BizObjMetrics queryOm = new BizObjMetrics();
-        queryOm.setMetricsId(rm.getMetricsId());
-        List<BizObjMetrics> allMetrics = objMetricsService.selectBizObjMetricsList(queryOm);
-        Map<Long, List<BizObjMetrics>> objMap = allMetrics.stream().collect(Collectors.groupingBy(BizObjMetrics::getObjId));
-        Date time = new Date();
-//        rm.getRiskObjList()
-        Random r = new Random();
+        Date d = new Date();
+        RiskAnalysis ra = riskAnalysisService.risk(rm, d);
         if ("3".equals(rm.getRiskType())) {
-            List<Long> finalObjIds = objIds;
-            List<BizObjMetrics> list = allMetrics.stream().filter(om -> finalObjIds.contains(om.getObjId())).collect(Collectors.toList());
-            list = list.stream().sorted(Comparator.comparing(BizObjMetrics::getDValue).reversed()).collect(Collectors.toList());
-            JSONObject jsonObject = new JSONObject();
-            JSONArray dataArr = new JSONArray();
-            JSONArray inputArr = new JSONArray();
-            list.forEach(bom -> {
-                dataArr.add(bom.getDValue().floatValue());
-                JSONObject temp = new JSONObject();
-                temp.put("id", bom.getObjMetricsId());
-                temp.put("name", bom.getObjName() + "-" + bom.getMetricsName());
-                temp.put("num", bom.getDValue().floatValue());
-                inputArr.add(temp);
-            });
-            jsonObject.put("data", dataArr);
-            JSONObject result = JSONObject.parseObject(HttpUtils.dataPost(uri + "/api/sas/diff", jsonObject));
-            RiskAnalysis ra = new RiskAnalysis();
-            ra.setRiskId(riskId);
-            ra.setAnalyseTime(time);
-            // 假设jsonArray是已有的JSONArray对象
-            ra.setInput(inputArr.toString());
-            ra.setImgPath("data:image/png;base64," + result.getJSONObject("data").getString("diff"));
-            riskAnalysisService.insertRiskAnalysis(ra);
             return type3info(ra.getResultId());
         } else {
-            LocalDateTime endTime = LocalDateTime.now();
-            LocalDateTime beginTime = endTime.minusDays(7);
-            Map<String, Object> currParams = new HashMap<>(16);
-            currParams.put("beginTime", beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-            currParams.put("endTime", endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-
-            endTime = beginTime;
-            beginTime = endTime.minusDays(7);
-            Map<String, Object> lastParams = new HashMap<>(16);
-            lastParams.put("beginTime", beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-            lastParams.put("endTime", endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-
-            for (Long objId : objIds) {
-                List<BizObjMetrics> list = objMap.get(objId);
-
-                list.forEach(om -> {
-                    //查询2周的数据,调用python接口,并且存储?
-                    BizObjMetricsData currQ = new BizObjMetricsData();
-                    currQ.setObjMetricsId(om.getObjMetricsId());
-                    currQ.setParams(currParams);
-                    BizObjMetricsData lastQ = new BizObjMetricsData();
-                    lastQ.setObjMetricsId(om.getObjMetricsId());
-                    lastQ.setParams(lastParams);
-                    List<BizObjMetricsData> currList = dataService.selectBizObjMetricsDataList(currQ);
-                    List<BizObjMetricsData> lastList = dataService.selectBizObjMetricsDataList(lastQ);
-
-
-                    JSONArray currArr = new JSONArray();
-                    JSONArray lastArr = new JSONArray();
-                    JSONArray sortArr = new JSONArray();
-                    //用于补数据,因为需要本周的长度与上周相等
-                    int dataSize = currList.size();
-                    if (lastList.size() > dataSize) {
-                        dataSize = lastList.size();
-                    }
-
-                    for (int i = 0; i < dataSize; i++) {
-                        int currIndex = i;
-                        int lastIndex = i;
-                        if (currIndex >= currList.size()) {
-                            currIndex = currIndex - currList.size();
-                        }
-                        if (lastIndex >= lastList.size()) {
-                            lastIndex = lastIndex - lastList.size();
-                        }
-                        BizObjMetricsData curr = currList.get(currIndex);
-                        currArr.add(curr.getdValue().floatValue());
-
-                        BizObjMetricsData last = lastList.get(lastIndex);
-                        lastArr.add(last.getdValue().floatValue());
-                        sortArr.add(i + 1);
-                    }
-
-                    JSONObject jsonObject = new JSONObject();
-                    jsonObject.put("level", rm.getConfidenceLevel().floatValue());
-                    jsonObject.put("curr", currArr);
-                    jsonObject.put("last", lastArr);
-                    jsonObject.put("sort", sortArr);
-                    JSONObject result = JSONObject.parseObject(HttpUtils.dataPost(uri + "/api/sas/trend", jsonObject));
-                    JSONObject data = result.getJSONObject("data");
-                    RiskAnalysis ra = new RiskAnalysis();
-                    ra.setRiskId(riskId);
-                    ra.setObjId(om.getObjMetricsId());
-                    ra.setInput(jsonObject.toString());
-                    ra.setResult(data.getString("trend"));
-                    ra.setAvgValue(data.getString("ttest"));
-                    ra.setNormalValid(data.getString("shapiro"));
-                    ra.setVarianceValid(data.getString("levene"));
-                    ra.setConfidenceLevel(rm.getConfidenceLevel().toString());
-                    ra.setAnalyseTime(time);
-                    riskAnalysisService.insertRiskAnalysis(ra);
-                });
-//                rm.getMetricsId()
-
-            }
             return success();
         }
 

+ 1 - 1
jjt-biz/src/main/java/com/jjt/risk/domain/RiskAnalysis.java

@@ -98,7 +98,7 @@ public class RiskAnalysis extends BaseEntity {
      * 分析时间
      */
     @ApiModelProperty("分析时间")
-    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "分析时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date analyseTime;
 

+ 21 - 10
jjt-biz/src/main/java/com/jjt/risk/service/IRiskAnalysisService.java

@@ -1,19 +1,21 @@
 package com.jjt.risk.service;
 
-import java.util.List;
 import com.jjt.risk.domain.RiskAnalysis;
+import com.jjt.risk.domain.RiskModel;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * 风险分析结果Service接口
- * 
+ *
  * @author jjt
  * @date 2024-09-12
  */
-public interface IRiskAnalysisService 
-{
+public interface IRiskAnalysisService {
     /**
      * 查询风险分析结果
-     * 
+     *
      * @param resultId 风险分析结果主键
      * @return 风险分析结果
      */
@@ -21,7 +23,7 @@ public interface IRiskAnalysisService
 
     /**
      * 查询风险分析结果列表
-     * 
+     *
      * @param riskAnalysis 风险分析结果
      * @return 风险分析结果集合
      */
@@ -29,7 +31,7 @@ public interface IRiskAnalysisService
 
     /**
      * 新增风险分析结果
-     * 
+     *
      * @param riskAnalysis 风险分析结果
      * @return 结果
      */
@@ -37,7 +39,7 @@ public interface IRiskAnalysisService
 
     /**
      * 修改风险分析结果
-     * 
+     *
      * @param riskAnalysis 风险分析结果
      * @return 结果
      */
@@ -45,7 +47,7 @@ public interface IRiskAnalysisService
 
     /**
      * 批量删除风险分析结果
-     * 
+     *
      * @param resultIds 需要删除的风险分析结果主键集合
      * @return 结果
      */
@@ -53,9 +55,18 @@ public interface IRiskAnalysisService
 
     /**
      * 删除风险分析结果信息
-     * 
+     *
      * @param resultId 风险分析结果主键
      * @return 结果
      */
     public int deleteRiskAnalysisByResultId(Long resultId);
+
+    /**
+     * 立即分析
+     *
+     * @param rm 风险对象
+     * @param d  时间
+     * @return 结果
+     */
+    RiskAnalysis risk(RiskModel rm, Date d);
 }

+ 168 - 7
jjt-biz/src/main/java/com/jjt/risk/service/impl/RiskAnalysisServiceImpl.java

@@ -1,12 +1,29 @@
 package com.jjt.risk.service.impl;
 
-import java.util.List;
-        import com.jjt.common.utils.DateUtils;
-import org.springframework.stereotype.Service;
-import com.jjt.risk.mapper.RiskAnalysisMapper;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.jjt.biz.domain.BizObj;
+import com.jjt.biz.domain.BizObjMetrics;
+import com.jjt.biz.domain.BizObjMetricsData;
+import com.jjt.biz.service.IBizObjMetricsDataService;
+import com.jjt.biz.service.IBizObjMetricsService;
+import com.jjt.biz.service.IBizObjService;
+import com.jjt.common.utils.DateUtils;
+import com.jjt.common.utils.http.HttpUtils;
 import com.jjt.risk.domain.RiskAnalysis;
+import com.jjt.risk.domain.RiskModel;
+import com.jjt.risk.domain.RiskObj;
+import com.jjt.risk.mapper.RiskAnalysisMapper;
 import com.jjt.risk.service.IRiskAnalysisService;
+import com.jjt.risk.service.IRiskModelService;
+import com.jjt.system.service.ISysConfigService;
+import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 风险分析结果Service业务层处理
@@ -18,6 +35,16 @@ import javax.annotation.Resource;
 public class RiskAnalysisServiceImpl implements IRiskAnalysisService {
     @Resource
     private RiskAnalysisMapper riskAnalysisMapper;
+    @Resource
+    private IRiskModelService riskModelService;
+    @Resource
+    private IBizObjService objService;
+    @Resource
+    private IBizObjMetricsService objMetricsService;
+    @Resource
+    private IBizObjMetricsDataService dataService;
+    @Resource
+    private ISysConfigService configService;
 
     /**
      * 查询风险分析结果
@@ -49,8 +76,8 @@ public class RiskAnalysisServiceImpl implements IRiskAnalysisService {
      */
     @Override
     public int insertRiskAnalysis(RiskAnalysis riskAnalysis) {
-                riskAnalysis.setCreateTime(DateUtils.getNowDate());
-            return riskAnalysisMapper.insertRiskAnalysis(riskAnalysis);
+        riskAnalysis.setCreateTime(DateUtils.getNowDate());
+        return riskAnalysisMapper.insertRiskAnalysis(riskAnalysis);
     }
 
     /**
@@ -61,7 +88,7 @@ public class RiskAnalysisServiceImpl implements IRiskAnalysisService {
      */
     @Override
     public int updateRiskAnalysis(RiskAnalysis riskAnalysis) {
-                riskAnalysis.setUpdateTime(DateUtils.getNowDate());
+        riskAnalysis.setUpdateTime(DateUtils.getNowDate());
         return riskAnalysisMapper.updateRiskAnalysis(riskAnalysis);
     }
 
@@ -86,4 +113,138 @@ public class RiskAnalysisServiceImpl implements IRiskAnalysisService {
     public int deleteRiskAnalysisByResultId(Long resultId) {
         return riskAnalysisMapper.deleteRiskAnalysisByResultId(resultId);
     }
+
+    /**
+     * 立即分析
+     *
+     * @param rm 风险对象
+     * @param time  时间
+     * @return 结果
+     */
+    @Override
+    public RiskAnalysis risk(RiskModel rm, Date time) {
+        String uri = configService.selectConfigByKey("risk.api.uri");
+        List<Long> objIds = new ArrayList<>();
+        //找到对象
+        if ("1".equals(rm.getObjType())) {
+            //1.所有对象
+            List<BizObj> list = objService.selectBizObjListByMetricsId(rm.getMetricsId());
+            if (list != null) {
+                objIds = list.stream().map(BizObj::getObjId).collect(Collectors.toList());
+            }
+        } else {
+            //2.选择的对象
+            List<RiskObj> objList = rm.getRiskObjList();
+            if (objList != null) {
+                objIds = objList.stream().map(RiskObj::getObjId).collect(Collectors.toList());
+            }
+        }
+
+        BizObjMetrics queryOm = new BizObjMetrics();
+        queryOm.setMetricsId(rm.getMetricsId());
+        List<BizObjMetrics> allMetrics = objMetricsService.selectBizObjMetricsList(queryOm);
+        Map<Long, List<BizObjMetrics>> objMap = allMetrics.stream().collect(Collectors.groupingBy(BizObjMetrics::getObjId));
+        if ("3".equals(rm.getRiskType())) {
+            List<Long> finalObjIds = objIds;
+            List<BizObjMetrics> list = allMetrics.stream().filter(om -> finalObjIds.contains(om.getObjId())).collect(Collectors.toList());
+            list = list.stream().sorted(Comparator.comparing(BizObjMetrics::getDValue).reversed()).collect(Collectors.toList());
+            JSONObject jsonObject = new JSONObject();
+            JSONArray dataArr = new JSONArray();
+            JSONArray inputArr = new JSONArray();
+            list.forEach(bom -> {
+                dataArr.add(bom.getDValue().floatValue());
+                JSONObject temp = new JSONObject();
+                temp.put("id", bom.getObjMetricsId());
+                temp.put("name", bom.getObjName() + "-" + bom.getMetricsName());
+                temp.put("num", bom.getDValue().floatValue());
+                inputArr.add(temp);
+            });
+            jsonObject.put("data", dataArr);
+            JSONObject result = JSONObject.parseObject(HttpUtils.dataPost(uri + "/api/sas/diff", jsonObject));
+            RiskAnalysis ra = new RiskAnalysis();
+            ra.setRiskId(rm.getRiskId());
+            ra.setAnalyseTime(time);
+            // 假设jsonArray是已有的JSONArray对象
+            ra.setInput(inputArr.toString());
+            ra.setImgPath("data:image/png;base64," + result.getJSONObject("data").getString("diff"));
+            insertRiskAnalysis(ra);
+            return ra;
+        } else {
+            LocalDateTime endTime = LocalDateTime.now();
+            LocalDateTime beginTime = endTime.minusDays(7);
+            Map<String, Object> currParams = new HashMap<>(16);
+            currParams.put("beginTime", beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            currParams.put("endTime", endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+
+            endTime = beginTime;
+            beginTime = endTime.minusDays(7);
+            Map<String, Object> lastParams = new HashMap<>(16);
+            lastParams.put("beginTime", beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            lastParams.put("endTime", endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+
+            for (Long objId : objIds) {
+                List<BizObjMetrics> list = objMap.get(objId);
+                list.forEach(om -> {
+                    //查询2周的数据,调用python接口,并且存储?
+                    BizObjMetricsData currQ = new BizObjMetricsData();
+                    currQ.setObjMetricsId(om.getObjMetricsId());
+                    currQ.setParams(currParams);
+                    BizObjMetricsData lastQ = new BizObjMetricsData();
+                    lastQ.setObjMetricsId(om.getObjMetricsId());
+                    lastQ.setParams(lastParams);
+                    List<BizObjMetricsData> currList = dataService.selectBizObjMetricsDataList(currQ);
+                    List<BizObjMetricsData> lastList = dataService.selectBizObjMetricsDataList(lastQ);
+
+
+                    JSONArray currArr = new JSONArray();
+                    JSONArray lastArr = new JSONArray();
+                    JSONArray sortArr = new JSONArray();
+                    //用于补数据,因为需要本周的长度与上周相等
+                    int dataSize = currList.size();
+                    if (lastList.size() > dataSize) {
+                        dataSize = lastList.size();
+                    }
+
+                    for (int i = 0; i < dataSize; i++) {
+                        int currIndex = i;
+                        int lastIndex = i;
+                        if (currIndex >= currList.size()) {
+                            currIndex = currIndex - currList.size();
+                        }
+                        if (lastIndex >= lastList.size()) {
+                            lastIndex = lastIndex - lastList.size();
+                        }
+                        BizObjMetricsData curr = currList.get(currIndex);
+                        currArr.add(curr.getdValue().floatValue());
+
+                        BizObjMetricsData last = lastList.get(lastIndex);
+                        lastArr.add(last.getdValue().floatValue());
+                        sortArr.add(i + 1);
+                    }
+
+                    JSONObject jsonObject = new JSONObject();
+                    jsonObject.put("level", rm.getConfidenceLevel().floatValue());
+                    jsonObject.put("curr", currArr);
+                    jsonObject.put("last", lastArr);
+                    jsonObject.put("sort", sortArr);
+                    JSONObject result = JSONObject.parseObject(HttpUtils.dataPost(uri + "/api/sas/trend", jsonObject));
+                    JSONObject data = result.getJSONObject("data");
+                    RiskAnalysis ra = new RiskAnalysis();
+                    ra.setRiskId(rm.getRiskId());
+                    //这里要使用对象指标ID
+                    ra.setObjId(om.getObjMetricsId());
+                    ra.setInput(jsonObject.toString());
+                    ra.setResult(data.getString("trend"));
+                    ra.setAvgValue(data.getString("ttest"));
+                    ra.setNormalValid(data.getString("shapiro"));
+                    ra.setVarianceValid(data.getString("levene"));
+                    ra.setConfidenceLevel(rm.getConfidenceLevel().toString());
+                    ra.setAnalyseTime(time);
+                    insertRiskAnalysis(ra);
+                });
+
+            }
+            return null;
+        }
+    }
 }

+ 37 - 0
jjt-biz/src/main/java/com/jjt/task/RiskTask.java

@@ -0,0 +1,37 @@
+package com.jjt.task;
+
+import com.jjt.risk.domain.RiskModel;
+import com.jjt.risk.service.IRiskAnalysisService;
+import com.jjt.risk.service.IRiskModelService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 定时任务调度测试
+ *
+ * @author jjt
+ */
+@Component("riskTask")
+public class RiskTask {
+    @Resource
+    private IRiskModelService riskModelService;
+    @Resource
+    private IRiskAnalysisService analysisService;
+
+    /**
+     * 分析
+     */
+    public void risk() {
+        RiskModel q = new RiskModel();
+        q.setTimeSwitch("Y");
+        Date d = new Date();
+        List<RiskModel> list = riskModelService.selectRiskModelList(q);
+        list.forEach(rm -> {
+            analysisService.risk(rm,d);
+        });
+
+    }
+}

+ 1 - 0
jjt-biz/src/main/resources/mapper/risk/RiskAnalysisMapper.xml

@@ -114,6 +114,7 @@
                 and REMARK = #{remark}
             </if>
         </where>
+        order by ANALYSE_TIME desc
     </select>
 
     <select id="selectRiskAnalysisByResultId" parameterType="Long"