|
|
@@ -0,0 +1,170 @@
|
|
|
+package com.xjrsoft.module.assessment.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanPageDto;
|
|
|
+import com.xjrsoft.module.assessment.entity.AssessmentPlanAnswerClass;
|
|
|
+import com.xjrsoft.module.assessment.entity.AssessmentPlanAnswerStudent;
|
|
|
+import com.xjrsoft.module.assessment.entity.AssessmentPlanQuestion;
|
|
|
+import com.xjrsoft.module.assessment.entity.AssessmentTemplatePlan;
|
|
|
+import com.xjrsoft.module.assessment.mapper.AssessmentPlanAnswerClassMapper;
|
|
|
+import com.xjrsoft.module.assessment.mapper.AssessmentPlanAnswerStudentMapper;
|
|
|
+import com.xjrsoft.module.assessment.mapper.AssessmentPlanQuestionMapper;
|
|
|
+import com.xjrsoft.module.assessment.mapper.AssessmentTemplatePlanMapper;
|
|
|
+import com.xjrsoft.module.assessment.service.IAssessmentTemplatePlanService;
|
|
|
+import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanPageVo;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 考核计划
|
|
|
+* @Author dzx
|
|
|
+* @Date: 2024-04-01
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<AssessmentTemplatePlanMapper, AssessmentTemplatePlan> implements IAssessmentTemplatePlanService {
|
|
|
+ private final AssessmentTemplatePlanMapper templatePlanMapper;
|
|
|
+
|
|
|
+ private final AssessmentPlanQuestionMapper planQuestionMapper;
|
|
|
+ private final AssessmentPlanAnswerClassMapper answerClassMapper;
|
|
|
+ private final AssessmentPlanAnswerStudentMapper studentMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean add(AssessmentTemplatePlan assessmentTemplatePlan) {
|
|
|
+ templatePlanMapper.insert(assessmentTemplatePlan);
|
|
|
+ for (AssessmentPlanQuestion assessmentPlanQuestion : assessmentTemplatePlan.getAssessmentPlanQuestionList()) {
|
|
|
+ assessmentPlanQuestion.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ planQuestionMapper.insert(assessmentPlanQuestion);
|
|
|
+ }
|
|
|
+ for (AssessmentPlanAnswerClass assessmentPlanAnswerClass : assessmentTemplatePlan.getAssessmentPlanAnswerClassList()) {
|
|
|
+ assessmentPlanAnswerClass.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ answerClassMapper.insert(assessmentPlanAnswerClass);
|
|
|
+ }
|
|
|
+ for (AssessmentPlanAnswerStudent assessmentPlanAnswerStudent : assessmentTemplatePlan.getAssessmentPlanAnswerStudentList()) {
|
|
|
+ assessmentPlanAnswerStudent.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ studentMapper.insert(assessmentPlanAnswerStudent);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean update(AssessmentTemplatePlan assessmentTemplatePlan) {
|
|
|
+ templatePlanMapper.updateById(assessmentTemplatePlan);
|
|
|
+ //********************************* AssessmentPlanQuestion 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<AssessmentPlanQuestion> assessmentPlanQuestionList = planQuestionMapper.selectList(Wrappers.lambdaQuery(AssessmentPlanQuestion.class).eq(AssessmentPlanQuestion::getAssessmentTemplatePlanId, assessmentTemplatePlan.getId()).select(AssessmentPlanQuestion::getId));
|
|
|
+ List<Long> assessmentPlanQuestionIds = assessmentPlanQuestionList.stream().map(AssessmentPlanQuestion::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> assessmentPlanQuestionOldIds = assessmentTemplatePlan.getAssessmentPlanQuestionList().stream().map(AssessmentPlanQuestion::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> assessmentPlanQuestionRemoveIds = assessmentPlanQuestionIds.stream().filter(item -> !assessmentPlanQuestionOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (AssessmentPlanQuestion assessmentPlanQuestion : assessmentTemplatePlan.getAssessmentPlanQuestionList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (assessmentPlanQuestion.getId() != null) {
|
|
|
+ planQuestionMapper.updateById(assessmentPlanQuestion);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ assessmentPlanQuestion.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ planQuestionMapper.insert(assessmentPlanQuestion);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(assessmentPlanQuestionRemoveIds.size() > 0){
|
|
|
+ planQuestionMapper.deleteBatchIds(assessmentPlanQuestionRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* AssessmentPlanQuestion 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ //********************************* AssessmentPlanAnswerClass 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<AssessmentPlanAnswerClass> assessmentPlanAnswerClassList = answerClassMapper.selectList(Wrappers.lambdaQuery(AssessmentPlanAnswerClass.class).eq(AssessmentPlanAnswerClass::getAssessmentTemplatePlanId, assessmentTemplatePlan.getId()).select(AssessmentPlanAnswerClass::getId));
|
|
|
+ List<Long> assessmentPlanAnswerClassIds = assessmentPlanAnswerClassList.stream().map(AssessmentPlanAnswerClass::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> assessmentPlanAnswerClassOldIds = assessmentTemplatePlan.getAssessmentPlanAnswerClassList().stream().map(AssessmentPlanAnswerClass::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> assessmentPlanAnswerClassRemoveIds = assessmentPlanAnswerClassIds.stream().filter(item -> !assessmentPlanAnswerClassOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (AssessmentPlanAnswerClass assessmentPlanAnswerClass : assessmentTemplatePlan.getAssessmentPlanAnswerClassList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (assessmentPlanAnswerClass.getId() != null) {
|
|
|
+ answerClassMapper.updateById(assessmentPlanAnswerClass);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ assessmentPlanAnswerClass.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ answerClassMapper.insert(assessmentPlanAnswerClass);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(assessmentPlanAnswerClassRemoveIds.size() > 0){
|
|
|
+ answerClassMapper.deleteBatchIds(assessmentPlanAnswerClassRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* AssessmentPlanAnswerClass 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ //********************************* AssessmentPlanAnswerStudent 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<AssessmentPlanAnswerStudent> assessmentPlanAnswerStudentList = studentMapper.selectList(Wrappers.lambdaQuery(AssessmentPlanAnswerStudent.class).eq(AssessmentPlanAnswerStudent::getAssessmentTemplatePlanId, assessmentTemplatePlan.getId()).select(AssessmentPlanAnswerStudent::getId));
|
|
|
+ List<Long> assessmentPlanAnswerStudentIds = assessmentPlanAnswerStudentList.stream().map(AssessmentPlanAnswerStudent::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> assessmentPlanAnswerStudentOldIds = assessmentTemplatePlan.getAssessmentPlanAnswerStudentList().stream().map(AssessmentPlanAnswerStudent::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> assessmentPlanAnswerStudentRemoveIds = assessmentPlanAnswerStudentIds.stream().filter(item -> !assessmentPlanAnswerStudentOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (AssessmentPlanAnswerStudent assessmentPlanAnswerStudent : assessmentTemplatePlan.getAssessmentPlanAnswerStudentList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (assessmentPlanAnswerStudent.getId() != null) {
|
|
|
+ studentMapper.updateById(assessmentPlanAnswerStudent);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ assessmentPlanAnswerStudent.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ studentMapper.insert(assessmentPlanAnswerStudent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(assessmentPlanAnswerStudentRemoveIds.size() > 0){
|
|
|
+ studentMapper.deleteBatchIds(assessmentPlanAnswerStudentRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* AssessmentPlanAnswerStudent 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean delete(List<Long> ids) {
|
|
|
+ templatePlanMapper.deleteBatchIds(ids);
|
|
|
+ planQuestionMapper.delete(Wrappers.lambdaQuery(AssessmentPlanQuestion.class).in(AssessmentPlanQuestion::getAssessmentTemplatePlanId, ids));
|
|
|
+ answerClassMapper.delete(Wrappers.lambdaQuery(AssessmentPlanAnswerClass.class).in(AssessmentPlanAnswerClass::getAssessmentTemplatePlanId, ids));
|
|
|
+ studentMapper.delete(Wrappers.lambdaQuery(AssessmentPlanAnswerStudent.class).in(AssessmentPlanAnswerStudent::getAssessmentTemplatePlanId, ids));
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<AssessmentTemplatePlanPageVo> getPage(Page<AssessmentTemplatePlanPageVo> page, AssessmentTemplatePlanPageDto dto) {
|
|
|
+ return templatePlanMapper.getPage(page, dto);
|
|
|
+ }
|
|
|
+}
|