Bläddra i källkod

1、学生评价调整
2、办事指南增加字段返回

dzx 7 månader sedan
förälder
incheckning
f680b34b1c

+ 4 - 0
src/main/java/com/xjrsoft/module/courseTable/service/ICourseTableService.java

@@ -13,6 +13,7 @@ import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 import com.xjrsoft.module.schedule.vo.ClassOptionVo;
 import com.xjrsoft.module.schedule.vo.CourseListVo;
 import com.xjrsoft.module.schedule.vo.CourseTableVo;
+import com.xjrsoft.module.schedule.vo.CurrentWeekVo;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -64,4 +65,7 @@ public interface ICourseTableService extends IService<CourseTable> {
     ByteArrayOutputStream exportQuery(CourseTableExportQueryDto dto) throws IOException;
 
 
+    CurrentWeekVo getCurrentWeek(CourseTableDto dto);
+
+
 }

+ 32 - 0
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -27,6 +27,7 @@ import com.xjrsoft.common.enums.TimeNumberEnum;
 import com.xjrsoft.common.enums.TimePeriodEnum;
 import com.xjrsoft.common.enums.WeekEnum;
 import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.common.utils.excel.ExcelFillCellMergePrevColUtil;
 import com.xjrsoft.common.utils.excel.ExcelMergeUtil;
@@ -1522,4 +1523,35 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
         return bot;
     }
 
+    @Override
+    public CurrentWeekVo getCurrentWeek(CourseTableDto dto) {
+        BaseSemester baseSemester = baseSemesterService.getCurrentSemester();
+        if (baseSemester == null) {
+            return null;
+        }
+        LocalDateTime now = LocalDateTime.now();
+        if (dto.getScheduleDate() != null) {
+            now = dto.getScheduleDate();
+        }
+        //计算本周是第几周
+        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
+        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
+        Duration between = Duration.between(startDateTime, endDateTime);
+        long days = between.toDays();
+        int weeks = (int) Math.ceil((double) days / 7);
+
+        for (int i = 0; i < weeks; i++) {
+            LocalDateTime startDate = startDateTime.plusDays(i * 7L).withHour(0).withMinute(0).withSecond(0).withNano(0);
+            LocalDateTime endDate = startDate.plusDays(6).withHour(23).withMinute(59).withSecond(59).withNano(9999);
+            if (now.isAfter(startDate) && now.isBefore(endDate)) {
+                CurrentWeekVo currentWeekVo = new CurrentWeekVo();
+                currentWeekVo.setWeek(i+ 1);
+                currentWeekVo.setStartDate(startDate.toLocalDate());
+                currentWeekVo.setEndDate(endDate.toLocalDate());
+                return currentWeekVo;
+            }
+        }
+        return null;
+    }
+
 }

+ 76 - 13
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java

@@ -14,6 +14,7 @@ import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.courseTable.dto.ClassTeacherDto;
 import com.xjrsoft.module.courseTable.mapper.CourseTableMapper;
+import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.courseTable.vo.ClassTeacherVo;
 import com.xjrsoft.module.evaluate.dto.*;
 import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
@@ -27,6 +28,8 @@ import com.xjrsoft.module.evaluate.service.IEvaluateObjectService;
 import com.xjrsoft.module.evaluate.vo.*;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.schedule.dto.CourseTableDto;
+import com.xjrsoft.module.schedule.vo.CurrentWeekVo;
 import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.service.IBaseStudentService;
 import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
@@ -55,6 +58,7 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
     private final CourseTableMapper courseTableMapper;
     private final IUserService userService;
     private final IBaseStudentService studentService;
+    private final ICourseTableService courseTableService;
 
 
     @Override
@@ -257,14 +261,14 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
             }
         }
         else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode())) {//任课教师对班级评价
-            EvaluateManage manage = evaluateManageMapper.selectById(dto.getEvaluateManageId());
+            CurrentWeekVo currentWeek = courseTableService.getCurrentWeek(new CourseTableDto());
             newObjectList = evaluateObjectMapper.getNewObjectList(dto);
 
             List<ClassTeacherVo> classTeacher = courseTableMapper.getClassTeacherIds(
                     new ClassTeacherDto() {{
-                        setStartDate(manage.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
+                        setStartDate(currentWeek.getStartDate());
                         setGradeId(dto.getGradeId());
-                        setEndDate(manage.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
+                        setEndDate(currentWeek.getEndDate());
                     }}
             );
 
@@ -284,11 +288,13 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
 
                     String[] teacherIds = executerVo.getTeacherId().split(",");
                     for (String teacherId : teacherIds) {
+                        if("0".equals(teacherId)){
+                            continue;
+                        }
                         EvaluateExecuterVo evaluateExecuterVo = new EvaluateExecuterVo();
                         evaluateExecuterVo.setExecuterId(teacherId);
                         evaluateExecuterVo.setEvaluateObjectId(objectListVo.getObjectId());
                         evaluateExecuterVo.setExecuterName(userMap.get(Long.parseLong(teacherId.trim())));
-                        evaluateExecuterVo.setEvaluateManageId(dto.getEvaluateManageId().toString());
                         currentExecuterList.add(evaluateExecuterVo);
                     }
                 }
@@ -368,9 +374,11 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
         else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.STU_SELF_EVALUATE.getCode())){//学生自评
             BaseStudentUserPageDto studentUserPageDto = new BaseStudentUserPageDto();
             studentUserPageDto.setGradeId(dto.getGradeId());
-            List<Long> classIds = new ArrayList<>();
-            classIds.add(dto.getClassId());
-            studentUserPageDto.setClassIds(classIds);
+            if(dto.getClassId() != null){
+                List<Long> classIds = new ArrayList<>();
+                classIds.add(dto.getClassId());
+                studentUserPageDto.setClassIds(classIds);
+            }
             List<BaseStudentUserPageVo> studentList = studentService.getStudentList(studentUserPageDto);
 
             for (BaseStudentUserPageVo student : studentList) {
@@ -400,9 +408,11 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
         else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.CLASS_STU_EVALUATE.getCode())){//班级学生交叉互评
             BaseStudentUserPageDto studentUserPageDto = new BaseStudentUserPageDto();
             studentUserPageDto.setGradeId(dto.getGradeId());
-            List<Long> classIds = new ArrayList<>();
-            classIds.add(dto.getClassId());
-            studentUserPageDto.setClassIds(classIds);
+            if(dto.getClassId() != null){
+                List<Long> classIds = new ArrayList<>();
+                classIds.add(dto.getClassId());
+                studentUserPageDto.setClassIds(classIds);
+            }
             List<BaseStudentUserPageVo> studentList = studentService.getStudentList(studentUserPageDto);
             Map<Long, List<BaseStudentUserPageVo>> classStudentMap = studentList.stream().collect(Collectors.groupingBy(BaseStudentUserPageVo::getClassId));
             for (BaseStudentUserPageVo student : studentList) {
@@ -440,11 +450,64 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
         else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.TEA_EVALUATE_STU.getCode())){//教师评价班级学生
             BaseStudentUserPageDto studentUserPageDto = new BaseStudentUserPageDto();
             studentUserPageDto.setGradeId(dto.getGradeId());
-            List<Long> classIds = new ArrayList<>();
-            classIds.add(dto.getClassId());
-            studentUserPageDto.setClassIds(classIds);
+            if(dto.getClassId() != null){
+                List<Long> classIds = new ArrayList<>();
+                classIds.add(dto.getClassId());
+                studentUserPageDto.setClassIds(classIds);
+            }
+
             List<BaseStudentUserPageVo> studentList = studentService.getStudentList(studentUserPageDto);
 
+            for (BaseStudentUserPageVo student : studentList) {
+                EvaluateObjectListVo object = new EvaluateObjectListVo();
+                object.setObjectName(student.getName());
+                object.setObjectId(student.getId());
+                object.setGradeId(student.getGradeId().toString());
+                object.setGradeName(student.getGradeName());
+                object.setClassId(student.getClassId().toString());
+                newObjectList.add(object);
+            }
+
+
+            CurrentWeekVo currentWeek = courseTableService.getCurrentWeek(new CourseTableDto());
+            List<ClassTeacherVo> classTeacher = courseTableMapper.getClassTeacherIds(
+                    new ClassTeacherDto() {{
+                        setStartDate(currentWeek.getStartDate());
+                        setGradeId(dto.getGradeId());
+                        setEndDate(currentWeek.getEndDate());
+                    }}
+            );
+
+            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 (EvaluateObjectListVo objectListVo : newObjectList) {
+                List<EvaluateExecuterVo> currentExecuterList = new ArrayList<>();
+                for (ClassTeacherVo executerVo : classTeacher) {
+                    if (!objectListVo.getClassId().equals(executerVo.getClassId().toString())) {
+                        continue;
+                    }
+
+                    String[] teacherIds = executerVo.getTeacherId().split(",");
+                    for (String teacherId : teacherIds) {
+                        if("0".equals(teacherId)){
+                            continue;
+                        }
+                        EvaluateExecuterVo evaluateExecuterVo = new EvaluateExecuterVo();
+                        evaluateExecuterVo.setExecuterId(teacherId);
+                        evaluateExecuterVo.setEvaluateObjectId(objectListVo.getObjectId());
+                        evaluateExecuterVo.setExecuterName(userMap.get(Long.parseLong(teacherId.trim())));
+                        currentExecuterList.add(evaluateExecuterVo);
+                    }
+                }
+                objectListVo.setExecuterCount(currentExecuterList.size());
+                objectListVo.setExecuterList(currentExecuterList);
+            }
+
         }
 
         return newObjectList;

+ 3 - 0
src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java

@@ -46,4 +46,7 @@ public class NewsPageDto extends PageInput {
     @ApiModelProperty(value = "当前角色id", hidden = true)
     private Long loginRoleId;
 
+    @ApiModelProperty("办事指南显示范围")
+    private String guideShowRange;
+
 }

+ 4 - 23
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -28,6 +28,7 @@ import com.xjrsoft.module.schedule.vo.ClassOptionVo;
 import com.xjrsoft.module.schedule.vo.CourseListVo;
 import com.xjrsoft.module.schedule.vo.CourseNamesVo;
 import com.xjrsoft.module.schedule.vo.CourseTableVo;
+import com.xjrsoft.module.schedule.vo.CurrentWeekVo;
 import com.xjrsoft.module.schedule.vo.ScheduleWeekVo;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
@@ -159,30 +160,10 @@ public class ScheduleController {
     @SaCheckPermission("schedule:detail")
     @XjrLog(value = "获取当前周次", saveResponseData = true)
     public RT<Integer> currentWeek(CourseTableDto dto) {
-        BaseSemester baseSemester = semesterService.getCurrentSemester();
-        if (baseSemester == null) {
-            return RT.ok(0);
+        CurrentWeekVo currentWeek = courseTableService.getCurrentWeek(dto);
+        if(currentWeek != null){
+            return RT.ok(currentWeek.getWeek());
         }
-        LocalDateTime now = LocalDateTime.now();
-        if (dto.getScheduleDate() != null) {
-            now = dto.getScheduleDate();
-        }
-        //计算本周是第几周
-        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
-        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
-        Duration between = Duration.between(startDateTime, endDateTime);
-        long days = between.toDays();
-        int weeks = (int) Math.ceil((double) days / 7);
-        if (dto.getWeek() == null) {
-            for (int i = 0; i < weeks; i++) {
-                LocalDateTime startDate = startDateTime.plusDays(i * 7L).withHour(0).withMinute(0).withSecond(0).withNano(0);
-                LocalDateTime endDate = startDate.plusDays(6).withHour(23).withMinute(59).withSecond(59).withNano(9999);
-                if (now.isAfter(startDate) && now.isBefore(endDate)) {
-                    return RT.ok(i + 1);
-                }
-            }
-        }
-
         return RT.ok(0);
     }
 

+ 26 - 0
src/main/java/com/xjrsoft/module/schedule/vo/CurrentWeekVo.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.schedule.vo;
+
+import com.xjrsoft.module.courseTable.entity.ClassTime;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 当前周
+ * @author dzx
+ * @date 2025年4月17日
+ */
+@Data
+public class CurrentWeekVo {
+
+    @ApiModelProperty("第几周")
+    private Integer week;
+
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+}

+ 6 - 0
src/main/resources/mapper/oa/NewsMapper.xml

@@ -28,6 +28,9 @@
             and (t.full_head LIKE CONCAT('%',#{dto.keyword},'%')
             or t.news_content LIKE CONCAT('%',#{dto.keyword},'%'))
         </if>
+        <if test="dto.guideShowRange != null and dto.guideShowRange != ''">
+            and t.guide_show_range LIKE CONCAT('%',#{dto.guideShowRange},'%')
+        </if>
         order by t.release_time desc
     </select>
 
@@ -58,6 +61,9 @@
         <if test="dto.loginId != null and dto.readMark != null">
             and t3.read_mark =  #{dto.readMark}
         </if>
+        <if test="dto.guideShowRange != null and dto.guideShowRange != ''">
+            and t.guide_show_range LIKE CONCAT('%',#{dto.guideShowRange},'%')
+        </if>
         order by
         t.release_time desc
     </select>

+ 1 - 1
src/main/resources/mapper/student/BaseStudentMapper.xml

@@ -138,7 +138,7 @@
     <select id="getStudentList" parameterType="com.xjrsoft.module.student.dto.BaseStudentUserPageDto" resultType="com.xjrsoft.module.student.vo.BaseStudentUserPageVo">
         SELECT t1.id,t4.name AS class_name,t5.name AS teacher_name,t1.name,t1.gender AS gender_cn,t1.credential_number,
         t1.mobile,t3.archives_status AS archives_status_cn ,t3.stduy_status AS stduy_status_cn,t3.student_type AS student_type_cn,
-        t3.learn_status as learn_status_cn,t3.grade_id,t6.name as grade_name FROM xjr_user t1
+        t3.learn_status as learn_status_cn,t3.grade_id,t6.name as grade_name,t3.class_id FROM xjr_user t1
         INNER JOIN base_student t2 ON t1.id = t2.user_id
         LEFT JOIN base_student_school_roll t3 ON t1.id = t3.user_id
         LEFT JOIN base_class t4 ON t4.id = t3.class_id