问卷
This commit is contained in:
parent
19e10ea376
commit
52de6173d1
@ -59,7 +59,10 @@ public class QuestionInfoController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('system:question:query')")
|
||||
@GetMapping(value = "/{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')")
|
||||
@Log(title = "问卷基本信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody QuestionInfo questionInfo) {
|
||||
return toAjax(questionInfoService.updateQuestionInfo(questionInfo));
|
||||
public AjaxResult edit(@RequestBody QuestionVO question) {
|
||||
return questionInfoService.updateQuestionInfo(question);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,7 +94,7 @@ public class QuestionInfoController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('system:question:remove')")
|
||||
@Log(title = "问卷基本信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
||||
return toAjax(questionInfoService.deleteQuestionInfoByIds(ids));
|
||||
public AjaxResult remove(@PathVariable Long id) {
|
||||
return toAjax(questionInfoService.deleteQuestionInfoById(id));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.xinelu.manage.mapper.questionsubject;
|
||||
|
||||
import com.xinelu.manage.domain.questionsubject.QuestionSubject;
|
||||
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -61,9 +62,26 @@ public interface QuestionSubjectMapper {
|
||||
int deleteQuestionSubjectByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 批量新增问卷题目信息表
|
||||
*
|
||||
* @param questionSubjectList
|
||||
* @return
|
||||
* @param questionSubjectList 问卷题目信息
|
||||
* @return 数量
|
||||
*/
|
||||
int insertQuestionSubjectList(List<QuestionSubject> questionSubjectList);
|
||||
|
||||
/**
|
||||
* 查询问卷题目信息列表
|
||||
*
|
||||
* @param questionInfoId 问卷题目信息
|
||||
* @return 问卷题目信息集合
|
||||
*/
|
||||
List<QuestionSubjectVO> selectQuestionSubjectBy(Long questionInfoId);
|
||||
|
||||
/**
|
||||
* 删除问卷题目信息
|
||||
*
|
||||
* @param questionInfoId 问卷题目信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteSubjectByQuestionInfoId(Long questionInfoId);
|
||||
}
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.xinelu.manage.mapper.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;
|
||||
|
||||
@ -59,4 +61,28 @@ public interface QuestionSubjectOptionMapper {
|
||||
* @return 结果
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ public interface IQuestionInfoService {
|
||||
* @param id 问卷基本信息主键
|
||||
* @return 问卷基本信息
|
||||
*/
|
||||
QuestionInfo selectQuestionInfoById(Long id);
|
||||
AjaxResult selectQuestionInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询问卷基本信息列表
|
||||
@ -41,10 +41,10 @@ public interface IQuestionInfoService {
|
||||
/**
|
||||
* 修改问卷基本信息
|
||||
*
|
||||
* @param questionInfo 问卷基本信息
|
||||
* @param question 问卷基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
int updateQuestionInfo(QuestionInfo questionInfo);
|
||||
AjaxResult updateQuestionInfo(QuestionVO question);
|
||||
|
||||
/**
|
||||
* 批量删除问卷基本信息
|
||||
|
||||
@ -9,17 +9,21 @@ import com.xinelu.manage.domain.questionsubject.QuestionSubject;
|
||||
import com.xinelu.manage.domain.questionsubjectoption.QuestionSubjectOption;
|
||||
import com.xinelu.manage.mapper.questioninfo.QuestionInfoMapper;
|
||||
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.vo.questionInfo.QuestionVO;
|
||||
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
|
||||
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 问卷基本信息Service业务层处理
|
||||
@ -34,11 +38,34 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
private QuestionInfoMapper questionInfoMapper;
|
||||
@Resource
|
||||
private QuestionSubjectMapper questionSubjectMapper;
|
||||
@Resource
|
||||
private QuestionSubjectOptionMapper questionSubjectOptionMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public QuestionInfo selectQuestionInfoById(Long id) {
|
||||
return questionInfoMapper.selectQuestionInfoById(id);
|
||||
public AjaxResult selectQuestionInfoById(Long 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 问卷基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public AjaxResult insertQuestionInfo(QuestionVO question) {
|
||||
//新增问卷表
|
||||
QuestionInfo questionInfo = new QuestionInfo();
|
||||
BeanUtils.copyBeanProp(questionInfo, question);
|
||||
questionInfo.setCreateTime(DateUtils.getNowDate());
|
||||
@ -69,6 +98,7 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
log.info("新增问卷表失败," + questionInfo);
|
||||
throw new SecurityException("新增问卷失败!请联系管理员!");
|
||||
}
|
||||
//新增题目表
|
||||
List<QuestionSubjectVO> questionSubjectList = question.getQuestionSubjectList();
|
||||
List<QuestionSubject> questionSubjects = new ArrayList<>();
|
||||
List<QuestionSubjectOptionVO> questionSubjectOptions = new ArrayList<>();
|
||||
@ -86,7 +116,8 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
log.info("新增问卷题目表失败," + questionSubjects);
|
||||
throw new SecurityException("新增问卷失败!请联系管理员!");
|
||||
}
|
||||
ArrayList<QuestionSubjectOption> saveQuestionSubjectOptions = new ArrayList<>();
|
||||
//新增选项表
|
||||
List<QuestionSubjectOption> saveQuestionSubjectOptions = new ArrayList<>();
|
||||
QuestionSubjectOption saveQuestionSubjectOption = new QuestionSubjectOption();
|
||||
for (QuestionSubjectOptionVO questionSubjectOption : questionSubjectOptions) {
|
||||
BeanUtils.copyBeanProp(saveQuestionSubjectOption, questionSubjectOption);
|
||||
@ -96,20 +127,82 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
saveQuestionSubjectOption.setCreateBy(SecurityUtils.getUsername());
|
||||
saveQuestionSubjectOptions.add(questionSubjectOption);
|
||||
}
|
||||
|
||||
int subjectOptionCount = questionSubjectOptionMapper.insertQuestionSubjectOptionList(saveQuestionSubjectOptions);
|
||||
if (subjectOptionCount <= 0) {
|
||||
log.info("新增问卷答案表失败," + questionSubjects);
|
||||
throw new SecurityException("新增问卷失败!请联系管理员!");
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改问卷基本信息
|
||||
*
|
||||
* @param questionInfo 问卷基本信息
|
||||
* @param question 问卷基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public int updateQuestionInfo(QuestionInfo questionInfo) {
|
||||
public AjaxResult updateQuestionInfo(QuestionVO question) {
|
||||
//新增问卷表
|
||||
QuestionInfo questionInfo = new QuestionInfo();
|
||||
BeanUtils.copyBeanProp(questionInfo, question);
|
||||
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 问卷基本信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -340,4 +340,19 @@
|
||||
)
|
||||
</foreach>
|
||||
</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>
|
||||
@ -174,4 +174,63 @@
|
||||
#{id}
|
||||
</foreach>
|
||||
</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>
|
||||
Loading…
Reference in New Issue
Block a user