dzx 4 kuukautta sitten
vanhempi
commit
3851ddf4e7

+ 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") EvaluateManage dto);
+
 
 }

+ 75 - 4
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;
@@ -36,6 +37,7 @@ import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -226,12 +229,12 @@ 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()));
@@ -254,7 +257,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 +266,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 +307,72 @@ 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);
+            //查询每个班级的任课教师
+            List<ClassTeachersListVo> classTeachers = evaluateObjectMapper.getClassTeachers(manage);
+            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())
+            ));
+
+            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 (ClassTeachersListVo classTeacher : collect) {
+                if(!userMap.containsKey(Long.parseLong(classTeacher.getTeacherId().trim()))){
+                    continue;
+                }
+                EvaluateObjectListVo objectListVo = new EvaluateObjectListVo();
+
+                List<EvaluateExecuterVo> studentList = new ArrayList<>();
+                for (EvaluateExecuterVo el : newExecuterList) {
+                    if(!classTeacher.getClassId().toString().equals(el.getClassId())){
+                        continue;
+                    }
+                    EvaluateExecuterVo evaluateExecuterVo = new EvaluateExecuterVo();
+                    evaluateExecuterVo.setExecuterId(el.getExecuterId());
+                    evaluateExecuterVo.setEvaluateObjectId(classTeacher.getTeacherId());
+                    evaluateExecuterVo.setExecuterName(el.getExecuterName());
+                    evaluateExecuterVo.setEvaluateManageId(dto.getEvaluateManageId().toString());
+                    studentList.add(evaluateExecuterVo);
+                }
+
+                List<EvaluateExecuterVo> currentExecuterList = new ArrayList<>();
+                if("random15".equals(dto.getExecuterCount()) && studentList.size() > 0){
+                    List<Integer> randomList = new ArrayList<>();
+                    Random random = new Random();
+                    while(randomList.size() < 15){
+                        int nextInt = random.nextInt(studentList.size());
+                        if(!randomList.contains(nextInt) && nextInt >= 0){
+                            randomList.add(nextInt);
+                        }
+                    }
+                    for (Integer i : randomList) {
+                        currentExecuterList.add(studentList.get(i));
+                    }
+                }else{
+                    currentExecuterList.addAll(studentList);
+                }
+
+                objectListVo.setObjectId(classTeacher.getTeacherId());
+                objectListVo.setObjectName(userMap.get(Long.parseLong(classTeacher.getTeacherId().trim())));
+                objectListVo.setExecuterCount(currentExecuterList.size());
+                objectListVo.setExecuterList(currentExecuterList);
+                newObjectList.add(objectListVo);
+            }
+        }
 
         return newObjectList;
     }

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

@@ -17,4 +17,8 @@ public class ClassTeachersListVo {
 
     @ApiModelProperty("教师userid")
     private String teacherId;
+
+    public String getUniqueKey() {
+        return classId + "-" + teacherId;
+    }
 }

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

@@ -107,6 +107,14 @@
             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
+            <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 +127,14 @@
         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.entity.EvaluateManage" resultType="com.xjrsoft.module.evaluate.vo.ClassTeachersListVo">
+        SELECT DISTINCT class_id, SUBSTRING_INDEX(teacher_id,',',1) AS teacher_id FROM course_table
+        WHERE schedule_date BETWEEN DATE_FORMAT(#{dto.startTime}, '%Y-%m-%d') AND DATE_FORMAT(#{dto.endTime}, '%Y-%m-%d')
+        AND teacher_id != '0'
+        UNION ALL
+        SELECT DISTINCT class_id, SUBSTRING_INDEX(teacher_id,',',-1) AS teacher_id FROM course_table
+        WHERE schedule_date BETWEEN DATE_FORMAT(#{dto.startTime}, '%Y-%m-%d') AND DATE_FORMAT(#{dto.endTime}, '%Y-%m-%d')
+        AND teacher_id != '0'
+    </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();