Compare commits

..

2 Commits

Author SHA1 Message Date
jiangzhe a4278fbcf2 量表代码提交 2024-04-03 11:25:53 +08:00
jiangzhe 24b2a131b8 量表代码提交 2024-04-02 17:03:32 +08:00
13 changed files with 120 additions and 20 deletions

View File

@ -40,7 +40,7 @@ public class SysScaleQuestionBo extends BaseEntity {
/** /**
* 测评量表标题 * 测评量表标题
*/ */
@NotBlank(message = "测评量表标题不能为空", groups = {AddGroup.class, EditGroup.class}) // @NotBlank(message = "测评量表标题不能为空", groups = {AddGroup.class, EditGroup.class})
private String scaleTitle; private String scaleTitle;
/** /**
@ -55,17 +55,17 @@ public class SysScaleQuestionBo extends BaseEntity {
@NotBlank(message = "问题内容不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "问题内容不能为空", groups = {AddGroup.class, EditGroup.class})
private String questionContent; private String questionContent;
// /** /**
// * 所属因子维度 * 所属因子维度
// */ */
// @NotNull(message = "所属因子维度不能为空", groups = { AddGroup.class, EditGroup.class }) // @NotNull(message = "所属因子维度不能为空", groups = { AddGroup.class, EditGroup.class })
// private Long factorId; private Long factorId;
//
// /** /**
// * 因子名称 * 因子名称
// */ */
// @NotBlank(message = "因子名称不能为空", groups = { AddGroup.class, EditGroup.class }) // @NotBlank(message = "因子名称不能为空", groups = { AddGroup.class, EditGroup.class })
// private String factorName; private String factorName;
/** /**
* 问题答案列表 * 问题答案列表

View File

@ -11,6 +11,7 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -67,4 +68,9 @@ public class SysScaleFactorVo implements Serializable {
* 因子公式名称 * 因子公式名称
*/ */
private String formulaName; private String formulaName;
/**
* 问题id列表
*/
private List<Long> questionIds;
} }

View File

@ -1,5 +1,6 @@
package org.dromara.scale.domain.vo; package org.dromara.scale.domain.vo;
import org.dromara.scale.domain.SysScaleAnswer;
import org.dromara.scale.domain.SysScaleQuestion; import org.dromara.scale.domain.SysScaleQuestion;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
@ -11,7 +12,7 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -70,5 +71,8 @@ public class SysScaleQuestionVo implements Serializable {
@ExcelProperty(value = "因子名称") @ExcelProperty(value = "因子名称")
private String factorName; private String factorName;
/**
* 问题答案列表
*/
private List<SysScaleAnswer> scaleAnswerList;
} }

View File

@ -1,6 +1,7 @@
package org.dromara.scale.domain.vo; package org.dromara.scale.domain.vo;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScale;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@ -15,7 +16,6 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
* 心理测评量视图对象 sys_scale * 心理测评量视图对象 sys_scale
* *
@ -61,12 +61,22 @@ public class SysScaleVo implements Serializable {
@ExcelProperty(value = "量表的总分计分公式") @ExcelProperty(value = "量表的总分计分公式")
private Long formulaId; private Long formulaId;
/**
* 计分公式
*/
private String formulaName;
/** /**
* 类型 * 类型
*/ */
@ExcelProperty(value = "类型") @ExcelProperty(value = "类型")
private String scaleType; private String scaleType;
/**
* 量表类型名称
*/
private String scaleTypeName;
/** /**
* 预警分数 * 预警分数
*/ */

View File

@ -1,5 +1,6 @@
package org.dromara.scale.mapper; package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.scale.domain.SysScaleAnswer; import org.dromara.scale.domain.SysScaleAnswer;
import org.dromara.scale.domain.vo.SysScaleAnswerVo; import org.dromara.scale.domain.vo.SysScaleAnswerVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -12,6 +13,7 @@ import java.util.List;
* @author jiangzhe * @author jiangzhe
* @date 2024-03-29 * @date 2024-03-29
*/ */
@Mapper
public interface SysScaleAnswerMapper extends BaseMapperPlus<SysScaleAnswer, SysScaleAnswerVo> { public interface SysScaleAnswerMapper extends BaseMapperPlus<SysScaleAnswer, SysScaleAnswerVo> {
int batchInsert(List<SysScaleAnswer> scaleAnswerList); int batchInsert(List<SysScaleAnswer> scaleAnswerList);

View File

@ -1,5 +1,6 @@
package org.dromara.scale.mapper; package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.scale.domain.SysScaleFactor; import org.dromara.scale.domain.SysScaleFactor;
import org.dromara.scale.domain.vo.SysScaleFactorVo; import org.dromara.scale.domain.vo.SysScaleFactorVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author jiangzhe * @author jiangzhe
* @date 2024-03-29 * @date 2024-03-29
*/ */
@Mapper
public interface SysScaleFactorMapper extends BaseMapperPlus<SysScaleFactor, SysScaleFactorVo> { public interface SysScaleFactorMapper extends BaseMapperPlus<SysScaleFactor, SysScaleFactorVo> {
} }

View File

@ -1,5 +1,6 @@
package org.dromara.scale.mapper; package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.scale.domain.SysScaleFormula; import org.dromara.scale.domain.SysScaleFormula;
import org.dromara.scale.domain.vo.SysScaleFormulaVo; import org.dromara.scale.domain.vo.SysScaleFormulaVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author jiangzhe * @author jiangzhe
* @date 2024-03-29 * @date 2024-03-29
*/ */
@Mapper
public interface SysScaleFormulaMapper extends BaseMapperPlus<SysScaleFormula, SysScaleFormulaVo> { public interface SysScaleFormulaMapper extends BaseMapperPlus<SysScaleFormula, SysScaleFormulaVo> {
} }

View File

@ -1,5 +1,6 @@
package org.dromara.scale.mapper; package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScale;
import org.dromara.scale.domain.vo.SysScaleVo; import org.dromara.scale.domain.vo.SysScaleVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author jiangzhe * @author jiangzhe
* @date 2024-03-29 * @date 2024-03-29
*/ */
@Mapper
public interface SysScaleMapper extends BaseMapperPlus<SysScale, SysScaleVo> { public interface SysScaleMapper extends BaseMapperPlus<SysScale, SysScaleVo> {
} }

View File

@ -1,5 +1,6 @@
package org.dromara.scale.mapper; package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.dromara.scale.domain.SysScaleQuestion; import org.dromara.scale.domain.SysScaleQuestion;
import org.dromara.scale.domain.vo.SysScaleQuestionVo; import org.dromara.scale.domain.vo.SysScaleQuestionVo;
@ -13,6 +14,7 @@ import java.util.List;
* @author jiangzhe * @author jiangzhe
* @date 2024-03-29 * @date 2024-03-29
*/ */
@Mapper
public interface SysScaleQuestionMapper extends BaseMapperPlus<SysScaleQuestion, SysScaleQuestionVo> { public interface SysScaleQuestionMapper extends BaseMapperPlus<SysScaleQuestion, SysScaleQuestionVo> {
int cleanFactorIdByFactorId(Long factorId); int cleanFactorIdByFactorId(Long factorId);

View File

@ -1,5 +1,6 @@
package org.dromara.scale.service.impl; package org.dromara.scale.service.impl;
import cn.hutool.core.collection.CollUtil;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -10,6 +11,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScale;
import org.dromara.scale.domain.SysScaleFormula; 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.SysScaleFormulaMapper;
import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScaleMapper;
import org.dromara.scale.mapper.SysScaleQuestionMapper; import org.dromara.scale.mapper.SysScaleQuestionMapper;
@ -20,9 +24,11 @@ import org.dromara.scale.domain.SysScaleFactor;
import org.dromara.scale.mapper.SysScaleFactorMapper; import org.dromara.scale.mapper.SysScaleFactorMapper;
import org.dromara.scale.service.ISysScaleFactorService; import org.dromara.scale.service.ISysScaleFactorService;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.stream.Collectors;
/** /**
* 测评因子Service业务层处理 * 测评因子Service业务层处理
@ -44,7 +50,13 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService {
*/ */
@Override @Override
public SysScaleFactorVo queryById(Long factorId) { public SysScaleFactorVo queryById(Long factorId) {
return baseMapper.selectVoById(factorId); SysScaleFactorVo sysScaleFactorVo = baseMapper.selectVoById(factorId);
List<SysScaleQuestionVo> list = scaleQuestionMapper.selectVoList(Wrappers.<SysScaleQuestion>lambdaQuery().eq(SysScaleQuestion::getFactorId, factorId));
if (CollUtil.isNotEmpty(list)) {
List<Long> questionIds = list.stream().map(SysScaleQuestionVo::getQuestionId).collect(Collectors.toList());
sysScaleFactorVo.setQuestionIds(questionIds);
}
return sysScaleFactorVo;
} }
/** /**
@ -94,6 +106,19 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService {
if (flag) { if (flag) {
bo.setFactorId(add.getFactorId()); bo.setFactorId(add.getFactorId());
} }
if (CollUtil.isNotEmpty(bo.getQuestionIds())) {
List<SysScaleQuestion> 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);
}
return flag; return flag;
} }

View File

@ -1,5 +1,6 @@
package org.dromara.scale.service.impl; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -8,6 +9,7 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.scale.domain.SysScaleAnswer;
import org.dromara.scale.domain.SysScaleQuestion; import org.dromara.scale.domain.SysScaleQuestion;
import org.dromara.scale.domain.bo.SysScaleQuestionBo; import org.dromara.scale.domain.bo.SysScaleQuestionBo;
import org.dromara.scale.domain.vo.SysScaleQuestionVo; import org.dromara.scale.domain.vo.SysScaleQuestionVo;
@ -15,6 +17,7 @@ import org.dromara.scale.mapper.SysScaleAnswerMapper;
import org.dromara.scale.mapper.SysScaleQuestionMapper; import org.dromara.scale.mapper.SysScaleQuestionMapper;
import org.dromara.scale.service.ISysScaleQuestionService; import org.dromara.scale.service.ISysScaleQuestionService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -39,7 +42,12 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService {
*/ */
@Override @Override
public SysScaleQuestionVo queryById(Long questionId) { public SysScaleQuestionVo queryById(Long questionId) {
return baseMapper.selectVoById(questionId); SysScaleQuestionVo sysScaleQuestionVo = baseMapper.selectVoById(questionId);
List<SysScaleAnswer> sysScaleAnswers = scaleAnswerMapper.selectList(Wrappers.lambdaQuery(SysScaleAnswer.class).eq(SysScaleAnswer::getQuestionId, questionId));
if (CollUtil.isNotEmpty(sysScaleAnswers)) {
sysScaleQuestionVo.setScaleAnswerList(sysScaleAnswers);
}
return sysScaleQuestionVo;
} }
/** /**
@ -76,6 +84,7 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService {
/** /**
* 新增量问题内容 * 新增量问题内容
*/ */
@Transactional(rollbackFor = Exception.class)
@Override @Override
public Boolean insertByBo(SysScaleQuestionBo bo) { public Boolean insertByBo(SysScaleQuestionBo bo) {
SysScaleQuestion add = MapstructUtils.convert(bo, SysScaleQuestion.class); SysScaleQuestion add = MapstructUtils.convert(bo, SysScaleQuestion.class);
@ -85,19 +94,31 @@ public class SysScaleQuestionServiceImpl implements ISysScaleQuestionService {
if (flag) { if (flag) {
bo.setQuestionId(add.getQuestionId()); bo.setQuestionId(add.getQuestionId());
} }
scaleAnswerMapper.batchInsert(bo.getScaleAnswerList()); batchInsertAnswer(bo, add);
return flag; return flag;
} }
private void batchInsertAnswer(SysScaleQuestionBo bo, SysScaleQuestion sysScaleQuestion) {
List<SysScaleAnswer> scaleAnswerList = bo.getScaleAnswerList();
for (SysScaleAnswer sysScaleAnswer : scaleAnswerList) {
sysScaleAnswer.setScaleId(bo.getScaleId());
sysScaleAnswer.setQuestionId(sysScaleQuestion.getQuestionId());
sysScaleAnswer.setQuestionContent(sysScaleQuestion.getQuestionContent());
}
scaleAnswerMapper.batchInsert(scaleAnswerList);
}
/** /**
* 修改量问题内容 * 修改量问题内容
*/ */
@Transactional(rollbackFor = Exception.class)
@Override @Override
public Boolean updateByBo(SysScaleQuestionBo bo) { public Boolean updateByBo(SysScaleQuestionBo bo) {
SysScaleQuestion update = MapstructUtils.convert(bo, SysScaleQuestion.class); SysScaleQuestion update = MapstructUtils.convert(bo, SysScaleQuestion.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
scaleAnswerMapper.deleteScaleAnswerByQuestionId(update.getQuestionId()); scaleAnswerMapper.deleteScaleAnswerByQuestionId(update.getQuestionId());
scaleAnswerMapper.batchInsert(bo.getScaleAnswerList()); batchInsertAnswer(bo, update);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }

View File

@ -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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; 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.springframework.stereotype.Service;
import org.dromara.scale.domain.bo.SysScaleBo; import org.dromara.scale.domain.bo.SysScaleBo;
import org.dromara.scale.domain.vo.SysScaleVo; import org.dromara.scale.domain.vo.SysScaleVo;
@ -30,12 +35,14 @@ import java.util.Collection;
public class SysScaleServiceImpl implements ISysScaleService { public class SysScaleServiceImpl implements ISysScaleService {
private final SysScaleMapper baseMapper; private final SysScaleMapper baseMapper;
private final SysScaleFormulaMapper sysScaleFormulaMapper;
private final SysDictDataMapper sysDictDataMapper;
/** /**
* 查询心理测评量 * 查询心理测评量
*/ */
@Override @Override
public SysScaleVo queryById(Long scaleId){ public SysScaleVo queryById(Long scaleId) {
return baseMapper.selectVoById(scaleId); return baseMapper.selectVoById(scaleId);
} }
@ -46,6 +53,13 @@ public class SysScaleServiceImpl implements ISysScaleService {
public TableDataInfo<SysScaleVo> queryPageList(SysScaleBo bo, PageQuery pageQuery) { public TableDataInfo<SysScaleVo> queryPageList(SysScaleBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysScale> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<SysScale> lqw = buildQueryWrapper(bo);
Page<SysScaleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<SysScaleVo> 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); return TableDataInfo.build(result);
} }
@ -100,7 +114,7 @@ public class SysScaleServiceImpl implements ISysScaleService {
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(SysScale entity){ private void validEntityBeforeSave(SysScale entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -109,7 +123,7 @@ public class SysScaleServiceImpl implements ISysScaleService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;

View File

@ -1,6 +1,7 @@
package org.dromara.system.mapper; package org.dromara.system.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.system.domain.SysDictData; import org.dromara.system.domain.SysDictData;
import org.dromara.system.domain.vo.SysDictDataVo; import org.dromara.system.domain.vo.SysDictDataVo;
@ -12,6 +13,7 @@ import java.util.List;
* *
* @author Lion Li * @author Lion Li
*/ */
@Mapper
public interface SysDictDataMapper extends BaseMapperPlus<SysDictData, SysDictDataVo> { public interface SysDictDataMapper extends BaseMapperPlus<SysDictData, SysDictDataVo> {
default List<SysDictDataVo> selectDictDataByType(String dictType) { default List<SysDictDataVo> selectDictDataByType(String dictType) {
@ -20,4 +22,12 @@ public interface SysDictDataMapper extends BaseMapperPlus<SysDictData, SysDictDa
.eq(SysDictData::getDictType, dictType) .eq(SysDictData::getDictType, dictType)
.orderByAsc(SysDictData::getDictSort)); .orderByAsc(SysDictData::getDictSort));
} }
default SysDictDataVo selectDictDataByTypeAndDictValue(String dictType, String dictValue) {
return selectVoOne(
new LambdaQueryWrapper<SysDictData>()
.eq(SysDictData::getDictType, dictType)
.eq(SysDictData::getDictValue, dictValue)
.last("limit 1"));
}
} }