diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScale.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScale.java index caa0350..d53f63e 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScale.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScale.java @@ -86,6 +86,11 @@ public class SysScale extends BaseEntity { */ private Integer evalNums; + /** + * 发布次数 + */ + private Integer publishNums; + /** * 量表类型:对应字典项scale_type */ 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 6f681c4..39f6d6c 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 @@ -9,6 +9,7 @@ import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.scale.domain.SysScaleFactor; +import org.dromara.scale.domain.SysScaleFactorRange; import java.math.BigDecimal; import java.util.List; @@ -53,8 +54,8 @@ public class SysScaleFactorBo extends BaseEntity { @NotNull(message = "权重不能为空", groups = { AddGroup.class, EditGroup.class }) private BigDecimal weight; - private List questionIds; + private List factorRangeList; } 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 9559691..2577d2f 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 @@ -5,6 +5,8 @@ import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.scale.domain.SysScaleFactor; +import org.dromara.scale.domain.SysScaleFactorRange; + import java.io.Serial; import java.io.Serializable; @@ -64,4 +66,6 @@ public class SysScaleFactorVo implements Serializable { * 问题id列表 */ private List questionIds; + + private List factorRangeList; } 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 711452e..be2719f 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 @@ -95,6 +95,11 @@ public class SysScaleVo implements Serializable { */ private Integer evalNums; + /** + * 发布次数 + */ + private Integer publishNums; + /** * 量表类型:对应字典项scale_type */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorRangeMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorRangeMapper.java index 853eb42..7fe8f37 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorRangeMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleFactorRangeMapper.java @@ -1,5 +1,6 @@ package org.dromara.scale.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.scale.domain.SysScaleFactorRange; import org.dromara.scale.domain.vo.SysScaleFactorRangeVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author jiangzhe * @date 2024-04-07 */ +@Mapper public interface SysScaleFactorRangeMapper extends BaseMapperPlus { } 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 b64190d..f5b104f 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 @@ -26,6 +26,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; + +import org.dromara.scale.domain.*; +import org.dromara.scale.mapper.*; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; import java.util.stream.Collectors; /** @@ -42,6 +48,7 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { private final SysScaleMapper scaleMapper; private final SysScaleFormulaMapper scaleFormulaMapper; private final SysScaleQuestionMapper scaleQuestionMapper; + private final SysScaleFactorRangeMapper sysScaleFactorRangeMapper; /** * 查询测评因子 @@ -53,6 +60,15 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { if (CollUtil.isNotEmpty(list)) { List questionIds = list.stream().map(SysScaleQuestionVo::getQuestionId).collect(Collectors.toList()); sysScaleFactorVo.setQuestionIds(questionIds); + } else { + sysScaleFactorVo.setQuestionIds(Collections.emptyList()); + } + + List rangeList = sysScaleFactorRangeMapper.selectList(Wrappers.lambdaQuery().eq(SysScaleFactorRange::getFactorId, factorId)); + if (CollUtil.isNotEmpty(rangeList)) { + sysScaleFactorVo.setFactorRangeList(rangeList); + } else { + sysScaleFactorVo.setFactorRangeList(Collections.emptyList()); } return sysScaleFactorVo; } @@ -94,6 +110,7 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { /** * 新增测评因子 */ + @Transactional(rollbackFor = Exception.class) @Override public Boolean insertByBo(SysScaleFactorBo bo) { SysScaleFactor add = MapstructUtils.convert(bo, SysScaleFactor.class); @@ -104,27 +121,55 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { } if (CollUtil.isNotEmpty(bo.getQuestionIds())) { - 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); + updateQuestionFactor(bo); + } + + if (CollUtil.isNotEmpty(bo.getFactorRangeList())) { + insertFactorRange(bo); } return flag; } + private void insertFactorRange(SysScaleFactorBo bo) { + List list = new ArrayList<>(bo.getFactorRangeList().size()); + for (SysScaleFactorRange range : bo.getFactorRangeList()) { + range.setFactorId(bo.getFactorId()); + list.add(range); + } + sysScaleFactorRangeMapper.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); + } + /** * 修改测评因子 */ + @Transactional(rollbackFor = Exception.class) @Override public Boolean updateByBo(SysScaleFactorBo bo) { SysScaleFactor update = MapstructUtils.convert(bo, SysScaleFactor.class); validEntityBeforeSave(update); + + if (CollUtil.isNotEmpty(bo.getQuestionIds())) { + updateQuestionFactor(bo); + } + + if (CollUtil.isNotEmpty(bo.getFactorRangeList())) { + sysScaleFactorRangeMapper.delete(Wrappers.lambdaQuery(SysScaleFactorRange.class).eq(SysScaleFactorRange::getFactorId, bo.getFactorId())); + insertFactorRange(bo); + } + return baseMapper.updateById(update) > 0; } 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 0a2070c..603adc7 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 @@ -103,7 +103,6 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService { for (SysScaleAnswer sysScaleAnswer : scaleAnswerList) { sysScaleAnswer.setScaleId(bo.getScaleId()); sysScaleAnswer.setQuestionId(sysScaleQuestion.getQuestionId()); - //sysScaleAnswer.setQuestionContent(sysScaleQuestion.getQuestionContent()); } scaleAnswerMapper.batchInsert(scaleAnswerList); } diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleAnswerMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleAnswerMapper.xml index b43d635..31fbcde 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleAnswerMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleAnswerMapper.xml @@ -4,12 +4,10 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into sys_scale_answer(answer_id, question_id, question_content, scale_id, answer_option, score, - create_dept, create_time, create_by, update_time, update_by, factor_id) values + insert into sys_scale_answer(answer_id, question_id, scale_id, answer_option, score, type) values - (#{item.answerId}, #{item.questionId}, #{item.questionContent}, #{item.scaleId}, #{item.answerOption}, - #{item.score}, #{item.createDept}, #{item.createTime}, #{item.createBy}, #{item.updateTime}, - #{item.updateBy}, #{item.factorId}) + (#{item.answerId}, #{item.questionId}, #{item.scaleId}, #{item.answerOption}, + #{item.score}, #{item.type})