瀏覽代碼

Merge remote-tracking branch 'origin/master'

周箭河 5 年之前
父節點
當前提交
b98d1dbf64
共有 40 個文件被更改,包括 529 次插入161 次删除
  1. 14 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChargeTypeSubjectMapperDao.java
  2. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleComplaintsDao.java
  3. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  4. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  5. 3 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  6. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  7. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultVipGroupSalaryDao.java
  8. 16 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java
  9. 24 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ChargeType.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  11. 1 51
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  12. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ChargeTypeService.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  14. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  15. 10 3
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  16. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java
  17. 38 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChargeTypeServiceImpl.java
  18. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  19. 152 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  20. 5 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  21. 60 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  22. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  23. 24 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  24. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  25. 8 1
      mec-biz/src/main/resources/config/mybatis/ChargeTypeMapper.xml
  26. 12 2
      mec-biz/src/main/resources/config/mybatis/ChargeTypeSubjectMapperMapper.xml
  27. 4 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  28. 3 1
      mec-biz/src/main/resources/config/mybatis/CourseHomeworkTemplateMapper.xml
  29. 7 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml
  30. 9 8
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  31. 6 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  32. 11 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  33. 2 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectPlanMapper.xml
  34. 16 8
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  35. 5 5
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  36. 1 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java
  37. 10 26
      mec-web/src/main/java/com/ym/mec/web/controller/ChargeTypeController.java
  38. 6 6
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  39. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  40. 5 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/CourseHomeworkTemplateController.java

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChargeTypeSubjectMapperDao.java

@@ -2,8 +2,21 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.ChargeTypeSubjectMapper;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface ChargeTypeSubjectMapperDao extends BaseDAO<Long, ChargeTypeSubjectMapper> {
 
-	
+    /**
+     * 删除当前收费类型关联的科目
+     */
+    void deleteByChargeTypeId(Integer chargeTypeId);
+
+    /**
+     * 批量新增
+     * @param subjectIds
+     * @param chargeTypeId
+     */
+    void batchAdd(@Param("subjectIds") List<Integer> subjectIds, @Param("chargeTypeId")Integer chargeTypeId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleComplaintsDao.java

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface CourseScheduleComplaintsDao extends BaseDAO<Long, CourseScheduleComplaints> {
 
     /**
@@ -14,5 +16,14 @@ public interface CourseScheduleComplaintsDao extends BaseDAO<Long, CourseSchedul
      * @describe 根据用户和课程获取申诉详情
      */
     CourseScheduleComplaints findByUserAndCourse(@Param("userId") Long userId,@Param("courseScheduleId") Long courseScheduleId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/15
+     * @params [ids]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleComplaints>
+     * @describe 根据课程编号批量获取投诉记录
+     */
+    List<CourseScheduleComplaints> findByCourseScheduleIds(@Param("ids") List<Long> ids);
 	
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -15,5 +16,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @describe 批量插入
      */
     int batchInsert(List<CourseScheduleStudentPayment> courseScheduleStudentPayments);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/15
+     * @params [ids]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment>
+     * @describe 根据课程编号批量获取学生缴费信息
+     */
+    List<CourseScheduleStudentPayment> findByCourseScheduleIds(@Param("ids") List<Long> ids);
 	
 }

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

@@ -27,5 +27,14 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
      */
     List<VipGroupSalaryDto> findVipGroupSalarys(Map<String,Object> params);
     int countVipGroupSalarys(Map<String,Object> params);
-	
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/15
+     * @params [days:天数]
+     * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary>
+     * @describe 获取多少天之前的未结算教师课酬记录
+     */
+    List<CourseScheduleTeacherSalary> findSomeDayAgoTeacherCourseSalaryNoSettlement(Integer days);
+
 }

+ 3 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -34,10 +34,9 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 	 * 根据乐团编号和声部获取缴费学员人数
 	 *
 	 * @param musicGroupId
-	 * @param subjectId
 	 * @return
 	 */
-	Integer countPayNum(@Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId);
+	List<Map<Integer,Integer>> countPayNum(@Param("musicGroupId") String musicGroupId);
 
 	/**
 	 * 学生报名缴费金额详情
@@ -55,16 +54,15 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 	 * @param actualSubjectId 科目id
 	 * @return
 	 */
-	List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+	List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") String actualSubjectId);
 
 	/**
 	 * 获取乐团声部未分配学生数
 	 *
 	 * @param musicGroupId
-	 * @param actualSubjectId
 	 * @return
 	 */
-	Integer getNoClassStuCountBySubjectId(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+	List<Map<Integer,Long>> getNoClassStuCountBySubjectId(@Param("musicGroupId") String musicGroupId);
 
 	/**
 	 * 根据乐团id和user_id 更新

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

@@ -10,6 +10,8 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
@@ -70,4 +72,11 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
     List<Subject> findTeacherSubjects(Long teacherId);
 
     List<ConditionDto> findSubjectConditions();
+
+    /**
+     * 根据声部编号列表获取声部名称map
+     * @param subjectIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNameByIds(@Param("subjectIds") String subjectIds);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultVipGroupSalaryDao.java

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface TeacherDefaultVipGroupSalaryDao extends BaseDAO<Long, TeacherDefaultVipGroupSalary> {
 
     /**

+ 16 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -14,6 +15,9 @@ public class TeacherAttendanceDto {
     @ApiModelProperty(value = "课程计划ID",required = false)
     private Long courseScheduleId;
 
+    @ApiModelProperty(value = "课程名称")
+    private String courseScheduleName;
+
     @ApiModelProperty(value = "上课日期",required = false)
     private java.util.Date classDate;
 
@@ -30,7 +34,7 @@ public class TeacherAttendanceDto {
     private String className;
 
     @ApiModelProperty(value = "班级类型",required = false)
-    private String classType;
+    private ClassGroupTypeEnum classType;
 
     @ApiModelProperty(value = "乐团ID",required = false)
     private Long musicGroupId;
@@ -60,6 +64,14 @@ public class TeacherAttendanceDto {
     @ApiModelProperty(value = "老师可打卡范围,单位米")
     private Integer attendanceRange;
 
+    public String getCourseScheduleName() {
+        return courseScheduleName;
+    }
+
+    public void setCourseScheduleName(String courseScheduleName) {
+        this.courseScheduleName = courseScheduleName;
+    }
+
     public Integer getAttendanceRange() {
         return attendanceRange;
     }
@@ -164,11 +176,12 @@ public class TeacherAttendanceDto {
         this.className = className;
     }
 
-    public String getClassType() {
+
+    public ClassGroupTypeEnum getClassType() {
         return classType;
     }
 
-    public void setClassType(String classType) {
+    public void setClassType(ClassGroupTypeEnum classType) {
         this.classType = classType;
     }
 

+ 24 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ChargeType.java

@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(charge_type):
  */
@@ -36,7 +38,28 @@ public class ChargeType {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	private List<Subject> subjects;
+
+	@ApiModelProperty(value = "声部编号列表",required = false)
+	private List<Integer> subjectIds;
+
+	public List<Integer> getSubjectIds() {
+		return subjectIds;
+	}
+
+	public void setSubjectIds(List<Integer> subjectIds) {
+		this.subjectIds = subjectIds;
+	}
+
+	public List<Subject> getSubjects() {
+		return subjects;
+	}
+
+	public void setSubjects(List<Subject> subjects) {
+		this.subjects = subjects;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}

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

@@ -49,7 +49,7 @@ public class CourseSchedule {
 	private Integer classGroupId;
 
 	/** 课程状态 */
-	@ApiModelProperty(value = "课程状态  NOT_START未开始,SIGN_IN已签到,SIGN_OUT已签退", required = false)
+	@ApiModelProperty(value = "课程状态", required = false)
 	private CourseStatusEnum status;
 
 	/** 补贴 */

+ 1 - 51
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -12,20 +12,12 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
  */
 public class StudentRegistration {
 
-    /**
-     *
-     */
     @ApiModelProperty(value = "报名id", hidden = true)
     private Long id;
 
-    /**
-     *
-     */
     @ApiModelProperty(value = "机构id", hidden = true)
     private Integer organId;
-    /**
-     *
-     */
+
     @ApiModelProperty(value = "学生编号", hidden = true)
     private Integer userId;
 
@@ -38,87 +30,45 @@ public class StudentRegistration {
     @ApiModelProperty(value = "身份证号", required = true)
     private String idCardNo;
 
-    /**
-     * 所属乐团(对应 music_group 表id)
-     */
     @ApiModelProperty(value = "所属乐团(对应 music_group 表id)", required = true)
     private String musicGroupId;
 
-    /**
-     * 当前所在年级
-     */
     @ApiModelProperty(value = "当前所在年级", required = true)
     private String currentGrade;
 
-    /**
-     * 当前所在班级
-     */
     @ApiModelProperty(value = "当前所在班级", required = true)
     private String currentClass;
 
-    /**
-     * 报名科目
-     */
     @ApiModelProperty(value = "报名科目", required = true)
     private Integer subjectId;
 
-    /**
-     * 报名科目
-     */
     @ApiModelProperty(value = "实际科目", hidden = true)
     private Integer actualSubjectId;
 
-    /**
-     * 是否允许调剂
-     */
     @ApiModelProperty(value = "是否允许调剂", required = true)
     private YesOrNoEnum isAllowAdjust;
 
-    /**
-     * 器材购买方式(团购、自备)
-     */
     @ApiModelProperty(value = "器材购买方式(GROUP:团购,OWNED:自备)", required = true)
     private KitPurchaseMethodEnum kitPurchaseMethod;
 
-    /**
-     *
-     */
     @ApiModelProperty(value = "备注", hidden = false)
     private String remark;
 
-    /**
-     *
-     */
     @ApiModelProperty(value = "添加时间", hidden = true)
     private java.util.Date createTime;
 
-    /**
-     *
-     */
     @ApiModelProperty(value = "更新时间", hidden = true)
     private java.util.Date updateTime;
 
-    /**
-     * 家长姓名
-     */
     @ApiModelProperty(value = "家长姓名", required = true)
     private String parentsName;
 
-    /**
-     * 家长姓名
-     */
     @ApiModelProperty(value = "家长电话", required = true)
     private String parentsPhone;
 
-    /**
-     * 家长单位
-     */
     @ApiModelProperty(value = "家长单位", required = false)
     private String parentsCompany;
 
-    /**
-     * 缴费状态(1-已缴费 0-未交费)
-     */
     @ApiModelProperty(value = "缴费状态(1-已缴费 0-未交费)", hidden = true)
     private YesOrNoEnum paymentStatus;
 

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ChargeTypeService.java

@@ -1,8 +1,21 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.ChargeType;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface ChargeTypeService extends BaseService<Integer, ChargeType> {
 
+    /**
+     * 新增、修改收费类型
+     * @param chargeType
+     */
+    void upSet(ChargeType chargeType);
+
+    /**
+     * 删除
+     * @param id
+     */
+    void del(Integer id);
 }

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

@@ -82,7 +82,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
     /**
      * @Author: Joburgess
      * @Date: 2019/9/17
-     * 根据学生获取乐团在该月有课的日期
+     * 获取教师在该月有课的日期
      */
     List<Date> getCourseScheduleDateByTeacher(Date month);
 

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

@@ -25,4 +25,13 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
                                              BigDecimal onlineTeacherSalary,
                                              BigDecimal offlineTeacherSalary);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/15
+     * @params []
+     * @return void
+     * @describe 教师课酬结算
+     */
+    void teacherSalarySettlement();
+
 }

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
@@ -49,16 +50,15 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @param actualSubjectId 科目id
 	 * @return
 	 */
-	List<StudentRegistration> getNoClassStuBySubjectId(String musicGroupId, Integer actualSubjectId);
+	List<Map<String,Object>> getNoClassStuBySubjectId(String musicGroupId, String actualSubjectId);
 
 	/**
 	 * 获取乐团声部未分配学生统计
 	 *
 	 * @param musicGroupId
-	 * @param actualSubjectId
 	 * @return
 	 */
-	Integer getNoClassStuCountBySubjectId(String musicGroupId, Integer actualSubjectId);
+	List<Map<Integer,Long>> getNoClassStuCountBySubjectId(String musicGroupId);
 
 	/**
 	 * 根据user_id 和 乐团id更新
@@ -123,4 +123,11 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @return
 	 */
 	StudentRegistration getByPhoneAndMusicGroupId(String musicGroupId, String parentsPhone);
+
+	/**
+	 * 乐团插入新学员
+	 * @param studentRegistration
+	 * @return
+	 */
+    Integer insertStudent(StudentRegistration studentRegistration) throws Exception;
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -6,6 +6,8 @@ import com.ym.mec.biz.dal.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.Map;
+
 public interface TeacherAttendanceService extends BaseService<Long, TeacherAttendance> {
 
     /**
@@ -13,7 +15,7 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
      * @Date: 2019/9/10
      * 添加教师签到记录
      */
-    void addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto);
+    Map<String, Object> addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto);
 
     /**
      * 获取教师个人的签到记录

+ 38 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChargeTypeServiceImpl.java

@@ -1,5 +1,9 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.dao.ChargeTypeSubjectMapperDao;
+import com.ym.mec.biz.dal.entity.ChargeTypeSubjectMapper;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -8,16 +12,49 @@ import com.ym.mec.biz.dal.entity.ChargeType;
 import com.ym.mec.biz.service.ChargeTypeService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
 
 @Service
 public class ChargeTypeServiceImpl extends BaseServiceImpl<Integer, ChargeType>  implements ChargeTypeService {
 	
 	@Autowired
 	private ChargeTypeDao chargeTypeDao;
+	@Autowired
+	private ChargeTypeSubjectMapperDao chargeTypeSubjectMapperDao;
 
 	@Override
 	public BaseDAO<Integer, ChargeType> getDAO() {
 		return chargeTypeDao;
 	}
-	
+
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void upSet(ChargeType chargeType) {
+		if(chargeType.getId() != null){
+			//修改
+			chargeType.setUpdateTime(new Date());
+			chargeTypeDao.update(chargeType);
+			//删除关联的声部
+			chargeTypeSubjectMapperDao.deleteByChargeTypeId(chargeType.getId());
+			//批量插入关联的声部
+			chargeTypeSubjectMapperDao.batchAdd(chargeType.getSubjectIds(),chargeType.getId());
+		}else {
+			//新增
+			chargeTypeDao.insert(chargeType);
+			//批量插入关联的声部
+			chargeTypeSubjectMapperDao.batchAdd(chargeType.getSubjectIds(),chargeType.getId());
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void del(Integer chargeTypeId) {
+		//删除关联的声部
+		chargeTypeSubjectMapperDao.deleteByChargeTypeId(chargeTypeId);
+		chargeTypeDao.delete(chargeTypeId);
+	}
 }

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

@@ -162,7 +162,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			queryInfo.setDate(new Date());
 		}
 
-		Map<String, Object> params = new HashMap<String, Object>();
+		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 
 		List dataList = null;

+ 152 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1,26 +1,25 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -32,6 +31,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
 	@Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
+	@Autowired
+	private CourseScheduleComplaintsDao courseScheduleComplaintsDao;
+	@Autowired
+	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+	@Autowired
+	private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
 
 	@Override
 	public BaseDAO<Long, CourseScheduleTeacherSalary> getDAO() {
@@ -107,4 +117,136 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 		}
 		return courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
 	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void teacherSalarySettlement() {
+		//获取教师未结算课程记录
+		List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findSomeDayAgoTeacherCourseSalaryNoSettlement(7);
+		if(CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)){
+			LOGGER.info("未获取到未结算课酬记录!");
+		}
+		Date now=new Date();
+		//获取未结算课程编号列表
+		List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
+		//获取未结算课程投诉记录
+		List<CourseScheduleComplaints> courseScheduleComplaints = courseScheduleComplaintsDao.findByCourseScheduleIds(courseScheduleIds);
+		//获取未结算课程学生缴费信息
+		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(courseScheduleIds);
+
+		//根据课程将投诉信息分组
+		Map<Long, List<CourseScheduleComplaints>> complaintsGroupByCourse = courseScheduleComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getCourseScheduleId));
+		//根据课程将学生缴费信息分组
+		Map<Long, List<CourseScheduleStudentPayment>> studentPaymentGroupByCourse = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId));
+
+		//需更新教师课程结算记录
+		List<CourseScheduleTeacherSalary> updateTeacherSalarys=new ArrayList<>();
+		//需更新学生课程缴费记录
+		List<CourseScheduleStudentPayment> updateStudentPayments=new ArrayList<>();
+
+		//用户账户自己变动信息列表
+		List<SysUserCashAccountDetail> userCashAccountDetails=new ArrayList<>();
+
+		//处理课酬信息
+		someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
+			//获取当前课程学生缴费记录
+			List<CourseScheduleStudentPayment> studentPaymentsWithCourse = studentPaymentGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
+			//当前课程缴费学生数量
+			BigDecimal courseStudentNum=new BigDecimal(studentPaymentsWithCourse.size());
+			//教师预计课酬
+			BigDecimal expectSalary=courseScheduleTeacherSalary.getExpectSalary();
+			//当前课程每个学生平均课酬
+			BigDecimal avgSalary=expectSalary.divide(courseStudentNum);
+			//教师当前课程责任总占比,当前课程应得课酬
+			BigDecimal teacherLiabilityAllratio,teacherCourseSalary;
+
+			//当前课程学生投诉记录
+			List<CourseScheduleComplaints> courseStudentComplaints=complaintsGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
+
+			//如果存在投诉记录,需要扣除相应费用
+			if(Objects.nonNull(courseStudentComplaints)){
+				//获取审批中的投诉
+				List<CourseScheduleComplaints> auditIng = courseStudentComplaints.stream().filter(courseScheduleComplaint -> courseScheduleComplaint.getStatus() == AuditStatusEnum.ING).collect(Collectors.toList());
+				if(!CollectionUtils.isEmpty(auditIng)){
+					//如果当前课程存在未处理的投诉,则不做结算处理
+					return;
+				}
+				//计算教师责任总占比
+				double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(CourseScheduleComplaints::getTeacherLiabilityRatio).sum();
+				teacherLiabilityAllratio=new BigDecimal(teacherLiabilityRatioSum);
+			}else{
+				//如果没有投诉,则教师和学生的责任占比为0
+				teacherLiabilityAllratio=new BigDecimal(0);
+			}
+
+			//教师应扣除费用
+			BigDecimal deductPrice=avgSalary.multiply(teacherLiabilityAllratio);
+			//教师实际课酬
+			BigDecimal actualSalary=expectSalary.subtract(deductPrice);
+
+			//更新教师结算信息
+			courseScheduleTeacherSalary.setActualSalary(actualSalary);
+			courseScheduleTeacherSalary.setSettlementTime(now);
+			courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
+			updateTeacherSalarys.add(courseScheduleTeacherSalary);
+
+			//生成教师账户资金变动记录
+			sysUserCashAccountService.updateBalance(courseScheduleTeacherSalary.getUserId(),actualSalary);
+			SysUserCashAccount teacherCashAccount = sysUserCashAccountService.get(courseScheduleTeacherSalary.getUserId().intValue());
+			SysUserCashAccountDetail teacherCashAccountDetail=new SysUserCashAccountDetail();
+			teacherCashAccountDetail.setUserId(courseScheduleTeacherSalary.getUserId());
+			teacherCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+			teacherCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+			teacherCashAccountDetail.setAmount(actualSalary);
+			teacherCashAccountDetail.setBalance(teacherCashAccount.getBalance());
+			teacherCashAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
+
+			userCashAccountDetails.add(teacherCashAccountDetail);
+
+
+			//根据学生进行投诉分组
+			Map<Integer, List<CourseScheduleComplaints>> complainsGroupByStudent = courseStudentComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getUserId));
+
+			//计算学生当前课程应缴费用
+			studentPaymentsWithCourse.forEach(studentPayment -> {
+				//当前课程学生应缴费用
+				BigDecimal studentExpectPrice=studentPayment.getExpectPrice();
+				//当前课程学生责任占比
+				BigDecimal studentLiabilityRatio;
+				List<CourseScheduleComplaints> currentCourseScheduleComplaints = complainsGroupByStudent.get(studentPayment.getUserId());
+				if(CollectionUtils.isEmpty(currentCourseScheduleComplaints)){
+					Double temp=currentCourseScheduleComplaints.get(0).getStudentLiabilityRatio();
+					studentLiabilityRatio=new BigDecimal(temp);
+				}else{
+					studentLiabilityRatio=new BigDecimal(0);
+				}
+
+				//当前课程学生应退费用
+				BigDecimal returnPrice=studentExpectPrice.multiply(studentLiabilityRatio);
+				//当前课程学生实际缴费
+				BigDecimal actualPrice=expectSalary.subtract(returnPrice);
+				//更新学生结算信息
+				studentPayment.setActualPrice(actualPrice);
+				studentPayment.setSettlementTime(now);
+				courseScheduleStudentPaymentDao.update(studentPayment);
+				updateStudentPayments.add(studentPayment);
+
+				//生成学生账户资金变动记录
+				sysUserCashAccountService.updateBalance(studentPayment.getUserId(),returnPrice);
+				SysUserCashAccount studentCashAccount = sysUserCashAccountService.get(studentPayment.getUserId().intValue());
+				SysUserCashAccountDetail studentAccountDetail=new SysUserCashAccountDetail();
+				studentAccountDetail.setUserId(studentPayment.getUserId());
+				studentAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+				studentAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+				studentAccountDetail.setAmount(returnPrice);
+				studentAccountDetail.setBalance(studentCashAccount.getBalance());
+				studentAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
+
+				userCashAccountDetails.add(studentAccountDetail);
+
+			});
+
+		});
+
+	}
 }

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

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GoodsType;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -45,9 +46,11 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     @Override
     public List<MusicGroupSubjectPlan> getMusicSubjectClassPlan(String musicGroupId) {
         List<MusicGroupSubjectPlan> musicSubjectClassPlans = musicGroupSubjectPlanDao.getMusicSubjectClassPlan(musicGroupId);
+        List<Map<Integer, Long>> noClassStuCountBySubjectIds = studentRegistrationService.getNoClassStuCountBySubjectId(musicGroupId);
+        Map<Integer, Long> map = MapUtil.convertMybatisMap(noClassStuCountBySubjectIds);
         for (MusicGroupSubjectPlan musicSubjectClassPlan : musicSubjectClassPlans) {
-            Integer noClassStuCount = studentRegistrationService.getNoClassStuCountBySubjectId(musicGroupId, musicSubjectClassPlan.getSubjectId());
-            musicSubjectClassPlan.setNoClassStudentNum(noClassStuCount);
+            Long aLong = map.get(musicSubjectClassPlan.getSubjectId());
+            musicSubjectClassPlan.setNoClassStudentNum(aLong==null?0:aLong.intValue());
         }
         return musicSubjectClassPlans;
     }

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

@@ -6,12 +6,17 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
+import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.im.ImFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -44,14 +49,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Resource
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
     @Autowired
     private TeacherDao teacherDao;
     @Autowired
+    private SubjectDao subjectDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
 
     @Override
@@ -102,13 +109,31 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentRegistration> getNoClassStuBySubjectId(String musicGroupId, Integer actualSubjectId) {
-        return studentRegistrationDao.getNoClassStuBySubjectId(musicGroupId, actualSubjectId);
+    public List<Map<String,Object>> getNoClassStuBySubjectId(String musicGroupId, String actualSubjectId) {
+        List<StudentRegistration> students = studentRegistrationDao.getNoClassStuBySubjectId(musicGroupId, actualSubjectId);
+        List<Map<String,Object>> mapArrayList = new ArrayList<>();
+        if(students != null && students.size() > 0){
+            String[] subjectIds = actualSubjectId.split(",");
+            if(subjectIds != null && subjectIds.length > 0){
+                List<Map<Integer, String>> subjectNames = subjectDao.queryNameByIds(actualSubjectId);
+                Map<Integer, String> subjectNameMap = MapUtil.convertMybatisMap(subjectNames);
+                for (int i = 0;i<subjectIds.length;i++){
+                    Map<String,Object> resultMap = new HashMap<>(3);
+                    int subjectId = Integer.parseInt(subjectIds[i]);
+                    List<StudentRegistration> collect = students.stream().filter(e -> e.getSubjectId().equals(subjectId)).collect(Collectors.toList());
+                    resultMap.put("subjectId",subjectId);
+                    resultMap.put("subjectName",subjectNameMap.get(subjectId));
+                    resultMap.put("rows",collect);
+                    mapArrayList.add(resultMap);
+                }
+            }
+        }
+        return mapArrayList;
     }
 
     @Override
-    public Integer getNoClassStuCountBySubjectId(String musicGroupId, Integer actualSubjectId) {
-        return studentRegistrationDao.getNoClassStuCountBySubjectId(musicGroupId, actualSubjectId);
+    public List<Map<Integer,Long>> getNoClassStuCountBySubjectId(String musicGroupId) {
+        return studentRegistrationDao.getNoClassStuCountBySubjectId(musicGroupId);
     }
 
     @Override
@@ -324,4 +349,33 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         return studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, parentsPhone);
     }
 
+    @Override
+    public Integer insertStudent(StudentRegistration studentRegistration) throws Exception {
+        StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
+        if(phoneAndMusicGroupId != null){
+            throw new Exception("该学员已存在");
+        }else {
+            SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
+            if(sysUser == null){
+                //新增user
+                sysUser = new SysUser();
+                sysUser.setRealName(studentRegistration.getName());
+                sysUser.setUsername(studentRegistration.getName());
+                sysUser.setGender(studentRegistration.getGender());
+                sysUser.setUserType(SysUserType.STUDENT);
+                teacherDao.addSysUser(sysUser);
+                //注册到融云
+                ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getUsername(), sysUser.getAvatar()));
+                sysUser.setImToken(register.getToken());
+                teacherDao.updateUser(sysUser);
+            }
+            //学生报名表
+            studentRegistrationDao.insert(studentRegistration);
+            //学生注册
+            //缴费金额
+            //学员加入的金额
+        }
+        return null;
+    }
+
 }

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -17,11 +17,13 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -63,10 +65,10 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
     @Override
     public List<SubjectApplyDetailDto> findSubApplyDetail(String musicGroupId) {
         List<SubjectApplyDetailDto> subApplyDetail = subjectDao.findSubApplyDetail(musicGroupId);
-        List<Integer> subjectIds = subApplyDetail.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
-
+        List<Map<Integer, Integer>> payNums = studentRegistrationDao.countPayNum(musicGroupId);
+        Map<Integer, Integer> payNumMap = MapUtil.convertMybatisMap(payNums);
         subApplyDetail.forEach(detail ->{
-            detail.setPayNum(studentRegistrationDao.countPayNum(musicGroupId,detail.getSubjectId()));
+            detail.setPayNum(payNumMap.get(detail.getSubjectId()));
         });
         return subApplyDetail;
     }

+ 24 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -7,7 +7,6 @@ import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherSignOutDto;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -19,7 +18,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
-
+import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,7 +51,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto) {
+	public Map<String, Object> addTeacherAttendanceRecord(TeacherSignOutDto teacherSignOutDto) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if(Objects.isNull(user)){
 			throw new BizException("请登录");
@@ -62,6 +61,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("请选择课程!");
 		}
 
+		Map<String,Object> result=new HashMap<>();
+
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
 
 		if(Objects.isNull(teacherAttendance)){
@@ -80,26 +81,38 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		Date date = new Date();
 		if(teacherAttendance.getStatus()!= SignStatusEnum.SIGN_OUT){
+
+			if (currentCourseDetail.getEndClassTime().before(date)){
+				throw new BizException("该课程已结束,不能进行签到!");
+			}
+
 			Long timeGap=(date.getTime()-currentCourseDetail.getStartClassTime().getTime())/1000/60;
 			if(timeGap<= ParamEnum.TEACHER_ATTENDANCE_TIME_GAP.getCode()){
 				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+				result.put("signInStatus",YesOrNoEnum.YES.getCode());
 			}else{
 				if(StringUtils.isEmpty(teacherAttendance.getRemark())){
 					throw new BizException("当前为异常签到,请填写原因!");
 				}
 				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
+				result.put("signInStatus",YesOrNoEnum.NO.getCode());
 			}
 			teacherAttendance.setSignInTime(date);
-			courseSchedule.setStatus(CourseStatusEnum.UNDERWAY);
 			teacherAttendanceDao.insert(teacherAttendance);
 		}else{
-			teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+			if (currentCourseDetail.getEndClassTime().after(date)){
+				throw new BizException("该课程还未结束,不能进行签退!");
+			}
+			int i = DateUtil.hoursBetween(currentCourseDetail.getEndClassTime(), date);
+			if(i<=1){
+				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+			}else{
+				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
+			}
 			teacherAttendance.setSignOutTime(date);
 			teacherAttendance.setCreateTime(date);
-			courseSchedule.setStatus(CourseStatusEnum.OVER);
 			teacherAttendanceDao.update(teacherAttendance);
 		}
-		courseScheduleDao.update(courseSchedule);
 		if(teacherAttendance.getStatus()==SignStatusEnum.SIGN_OUT){
 			//更新课次
 			ClassGroup classGroup=new ClassGroup();
@@ -117,6 +130,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					courseHomework.getId());
 			studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
 		}
+
+		result.put("currentTime",date);
+
+		return result;
 	}
 
 	@Override

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

@@ -581,7 +581,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		switch (studentApplyRefunds.getStatus()){
 			case PASS:
 				sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount());
-				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getId().intValue());
+				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
 				SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
 				sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
 				sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);

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

@@ -14,6 +14,10 @@
         <result column="course_form_" property="courseForm"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+        <collection property="subjects" ofType="com.ym.mec.biz.dal.entity.Subject">
+            <result property="id" column="subject_id_"/>
+            <result property="name" column="subject_name_"/>
+        </collection>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -63,7 +67,10 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ChargeType" parameterType="map">
-        SELECT * FROM charge_type ORDER BY id_
+        SELECT ct.*,s.id_ subject_id_,s.name_ subject_name_ FROM charge_type ct
+        LEFT JOIN charge_type_subject_mapper ctsm ON ct.id_ = ctsm.charge_type_id_
+        LEFT JOIN `subject` s ON ctsm.subject_id_ = s.id_
+        ORDER BY id_
         <include refid="global.limit"/>
     </select>
 

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

@@ -30,8 +30,14 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ChargeTypeSubjectMapper" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        INSERT INTO charge_type_subject_mapper (id_,charge_type_id_,subject_id_,kit_group_purchase_type_,deposit_fee_,fee_,create_time_,update_time_)
-        VALUES(#{id},#{chargeTypeId},#{subjectId},#{kitGroupPurchaseTypeEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{depositFee},#{fee},now(),now())
+        INSERT INTO charge_type_subject_mapper (charge_type_id_,subject_id_,kit_group_purchase_type_,deposit_fee_,fee_,create_time_,update_time_)
+        VALUES(#{chargeTypeId},#{subjectId},#{kitGroupPurchaseTypeEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{depositFee},#{fee},now(),now())
+    </insert>
+    <insert id="batchAdd">
+        INSERT INTO charge_type_subject_mapper (charge_type_id_,subject_id_,create_time_,update_time_) VALUES
+        <foreach collection="subjectIds" item="item" separator=",">
+            (#{chargeTypeId},#{item},now(),now())
+        </foreach>
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -56,6 +62,10 @@
 		DELETE FROM charge_type_subject_mapper WHERE id_ = #{id} 
 	</delete>
 
+    <delete id="deleteByChargeTypeId">
+        DELETE FROM charge_type_subject_mapper WHERE charge_type_id_ = #{chargeTypeId}
+    </delete>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ChargeTypeSubjectMapper" parameterType="map">
         SELECT * FROM charge_type_subject_mapper ORDER BY id_

+ 4 - 2
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -275,17 +275,19 @@
     <select id="queryCoursePage" resultMap="CourseListDto">
         SELECT * FROM (
             SELECT cg.type_,s.address_,mg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_,cg.teach_mode_
+            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_,cs.teach_mode_
             FROM student_registration sr
             LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
+            LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
             LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
             LEFT JOIN school s ON mg.school_id_ = s.id_
             WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
             UNION ALL
             SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_,cg.teach_mode_
+            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_,cs.teach_mode_
             FROM class_group_student_mapper cgsm
             LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+            LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
             LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
             LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_

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

@@ -75,6 +75,7 @@
 
     <sql id="queryCondition">
         <where>
+            cht.del_flag_ = 0
             <if test="subjectIDs != null">
                 and subject_id_ IN
                 <foreach collection="subjectIDs" item="subjectID" open="(" close=")" separator=",">
@@ -99,7 +100,8 @@
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM course_homework_template
+		SELECT COUNT(*) FROM course_homework_template cht
+        <include refid="queryCondition"/>
 	</select>
 
     <select id="getSubjectIDs" resultType="java.lang.String">

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml

@@ -94,4 +94,11 @@
     <select id="findByUserAndCourse" resultMap="CourseScheduleComplaints">
 		SELECT * FROM course_schedule_complaints WHERE user_id_=#{userId} AND course_schedule_id_=#{courseScheduleId}
     </select>
+
+    <select id="findByCourseScheduleIds" resultMap="CourseScheduleComplaints">
+		SELECT * FROM course_schedule_complaints WHERE course_schedule_id_ IN
+		<foreach collection="ids" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+	</select>
 </mapper>

+ 9 - 8
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -68,7 +68,7 @@
         -->
         INSERT INTO course_schedule
         (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_)
-        VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{actualTeacherId},now(),now(),#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},#{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{teacherId},now(),now(),#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},#{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
 
     <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
@@ -76,7 +76,7 @@
         (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_)
         VALUE
         <foreach collection="list" item="course" separator=",">
-            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.actualTeacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+            (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
         </foreach>
     </insert>
 
@@ -148,6 +148,7 @@
 
     <resultMap type="com.ym.mec.biz.dal.dto.TeacherAttendanceDto" id="TeacherAttendanceViewUtilEntity">
         <result property="courseScheduleId" column="id_"/>
+        <result property="courseScheduleName" column="course_schedule_name_"/>
         <result property="classDate" column="class_date_"/>
         <result property="startClassTime" column="start_class_time_"/>
         <result property="endClassTime" column="end_class_time_"/>
@@ -166,9 +167,10 @@
             resultMap="TeacherAttendanceViewUtilEntity">
         SELECT
             cs.id_ ,
+            cs.name_ course_schedule_name_,
             cs.class_date_,
             CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
-            cs.end_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_ course_status_,
             cg.id_ class_id,
             cg.name_ class_name,
@@ -303,14 +305,14 @@
 	        cs.teach_mode_
         FROM
             course_schedule cs
-            LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
             LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
             LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
             LEFT JOIN school s ON mg.school_id_=s.id_
 	        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
         WHERE
             cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
-            AND cs.teacher_id_ = #{teacherId}
+            AND cs.actual_teacher_id_ = #{teacherId}
     </select>
 
     <select id="getCourseScheduleDateByMonth" resultType="java.util.Date">
@@ -433,10 +435,9 @@
         SELECT
         cs.class_date_
         FROM
-        class_group_student_mapper cgsm
-        LEFT JOIN course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_
+        course_schedule cs
         WHERE
-        cs.teacher_id_ = #{teacherId}
+        cs.actual_teacher_id_ = #{teacherId}
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
         </if>

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -88,4 +88,10 @@ create_time_ = #{createTime},
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM course_schedule_student_payment
 	</select>
+    <select id="findByCourseScheduleIds" resultMap="CourseScheduleStudentPayment">
+		SELECT * FROM course_schedule_student_payment WHERE course_schedule_id_ IN
+		<foreach collection="ids" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+    </select>
 </mapper>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -137,4 +137,15 @@ create_time_ = #{createTime},
 			LEFT JOIN course_schedule cs ON vgcgm.class_group_id_ = cs.class_group_id_
 		<include refid="vipGroupSalaryQueryCondition"/>
 	</select>
+    <select id="findSomeDayAgoTeacherCourseSalaryNoSettlement" resultMap="CourseScheduleTeacherSalary">
+		SELECT
+		cs.class_date_,
+		csts.*
+		FROM
+		course_schedule_teacher_salary csts
+		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+		WHERE
+		CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt;= DATE_ADD( NOW( ), INTERVAL - 7 DAY )
+		AND csts.settlement_time_ IS NULL
+    </select>
 </mapper>

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

@@ -20,6 +20,7 @@
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="version" property="version"/>
+        <result column="sub_name_" property="subName"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -97,7 +98,7 @@
 
     <!-- 查询乐团科目计划表 -->
     <select id="getMusicSubjectClassPlan" resultMap="MusicGroupSubjectPlan">
-        SELECT sp.*, sb.name_
+        SELECT sp.*, sb.name_ sub_name_
         FROM music_group_subject_plan sp
         LEFT JOIN subject sb ON sb.id_ = sp.subject_id_
         WHERE sp.music_group_id_=#{musicGroupId}

+ 16 - 8
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -209,9 +209,9 @@
         <include refid="queryStudentDetailPageSql"/>
     </select>
 
-    <select id="countPayNum" resultType="java.lang.Integer">
-        SELECT COUNT(DISTINCT user_id_) FROM student_registration
-        WHERE music_group_id_ = #{musicGroupId} AND subject_id_ = #{subjectId} AND payment_status_ = 1
+    <select id="countPayNum" resultType="map">
+        SELECT COUNT(DISTINCT user_id_) `value`,subject_id_ `key` FROM student_registration
+        WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = 1 GROUP BY subject_id_
     </select>
 
     <resultMap id="queryFeeDetailMap" type="com.ym.mec.biz.dal.dto.StudentFeeDto">
@@ -226,14 +226,22 @@
 
     <!-- 根据乐团和声部获取未分班的学生 -->
     <select id="getNoClassStuBySubjectId" resultMap="StudentRegistration">
-        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND actual_subject_id_ =
-        #{actualSubjectId} AND class_group_id_ >=1
+        SELECT sr.* FROM student_registration sr
+        WHERE sr.user_id_ NOT IN (
+        SELECT DISTINCT cgsm.user_id_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cg.id_ =  cgsm.class_group_id_
+        WHERE cg.music_group_id_ = #{musicGroupId})
+        AND sr.music_group_id_ = #{musicGroupId} AND FIND_IN_SET(sr.actual_subject_id_,#{actualSubjectId})
     </select>
 
     <!-- 根据乐团和声部获取未分班人数 -->
-    <select id="getNoClassStuCountBySubjectId" resultType="java.lang.Integer">
-        SELECT count(*) FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND actual_subject_id_ =
-        #{actualSubjectId} AND class_group_id_ >=1
+    <select id="getNoClassStuCountBySubjectId" resultType="map">
+        SELECT COUNT(DISTINCT sr.user_id_) `value`,sr.actual_subject_id_ `key` FROM student_registration sr
+        WHERE sr.user_id_ NOT IN (
+        SELECT DISTINCT cgsm.user_id_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cg.id_ =  cgsm.class_group_id_
+        WHERE cg.music_group_id_ = #{musicGroupId})
+        AND sr.music_group_id_ = #{musicGroupId} GROUP BY sr.actual_subject_id_
     </select>
 
     <update id="updateByUserIdAndMusicGroupId" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">

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

@@ -122,15 +122,15 @@
     </select>
 
     <select id="findTeacherSubjects" resultMap="Subject">
-        SELECT
-            s.*
-        FROM
-            teacher t
+        SELECT s.* FROM teacher t
             LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
             WHERE t.id_=#{teacherId}
     </select>
     <select id="findSubjectConditions" resultType="com.ym.mec.biz.dal.dto.ConditionDto">
-      select id_ id,name_ name from subject where parent_subject_id_=0
+      select id_ id,name_ `name` from subject where parent_subject_id_=0
+    </select>
+    <select id="queryNameByIds" resultType="java.util.Map">
+        select id_ `key`,name_ `value` FROM `subject` s WHERE FIND_IN_SET(s.id_,#{subjectIds})
     </select>
 
     <sql id="querySubPageSql">

+ 1 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java

@@ -26,8 +26,7 @@ public class TeacherAttendanceController extends BaseController {
     @ApiOperation(value = "新增教师签到")
     @PostMapping("/add")
     public Object add(@RequestBody TeacherSignOutDto teacherSignOutDto) {
-        teacherAttendanceService.addTeacherAttendanceRecord(teacherSignOutDto);
-        return succeed();
+        return succeed(teacherAttendanceService.addTeacherAttendanceRecord(teacherSignOutDto));
     }
 
     @ApiOperation(value = "分页查询教师签到列表")

+ 10 - 26
mec-web/src/main/java/com/ym/mec/web/controller/ChargeTypeController.java

@@ -1,22 +1,14 @@
 package com.ym.mec.web.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-
-import java.util.Date;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.ym.mec.biz.dal.entity.ChargeType;
 import com.ym.mec.biz.service.ChargeTypeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 @RequestMapping("chargeType")
 @Api(tags = "收费类型服务")
@@ -26,25 +18,17 @@ public class ChargeTypeController extends BaseController {
     @Autowired
     private ChargeTypeService chargeTypeService;
 
-    @ApiOperation(value = "新增收费类型")
-    @PostMapping("/add")
-    public Object add(ChargeType chargeType) {
-        chargeTypeService.insert(chargeType);
+    @ApiOperation(value = "新增、修改收费类型")
+    @PostMapping("/upSet")
+    public Object upSet(@RequestBody ChargeType chargeType) {
+        chargeTypeService.upSet(chargeType);
         return succeed();
     }
 
     @ApiOperation(value = "删除收费类型")
     @PostMapping("/del/{id}")
     public Object del(@ApiParam(value = "收费类型编号", required = true) @PathVariable("id") Integer id) {
-        chargeTypeService.delete(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改收费类型")
-    @PostMapping("/update")
-    public Object update(ChargeType chargeType) {
-        chargeType.setUpdateTime(new Date());
-        chargeTypeService.update(chargeType);
+        chargeTypeService.del(id);
         return succeed();
     }
 

+ 6 - 6
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -29,10 +29,10 @@ public class StudentRegistrationController extends BaseController {
     @Autowired
     private StudentRegistrationService studentRegistrationService;
 
-    @ApiOperation(value = "新增学生报名信息")
-    @PostMapping("/add")
-    public Object add(StudentRegistration studentRegistration) {
-        studentRegistrationService.insert(studentRegistration);
+    @ApiOperation(value = "乐团添加学员")
+    @PostMapping("/insertStudent")
+    public Object add(StudentRegistration studentRegistration) throws Exception {
+        studentRegistrationService.insertStudent(studentRegistration);
         return succeed();
     }
 
@@ -80,8 +80,8 @@ public class StudentRegistrationController extends BaseController {
     @ApiOperation(value = "获取未分班的学生")
     @GetMapping("/getNoClassStu")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id", required = true, dataType = "int")})
-    public Object getNoClassStuBySubjectId(String musicGroupId, Integer actualSubjectId) {
+            @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id,多个逗号分开", required = true, dataType = "String")})
+    public Object getNoClassStuBySubjectId(String musicGroupId, String actualSubjectId) {
         return succeed(studentRegistrationService.getNoClassStuBySubjectId(musicGroupId, actualSubjectId));
     }
 

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

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysMenu;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;

+ 5 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/CourseHomeworkTemplateController.java

@@ -11,6 +11,8 @@ import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Objects;
+
 /**
  * @Author Joburgess
  * @Date 2019/9/18
@@ -42,6 +44,9 @@ public class CourseHomeworkTemplateController extends BaseController {
     @ApiOperation(value = "修改作业模板")
     @PostMapping("/update")
     public Object update(CourseHomeworkTemplate courseHomeworkTemplate){
+        if(Objects.isNull(courseHomeworkTemplate.getId())){
+            return failed("请指定作业模板");
+        }
         courseHomeworkTemplateService.update(courseHomeworkTemplate);
         return succeed();
     }