|
@@ -1,29 +1,18 @@
|
|
|
package com.jjt.risk.controller;
|
|
package com.jjt.risk.controller;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
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.annotation.Log;
|
|
|
import com.jjt.common.core.controller.BaseController;
|
|
import com.jjt.common.core.controller.BaseController;
|
|
|
import com.jjt.common.core.domain.AjaxResult;
|
|
import com.jjt.common.core.domain.AjaxResult;
|
|
|
import com.jjt.common.core.page.TableDataInfo;
|
|
import com.jjt.common.core.page.TableDataInfo;
|
|
|
import com.jjt.common.enums.BusinessType;
|
|
import com.jjt.common.enums.BusinessType;
|
|
|
-import com.jjt.common.utils.http.HttpUtils;
|
|
|
|
|
import com.jjt.common.utils.poi.ExcelUtil;
|
|
import com.jjt.common.utils.poi.ExcelUtil;
|
|
|
import com.jjt.risk.domain.RiskAnalysis;
|
|
import com.jjt.risk.domain.RiskAnalysis;
|
|
|
import com.jjt.risk.domain.RiskModel;
|
|
import com.jjt.risk.domain.RiskModel;
|
|
|
-import com.jjt.risk.domain.RiskObj;
|
|
|
|
|
import com.jjt.risk.service.IRiskAnalysisService;
|
|
import com.jjt.risk.service.IRiskAnalysisService;
|
|
|
import com.jjt.risk.service.IRiskModelService;
|
|
import com.jjt.risk.service.IRiskModelService;
|
|
|
-import com.jjt.system.service.ISysConfigService;
|
|
|
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
-import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
@@ -33,9 +22,7 @@ import java.io.UnsupportedEncodingException;
|
|
|
import java.text.DecimalFormat;
|
|
import java.text.DecimalFormat;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneOffset;
|
|
import java.time.ZoneOffset;
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 风险分析结果Controller
|
|
* 风险分析结果Controller
|
|
@@ -51,16 +38,6 @@ public class RiskAnalysisController extends BaseController {
|
|
|
private IRiskAnalysisService riskAnalysisService;
|
|
private IRiskAnalysisService riskAnalysisService;
|
|
|
@Resource
|
|
@Resource
|
|
|
private IRiskModelService riskModelService;
|
|
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("立即分析")
|
|
@ApiOperation("立即分析")
|
|
|
@GetMapping(value = "/atOnce/{riskId}")
|
|
@GetMapping(value = "/atOnce/{riskId}")
|
|
|
public AjaxResult atOnce(@PathVariable("riskId") Long riskId) throws UnsupportedEncodingException {
|
|
public AjaxResult atOnce(@PathVariable("riskId") Long riskId) throws UnsupportedEncodingException {
|
|
|
- String uri = configService.selectConfigByKey("risk.api.uri");
|
|
|
|
|
RiskModel rm = riskModelService.selectRiskModelByRiskId(riskId);
|
|
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())) {
|
|
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());
|
|
return type3info(ra.getResultId());
|
|
|
} else {
|
|
} 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();
|
|
return success();
|
|
|
}
|
|
}
|
|
|
|
|
|