package com.jjt.risk.controller; import com.alibaba.fastjson2.JSONArray; 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.poi.ExcelUtil; import com.jjt.risk.domain.RiskAnalysis; import com.jjt.risk.domain.RiskModel; import com.jjt.risk.service.IRiskAnalysisService; import com.jjt.risk.service.IRiskModelService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.text.DecimalFormat; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.*; /** * 风险分析结果Controller * * @author jjt * @date 2024-09-12 */ @Api(tags = "风险分析结果") @RestController @RequestMapping("/risk/analysis") public class RiskAnalysisController extends BaseController { @Resource private IRiskAnalysisService riskAnalysisService; @Resource private IRiskModelService riskModelService; /** * 查询风险分析结果列表 */ @ApiOperation("查询风险分析结果列表") @PreAuthorize("@ss.hasPermi('risk:analysis:list')") @GetMapping("/list") public TableDataInfo list(RiskAnalysis riskAnalysis) { startPage(); List list = riskAnalysisService.selectRiskAnalysisList(riskAnalysis); return getDataTable(list); } /** * 导出风险分析结果列表 */ @ApiOperation("导出风险分析结果列表") @PreAuthorize("@ss.hasPermi('risk:analysis:export')") @Log(title = "风险分析结果", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, RiskAnalysis riskAnalysis) { List list = riskAnalysisService.selectRiskAnalysisList(riskAnalysis); ExcelUtil util = new ExcelUtil(RiskAnalysis.class); util.exportExcel(response, list, "风险分析结果数据"); } /** * 获取风险分析结果详细信息 */ @ApiOperation("获取风险分析结果详细信息") @PreAuthorize("@ss.hasPermi('risk:analysis:query')") @GetMapping(value = "/{resultId}") public AjaxResult getInfo(@PathVariable("resultId") Long resultId) { riskAnalysisService.selectRiskAnalysisByResultId(resultId); return success(); } @ApiOperation("立即分析") @GetMapping(value = "/atOnce/{riskId}") public AjaxResult atOnce(@PathVariable("riskId") Long riskId) { RiskModel rm = riskModelService.selectRiskModelByRiskId(riskId); Date d = new Date(); try { RiskAnalysis ra = riskAnalysisService.risk(rm, d); if ("3".equals(rm.getRiskType())) { return type3info(ra.getResultId()); } else { return success(); } } catch (Exception e) { return error(e.getMessage()); } } @ApiOperation("获取异类组件分析结果") @GetMapping(value = "/type3/result/{resultId}") public AjaxResult type3info(@PathVariable("resultId") Long resultId) { Map result = new HashMap<>(16); RiskAnalysis analysis = riskAnalysisService.selectRiskAnalysisByResultId(resultId); result.put("imgPath", analysis.getImgPath()); result.put("top", JSONArray.parseArray(analysis.getInput())); return success(result); } @ApiOperation("根据对象获取曲线") @GetMapping(value = "/type3/trend/{id}") public AjaxResult type3trend(@PathVariable("id") Long id) { Map result = new HashMap<>(16); List> list = new ArrayList(); LocalDateTime ed = LocalDateTime.now(); LocalDateTime st = ed.minusDays(7); List times = new ArrayList<>(); List values = new ArrayList<>(); Random r = new Random(); DecimalFormat df = new DecimalFormat("#0.00"); do { long time = st.toEpochSecond(ZoneOffset.ofHours(8)) * 1000; times.add(time); float f = r.nextFloat() * 100; // System.err.println(df.format(f)); values.add(Float.parseFloat(df.format(f))); st = st.plusMinutes(15); } while (!st.isAfter(ed)); result.put("times", times); result.put("values", values); return success(result); } /** * 新增风险分析结果 */ @ApiOperation("新增风险分析结果") @PreAuthorize("@ss.hasPermi('risk:analysis:add')") @Log(title = "风险分析结果", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody RiskAnalysis riskAnalysis) { return toAjax(riskAnalysisService.insertRiskAnalysis(riskAnalysis)); } /** * 修改风险分析结果 */ @ApiOperation("修改风险分析结果") @PreAuthorize("@ss.hasPermi('risk:analysis:edit')") @Log(title = "风险分析结果", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody RiskAnalysis riskAnalysis) { return toAjax(riskAnalysisService.updateRiskAnalysis(riskAnalysis)); } /** * 删除风险分析结果 */ @ApiOperation("删除风险分析结果") @PreAuthorize("@ss.hasPermi('risk:analysis:remove')") @Log(title = "风险分析结果", businessType = BusinessType.DELETE) @GetMapping("/del/{resultIds}") public AjaxResult remove(@PathVariable Long[] resultIds) { return toAjax(riskAnalysisService.deleteRiskAnalysisByResultIds(resultIds)); } }