diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/questioninfo/QuestionInfoController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/questioninfo/QuestionInfoController.java index 71f63ce9..f5666912 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/questioninfo/QuestionInfoController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/questioninfo/QuestionInfoController.java @@ -9,12 +9,14 @@ import com.xinelu.common.utils.poi.ExcelUtil; import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.vo.questionInfo.QuestionVO; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Objects; /** * 问卷基本信息Controller @@ -67,7 +69,10 @@ public class QuestionInfoController extends BaseController { @Log(title = "问卷基本信息", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody QuestionVO questionInfo) { - return toAjax(questionInfoService.insertQuestionInfo(questionInfo)); + if (Objects.isNull(questionInfo) || StringUtils.isBlank(questionInfo.getQuestionnaireName())) { + return AjaxResult.error("请添加问卷信息!"); + } + return questionInfoService.insertQuestionInfo(questionInfo); } /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/questionsubject/QuestionSubjectMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/questionsubject/QuestionSubjectMapper.java index 94c3fdc5..a403b617 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/questionsubject/QuestionSubjectMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/questionsubject/QuestionSubjectMapper.java @@ -59,4 +59,11 @@ public interface QuestionSubjectMapper { * @return 结果 */ int deleteQuestionSubjectByIds(Long[] ids); + + /** + * + * @param questionSubjectList + * @return + */ + int insertQuestionSubjectList(List questionSubjectList); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/IQuestionInfoService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/IQuestionInfoService.java index 07e7f292..8ca51515 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/IQuestionInfoService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/IQuestionInfoService.java @@ -1,5 +1,6 @@ package com.xinelu.manage.service.questioninfo; +import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.vo.questionInfo.QuestionVO; @@ -35,7 +36,7 @@ public interface IQuestionInfoService { * @param questionInfo 问卷基本信息 * @return 结果 */ - int insertQuestionInfo(QuestionVO questionInfo); + AjaxResult insertQuestionInfo(QuestionVO questionInfo); /** * 修改问卷基本信息 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/impl/QuestionInfoServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/impl/QuestionInfoServiceImpl.java index 510a024b..d6b15438 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/impl/QuestionInfoServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/questioninfo/impl/QuestionInfoServiceImpl.java @@ -1,16 +1,25 @@ package com.xinelu.manage.service.questioninfo.impl; +import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.utils.DateUtils; +import com.xinelu.common.utils.SecurityUtils; import com.xinelu.common.utils.bean.BeanUtils; import com.xinelu.manage.domain.questioninfo.QuestionInfo; +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.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.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * 问卷基本信息Service业务层处理 @@ -18,10 +27,13 @@ import java.util.List; * @author xinelu * @date 2024-02-28 */ +@Slf4j @Service public class QuestionInfoServiceImpl implements IQuestionInfoService { @Resource private QuestionInfoMapper questionInfoMapper; + @Resource + private QuestionSubjectMapper questionSubjectMapper; @Override @@ -47,15 +59,45 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService { * @return 结果 */ @Override - public int insertQuestionInfo(QuestionVO question) { + public AjaxResult insertQuestionInfo(QuestionVO question) { QuestionInfo questionInfo = new QuestionInfo(); - BeanUtils.copyBeanProp(questionInfo,question); - int i = questionInfoMapper.insertQuestionInfo(questionInfo); - - List questionSubjectList = question.getQuestionSubjectList(); - + BeanUtils.copyBeanProp(questionInfo, question); questionInfo.setCreateTime(DateUtils.getNowDate()); - return questionInfoMapper.insertQuestionInfo(questionInfo); + questionInfo.setCreateBy(SecurityUtils.getUsername()); + int questionCount = questionInfoMapper.insertQuestionInfo(questionInfo); + if (questionCount <= 0) { + log.info("新增问卷表失败," + questionInfo); + throw new SecurityException("新增问卷失败!请联系管理员!"); + } + List questionSubjectList = question.getQuestionSubjectList(); + List questionSubjects = new ArrayList<>(); + List 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("新增问卷失败!请联系管理员!"); + } + ArrayList 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); + } + + return AjaxResult.success(); } /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionInfo/QuestionVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionInfo/QuestionVO.java index 406cb522..92c32360 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionInfo/QuestionVO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionInfo/QuestionVO.java @@ -3,7 +3,6 @@ package com.xinelu.manage.vo.questionInfo; import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO; -import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO; import lombok.Data; import lombok.EqualsAndHashCode; @@ -19,8 +18,8 @@ import java.util.List; @Data public class QuestionVO extends QuestionInfo { + /** + * 题目信息 + */ private List questionSubjectList; - - private List questionSubjectOptionList; - } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubject/QuestionSubjectVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubject/QuestionSubjectVO.java index d1d80887..9ddc0f46 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubject/QuestionSubjectVO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubject/QuestionSubjectVO.java @@ -1,9 +1,12 @@ package com.xinelu.manage.vo.questionsubject; import com.xinelu.manage.domain.questionsubject.QuestionSubject; +import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + /** * 问卷题目信息对象 question_subject * @@ -14,5 +17,8 @@ import lombok.EqualsAndHashCode; @Data public class QuestionSubjectVO extends QuestionSubject { - + /** + * 选项信信息 + */ + private List questionSubjectOptionList; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubjectoption/QuestionSubjectOptionVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubjectoption/QuestionSubjectOptionVO.java index 619a6ee1..c55f462d 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubjectoption/QuestionSubjectOptionVO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/questionsubjectoption/QuestionSubjectOptionVO.java @@ -14,4 +14,8 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class QuestionSubjectOptionVO extends QuestionSubjectOption { + /** + * 题号 + */ + private Integer questionNumber; } diff --git a/postdischarge-manage/src/main/resources/mapper/manage/questionsubject/QuestionSubjectMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/questionsubject/QuestionSubjectMapper.xml index fd1ef361..13bd01f0 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/questionsubject/QuestionSubjectMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/questionsubject/QuestionSubjectMapper.xml @@ -5,262 +5,286 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - select id, question_info_id, question_number, question_type, question_name, question_description, write_description, fill_blanks_answer, option_count, whether_score, scoring_method, scoring_description, question_score, custom_trigger_condition, propaganda_info_id, propaganda_title, question_sort, question_remark, create_by, create_time, update_by, update_time from question_subject + select id, + question_info_id, + question_number, + question_type, + question_name, + question_description, + write_description, + fill_blanks_answer, + option_count, + whether_score, + scoring_method, + scoring_description, + question_score, + custom_trigger_condition, + propaganda_info_id, + propaganda_title, + question_sort, + question_remark, + create_by, + create_time, + update_by, + update_time + from question_subject insert into question_subject - question_info_id, - - question_number, - - question_type, - - question_name, - - question_description, - - write_description, - - fill_blanks_answer, - - option_count, - - whether_score, - - scoring_method, - - scoring_description, - - question_score, - - custom_trigger_condition, - - propaganda_info_id, - - propaganda_title, - - question_sort, - - question_remark, - - create_by, - - create_time, - - update_by, - - update_time, - + question_info_id, + + question_number, + + question_type, + + question_name, + + question_description, + + write_description, + + fill_blanks_answer, + + option_count, + + whether_score, + + scoring_method, + + scoring_description, + + question_score, + + custom_trigger_condition, + + propaganda_info_id, + + propaganda_title, + + question_sort, + + question_remark, + + create_by, + + create_time, + + update_by, + + update_time, + - #{questionInfoId}, - - #{questionNumber}, - - #{questionType}, - - #{questionName}, - - #{questionDescription}, - - #{writeDescription}, - - #{fillBlanksAnswer}, - - #{optionCount}, - - #{whetherScore}, - - #{scoringMethod}, - - #{scoringDescription}, - - #{questionScore}, - - #{customTriggerCondition}, - - #{propagandaInfoId}, - - #{propagandaTitle}, - - #{questionSort}, - - #{questionRemark}, - - #{createBy}, - - #{createTime}, - - #{updateBy}, - - #{updateTime}, - + #{questionInfoId}, + + #{questionNumber}, + + #{questionType}, + + #{questionName}, + + #{questionDescription}, + + #{writeDescription}, + + #{fillBlanksAnswer}, + + #{optionCount}, + + #{whetherScore}, + + #{scoringMethod}, + + #{scoringDescription}, + + #{questionScore}, + + #{customTriggerCondition}, + + #{propagandaInfoId}, + + #{propagandaTitle}, + + #{questionSort}, + + #{questionRemark}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + update question_subject - question_info_id = - #{questionInfoId}, - - question_number = - #{questionNumber}, - - question_type = - #{questionType}, - - question_name = - #{questionName}, - - question_description = - #{questionDescription}, - - write_description = - #{writeDescription}, - - fill_blanks_answer = - #{fillBlanksAnswer}, - - option_count = - #{optionCount}, - - whether_score = - #{whetherScore}, - - scoring_method = - #{scoringMethod}, - - scoring_description = - #{scoringDescription}, - - question_score = - #{questionScore}, - - custom_trigger_condition = - #{customTriggerCondition}, - - propaganda_info_id = - #{propagandaInfoId}, - - propaganda_title = - #{propagandaTitle}, - - question_sort = - #{questionSort}, - - question_remark = - #{questionRemark}, - - create_by = - #{createBy}, - - create_time = - #{createTime}, - - update_by = - #{updateBy}, - - update_time = - #{updateTime}, - + question_info_id = + #{questionInfoId}, + + question_number = + #{questionNumber}, + + question_type = + #{questionType}, + + question_name = + #{questionName}, + + question_description = + #{questionDescription}, + + write_description = + #{writeDescription}, + + fill_blanks_answer = + #{fillBlanksAnswer}, + + option_count = + #{optionCount}, + + whether_score = + #{whetherScore}, + + scoring_method = + #{scoringMethod}, + + scoring_description = + #{scoringDescription}, + + question_score = + #{questionScore}, + + custom_trigger_condition = + #{customTriggerCondition}, + + propaganda_info_id = + #{propagandaInfoId}, + + propaganda_title = + #{propagandaTitle}, + + question_sort = + #{questionSort}, + + question_remark = + #{questionRemark}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + where id = #{id} - delete from question_subject where id = #{id} + delete + from question_subject + where id = #{id} @@ -269,4 +293,51 @@ #{id} + + + insert into question_subject( + question_info_id, + question_number, + question_type, + question_name, + question_description, + write_description, + fill_blanks_answer, + option_count, + whether_score, + scoring_method, + scoring_description, + question_score, + custom_trigger_condition, + propaganda_info_id, + propaganda_title, + question_sort, + question_remark, + create_by, + create_time + ) values + + ( + #{QuestionSubject.questionInfoId}, + #{QuestionSubject.questionNumber}, + #{QuestionSubject.questionType}, + #{QuestionSubject.questionName}, + #{QuestionSubject.questionDescription}, + #{QuestionSubject.writeDescription}, + #{QuestionSubject.fillBlanksAnswer}, + #{QuestionSubject.optionCount}, + #{QuestionSubject.whetherScore}, + #{QuestionSubject.scoringMethod}, + #{QuestionSubject.scoringDescription}, + #{QuestionSubject.questionScore}, + #{QuestionSubject.customTriggerCondition}, + #{QuestionSubject.propagandaInfoId}, + #{QuestionSubject.propagandaTitle}, + #{QuestionSubject.questionSort}, + #{QuestionSubject.questionRemark}, + #{QuestionSubject.createBy}, + #{QuestionSubject.createTime} + ) + + \ No newline at end of file