团队项目个人博客1.0
我今天建好了安全风险项点模块的数据库表:
CREATE TABLE risk_management (
id VARCHAR(20) PRIMARY KEY COMMENT '编号,主键',
responsible_department VARCHAR(50) NOT NULL COMMENT '责任部门/工区',
risk_code VARCHAR(30) NOT NULL COMMENT '风险编码',
professional_system VARCHAR(50) COMMENT '专业系统',
risk_category VARCHAR(50) NOT NULL COMMENT '风险类别',
risk_project VARCHAR(100) NOT NULL COMMENT '风险项目',
risk_point VARCHAR(200) NOT NULL COMMENT '风险项点',
risk_level VARCHAR(10) NOT NULL COMMENT '风险等级',
harm_degree TEXT COMMENT '危害程度描述',
control_measures TEXT NOT NULL COMMENT '管控措施',
control_position VARCHAR(50) COMMENT '管控岗位',
control_person VARCHAR(50) COMMENT '管控人员',
quantitative_requirements TEXT COMMENT '量化要求',
entry_date DATE NOT NULL COMMENT '录入日期',
audit_status VARCHAR(20) DEFAULT '待审核' COMMENT '审核状态(待审核/已审核/已驳回)',
audit_date DATE COMMENT '审核日期',
INDEX idx_department (responsible_department),
INDEX idx_risk_code (risk_code),
INDEX idx_risk_level (risk_level),
INDEX idx_audit_status (audit_status),
INDEX idx_entry_date (entry_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='风险管控信息表';
以及实现手动录入安全风险项点和部分增删改查功能:
package com.example.riskmanagement.controller;
import com.example.riskmanagement.entity.RiskManagement;
import com.example.riskmanagement.service.RiskManagementService;
import com.example.riskmanagement.vo.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/risk")
public class RiskManagementController {
@Autowired
private RiskManagementService riskService;
// 添加风险项
@PostMapping
public ResultVO<String> addRisk(@RequestBody RiskManagement risk) {
String warning = riskService.addRiskWithCheck(risk);
if (warning != null) {
return ResultVO.success(warning);
}
return ResultVO.success("风险项添加成功");
}
// 多条件查询
@GetMapping
public ResultVO<List<RiskManagement>> queryRisks(
@RequestParam(required = false) String department,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate,
@RequestParam(required = false) String system,
@RequestParam(required = false) String category,
@RequestParam(required = false) String level,
@RequestParam(required = false) String harmDegree) {
List<RiskManagement> risks = riskService.queryRisks(
department, startDate, endDate, system, category, level, harmDegree);
return ResultVO.success(risks);
}
// 获取风险统计
@GetMapping("/statistics/department")
public ResultVO<List<Map<String, Object>>> getDepartmentStatistics() {
return ResultVO.success(riskService.getRiskStatisticsByDepartment());
}
// 获取风险趋势
@GetMapping("/statistics/trend")
public ResultVO<List<Map<String, Object>>> getRiskTrend() {
return ResultVO.success(riskService.getRiskTrendAnalysis());
}
// 批量导入
@PostMapping("/import")
public ResultVO<Integer> importRisks(@RequestParam("file") MultipartFile file) {
// 实际项目中需要解析Excel文件为RiskManagement列表
// List<RiskManagement> risks = parseExcel(file);
// int count = riskService.batchImport(risks);
// return ResultVO.success(count);
return ResultVO.success(0);
}
// 批量导出
@GetMapping("/export")
public void exportRisks(
@RequestParam(required = false) String department,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate,
HttpServletResponse response) throws IOException {
riskService.exportRisks(response, department, startDate, endDate);
}
// 审核风险项
@PutMapping("/{id}/audit")
public ResultVO<Boolean> auditRisk(
@PathVariable String id,
@RequestParam String status) {
int result = riskService.auditRisk(id, status);
return ResultVO.success(result > 0);
}
// 更新风险项
@PutMapping("/{id}")
public ResultVO<Boolean> updateRisk(
@PathVariable String id,
@RequestBody RiskManagement risk) {
risk.setId(id);
int result = riskService.updateRisk(risk);
return ResultVO.success(result > 0);
}
// 删除风险项
@DeleteMapping("/{id}")
public ResultVO<Boolean> deleteRisk(@PathVariable String id) {
int result = riskService.deleteRisk(id);
return ResultVO.success(result > 0);
}
}
package com.example.riskmanagement.service.impl;
import com.example.riskmanagement.entity.RiskManagement;
import com.example.riskmanagement.mapper.RiskManagementMapper;
import com.example.riskmanagement.service.RiskManagementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class RiskManagementServiceImpl implements RiskManagementService {
@Autowired
private RiskManagementMapper riskManagementMapper;
@Override
public String checkSimilarRisks(RiskManagement risk) {
List<RiskManagement> similarRisks = riskManagementMapper.findSimilarRisks(
risk.getRiskProject(), risk.getRiskPoint());
if (!similarRisks.isEmpty()) {
StringBuilder sb = new StringBuilder("本次录入内容与风险库中以下内容相似或接近,建议进行合并:");
for (RiskManagement similar : similarRisks) {
sb.append("\n编号 ").append(similar.getId())
.append(": ").append(similar.getRiskProject());
}
return sb.toString();
}
return null;
}
@Override
@Transactional
public String addRiskWithCheck(RiskManagement risk) {
String warning = checkSimilarRisks(risk);
risk.setEntryDate(new Date());
risk.setAuditStatus("待审核");
riskManagementMapper.insert(risk);
return warning;
}
@Override
public List<RiskManagement> queryRisks(String department, Date startDate, Date endDate,
String system, String category, String level,
String harmDegree) {
return riskManagementMapper.findByConditions(
department, startDate, endDate, system, category, level, harmDegree);
}
@Override
public List<Map<String, Object>> getRisksNeedUpdate(int days, String riskLevel) {
return riskManagementMapper.findRisksNeedUpdate(days, riskLevel);
}
@Override
@Transactional
public int batchImport(List<RiskManagement> risks) {
int count = 0;
for (RiskManagement risk : risks) {
if (risk.getRiskProject() == null || risk.getRiskProject().isEmpty() ||
risk.getRiskPoint() == null || risk.getRiskPoint().isEmpty()) {
continue;
}
if (risk.getEntryDate() == null) {
risk.setEntryDate(new Date());
}
if (risk.getAuditStatus() == null || risk.getAuditStatus().isEmpty()) {
risk.setAuditStatus("待审核");
}
riskManagementMapper.insert(risk);
count++;
}
return count;
}
@Override
public void exportRisks(HttpServletResponse response, String department,
Date startDate, Date endDate) throws IOException {
List<RiskManagement> risks = riskManagementMapper.findByConditions(
department, startDate, endDate, null, null, null, null);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("风险数据导出", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".csv");
try (PrintWriter writer = response.getWriter()) {
writer.println("编号,责任部门,风险编码,专业系统,风险类别,风险项目,风险项点,风险等级,危害程度,管控措施,管控岗位,管控人员,量化要求,录入日期,审核状态,审核日期");
for (RiskManagement risk : risks) {
writer.println(String.join(",",
risk.getId(),
risk.getResponsibleDepartment(),
risk.getRiskCode(),
risk.getProfessionalSystem(),
risk.getRiskCategory(),
risk.getRiskProject(),
risk.getRiskPoint(),
risk.getRiskLevel(),
risk.getHarmDegree(),
risk.getControlMeasures(),
risk.getControlPosition(),
risk.getControlPerson(),
risk.getQuantitativeRequirements(),
new SimpleDateFormat("yyyy-MM-dd").format(risk.getEntryDate()),
risk.getAuditStatus(),
risk.getAuditDate() != null ? new SimpleDateFormat("yyyy-MM-dd").format(risk.getAuditDate()) : ""
));
}
}
}
@Override
public List<Map<String, Object>> getRiskStatisticsByDepartment() {
return riskManagementMapper.countByDepartment();
}
@Override
public List<Map<String, Object>> getRiskTrendAnalysis() {
return riskManagementMapper.trendAnalysis();
}
@Override
public RiskManagement getById(String id) {
// 需要先在mapper中添加此方法
return riskManagementMapper.selectById(id);
}
@Override
@Transactional
public int updateRisk(RiskManagement risk) {
return riskManagementMapper.update(risk);
}
@Override
@Transactional
public int deleteRisk(String id) {
return riskManagementMapper.delete(id);
}
@Override
@Transactional
public int auditRisk(String id, String status) {
return riskManagementMapper.updateAuditStatus(id, status);
}
}
今天的总查询出了点问题,页面显示不出来数据库表中的数据,最后只能先把它这部分删掉了,明天再看看怎么个事,下面是删除总查询前的截图



浙公网安备 33010602011771号