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 29de965..102b9d7 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 @@ -11,6 +11,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -67,4 +68,9 @@ public class SysScaleFactorVo implements Serializable { * 因子公式名称 */ private String formulaName; + + /** + * 问题id列表 + */ + private List questionIds; } 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 7da598e..4770656 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 @@ -1,5 +1,6 @@ package org.dromara.scale.domain.vo; +import org.dromara.scale.domain.SysScaleAnswer; import org.dromara.scale.domain.SysScaleQuestion; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -11,7 +12,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -70,5 +71,8 @@ public class SysScaleQuestionVo implements Serializable { @ExcelProperty(value = "因子名称") private String factorName; - + /** + * 问题答案列表 + */ + private List scaleAnswerList; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java index b07fc07..f87f1ab 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java @@ -1,6 +1,7 @@ package org.dromara.scale.domain.vo; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.scale.domain.SysScale; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; @@ -15,7 +16,6 @@ import java.io.Serializable; import java.util.Date; - /** * 心理测评量视图对象 sys_scale * @@ -61,12 +61,22 @@ public class SysScaleVo implements Serializable { @ExcelProperty(value = "量表的总分计分公式") private Long formulaId; + /** + * 计分公式 + */ + private String formulaName; + /** * 类型 */ @ExcelProperty(value = "类型") private String scaleType; + /** + * 量表类型名称 + */ + private String scaleTypeName; + /** * 预警分数 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleAnswerMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleAnswerMapper.java index 2b0b98f..8ad4d10 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleAnswerMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleAnswerMapper.java @@ -1,5 +1,6 @@ package org.dromara.scale.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.scale.domain.SysScaleAnswer; import org.dromara.scale.domain.vo.SysScaleAnswerVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -12,6 +13,7 @@ import java.util.List; * @author jiangzhe * @date 2024-03-29 */ +@Mapper public interface SysScaleAnswerMapper extends BaseMapperPlus { int batchInsert(List scaleAnswerList); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorMapper.java index a2dce76..c63f13d 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorMapper.java @@ -1,5 +1,6 @@ package org.dromara.scale.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.scale.domain.SysScaleFactor; import org.dromara.scale.domain.vo.SysScaleFactorVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author jiangzhe * @date 2024-03-29 */ +@Mapper public interface SysScaleFactorMapper extends BaseMapperPlus { } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFormulaMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFormulaMapper.java index 7566c10..188264d 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFormulaMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFormulaMapper.java @@ -1,5 +1,6 @@ package org.dromara.scale.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.scale.domain.SysScaleFormula; import org.dromara.scale.domain.vo.SysScaleFormulaVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author jiangzhe * @date 2024-03-29 */ +@Mapper public interface SysScaleFormulaMapper extends BaseMapperPlus { } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java index 1ccd937..f1d1d33 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java @@ -1,5 +1,6 @@ package org.dromara.scale.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.vo.SysScaleVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author jiangzhe * @date 2024-03-29 */ +@Mapper public interface SysScaleMapper extends BaseMapperPlus { } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleQuestionMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleQuestionMapper.java index c067d51..c1829d5 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleQuestionMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleQuestionMapper.java @@ -1,5 +1,6 @@ package org.dromara.scale.mapper; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.dromara.scale.domain.SysScaleQuestion; import org.dromara.scale.domain.vo.SysScaleQuestionVo; @@ -13,6 +14,7 @@ import java.util.List; * @author jiangzhe * @date 2024-03-29 */ +@Mapper public interface SysScaleQuestionMapper extends BaseMapperPlus { int cleanFactorIdByFactorId(Long factorId); 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 314a68c..520703f 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 @@ -13,6 +13,7 @@ import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScaleFormula; import org.dromara.scale.domain.SysScaleQuestion; import org.dromara.scale.domain.bo.SysScaleQuestionBo; +import org.dromara.scale.domain.vo.SysScaleQuestionVo; import org.dromara.scale.mapper.SysScaleFormulaMapper; import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScaleQuestionMapper; @@ -27,6 +28,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; /** * 测评因子Service业务层处理 @@ -48,7 +50,13 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { */ @Override public SysScaleFactorVo queryById(Long factorId) { - return baseMapper.selectVoById(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); + } + return sysScaleFactorVo; } /** 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 e54ef68..7f4a097 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 @@ -1,5 +1,6 @@ package org.dromara.scale.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -41,7 +42,12 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService { */ @Override public SysScaleQuestionVo queryById(Long questionId) { - return baseMapper.selectVoById(questionId); + SysScaleQuestionVo sysScaleQuestionVo = baseMapper.selectVoById(questionId); + List sysScaleAnswers = scaleAnswerMapper.selectList(Wrappers.lambdaQuery(SysScaleAnswer.class).eq(SysScaleAnswer::getQuestionId, questionId)); + if (CollUtil.isNotEmpty(sysScaleAnswers)) { + sysScaleQuestionVo.setScaleAnswerList(sysScaleAnswers); + } + return sysScaleQuestionVo; } /** @@ -88,25 +94,31 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService { if (flag) { bo.setQuestionId(add.getQuestionId()); } + batchInsertAnswer(bo, add); + return flag; + } + + private void batchInsertAnswer(SysScaleQuestionBo bo, SysScaleQuestion sysScaleQuestion) { List scaleAnswerList = bo.getScaleAnswerList(); for (SysScaleAnswer sysScaleAnswer : scaleAnswerList) { sysScaleAnswer.setScaleId(bo.getScaleId()); - sysScaleAnswer.setQuestionId(add.getQuestionId()); - sysScaleAnswer.setQuestionContent(add.getQuestionContent()); + sysScaleAnswer.setQuestionId(sysScaleQuestion.getQuestionId()); + sysScaleAnswer.setQuestionContent(sysScaleQuestion.getQuestionContent()); } scaleAnswerMapper.batchInsert(scaleAnswerList); - return flag; } /** * 修改量问题内容 */ + @Transactional(rollbackFor = Exception.class) @Override public Boolean updateByBo(SysScaleQuestionBo bo) { SysScaleQuestion update = MapstructUtils.convert(bo, SysScaleQuestion.class); validEntityBeforeSave(update); + scaleAnswerMapper.deleteScaleAnswerByQuestionId(update.getQuestionId()); - scaleAnswerMapper.batchInsert(bo.getScaleAnswerList()); + batchInsertAnswer(bo, update); return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java index 6ee67a3..dada6e8 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java @@ -8,6 +8,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.scale.domain.SysScaleFormula; +import org.dromara.scale.mapper.SysScaleFormulaMapper; +import org.dromara.system.domain.SysDictData; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.mapper.SysDictDataMapper; import org.springframework.stereotype.Service; import org.dromara.scale.domain.bo.SysScaleBo; import org.dromara.scale.domain.vo.SysScaleVo; @@ -30,12 +35,14 @@ import java.util.Collection; public class SysScaleServiceImpl implements ISysScaleService { private final SysScaleMapper baseMapper; + private final SysScaleFormulaMapper sysScaleFormulaMapper; + private final SysDictDataMapper sysDictDataMapper; /** * 查询心理测评量 */ @Override - public SysScaleVo queryById(Long scaleId){ + public SysScaleVo queryById(Long scaleId) { return baseMapper.selectVoById(scaleId); } @@ -46,6 +53,13 @@ public class SysScaleServiceImpl implements ISysScaleService { public TableDataInfo queryPageList(SysScaleBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + for (SysScaleVo record : result.getRecords()) { + SysScaleFormula sysScaleFormula = sysScaleFormulaMapper.selectById(record.getFormulaId()); + record.setFormulaName(sysScaleFormula.getFormulaName()); + + SysDictDataVo sysScaleType = sysDictDataMapper.selectDictDataByTypeAndDictValue("sys_scale_type", record.getScaleType()); + record.setScaleTypeName(sysScaleType.getDictLabel()); + } return TableDataInfo.build(result); } @@ -100,7 +114,7 @@ public class SysScaleServiceImpl implements ISysScaleService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(SysScale entity){ + private void validEntityBeforeSave(SysScale entity) { //TODO 做一些数据校验,如唯一约束 } @@ -109,7 +123,7 @@ public class SysScaleServiceImpl implements ISysScaleService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java index c2f1a7c..aefa112 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java @@ -1,6 +1,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysDictData; import org.dromara.system.domain.vo.SysDictDataVo; @@ -12,6 +13,7 @@ import java.util.List; * * @author Lion Li */ +@Mapper public interface SysDictDataMapper extends BaseMapperPlus { default List selectDictDataByType(String dictType) { @@ -20,4 +22,12 @@ public interface SysDictDataMapper extends BaseMapperPlus() + .eq(SysDictData::getDictType, dictType) + .eq(SysDictData::getDictValue, dictValue) + .last("limit 1")); + } }