Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

周箭河 5 rokov pred
rodič
commit
68a12a7009

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseAdjustInfoDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -20,12 +21,34 @@ public class VipGroupCourseAdjustInfoDto {
     @ApiModelProperty(value = "开始排课时间")
     private Date courseCreateStartTime;
 
+    @ApiModelProperty(value = "教学形式")
+    private TeachModeEnum teachMode;
+
+    @ApiModelProperty(value = "排课次数", required = true)
+    private Integer courseCount;
+
     @ApiModelProperty(value = "可排课时间")
     private List<CourseTimeDto> courseTimes;
 
     @ApiModelProperty(value = "是否跳过节假日 true-跳过 false-不跳过")
     private boolean isHoliday;
 
+    public TeachModeEnum getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(TeachModeEnum teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public Integer getCourseCount() {
+        return courseCount;
+    }
+
+    public void setCourseCount(Integer courseCount) {
+        this.courseCount = courseCount;
+    }
+
     public Integer getVipGroupId() {
         return vipGroupId;
     }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -177,6 +177,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo);
 
 	/**
+	 * @describe vip课批量新增-后端处理
+	 * @author Joburgess
+	 * @date 2019/12/12
+	 * @param vipGroupCourseAdjustInfoDto: 加课信息
+	 * @return void
+	 */
+	void batchAppendVipGroupCourses(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfoDto);
+
+	/**
 	 * @Author: Joburgess
 	 * @Date: 2019/9/24
 	 * 课程交换

+ 116 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -82,6 +82,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
 	@Autowired
 	private JiaRiFeignService jiaRiFeignService;
+	@Autowired
+	private VipGroupService vipGroupService;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -117,10 +119,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void deleteCourseSchedules(List<Long> courseScheduleIds) {
+		Integer classGroupId=null;
+		if(!CollectionUtils.isEmpty(courseScheduleIds)){
+			CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleIds.get(0));
+			classGroupId=courseSchedule.getClassGroupId();
+		}
 		courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
         courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
         courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
         teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
+        if(Objects.nonNull(classGroupId)){
+        	classGroupService.updateClassGroupInfo(classGroupId);
+		}
 	}
 
 	@Override
@@ -968,6 +978,112 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	public void batchAppendVipGroupCourses(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo) {
+		if(Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())){
+			throw new BizException("请指定小课");
+		}
+		if(Objects.isNull(vipGroupCourseAdjustInfo.getCourseCreateStartTime())){
+			throw new BizException("请指定排课起始时间;");
+		}
+		if(CollectionUtils.isEmpty(vipGroupCourseAdjustInfo.getCourseTimes())){
+			throw new BizException("请指定排课周期");
+		}
+		if(Objects.isNull(vipGroupCourseAdjustInfo.getCourseCount())){
+			throw new BizException("请指定排课次数");
+		}
+		Date courseCreateStartTime = vipGroupCourseAdjustInfo.getCourseCreateStartTime();
+		Date now = new Date();
+		Date today = DateUtil.stringToDate(DateUtil.dateToString(now, DateUtil.ISO_EXPANDED_DATE_FORMAT),
+				DateUtil.ISO_EXPANDED_DATE_FORMAT);
+		if(courseCreateStartTime.before(today)){
+			throw new BizException("排课起始时间不能小于当前时间");
+		}
+
+		VipGroup vipGroup=vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
+		if(Objects.isNull(vipGroup)){
+			throw new BizException("指定课程不存在");
+		}
+
+		int courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue());
+		if(courseNum==0){
+			throw new BizException("未排课的课程不能进行调整");
+		}
+
+		ClassGroup classGroup=classGroupDao.findByGroupAndType(vipGroupCourseAdjustInfo.getVipGroupId().toString(),GroupType.VIP.getCode());
+		if(Objects.isNull(classGroup)){
+			throw new BizException("对应班级不存在");
+		}
+
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(courseCreateStartTime);
+
+		Map<String, Integer> holidayDays = new HashMap<>();
+		Map<Integer, Map<String, Integer>> holiday = new HashMap<>();;
+		if (vipGroupCourseAdjustInfo.isHoliday()) {
+			holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
+			holidayDays = holiday.get(calendar.get(Calendar.YEAR));
+		}
+
+		List<CourseSchedule> courseSchedules=new ArrayList<>();
+
+		while (true) {
+			if(vipGroupCourseAdjustInfo.isHoliday() && !holiday.containsKey(calendar.get(Calendar.YEAR))){
+				holiday = jiaRiFeignService.query(calendar.get(Calendar.YEAR));
+				holidayDays = holiday.get(calendar.get(Calendar.YEAR));
+			}
+			if (vipGroupCourseAdjustInfo.isHoliday() && holidayDays.containsKey(DateUtil.format(calendar.getTime(),"MMdd"))) {
+				calendar.add(Calendar.DATE, 1);
+				continue;
+			}
+			int i = calendar.get(Calendar.DAY_OF_WEEK);
+			if(i==1){
+				i=7;
+			}else{
+				i=--i;
+			}
+			for (CourseTimeDto courseTime : vipGroupCourseAdjustInfo.getCourseTimes()) {
+				if(Objects.isNull(courseTime.getDayOfWeek())){
+					throw new BizException("排课循环周期错误");
+				}
+				if(courseTime.getDayOfWeek()<1||courseTime.getDayOfWeek()>7){
+					throw new BizException("排课循环周期错误");
+				}
+				if(courseTime.getDayOfWeek()==i){
+					String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
+					dateYmdStr = dateYmdStr + " " +courseTime.getStartClassTime();
+					Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
+					Date courseEndTime = DateUtil.addMinutes(courseStartTime,vipGroup.getSingleClassMinutes());
+					CourseSchedule courseSchedule=new CourseSchedule();
+					courseSchedule.setGroupType(GroupType.VIP);
+					courseSchedule.setMusicGroupId(vipGroup.getId().toString());
+					courseSchedule.setClassGroupId(classGroup.getId());
+					courseSchedule.setClassDate(courseStartTime);
+					courseSchedule.setStartClassTime(courseStartTime);
+					courseSchedule.setEndClassTime(courseEndTime);
+					courseSchedule.setSchoolId(vipGroup.getTeacherSchoolId());
+					courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+					courseSchedule.setTeachMode(vipGroupCourseAdjustInfo.getTeachMode());
+					courseSchedules.add(courseSchedule);
+				}
+				if(courseSchedules.size()==vipGroupCourseAdjustInfo.getCourseCount()){
+					break;
+				}
+			}
+			if(courseSchedules.size()==vipGroupCourseAdjustInfo.getCourseCount()){
+				break;
+			}
+			calendar.add(Calendar.DATE, 1);
+		}
+//		checkNewCourseSchedules(courseSchedules,false);
+//		courseScheduleDao.batchUpdate(courseSchedules);
+		VipGroupApplyDto vipGroupApplyDto=new VipGroupApplyDto();
+		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=new VipGroupApplyBaseInfoDto();
+		vipGroupApplyBaseInfoDto.setId(vipGroup.getId());
+		vipGroupApplyDto.setCourseSchedules(courseSchedules);
+		classGroupService.updateClassGroupInfo(classGroup.getId());
+	}
+
+	@Override
 	public void courseAdjust(List<CourseSchedule> newCourseSchedules) {
 		Date now=new Date();
 		//课程信息处理

+ 0 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -185,9 +185,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}
 			return result;
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
-			if(teacherAttendance.getSignInTime() == null){
-				throw new BizException("当前课程未签到");
-			}
 			//正常签退范围(结束后1小时内)
 			teacherAttendance.setSignOutTime(date);
 			ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -267,4 +267,12 @@ public class CourseScheduleController extends BaseController {
         return succeed();
     }
 
+//    @ApiOperation(value = "vip课批量新增")
+//    @PostMapping("/batchAppendVipGroupCourses")
+//    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAppendVipGroupCourses')")
+//    public Object batchAppendVipGroupCourses(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
+//        scheduleService.batchAppendVipGroupCourses(vipGroupCourseAdjustInfo);
+//        return succeed();
+//    }
+
 }