Selaa lähdekoodia

课时调整判断逻辑调整

Joburgess 5 vuotta sitten
vanhempi
commit
03ed50281b

+ 17 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -164,12 +165,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				createNewCourseByAdjust(dates,classDateAdjustDto);
 			}else{
 				//判断教师是否在时间安排上存在冲突
+				SimpleDateFormat s1=new SimpleDateFormat("yyyy-MM-dd"),
+						s2=new SimpleDateFormat("HH:mm:ss"),
+						s3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 				List<CourseSchedule> teacherCoursesInDates = courseScheduleDao.findTeacherCoursesInDates(dates, classDateAdjustDto.getTeacherId());
 				teacherCoursesInDates.forEach(courseSchedule -> {
-					boolean isDuplication=(courseSchedule.getStartClassTime().after(classDateAdjustDto.getStartClassTime())
-							&&courseSchedule.getStartClassTime().before(classDateAdjustDto.getEndClassTime()))
-							||(classDateAdjustDto.getStartClassTime().after(courseSchedule.getStartClassTime())
-							&&classDateAdjustDto.getStartClassTime().before(courseSchedule.getEndClassTime()));
+					Date updateStartClassTime = null,updateEndClassTime=null;
+					try {
+						updateStartClassTime=s3.parse(s1.format(courseSchedule.getClassDate())+" "+s2.format(classDateAdjustDto.getStartClassTime()));
+						updateEndClassTime=s3.parse(s1.format(courseSchedule.getClassDate())+" "+s2.format(classDateAdjustDto.getEndClassTime()));
+					} catch (ParseException e) {
+						e.printStackTrace();
+					}
+					boolean isDuplication=(courseSchedule.getStartClassTime().after(updateStartClassTime)
+							&&courseSchedule.getStartClassTime().before(updateEndClassTime))
+							||(updateStartClassTime.after(courseSchedule.getStartClassTime())
+							&&updateStartClassTime.before(courseSchedule.getEndClassTime()));
 					if(isDuplication){
 						throw new BizException("在所选时段内教师上课时间存在重复!");
 					}
@@ -222,10 +233,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	 * 根据课时调整信息增加新课程
 	 */
 	private void createNewCourseByAdjust(List<Date> dates,ClassDateAdjustDto classDateAdjustDto){
+		CourseSchedule schedule=courseScheduleDao.get(classDateAdjustDto.getId());
 		List<CourseSchedule> courseSchedules=new ArrayList<>();
 		courseScheduleDao.delete(classDateAdjustDto.getId());
 		for (Date date:dates){
 			CourseSchedule courseSchedule=new CourseSchedule();
+			BeanUtils.copyProperties(schedule,courseSchedule);
 			courseSchedule.setClassDate(date);
 			courseSchedule.setStartClassTime(classDateAdjustDto.getStartClassTime());
 			courseSchedule.setEndClassTime(classDateAdjustDto.getEndClassTime());

+ 12 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -254,7 +254,17 @@
     </select>
     <select id="findTeacherCoursesInDates" resultMap="CourseSchedule">
         SELECT
-        *
+        id_,
+        class_group_id_,
+        status_,
+        subsidy_,
+        class_date_,
+        concat(class_date_,' ',start_class_time_) start_class_time_,
+        concat(class_date_,' ',end_class_time_) end_class_time_,
+        teacher_id_,
+        actual_teacher_id_,
+        create_time_,
+        update_time_
         FROM
         course_schedule cs
         WHERE
@@ -283,7 +293,7 @@
         course_schedule cs
         WHERE
         cs.class_date_ IN
-        <foreach collection="list" item="date" open="(" close=")" separator=",">
+        <foreach collection="dates" item="date" open="(" close=")" separator=",">
             DATE_FORMAT(#{date},'%Y-%m-%d')
         </foreach>
         AND (