diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationConclusion.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationConclusion.java index 797d79b..9f408e9 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationConclusion.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationConclusion.java @@ -61,5 +61,10 @@ public class SysEvaluationConclusion { */ private Integer status; + /** + * 预警状态 + */ + private Integer warnStatus; + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationConclusionVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationConclusionVo.java index 4202492..f25970f 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationConclusionVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationConclusionVo.java @@ -84,7 +84,14 @@ public class SysEvaluationConclusionVo implements Serializable { */ private Integer situation; - private String SituationName; + /** + * 预警状态 + */ + private Integer warnStatus; + + private String situationName; + + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ArchiveMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ArchiveMapper.java index 8ca4fcf..ebf60bb 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ArchiveMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ArchiveMapper.java @@ -1,7 +1,5 @@ package org.dromara.scale.mapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -10,7 +8,7 @@ import org.dromara.scale.domain.vo.ArchiveVo; @Mapper public interface ArchiveMapper { - Page selectArchiveVoPage(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page selectArchiveVoPage(@Param("page") Page page, @Param("query") ArchiveVo vo); Page selectStatisticVoPage(@Param("page") Page page, @Param("userId") Long userId); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ArchiveServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ArchiveServiceImpl.java index f2a7954..6753a36 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ArchiveServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ArchiveServiceImpl.java @@ -1,10 +1,7 @@ package org.dromara.scale.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; -import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.domain.vo.ArchiveStatisticVo; @@ -28,11 +25,11 @@ public class ArchiveServiceImpl implements IArchiveService { @Override public TableDataInfo queryPageList(ArchiveVo vo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(ArchiveVo::getUserType, "student"); - lqw.like(StringUtils.isNotEmpty(vo.getNickName()), ArchiveVo::getNickName, vo.getNickName()); - lqw.like(StringUtils.isNotEmpty(vo.getPhonenumber()), ArchiveVo::getPhonenumber, vo.getPhonenumber()); - Page result = archiveMapper.selectArchiveVoPage(pageQuery.build(), lqw); + //LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + //lqw.eq(ArchiveVo::getUserType, "student"); + //lqw.like(StringUtils.isNotEmpty(vo.getNickName()), ArchiveVo::getNickName, vo.getNickName()); + //lqw.like(StringUtils.isNotEmpty(vo.getPhonenumber()), ArchiveVo::getPhonenumber, vo.getPhonenumber()); + Page result = archiveMapper.selectArchiveVoPage(pageQuery.build(), vo); return TableDataInfo.build(result); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java index a4eee0e..2835615 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java @@ -112,7 +112,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi EvaluationRecordWordData wordData = new EvaluationRecordWordData(); String name = configService.selectConfigByKey("sys.school.name"); - wordData.setScaleName(name); + wordData.setSchoolName(name); SysEvaluationRecord sysEvaluationRecord = baseMapper.selectById(recordId); Date createTime = sysEvaluationRecord.getCreateTime(); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java index e82ad18..4f6d9b6 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java @@ -167,26 +167,22 @@ public class WebServiceImpl implements IWebService { update.setStatus(StatusEnum.IN_USE.getValue()); update.setUpdateTime(new Date()); recordMapper.updateById(update); - + //判断一个人是否完成所有量表 int undoneNum = recordMapper.selectUndoneNumByBatchNoAndUserId(batchNo, loginUser.getUserId()); - if (undoneNum <= 1) { + if (undoneNum == 0) { publishMapper.addCompleteNum(batchNo); } - Integer riskLevel = -1; + //选择风险等级最高 - for (SysEvaluationConclusionVo ec : list) { - if (ec.getSituation() > riskLevel) { - riskLevel = ec.getSituation(); - } - } - List used = warnMapper.selectUseConfig(); - if (used.contains(riskLevel)) { + Optional max = list.stream().filter(e -> e.getWarnStatus() == 1) + .max(Comparator.comparingInt(SysEvaluationConclusionVo::getSituation)); + if (max.isPresent()) { SysWarnRecord wre = new SysWarnRecord(); wre.setBatchNo(batchNo); wre.setUserId(loginUser.getUserId()); wre.setDeptId(loginUser.getDeptId()); wre.setWarnTime(new Date()); - wre.setSituation(riskLevel); + wre.setSituation(max.get().getSituation()); warnRecordService.insertByBo(wre); } @@ -217,11 +213,13 @@ public class WebServiceImpl implements IWebService { List scaleFactorList = scaleFactorService.getScaleEvalItemList(scaleId); List list = new ArrayList<>(scaleFactorList.size()); + List used = warnMapper.selectUseConfig(); for (SysScaleFactorVo scaleFactor : scaleFactorList) { Long factorId = scaleFactor.getFactorId(); AtomicReference totalSocre = new AtomicReference<>(BigDecimal.ZERO); SysEvaluationConclusionVo evalConclusion = new SysEvaluationConclusionVo(); + evalConclusion.setFactorName(scaleFactor.getFactorName()); evalConclusion.setFactorId(factorId); evalConclusion.setRecordId(recordId); evalConclusion.setStatus(StatusEnum.DISABLED.getValue()); @@ -263,6 +261,8 @@ public class WebServiceImpl implements IWebService { evalConclusion.setEvalDesc(factorRangeList.get(0).getEvalDesc()); evalConclusion.setEvalPropose(factorRangeList.get(0).getEvalPropose()); evalConclusion.setFactorRangeId(factorRangeList.get(0).getRangeId()); + evalConclusion.setSituation(factorRangeList.get(0).getSituation()); + evalConclusion.setSituationName(SituationEnum.getNameByCode(factorRangeList.get(0).getSituation())); } else { for (SysScaleFactorRangeVo range : factorRangeList) { if (Objects.nonNull(range.getMinValue()) && Objects.nonNull(range.getMaxValue())) { @@ -294,6 +294,7 @@ public class WebServiceImpl implements IWebService { evalConclusion.setFactorRangeId(range.getRangeId()); evalConclusion.setSituation(range.getSituation()); evalConclusion.setSituationName(SituationEnum.getNameByCode(range.getSituation())); + break; } } //else { @@ -304,6 +305,9 @@ public class WebServiceImpl implements IWebService { } } } + if (used.contains(evalConclusion.getSituation())) { + evalConclusion.setWarnStatus(1); + } } //处理维度问题及status //量表 diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ArchiveMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ArchiveMapper.xml index 47473bb..841380e 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ArchiveMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ArchiveMapper.xml @@ -11,10 +11,17 @@ u.sex, u.phonenumber, u.address, - d.dept_name + d.dept_name, + u.user_type from sys_user u left join sys_dept d on d.dept_id = u.dept_id - ${ew.getCustomSqlSegment} + where u.user_type = 'student' + + and u.nick_name like CONCAT('%', #{query.nickName}, '%') + + + and u.phonenumber like CONCAT('%', #{query.phonenumber}, '%') + select d.dept_name, - parent.dept_name as `parentName`, - count(if(sfr.situation = 1, 1, null)) as `noneNum`, - count(if(sfr.situation = 2, 1, null)) as `lowNum`, - count(if(sfr.situation = 3, 1, null)) as `middleNum`, - count(if(sfr.situation = 4, 1, null)) as `highNum`, - count(if(sfr.situation = 5, 1, null)) as `majorNum` - from sys_evaluation_record er - left join sys_dept d on d.dept_id = er.dept_id and er.status = 1 + parent.dept_name as `parentName`, + count(if(t.situation = 1, 1, null)) as `noneNum`, + count(if(t.situation = 2, 1, null)) as `lowNum`, + count(if(t.situation = 3, 1, null)) as `middleNum`, + count(if(t.situation = 4, 1, null)) as `highNum`, + count(if(t.situation = 5, 1, null)) as `majorNum` + from (select er.dept_id, MAX(ec.situation) as situation + from sys_evaluation_record er + left join sys_evaluation_conclusion ec + on ec.record_id = er.record_id and ec.status = 1 + where er.status = 1 + and er.batch_no = #{batchNo} + and er.scale_id = #{scaleId} + group by er.record_id) t + left join sys_dept d on d.dept_id = t.dept_id left join sys_dept parent on parent.dept_id = d.parent_id - left join sys_evaluation_conclusion ec on ec.record_id = er.record_id and ec.status = 1 - left join sys_scale_factor_range sfr on sfr.range_id = ec.factor_range_id - where er.batch_no = #{batchNo} - and er.scale_id = #{scaleId} group by d.dept_id @@ -50,15 +53,20 @@ select parent.dept_name as `name`, count(sp.batch_no) as 'value' from sys_dept parent - left join sys_dept d on d.parent_id = parent.dept_id - left join sys_scale_publish sp on FIND_IN_SET(d.dept_id, sp.dept_ids) - and sp.create_time >= #{startTime} + left join sys_dept d on d.parent_id = parent.dept_id + left join sys_scale_publish sp on FIND_IN_SET(d.dept_id, sp.dept_ids) + + and sp.create_time >= #{startTime} + where parent.parent_id = 100 group by parent.dept_id order by parent.order_num @@ -106,43 +116,45 @@ diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml index a45841e..2788d62 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml @@ -15,9 +15,11 @@ from sys_evaluation_record er left join sys_scale s on s.scale_id = er.scale_id left join sys_dept d on d.dept_id = er.dept_id - left join sys_user u on u.dept_id = d.dept_id + left join sys_user u on u.user_id = er.user_id where er.batch_no = #{batchNo} + and (FIND_IN_SET(#{deptId}, d.ancestors) OR d.dept_id = #{deptId}) + and er.scale_id = #{scaleId} @@ -77,12 +79,13 @@