diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleFactor.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleFactor.java index ce3c5be..c31af93 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleFactor.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScaleFactor.java @@ -2,9 +2,12 @@ package org.dromara.scale.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.scale.domain.vo.SysScaleFactorVo; import java.io.Serial; import java.math.BigDecimal; @@ -18,6 +21,7 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = true) @TableName("sys_scale_factor") +@AutoMapper(target = SysScaleFactorVo.class, reverseConvertGenerate = false) public class SysScaleFactor extends BaseEntity { @Serial @@ -39,6 +43,12 @@ public class SysScaleFactor extends BaseEntity { */ private Long scaleId; + /** + * 问题ids + */ + @AutoMapping(target = "questionIds", expression = "java(cn.hutool.core.util.StrUtil.split(source.getQuestionIds(), \",\"))") + private String questionIds; + /** * 计算类型 */ 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 d6f6ac7..f7d16a2 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 @@ -42,15 +42,4 @@ public class SysScaleQuestion extends BaseEntity { */ private String questionContent; - /** - * 所属因子维度 - */ - private Long factorId; - - /** - * 因子名称 - */ - private String factorName; - - } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SubmitAnswerBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SubmitAnswerBo.java index 4239388..790c95f 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SubmitAnswerBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SubmitAnswerBo.java @@ -16,6 +16,5 @@ public class SubmitAnswerBo { private Long scaleId; - private List answerList; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleFactorBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleFactorBo.java index 39f6d6c..2cd927b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleFactorBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleFactorBo.java @@ -1,6 +1,7 @@ package org.dromara.scale.domain.bo; import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -54,7 +55,8 @@ public class SysScaleFactorBo extends BaseEntity { @NotNull(message = "权重不能为空", groups = { AddGroup.class, EditGroup.class }) private BigDecimal weight; - private List questionIds; + @AutoMapping(target = "questionIds", expression = "java(java.lang.String.join(\",\", source.getQuestionIds()))") + private List questionIds; private List factorRangeList; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleQuestionBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleQuestionBo.java index 371ac3a..9d3d57f 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleQuestionBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScaleQuestionBo.java @@ -55,18 +55,6 @@ public class SysScaleQuestionBo extends BaseEntity { @NotBlank(message = "问题内容不能为空", groups = {AddGroup.class, EditGroup.class}) private String questionContent; - /** - * 所属因子维度 - */ -// @NotNull(message = "所属因子维度不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long factorId; - - /** - * 因子名称 - */ -// @NotBlank(message = "因子名称不能为空", groups = { AddGroup.class, EditGroup.class }) - private String factorName; - /** * 问题答案列表 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleFactorVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleFactorVo.java index 5216395..2ab8e41 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleFactorVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleFactorVo.java @@ -2,9 +2,7 @@ package org.dromara.scale.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.scale.domain.SysScaleFactor; import java.io.Serial; import java.io.Serializable; @@ -20,7 +18,6 @@ import java.util.List; */ @Data @ExcelIgnoreUnannotated -@AutoMapper(target = SysScaleFactor.class) public class SysScaleFactorVo implements Serializable { @Serial @@ -63,7 +60,7 @@ public class SysScaleFactorVo implements Serializable { /** * 问题id列表 */ - private List questionIds; + private List questionIds; private List factorRangeList; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleQuestionVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleQuestionVo.java index a143d18..d7160af 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleQuestionVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleQuestionVo.java @@ -49,18 +49,6 @@ public class SysScaleQuestionVo implements Serializable { @ExcelProperty(value = "问题内容") private String questionContent; - /** - * 所属因子维度 - */ - @ExcelProperty(value = "所属因子维度") - private Long factorId; - - /** - * 因子名称 - */ - @ExcelProperty(value = "因子名称") - private String factorName; - /** * 问题答案列表 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleFactorService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleFactorService.java index b63022a..ab2756d 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleFactorService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleFactorService.java @@ -7,6 +7,7 @@ import org.dromara.scale.domain.vo.SysScaleFactorVo; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 测评因子Service接口 @@ -47,4 +48,6 @@ public interface ISysScaleFactorService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); List getScaleEvalItemList(Long scaleId); + + Map> getQuestionMapByFactor(Long scaleId); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleQuestionService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleQuestionService.java index 3bf8666..e0c83f2 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleQuestionService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleQuestionService.java @@ -7,7 +7,6 @@ import org.dromara.scale.domain.vo.SysScaleQuestionVo; import java.util.Collection; import java.util.List; -import java.util.Map; /** * 量问题内容Service接口 @@ -47,5 +46,4 @@ public interface ISysScaleQuestionService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - Map> getScaleQuestionMap(Long scaleId); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java index b4cb750..37beb15 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java @@ -14,12 +14,12 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScaleFactor; import org.dromara.scale.domain.SysScaleFactorRange; -import org.dromara.scale.domain.SysScaleQuestion; import org.dromara.scale.domain.bo.SysScaleFactorBo; import org.dromara.scale.domain.vo.SysScaleFactorRangeVo; import org.dromara.scale.domain.vo.SysScaleFactorVo; -import org.dromara.scale.domain.vo.SysScaleQuestionVo; -import org.dromara.scale.mapper.*; +import org.dromara.scale.mapper.SysScaleFactorMapper; +import org.dromara.scale.mapper.SysScaleFactorRangeMapper; +import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.service.ISysScaleFactorService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -42,7 +42,6 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { private final SysScaleFactorMapper baseMapper; private final SysScaleMapper scaleMapper; - private final SysScaleQuestionMapper scaleQuestionMapper; private final SysScaleFactorRangeMapper scaleFactorRangeMapper; /** @@ -51,14 +50,6 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { @Override public SysScaleFactorVo queryById(Long factorId) { SysScaleFactorVo sysScaleFactorVo = baseMapper.selectVoById(factorId); - List list = scaleQuestionMapper.selectVoList(Wrappers.lambdaQuery().eq(SysScaleQuestion::getFactorId, factorId)); - if (CollUtil.isNotEmpty(list)) { - List questionIds = list.stream().map(SysScaleQuestionVo::getQuestionId).collect(Collectors.toList()); - sysScaleFactorVo.setQuestionIds(questionIds); - } else { - sysScaleFactorVo.setQuestionIds(Collections.emptyList()); - } - List rangeList = scaleFactorRangeMapper.selectVoList(Wrappers.lambdaQuery().eq(SysScaleFactorRange::getFactorId, factorId)); if (CollUtil.isNotEmpty(rangeList)) { sysScaleFactorVo.setFactorRangeList(rangeList); @@ -114,19 +105,18 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { public Boolean insertByBo(SysScaleFactorBo bo) { SysScaleFactor add = MapstructUtils.convert(bo, SysScaleFactor.class); validEntityBeforeSave(add); +// if (CollUtil.isNotEmpty(bo.getQuestionIds())) { +// String questionIds = bo.getQuestionIds().stream().map(Object::toString) +// .collect(Collectors.joining(StringUtils.SEPARATOR)); +// +// } + if (CollUtil.isNotEmpty(bo.getFactorRangeList())) { + insertFactorRange(bo); + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setFactorId(add.getFactorId()); } - - if (CollUtil.isNotEmpty(bo.getQuestionIds())) { - updateQuestionFactor(bo); - } - - if (CollUtil.isNotEmpty(bo.getFactorRangeList())) { - insertFactorRange(bo); - } - return flag; } @@ -140,17 +130,17 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { scaleFactorRangeMapper.insertBatch(list, 100); } - private void updateQuestionFactor(SysScaleFactorBo bo) { - List list = new ArrayList<>(bo.getQuestionIds().size()); - for (Long questionId : bo.getQuestionIds()) { - SysScaleQuestion question = new SysScaleQuestion(); - question.setQuestionId(questionId); - question.setFactorId(bo.getFactorId()); - question.setFactorName(bo.getFactorName()); - list.add(question); - } - scaleQuestionMapper.updateBatchById(list, 100); - } +// private void updateQuestionFactor(SysScaleFactorBo bo) { +// List list = new ArrayList<>(bo.getQuestionIds().size()); +// for (Long questionId : bo.getQuestionIds()) { +// SysScaleQuestion question = new SysScaleQuestion(); +// question.setQuestionId(questionId); +// question.setFactorId(bo.getFactorId()); +// question.setFactorName(bo.getFactorName()); +// list.add(question); +// } +// scaleQuestionMapper.updateBatchById(list, 100); +// } /** * 修改测评因子 @@ -165,9 +155,9 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { SysScaleFactor update = MapstructUtils.convert(bo, SysScaleFactor.class); validEntityBeforeSave(update); - if (CollUtil.isNotEmpty(bo.getQuestionIds())) { - updateQuestionFactor(bo); - } +// if (CollUtil.isNotEmpty(bo.getQuestionIds())) { +// updateQuestionFactor(bo); +// } if (CollUtil.isNotEmpty(bo.getFactorRangeList())) { scaleFactorRangeMapper.delete(Wrappers.lambdaQuery(SysScaleFactorRange.class).eq(SysScaleFactorRange::getFactorId, bo.getFactorId())); @@ -196,7 +186,6 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { } - @Cacheable(cacheNames = CacheNames.SYS_SCALE_FACTOR, key = "#scaleId") @Override public List getScaleEvalItemList(Long scaleId) { @@ -211,4 +200,16 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { } return scaleFactorVos; } + @Cacheable(cacheNames = CacheNames.MAP_SCALE_QUESTION, key = "#scaleId") + public Map> getQuestionMapByFactor(Long scaleId) { + List factorVos = baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(SysScaleFactor::getScaleId, scaleId)); + Map> map = new HashMap<>(factorVos.size()); + for (SysScaleFactorVo factor : factorVos) { + Long factorId = factor.getFactorId(); + List questionIds = factor.getQuestionIds(); + map.put(factorId, questionIds); + } + return map; + } } 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 2c5f98e..bc3a9e3 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 @@ -19,7 +19,6 @@ import org.dromara.scale.mapper.SysScaleAnswerMapper; import org.dromara.scale.mapper.SysScaleQuestionMapper; import org.dromara.scale.service.ISysScaleQuestionService; import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,7 +26,6 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * 量问题内容Service业务层处理 @@ -152,11 +150,4 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService { return baseMapper.deleteBatchIds(ids) > 0; } - @Cacheable(cacheNames = CacheNames.MAP_SCALE_QUESTION, key = "#scaleId") - @Override - public Map> getScaleQuestionMap(Long scaleId) { - List scaleQuestionVos = baseMapper.selectVoList( - new LambdaQueryWrapper().eq(SysScaleQuestion::getScaleId, scaleId)); - return scaleQuestionVos.stream().collect(Collectors.groupingBy(SysScaleQuestionVo::getFactorId)); - } } 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 f5cdfc9..984ba1a 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 @@ -210,7 +210,7 @@ public class WebServiceImpl implements IWebService { private List calculateEvaluationResult(Long scaleId, List answerList) { Long recordId = answerList.get(0).getRecordId(); - Map> questionMapByFactor = scaleQuestionService.getScaleQuestionMap(scaleId); + Map> questionMapByFactor = scaleFactorService.getQuestionMapByFactor(scaleId); Map> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId); List scaleFactorList = scaleFactorService.getScaleEvalItemList(scaleId); @@ -226,11 +226,11 @@ public class WebServiceImpl implements IWebService { evalConclusion.setScore(BigDecimal.ZERO); list.add(evalConclusion); - List questionNum = questionMapByFactor.get(factorId); - List questionIds = new ArrayList<>(); + List questionNum = questionMapByFactor.get(factorId); + List questionIds = new ArrayList<>(); questionNum.forEach(q -> { - Long questionId = q.getQuestionId(); - questionIds.add(questionId); + questionIds.add(q); + Long questionId = Long.parseLong(q); List answerNum = answerMapByQuestion.get(questionId); if (!ArrayUtil.isEmpty(answerNum)) { //找出分数最大的选项