|
|
@@ -1,17 +1,21 @@
|
|
|
package com.xjrsoft.module.assessment.service.impl;
|
|
|
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.module.assessment.dto.AddAssessmentTemplatePlanDto;
|
|
|
import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanPageDto;
|
|
|
+import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanDto;
|
|
|
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.AssessmentQuestion;
|
|
|
+import com.xjrsoft.module.assessment.entity.AssessmentTemplate;
|
|
|
import com.xjrsoft.module.assessment.entity.AssessmentTemplatePlan;
|
|
|
import com.xjrsoft.module.assessment.mapper.AssessmentPlanAnswerClassMapper;
|
|
|
import com.xjrsoft.module.assessment.mapper.AssessmentPlanAnswerStudentMapper;
|
|
|
@@ -21,13 +25,16 @@ import com.xjrsoft.module.assessment.mapper.AssessmentTemplateMapper;
|
|
|
import com.xjrsoft.module.assessment.mapper.AssessmentTemplatePlanMapper;
|
|
|
import com.xjrsoft.module.assessment.service.IAssessmentTemplatePlanService;
|
|
|
import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanPageVo;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
+import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.stream.Collectors;
|
|
|
+import java.util.Random;
|
|
|
|
|
|
/**
|
|
|
* @title: 考核计划
|
|
|
@@ -43,14 +50,18 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
|
|
|
private final AssessmentPlanQuestionMapper planQuestionMapper;
|
|
|
private final AssessmentPlanAnswerClassMapper answerClassMapper;
|
|
|
private final AssessmentPlanAnswerStudentMapper studentMapper;
|
|
|
-
|
|
|
+ private final AssessmentTemplateMapper assessmentTemplateMapper;
|
|
|
private final AssessmentQuestionMapper questionMapper;
|
|
|
|
|
|
+ private final XjrUserMapper xjrUserMapper;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(AddAssessmentTemplatePlanDto dto) {
|
|
|
+ AssessmentTemplate template = assessmentTemplateMapper.selectById(dto.getAssessmentTemplateId());
|
|
|
AssessmentTemplatePlan assessmentTemplatePlan = BeanUtil.toBean(dto, AssessmentTemplatePlan.class);
|
|
|
+ assessmentTemplatePlan.setScore(template.getScore());
|
|
|
templatePlanMapper.insert(assessmentTemplatePlan);
|
|
|
|
|
|
//查询模板下面的题目信息
|
|
|
@@ -59,20 +70,51 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
|
|
|
.eq(AssessmentQuestion::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
.eq(AssessmentQuestion::getAssessmentTemplateId, dto.getAssessmentTemplateId())
|
|
|
);
|
|
|
-
|
|
|
for (AssessmentQuestion assessmentQuestion : questionList) {
|
|
|
AssessmentPlanQuestion planQuestion = BeanUtil.toBean(assessmentQuestion, AssessmentPlanQuestion.class);
|
|
|
planQuestion.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
planQuestionMapper.insert(planQuestion);
|
|
|
}
|
|
|
|
|
|
- for (AssessmentPlanAnswerClass assessmentPlanAnswerClass : assessmentTemplatePlan.getAssessmentPlanAnswerClassList()) {
|
|
|
- assessmentPlanAnswerClass.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
- answerClassMapper.insert(assessmentPlanAnswerClass);
|
|
|
- }
|
|
|
- for (AssessmentPlanAnswerStudent assessmentPlanAnswerStudent : assessmentTemplatePlan.getAssessmentPlanAnswerStudentList()) {
|
|
|
- assessmentPlanAnswerStudent.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
- studentMapper.insert(assessmentPlanAnswerStudent);
|
|
|
+ //存入班级,并根据选人方式存入答题学生
|
|
|
+ for (Long classId : dto.getClassIds()) {
|
|
|
+ AssessmentPlanAnswerClass answerClass = new AssessmentPlanAnswerClass();
|
|
|
+ answerClass.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ answerClass.setClassId(classId);
|
|
|
+ answerClassMapper.insert(answerClass);
|
|
|
+
|
|
|
+ MPJLambdaWrapper<XjrUser> query = new MPJLambdaWrapper<>();
|
|
|
+ query.leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)
|
|
|
+ .eq(BaseStudentSchoolRoll::getClassId, classId);
|
|
|
+ List<XjrUser> studentList = xjrUserMapper.selectJoinList(XjrUser.class, query);
|
|
|
+ List<XjrUser> needStudentList = new ArrayList<>();
|
|
|
+ if("all".equals(dto.getType())){
|
|
|
+ needStudentList.addAll(studentList);
|
|
|
+ }else if("random".equals(dto.getType())){
|
|
|
+ int maxCount = studentList.size();//班级最大人数
|
|
|
+ if(dto.getRandomNumber() > maxCount){
|
|
|
+ needStudentList.addAll(studentList);
|
|
|
+ }else{
|
|
|
+ List<Integer> randomList = new ArrayList<>();
|
|
|
+ Random random = new Random();
|
|
|
+ while(randomList.size() < dto.getRandomNumber()){
|
|
|
+ int nextInt = random.nextInt(studentList.size());
|
|
|
+ if(!randomList.contains(nextInt) && nextInt >= 0){
|
|
|
+ randomList.add(nextInt);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (Integer i : randomList) {
|
|
|
+ needStudentList.add(studentList.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (XjrUser xjrUser : needStudentList) {
|
|
|
+ AssessmentPlanAnswerStudent answer = new AssessmentPlanAnswerStudent();
|
|
|
+ answer.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ answer.setStudentUserId(xjrUser.getId());
|
|
|
+ studentMapper.insert(answer);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -80,95 +122,68 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean update(AssessmentTemplatePlan assessmentTemplatePlan) {
|
|
|
+ public Boolean update(UpdateAssessmentTemplatePlanDto dto) {
|
|
|
+ AssessmentTemplate template = assessmentTemplateMapper.selectById(dto.getAssessmentTemplateId());
|
|
|
+ AssessmentTemplatePlan assessmentTemplatePlan = BeanUtil.toBean(dto, AssessmentTemplatePlan.class);
|
|
|
+ assessmentTemplatePlan.setScore(template.getScore());
|
|
|
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);
|
|
|
- }
|
|
|
+
|
|
|
+ //删除以前的题目
|
|
|
+ planQuestionMapper.deleteByPlanId(assessmentTemplatePlan.getId(), StpUtil.getLoginIdAsLong());
|
|
|
+ //查询模板下面的题目信息
|
|
|
+ List<AssessmentQuestion> questionList = questionMapper.selectList(
|
|
|
+ new QueryWrapper<AssessmentQuestion>().lambda()
|
|
|
+ .eq(AssessmentQuestion::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .eq(AssessmentQuestion::getAssessmentTemplateId, dto.getAssessmentTemplateId())
|
|
|
+ );
|
|
|
+ for (AssessmentQuestion assessmentQuestion : questionList) {
|
|
|
+ AssessmentPlanQuestion planQuestion = BeanUtil.toBean(assessmentQuestion, AssessmentPlanQuestion.class);
|
|
|
+ planQuestion.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ planQuestionMapper.insert(planQuestion);
|
|
|
}
|
|
|
- //********************************* 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);
|
|
|
+ //删除班级和学生
|
|
|
+ answerClassMapper.deleteByPlanId(assessmentTemplatePlan.getId(), StpUtil.getLoginIdAsLong());
|
|
|
+ studentMapper.deleteByPlanId(assessmentTemplatePlan.getId(), StpUtil.getLoginIdAsLong());
|
|
|
+ //存入班级,并根据选人方式存入答题学生
|
|
|
+ for (Long classId : dto.getClassIds()) {
|
|
|
+ AssessmentPlanAnswerClass answerClass = new AssessmentPlanAnswerClass();
|
|
|
+ answerClass.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ answerClass.setClassId(classId);
|
|
|
+ answerClassMapper.insert(answerClass);
|
|
|
+
|
|
|
+ MPJLambdaWrapper<XjrUser> query = new MPJLambdaWrapper<>();
|
|
|
+ query.leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)
|
|
|
+ .eq(BaseStudentSchoolRoll::getClassId, classId);
|
|
|
+ List<XjrUser> studentList = xjrUserMapper.selectJoinList(XjrUser.class, query);
|
|
|
+ List<XjrUser> needStudentList = new ArrayList<>();
|
|
|
+ if("all".equals(dto.getType())){
|
|
|
+ needStudentList.addAll(studentList);
|
|
|
+ }else if("random".equals(dto.getType())){
|
|
|
+ int maxCount = studentList.size();//班级最大人数
|
|
|
+ if(dto.getRandomNumber() > maxCount){
|
|
|
+ needStudentList.addAll(studentList);
|
|
|
+ }else{
|
|
|
+ List<Integer> randomList = new ArrayList<>();
|
|
|
+ Random random = new Random();
|
|
|
+ while(randomList.size() < dto.getRandomNumber()){
|
|
|
+ int nextInt = random.nextInt(studentList.size());
|
|
|
+ if(!randomList.contains(nextInt) && nextInt >= 0){
|
|
|
+ randomList.add(nextInt);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (Integer i : randomList) {
|
|
|
+ needStudentList.add(studentList.get(i));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- //已经不存在的id 删除
|
|
|
- if(assessmentPlanAnswerStudentRemoveIds.size() > 0){
|
|
|
- studentMapper.deleteBatchIds(assessmentPlanAnswerStudentRemoveIds);
|
|
|
+ for (XjrUser xjrUser : needStudentList) {
|
|
|
+ AssessmentPlanAnswerStudent answer = new AssessmentPlanAnswerStudent();
|
|
|
+ answer.setAssessmentTemplatePlanId(assessmentTemplatePlan.getId());
|
|
|
+ answer.setStudentUserId(xjrUser.getId());
|
|
|
+ studentMapper.insert(answer);
|
|
|
}
|
|
|
}
|
|
|
- //********************************* AssessmentPlanAnswerStudent 增删改 结束 *******************************************/
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|