Browse Source

Merge remote-tracking branch 'origin/dev' into pre

dzx 4 months ago
parent
commit
79b06793ad

+ 7 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateObjectListDto.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Date;
 
 
 /**
@@ -36,4 +37,10 @@ public class EvaluateObjectListDto implements Serializable {
     @ApiModelProperty("评价类型")
     private String evaluateType;
 
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateObjectMapper.java

@@ -4,7 +4,9 @@ import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto;
 import com.xjrsoft.module.evaluate.dto.ObjectGradeDeleteDto;
 import com.xjrsoft.module.evaluate.dto.SaveEvaluateObjectDto;
+import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
+import com.xjrsoft.module.evaluate.vo.ClassTeachersListVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
 import org.apache.ibatis.annotations.Delete;
@@ -36,5 +38,7 @@ public interface EvaluateObjectMapper extends MPJBaseMapper<EvaluateObject> {
 
     Boolean objectGradeDeleteObject(@Param("dto") ObjectGradeDeleteDto dto);
 
+    List<ClassTeachersListVo> getClassTeachers(@Param("dto") EvaluateObjectListDto dto);
+
 
 }

+ 79 - 6
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java

@@ -29,6 +29,7 @@ import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
 import com.xjrsoft.module.evaluate.service.IEvaluateObjectService;
+import com.xjrsoft.module.evaluate.vo.ClassTeachersListVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateManageVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectGradeListVo;
@@ -46,6 +47,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -226,21 +228,21 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
 
             for (EvaluateObjectListVo objectListVo : newObjectList) {
                 List<EvaluateExecuterVo> dataList = new ArrayList<>();
-                /*for (EvaluateExecuterVo executerVo : newExecuterList) {
+                for (EvaluateExecuterVo executerVo : newExecuterList) {
                     if(!executerVo.getClassId().equals(objectListVo.getClassId())){
                         continue;
                     }
                     dataList.add(executerVo);
-                }*/
+                }
                 List<EvaluateExecuterVo> executerList = new ArrayList<>();
                 if(evaluateExecuterVoMap.get(objectListVo.getClassId()) != null){
                     dataList.addAll(evaluateExecuterVoMap.get(objectListVo.getClassId()));
-                    if("random15".equals(dto.getExecuterCount()) && dataList.size() > 0){
+                    if("random15".equals(dto.getExecuterCount()) && !dataList.isEmpty()){
                         List<Integer> randomList = new ArrayList<>();
                         Random random = new Random();
                         while(randomList.size() < 15){
                             int nextInt = random.nextInt(dataList.size());
-                            if(!randomList.contains(nextInt) && nextInt >= 0){
+                            if(!randomList.contains(nextInt)){
                                 randomList.add(nextInt);
                             }
                         }
@@ -254,7 +256,8 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
                 objectListVo.setExecuterCount(executerList.size());
                 objectListVo.setExecuterList(executerList);
             }
-        }else if(dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.DRILLMASTER_EVALUATE_CLASS.getCode())) {//入参评价类型是教官评价班级
+        }
+        else if(dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.DRILLMASTER_EVALUATE_CLASS.getCode())) {//入参评价类型是教官评价班级
             newObjectList = evaluateObjectMapper.getNewObjectList(dto);
             List<EvaluateExecuterVo> newExecuterList = evaluateObjectMapper.getNewExecuterList(dto);
 
@@ -262,7 +265,8 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
                 objectListVo.setExecuterCount(newExecuterList.size());
                 objectListVo.setExecuterList(newExecuterList);
             }
-        }else if(dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode())) {//任课教师对班级评价
+        }
+        else if(dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode())) {//任课教师对班级评价
             EvaluateManage manage = evaluateManageMapper.selectById(dto.getEvaluateManageId());
             newObjectList = evaluateObjectMapper.getNewObjectList(dto);
 
@@ -302,6 +306,75 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
                 objectListVo.setExecuterList(currentExecuterList);
             }
         }
+        else if(dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.STUDENT_EVALUATE_COURSE_TEACHER.getCode())) {//入参评价类型是学生评价教师
+            EvaluateManage manage = evaluateManageMapper.selectById(dto.getEvaluateManageId());
+            //查询这个年级的所有学生
+            List<EvaluateExecuterVo> newExecuterList = evaluateObjectMapper.getNewExecuterList(dto);
+            Map<String, List<EvaluateExecuterVo>> classExcuterMap = newExecuterList.stream().collect(Collectors.groupingBy(EvaluateExecuterVo::getClassId));
+
+            //查询每个班级的任课教师
+            dto.setStartTime(manage.getStartTime());
+            dto.setEndTime(manage.getEndTime());
+            List<ClassTeachersListVo> classTeachers = evaluateObjectMapper.getClassTeachers(dto);
+            List<ClassTeachersListVo> collect = classTeachers.stream().filter(p -> StrUtil.isNotEmpty(p.getTeacherId())).collect(Collectors.collectingAndThen(
+                    Collectors.toMap(
+                            ClassTeachersListVo::getUniqueKey,
+                            p -> p,
+                            (existing, replacement) -> existing
+                    ),
+                    map -> new ArrayList<>(map.values())
+            ));
+            Map<String, List<ClassTeachersListVo>> classTeacherMap = collect.stream().collect(Collectors.groupingBy(ClassTeachersListVo::getTeacherId));
+
+            List<User> userList = userService.list(
+                    new MPJLambdaWrapper<User>()
+                            .select(User::getId)
+                            .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
+                            .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
+            );
+            Map<Long, String> userMap = userList.stream().collect(Collectors.toMap(User::getId, User::getName));
+
+            for (String teacherId : classTeacherMap.keySet()) {
+                if(!userMap.containsKey(Long.parseLong(teacherId.trim()))){
+                    continue;
+                }
+                if("15331003902918".equals(teacherId)){
+                    System.out.println(teacherId);
+                }
+                EvaluateObjectListVo objectListVo = new EvaluateObjectListVo();
+
+                Set<Long> classIds = classTeacherMap.get(teacherId).stream().map(ClassTeachersListVo::getClassId).collect(Collectors.toSet());
+
+                List<EvaluateExecuterVo> currentExecuterList = new ArrayList<>();
+                for (Long classId : classIds) {
+                    List<EvaluateExecuterVo> studentList = classExcuterMap.get(classId.toString());
+                    if(studentList == null){
+                        continue;
+                    }
+                    if("random15".equals(dto.getExecuterCount()) && !studentList.isEmpty()){
+                        List<Integer> randomList = new ArrayList<>();
+                        Random random = new Random();
+                        while(randomList.size() < 15){
+                            int nextInt = random.nextInt(studentList.size());
+                            if(!randomList.contains(nextInt)){
+                                randomList.add(nextInt);
+                            }
+                        }
+                        for (Integer i : randomList) {
+                            currentExecuterList.add(studentList.get(i));
+                        }
+                    }else{
+                        currentExecuterList.addAll(studentList);
+                    }
+                }
+
+                objectListVo.setObjectId(teacherId.trim());
+                objectListVo.setObjectName(userMap.get(Long.parseLong(teacherId.trim())));
+                objectListVo.setExecuterCount(currentExecuterList.size());
+                objectListVo.setExecuterList(currentExecuterList);
+                newObjectList.add(objectListVo);
+            }
+        }
 
         return newObjectList;
     }

+ 24 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/ClassTeachersListVo.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 被评价对象表单出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class ClassTeachersListVo {
+
+    @ApiModelProperty("班级id")
+    private Long classId;
+
+    @ApiModelProperty("教师userid")
+    private String teacherId;
+
+    public String getUniqueKey() {
+        return classId + "-" + teacherId;
+    }
+}

+ 22 - 0
src/main/resources/mapper/evaluate/EvaluateObjectMapper.xml

@@ -68,6 +68,7 @@
             SELECT t2.id as executer_id,t2.name as executer_name,t1.class_id,t1.grade_id FROM base_student_school_roll t1
             LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
             WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
+            and t1.archives_status = 'FB2901'
             <if test="dto.gradeId != null">
                 and t1.grade_id = #{dto.gradeId}
             </if>
@@ -107,6 +108,15 @@
             AND t2.schedule_date BETWEEN #{dto.startDate} AND #{dto.endDate}
             AND (t2.adjust_type = 'course_exchange' OR t2.adjust_type = 'course_replace' OR t2.adjust_type IS NULL)
         </if>
+        <if test="dto.evaluateType != null and dto.evaluateType.equals('stu_evaluate_tea')">
+            SELECT t2.id as executer_id,t2.name as executer_name,t1.class_id,t1.grade_id FROM base_student_school_roll t1
+            LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
+            WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
+            and t1.archives_status = 'FB2901'
+            <if test="dto.gradeId != null">
+                and t1.grade_id = #{dto.gradeId}
+            </if>
+        </if>
     </select>
 
     <delete id="objectGradeDeleteExecuter" parameterType="com.xjrsoft.module.evaluate.dto.ObjectGradeDeleteDto">
@@ -119,4 +129,16 @@
         delete from evaluate_object t
         where t.base_grade_id = #{dto.gradeId} and t.evaluate_manage_id = #{dto.evaluateManageId};
     </delete>
+
+    <select id="getClassTeachers" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto" resultType="com.xjrsoft.module.evaluate.vo.ClassTeachersListVo">
+        SELECT DISTINCT t1.class_id, SUBSTRING_INDEX(t1.teacher_id,',',1) AS teacher_id FROM course_table t1
+        inner join base_class t2 on t1.class_id = t2.id
+        WHERE t1.schedule_date BETWEEN DATE_FORMAT(#{dto.startTime}, '%Y-%m-%d') AND DATE_FORMAT(#{dto.endTime}, '%Y-%m-%d')
+        AND t1.teacher_id != '0' and t2.grade_id = #{dto.gradeId}
+        UNION ALL
+        SELECT DISTINCT t1.class_id, SUBSTRING_INDEX(t1.teacher_id,',',-1) AS teacher_id FROM course_table t1
+        inner join base_class t2 on t1.class_id = t2.id
+        WHERE t1.schedule_date BETWEEN DATE_FORMAT(#{dto.startTime}, '%Y-%m-%d') AND DATE_FORMAT(#{dto.endTime}, '%Y-%m-%d')
+        AND t1.teacher_id != '0' and t2.grade_id = #{dto.gradeId}
+    </select>
 </mapper>

+ 8 - 0
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest2.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.job;
 
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
@@ -60,6 +61,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -124,6 +126,12 @@ class JianyuekbScheduleTaskTest2 {
     @Autowired
     private IWorkflowExtraService workflowExtraService;
 
+    @Test
+    void test2(){
+        WfCourseAdjust courseAdjust = adjustService.getById(1851529228440875008L);
+        courseTableService.adjustCourse(courseAdjust);
+    }
+
     @Test
     public void execute(){
         doExecute();