RiskAnalysisController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package com.jjt.risk.controller;
  2. import com.alibaba.fastjson2.JSONArray;
  3. import com.jjt.common.annotation.Log;
  4. import com.jjt.common.core.controller.BaseController;
  5. import com.jjt.common.core.domain.AjaxResult;
  6. import com.jjt.common.core.page.TableDataInfo;
  7. import com.jjt.common.enums.BusinessType;
  8. import com.jjt.common.utils.poi.ExcelUtil;
  9. import com.jjt.risk.domain.RiskAnalysis;
  10. import com.jjt.risk.domain.RiskModel;
  11. import com.jjt.risk.service.IRiskAnalysisService;
  12. import com.jjt.risk.service.IRiskModelService;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import org.springframework.security.access.prepost.PreAuthorize;
  16. import org.springframework.web.bind.annotation.*;
  17. import javax.annotation.Resource;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.text.DecimalFormat;
  20. import java.time.LocalDateTime;
  21. import java.time.ZoneOffset;
  22. import java.util.*;
  23. /**
  24. * 风险分析结果Controller
  25. *
  26. * @author jjt
  27. * @date 2024-09-12
  28. */
  29. @Api(tags = "风险分析结果")
  30. @RestController
  31. @RequestMapping("/risk/analysis")
  32. public class RiskAnalysisController extends BaseController {
  33. @Resource
  34. private IRiskAnalysisService riskAnalysisService;
  35. @Resource
  36. private IRiskModelService riskModelService;
  37. /**
  38. * 查询风险分析结果列表
  39. */
  40. @ApiOperation("查询风险分析结果列表")
  41. @PreAuthorize("@ss.hasPermi('risk:analysis:list')")
  42. @GetMapping("/list")
  43. public TableDataInfo list(RiskAnalysis riskAnalysis) {
  44. startPage();
  45. List<RiskAnalysis> list = riskAnalysisService.selectRiskAnalysisList(riskAnalysis);
  46. return getDataTable(list);
  47. }
  48. /**
  49. * 导出风险分析结果列表
  50. */
  51. @ApiOperation("导出风险分析结果列表")
  52. @PreAuthorize("@ss.hasPermi('risk:analysis:export')")
  53. @Log(title = "风险分析结果", businessType = BusinessType.EXPORT)
  54. @PostMapping("/export")
  55. public void export(HttpServletResponse response, RiskAnalysis riskAnalysis) {
  56. List<RiskAnalysis> list = riskAnalysisService.selectRiskAnalysisList(riskAnalysis);
  57. ExcelUtil<RiskAnalysis> util = new ExcelUtil<RiskAnalysis>(RiskAnalysis.class);
  58. util.exportExcel(response, list, "风险分析结果数据");
  59. }
  60. /**
  61. * 获取风险分析结果详细信息
  62. */
  63. @ApiOperation("获取风险分析结果详细信息")
  64. @PreAuthorize("@ss.hasPermi('risk:analysis:query')")
  65. @GetMapping(value = "/{resultId}")
  66. public AjaxResult getInfo(@PathVariable("resultId") Long resultId) {
  67. riskAnalysisService.selectRiskAnalysisByResultId(resultId);
  68. return success();
  69. }
  70. @ApiOperation("立即分析")
  71. @GetMapping(value = "/atOnce/{riskId}")
  72. public AjaxResult atOnce(@PathVariable("riskId") Long riskId) {
  73. RiskModel rm = riskModelService.selectRiskModelByRiskId(riskId);
  74. Date d = new Date();
  75. try {
  76. RiskAnalysis ra = riskAnalysisService.risk(rm, d);
  77. if ("3".equals(rm.getRiskType())) {
  78. return type3info(ra.getResultId());
  79. } else {
  80. return success();
  81. }
  82. } catch (Exception e) {
  83. return error(e.getMessage());
  84. }
  85. }
  86. @ApiOperation("获取异类组件分析结果")
  87. @GetMapping(value = "/type3/result/{resultId}")
  88. public AjaxResult type3info(@PathVariable("resultId") Long resultId) {
  89. Map<String, Object> result = new HashMap<>(16);
  90. RiskAnalysis analysis = riskAnalysisService.selectRiskAnalysisByResultId(resultId);
  91. result.put("imgPath", analysis.getImgPath());
  92. result.put("top", JSONArray.parseArray(analysis.getInput()));
  93. return success(result);
  94. }
  95. @ApiOperation("根据对象获取曲线")
  96. @GetMapping(value = "/type3/trend/{id}")
  97. public AjaxResult type3trend(@PathVariable("id") Long id) {
  98. Map<String, Object> result = new HashMap<>(16);
  99. List<Map<String, Object>> list = new ArrayList();
  100. LocalDateTime ed = LocalDateTime.now();
  101. LocalDateTime st = ed.minusDays(7);
  102. List<Long> times = new ArrayList<>();
  103. List<Float> values = new ArrayList<>();
  104. Random r = new Random();
  105. DecimalFormat df = new DecimalFormat("#0.00");
  106. do {
  107. long time = st.toEpochSecond(ZoneOffset.ofHours(8)) * 1000;
  108. times.add(time);
  109. float f = r.nextFloat() * 100;
  110. // System.err.println(df.format(f));
  111. values.add(Float.parseFloat(df.format(f)));
  112. st = st.plusMinutes(15);
  113. } while (!st.isAfter(ed));
  114. result.put("times", times);
  115. result.put("values", values);
  116. return success(result);
  117. }
  118. /**
  119. * 新增风险分析结果
  120. */
  121. @ApiOperation("新增风险分析结果")
  122. @PreAuthorize("@ss.hasPermi('risk:analysis:add')")
  123. @Log(title = "风险分析结果", businessType = BusinessType.INSERT)
  124. @PostMapping
  125. public AjaxResult add(@RequestBody RiskAnalysis riskAnalysis) {
  126. return toAjax(riskAnalysisService.insertRiskAnalysis(riskAnalysis));
  127. }
  128. /**
  129. * 修改风险分析结果
  130. */
  131. @ApiOperation("修改风险分析结果")
  132. @PreAuthorize("@ss.hasPermi('risk:analysis:edit')")
  133. @Log(title = "风险分析结果", businessType = BusinessType.UPDATE)
  134. @PostMapping("/edit")
  135. public AjaxResult edit(@RequestBody RiskAnalysis riskAnalysis) {
  136. return toAjax(riskAnalysisService.updateRiskAnalysis(riskAnalysis));
  137. }
  138. /**
  139. * 删除风险分析结果
  140. */
  141. @ApiOperation("删除风险分析结果")
  142. @PreAuthorize("@ss.hasPermi('risk:analysis:remove')")
  143. @Log(title = "风险分析结果", businessType = BusinessType.DELETE)
  144. @GetMapping("/del/{resultIds}")
  145. public AjaxResult remove(@PathVariable Long[] resultIds) {
  146. return toAjax(riskAnalysisService.deleteRiskAnalysisByResultIds(resultIds));
  147. }
  148. }