Merge branch 'youxilong_2.26_院后第一增量' of http://192.168.16.64:3000/jihan/PostDischargePatientManage into youxilong_2.26_院后第一增量

This commit is contained in:
youxilong 2024-03-04 17:32:35 +08:00
commit 89dd838af3
7 changed files with 246 additions and 17 deletions

View File

@ -59,7 +59,10 @@ public class QuestionInfoController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:question:query')") @PreAuthorize("@ss.hasPermi('system:question:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) { public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(questionInfoService.selectQuestionInfoById(id)); if (Objects.isNull(id)) {
return AjaxResult.success();
}
return questionInfoService.selectQuestionInfoById(id);
} }
/** /**
@ -81,8 +84,8 @@ public class QuestionInfoController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:question:edit')") @PreAuthorize("@ss.hasPermi('system:question:edit')")
@Log(title = "问卷基本信息", businessType = BusinessType.UPDATE) @Log(title = "问卷基本信息", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody QuestionInfo questionInfo) { public AjaxResult edit(@RequestBody QuestionVO question) {
return toAjax(questionInfoService.updateQuestionInfo(questionInfo)); return questionInfoService.updateQuestionInfo(question);
} }
/** /**
@ -91,7 +94,7 @@ public class QuestionInfoController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:question:remove')") @PreAuthorize("@ss.hasPermi('system:question:remove')")
@Log(title = "问卷基本信息", businessType = BusinessType.DELETE) @Log(title = "问卷基本信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) { public AjaxResult remove(@PathVariable Long id) {
return toAjax(questionInfoService.deleteQuestionInfoByIds(ids)); return toAjax(questionInfoService.deleteQuestionInfoById(id));
} }
} }

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.mapper.questionsubject; package com.xinelu.manage.mapper.questionsubject;
import com.xinelu.manage.domain.questionsubject.QuestionSubject; import com.xinelu.manage.domain.questionsubject.QuestionSubject;
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
import java.util.List; import java.util.List;
@ -61,9 +62,26 @@ public interface QuestionSubjectMapper {
int deleteQuestionSubjectByIds(Long[] ids); int deleteQuestionSubjectByIds(Long[] ids);
/** /**
* 批量新增问卷题目信息表
* *
* @param questionSubjectList * @param questionSubjectList 问卷题目信息
* @return * @return 数量
*/ */
int insertQuestionSubjectList(List<QuestionSubject> questionSubjectList); int insertQuestionSubjectList(List<QuestionSubject> questionSubjectList);
/**
* 查询问卷题目信息列表
*
* @param questionInfoId 问卷题目信息
* @return 问卷题目信息集合
*/
List<QuestionSubjectVO> selectQuestionSubjectBy(Long questionInfoId);
/**
* 删除问卷题目信息
*
* @param questionInfoId 问卷题目信息主键
* @return 结果
*/
int deleteSubjectByQuestionInfoId(Long questionInfoId);
} }

View File

@ -1,6 +1,8 @@
package com.xinelu.manage.mapper.questionsubjectoption; package com.xinelu.manage.mapper.questionsubjectoption;
import com.xinelu.manage.domain.questionsubjectoption.QuestionSubjectOption; import com.xinelu.manage.domain.questionsubjectoption.QuestionSubjectOption;
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -59,4 +61,28 @@ public interface QuestionSubjectOptionMapper {
* @return 结果 * @return 结果
*/ */
int deleteQuestionSubjectOptionByIds(Long[] ids); int deleteQuestionSubjectOptionByIds(Long[] ids);
/**
* 批量新增问卷题目信息表
*
* @param saveQuestionSubjectOptions 问卷题目信息
* @return 数量
*/
int insertQuestionSubjectOptionList(List<QuestionSubjectOption> saveQuestionSubjectOptions);
/**
* 根据题目表id查询选项表信息
*
* @param questionSubjectIds 题目表id
* @return QuestionSubjectOptionVO
*/
List<QuestionSubjectOptionVO> selectQuestionSubjectOptions(@Param("questionSubjectIds") List<Long> questionSubjectIds);
/**
* 根据题目表id删除选项表信息
*
* @param questionSubjectIds 题目表id
* @return int
*/
int deleteOptionByQuestionSubjectIds(List<Long> questionSubjectIds);
} }

View File

@ -20,7 +20,7 @@ public interface IQuestionInfoService {
* @param id 问卷基本信息主键 * @param id 问卷基本信息主键
* @return 问卷基本信息 * @return 问卷基本信息
*/ */
QuestionInfo selectQuestionInfoById(Long id); AjaxResult selectQuestionInfoById(Long id);
/** /**
* 查询问卷基本信息列表 * 查询问卷基本信息列表
@ -41,10 +41,10 @@ public interface IQuestionInfoService {
/** /**
* 修改问卷基本信息 * 修改问卷基本信息
* *
* @param questionInfo 问卷基本信息 * @param question 问卷基本信息
* @return 结果 * @return 结果
*/ */
int updateQuestionInfo(QuestionInfo questionInfo); AjaxResult updateQuestionInfo(QuestionVO question);
/** /**
* 批量删除问卷基本信息 * 批量删除问卷基本信息

View File

@ -9,17 +9,21 @@ import com.xinelu.manage.domain.questionsubject.QuestionSubject;
import com.xinelu.manage.domain.questionsubjectoption.QuestionSubjectOption; import com.xinelu.manage.domain.questionsubjectoption.QuestionSubjectOption;
import com.xinelu.manage.mapper.questioninfo.QuestionInfoMapper; import com.xinelu.manage.mapper.questioninfo.QuestionInfoMapper;
import com.xinelu.manage.mapper.questionsubject.QuestionSubjectMapper; import com.xinelu.manage.mapper.questionsubject.QuestionSubjectMapper;
import com.xinelu.manage.mapper.questionsubjectoption.QuestionSubjectOptionMapper;
import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
import com.xinelu.manage.vo.questionInfo.QuestionVO; import com.xinelu.manage.vo.questionInfo.QuestionVO;
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO; import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO; import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 问卷基本信息Service业务层处理 * 问卷基本信息Service业务层处理
@ -34,11 +38,34 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
private QuestionInfoMapper questionInfoMapper; private QuestionInfoMapper questionInfoMapper;
@Resource @Resource
private QuestionSubjectMapper questionSubjectMapper; private QuestionSubjectMapper questionSubjectMapper;
@Resource
private QuestionSubjectOptionMapper questionSubjectOptionMapper;
@Override @Override
public QuestionInfo selectQuestionInfoById(Long id) { public AjaxResult selectQuestionInfoById(Long id) {
return questionInfoMapper.selectQuestionInfoById(id); //查询问卷表
QuestionInfo questionInfo = questionInfoMapper.selectQuestionInfoById(id);
if (Objects.isNull(questionInfo)) {
return AjaxResult.error("该问卷信息已不存在!");
}
//查询题目表
QuestionVO questionVO = new QuestionVO();
BeanUtils.copyBeanProp(questionVO, questionInfo);
List<QuestionSubjectVO> questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(id);
List<Long> questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
if (questionSubjectIds.size() == 0) {
questionVO.setQuestionSubjectList(questionSubjects);
return AjaxResult.success(questionVO);
}
//查询选项表
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
for (QuestionSubjectVO questionSubject : questionSubjects) {
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
questionSubject.setQuestionSubjectOptionList(collect);
}
questionVO.setQuestionSubjectList(questionSubjects);
return AjaxResult.success(questionVO);
} }
/** /**
@ -58,8 +85,10 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
* @param question 问卷基本信息 * @param question 问卷基本信息
* @return 结果 * @return 结果
*/ */
@Transactional(rollbackFor = Exception.class)
@Override @Override
public AjaxResult insertQuestionInfo(QuestionVO question) { public AjaxResult insertQuestionInfo(QuestionVO question) {
//新增问卷表
QuestionInfo questionInfo = new QuestionInfo(); QuestionInfo questionInfo = new QuestionInfo();
BeanUtils.copyBeanProp(questionInfo, question); BeanUtils.copyBeanProp(questionInfo, question);
questionInfo.setCreateTime(DateUtils.getNowDate()); questionInfo.setCreateTime(DateUtils.getNowDate());
@ -69,6 +98,7 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
log.info("新增问卷表失败," + questionInfo); log.info("新增问卷表失败," + questionInfo);
throw new SecurityException("新增问卷失败!请联系管理员!"); throw new SecurityException("新增问卷失败!请联系管理员!");
} }
//新增题目表
List<QuestionSubjectVO> questionSubjectList = question.getQuestionSubjectList(); List<QuestionSubjectVO> questionSubjectList = question.getQuestionSubjectList();
List<QuestionSubject> questionSubjects = new ArrayList<>(); List<QuestionSubject> questionSubjects = new ArrayList<>();
List<QuestionSubjectOptionVO> questionSubjectOptions = new ArrayList<>(); List<QuestionSubjectOptionVO> questionSubjectOptions = new ArrayList<>();
@ -86,7 +116,8 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
log.info("新增问卷题目表失败," + questionSubjects); log.info("新增问卷题目表失败," + questionSubjects);
throw new SecurityException("新增问卷失败!请联系管理员!"); throw new SecurityException("新增问卷失败!请联系管理员!");
} }
ArrayList<QuestionSubjectOption> saveQuestionSubjectOptions = new ArrayList<>(); //新增选项表
List<QuestionSubjectOption> saveQuestionSubjectOptions = new ArrayList<>();
QuestionSubjectOption saveQuestionSubjectOption = new QuestionSubjectOption(); QuestionSubjectOption saveQuestionSubjectOption = new QuestionSubjectOption();
for (QuestionSubjectOptionVO questionSubjectOption : questionSubjectOptions) { for (QuestionSubjectOptionVO questionSubjectOption : questionSubjectOptions) {
BeanUtils.copyBeanProp(saveQuestionSubjectOption, questionSubjectOption); BeanUtils.copyBeanProp(saveQuestionSubjectOption, questionSubjectOption);
@ -96,20 +127,82 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
saveQuestionSubjectOption.setCreateBy(SecurityUtils.getUsername()); saveQuestionSubjectOption.setCreateBy(SecurityUtils.getUsername());
saveQuestionSubjectOptions.add(questionSubjectOption); saveQuestionSubjectOptions.add(questionSubjectOption);
} }
int subjectOptionCount = questionSubjectOptionMapper.insertQuestionSubjectOptionList(saveQuestionSubjectOptions);
if (subjectOptionCount <= 0) {
log.info("新增问卷答案表失败," + questionSubjects);
throw new SecurityException("新增问卷失败!请联系管理员!");
}
return AjaxResult.success(); return AjaxResult.success();
} }
/** /**
* 修改问卷基本信息 * 修改问卷基本信息
* *
* @param questionInfo 问卷基本信息 * @param question 问卷基本信息
* @return 结果 * @return 结果
*/ */
@Transactional(rollbackFor = Exception.class)
@Override @Override
public int updateQuestionInfo(QuestionInfo questionInfo) { public AjaxResult updateQuestionInfo(QuestionVO question) {
//新增问卷表
QuestionInfo questionInfo = new QuestionInfo();
BeanUtils.copyBeanProp(questionInfo, question);
questionInfo.setUpdateTime(DateUtils.getNowDate()); questionInfo.setUpdateTime(DateUtils.getNowDate());
return questionInfoMapper.updateQuestionInfo(questionInfo); questionInfo.setUpdateBy(SecurityUtils.getUsername());
int questionCount = questionInfoMapper.updateQuestionInfo(questionInfo);
if (questionCount <= 0) {
log.info("修改问卷表失败," + questionInfo);
throw new SecurityException("修改问卷失败!请联系管理员!");
}
//查询题目及选项表id 根据上级id删除
List<QuestionSubjectVO> originalSubjectList = questionSubjectMapper.selectQuestionSubjectBy(question.getId());
if (CollectionUtils.isNotEmpty(originalSubjectList)) {
List<Long> originalSubjectIds = originalSubjectList.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
int deleteQuestionCount = questionSubjectMapper.deleteSubjectByQuestionInfoId(question.getId());
if (deleteQuestionCount < 0) {
log.info("删除问卷题目表失败");
throw new SecurityException("修改问卷失败!请联系管理员!");
}
int deleteOptionIds = questionSubjectOptionMapper.deleteOptionByQuestionSubjectIds(originalSubjectIds);
if (deleteOptionIds < 0) {
log.info("删除问卷选项表失败");
throw new SecurityException("修改问卷失败!请联系管理员!");
}
}
//新增问卷表及题目表
List<QuestionSubjectVO> questionSubjectList = question.getQuestionSubjectList();
List<QuestionSubject> questionSubjects = new ArrayList<>();
List<QuestionSubjectOptionVO> questionSubjectOptions = new ArrayList<>();
QuestionSubject saveQuestionSubject = new QuestionSubject();
for (QuestionSubjectVO questionSubject : questionSubjectList) {
BeanUtils.copyBeanProp(saveQuestionSubject, questionSubject);
saveQuestionSubject.setQuestionInfoId(questionInfo.getId());
saveQuestionSubject.setCreateTime(DateUtils.getNowDate());
saveQuestionSubject.setCreateBy(SecurityUtils.getUsername());
questionSubjects.add(saveQuestionSubject);
questionSubjectOptions.addAll(questionSubject.getQuestionSubjectOptionList());
}
int questionSubjectCount = questionSubjectMapper.insertQuestionSubjectList(questionSubjects);
if (questionSubjectCount <= 0) {
log.info("修改问卷题目表失败," + questionSubjects);
throw new SecurityException("修改问卷失败!请联系管理员!");
}
List<QuestionSubjectOption> saveQuestionSubjectOptions = new ArrayList<>();
QuestionSubjectOption saveQuestionSubjectOption = new QuestionSubjectOption();
for (QuestionSubjectOptionVO questionSubjectOption : questionSubjectOptions) {
BeanUtils.copyBeanProp(saveQuestionSubjectOption, questionSubjectOption);
QuestionSubject questionSubject = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionNumber()) && questionSubjectOption.getQuestionNumber().equals(item.getQuestionNumber())).findFirst().orElse(new QuestionSubject());
questionSubjectOption.setQuestionnaireSubjectId(questionSubject.getId());
saveQuestionSubjectOption.setCreateTime(DateUtils.getNowDate());
saveQuestionSubjectOption.setCreateBy(SecurityUtils.getUsername());
saveQuestionSubjectOptions.add(questionSubjectOption);
}
int subjectOptionCount = questionSubjectOptionMapper.insertQuestionSubjectOptionList(saveQuestionSubjectOptions);
if (subjectOptionCount <= 0) {
log.info("修改问卷答案表失败," + questionSubjects);
throw new SecurityException("修改问卷失败!请联系管理员!");
}
return AjaxResult.success();
} }
/** /**
@ -129,8 +222,23 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
* @param id 问卷基本信息主键 * @param id 问卷基本信息主键
* @return 结果 * @return 结果
*/ */
@Transactional(rollbackFor = Exception.class)
@Override @Override
public int deleteQuestionInfoById(Long id) { public int deleteQuestionInfoById(Long id) {
List<QuestionSubjectVO> originalSubjectList = questionSubjectMapper.selectQuestionSubjectBy(id);
if (CollectionUtils.isNotEmpty(originalSubjectList)) {
List<Long> originalSubjectIds = originalSubjectList.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
int deleteQuestionCount = questionSubjectMapper.deleteSubjectByQuestionInfoId(id);
if (deleteQuestionCount < 0) {
log.info("删除问卷题目表失败");
throw new SecurityException("删除问卷失败!请联系管理员!");
}
int deleteOptionIds = questionSubjectOptionMapper.deleteOptionByQuestionSubjectIds(originalSubjectIds);
if (deleteOptionIds < 0) {
log.info("删除问卷选项表失败");
throw new SecurityException("删除问卷失败!请联系管理员!");
}
}
return questionInfoMapper.deleteQuestionInfoById(id); return questionInfoMapper.deleteQuestionInfoById(id);
} }
} }

View File

@ -340,4 +340,19 @@
) )
</foreach> </foreach>
</insert> </insert>
<select id="selectQuestionSubjectBy" resultType="com.xinelu.manage.vo.questionsubject.QuestionSubjectVO">
<include refid="selectQuestionSubjectVo"/>
<where>
<if test="questionInfoId != null ">
and question_info_id = #{id}
</if>
</where>
</select>
<delete id="deleteSubjectByQuestionInfoId">
delete
from question_subject
where question_info_id = #{questionInfoId}
</delete>
</mapper> </mapper>

View File

@ -174,4 +174,63 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<insert id="insertQuestionSubjectOptionList">
insert into question_subject_option(
questionnaire_subject_id,
question_name,
option_name,
option_answer,
option_score,
option_sort,
option_remark,
create_by,
create_time
) values
<foreach item="QuestionSubjectOption" index="index" collection="list" separator=",">
(
#{QuestionSubjectOption.questionnaireSubjectId},
#{QuestionSubjectOption.questionName},
#{QuestionSubjectOption.optionName},
#{QuestionSubjectOption.optionAnswer},
#{QuestionSubjectOption.optionScore},
#{QuestionSubjectOption.optionSort},
#{QuestionSubjectOption.optionRemark},
#{QuestionSubjectOption.createBy},
#{QuestionSubjectOption.createTime}
)
</foreach>
</insert>
<select id="selectQuestionSubjectOptions"
resultType="com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO">
select id,
questionnaire_subject_id,
question_name,
option_name,
option_answer,
option_score,
option_sort,
option_remark,
create_by,
create_time,
update_by,
update_time
from question_subject_option
<where>
<if test="questionSubjectIds != null and questionSubjectIds.size() > 0">
questionnaire_subject_id in
<foreach item="questionSubjectIds" collection="questionSubjectIds" open="(" separator="," close=")">
#{questionSubjectIds}
</foreach>
</if>
</where>
</select>
<delete id="deleteOptionByQuestionSubjectIds">
delete from question_subject_option where questionnaire_subject_id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{questionSubjectIds}
</foreach>
</delete>
</mapper> </mapper>