diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java index 5d51e73..74e4874 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java @@ -66,4 +66,9 @@ public interface CacheNames { String ONLINE_TOKEN = "online_tokens"; String SYS_QUESTION_ANSWER = "scale:question_answer"; + String SYS_SCALE_FACTOR = "scale:factor"; + + String MAP_SCALE_QUESTION = "scale:map:question"; + String MAP_SCALE_ANSWER = "scale:map:answer"; + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/constant/StatusEnum.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/constant/StatusEnum.java new file mode 100644 index 0000000..5e2d10e --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/constant/StatusEnum.java @@ -0,0 +1,32 @@ +package org.dromara.scale.constant; + + +import com.fasterxml.jackson.annotation.JsonValue; + + +public enum StatusEnum { + + /** + * + */ + DISABLED(0, "停用"), + IN_USE(1, "启用"); + + private Integer status; + private String name; + + StatusEnum(Integer status, String name) { + this.status = status; + this.name = name; + } + + + public Integer getValue() { + return this.status; + } + + @JsonValue + public String getName() { + return name; + } +} diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java index b3f2874..559ebf5 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java @@ -62,7 +62,6 @@ public class WebController extends BaseController { return R.ok(scaleAnswerService.queryQuestionAnswerListByScaleId(id)); } - /** * 新增量测记录 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleQuestion.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleQuestion.java index dc7b70b..d6f6ac7 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleQuestion.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleQuestion.java @@ -32,11 +32,6 @@ public class SysScaleQuestion extends BaseEntity { */ private Long scaleId; - /** - * 测评量表标题 - */ - private String scaleTitle; - /** * 问题序号 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationConclusionServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationConclusionServiceImpl.java index 3a427b9..5c01206 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationConclusionServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationConclusionServiceImpl.java @@ -5,17 +5,20 @@ 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.constant.CacheNames; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.constant.ScaleDimensionEnum; import org.dromara.scale.constant.ScoreRuleTypeEnum; +import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.domain.*; import org.dromara.scale.domain.bo.SysEvaluationAnswerBo; import org.dromara.scale.domain.bo.SysEvaluationConclusionBo; import org.dromara.scale.domain.vo.*; import org.dromara.scale.mapper.*; import org.dromara.scale.service.ISysEvaluationConclusionService; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -119,8 +122,8 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus Long riskLevel = -1L; String riskName = ""; //选择风险等级最高 - for(SysEvaluationConclusionVo ec: list){ - if(ec.getSituation() > riskLevel){ + for (SysEvaluationConclusionVo ec : list) { + if (ec.getSituation() > riskLevel) { riskLevel = ec.getSituation(); //riskName = ec.getSituationName(); } @@ -137,7 +140,7 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus // warnRecordDAO.evalWarn(wre); // } //不允许查看考核结果 - if(!allowQueryResult){ + if (!allowQueryResult) { return null; } @@ -146,11 +149,11 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus .map(SysEvaluationConclusionVo::getScore) // 使用reduce()聚合函数,得到金额总和 .reduce(BigDecimal.ZERO, BigDecimal::add); - return new HashMap(){{ + return new HashMap() {{ //put("evalRecordId",evalRecord.getId()); //put("scaleName",scaleInfo.getName()); - put("totalScore",totalScore.doubleValue()); - put("list", list.stream().filter(item -> item.getStatus().equals(1)).collect( + put("totalScore", totalScore.doubleValue()); + put("list", list.stream().filter(item -> item.getStatus().equals(StatusEnum.IN_USE.getValue())).collect( Collectors.toList())); }}; } @@ -160,15 +163,8 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus SysEvaluationRecordVo recordVo = recordMapper.selectVoById(recordId); Long scaleId = recordVo.getScaleId(); - List sysScaleQuestionVos = scaleQuestionMapper.selectVoList( - new LambdaQueryWrapper().eq(SysScaleQuestion::getScaleId, scaleId)); - Map> questionMapByFactor = sysScaleQuestionVos.stream() - .collect(Collectors.groupingBy(SysScaleQuestionVo::getFactorId)); - - List scaleAnswerVos = scaleAnswerMapper.selectVoList( - new LambdaQueryWrapper().eq(SysScaleAnswer::getScaleId, scaleId)); - Map> answerMapByQuestion = scaleAnswerVos.stream() - .collect(Collectors.groupingBy(SysScaleAnswerVo::getQuestionId)); + Map> questionMapByFactor = getScaleQuestionMap(scaleId); + Map> answerMapByQuestion = getScaleAnswerMap(scaleId); List scaleFactorList = getScaleEvalItemList(scaleId); List list = new ArrayList<>(scaleFactorList.size()); @@ -179,8 +175,7 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus SysEvaluationConclusionVo evalConclusion = new SysEvaluationConclusionVo(); evalConclusion.setFactorId(factorId); evalConclusion.setRecordId(recordId); - //未命中 - evalConclusion.setStatus(0); + evalConclusion.setStatus(StatusEnum.DISABLED.getValue()); list.add(evalConclusion); List questionNum = questionMapByFactor.get(factorId); @@ -268,8 +263,20 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus //保存结果 return list; } - - List getScaleEvalItemList(Long scaleId) { + @Cacheable(cacheNames = CacheNames.MAP_SCALE_QUESTION, key = "#scaleId") + public Map> getScaleQuestionMap(Long scaleId) { + List scaleQuestionVos = scaleQuestionMapper.selectVoList( + new LambdaQueryWrapper().eq(SysScaleQuestion::getScaleId, scaleId)); + return scaleQuestionVos.stream().collect(Collectors.groupingBy(SysScaleQuestionVo::getFactorId)); + } + @Cacheable(cacheNames = CacheNames.MAP_SCALE_ANSWER, key = "#scaleId") + public Map> getScaleAnswerMap(Long scaleId) { + List scaleAnswerVos = scaleAnswerMapper.selectVoList( + new LambdaQueryWrapper().eq(SysScaleAnswer::getScaleId, scaleId)); + return scaleAnswerVos.stream().collect(Collectors.groupingBy(SysScaleAnswerVo::getQuestionId)); + } + @Cacheable(cacheNames = CacheNames.SYS_SCALE_FACTOR, key = "#scaleId") + public List getScaleEvalItemList(Long scaleId) { List scaleFactorVos = scaleFactorMapper.selectVoList( new LambdaQueryWrapper().eq(SysScaleFactor::getScaleId, scaleId)); List scaleFactorRangeVos = scaleFactorRangeMapper.selectVoList( @@ -321,15 +328,15 @@ public class SysEvaluationConclusionServiceImpl implements ISysEvaluationConclus //throw new EdfRuntimeException(String.format("%s 量表配置有误!,请联系管理员!",scaleInfo.getName())); break; } - evalConclusions.forEach(item -> item.setStatus(1)); + evalConclusions.forEach(item -> item.setStatus(StatusEnum.IN_USE.getValue())); break; case MULTIPE_SINGL: //择低录取 if (scaleInfo.getSelectDirection() == 1) { - evalConclusions.stream().min(Comparator.comparing(SysEvaluationConclusionVo::getScore)).get().setStatus(1); + evalConclusions.stream().min(Comparator.comparing(SysEvaluationConclusionVo::getScore)).get().setStatus(StatusEnum.IN_USE.getValue()); } else { //高分录取 - evalConclusions.stream().max(Comparator.comparing(SysEvaluationConclusionVo::getScore)).get().setStatus(1); + evalConclusions.stream().max(Comparator.comparing(SysEvaluationConclusionVo::getScore)).get().setStatus(StatusEnum.IN_USE.getValue()); } break; case MULTIPE_MULTIPE: diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleQuestionServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleQuestionServiceImpl.java index 830ae44..b06a311 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleQuestionServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleQuestionServiceImpl.java @@ -77,7 +77,6 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getScaleId() != null, SysScaleQuestion::getScaleId, bo.getScaleId()); - lqw.eq(StringUtils.isNotBlank(bo.getScaleTitle()), SysScaleQuestion::getScaleTitle, bo.getScaleTitle()); lqw.eq(bo.getQuestionOrder() != null, SysScaleQuestion::getQuestionOrder, bo.getQuestionOrder()); lqw.eq(StringUtils.isNotBlank(bo.getQuestionContent()), SysScaleQuestion::getQuestionContent, bo.getQuestionContent()); // lqw.eq(bo.getFactorId() != null, SysScaleQuestion::getFactorId, bo.getFactorId());