This commit is contained in:
zhangheng 2024-03-01 17:46:19 +08:00
parent 4e1df448ac
commit d7284dbbdb
8 changed files with 373 additions and 238 deletions

View File

@ -9,12 +9,14 @@ import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.domain.questioninfo.QuestionInfo;
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 org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 问卷基本信息Controller * 问卷基本信息Controller
@ -67,7 +69,10 @@ public class QuestionInfoController extends BaseController {
@Log(title = "问卷基本信息", businessType = BusinessType.INSERT) @Log(title = "问卷基本信息", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody QuestionVO questionInfo) { 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);
} }
/** /**

View File

@ -59,4 +59,11 @@ public interface QuestionSubjectMapper {
* @return 结果 * @return 结果
*/ */
int deleteQuestionSubjectByIds(Long[] ids); int deleteQuestionSubjectByIds(Long[] ids);
/**
*
* @param questionSubjectList
* @return
*/
int insertQuestionSubjectList(List<QuestionSubject> questionSubjectList);
} }

View File

@ -1,5 +1,6 @@
package com.xinelu.manage.service.questioninfo; package com.xinelu.manage.service.questioninfo;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.domain.questioninfo.QuestionInfo;
import com.xinelu.manage.vo.questionInfo.QuestionVO; import com.xinelu.manage.vo.questionInfo.QuestionVO;
@ -35,7 +36,7 @@ public interface IQuestionInfoService {
* @param questionInfo 问卷基本信息 * @param questionInfo 问卷基本信息
* @return 结果 * @return 结果
*/ */
int insertQuestionInfo(QuestionVO questionInfo); AjaxResult insertQuestionInfo(QuestionVO questionInfo);
/** /**
* 修改问卷基本信息 * 修改问卷基本信息

View File

@ -1,16 +1,25 @@
package com.xinelu.manage.service.questioninfo.impl; 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.DateUtils;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.bean.BeanUtils; import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.manage.domain.questioninfo.QuestionInfo; 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.questioninfo.QuestionInfoMapper;
import com.xinelu.manage.mapper.questionsubject.QuestionSubjectMapper;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 问卷基本信息Service业务层处理 * 问卷基本信息Service业务层处理
@ -18,10 +27,13 @@ import java.util.List;
* @author xinelu * @author xinelu
* @date 2024-02-28 * @date 2024-02-28
*/ */
@Slf4j
@Service @Service
public class QuestionInfoServiceImpl implements IQuestionInfoService { public class QuestionInfoServiceImpl implements IQuestionInfoService {
@Resource @Resource
private QuestionInfoMapper questionInfoMapper; private QuestionInfoMapper questionInfoMapper;
@Resource
private QuestionSubjectMapper questionSubjectMapper;
@Override @Override
@ -47,15 +59,45 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertQuestionInfo(QuestionVO question) { public AjaxResult insertQuestionInfo(QuestionVO question) {
QuestionInfo questionInfo = new QuestionInfo(); QuestionInfo questionInfo = new QuestionInfo();
BeanUtils.copyBeanProp(questionInfo,question); BeanUtils.copyBeanProp(questionInfo, question);
int i = questionInfoMapper.insertQuestionInfo(questionInfo);
List<QuestionSubjectVO> questionSubjectList = question.getQuestionSubjectList();
questionInfo.setCreateTime(DateUtils.getNowDate()); 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<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("新增问卷失败!请联系管理员!");
}
ArrayList<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);
}
return AjaxResult.success();
} }
/** /**

View File

@ -3,7 +3,6 @@ package com.xinelu.manage.vo.questionInfo;
import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.domain.questioninfo.QuestionInfo;
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO; import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -19,8 +18,8 @@ import java.util.List;
@Data @Data
public class QuestionVO extends QuestionInfo { public class QuestionVO extends QuestionInfo {
/**
* 题目信息
*/
private List<QuestionSubjectVO> questionSubjectList; private List<QuestionSubjectVO> questionSubjectList;
private List<QuestionSubjectOptionVO> questionSubjectOptionList;
} }

View File

@ -1,9 +1,12 @@
package com.xinelu.manage.vo.questionsubject; package com.xinelu.manage.vo.questionsubject;
import com.xinelu.manage.domain.questionsubject.QuestionSubject; import com.xinelu.manage.domain.questionsubject.QuestionSubject;
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
/** /**
* 问卷题目信息对象 question_subject * 问卷题目信息对象 question_subject
* *
@ -14,5 +17,8 @@ import lombok.EqualsAndHashCode;
@Data @Data
public class QuestionSubjectVO extends QuestionSubject { public class QuestionSubjectVO extends QuestionSubject {
/**
* 选项信信息
*/
private List<QuestionSubjectOptionVO> questionSubjectOptionList;
} }

View File

@ -14,4 +14,8 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class QuestionSubjectOptionVO extends QuestionSubjectOption { public class QuestionSubjectOptionVO extends QuestionSubjectOption {
/**
* 题号
*/
private Integer questionNumber;
} }

View File

@ -30,7 +30,29 @@
</resultMap> </resultMap>
<sql id="selectQuestionSubjectVo"> <sql id="selectQuestionSubjectVo">
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
</sql> </sql>
<select id="selectQuestionSubjectList" parameterType="QuestionSubject" resultMap="QuestionSubjectResult"> <select id="selectQuestionSubjectList" parameterType="QuestionSubject" resultMap="QuestionSubjectResult">
@ -260,7 +282,9 @@
</update> </update>
<delete id="deleteQuestionSubjectById" parameterType="Long"> <delete id="deleteQuestionSubjectById" parameterType="Long">
delete from question_subject where id = #{id} delete
from question_subject
where id = #{id}
</delete> </delete>
<delete id="deleteQuestionSubjectByIds" parameterType="String"> <delete id="deleteQuestionSubjectByIds" parameterType="String">
@ -269,4 +293,51 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<insert id="insertQuestionSubjectList" useGeneratedKeys="true" keyProperty="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
<foreach item="QuestionSubject" index="index" collection="list" separator=",">
(
#{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}
)
</foreach>
</insert>
</mapper> </mapper>