Ver código fonte

增加调整班级增加班级接口

周箭河 5 anos atrás
pai
commit
44441e07d6
31 arquivos alterados com 674 adições e 160 exclusões
  1. 0 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  2. 21 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  3. 18 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  4. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  5. 10 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultMusicGroupSalaryDao.java
  6. 133 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseAttendanceDetailHeadInfoDto.java
  7. 75 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleTeachersDto.java
  8. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupCourseScheduleDto.java
  9. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java
  10. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupTeacherMapperService.java
  11. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  12. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  13. 100 96
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  14. 42 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  15. 28 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  16. 6 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  17. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  18. 9 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  19. 7 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  20. 5 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  21. 36 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  22. 28 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  23. 3 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  24. 8 0
      mec-biz/src/main/resources/config/mybatis/TeacherDefaultMusicGroupSalaryMapper.xml
  25. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  26. 39 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  27. 6 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  28. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java
  29. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  30. 7 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  31. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/SchoolController.java

+ 0 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -67,7 +67,6 @@ public class UserController extends BaseController {
 
 	@ApiOperation(value = "根据用户编号获取用户基本信息")
 	@GetMapping("/getBasic")
-    @PreAuthorize("@pcs.hasPermissions('user/getBasic')")
 	public Object getBasic(Integer userId) {
 		if (userId == null) {
 			return failed("参数校验异常");

+ 21 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
@@ -21,7 +22,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     /**
      * 根据教师ID获取当前课程信息
      *
-     * @param teacherID
+     * @param courseID
      * @return
      */
     TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
@@ -47,22 +48,22 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     Integer[] countStudentInClass(List<Integer> classGroupIDs);
 
     /**
-     * @param courseScheduleIds: 课程编号列表
-     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
      * @describe 根据课程编号列表获取课程列表
      * @author Joburgess
      * @date 2019/10/22
+     * @param courseScheduleIds: 课程编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
      */
-    List<CourseSchedule> findByCourseScheduleIds(List<Long> courseScheduleIds);
+    List<CourseSchedule> findByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
     /**
-     * @param courseScheduleIds: 课程编号列表
-     * @return java.util.List<java.util.Map < java.lang.Integer, java.lang.Integer>>
      * @describe 根据课程编号列表获取助教列表
      * @author Joburgess
      * @date 2019/10/23
+     * @param courseScheduleIds: 课程编号列表
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
-    List<CourseScheduleTeacherSalary> findTeachingTeachers(List<Long> courseScheduleIds);
+    List<CourseScheduleTeacherSalary> findTeachingTeachers(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
     /**
      * @Author: Joburgess
@@ -370,14 +371,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseSchedule> findCourseScheduleByClassGroupIdAndDate(@Param("classGroupId") Integer classGroupId, @Param("startDate") String startDate, @Param("times") int times);
-
+    
     /**
      * 根据时间范围查询老师指定类型的课程列表
-     *
      * @param teacherId 老师编号
-     * @param type      课程类型 (如果为null,查询所有类型)
+     * @param type 课程类型 (如果为null,查询所有类型)
      * @param startTime 开始时间
-     * @param endTime   结束时间
+     * @param endTime 结束时间
      * @return
      */
     List<CourseSchedule> queryTeacherCourseScheduleListByTimeRangeAndType(@Param("teacherId") Integer teacherId, @Param("type") CourseScheduleType type,
@@ -390,4 +390,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseSchedule> findNoStartCoursesByClassGroupId(@Param("classGroupId") Integer classGroupId);
-}
+
+    /**
+     * @describe 获取点名详情头部信息
+     * @author Joburgess
+     * @date 2019/10/24
+     * @param courseScheduleId: 课程编号
+     * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
+     */
+    CourseAttendanceDetailHeadInfoDto findByCourse(Long courseScheduleId);
+}

+ 18 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.common.dal.BaseDAO;
@@ -79,4 +80,20 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 */
 	List<CourseScheduleTeacherSalary> findByCourseScheduleIdsAndTeacherRole(@Param("courseScheduleIds") List<Integer> courseScheduleIds,
 															 @Param("teacherRole") String teacherRole);
-}
+
+	/**
+	 * @describe 根据课程获取对应乐团结算方式
+	 * @author Joburgess
+	 * @date 2019/10/24
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<java.util.Map<java.lang.String,java.lang.String>>
+	 */
+	List<Map<String,String>> findMusicGroupSettlementTypeByCourse(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
+	 * 乐团详情--课酬调整--课程教师列表
+	 * @param courseScheduleId
+	 * @return
+	 */
+    List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId);
+}

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -84,4 +85,13 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      */
     @Select("SELECT COUNT(*) FROM student_attendance WHERE course_schedule_id_=#{courseScheduleId}")
     int countByCourseSchedule(Long courseScheduleId);
-}
+
+    /**
+     * @describe 根据课程获取最后的点名时间
+     * @author Joburgess
+     * @date 2019/10/24
+     * @param courseScheduleId: 课程编号
+     * @return java.util.Date
+     */
+    Date findLatestAttendanceDate(Long courseScheduleId);
+}

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultMusicGroupSalaryDao.java

@@ -1,10 +1,8 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
-
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -33,4 +31,13 @@ public interface TeacherDefaultMusicGroupSalaryDao extends BaseDAO<Long, Teacher
      * @param salaries
      */
     void batchAdd(@Param("salaries") List<TeacherDefaultMusicGroupSalary> salaries);
-}
+
+    /**
+     * @describe 根据教师获取对应默认课酬
+     * @author Joburgess
+     * @date 2019/10/24
+     * @param userIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary>
+     */
+    List<TeacherDefaultMusicGroupSalary> findByTeacher(@Param("userIds") List<Integer> userIds);
+}

+ 133 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseAttendanceDetailHeadInfoDto.java

@@ -0,0 +1,133 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/24
+ */
+public class CourseAttendanceDetailHeadInfoDto {
+
+    @ApiModelProperty(value = "课程编号")
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
+    @ApiModelProperty(value = "主教教师编号")
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "主教名称")
+    private String teacherName;
+
+    @ApiModelProperty(value = "上课日期")
+    private Date classDate;
+
+    @ApiModelProperty(value = "上课日期")
+    private Date startClassTime;
+
+    @ApiModelProperty(value = "结束日期")
+    private Date endClassTime;
+
+    @ApiModelProperty(value = "最后点名时间")
+    private Date latestAttendanceTime;
+
+    @ApiModelProperty(value = "到课学生数量")
+    private Integer studentNum;
+
+    @ApiModelProperty(value = "请假人数")
+    private Integer leaveStudentNum;
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public Long getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Long classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(Date startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public Date getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(Date endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public Date getLatestAttendanceTime() {
+        return latestAttendanceTime;
+    }
+
+    public void setLatestAttendanceTime(Date latestAttendanceTime) {
+        this.latestAttendanceTime = latestAttendanceTime;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public Integer getLeaveStudentNum() {
+        return leaveStudentNum;
+    }
+
+    public void setLeaveStudentNum(Integer leaveStudentNum) {
+        this.leaveStudentNum = leaveStudentNum;
+    }
+}

+ 75 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleTeachersDto.java

@@ -0,0 +1,75 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class CourseScheduleTeachersDto{
+
+    @ApiModelProperty(value = "教师编号",required = false)
+    private String teacherId;
+
+    @ApiModelProperty(value = "课程编号",required = false)
+    private String courseScheduleId;
+
+    @ApiModelProperty(value = "教师名称",required = false)
+    private String teacherName;
+
+    @ApiModelProperty(value = "教师角色",required = false)
+    private String teacherRole;
+
+    @ApiModelProperty(value = "课酬",required = false)
+    private BigDecimal expectSalary;
+
+    @ApiModelProperty(value = "补贴",required = false)
+    private BigDecimal subsidy;
+
+    public String getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(String teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(String courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherRole() {
+        return teacherRole;
+    }
+
+    public void setTeacherRole(String teacherRole) {
+        this.teacherRole = teacherRole;
+    }
+
+    public BigDecimal getExpectSalary() {
+        return expectSalary;
+    }
+
+    public void setExpectSalary(BigDecimal expectSalary) {
+        this.expectSalary = expectSalary;
+    }
+
+    public BigDecimal getSubsidy() {
+        return subsidy;
+    }
+
+    public void setSubsidy(BigDecimal subsidy) {
+        this.subsidy = subsidy;
+    }
+}

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupCourseScheduleDto.java

@@ -16,6 +16,16 @@ public class MusicGroupCourseScheduleDto {
     @ApiModelProperty(value = "上课时间",required = false)
     private String startClassTime;
 
+    @ApiModelProperty(value = "上课时间字符串",required = false)
+    private String startClassTimeStr;
+
+    @ApiModelProperty(value = "结束时间",required = false)
+    private String endClassTime;
+
+    @ApiModelProperty(value = "结束时间字符串",required = false)
+    private String endClassTimeStr;
+
+
     @ApiModelProperty(value = "合奏班编号",required = false)
     private Integer mixClassGroupId;
 
@@ -52,6 +62,30 @@ public class MusicGroupCourseScheduleDto {
     @ApiModelProperty(value = "老师人数",required = false)
     private Integer teacherNum;
 
+    public String getStartClassTimeStr() {
+        return startClassTimeStr;
+    }
+
+    public void setStartClassTimeStr(String startClassTimeStr) {
+        this.startClassTimeStr = startClassTimeStr;
+    }
+
+    public String getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(String endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public String getEndClassTimeStr() {
+        return endClassTimeStr;
+    }
+
+    public void setEndClassTimeStr(String endClassTimeStr) {
+        this.endClassTimeStr = endClassTimeStr;
+    }
+
     public Integer getTeacherNum() {
         return teacherNum;
     }

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Teacher.java

@@ -54,7 +54,6 @@ public class Teacher extends SysUser {
 	private String subjectId;
 
 	/** 专业技能(支持多个,用|分隔),对应科目表编号 */
-	@ApiModelProperty(value = "专业技能(支持多个,用逗号分隔),对应科目表名称", required = false)
 	private List<String> subjectName;
 
 	/** 入职时间 */
@@ -73,6 +72,10 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "流动范围(多个用逗号分开)", required = false)
 	private String flowOrganRange;
 
+	/** 流动范围(多个用|分开) */
+	@ApiModelProperty(value = "流动范围编号", required = false)
+	private String flowOrganRangeId;
+
 	@ApiModelProperty(value = "老师介绍", required = false)
 	private String introduction;
 
@@ -85,9 +88,16 @@ public class Teacher extends SysUser {
 	@ApiModelProperty(value = "离职时间", required = false)
 	private Date demissionDate;
 
-	@ApiModelProperty(value = "老师教学点列表", required = false)
 	private List<School> teacherSchools;
 
+	public String getFlowOrganRangeId() {
+		return flowOrganRangeId;
+	}
+
+	public void setFlowOrganRangeId(String flowOrganRangeId) {
+		this.flowOrganRangeId = flowOrganRangeId;
+	}
+
 	public List<School> getTeacherSchools() {
 		return teacherSchools;
 	}

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
@@ -30,4 +31,12 @@ public interface ClassGroupTeacherMapperService extends BaseService<Long, ClassG
      */
     boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception;
 
+    /**
+     * @describe 创建乐团课单节课对应课次
+     * @author Joburgess
+     * @date 2019/10/24
+     * @param courseSchedules: 课程计划列表
+     * @return void
+     */
+    void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules);
 }

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
@@ -11,7 +13,6 @@ import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
 import java.util.List;
@@ -189,6 +190,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	PageInfo queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
 
 	/**
+	 * @describe 获取点名详情界面头部信息
+	 * @author Joburgess
+	 * @date 2019/10/24
+	 * @param courseScheduleId: 课程编号
+	 * @return com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto
+	 */
+    CourseAttendanceDetailHeadInfoDto findCourseAttendanceDetailHeadInfo(Long courseScheduleId);
+
+	/**
 	 * @describe 检测指定乐团下所有班级是否已排课
 	 * @author Joburgess
 	 * @date 2019/10/18
@@ -213,4 +223,4 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * @return
      */
     List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId);
-}
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -8,6 +8,7 @@ import java.util.Set;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.entity.ApprovalStatus;
@@ -150,4 +151,11 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 */
 	List<MusicGroup> queryListByIds(Set<String> musicGroupIds);
+
+	/**
+	 * 乐团详情--课酬调整--课程教师列表
+	 * @param courseScheduleId
+	 * @return
+	 */
+    List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId);
 }

+ 100 - 96
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -563,6 +563,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             throw new BizException("请登录");
         }
 
+        if(StringUtils.isBlank(type)){
+            throw new BizException("请指定课程类型");
+        }
+
         List<TeacherClassGroupDto> teacherMusicClassGroup;
         switch (type) {
             case "VIP":
@@ -572,7 +576,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue());
                 break;
             default:
-                throw new BizException("请指定课程类型");
+                throw new BizException("课程类型错误");
         }
         if (CollectionUtils.isEmpty(teacherMusicClassGroup)) {
             return teacherMusicClassGroup;
@@ -713,100 +717,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public PageInfo<MusicGroupClassGroupDto> queryMusicGroupClassGroup(QueryInfo queryInfo) {
-        PageInfo<MusicGroupClassGroupDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<>();
-        MapUtil.populateMap(params, queryInfo);
-        List<MusicGroupClassGroupDto> dataList = null;
-        int count = classGroupDao.countMusicGroupClassGroup(params);
-        if (count > 0) {
-            pageInfo.setTotal(count);
-            params.put("offset", pageInfo.getOffset());
-            dataList = classGroupDao.queryMusicGroupClassGroup(params);
-            Set<Integer> classGroups = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
-            String join = StringUtils.join(classGroups, ",");
-            //获取主教老师
-            Map<Integer, String> masterTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "BISHOP"));
-            //获取助教老师
-            Map<Integer, String> subTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"));
-            //获取在读人数
-            Map<Integer, String> studyNums = MapUtil.convertMybatisMap(classGroupDao.countStudyNum(join));
-            //获取退班人数
-            Map<Integer, String> quitNums = MapUtil.convertMybatisMap(classGroupDao.countQuitNum(join));
-            dataList.forEach(e -> {
-                e.setMasterTeacher(masterTeachers.get(e.getClassGroupId()));
-                e.setSubTeacher(subTeachers.get(e.getClassGroupId()));
-                e.setStudyNum(studyNums.get(e.getClassGroupId()));
-                e.setQuitNum(quitNums.get(e.getClassGroupId()));
-            });
-        }
-        if (count == 0) {
-            dataList = new ArrayList<>();
-        }
-        pageInfo.setRows(dataList);
-        return pageInfo;
-    }
-
-    @Override
-    public PageInfo<MusicGroupCourseScheduleDto> queryMusicGroupCourseSchedule(queryMusicGroupCourseScheduleQueryInfo queryInfo) {
-        PageInfo<MusicGroupCourseScheduleDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<>();
-        MapUtil.populateMap(params, queryInfo);
-        List<MusicGroupCourseScheduleDto> dataList = null;
-        int count = classGroupDao.countMusicGroupCourseSchedule(params);
-        if (count > 0) {
-            pageInfo.setTotal(count);
-            params.put("offset", pageInfo.getOffset());
-            dataList = classGroupDao.queryMusicGroupCourseSchedule(params);
-            //获取当前合奏班班级编号列表
-            Set<Integer> mixClassGroupIds = dataList.stream().map(e -> e.getMixClassGroupId()).collect(Collectors.toSet());
-            String mixClassGroupIdsStr = StringUtils.join(mixClassGroupIds, ",");
-            //所有课程编号的列表
-            List<Integer> couseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
-            //获取合奏班名称
-            Map<Integer, String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
-
-            //主教老师
-            List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "BISHOP");
-            Map<Long, CourseScheduleTeacherSalary> courseScheduleBishopTeacherMaps = bishopTeachers.stream().collect(Collectors.toMap(CourseScheduleTeacherSalary::getCourseScheduleId, courseScheduleTeacherSalary -> courseScheduleTeacherSalary));
-
-            //助教老师
-            List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "TEACHING");
-            Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps = teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
-
-            dataList.forEach(e -> {
-                e.setMixClassGroupName(classGroupNames.get(e.getMixClassGroupId()));
-                CourseScheduleTeacherSalary currentBishopTeacher = courseScheduleBishopTeacherMaps.get(e.getCourseScheduleId().longValue());
-                if (!Objects.isNull(currentBishopTeacher)) {
-                    e.setMasterTeacherId(currentBishopTeacher.getUserId());
-                    e.setMasterTeacherName(currentBishopTeacher.getUserName());
-                    e.setTeacherNum(1);
-                }
-
-                List<CourseScheduleTeacherSalary> currentCourseTeachingTeachers = courseScheduleTeachingTeacherMaps.get(e.getCourseScheduleId().longValue());
-                if (CollectionUtils.isEmpty(currentCourseTeachingTeachers)) {
-                    e.setTeachingTeachers(new ArrayList<>());
-                } else {
-                    e.setTeachingTeachers(currentCourseTeachingTeachers);
-                    e.setTeacherNum(e.getTeacherNum() == null ? 0 : e.getTeacherNum() + currentCourseTeachingTeachers.size());
-                }
-
-            });
-        }
-        if (count == 0) {
-            dataList = new ArrayList<>();
-        }
-        pageInfo.setRows(dataList);
-        return pageInfo;
-    }
-
-    @Override
-    public boolean batchIncreaseClassTimes(List<Integer> classGroupList) {
-        classGroupDao.batchIncreaseClassTimes(classGroupList);
-        return true;
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public ClassGroup classGroupAdjust(ClassGroup4MixDto classGroup4MixDto) throws Exception {
         Date date = new Date();
@@ -1091,4 +1001,98 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
         return classGroup;
     }
-}
+
+    @Override
+    public PageInfo<MusicGroupClassGroupDto> queryMusicGroupClassGroup(QueryInfo queryInfo) {
+        PageInfo<MusicGroupClassGroupDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<MusicGroupClassGroupDto> dataList = null;
+        int count = classGroupDao.countMusicGroupClassGroup(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = classGroupDao.queryMusicGroupClassGroup(params);
+            Set<Integer> classGroups = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
+            String join = StringUtils.join(classGroups, ",");
+            //获取主教老师
+            Map<Integer,String> masterTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "BISHOP"));
+            //获取助教老师
+            Map<Integer,String> subTeachers = MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"));
+            //获取在读人数
+            Map<Integer,String> studyNums = MapUtil.convertMybatisMap(classGroupDao.countStudyNum(join));
+            //获取退班人数
+            Map<Integer,String> quitNums = MapUtil.convertMybatisMap(classGroupDao.countQuitNum(join));
+            dataList.forEach(e->{
+                e.setMasterTeacher(masterTeachers.get(e.getClassGroupId()));
+                e.setSubTeacher(subTeachers.get(e.getClassGroupId()));
+                e.setStudyNum(studyNums.get(e.getClassGroupId()));
+                e.setQuitNum(quitNums.get(e.getClassGroupId()));
+            });
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<MusicGroupCourseScheduleDto> queryMusicGroupCourseSchedule(queryMusicGroupCourseScheduleQueryInfo queryInfo) {
+        PageInfo<MusicGroupCourseScheduleDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<MusicGroupCourseScheduleDto> dataList = null;
+        int count = classGroupDao.countMusicGroupCourseSchedule(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = classGroupDao.queryMusicGroupCourseSchedule(params);
+            //获取当前合奏班班级编号列表
+            Set<Integer> mixClassGroupIds = dataList.stream().map(e -> e.getMixClassGroupId()).collect(Collectors.toSet());
+            String mixClassGroupIdsStr = StringUtils.join(mixClassGroupIds, ",");
+            //所有课程编号的列表
+            List<Integer> couseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
+            //获取合奏班名称
+            Map<Integer,String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
+
+            //主教老师
+            List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "BISHOP");
+            Map<Long, CourseScheduleTeacherSalary> courseScheduleBishopTeacherMaps = bishopTeachers.stream().collect(Collectors.toMap(CourseScheduleTeacherSalary::getCourseScheduleId, courseScheduleTeacherSalary -> courseScheduleTeacherSalary));
+
+            //助教老师
+            List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "TEACHING");
+            Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps=teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
+
+            dataList.forEach(e->{
+                e.setMixClassGroupName(classGroupNames.get(e.getMixClassGroupId()));
+                CourseScheduleTeacherSalary currentBishopTeacher = courseScheduleBishopTeacherMaps.get(e.getCourseScheduleId().longValue());
+                if(!Objects.isNull(currentBishopTeacher)){
+                    e.setMasterTeacherId(currentBishopTeacher.getUserId());
+                    e.setMasterTeacherName(currentBishopTeacher.getUserName());
+                    e.setTeacherNum(1);
+                }
+
+                List<CourseScheduleTeacherSalary> currentCourseTeachingTeachers = courseScheduleTeachingTeacherMaps.get(e.getCourseScheduleId().longValue());
+                if(CollectionUtils.isEmpty(currentCourseTeachingTeachers)){
+                    e.setTeachingTeachers(new ArrayList<>());
+                }else{
+                    e.setTeachingTeachers(currentCourseTeachingTeachers);
+                    e.setTeacherNum(e.getTeacherNum()==null?0:e.getTeacherNum() + currentCourseTeachingTeachers.size());
+                }
+
+            });
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+	@Override
+	public boolean batchIncreaseClassTimes(List<Integer> classGroupList) {
+		classGroupDao.batchIncreaseClassTimes(classGroupList);
+		return true;
+	}
+}

+ 42 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -1,28 +1,25 @@
 package com.ym.mec.biz.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, ClassGroupTeacherMapper> implements ClassGroupTeacherMapperService {
@@ -33,6 +30,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     private CourseScheduleService courseScheduleService;
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+    @Autowired
+    private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
 
     @Override
     public BaseDAO<Long, ClassGroupTeacherMapper> getDAO() {
@@ -119,4 +118,32 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         return true;
     }
 
-}
+    @Override
+    public void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules) {
+        //课程编号列表
+        List<Long> courseScheduleIds = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+        //主教老师列表
+        List<Integer> allTeacherIds = courseSchedules.stream().map(courseSchedule -> courseSchedule.getActualTeacherId().intValue()).collect(Collectors.toList());
+        //助教老师列表
+        List<Integer> teachingTeacherIds=new ArrayList<>();
+        courseSchedules.forEach(courseSchedule -> teachingTeacherIds.addAll(courseSchedule.getTeachingTeacherIdList()));
+        allTeacherIds.addAll(teachingTeacherIds);
+        //所有老师列表
+        allTeacherIds=allTeacherIds.stream().distinct().collect(Collectors.toList());
+
+        //所有老师默认乐团课酬
+        List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
+        Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
+
+        //乐团结算方式集合
+        List<Map<String, String>> musicGroupSettlementTypeByCourse = courseScheduleTeacherSalaryDao.findMusicGroupSettlementTypeByCourse(courseScheduleIds);
+        Map<String, String> musicGroupSettilementsMap = MapUtil.convertMybatisMap(musicGroupSettlementTypeByCourse);
+
+        courseSchedules.forEach(courseSchedule -> {
+            if(Objects.isNull(courseSchedule.getType())){
+                throw new BizException("课程类型未指定");
+            }
+
+        });
+    }
+}

+ 28 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -4,6 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.*;
@@ -351,7 +352,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				});
 				List<Integer> repeatClassGroupIds = coursesByDates.stream().map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
 				checkStudentIsRepeat(repeatClassGroupIds);
-				courseScheduleDao.update(newCourseSchedule);
+				oldCourseSchedule.setClassDate(newCourseSchedule.getClassDate());
+				oldCourseSchedule.setStartClassTime(newCourseSchedule.getStartClassTime());
+				oldCourseSchedule.setEndClassTime(newCourseSchedule.getEndClassTime());
+				courseScheduleDao.update(oldCourseSchedule);
 			}
 
 			//被修改的教师编号列表,需要将预计薪水置零
@@ -367,13 +371,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 							courseSchedules,
 							byTeacherAndCategory.getOnlineClassesSalary(),
 							byTeacherAndCategory.getOfflineClassesSalary());
-					beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+					if(Objects.nonNull(oldCourseSchedule.getActualTeacherId())){
+						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+					}
 				}
 			}else{
 				if(Objects.isNull(oldCourseSchedule.getActualTeacherId())||!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())){
 					//如果主教被修改则调整课酬记录
 
-					beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+					if(Objects.nonNull(oldCourseSchedule.getActualTeacherId())){
+						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+					}
 				}
 				List<CourseScheduleTeacherSalary> courseTeachingTeacherList=courseTeachingTeacherMaps.get(newCourseSchedule.getId());
 				//当前设置的课程助教编号列表
@@ -392,12 +400,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						//计算修改后的助教的课酬
 
 
-						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+						if(Objects.nonNull(oldCourseSchedule.getActualTeacherId())){
+							beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
+						}
 					}
 				});
 			}
 			//将被修改的教师预计薪水置零
-			courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalary(newCourseSchedule.getId().intValue(),beReplaceTeacherIds);
+			if(!CollectionUtils.isEmpty(beReplaceTeacherIds)){
+				courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalary(newCourseSchedule.getId().intValue(),beReplaceTeacherIds);
+			}
 		});
 	}
 
@@ -632,6 +644,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	public CourseAttendanceDetailHeadInfoDto findCourseAttendanceDetailHeadInfo(Long courseScheduleId) {
+		if(Objects.isNull(courseScheduleId)){
+			throw new BizException("请指定课程");
+		}
+		CourseAttendanceDetailHeadInfoDto courseAttendanceDetailHeadInfoDto = courseScheduleDao.findByCourse(courseScheduleId);
+		courseAttendanceDetailHeadInfoDto.setLatestAttendanceTime(studentAttendanceDao.findLatestAttendanceDate(courseScheduleId));
+		return courseAttendanceDetailHeadInfoDto;
+	}
+
+	@Override
 	public void checkMusicGroupClassCourse(String musicGroupId) {
 		if(Objects.isNull(musicGroupId)){
 			throw new BizException("请指定乐团");
@@ -655,4 +677,4 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     public List<CourseSchedule> findNoStartCoursesByClassGroupId(Integer classGroupId) {
 		return courseScheduleDao.findNoStartCoursesByClassGroupId(classGroupId);
     }
-}
+}

+ 6 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -3,10 +3,7 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.MusicCardDto;
-import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
-import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.enums.*;
@@ -607,4 +604,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     public List<MusicGroup> queryListByIds(Set<String> musicGroupIds) {
         return musicGroupDao.queryListByIds(musicGroupIds);
     }
+
+    @Override
+    public List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId) {
+        return courseScheduleTeacherSalaryDao.queryTeacherSalary(courseScheduleId);
+    }
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -384,7 +384,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             //学生报名表
             studentRegistrationDao.insert(studentRegistration);
             if (studentRegistration.getClassGroupId() != null) {
-                ClassGroup classGroup = classGroupDao.get(Integer.parseInt(studentRegistration.getClassGroupId()));
+                ClassGroup classGroup = classGroupDao.get(studentRegistration.getClassGroupId());
                 if (classGroup != null) {
                     if (classGroup.getMusicGroupId().equals(studentRegistration.getMusicGroupId())) {
                         throw new Exception("班级录入错误");
@@ -398,7 +398,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     throw new Exception("班级不存在");
                 }
                 //新增班级学生关系
-                classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(Integer.parseInt(studentRegistration.getClassGroupId()), userId));
+                classGroupStudentMapperDao.insert(new ClassGroupStudentMapper(studentRegistration.getClassGroupId(), userId));
                 //乐团学生费用表
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
                 //获取当前月

+ 9 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -77,18 +77,22 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void add(Teacher teacher){
+	public void add(Teacher teacher) throws Exception {
 		SysUser user = sysUserFeignService.queryUserByMobile(teacher.getPhone());
 		if(user != null && user.getId() != null){
-			teacherDao.updateUser(user);
-			Teacher teacher1 = teacherDao.get(user.getId());
+			Integer id = user.getId();
+			Teacher teacher1 = teacherDao.get(id);
 			if(teacher1 == null || teacher1.getId() == null){
-				teacher.setId(user.getId());
+				teacher.setId(id);
+				teacherDao.updateUser(user);
 				teacherDao.insert(teacher);
+			}else {
+				throw new Exception("用户已存在");
 			}
 			return;
 		}
 		teacher.setUserType(SysUserType.TEACHER);
+		teacher.setUsername(teacher.getRealName());
 		teacherDao.addSysUser(teacher);
 		//添加用户现金账户
 		sysUserCashAccountDao.insert(new SysUserCashAccount(teacher.getId(),"CNY"));
@@ -301,6 +305,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			teacher.setTeacherSchools(teacherSchools);
 			//获取流动范围
 			if(StringUtils.isNotEmpty(teacher.getFlowOrganRange())){
+				teacher.setFlowOrganRangeId(teacher.getFlowOrganRange());
 				List<String> organNames = organizationDao.findByOrganIds(teacher.getFlowOrganRange());
 				teacher.setFlowOrganRange(StringUtils.join(organNames,","));
 			}

+ 7 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -111,9 +111,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	        throw new BizException("课时总数不匹配!");
         }
 
-        Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = null;
+		try {
+			courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+		} catch (Exception e) {
+			throw new BizException("教学模式错误");
+		}
 
-	    if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()!=0)
+		if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()!=0)
 				||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&(courseScheduleGroup.get(TeachModeEnum.OFFLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()))){
 	        throw new BizException("线下课课时数量安排有误!");
         }

+ 5 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -486,6 +486,7 @@
             cg.id_ class_group_id_,
             cg.name_ class_group_name_,
             cg.type_,
+            cg.subject_id_list_,
             vg.payment_expire_date_,
             vg.courses_expire_date_,
             vg.single_class_minutes_,
@@ -601,6 +602,9 @@
         <result property="courseScheduleId" column="course_schedule_id_"/>
         <result property="classDate" column="class_date_"/>
         <result property="startClassTime" column="start_class_time_"/>
+        <result property="startClassTimeStr" column="start_class_time_"/>
+        <result property="endClassTime" column="end_class_time_"/>
+        <result property="endClassTimeStr" column="end_class_time_"/>
         <result property="classGroupId" column="class_group_id_"/>
         <result property="mixClassGroupId" column="mix_class_group_id_"/>
         <result property="courseScheduleType" column="course_schedule_type_"/>
@@ -609,7 +613,7 @@
         <result property="signOutStatus" column="sign_out_status_"/>
     </resultMap>
     <select id="queryMusicGroupCourseSchedule" resultMap="MusicGroupCourseScheduleDto">
-        SELECT cs.id_ course_schedule_id_,cs.class_date_,cs.start_class_time_,cs.class_group_id_,
+        SELECT cs.id_ course_schedule_id_,cs.class_date_,cs.start_class_time_,cs.end_class_time_,cs.class_group_id_,
         cs.type_ course_schedule_type_,cs.status_ course_schedule_status_,
         IF(cgr.class_group_id_ IS NULL,cs.class_group_id_,cgr.class_group_id_) mix_class_group_id_,
         IF(ISNULL(ta.sign_in_status_),3,ta.sign_in_status_) sign_in_status_,

+ 36 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -305,9 +305,9 @@
             cs.leave_student_num_,
             cs.schoole_id_
         FROM
-            course_schedule
+            course_schedule cs
             LEFT JOIN course_schedule_teacher_salary csts ON cs.id_= csts.course_schedule_id_ AND csts.teacher_role_='BISHOP'
-        WHERE id_ IN
+        WHERE cs.id_ IN
         <foreach collection="courseScheduleIds" item="id" open="(" close=")" separator=",">
             #{id}
         </foreach>
@@ -384,7 +384,7 @@
         course_schedule_student_payment cssp
 	    LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
         LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
-        LEFT JOIN class_group_student_mapper cgsm ON cgsm.class_group_id_ = cs.class_group_id_
+        LEFT JOIN class_group_student_mapper cgsm ON cgsm.class_group_id_ = cs.class_group_id_ AND cgsm.user_id_=#{studentId}
         WHERE
         cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
         AND cssp.user_id_ = #{studentId}
@@ -938,4 +938,37 @@
     <select id="findNoStartCoursesByClassGroupId" resultMap="CourseSchedule">
         SELECT * FROM course_schedule WHERE class_group_id_ = #{classGroupId} AND status_ = 'NOT_START'
     </select>
+
+    <resultMap id="CourseAttendanceDetailHeadInfoDto" type="com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto">
+        <result property="courseScheduleId" column="course_schedule_id_"/>
+        <result property="classGroupId" column="class_group_id_"/>
+        <result property="classGroupName" column="class_group_name_"/>
+        <result property="teacherId" column="user_id_"/>
+        <result property="teacherName" column="username_"/>
+        <result property="classDate" column="class_date_"/>
+        <result property="startClassTime" column="start_class_time_"/>
+        <result property="endClassTime" column="end_class_time_"/>
+        <result property="latestAttendanceTime" column="leave_student_num_"/>
+        <result property="studentNum" column="student_num_"/>
+    </resultMap>
+
+    <select id="findByCourse" resultMap="CourseAttendanceDetailHeadInfoDto">
+        SELECT
+            cs.id_ course_schedule_id_,
+            cg.id_ class_group_id_,
+            cg.name_ class_group_name_,
+            csts.user_id_,
+            su.username_,
+            cs.student_num_,
+            cs.leave_student_num_,
+            cs.class_date_,
+            cs.start_class_time_,
+            cs.end_class_time_
+        FROM
+            course_schedule cs
+            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_ AND csts.teacher_role_='BISHOP'
+            LEFT JOIN sys_user su ON csts.user_id_=su.id_
+            LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+        WHERE cs.id_=#{courseScheduleId}
+    </select>
 </mapper>

+ 28 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -172,8 +172,35 @@
 		</foreach>
 		AND csts.teacher_role_=#{teacherRole}
 	</select>
+	<select id="findMusicGroupSettlementTypeByCourse" resultType="map">
+		SELECT
+			cs.id_ AS 'key',
+			mg.settlement_type_ AS 'value'
+		FROM
+			course_schedule cs
+			LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+			LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
+		WHERE cs.id_ IN
+		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+			#{courseScheduleId}
+		</foreach>
+	</select>
+
+	<resultMap id="CourseScheduleTeachersDto" type="com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto">
+		<result property="teacherId" column="user_id_"/>
+		<result property="teacherName" column="real_name_"/>
+		<result property="teacherRole" column="teacher_role_"/>
+		<result property="expectSalary" column="expect_salary_"/>
+		<result property="subsidy" column="subsidy_"/>
+	</resultMap>
+    <select id="queryTeacherSalary" resultMap="CourseScheduleTeachersDto">
+		SELECT csts.user_id_,su.real_name_,csts.teacher_role_,csts.expect_salary_,csts.subsidy_
+		FROM course_schedule_teacher_salary csts
+		LEFT JOIN sys_user su ON su.id_ = csts.user_id_
+		WHERE csts.course_schedule_id_ = #{courseScheduleId}
+	</select>
 
-	<update id="batchUpdateWages" parameterType="map">
+    <update id="batchUpdateWages" parameterType="map">
 		UPDATE course_schedule_teacher_salary set
 			subsidy_ = #{subsidy},
 			expect_salary_ = #{salary},

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -230,4 +230,7 @@
         LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
         <include refid="queryCondition"/>
     </select>
+    <select id="findLatestAttendanceDate" resultType="date">
+      SELECT MAX(create_time_) FROM student_attendance WHERE course_schedule_id_=#{courseScheduleId}
+    </select>
 </mapper>

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/TeacherDefaultMusicGroupSalaryMapper.xml

@@ -120,4 +120,12 @@
 		WHERE user_id_=#{userId} AND course_schedule_type_ = #{classGroupType}
 		AND settlement_type_ = #{settlementType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
+
+	<select id="findByTeacher" resultMap="TeacherDefaultMusicGroupSalary">
+		SELECT * FROM teacher_default_music_group_salary
+		WHERE user_id_ IN
+		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+	</select>
 </mapper>

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

@@ -49,7 +49,7 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Teacher">
-        SELECT t.*,su.username_,su.password_,su.salt_,su.phone_,su.avatar_,
+        SELECT t.*,su.real_name_,su.password_,su.salt_,su.phone_,su.avatar_,
         su.lock_flag_,su.del_flag_,su.wx_openid_,su.qq_openid_,su.user_type_,
         su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_
         FROM teacher t

+ 39 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.SchoolService;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
@@ -34,6 +35,9 @@ public class TeacherController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SchoolService schoolService;
+
     @ApiOperation(value = "修改教师个人中心信息")
     @PostMapping("/update")
     public Object update(Teacher teacher) {
@@ -54,6 +58,11 @@ public class TeacherController extends BaseController {
         return succeed(teacherService.getDetail(id));
     }
 
+    @ApiOperation(value = "分页查询教师列表")
+    @GetMapping("/queryPage")
+    public Object queryPage(TeacherQueryInfo queryInfo) {
+        return succeed(teacherService.queryPageDetail(queryInfo));
+    }
 
     @ApiOperation(value = "根据教师编号查询教师课程班列表")
     @GetMapping("/getClass")
@@ -62,6 +71,19 @@ public class TeacherController extends BaseController {
         return succeed(classGroupService.findClassGroup4Teacher(id));
     }
 
+    @ApiOperation(value = "获取老师乐团课程信息列表")
+    @GetMapping("/getTeacherMusicClass")
+    @ApiParam(value = "教师编号", required = true)
+    public Object getTeacherMusicClass(QueryInfo queryInfo){
+        return succeed(classGroupService.getTeacherMusicClass(queryInfo));
+    }
+
+    @ApiOperation(value = "获取老师VIP课程信息列表")
+    @GetMapping("/getTeacherVipClass")
+    public Object getTeacherVipClass(VipClassQueryInfo queryInfo){
+        return succeed(classGroupService.getTeacherVipClass(queryInfo));
+    }
+
     @ApiOperation(value = "获取教师所有聊天群组")
     @GetMapping("/queryTeacherGroups")
     public Object queryTeacherGroups(String search){
@@ -82,4 +104,21 @@ public class TeacherController extends BaseController {
         return succeed(teacherService.queryGroupStudents(sysUser.getId(),search));
     }
 
+    @ApiOperation(value = "获取教师上课结算列表")
+    @GetMapping("/queryCloses")
+    public Object queryCloses(TeacherCloseQueryInfo queryInfo){
+        return succeed(teacherService.queryCloses(queryInfo));
+    }
+
+    @ApiOperation(value = "获取教师上课课酬未结算总额")
+    @GetMapping("/sumTeacherNoPay")
+    public Object findTeacherNoPay(Integer teacherId){
+        return succeed(teacherService.findTeacherNoPay(teacherId));
+    }
+
+    @ApiOperation(value = "获取教师vip课教学点")
+    @GetMapping("/findVipSchoolByTeacher")
+    public Object findVipSchoolByTeacher(@ApiParam(value = "教师编号", required = true) Integer userId){
+        return succeed(schoolService.findVipSchoolByTeacher(userId));
+    }
 }

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -70,6 +70,12 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(scheduleService.queryTeacherClassCourseSchedule(queryInfo));
     }
 
+    @ApiOperation(value = "获取点名详情头部信息")
+    @GetMapping("/queryTeacherClassCourseSchedule")
+    public Object findCourseAttendanceDetailHeadInfo(Long courseScheduleId){
+        return succeed(scheduleService.findCourseAttendanceDetailHeadInfo(courseScheduleId));
+    }
+
     @ApiOperation(value = "根据课程获取当前课程的学生列表")
     @GetMapping("/getCurrentCourseStudents")
     public Object getCurrentCourseStudents(StudentAttendanceQueryInfo queryInfo){

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java

@@ -54,12 +54,12 @@ public class TsignPlugin implements ESealPlugin, InitializingBean, DisposableBea
 		projectconfig.setItsmApiUrl(apisUrl);
 		Result result = ServiceClientManager.registClient(projectconfig, null, null);
 		if (result.getErrCode() != 0) {
-			//throw new ThirdpartyException("e签宝客户端注册失败");
+//			throw new ThirdpartyException("e签宝客户端注册失败");
 		}
 
 		serviceClient = ServiceClientManager.get(projectId);
 		if (serviceClient == null) {
-			//throw new ThirdpartyException("获取e签宝客户端失败");
+//			throw new ThirdpartyException("获取e签宝客户端失败");
 		}
 	}
 

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -215,6 +215,7 @@ public class ClassGroupController extends BaseController {
     @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "班级编号,号分割", required = true, dataType = "String")})
     public HttpResponseResult revisionClassGroup(@RequestBody ClassGroupAdjustDto classGroupAdjustDto) throws Exception {
         //return succeed(classGroupService.classGroupAdjust(classGroupAdjustDto));
+        return null;
     }
 
 }

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

@@ -163,4 +163,11 @@ public class CourseScheduleController extends BaseController {
 		return succeed();
 	}
 
+	@ApiOperation(value = "乐团详情--课酬调整--课程教师列表")
+	@GetMapping("/queryTeacherSalary")
+    @PreAuthorize("@pcs.hasPermissions('course/queryTeacherSalary')")
+	public Object queryTeacherSalary(Integer courseScheduleId) {
+		return succeed(musicGroupService.queryTeacherSalary(courseScheduleId));
+	}
+
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SchoolController.java

@@ -70,6 +70,6 @@ public class SchoolController extends BaseController {
     @ApiOperation(value = "获取教师vip课教学点")
     @GetMapping("/findVipSchoolByTeacher")
     public Object findVipSchoolByTeacher(@ApiParam(value = "教师编号", required = true) Integer userId){
-        return succeed(schoolService.get(userId));
+        return succeed(schoolService.findVipSchoolByTeacher(userId));
     }
 }