优化预警统计;预警根据配置新增;预警记录中严重度取场次中最高等级;

This commit is contained in:
cjw 2024-04-23 15:43:52 +08:00
parent ba3562027c
commit 110d28c64f
12 changed files with 91 additions and 56 deletions

View File

@ -28,7 +28,7 @@ public class StatisticController extends BaseController {
private final IStatisticService statisticService; private final IStatisticService statisticService;
/** /**
* 获取完成情况统计 * 获取完成情况统计-整体
*/ */
@GetMapping("/complete/all") @GetMapping("/complete/all")
public R<List<StatisticNumVo>> getComplete(BaseQueryBo query) { public R<List<StatisticNumVo>> getComplete(BaseQueryBo query) {
@ -36,7 +36,7 @@ public class StatisticController extends BaseController {
} }
/** /**
* 获取完成情况统计 * 获取完成情况统计-班级
*/ */
@GetMapping("/complete/class") @GetMapping("/complete/class")
public R<List<StatisticNumVo>> getComplete4Class(BaseQueryBo query) { public R<List<StatisticNumVo>> getComplete4Class(BaseQueryBo query) {
@ -44,22 +44,23 @@ public class StatisticController extends BaseController {
} }
/** /**
* 获取预警情况统计 * 获取预警情况统计-整体
*/ */
@GetMapping("/warn/all") @GetMapping("/warn/all")
public R<StatisticWarnVo> getWarn(BaseQueryBo query) { public R<List<StatisticWarnVo>> getWarn(BaseQueryBo query) {
return R.ok(statisticService.getWarn4All(query)); return R.ok(statisticService.getWarn4All(query));
} }
/** /**
* 获取预警情况统计 * 获取预警情况统计-班级
*/ */
@GetMapping("/warn/class") @GetMapping("/warn/class")
public R<List<StatisticWarnVo>> getWarn4Class(BaseQueryBo query) { public R<List<StatisticWarnVo>> getWarn4Class(BaseQueryBo query) {
return R.ok(statisticService.getWarn4Class(query)); return R.ok(statisticService.getWarn4Class(query));
} }
/** /**
* 获取预警情况统计 * 获取预警情况统计-整体
*/ */
@GetMapping("/factor/all") @GetMapping("/factor/all")
public R<List<StatisticNumVo>> getFactor(BaseQueryBo query) { public R<List<StatisticNumVo>> getFactor(BaseQueryBo query) {
@ -67,7 +68,7 @@ public class StatisticController extends BaseController {
} }
/** /**
* 获取预警情况统计 * 获取预警情况统计-班级
*/ */
@GetMapping("/factor/class") @GetMapping("/factor/class")
public R<List<StatisticNumVo>> getFactor4Class(BaseQueryBo query) { public R<List<StatisticNumVo>> getFactor4Class(BaseQueryBo query) {

View File

@ -36,7 +36,7 @@ public class SysEvaluationConclusionController extends BaseController {
/** /**
* 获取量测结果列表 * 获取量测结果列表
*/ */
@SaCheckPermission("scale:evaluationConclusion:query") @SaCheckPermission("evaluation:conclusion:query")
@GetMapping("/list") @GetMapping("/list")
public R<List<SysEvaluationConclusionVo>> getList(SysEvaluationConclusionBo bo) { public R<List<SysEvaluationConclusionVo>> getList(SysEvaluationConclusionBo bo) {
return R.ok(sysEvaluationConclusionService.queryList(bo)); return R.ok(sysEvaluationConclusionService.queryList(bo));
@ -45,7 +45,7 @@ public class SysEvaluationConclusionController extends BaseController {
/** /**
* 导出量测结果列表 * 导出量测结果列表
*/ */
@SaCheckPermission("scale:evaluationConclusion:export") @SaCheckPermission("evaluation:conclusion:export")
@Log(title = "量测结果", businessType = BusinessType.EXPORT) @Log(title = "量测结果", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(SysEvaluationConclusionBo bo, HttpServletResponse response) { public void export(SysEvaluationConclusionBo bo, HttpServletResponse response) {

View File

@ -45,7 +45,7 @@ public class SysInterveneRecordController extends BaseController {
/** /**
* 导出干预记录列表 * 导出干预记录列表
*/ */
@SaCheckPermission("scale:intervene:export") @SaCheckPermission("intervene:record:export")
@Log(title = "干预记录", businessType = BusinessType.EXPORT) @Log(title = "干预记录", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(SysInterveneRecordBo bo, HttpServletResponse response) { public void export(SysInterveneRecordBo bo, HttpServletResponse response) {
@ -58,7 +58,7 @@ public class SysInterveneRecordController extends BaseController {
* *
* @param interveneId 主键 * @param interveneId 主键
*/ */
@SaCheckPermission("scale:intervene:query") @SaCheckPermission("intervene:record:query")
@GetMapping("/{interveneId}") @GetMapping("/{interveneId}")
public R<SysInterveneRecordVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long interveneId) { public R<SysInterveneRecordVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long interveneId) {
return R.ok(sysInterveneRecordService.queryById(interveneId)); return R.ok(sysInterveneRecordService.queryById(interveneId));
@ -67,7 +67,7 @@ public class SysInterveneRecordController extends BaseController {
/** /**
* 新增干预记录 * 新增干预记录
*/ */
@SaCheckPermission("scale:intervene:add") @SaCheckPermission("intervene:record:add")
@Log(title = "干预记录", businessType = BusinessType.INSERT) @Log(title = "干预记录", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping()

View File

@ -40,7 +40,7 @@ public class SysWarnController extends BaseController {
/** /**
* 查询预警记录列表 * 查询预警记录列表
*/ */
@SaCheckPermission("scale:warn:list") @SaCheckPermission("warn:record:list")
@GetMapping("/pageList") @GetMapping("/pageList")
public TableDataInfo<SysWarnRecordVo> list(SysWarnRecordBo bo, PageQuery pageQuery) { public TableDataInfo<SysWarnRecordVo> list(SysWarnRecordBo bo, PageQuery pageQuery) {
return sysWarnRecordService.queryPageList(bo, pageQuery); return sysWarnRecordService.queryPageList(bo, pageQuery);
@ -49,7 +49,7 @@ public class SysWarnController extends BaseController {
/** /**
* 导出预警记录列表 * 导出预警记录列表
*/ */
@SaCheckPermission("scale:warn:export") @SaCheckPermission("warn:record:export")
@Log(title = "预警记录", businessType = BusinessType.EXPORT) @Log(title = "预警记录", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(SysWarnRecordBo bo, HttpServletResponse response) { public void export(SysWarnRecordBo bo, HttpServletResponse response) {
@ -62,7 +62,7 @@ public class SysWarnController extends BaseController {
* *
* @param warnId 主键 * @param warnId 主键
*/ */
@SaCheckPermission("scale:warn:query") @SaCheckPermission("warn:record:query")
@GetMapping("/{warnId}") @GetMapping("/{warnId}")
public R<SysWarnRecordVo> getInfo(@NotNull(message = "主键不能为空") public R<SysWarnRecordVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long warnId) { @PathVariable Long warnId) {
@ -72,7 +72,7 @@ public class SysWarnController extends BaseController {
/** /**
* 修改预警记录 * 修改预警记录
*/ */
@SaCheckPermission("scale:warn:edit") @SaCheckPermission("warn:record:edit")
@Log(title = "预警记录", businessType = BusinessType.UPDATE) @Log(title = "预警记录", businessType = BusinessType.UPDATE)
@RepeatSubmit() @RepeatSubmit()
@PutMapping() @PutMapping()
@ -86,17 +86,17 @@ public class SysWarnController extends BaseController {
* @param warnId * @param warnId
* @return * @return
*/ */
@SaCheckPermission("scale:warn:query") @SaCheckPermission("warn:record:query")
@GetMapping("/evaluation/record") @GetMapping("/evaluation/record")
public R<List<SysEvaluationRecordVo>> getEvaluationRecordList(@NotNull(message = "主键不能为空") Long warnId) { public R<List<SysEvaluationRecordVo>> getEvaluationRecordList(@NotNull(message = "主键不能为空") Long warnId) {
return R.ok(sysWarnRecordService.queryConclusionListByWarnId(warnId)); return R.ok(sysWarnRecordService.queryConclusionListByWarnId(warnId));
} }
/** /**
* 修改预警记录 * 修改预警配置
*/ */
@SaCheckPermission("scale:warn:edit") @SaCheckPermission("warn:config:edit")
@Log(title = "预警记录", businessType = BusinessType.UPDATE) @Log(title = "预警配置", businessType = BusinessType.UPDATE)
@RepeatSubmit() @RepeatSubmit()
@PutMapping("/config/{ids}") @PutMapping("/config/{ids}")
public R<Void> config(@NotEmpty(message = "主键不能为空") public R<Void> config(@NotEmpty(message = "主键不能为空")

View File

@ -41,6 +41,11 @@ public class SysWarnRecord {
*/ */
private String note; private String note;
/**
* 严重度
*/
private Integer situation;
/** /**
* 预警时间 * 预警时间
*/ */

View File

@ -7,7 +7,7 @@ import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
* <p>统计完成<p> * <p>基础统计类<p>
* *
* @author cjw * @author cjw
* @version V1.0.0 * @version V1.0.0

View File

@ -28,5 +28,7 @@ public interface SysWarnRecordMapper extends BaseMapperPlus<SysWarnRecord, SysWa
int updateConfigByIds(String ids); int updateConfigByIds(String ids);
List<Integer> selectUseConfig();
} }

View File

@ -14,7 +14,7 @@ public interface IStatisticService {
List<StatisticNumVo> getComplete4Class(BaseQueryBo query); List<StatisticNumVo> getComplete4Class(BaseQueryBo query);
StatisticWarnVo getWarn4All(BaseQueryBo query); List<StatisticWarnVo> getWarn4All(BaseQueryBo query);
List<StatisticWarnVo> getWarn4Class(BaseQueryBo query); List<StatisticWarnVo> getWarn4Class(BaseQueryBo query);

View File

@ -35,7 +35,7 @@ public class StatisticServiceImpl implements IStatisticService {
List<StatisticNumVo> statisticNumVos = statisticMapper.selectCompleteAvaluation(batchNo, scaleId); List<StatisticNumVo> statisticNumVos = statisticMapper.selectCompleteAvaluation(batchNo, scaleId);
Map<String, List<StatisticNumVo>> collect = statisticNumVos.stream() Map<String, List<StatisticNumVo>> collect = statisticNumVos.stream()
.collect(Collectors.groupingBy(StatisticNumVo::getParentName)); .collect(Collectors.groupingBy(StatisticNumVo::getParentName));
return processData(collect); return processCompleteData(collect);
} }
@Override @Override
@ -45,10 +45,10 @@ public class StatisticServiceImpl implements IStatisticService {
List<StatisticNumVo> statisticNumVos = statisticMapper.selectCompleteAvaluation(batchNo, scaleId); List<StatisticNumVo> statisticNumVos = statisticMapper.selectCompleteAvaluation(batchNo, scaleId);
Map<String, List<StatisticNumVo>> collect = statisticNumVos.stream() Map<String, List<StatisticNumVo>> collect = statisticNumVos.stream()
.collect(Collectors.groupingBy(StatisticNumVo::getDeptName)); .collect(Collectors.groupingBy(StatisticNumVo::getDeptName));
return processData(collect); return processCompleteData(collect);
} }
private List<StatisticNumVo> processData(Map<String, List<StatisticNumVo>> collect) { private List<StatisticNumVo> processCompleteData(Map<String, List<StatisticNumVo>> collect) {
Set<String> keys = collect.keySet(); Set<String> keys = collect.keySet();
List<StatisticNumVo> data = new ArrayList<>(); List<StatisticNumVo> data = new ArrayList<>();
for (String key : keys) { for (String key : keys) {
@ -65,31 +65,45 @@ public class StatisticServiceImpl implements IStatisticService {
} }
@Override @Override
public StatisticWarnVo getWarn4All(BaseQueryBo query) { public List<StatisticWarnVo> getWarn4All(BaseQueryBo query) {
Long batchNo = query.getBatchNo(); Long batchNo = query.getBatchNo();
Long scaleId = query.getScaleId(); Long scaleId = query.getScaleId();
List<StatisticWarnVo> list = statisticMapper.selectStatisticWarn(batchNo, scaleId); List<StatisticWarnVo> statisticWarnVos = statisticMapper.selectStatisticWarn(batchNo, scaleId);
int noneNum = list.stream().mapToInt(StatisticWarnVo::getNoneNum).sum(); Map<String, List<StatisticWarnVo>> collect = statisticWarnVos.stream()
int lowNum = list.stream().mapToInt(StatisticWarnVo::getLowNum).sum(); .collect(Collectors.groupingBy(StatisticWarnVo::getParentName));
int middleNum = list.stream().mapToInt(StatisticWarnVo::getMiddleNum).sum(); return processWarnData(collect);
int highNum = list.stream().mapToInt(StatisticWarnVo::getHighNum).sum();
int majorNum = list.stream().mapToInt(StatisticWarnVo::getMajorNum).sum();
StatisticWarnVo data = new StatisticWarnVo();
//data.setDeptName(deptName);
data.setNoneNum(noneNum);
data.setLowNum(lowNum);
data.setMiddleNum(middleNum);
data.setHighNum(highNum);
data.setMajorNum(majorNum);
return data;
} }
@Override @Override
public List<StatisticWarnVo> getWarn4Class(BaseQueryBo query) { public List<StatisticWarnVo> getWarn4Class(BaseQueryBo query) {
Long batchNo = query.getBatchNo(); Long batchNo = query.getBatchNo();
Long scaleId = query.getScaleId(); Long scaleId = query.getScaleId();
return statisticMapper.selectStatisticWarn(batchNo, scaleId); List<StatisticWarnVo> statisticWarnVos = statisticMapper.selectStatisticWarn(batchNo, scaleId);
Map<String, List<StatisticWarnVo>> collect = statisticWarnVos.stream()
.collect(Collectors.groupingBy(StatisticWarnVo::getDeptName));
return processWarnData(collect);
}
private List<StatisticWarnVo> processWarnData(Map<String, List<StatisticWarnVo>> collect) {
Set<String> keys = collect.keySet();
List<StatisticWarnVo> data = new ArrayList<>();
for (String key : keys) {
List<StatisticWarnVo> list = collect.get(key);
int noneNum = list.stream().mapToInt(StatisticWarnVo::getNoneNum).sum();
int lowNum = list.stream().mapToInt(StatisticWarnVo::getLowNum).sum();
int middleNum = list.stream().mapToInt(StatisticWarnVo::getMiddleNum).sum();
int highNum = list.stream().mapToInt(StatisticWarnVo::getHighNum).sum();
int majorNum = list.stream().mapToInt(StatisticWarnVo::getMajorNum).sum();
StatisticWarnVo one = new StatisticWarnVo();
one.setName(key);
one.setNoneNum(noneNum);
one.setLowNum(lowNum);
one.setMiddleNum(middleNum);
one.setHighNum(highNum);
one.setMajorNum(majorNum);
data.add(one);
}
return data;
} }
@Override @Override

View File

@ -69,14 +69,21 @@ public class SysWarnRecordServiceImpl implements ISysWarnRecordService {
*/ */
@Override @Override
public Boolean insertByBo(SysWarnRecord add) { public Boolean insertByBo(SysWarnRecord add) {
validEntityBeforeSave(add); //validEntityBeforeSave(add);
SysWarnRecord sysWarnRecord = baseMapper.selectOne(new LambdaQueryWrapper<SysWarnRecord>() SysWarnRecord warnRecord = baseMapper.selectOne(new LambdaQueryWrapper<SysWarnRecord>()
.eq(SysWarnRecord::getBatchNo, add.getBatchNo()) .eq(SysWarnRecord::getBatchNo, add.getBatchNo())
.eq(SysWarnRecord::getUserId, add.getUserId())); .eq(SysWarnRecord::getUserId, add.getUserId()));
//保证同一个batch只有一条数据 //保证同一个batch只有一条数据
if (sysWarnRecord == null) { if (warnRecord == null) {
return baseMapper.insert(add) > 0; return baseMapper.insert(add) > 0;
} else { } else {
//取最高严重等级
if (add.getSituation() > warnRecord.getSituation()) {
SysWarnRecord update = new SysWarnRecord();
update.setWarnId(warnRecord.getWarnId());
update.setSituation(add.getSituation());
return baseMapper.updateById(update) > 0;
}
return true; return true;
} }
} }

View File

@ -22,7 +22,6 @@ import org.dromara.scale.service.ISysScaleFactorService;
import org.dromara.scale.service.ISysWarnRecordService; import org.dromara.scale.service.ISysWarnRecordService;
import org.dromara.scale.service.IWebService; import org.dromara.scale.service.IWebService;
import org.dromara.system.domain.SysOss; import org.dromara.system.domain.SysOss;
import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.mapper.SysOssMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -64,9 +63,9 @@ public class WebServiceImpl implements IWebService {
private final SysEvaluationAnswerMapper evaluationAnswerMapper; private final SysEvaluationAnswerMapper evaluationAnswerMapper;
private final SysOssMapper ossMapper; private final SysWarnRecordMapper warnMapper;
private final SysDeptMapper deptMapper; private final SysOssMapper ossMapper;
private final MathContext mathContext = new MathContext(2); private final MathContext mathContext = new MathContext(2);
@ -178,11 +177,13 @@ public class WebServiceImpl implements IWebService {
riskLevel = ec.getSituation(); riskLevel = ec.getSituation();
} }
} }
if (riskLevel.equals(SituationEnum.HIGH.getValue()) || riskLevel.equals(SituationEnum.MAJOR.getValue())) { List<Integer> used = warnMapper.selectUseConfig();
if (used.contains(riskLevel)) {
SysWarnRecord wre = new SysWarnRecord(); SysWarnRecord wre = new SysWarnRecord();
wre.setBatchNo(scalePublishVo.getBatchNo()); wre.setBatchNo(scalePublishVo.getBatchNo());
wre.setUserId(getLoginUser().getUserId()); wre.setUserId(getLoginUser().getUserId());
wre.setWarnTime(new Date()); wre.setWarnTime(new Date());
wre.setSituation(riskLevel);
warnRecordService.insertByBo(wre); warnRecordService.insertByBo(wre);
} }
//不允许查看考核结果 //不允许查看考核结果

View File

@ -3,9 +3,8 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.scale.mapper.SysWarnRecordMapper"> <mapper namespace="org.dromara.scale.mapper.SysWarnRecordMapper">
<select id="selectPageWarnList" resultType="org.dromara.scale.domain.vo.SysWarnRecordVo"> <select id="selectPageWarnList" resultType="org.dromara.scale.domain.vo.SysWarnRecordVo">
select wr.*, sp.session_name, u.nick_name,u.intervene_status select wr.*, sp.session_name, u.nick_name, u.intervene_status
from sys_warn_record wr from sys_warn_record wr
left join sys_scale_publish sp on sp.batch_no = wr.batch_no left join sys_scale_publish sp on sp.batch_no = wr.batch_no
left join sys_user u on u.user_id = wr.user_id left join sys_user u on u.user_id = wr.user_id
@ -25,7 +24,13 @@
update sys_warn_config update sys_warn_config
set status = 0; set status = 0;
update sys_warn_config update sys_warn_config
set status=1 set status = 1
where find_in_set(id, #{ids}) where find_in_set(id, #{ids})
</update> </update>
<select id="selectUseConfig" resultType="java.lang.Integer">
select *
from sys_warn_config
where status = 1
</select>
</mapper> </mapper>