Browse Source

考核计划模块

dzx 1 year ago
parent
commit
bc20eb3ddb

+ 26 - 11
src/main/java/com/xjrsoft/module/assessment/controller/AssessmentTemplatePlanController.java

@@ -1,27 +1,31 @@
 package com.xjrsoft.module.assessment.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.model.result.RT;
-import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.assessment.dto.AddAssessmentTemplatePlanDto;
-import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanDto;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-
+import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanChangeStatusDto;
 import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanPageDto;
+import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanDto;
 import com.xjrsoft.module.assessment.entity.AssessmentTemplatePlan;
 import com.xjrsoft.module.assessment.service.IAssessmentTemplatePlanService;
 import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanPageVo;
-
 import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -76,8 +80,7 @@ public class AssessmentTemplatePlanController {
     @SaCheckPermission("assessmenttemplateplan:edit")
     public RT<Boolean> update(@Valid @RequestBody UpdateAssessmentTemplatePlanDto dto){
 
-        AssessmentTemplatePlan assessmentTemplatePlan = BeanUtil.toBean(dto, AssessmentTemplatePlan.class);
-        return RT.ok(planService.update(assessmentTemplatePlan));
+        return RT.ok(planService.update(dto));
 
     }
 
@@ -86,7 +89,19 @@ public class AssessmentTemplatePlanController {
     @SaCheckPermission("assessmenttemplateplan:delete")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
         return RT.ok(planService.delete(ids));
+    }
 
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value = "修改状态")
+    @SaCheckPermission("assessmenttemplateplan:change-status")
+    public RT<Boolean> changeStatus(@Valid @RequestBody AssessmentTemplatePlanChangeStatusDto dto){
+        AssessmentTemplatePlan templatePlan = planService.getById(dto.getId());
+        if(templatePlan == null){
+            throw new MyException("未能找到场所信息");
+        }
+        templatePlan.setStatus(dto.getStatus());
+        planService.updateById(templatePlan);
+        return RT.ok(true);
     }
 
 }

+ 15 - 0
src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentTemplatePlanDto.java

@@ -58,5 +58,20 @@ public class AddAssessmentTemplatePlanDto implements Serializable {
     @ApiModelProperty("考核模板id(assessment_template)")
     private Long assessmentTemplateId;
 
+    /**
+     * 选人方式
+     */
+    @ApiModelProperty("选人方式(全部:all 随机:random)")
+    private String type;
+
+    /**
+     * 随机人数
+     */
+    @ApiModelProperty("随机人数")
+    private Integer randomNumber;
+
+    @ApiModelProperty("班级id")
+    private List<Long> classIds;
+
 
 }

+ 20 - 0
src/main/java/com/xjrsoft/module/assessment/dto/AssessmentTemplatePlanChangeStatusDto.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.assessment.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author dzx
+ * @date 2024/4/1
+ */
+@Data
+public class AssessmentTemplatePlanChangeStatusDto implements Serializable {
+    @ApiModelProperty("主键编号")
+    private Long id;
+
+
+    @ApiModelProperty("状态(2:作废 1:已发布 0:未发布)")
+    private Integer status;
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/assessment/entity/AssessmentPlanAnswerClass.java

@@ -77,7 +77,7 @@ public class AssessmentPlanAnswerClass implements Serializable {
     * 班级id
     */
     @ApiModelProperty("班级id")
-    private String classId;
+    private Long classId;
     /**
     * 班主任是否确认(0:否 1:是)
     */

+ 2 - 2
src/main/java/com/xjrsoft/module/assessment/entity/AssessmentPlanAnswerStudent.java

@@ -76,8 +76,8 @@ public class AssessmentPlanAnswerStudent implements Serializable {
     /**
     * 班级ic
     */
-    @ApiModelProperty("班级ic")
-    private String studentUserId;
+    @ApiModelProperty("学生id")
+    private Long studentUserId;
     /**
     * 考核计划id(assessment_template_plan)
     */

+ 12 - 0
src/main/java/com/xjrsoft/module/assessment/entity/AssessmentTemplatePlan.java

@@ -104,6 +104,18 @@ public class AssessmentTemplatePlan implements Serializable {
     @ApiModelProperty("考核模板id(assessment_template)")
     private Long assessmentTemplateId;
 
+    /**
+     * 选人方式
+     */
+    @ApiModelProperty("选人方式(全部:all 随机:random)")
+    private String type;
+
+    /**
+     * 随机人数
+     */
+    @ApiModelProperty("随机人数")
+    private Integer randomNumber;
+
     /**
     * assessmentPlanQuestion
     */

+ 3 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanAnswerClassMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.assessment.entity.AssessmentPlanAnswerClass;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
 
 /**
 * @title: 考核计划答题参与班级
@@ -14,4 +15,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface AssessmentPlanAnswerClassMapper extends MPJBaseMapper<AssessmentPlanAnswerClass> {
 
+    @Update("update assessment_plan_answer_class set delete_mark = 1,modify_date = now(),modify_user_id = #{loginId} WHERE assessment_template_plan_id = #{planId}")
+    Boolean deleteByPlanId(Long planId, Long loginId);
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanAnswerStudentMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.assessment.entity.AssessmentPlanAnswerStudent;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
 
 /**
 * @title: 考核计划答题参与学生
@@ -14,4 +15,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface AssessmentPlanAnswerStudentMapper extends MPJBaseMapper<AssessmentPlanAnswerStudent> {
 
+    @Update("update assessment_plan_answer_student set delete_mark = 1,modify_date = now(),modify_user_id = #{loginId} WHERE assessment_template_plan_id = #{planId}")
+    Boolean deleteByPlanId(Long planId, Long loginId);
 }

+ 3 - 1
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanQuestionMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.assessment.entity.AssessmentPlanQuestion;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
 
 /**
 * @title: 考核模板题目
@@ -13,5 +14,6 @@ import org.apache.ibatis.annotations.Mapper;
 */
 @Mapper
 public interface AssessmentPlanQuestionMapper extends MPJBaseMapper<AssessmentPlanQuestion> {
-
+    @Update("update assessment_plan_question set delete_mark = 1,modify_date = now(),modify_user_id = #{loginId} WHERE assessment_template_plan_id = #{planId}")
+    Boolean deleteByPlanId(Long planId, Long loginId);
 }

+ 2 - 2
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionMapper.java

@@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Update;
 */
 @Mapper
 public interface AssessmentQuestionMapper extends MPJBaseMapper<AssessmentQuestion> {
-    @Update("update assessment_question set delete_mark = 1 WHERE assessment_question_id = #{assessmentTemplateId}")
-    Boolean deleteByAssessmentQuestionId(Long assessmentTemplateId);
+    @Update("update assessment_question set delete_mark = 1,modify_date = now(),modify_user_id = #{loginId} WHERE assessment_question_id = #{assessmentTemplateId}")
+    Boolean deleteByAssessmentQuestionId(Long assessmentTemplateId, Long loginId);
 }

+ 2 - 3
src/main/java/com/xjrsoft/module/assessment/service/IAssessmentTemplatePlanService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 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.AssessmentTemplatePlan;
 import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanPageVo;
 import lombok.Data;
@@ -27,10 +28,8 @@ public interface IAssessmentTemplatePlanService extends MPJBaseService<Assessmen
     /**
     * 更新
     *
-    * @param assessmentTemplatePlan
-    * @return
     */
-    Boolean update(AssessmentTemplatePlan assessmentTemplatePlan);
+    Boolean update(UpdateAssessmentTemplatePlanDto dto);
 
     /**
     * 删除

+ 109 - 94
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplatePlanServiceImpl.java

@@ -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;
     }
 

+ 2 - 5
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplateServiceImpl.java

@@ -1,11 +1,11 @@
 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.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.common.enums.DeleteMark;
-import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.module.assessment.dto.AddAssessmentQuestionDto;
 import com.xjrsoft.module.assessment.dto.AddAssessmentQuestionOptionsDto;
 import com.xjrsoft.module.assessment.dto.AddAssessmentTemplateDto;
@@ -17,16 +17,13 @@ import com.xjrsoft.module.assessment.mapper.AssessmentTemplateMapper;
 import com.xjrsoft.module.assessment.service.IAssessmentTemplateService;
 import com.xjrsoft.module.assessment.vo.AssessmentQuestionVo;
 import com.xjrsoft.module.assessment.vo.AssessmentTemplateVo;
-import com.xjrsoft.module.system.vo.MenuTreeVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
 * @title: 考核模板
@@ -96,7 +93,7 @@ public class AssessmentTemplateServiceImpl extends MPJBaseServiceImpl<Assessment
         assessmentTemplate.setModifyDate(updateDate);
         assessmentTemplateMapper.updateById(assessmentTemplate);
         //删除下面的子集重新添加
-        assessmentQuestionMapper.deleteByAssessmentQuestionId(assessmentTemplate.getId());
+        assessmentQuestionMapper.deleteByAssessmentQuestionId(assessmentTemplate.getId(), StpUtil.getLoginIdAsLong());
         //插入答题
         for (AddAssessmentQuestionDto questionDto : dto.getChildren()) {
             AssessmentQuestion question = BeanUtil.toBean(questionDto, AssessmentQuestion.class);

+ 1 - 1
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplatePlanPageVo.java

@@ -60,6 +60,6 @@ public class AssessmentTemplatePlanPageVo {
      * 考核模板id(assessment_template)
      */
     @ApiModelProperty("考核模板名称(assessment_template)")
-    private Long assessmentTemplateName;
+    private String assessmentTemplateName;
 
 }