Quellcode durchsuchen

Merge branch 'pre'

大数据与最优化研究所 vor 3 Monaten
Ursprung
Commit
0ee2276f83

+ 1 - 1
Makefile

@@ -5,7 +5,7 @@ merge-pre:
 	git checkout pre;git merge dev;git push;git checkout dev;
 
 create-tag:
-	git checkout master;git tag v1.4.0;git push origin --tags;git checkout dev;
+	git checkout master;git tag v5.2.6;git push origin --tags;git checkout dev;
 
 remove-tag:
 	git tag -d v1.2.0;git push origin :refs/tags/v1.1.8;

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

@@ -25,7 +25,7 @@ public enum EnrollTypeEnum {
     private static final Map<String, String> lookup = new HashMap<>();
 
     static {
-        for (ArchivesStatusEnum s : ArchivesStatusEnum.values()) {
+        for (EnrollTypeEnum s : EnrollTypeEnum.values()) {
             lookup.put(s.getCode(), s.getValue());
         }
     }

+ 1 - 1
src/main/java/com/xjrsoft/common/exception/GlobalExceptionHandler.java

@@ -64,7 +64,7 @@ public class GlobalExceptionHandler {
         log.error(e.getMessage(), e);
         // 使用SkyWalking的Trace Context记录错误信息
         ActiveSpan.error(e.getMessage());
-        return R.error(ResponseCode.UN_AUTHORIZED.getCode(),e.getMessage());
+        return R.error(ResponseCode.REQ_REJECT.getCode(),e.getMessage());
     }
 
     /**

+ 4 - 0
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java

@@ -57,6 +57,7 @@ import com.xjrsoft.module.system.entity.DictionaryItem;
 import com.xjrsoft.module.system.mapper.DictionarydetailMapper;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -122,6 +123,9 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
     @Override
     public List<BandingTaskClassPageVo> getList(BandingTaskClassPageDto dto) {
         BandingTask bandingTask = bandingTaskMapper.selectById(dto.getBandingTaskId());
+        if(ObjectUtils.isEmpty(bandingTask)){
+            return new ArrayList<>();
+        }
         dto.setGradeId(bandingTask.getGradeId());
         dto.setEnrollType(bandingTask.getEnrollType());
         return this.baseMapper.getList(dto);

+ 60 - 29
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -45,11 +45,9 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.time.DayOfWeek;
-import java.time.Duration;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -215,7 +213,6 @@ public class ScheduleController {
         return RT.ok("ok");
     }
 
-
     @GetMapping(value = "/getCourseNames")
     @ApiOperation(value = "查询课程接口")
     @SaCheckPermission("schedule:detail")
@@ -249,7 +246,6 @@ public class ScheduleController {
         return RT.ok(result);
     }
 
-
     @GetMapping(value = "/getCourseInfo")
     @ApiOperation(value = "根据课程id获取课程相关信息")
     @SaCheckPermission("schedule:detail")
@@ -302,9 +298,6 @@ public class ScheduleController {
         return RT.ok(resultVo);
     }
 
-
-
-
     /**
      * 顶课预检查
      *
@@ -411,7 +404,6 @@ public class ScheduleController {
     @SaCheckPermission("schedule:detail")
     @XjrLog(value = "获取周次列表")
     public RT<List<ScheduleWeekVo>> weekList(@Valid ScheduleWeekDto dto) {
-
         BaseSemester baseSemester;
         if (dto.getSemesterId() != null) {
             baseSemester = semesterService.getById(dto.getSemesterId());
@@ -421,27 +413,66 @@ public class ScheduleController {
                 return RT.ok(new ArrayList<>());
             }
         }
-        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);
-        List<ScheduleWeekVo> result = new ArrayList<>();
-        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);
-            int week = i + 1;
-            result.add(
-                    new ScheduleWeekVo() {{
-                        setWeek(week);
-                        setWeekCn("第" + week + "周");
-                        setStartDate(startDate.toLocalDate());
-                        setEndDate(endDate.toLocalDate());
-                    }}
-            );
+        LocalDate startDate = LocalDate.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
+        LocalDate endDate = LocalDate.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
+        List<ScheduleWeekVo> weeks = calculateSemesterWeeks(startDate, endDate);
+
+        return RT.ok(weeks);
+//        Duration between = Duration.between(startDateTime, endDateTime);
+//        long days = between.toDays();
+//        int weeks = (int) Math.ceil((double) days / 7);
+//        List<ScheduleWeekVo> result = new ArrayList<>();
+//        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);
+//            int week = i + 1;
+//            result.add(
+//                    new ScheduleWeekVo() {{
+//                        setWeek(week);
+//                        setWeekCn("第" + week + "周");
+//                        setStartDate(startDate.toLocalDate());
+//                        setEndDate(endDate.toLocalDate());
+//                    }}
+//            );
+//        }
+//
+//        return RT.ok(result);
+    }
+
+    /**
+     * 计算学期的自然周列表
+     * @param semesterStart 学期开始日期
+     * @param semesterEnd 学期结束日期
+     * @return 周次信息列表
+     */
+    private List<ScheduleWeekVo> calculateSemesterWeeks(LocalDate semesterStart, LocalDate semesterEnd) {
+        List<ScheduleWeekVo> weekList = new ArrayList<>();
+
+        // 调整开始日期到本周星期一
+        LocalDate adjustedStart = semesterStart.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+
+        // 调整结束日期到本周星期日
+        LocalDate adjustedEnd = semesterEnd.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+
+        // 计算总周数
+        long totalDays = java.time.temporal.ChronoUnit.DAYS.between(adjustedStart, adjustedEnd) + 1;
+        int totalWeeks = (int) (totalDays / 7);
+
+        // 生成每一周的信息
+        for (int i = 0; i < totalWeeks; i++) {
+            LocalDate weekStart = adjustedStart.plusWeeks(i);
+            LocalDate weekEnd = weekStart.plusDays(6); // 一周结束是星期日
+
+            ScheduleWeekVo weekVo = new ScheduleWeekVo();
+            weekVo.setWeek(i + 1); // 周次从1开始
+            weekVo.setWeekCn("第" + (i + 1) + "周");
+            weekVo.setStartDate(weekStart);
+            weekVo.setEndDate(weekEnd);
+
+            weekList.add(weekVo);
         }
 
-        return RT.ok(result);
+        return weekList;
     }
 
     @GetMapping(value = "/class-list")

+ 2 - 2
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -355,7 +355,7 @@ public class DataUtil {
             BaseSemester semester = SqlRunnerAdapterUtil.convertMapToEntity(semesterMap, BaseSemester.class);
             String url = ScheduleUtil.apiUrl + "semester/Create";
             JsonObject paramJson = new JsonObject();
-            paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())) - 1);
+            paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())));
             Integer period = null;
             if (semester.getName().contains(spring)) {
                 period = 2;
@@ -381,7 +381,7 @@ public class DataUtil {
             if (ids != null && ids.get(semester.getId().toString()) != null) {
                 url = ScheduleUtil.apiUrl + "semester/update";
                 paramJson.addProperty("serialNo", ids.get(semester.getId().toString()));
-                ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+                String updateResult = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
                 continue;
             }
 

+ 18 - 18
src/main/java/com/xjrsoft/module/student/controller/StudentReportPlanController.java

@@ -145,27 +145,27 @@ public class StudentReportPlanController {
         }
         //如果发布,需要先验证计划中的班级是否在其他生效的计划内
         if (dto.getStatus() != null && dto.getStatus() == 1) {
-            List<StudentReportPlan> list = studentReportPlanService.list(
-                    new QueryWrapper<StudentReportPlan>().lambda()
-                            .ne(StudentReportPlan::getId, reportPlan.getId())
-                            .eq(StudentReportPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
-                            .eq(StudentReportPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
-                            .eq(StudentReportPlan::getStatus, 1)
-                            .ne(StudentReportPlan::getSemesterId, reportPlan.getSemesterId())
-            );
-            if (!list.isEmpty()) {
-                throw new MyException("已存在正在进行的计划,无法发布");
-            }
+//            List<StudentReportPlan> list = studentReportPlanService.list(
+//                    new QueryWrapper<StudentReportPlan>().lambda()
+//                            .ne(StudentReportPlan::getId, reportPlan.getId())
+//                            .eq(StudentReportPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
+//                            .eq(StudentReportPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
+//                            .eq(StudentReportPlan::getStatus, 1)
+//                            .ne(StudentReportPlan::getSemesterId, reportPlan.getSemesterId())
+//            );
+//            if (!list.isEmpty()) {
+//                throw new MyException("已存在正在进行的计划,无法发布");
+//            }
             if (reportPlan.getStudentReportPlanClassRelationList() == null || reportPlan.getStudentReportPlanClassRelationList().isEmpty()) {
                 return RT.error("未选择班级,无法进行发布");
             }
-            List<Long> classIds = reportPlan.getStudentReportPlanClassRelationList()
-                    .stream().map(StudentReportPlanClassRelation::getClassId).collect(Collectors.toList());
-            List<BaseClass> classList = studentReportPlanService.validateClass(dto.getId(), classIds);
-            if (!classList.isEmpty()) {
-                Set<String> classNames = classList.stream().map(BaseClass::getName).collect(Collectors.toSet());
-                return RT.error(classNames.toString().replace("[", "").replace("]", "") + "已在其他计划中,无法发布");
-            }
+//            List<Long> classIds = reportPlan.getStudentReportPlanClassRelationList()
+//                    .stream().map(StudentReportPlanClassRelation::getClassId).collect(Collectors.toList());
+//            List<BaseClass> classList = studentReportPlanService.validateClass(dto.getId(), classIds);
+//            if (!classList.isEmpty()) {
+//                Set<String> classNames = classList.stream().map(BaseClass::getName).collect(Collectors.toSet());
+//                return RT.error(classNames.toString().replace("[", "").replace("]", "") + "已在其他计划中,无法发布");
+//            }
 
             if (reportPlan.getStatus() == 1) {
                 return RT.error("已发布,无法再次发布");