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

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;
/**
* 获取完成情况统计
* 获取完成情况统计-整体
*/
@GetMapping("/complete/all")
public R<List<StatisticNumVo>> getComplete(BaseQueryBo query) {
@ -36,7 +36,7 @@ public class StatisticController extends BaseController {
}
/**
* 获取完成情况统计
* 获取完成情况统计-班级
*/
@GetMapping("/complete/class")
public R<List<StatisticNumVo>> getComplete4Class(BaseQueryBo query) {
@ -44,22 +44,23 @@ public class StatisticController extends BaseController {
}
/**
* 获取预警情况统计
* 获取预警情况统计-整体
*/
@GetMapping("/warn/all")
public R<StatisticWarnVo> getWarn(BaseQueryBo query) {
public R<List<StatisticWarnVo>> getWarn(BaseQueryBo query) {
return R.ok(statisticService.getWarn4All(query));
}
/**
* 获取预警情况统计
* 获取预警情况统计-班级
*/
@GetMapping("/warn/class")
public R<List<StatisticWarnVo>> getWarn4Class(BaseQueryBo query) {
return R.ok(statisticService.getWarn4Class(query));
}
/**
* 获取预警情况统计
* 获取预警情况统计-整体
*/
@GetMapping("/factor/all")
public R<List<StatisticNumVo>> getFactor(BaseQueryBo query) {
@ -67,7 +68,7 @@ public class StatisticController extends BaseController {
}
/**
* 获取预警情况统计
* 获取预警情况统计-班级
*/
@GetMapping("/factor/class")
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")
public R<List<SysEvaluationConclusionVo>> getList(SysEvaluationConclusionBo 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)
@PostMapping("/export")
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)
@PostMapping("/export")
public void export(SysInterveneRecordBo bo, HttpServletResponse response) {
@ -58,7 +58,7 @@ public class SysInterveneRecordController extends BaseController {
*
* @param interveneId 主键
*/
@SaCheckPermission("scale:intervene:query")
@SaCheckPermission("intervene:record:query")
@GetMapping("/{interveneId}")
public R<SysInterveneRecordVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long 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)
@RepeatSubmit()
@PostMapping()

View File

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

View File

@ -15,7 +15,7 @@ import java.util.Date;
*/
@Data
@TableName("sys_warn_record")
public class SysWarnRecord {
public class SysWarnRecord {
@Serial
private static final long serialVersionUID = 1L;
@ -41,6 +41,11 @@ public class SysWarnRecord {
*/
private String note;
/**
* 严重度
*/
private Integer situation;
/**
* 预警时间
*/

View File

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

View File

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

View File

@ -14,7 +14,7 @@ public interface IStatisticService {
List<StatisticNumVo> getComplete4Class(BaseQueryBo query);
StatisticWarnVo getWarn4All(BaseQueryBo query);
List<StatisticWarnVo> getWarn4All(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);
Map<String, List<StatisticNumVo>> collect = statisticNumVos.stream()
.collect(Collectors.groupingBy(StatisticNumVo::getParentName));
return processData(collect);
return processCompleteData(collect);
}
@Override
@ -45,10 +45,10 @@ public class StatisticServiceImpl implements IStatisticService {
List<StatisticNumVo> statisticNumVos = statisticMapper.selectCompleteAvaluation(batchNo, scaleId);
Map<String, List<StatisticNumVo>> collect = statisticNumVos.stream()
.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();
List<StatisticNumVo> data = new ArrayList<>();
for (String key : keys) {
@ -65,31 +65,45 @@ public class StatisticServiceImpl implements IStatisticService {
}
@Override
public StatisticWarnVo getWarn4All(BaseQueryBo query) {
public List<StatisticWarnVo> getWarn4All(BaseQueryBo query) {
Long batchNo = query.getBatchNo();
Long scaleId = query.getScaleId();
List<StatisticWarnVo> list = statisticMapper.selectStatisticWarn(batchNo, scaleId);
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 data = new StatisticWarnVo();
//data.setDeptName(deptName);
data.setNoneNum(noneNum);
data.setLowNum(lowNum);
data.setMiddleNum(middleNum);
data.setHighNum(highNum);
data.setMajorNum(majorNum);
return data;
List<StatisticWarnVo> statisticWarnVos = statisticMapper.selectStatisticWarn(batchNo, scaleId);
Map<String, List<StatisticWarnVo>> collect = statisticWarnVos.stream()
.collect(Collectors.groupingBy(StatisticWarnVo::getParentName));
return processWarnData(collect);
}
@Override
public List<StatisticWarnVo> getWarn4Class(BaseQueryBo query) {
Long batchNo = query.getBatchNo();
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

View File

@ -69,14 +69,21 @@ public class SysWarnRecordServiceImpl implements ISysWarnRecordService {
*/
@Override
public Boolean insertByBo(SysWarnRecord add) {
validEntityBeforeSave(add);
SysWarnRecord sysWarnRecord = baseMapper.selectOne(new LambdaQueryWrapper<SysWarnRecord>()
//validEntityBeforeSave(add);
SysWarnRecord warnRecord = baseMapper.selectOne(new LambdaQueryWrapper<SysWarnRecord>()
.eq(SysWarnRecord::getBatchNo, add.getBatchNo())
.eq(SysWarnRecord::getUserId, add.getUserId()));
//保证同一个batch只有一条数据
if (sysWarnRecord == null) {
if (warnRecord == null) {
return baseMapper.insert(add) > 0;
} 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;
}
}

View File

@ -22,7 +22,6 @@ import org.dromara.scale.service.ISysScaleFactorService;
import org.dromara.scale.service.ISysWarnRecordService;
import org.dromara.scale.service.IWebService;
import org.dromara.system.domain.SysOss;
import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysOssMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -64,9 +63,9 @@ public class WebServiceImpl implements IWebService {
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);
@ -178,11 +177,13 @@ public class WebServiceImpl implements IWebService {
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();
wre.setBatchNo(scalePublishVo.getBatchNo());
wre.setUserId(getLoginUser().getUserId());
wre.setWarnTime(new Date());
wre.setSituation(riskLevel);
warnRecordService.insertByBo(wre);
}
//不允许查看考核结果

View File

@ -3,13 +3,12 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.scale.mapper.SysWarnRecordMapper">
<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
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
${ew.getCustomSqlSegment}
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
${ew.getCustomSqlSegment}
</select>
<select id="selectEvaluationRecordListByWarnId" resultType="org.dromara.scale.domain.vo.SysEvaluationRecordVo">
@ -25,7 +24,13 @@
update sys_warn_config
set status = 0;
update sys_warn_config
set status=1
set status = 1
where find_in_set(id, #{ids})
</update>
<select id="selectUseConfig" resultType="java.lang.Integer">
select *
from sys_warn_config
where status = 1
</select>
</mapper>