Prechádzať zdrojové kódy

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

大数据与最优化研究所 7 mesiacov pred
rodič
commit
70bdf4a9f4
19 zmenil súbory, kde vykonal 285 pridanie a 48 odobranie
  1. 6 1
      src/main/java/com/xjrsoft/common/enums/EvaluateTypeEnum.java
  2. 4 0
      src/main/java/com/xjrsoft/module/courseTable/service/ICourseTableService.java
  3. 35 0
      src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java
  4. 158 7
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java
  5. 6 1
      src/main/java/com/xjrsoft/module/job/WfCourseAdjustTask.java
  6. 2 13
      src/main/java/com/xjrsoft/module/oa/controller/OfficialDocumentReceivedHandleController.java
  7. 3 0
      src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java
  8. 3 0
      src/main/java/com/xjrsoft/module/oa/dto/UpdateNewsDto.java
  9. 5 0
      src/main/java/com/xjrsoft/module/oa/service/impl/OfficialDocumentReceivedHandleServiceImpl.java
  10. 6 0
      src/main/java/com/xjrsoft/module/oa/vo/NewsPageVo.java
  11. 2 0
      src/main/java/com/xjrsoft/module/oa/vo/OfficialDocumentReceivedHandlePageVo.java
  12. 1 1
      src/main/java/com/xjrsoft/module/organization/dto/AddRoleDto.java
  13. 4 23
      src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java
  14. 26 0
      src/main/java/com/xjrsoft/module/schedule/vo/CurrentWeekVo.java
  15. 6 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentUserPageVo.java
  16. 9 0
      src/main/resources/mapper/oa/NewsMapper.xml
  17. 1 1
      src/main/resources/mapper/oa/OfficialDocumentReceivedHandleMapper.xml
  18. 3 1
      src/main/resources/mapper/student/BaseStudentMapper.xml
  19. 5 0
      src/test/java/com/xjrsoft/module/job/WfCourseAdjustTaskTest.java

+ 6 - 1
src/main/java/com/xjrsoft/common/enums/EvaluateTypeEnum.java

@@ -20,7 +20,12 @@ public enum EvaluateTypeEnum {
 
     TEACHER_EVALUATE_CLASS("tea_evaluate_class", "任课教师对班级评价"),
 
-    TEACHER_EVALUATE("teacher_evaluate", "任课教师对班级评价");
+    TEACHER_EVALUATE("teacher_evaluate", "任课教师对班级评价"),
+    STU_SELF_EVALUATE("stu_self_evaluate", "学生自评"),
+
+    CLASS_STU_EVALUATE("class_stu_evaluate", "班级学生交叉互评"),
+
+    TEA_EVALUATE_STU("tea_evaluate_stu", "教师评价班级学生");
 
     final String code;
     final String value;

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

+ 35 - 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;
@@ -518,6 +519,9 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             } else if (CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())) {
                 for (String courseId : courseIds) {
                     CourseTable courseTable = courseTableMapper.selectById(courseId);
+                    if(courseTable == null){
+                        continue;
+                    }
 
                     User applyUser = userService.getById(courseAdjust.getUserId());//申请人
                     User exchangeUser = userService.getById(courseAdjust.getExchangeTeacherId());//顶课人
@@ -1519,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;
+    }
+
 }

+ 158 - 7
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,11 @@ 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;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -51,6 +57,8 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
     private final EvaluateExecuterMapper evaluateExecuterMapper;
     private final CourseTableMapper courseTableMapper;
     private final IUserService userService;
+    private final IBaseStudentService studentService;
+    private final ICourseTableService courseTableService;
 
 
     @Override
@@ -242,7 +250,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);
 
@@ -250,15 +259,16 @@ 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())) {//任课教师对班级评价
-            EvaluateManage manage = evaluateManageMapper.selectById(dto.getEvaluateManageId());
+        }
+        else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode())) {//任课教师对班级评价
+            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());
                     }}
             );
 
@@ -278,18 +288,21 @@ 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);
                     }
                 }
                 objectListVo.setExecuterCount(currentExecuterList.size());
                 objectListVo.setExecuterList(currentExecuterList);
             }
-        } else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.STUDENT_EVALUATE_COURSE_TEACHER.getCode())) {//入参评价类型是学生评价教师
+        }
+        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);
@@ -358,6 +371,144 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
                 newObjectList.add(objectListVo);
             }
         }
+        else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.STU_SELF_EVALUATE.getCode())){//学生自评
+            BaseStudentUserPageDto studentUserPageDto = new BaseStudentUserPageDto();
+            studentUserPageDto.setGradeId(dto.getGradeId());
+            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());
+
+                List<EvaluateExecuterVo> executerList = new ArrayList<>();
+
+                EvaluateExecuterVo executerVo = new EvaluateExecuterVo();
+                executerVo.setEvaluateObjectId(student.getId());
+                executerVo.setExecuterName(student.getName());
+                executerVo.setExecuterId(student.getId());
+                executerVo.setGradeId(student.getGradeId().toString());
+                executerVo.setClassId(student.getClassId().toString());
+
+                executerList.add(executerVo);
+                object.setExecuterList(executerList);
+                object.setExecuterCount(executerList.size());
+
+                newObjectList.add(object);
+            }
+        }
+        else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.CLASS_STU_EVALUATE.getCode())){//班级学生交叉互评
+            BaseStudentUserPageDto studentUserPageDto = new BaseStudentUserPageDto();
+            studentUserPageDto.setGradeId(dto.getGradeId());
+            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) {
+                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());
+
+                List<BaseStudentUserPageVo> classStudentList = classStudentMap.get(student.getClassId());
+
+                List<EvaluateExecuterVo> executerList = new ArrayList<>();
+                if(classStudentList != null){
+                    for (BaseStudentUserPageVo otherStudent : classStudentList) {
+                        if(otherStudent.getId().equals(student.getId())){
+                            continue;
+                        }
+                        EvaluateExecuterVo executerVo = new EvaluateExecuterVo();
+                        executerVo.setEvaluateObjectId(student.getId());
+                        executerVo.setExecuterName(otherStudent.getName());
+                        executerVo.setExecuterId(otherStudent.getId());
+                        executerVo.setGradeId(otherStudent.getGradeId().toString());
+                        executerVo.setClassId(otherStudent.getClassId().toString());
+
+                        executerList.add(executerVo);
+                    }
+                }
+
+                object.setExecuterList(executerList);
+                object.setExecuterCount(executerList.size());
+                newObjectList.add(object);
+            }
+        }
+        else if (dto.getEvaluateType() != null && dto.getEvaluateType().equals(EvaluateTypeEnum.TEA_EVALUATE_STU.getCode())){//教师评价班级学生
+            BaseStudentUserPageDto studentUserPageDto = new BaseStudentUserPageDto();
+            studentUserPageDto.setGradeId(dto.getGradeId());
+            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;
     }

+ 6 - 1
src/main/java/com/xjrsoft/module/job/WfCourseAdjustTask.java

@@ -10,6 +10,7 @@ import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
 import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
 import lombok.extern.slf4j.Slf4j;
+import me.zhyd.oauth.log.Log;
 import org.camunda.bpm.engine.history.HistoricProcessInstance;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -58,7 +59,11 @@ public class WfCourseAdjustTask {
                 continue;
             }
 
-            courseTableService.adjustCourse(wfCourseAdjust);
+            try {
+                courseTableService.adjustCourse(wfCourseAdjust);
+            }catch (Exception e){
+                Log.error(e.getMessage());
+            }
         }
     }
 }

+ 2 - 13
src/main/java/com/xjrsoft/module/oa/controller/OfficialDocumentReceivedHandleController.java

@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import javax.ws.rs.GET;
 import java.util.List;
 
 /**
@@ -55,19 +56,7 @@ public class OfficialDocumentReceivedHandleController {
         return RT.ok(pageOutput);
     }
 
-    @GetMapping(value = "/info")
-    @ApiOperation(value="根据id查询公文收文-承办表信息")
-    @SaCheckPermission("officialdocumentreceivedhandle:detail")
-    @XjrLog(value = "根据id查询公文收文-承办表信息")
-    public RT<OfficialDocumentReceivedHandleVo> info(@RequestParam Long id){
-        OfficialDocumentReceivedHandle officialDocumentReceivedHandle = officialDocumentReceivedHandleService.getById(id);
-        if (officialDocumentReceivedHandle == null) {
-           return RT.error("找不到此数据!");
-        }
-        return RT.ok(BeanUtil.toBean(officialDocumentReceivedHandle, OfficialDocumentReceivedHandleVo.class));
-    }
-
-    @PostMapping(value = "last-alert-time")
+    @GetMapping(value = "last-alert-time")
     @ApiOperation(value = "新增公文收文-承办表-最新提醒时间")
     @SaCheckPermission("officialdocumentreceivedhandle:add")
     @XjrLog(value = "新增公文收文-承办表-最新提醒时间")

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

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

@@ -193,4 +193,7 @@ public class UpdateNewsDto {
     @TableField(exist = false)
     @EntityMapping(thisField = "id", joinField = "newsId")
     private List<AddNewsRelationDto> relationList;
+
+    @ApiModelProperty("办事指南显示范围")
+    private String guideShowRange;
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/oa/service/impl/OfficialDocumentReceivedHandleServiceImpl.java

@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
 * @title: 公文收文-承办表
@@ -34,6 +35,10 @@ public class OfficialDocumentReceivedHandleServiceImpl extends MPJBaseServiceImp
     @Override
     public Page<OfficialDocumentReceivedHandlePageVo> getPage(Page<OfficialDocumentReceivedHandlePageVo> page, OfficialDocumentReceivedHandlePageDto dto) {
         dto.setLoginUserId(StpUtil.getLoginIdAsLong());
+        List<String> roleList = StpUtil.getRoleList();
+        if(roleList.contains("undertaker")){
+            dto.setLoginUserId(null);
+        }
         return this.baseMapper.getPage(page, dto);
     }
 

+ 6 - 0
src/main/java/com/xjrsoft/module/oa/vo/NewsPageVo.java

@@ -190,4 +190,10 @@ public class NewsPageVo {
 
     @ApiModelProperty("封面url")
     private String coverUrl;
+
+    @ApiModelProperty("办事指南显示范围")
+    private String guideShowRange;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime modifyDate;
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/oa/vo/OfficialDocumentReceivedHandlePageVo.java

@@ -51,4 +51,6 @@ public class OfficialDocumentReceivedHandlePageVo {
     @ApiModelProperty("落实时间")
     private LocalDateTime handleTime;
 
+    @ApiModelProperty("是否转办(0:否 1:是)")
+    private Integer isTransfer;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/organization/dto/AddRoleDto.java

@@ -24,7 +24,7 @@ public class AddRoleDto implements Serializable {
     private String name;
 
     @NotNull(message = "角色编码不能为空")
-    @Length(min = 1, max = 10, message = "编码最多20个字符!")
+    @Length(min = 1, max = 10, message = "编码最多10个字符!")
     @ApiModelProperty("编码")
     private String code;
 

+ 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/java/com/xjrsoft/module/student/vo/BaseStudentUserPageVo.java

@@ -47,4 +47,10 @@ public class BaseStudentUserPageVo {
 
     @ApiModelProperty("班级id")
     private Long classId;
+
+    @ApiModelProperty("年级id")
+    private Long gradeId;
+
+    @ApiModelProperty("年级姓名")
+    private String gradeName;
 }

+ 9 - 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>
 
@@ -45,6 +48,9 @@
         <if test="dto.type != null and dto.type > 0">
             and t.type_id = #{dto.type}
         </if>
+        <if test="dto.typeId != null">
+            and t.type_id = #{dto.typeId}
+        </if>
         <if test="dto.fullHead != null and dto.fullHead != ''">
             and t.full_head LIKE CONCAT('%',#{dto.fullHead},'%')
         </if>
@@ -55,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/oa/OfficialDocumentReceivedHandleMapper.xml

@@ -10,7 +10,7 @@
         SELECT GROUP_CONCAT(c2.name) FROM official_document_received_handle c1
         INNER JOIN xjr_user c2 ON c1.receive_user_id = c2.id
         WHERE c1.delete_mark = 0 AND c1.official_document_received_id = t1.id and c1.is_transfer = 1
-        ),',', '>') AS receive_user_names,t1.is_handle,t4.name as handle_user_name,t1.handle_time FROM official_document_received t1
+        ),',', '>') AS receive_user_names,t1.is_handle,t4.name as handle_user_name,t1.handle_time,t5.is_transfer FROM official_document_received t1
         INNER JOIN xjr_workflow_form_relation t2 ON t1.id = CAST(t2.form_key_value AS SIGNED)
         LEFT JOIN xjr_user t3 ON t1.handle_duty_user_id = t3.id
         LEFT JOIN xjr_user t4 ON t1.handle_user_id = t4.id

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

@@ -137,11 +137,13 @@
 
     <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 FROM xjr_user t1
+        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,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
         LEFT JOIN xjr_user t5 ON t4.teacher_id = t5.id
+        LEFT JOIN base_grade t6 ON t3.grade_id = t6.id
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
         and t3.archives_status = 'FB2901' and t2.is_normal = 1
         <if test="dto.classIds != null and dto.classIds.size() > 0">

+ 5 - 0
src/test/java/com/xjrsoft/module/job/WfCourseAdjustTaskTest.java

@@ -18,6 +18,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -38,6 +39,9 @@ class WfCourseAdjustTaskTest {
 
     @Test
     public void execute() {
+        List<Long> ids = new ArrayList<>();
+        ids.add(1910895102200975360L);
+        ids.add(1910894870629257216L);
         List<WfCourseAdjust> list = wfCourseAdjustService.list(
                 new MPJLambdaWrapper<WfCourseAdjust>()
                         .select(WfCourseAdjust::getId)
@@ -46,6 +50,7 @@ class WfCourseAdjustTaskTest {
                         .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
                         .eq(WfCourseAdjust::getDeleteMark, DeleteMark.NODELETE.getCode())
                         .eq(WfCourseAdjust::getEnabledMark, EnabledMark.ENABLED.getCode())
+                        .in(!ids.isEmpty(), WfCourseAdjust::getId, ids)
         );
 
         for (WfCourseAdjust wfCourseAdjust : list) {