Explorar o código

feat:乐团排课调整

Joburgess %!s(int64=4) %!d(string=hai) anos
pai
achega
08ec024aff

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseTimeDto.java

@@ -3,6 +3,8 @@ package com.ym.mec.biz.dal.dto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.Date;
+
 public class CourseTimeDto {
 
 
@@ -12,6 +14,12 @@ public class CourseTimeDto {
     @ApiModelProperty(value = "排课星期几")
     private Integer dayOfWeek;
 
+    @ApiModelProperty(value = "开始排课日期,如果有值,则单独循环")
+    private Date startDate;
+
+    @ApiModelProperty(value = "结束排课日期")
+    private Date endDate;
+
     @ApiModelProperty(value = "上课开始时间")
     private String startClassTime;
 
@@ -26,6 +34,22 @@ public class CourseTimeDto {
         this.courseType = courseType;
     }
 
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
     public Integer getDayOfWeek() {
         return dayOfWeek;
     }

+ 19 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2417,6 +2417,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }
             }
 
+            if(!CollectionUtils.isEmpty(classGroup4MixDto.getCourseTimeDtoList())){
+                int cycleNum = classGroup4MixDto.getCourseTimeDtoList().size();
+                long num = classGroup4MixDto.getCourseTimeDtoList().stream().filter(c -> Objects.nonNull(c.getStartDate())).count();
+                if(num>0&&num!=cycleNum){
+                    throw new BizException("循环周期排课日期未设置");
+                }
+                if(num>0){
+                    for (int i = 0;i<cycleNum-1; i++) {
+                        classGroup4MixDto.getCourseTimeDtoList().get(i).setEndDate(classGroup4MixDto.getCourseTimeDtoList().get(i+1).getStartDate());
+                    }
+                }
+            }
+
             WhileNode:
             while (true) {
                 if (classGroup4MixDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
@@ -2430,6 +2443,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     }
                     if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
+                    Date classDate = DateConvertor.toDate(now);
+
+                    if((Objects.nonNull(courseTimeDto.getStartDate())&&courseTimeDto.getStartDate().compareTo(classDate)>0)||(Objects.nonNull(courseTimeDto.getEndDate())&&courseTimeDto.getEndDate().compareTo(classDate)<0)){
+                        continue;
+                    }
+
                     //课时长度
                     long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
                             LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
@@ -2441,7 +2460,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         break WhileNode;
                     }
 
-                    Date classDate = DateConvertor.toDate(now);
                     String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
                     String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";