Joburgess 5 年之前
父節點
當前提交
86ac5acf5d

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java

@@ -44,6 +44,13 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
     ClassGroupTeacherMapper findByClassGroupAndRole(@Param("classGroupId") Long classGroupId,
     ClassGroupTeacherMapper findByClassGroupAndRole(@Param("classGroupId") Long classGroupId,
                                                     @Param("teacherRole") TeachTypeEnum teacherRole);
                                                     @Param("teacherRole") TeachTypeEnum teacherRole);
 
 
-
+    /**
+     * @describe 获取乐团下的所有主教老师
+     * @author Joburgess
+     * @date 2019/10/18
+     * @param musicGroupId:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper>
+     */
+    List<ClassGroupTeacherMapper> findByMusicGroup(Long musicGroupId);
 
 
 }
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -292,4 +292,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return int
      * @return int
      */
      */
     int countTeacherClassCourseSchedule(Map<String,Object> params);
     int countTeacherClassCourseSchedule(Map<String,Object> params);
+
+    /**
+     * @describe 统计乐团下班级的排课数
+     * @author Joburgess
+     * @date 2019/10/18
+     * @param musicGroupId:
+     * @return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
+     */
+    List<Map<Long,Integer>> countClassCourseNumByMusicGroup(Long musicGroupId);
 }
 }

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CreateCourseScheduleDto.java

@@ -0,0 +1,31 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/18
+ */
+public class CreateCourseScheduleDto {
+    private Long musicGroupID;
+
+    private List<CourseSchedule> courseSchedules;
+
+    public Long getMusicGroupID() {
+        return musicGroupID;
+    }
+
+    public void setMusicGroupID(Long musicGroupID) {
+        this.musicGroupID = musicGroupID;
+    }
+
+    public List<CourseSchedule> getCourseSchedules() {
+        return courseSchedules;
+    }
+
+    public void setCourseSchedules(List<CourseSchedule> courseSchedules) {
+        this.courseSchedules = courseSchedules;
+    }
+}

+ 60 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -1,15 +1,17 @@
 package com.ym.mec.biz.dal.entity;
 package com.ym.mec.biz.dal.entity;
 
 
-import io.swagger.annotations.ApiModelProperty;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.common.enums.BaseEnum;
 import com.ym.mec.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Objects;
 
 
 /**
 /**
  * 对应数据库表(course_schedule):
  * 对应数据库表(course_schedule):
@@ -17,6 +19,9 @@ import java.math.BigDecimal;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class CourseSchedule {
 public class CourseSchedule {
 
 
+	private SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+	private SimpleDateFormat simpleDateFormat1=new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
 	public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {
 	public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {
 
 
 		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
 		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), COMPREHENSIVE("COMPREHENSIVE", "综合课"), PRACTICE(
@@ -64,10 +69,16 @@ public class CourseSchedule {
 	@ApiModelProperty(value = "上课时间", required = false)
 	@ApiModelProperty(value = "上课时间", required = false)
 	private java.util.Date startClassTime;
 	private java.util.Date startClassTime;
 
 
+	@ApiModelProperty(value = "上课时间字符")
+	private String startClassTimeStr;
+
 	/** 结束时间 */
 	/** 结束时间 */
 	@ApiModelProperty(value = "结束时间", required = false)
 	@ApiModelProperty(value = "结束时间", required = false)
 	private java.util.Date endClassTime;
 	private java.util.Date endClassTime;
 
 
+	@ApiModelProperty(value = "结束时间字符")
+	private String endClassTimeStr;
+
 	/** 上课教师 */
 	/** 上课教师 */
 	@ApiModelProperty(value = "上课教师", required = false)
 	@ApiModelProperty(value = "上课教师", required = false)
 	private Long teacherId;
 	private Long teacherId;
@@ -94,6 +105,32 @@ public class CourseSchedule {
 	@ApiModelProperty(value = "请假人数")
 	@ApiModelProperty(value = "请假人数")
 	private Integer leaveStudentNum;
 	private Integer leaveStudentNum;
 
 
+	public String getStartClassTimeStr() {
+		return startClassTimeStr;
+	}
+
+	public void setStartClassTimeStr(String startClassTimeStr) throws ParseException {
+		if(Objects.nonNull(this.classDate)){
+			String startTime = simpleDateFormat.format(this.classDate);
+			startTime=startTime+" "+startClassTimeStr;
+			this.startClassTime=simpleDateFormat1.parse(startTime);
+		}
+		this.startClassTimeStr = startClassTimeStr;
+	}
+
+	public String getEndClassTimeStr() {
+		return endClassTimeStr;
+	}
+
+	public void setEndClassTimeStr(String endClassTimeStr) throws ParseException {
+		if(Objects.nonNull(this.classDate)){
+			String endTime = simpleDateFormat.format(this.classDate);
+			endTime=endTime+" "+endClassTimeStr;
+			this.endClassTime=simpleDateFormat1.parse(endTime);
+		}
+		this.endClassTimeStr = endClassTimeStr;
+	}
+
 	public Integer getStudentNum() {
 	public Integer getStudentNum() {
 		return studentNum;
 		return studentNum;
 	}
 	}
@@ -142,7 +179,25 @@ public class CourseSchedule {
 		return this.subsidy;
 		return this.subsidy;
 	}
 	}
 
 
-	public void setClassDate(java.util.Date classDate) {
+	public void setClassDate(java.util.Date classDate){
+		if(StringUtils.isNotEmpty(startClassTimeStr)){
+			String startTime = simpleDateFormat.format(classDate);
+			startTime=startTime+" "+startClassTimeStr;
+			try {
+				this.startClassTime=simpleDateFormat1.parse(startTime);
+			} catch (ParseException e) {
+				this.startClassTime=null;
+			}
+		}
+		if(StringUtils.isNotEmpty(endClassTimeStr)){
+			String endTime = simpleDateFormat.format(classDate);
+			endTime=endTime+" "+endClassTimeStr;
+			try {
+				this.endClassTime=simpleDateFormat1.parse(endTime);
+			} catch (ParseException e) {
+				this.endClassTime=null;
+			}
+		}
 		this.classDate = classDate;
 		this.classDate = classDate;
 	}
 	}
 
 

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

@@ -183,4 +183,13 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @return com.ym.mec.common.page.PageInfo
 	 * @return com.ym.mec.common.page.PageInfo
 	 */
 	 */
 	PageInfo queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
 	PageInfo queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
+
+	/**
+	 * @describe 检测指定乐团下所有班级是否已排课
+	 * @author Joburgess
+	 * @date 2019/10/18
+	 * @param musicGroupId: 乐团编号
+	 * @return void
+	 */
+	void checkMusicGroupClassCourse(Long musicGroupId);
 }
 }

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

@@ -539,7 +539,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
 
         teacherMusicClassGroup.forEach(teacherClassGroupDto -> {
         teacherMusicClassGroup.forEach(teacherClassGroupDto -> {
 
 
-
             if(teacherClassGroupDto.getType()==ClassGroupTypeEnum.VIP){
             if(teacherClassGroupDto.getType()==ClassGroupTypeEnum.VIP){
                 String[] studentNums = classGroupStudentMapperDao.findStudentNumByClassGroupId(teacherClassGroupDto.getClassGroupId());
                 String[] studentNums = classGroupStudentMapperDao.findStudentNumByClassGroupId(teacherClassGroupDto.getClassGroupId());
                 teacherClassGroupDto.setStudentNames(StringUtils.join(studentNums,","));
                 teacherClassGroupDto.setStudentNames(StringUtils.join(studentNums,","));

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

@@ -578,4 +578,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		pageInfo.setRows(dataList);
 		pageInfo.setRows(dataList);
 		return pageInfo;
 		return pageInfo;
 	}
 	}
+
+	@Override
+	public void checkMusicGroupClassCourse(Long musicGroupId) {
+		if(Objects.isNull(musicGroupId)){
+			throw new BizException("请指定乐团");
+		}
+		List<Map<Long, Integer>> maps = courseScheduleDao.countClassCourseNumByMusicGroup(musicGroupId);
+		Map<Long,Integer> classCourseNumMap = MapUtil.convertMybatisMap(maps);
+		for (Long key:classCourseNumMap.keySet()){
+			if(classCourseNumMap.get(key)<=0){
+				throw new BizException("存在未排课的班级");
+			}
+		}
+	}
 }
 }

+ 11 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml

@@ -114,7 +114,17 @@
         SELECT u.real_name_, ct.*
         SELECT u.real_name_, ct.*
         FROM sys_user u,
         FROM sys_user u,
         class_group_teacher_mapper ct
         class_group_teacher_mapper ct
-        WHERE ct.class_group_id_ = #{classGroupId} AND teacher_role_=#{teacherRole,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        WHERE ct.class_group_id_ = #{classGroupId}
+        AND ct.user_id_=u.id_
+        AND teacher_role_=#{teacherRole,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
+    <select id="findByMusicGroup" resultMap="ClassGroupTeacherMapper">
+        SELECT u.real_name_, ct.*
+        FROM sys_user u,
+        class_group_teacher_mapper ct
+        WHERE ct.music_group_id_ = #{musicGroupId}
+        AND ct.user_id_=u.id_
+        AND ct.teacher_role_="BISHOP"
     </select>
     </select>
 
 
     <!-- 删除对应乐团老师关联关系 -->
     <!-- 删除对应乐团老师关联关系 -->

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -797,4 +797,14 @@
           LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
           LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         <include refid="teacherClassCourseScheduleQueryCondition"/>
         <include refid="teacherClassCourseScheduleQueryCondition"/>
     </select>
     </select>
+    <select id="countClassCourseNumByMusicGroup" resultType="java.util.Map">
+        SELECT
+            cg.id_,
+            COUNT(cs.id_)
+        FROM
+            class_group cg
+            LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
+            WHERE music_group_id_ = #{musicGroupId}
+            GROUP BY cg.id_
+    </select>
 </mapper>
 </mapper>

+ 34 - 4
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -1,22 +1,30 @@
 package com.ym.mec.web.controller;
 package com.ym.mec.web.controller;
 
 
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * @Author Joburgess
  * @Author Joburgess
@@ -31,13 +39,28 @@ public class CourseScheduleController extends BaseController {
     private CourseScheduleService scheduleService;
     private CourseScheduleService scheduleService;
     @Autowired
     @Autowired
     private StudentAttendanceService studentAttendanceService;
     private StudentAttendanceService studentAttendanceService;
+    @Autowired
+    private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
 
 
     @ApiOperation(value = "排课")
     @ApiOperation(value = "排课")
     @PostMapping("/batchAddCourseSchedule")
     @PostMapping("/batchAddCourseSchedule")
-   @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAddCourseSchedule')")
-    public Object batchAddCourseSchedule(@RequestBody List<CourseSchedule> courseSchedules,
-                                         @ApiParam(value = "乐团编号", required = true) Long musicGroupID){
-        scheduleService.batchAddCourseSchedule(courseSchedules);
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAddCourseSchedule')")
+    public Object batchAddCourseSchedule(@RequestBody CreateCourseScheduleDto createCourseScheduleDto){
+        if(Objects.isNull(createCourseScheduleDto.getMusicGroupID())){
+            throw new BizException("请指定乐团");
+        }
+        List<ClassGroupTeacherMapper> byMusicGroup = classGroupTeacherMapperDao.findByMusicGroup(createCourseScheduleDto.getMusicGroupID());
+        Map<Integer, List<ClassGroupTeacherMapper>> teacherByClassGroup = byMusicGroup.stream().collect(Collectors.groupingBy(ClassGroupTeacherMapper::getClassGroupId));
+
+        createCourseScheduleDto.getCourseSchedules().forEach(courseSchedule -> {
+            List<ClassGroupTeacherMapper> classGroupTeacherMappers = teacherByClassGroup.get(courseSchedule.getClassGroupId());
+            if(CollectionUtils.isEmpty(classGroupTeacherMappers)){
+                throw new BizException("乐团老师设置有误");
+            }
+            courseSchedule.setTeacherId(classGroupTeacherMappers.get(0).getUserId().longValue());
+        });
+
+        scheduleService.batchAddCourseSchedule(createCourseScheduleDto.getCourseSchedules());
         return succeed();
         return succeed();
     }
     }
 
 
@@ -103,4 +126,11 @@ public class CourseScheduleController extends BaseController {
         return succeed();
         return succeed();
     }
     }
 
 
+    @ApiOperation(value = "检测乐团下所有的班级是否都已排课")
+    @PostMapping(value = "/checkMusicGroupClassCourse")
+    public Object checkMusicGroupClassCourse(Long musicGroupId){
+        scheduleService.checkMusicGroupClassCourse(musicGroupId);
+        return succeed();
+    }
+
 }
 }