Преглед изворни кода

Merge branch 'online1' into edu_financial

周箭河 пре 4 година
родитељ
комит
617ee199c3
100 измењених фајлова са 4667 додато и 86 уклоњено
  1. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganLinkmanDao.java
  3. 49 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  4. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
  5. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  6. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupNewsDao.java
  7. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPerformanceDao.java
  8. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuestionnaireDao.java
  9. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupTrainPlanDao.java
  10. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoAlbumDao.java
  11. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoDao.java
  12. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireUserResultDao.java
  13. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java
  14. 25 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  15. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleRateDto.java
  16. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java
  17. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupBasicDto.java
  18. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentAttendanceViewDto.java
  19. 161 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentRegisterInstrumentsDetailDto.java
  20. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java
  21. 46 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WaitCourseTrainPlanDto.java
  22. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java
  23. 81 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrganLinkman.java
  24. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  25. 137 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupNews.java
  26. 170 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPerformance.java
  27. 125 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuestionnaire.java
  28. 114 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlan.java
  29. 118 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlanSaveDto.java
  30. 125 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Photo.java
  31. 150 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/PhotoAlbum.java
  32. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireUserResult.java
  33. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java
  34. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java
  35. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/QuestionnaireActiveTypeEnum.java
  36. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/YesOrNoEnum.java
  37. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java
  38. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPerformanceQueryInfo.java
  39. 51 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupRecordStudentQueryInfo.java
  40. 76 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/PhotoQueryInfo.java
  41. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  42. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganLinkmanService.java
  43. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  44. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupNewsService.java
  45. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPerformanceService.java
  46. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupQuestionnaireService.java
  47. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  48. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupTrainPlanService.java
  49. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PhotoAlbumService.java
  50. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PhotoService.java
  51. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentActivityService.java
  52. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  53. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java
  54. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  55. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  56. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganLinkmanServiceImpl.java
  57. 48 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java
  58. 47 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  59. 79 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  60. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupNewsServiceImpl.java
  61. 81 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPerformanceServiceImpl.java
  62. 107 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupQuestionnaireServiceImpl.java
  63. 65 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  64. 184 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupTrainPlanServiceImpl.java
  65. 59 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PhotoAlbumServiceImpl.java
  66. 97 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PhotoServiceImpl.java
  67. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireUserResultServiceImpl.java
  68. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentActivityServiceImpl.java
  69. 11 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  70. 26 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  71. 118 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  72. 18 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  73. 2 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  74. 123 0
      mec-biz/src/main/resources/config/mybatis/CooperationOrganLinkmanMapper.xml
  75. 4 0
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  76. 80 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  77. 25 3
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  78. 34 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  79. 100 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupNewsMapper.xml
  80. 135 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPerformanceMapper.xml
  81. 90 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuestionnaireMapper.xml
  82. 196 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupTrainPlanMapper.xml
  83. 156 0
      mec-biz/src/main/resources/config/mybatis/PhotoAlbumMapper.xml
  84. 128 0
      mec-biz/src/main/resources/config/mybatis/PhotoMapper.xml
  85. 28 6
      mec-biz/src/main/resources/config/mybatis/QuestionnaireUserResultMapper.xml
  86. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  87. 33 0
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  88. 3 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  89. 78 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  90. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  91. 79 0
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupDetailController.java
  92. 81 0
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRecordController.java
  93. 34 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java
  94. 0 1
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  95. 13 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java
  96. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java
  97. 29 0
      mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganLinkmanController.java
  98. 67 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupNewsController.java
  99. 89 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPerformanceController.java
  100. 77 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuestionnaireController.java

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
 import com.ym.mec.biz.dal.dto.ConditionDto;
 import com.ym.mec.biz.dal.dto.CourseListDto;
 import com.ym.mec.biz.dal.dto.HighClassGroupDto;
+import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.MusicGroupClassGroupDto;
 import com.ym.mec.biz.dal.dto.MusicGroupCourseScheduleDto;
 import com.ym.mec.biz.dal.dto.StudentPayInfoDto;
@@ -456,6 +457,15 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ConditionDto> queryStudentClassGroup(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
 
     /**
+     * 获取学员班级列表
+     *
+     * @param musicGroupId
+     * @param studentId
+     * @return
+     */
+    List<ClassGroup> queryStudentClassGroups(@Param("musicGroupId") String musicGroupId, @Param("studentId") Integer studentId);
+
+    /**
      * 批量新增班级上的课次数
      *
      * @param classGroupList
@@ -836,4 +846,6 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<Long> queryGroupClassGroupIds(Integer userId);
 
     int countCourseNum(@Param("classGroupId") Integer classGroupId, @Param("teachMode") String teachMode);
+    
+    List<Mapper> countTeacherByMusicGroupId(String musicGroupId);
 }

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganLinkmanDao.java

@@ -0,0 +1,39 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+
+public interface CooperationOrganLinkmanDao extends BaseDAO<Integer, CooperationOrganLinkman> {
+
+	/**
+	 * 批量新增
+	 * @param cooperationOrganLinkmanList
+	 * @return
+	 */
+	long batchInsert(List<CooperationOrganLinkman> cooperationOrganLinkmanList);
+
+	/**
+	 * 批量修改
+	 * @param cooperationOrganLinkmanList
+	 * @return
+	 */
+	int batchUpdate(@Param("cooperationOrganLinkmans") List<CooperationOrganLinkman> cooperationOrganLinkmanList);
+
+	/**
+	 * 根据合作单位编号查询联系人
+	 * @param cooperationOrganId
+	 * @return
+	 */
+	List<CooperationOrganLinkman> queryByCooperationOrganId(Integer cooperationOrganId);
+
+	/**
+	 * 根据合作单位删除记录
+	 * @param cooperationOrganId
+	 * @return
+	 */
+	int deleteByCooperationOrganId(Integer cooperationOrganId);
+}

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

@@ -1118,6 +1118,24 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Map<Integer, Long>> countPreTotalNumByClassGroupId(@Param("classGroupIds") List<Integer> classGroupIds);
 
     /**
+     * 根据班级编号count总课时
+     *
+     * @param classGroupIds
+     * @return
+     */
+    List<Map<Integer, Long>> countTotalNumByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds,
+                                                         @Param("startClassDate") Date startClassDate,
+                                                         @Param("endClassDate") Date endClassDate);
+
+    /**
+     * 根据班级编号获取课程类型
+     *
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<String> queryCourseTypeByClassGroupIds(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
      * 根据班级编号count当前课时(已上总数)
      *
      * @param classGroupIds
@@ -1126,6 +1144,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Map<Integer, Long>> countExpendNumByClassGroupId(@Param("classGroupIds") List<Integer> classGroupIds);
 
     /**
+     * 根据班级编号count当前课时(已上总数)
+     *
+     * @param classGroupIds
+     * @return
+     */
+    List<Map<Integer, Long>> countExpendNumByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds,
+                                                           @Param("startClassDate") Date startClassDate,
+                                                           @Param("endClassDate") Date endClassDate);
+
+    /**
      * 根据班级编号count剩余课时(未上)
      *
      * @param classGroupIds
@@ -1907,4 +1935,25 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     int queryOverPreCourseListByMusicGroupId(String musicGroupId);
+
+    /**
+     * 获取课程时间列表
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<String> queryClassDateList(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 统计班级内指定类型的课程数量
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    int countCourseByClassAndType(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 获取当前课程在该学期的排序号
+     * @param schoolTerm
+     * @return
+     */
+    int getCourseNumNo(@Param("schoolTerm") MusicGroupTrainPlanSaveDto schoolTerm);
 }

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -148,14 +148,20 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
                                                 @Param("courseStatus") CourseStatusEnum courseStatus);
 
     List<IndexBaseMonthData> getGroupCourseDataWithGroup(@Param("dayStr") String dayStr,
-                                                @Param("groupType")GroupType groupType,
-                                                @Param("courseStatus") CourseStatusEnum courseStatus,
-                                                         @Param("teachMode") TeachModeEnum teachMode);
+                                                        @Param("startDate") String startDate,
+                                                        @Param("endDate") String endDate,
+                                                        @Param("groupType")GroupType groupType,
+                                                        @Param("courseStatus") CourseStatusEnum courseStatus,
+                                                         @Param("teachMode") TeachModeEnum teachMode,
+                                                         @Param("organIds") List<Integer> organIds);
 
     List<OrganVipGroupCategoryCourseNumDto> getVipGroupCategoryCourseData(@Param("dayStr") String dayStr,
+                                                                          @Param("startDate") String startDate,
+                                                                          @Param("endDate") String endDate,
                                                                           @Param("groupType")GroupType groupType,
                                                                           @Param("courseStatus") CourseStatusEnum courseStatus,
-                                                                          @Param("teachMode") TeachModeEnum teachMode);
+                                                                          @Param("teachMode") TeachModeEnum teachMode,
+                                                                          @Param("organIds") List<Integer> organIds);
 
     int countLessThenThreeClassGroupNum(@Param("organIds") Set<Integer> organIds, @Param("educationUserId") Integer educationUserId);
 

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

@@ -21,6 +21,13 @@ import java.util.Set;
 public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     MusicGroup getLocked(String id);
+    
+    /**
+     * 查询乐团基本信息
+     * @param id
+     * @return
+     */
+    MusicGroupBasicDto queryBasicInfo(String id);
 
     /**
      * 获取学员所在乐团详情列表
@@ -451,4 +458,6 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<MusicMemberDto> queryMusicMemberList(Map<String, Object> params);
+    
+	int updateIsShowRecordOfStudent(@Param("musicGroupId") String musicGroupId, @Param("isShowRecordOfStudent") Boolean isShowRecordOfStudent);
 }

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.MusicGroupNews;
+
+public interface MusicGroupNewsDao extends BaseDAO<Long, MusicGroupNews> {
+
+	
+}

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPerformanceDao.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.MusicGroupPerformance;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MusicGroupPerformanceDao extends BaseDAO<Integer, MusicGroupPerformance> {
+
+
+    List<MusicGroupPerformance> findNoStart(@Param("educationUserId") Integer educationUserId,
+                                            @Param("organIds") String organIds);
+
+    List<MusicGroupPerformance> queryNoStart(Map<String, Object> params);
+
+    int countNoStart(Map<String, Object> params);
+}

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
+
+public interface MusicGroupQuestionnaireDao extends BaseDAO<Integer, MusicGroupQuestionnaire> {
+
+	
+}

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupTrainPlanDao.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.dto.WaitCourseTrainPlanDto;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MusicGroupTrainPlanDao extends BaseDAO<Integer, MusicGroupTrainPlan> {
+
+
+    int add(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 课程数量大于课程规划
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 课程数量小于课程规划
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<String> findAllPlan(Map<String, Object> paramMap);
+
+    int countPlanNum(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<MusicGroupTrainPlan> queryPlan(@Param("schoolTerm") MusicGroupTrainPlanSaveDto schoolTerm);
+}

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoAlbumDao.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.PhotoAlbum;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface PhotoAlbumDao extends BaseDAO<Integer, PhotoAlbum> {
+
+
+    List<Map<Integer,Long>> countTotalNumByAlbumIds(@Param("albumIds") List<Integer> albumIds, @Param("clientShow") YesOrNoEnum clientShow);
+
+    PhotoAlbum findByTypeAndGroupId(@Param("musicGroupId") String musicGroupId, @Param("type") String type);
+
+    void batchUpdate(@Param("photoAlbumList") List<PhotoAlbum> photoAlbumList);
+
+    void deleteByIds(@Param("ids") String ids);
+}

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoDao.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.Photo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface PhotoDao extends BaseDAO<Integer, Photo> {
+
+
+    void deleteByAlbumIds(String albumIds);
+
+    int deleteByIds(@Param("ids") String ids);
+
+    int batchInsert(@Param("photoList") List<Photo> photoList);
+
+    int batchUpdate(@Param("photoList") List<Photo> photoList);
+}

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireUserResultDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.QuestionnaireResultDto;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
@@ -18,11 +19,21 @@ public interface QuestionnaireUserResultDao extends BaseDAO<Long, QuestionnaireU
      */
     int countByTopicId(Integer topicId);
 
-    void delByActiveIdAndUserId(@Param("activityId") Integer activityId, @Param("userId") Integer userId);
+    void delByActiveIdAndUserId(@Param("activityId") Integer activityId,
+                                @Param("userId") Integer userId,
+                                @Param("activeType") String activeType);
 
     void batchInsert1(@Param("questionnaireUserResultList") List<QuestionnaireUserResult> questionnaireUserResultList);
 
     int findDetailCount(Map<String, Object> params);
 
     List<QuestionnaireUserResultDto> queryDetailPage(Map<String, Object> params);
+
+    /**
+     * 获取乐团满意度答案
+     * @param activeId
+     * @param activeType
+     * @return
+     */
+    List<QuestionnaireResultDto> getQuestionResult(@Param("activeId") Integer activeId, @Param("activeType") String activeType);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
 import com.ym.mec.biz.dal.dto.TeacherExercisesServiceDto;
 import com.ym.mec.biz.dal.dto.TeacherServeDto;
+import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
 import com.ym.mec.common.dal.BaseDAO;
@@ -135,4 +136,10 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
                                                                             @Param("teacherIds") List<Integer> teacherIds,
                                                                             @Param("serveType") String serveType);
 
+    List<IndexBaseMonthData> getHomeworkData(@Param("startDay") String startDay,
+                                             @Param("endDay") String endDay,
+                                             @Param("musicGroupId") String musicGroupId,
+                                             @Param("type") String type,
+                                             @Param("studentIds") List<Integer> studentIds);
+
 }

+ 25 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -421,7 +421,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @param userId
      * @return
      */
-    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId);
+    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取学员剩余课程费用
@@ -633,5 +633,28 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
                                                           @Param("educationUserId") Integer educationUserId,
                                                           @Param("organIds") String organIds);
     
-    List<SubjectApplyDetailDto> queryStudentApplyDetail(@Param("musicGroupId") String musicGroupId);
+    /**
+     * 统计指定乐团在读的声部人数
+     * @param musicGroupId
+     * @return
+     */
+    List<Mapper> countStudentWithSubjectByMusicGroupId(String musicGroupId);
+
+    /**
+     * 统计各年级人数
+     * @param musicGroupId
+     * @return
+     */
+    List<Mapper> countStudentWithGradeByMusicGroupId(String musicGroupId);
+    
+    /**
+     * 查询学生报名购买的乐器详情
+     * @param params
+     * @return
+     */
+    List<StudentRegisterInstrumentsDetailDto> queryStudentRegisterInstrumentsDetailList(Map<String, Object> params);
+    
+    int queryStudentRegisterInstrumentsDetailCount(Map<String, Object> params);
+	
+	List<SubjectApplyDetailDto> queryStudentApplyDetail(@Param("musicGroupId") String musicGroupId);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleRateDto.java

@@ -18,6 +18,16 @@ public class CourseScheduleRateDto {
 
     private Boolean isDefault = false;
 
+    private String coursePlan;
+
+    public String getCoursePlan() {
+        return coursePlan;
+    }
+
+    public void setCoursePlan(String coursePlan) {
+        this.coursePlan = coursePlan;
+    }
+
     public Boolean getIsDefault() {
         return isDefault;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java

@@ -42,6 +42,9 @@ public class MusicCardDto {
 
     @ApiModelProperty(value = "vip课数量",required = true)
     private Integer vipClassNum;
+	
+    @ApiModelProperty(value = "学生端是否展示乐团档案",required = true)
+	private Boolean isShowRecordOfStudent = false;
 
     public String getPaymentStatus() {
         return paymentStatus;
@@ -141,4 +144,12 @@ public class MusicCardDto {
     public void setSubjectId(String subjectId) {
         this.subjectId = subjectId;
     }
+
+	public Boolean getIsShowRecordOfStudent() {
+		return isShowRecordOfStudent;
+	}
+
+	public void setIsShowRecordOfStudent(Boolean isShowRecordOfStudent) {
+		this.isShowRecordOfStudent = isShowRecordOfStudent;
+	}
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupBasicDto.java

@@ -0,0 +1,33 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+
+public class MusicGroupBasicDto extends MusicGroup {
+
+	List<CooperationOrganLinkman> cooperationOrganLinkmanList = new ArrayList<CooperationOrganLinkman>();
+	
+	@ApiModelProperty(value = "衔接老师手机号码",required = false)
+	private String transactionTeacherPhone;
+
+	public List<CooperationOrganLinkman> getCooperationOrganLinkmanList() {
+		return cooperationOrganLinkmanList;
+	}
+
+	public void setCooperationOrganLinkmanList(List<CooperationOrganLinkman> cooperationOrganLinkmanList) {
+		this.cooperationOrganLinkmanList = cooperationOrganLinkmanList;
+	}
+
+	public String getTransactionTeacherPhone() {
+		return transactionTeacherPhone;
+	}
+
+	public void setTransactionTeacherPhone(String transactionTeacherPhone) {
+		this.transactionTeacherPhone = transactionTeacherPhone;
+	}
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentAttendanceViewDto.java

@@ -30,6 +30,9 @@ public class StudentAttendanceViewDto {
     @ApiModelProperty(value = "科目名称",required = false)
     private String subjectName;
 
+    @ApiModelProperty(value = "年级",required = false)
+    private Integer currentGradeNum;
+
     @ApiModelProperty(value = "学生姓名",required = false)
     private String userName;
 
@@ -47,6 +50,14 @@ public class StudentAttendanceViewDto {
 
     private Boolean beMerged;
 
+    public Integer getCurrentGradeNum() {
+        return currentGradeNum;
+    }
+
+    public void setCurrentGradeNum(Integer currentGradeNum) {
+        this.currentGradeNum = currentGradeNum;
+    }
+
     public Boolean getBeMerged() {
         return beMerged;
     }

+ 161 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentRegisterInstrumentsDetailDto.java

@@ -0,0 +1,161 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class StudentRegisterInstrumentsDetailDto {
+
+	@ApiModelProperty(value = "学生编号", required = false)
+	private Integer userId;
+
+	@ApiModelProperty(value = "学生姓名", required = false)
+	private String name;
+
+	@ApiModelProperty(value = "学生手机号码", required = false)
+	private String phone;
+
+	@ApiModelProperty(value = "性别(0,女  1,男", required = false)
+	private Integer gender;
+
+	@ApiModelProperty(value = "当前所在年级", required = false)
+	private Integer currentGradeNum;
+
+	@ApiModelProperty(value = "当前所在年级", required = false)
+	private String currentGrade;
+
+	@ApiModelProperty(value = "实际科目", required = false)
+	private Integer actualSubjectId;
+
+	@ApiModelProperty(value = "实际科目名称", required = false)
+	private String subjectName;
+
+	@ApiModelProperty(value = "乐器名称")
+	private String goodsName;
+
+	@ApiModelProperty(value = "乐器品牌")
+	private String goodsBrand;
+
+	@ApiModelProperty(value = "乐器规格")
+	private String specification;
+
+	private Date goodsBuyTime;
+
+	@ApiModelProperty(value = "乐保开始时间")
+	private Date insuranceStartTime;
+
+	@ApiModelProperty(value = "乐保结束时间")
+	private Date insuranceEndTime;
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public Integer getGender() {
+		return gender;
+	}
+
+	public void setGender(Integer gender) {
+		this.gender = gender;
+	}
+
+	public Integer getCurrentGradeNum() {
+		return currentGradeNum;
+	}
+
+	public void setCurrentGradeNum(Integer currentGradeNum) {
+		this.currentGradeNum = currentGradeNum;
+	}
+
+	public String getCurrentGrade() {
+		return currentGrade;
+	}
+
+	public void setCurrentGrade(String currentGrade) {
+		this.currentGrade = currentGrade;
+	}
+
+	public Integer getActualSubjectId() {
+		return actualSubjectId;
+	}
+
+	public void setActualSubjectId(Integer actualSubjectId) {
+		this.actualSubjectId = actualSubjectId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public String getGoodsName() {
+		return goodsName;
+	}
+
+	public void setGoodsName(String goodsName) {
+		this.goodsName = goodsName;
+	}
+
+	public String getGoodsBrand() {
+		return goodsBrand;
+	}
+
+	public void setGoodsBrand(String goodsBrand) {
+		this.goodsBrand = goodsBrand;
+	}
+
+	public String getSpecification() {
+		return specification;
+	}
+
+	public void setSpecification(String specification) {
+		this.specification = specification;
+	}
+
+	public Date getGoodsBuyTime() {
+		return goodsBuyTime;
+	}
+
+	public void setGoodsBuyTime(Date goodsBuyTime) {
+		this.goodsBuyTime = goodsBuyTime;
+	}
+
+	public Date getInsuranceStartTime() {
+		return insuranceStartTime;
+	}
+
+	public void setInsuranceStartTime(Date insuranceStartTime) {
+		this.insuranceStartTime = insuranceStartTime;
+	}
+
+	public Date getInsuranceEndTime() {
+		return insuranceEndTime;
+	}
+
+	public void setInsuranceEndTime(Date insuranceEndTime) {
+		this.insuranceEndTime = insuranceEndTime;
+	}
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java

@@ -109,6 +109,17 @@ public class TeacherAttendanceDto {
 
     private Integer enableStudentAttendanceTimeRangeVip;
 
+    @ApiModelProperty(value = "课程规划")
+    private String coursePlan;
+
+    public String getCoursePlan() {
+        return coursePlan;
+    }
+
+    public void setCoursePlan(String coursePlan) {
+        this.coursePlan = coursePlan;
+    }
+
     public int getMemberNum() {
         return memberNum;
     }

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WaitCourseTrainPlanDto.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+
+public class WaitCourseTrainPlanDto {
+
+    private Integer classGroupId;
+
+    private CourseSchedule.CourseScheduleType scheduleType;
+
+    private Integer num;
+
+    private String classGroupName;
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public CourseSchedule.CourseScheduleType getScheduleType() {
+        return scheduleType;
+    }
+
+    public void setScheduleType(CourseSchedule.CourseScheduleType scheduleType) {
+        this.scheduleType = scheduleType;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java

@@ -1,5 +1,8 @@
 package com.ym.mec.biz.dal.entity;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -80,6 +83,8 @@ public class CooperationOrgan {
 
 	@ApiModelProperty(value = "是否全职资源",required = false)
 	private Integer fullJobResource;
+	
+	private List<CooperationOrganLinkman> cooperationOrganLinkmanList = new ArrayList<CooperationOrganLinkman>();
 
 	public String getRealName() {
 		return realName;
@@ -201,6 +206,14 @@ public class CooperationOrgan {
 		this.isEnable = isEnable;
 	}
 
+	public List<CooperationOrganLinkman> getCooperationOrganLinkmanList() {
+		return cooperationOrganLinkmanList;
+	}
+
+	public void setCooperationOrganLinkmanList(List<CooperationOrganLinkman> cooperationOrganLinkmanList) {
+		this.cooperationOrganLinkmanList = cooperationOrganLinkmanList;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 81 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrganLinkman.java

@@ -0,0 +1,81 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(cooperation_organ_linkman):
+ */
+public class CooperationOrganLinkman {
+
+	/**  */
+	private Integer id;
+	
+	/**  */
+	private Integer cooperationOrganId;
+	
+	/** 联系人 */
+	private String linkman;
+	
+	/** 电话 */
+	private String mobileNo;
+	
+	/** 岗位 */
+	private String job;
+	
+	/** 创建时间 */
+	private java.util.Date createTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setCooperationOrganId(Integer cooperationOrganId){
+		this.cooperationOrganId = cooperationOrganId;
+	}
+	
+	public Integer getCooperationOrganId(){
+		return this.cooperationOrganId;
+	}
+			
+	public void setLinkman(String linkman){
+		this.linkman = linkman;
+	}
+	
+	public String getLinkman(){
+		return this.linkman;
+	}
+			
+	public void setMobileNo(String mobileNo){
+		this.mobileNo = mobileNo;
+	}
+	
+	public String getMobileNo(){
+		return this.mobileNo;
+	}
+			
+	public void setJob(String job){
+		this.job = job;
+	}
+	
+	public String getJob(){
+		return this.job;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -179,6 +179,8 @@ public class MusicGroup {
 	private String subjectName;
 
 	private Boolean hasVerifyMusicalList = false;
+	
+	private Boolean isShowRecordOfStudent = false;
 
 	//0云教练1云教练+
 	private Integer cloudTeacherType;
@@ -624,4 +626,12 @@ public class MusicGroup {
 	public void setIsRemedy(Boolean remedy) {
 		isRemedy = remedy;
 	}
+
+	public Boolean getIsShowRecordOfStudent() {
+		return isShowRecordOfStudent;
+	}
+
+	public void setIsShowRecordOfStudent(Boolean isShowRecordOfStudent) {
+		this.isShowRecordOfStudent = isShowRecordOfStudent;
+	}
 }

+ 137 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupNews.java

@@ -0,0 +1,137 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_group_news):
+ */
+public class MusicGroupNews {
+
+	/**  */
+	private Long id;
+	
+	/** 标题 */
+	private String title;
+	
+	/** 状态(1-可见 0-不可见) */
+	private YesOrNoEnum status = YesOrNoEnum.YES;
+	
+	/** 链接地址 */
+	private String linkUrl;
+	
+	/** 顺序号 */
+	private Integer order = 0;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+	
+	/** 作者 */
+	private String author;
+	
+	/** 添加人 */
+	private Integer operatorId;
+
+	/** 添加人 */
+	private String operatorName;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setTitle(String title){
+		this.title = title;
+	}
+	
+	public String getTitle(){
+		return this.title;
+	}
+
+	public YesOrNoEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(YesOrNoEnum status) {
+		this.status = status;
+	}
+
+	public void setLinkUrl(String linkUrl){
+		this.linkUrl = linkUrl;
+	}
+	
+	public String getLinkUrl(){
+		return this.linkUrl;
+	}
+			
+	public void setOrder(Integer order){
+		this.order = order;
+	}
+	
+	public Integer getOrder(){
+		return this.order;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setAuthor(String author){
+		this.author = author;
+	}
+	
+	public String getAuthor(){
+		return this.author;
+	}
+
+	public Integer getOperatorId() {
+		return operatorId;
+	}
+
+	public void setOperatorId(Integer operatorId) {
+		this.operatorId = operatorId;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 170 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPerformance.java

@@ -0,0 +1,170 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.List;
+
+/**
+ * 对应数据库表(music_group_performance):
+ */
+public class MusicGroupPerformance {
+
+	/**  */
+	private Integer id;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+
+	/** 乐团编号 */
+	private String musicGroupName;
+	
+	/** 名称 */
+	private String name;
+
+	private String organName;
+
+	/** 展演曲目名称,逗号分隔 */
+	private List<String> musicScoreNames;
+
+	private String musicScoreName;
+
+	/** 添加人 */
+	private Integer operator;
+
+	//剩余天数
+	private Integer subDay;
+
+	/** 添加人 */
+	private String operatorName;
+	
+	/** 排序 */
+	private Integer order = 1;
+	
+	/** 展演时间 */
+	private java.util.Date startTime;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+
+	public List<String> getMusicScoreNames() {
+		return musicScoreNames;
+	}
+
+	public void setMusicScoreNames(List<String> musicScoreNames) {
+		this.musicScoreNames = musicScoreNames;
+	}
+
+	public String getMusicGroupName() {
+		return musicGroupName;
+	}
+
+	public void setMusicGroupName(String musicGroupName) {
+		this.musicGroupName = musicGroupName;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
+	public Integer getSubDay() {
+		return subDay;
+	}
+
+	public void setSubDay(Integer subDay) {
+		this.subDay = subDay;
+	}
+
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setMusicScoreName(String musicScoreName){
+		this.musicScoreName = musicScoreName;
+	}
+	
+	public String getMusicScoreName(){
+		return this.musicScoreName;
+	}
+			
+	public void setOperator(Integer operator){
+		this.operator = operator;
+	}
+	
+	public Integer getOperator(){
+		return this.operator;
+	}
+			
+	public void setOrder(Integer order){
+		this.order = order;
+	}
+	
+	public Integer getOrder(){
+		return this.order;
+	}
+			
+	public void setStartTime(java.util.Date startTime){
+		this.startTime = startTime;
+	}
+	
+	public java.util.Date getStartTime(){
+		return this.startTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 125 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuestionnaire.java

@@ -0,0 +1,125 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.List;
+
+/**
+ * 对应数据库表(music_group_questionnaire):
+ */
+public class MusicGroupQuestionnaire {
+
+	/**  */
+	private Integer id;
+	
+	/** 问卷编号 */
+	private Integer questionnaireTopicId;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+	
+	/** 调查对象 */
+	private String target;
+	
+	/** 调查人 */
+	private Integer operatorId;
+
+	private String operatorName;
+	
+	/** 调查时间 */
+	private java.util.Date questionTime;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	private List<QuestionnaireUserResult> questionnaireUserResultList;
+
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	public List<QuestionnaireUserResult> getQuestionnaireUserResultList() {
+		return questionnaireUserResultList;
+	}
+
+	public void setQuestionnaireUserResultList(List<QuestionnaireUserResult> questionnaireUserResultList) {
+		this.questionnaireUserResultList = questionnaireUserResultList;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+
+	public Integer getQuestionnaireTopicId() {
+		return questionnaireTopicId;
+	}
+
+	public void setQuestionnaireTopicId(Integer questionnaireTopicId) {
+		this.questionnaireTopicId = questionnaireTopicId;
+	}
+
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setTarget(String target){
+		this.target = target;
+	}
+	
+	public String getTarget(){
+		return this.target;
+	}
+
+	public void setOperatorId(Integer operatorId){
+		this.operatorId = operatorId;
+	}
+	
+	public Integer getOperatorId(){
+		return this.operatorId;
+	}
+			
+	public void setQuestionTime(java.util.Date questionTime){
+		this.questionTime = questionTime;
+	}
+	
+	public java.util.Date getQuestionTime(){
+		return this.questionTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 114 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlan.java

@@ -0,0 +1,114 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_group_train_plan):
+ */
+public class MusicGroupTrainPlan {
+
+	/**  */
+	private Integer id;
+	
+	/**  */
+	private String musicGroupId;
+	
+	/**  */
+	private Integer classGroupId;
+	
+	/**  */
+	private String courseType;
+	
+	/**  */
+	private String plan;
+	
+	/** 学期开始时间 */
+	private java.util.Date startSchoolTerm;
+	
+	/** 学期截止时间 */
+	private java.util.Date endSchoolTerm;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setClassGroupId(Integer classGroupId){
+		this.classGroupId = classGroupId;
+	}
+	
+	public Integer getClassGroupId(){
+		return this.classGroupId;
+	}
+			
+	public void setCourseType(String courseType){
+		this.courseType = courseType;
+	}
+	
+	public String getCourseType(){
+		return this.courseType;
+	}
+			
+	public void setPlan(String plan){
+		this.plan = plan;
+	}
+	
+	public String getPlan(){
+		return this.plan;
+	}
+			
+	public void setStartSchoolTerm(java.util.Date startSchoolTerm){
+		this.startSchoolTerm = startSchoolTerm;
+	}
+	
+	public java.util.Date getStartSchoolTerm(){
+		return this.startSchoolTerm;
+	}
+			
+	public void setEndSchoolTerm(java.util.Date endSchoolTerm){
+		this.endSchoolTerm = endSchoolTerm;
+	}
+	
+	public java.util.Date getEndSchoolTerm(){
+		return this.endSchoolTerm;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 118 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlanSaveDto.java

@@ -0,0 +1,118 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+
+public class MusicGroupTrainPlanSaveDto {
+	@ApiModelProperty(value = "年份",required = false)
+	private String year;
+
+	@ApiModelProperty(value = "学期0上学期1下学期",required = false)
+	private Integer term;
+
+	@ApiModelProperty(value = "班级",required = false)
+	private Integer classGroupId;
+
+	@ApiModelProperty(value = "课程类型",required = false)
+	private String courseScheduleType;
+
+	@ApiModelProperty(value = "学期开始时间",required = false)
+	private Date startSchoolTerm;
+
+	@ApiModelProperty(value = "学期截止时间",required = false)
+	private Date endSchoolTerm;
+
+	@ApiModelProperty(value = "规划列表",required = false)
+	private List<String> plans;
+
+	@ApiModelProperty(value = "课程组编号",required = false)
+	private String musicGroupId;
+
+	@ApiModelProperty(value = "课程上课时间",required = false)
+	private Date courseClassTime;
+
+	private Boolean studentFlag = false;
+
+	public Boolean getStudentFlag() {
+		return studentFlag;
+	}
+
+	public void setStudentFlag(Boolean studentFlag) {
+		this.studentFlag = studentFlag;
+	}
+
+	public Date getCourseClassTime() {
+		return courseClassTime;
+	}
+
+	public void setCourseClassTime(Date courseClassTime) {
+		this.courseClassTime = courseClassTime;
+	}
+
+	public String getYear() {
+		return year;
+	}
+
+	public void setYear(String year) {
+		this.year = year;
+	}
+
+	public Integer getTerm() {
+		return term;
+	}
+
+	public void setTerm(Integer term) {
+		this.term = term;
+	}
+
+	public Integer getClassGroupId() {
+		return classGroupId;
+	}
+
+	public void setClassGroupId(Integer classGroupId) {
+		this.classGroupId = classGroupId;
+	}
+
+	public String getCourseScheduleType() {
+		return courseScheduleType;
+	}
+
+	public void setCourseScheduleType(String courseScheduleType) {
+		this.courseScheduleType = courseScheduleType;
+	}
+
+	public Date getStartSchoolTerm() {
+		return startSchoolTerm;
+	}
+
+	public void setStartSchoolTerm(Date startSchoolTerm) {
+		this.startSchoolTerm = startSchoolTerm;
+	}
+
+	public Date getEndSchoolTerm() {
+		return endSchoolTerm;
+	}
+
+	public void setEndSchoolTerm(Date endSchoolTerm) {
+		this.endSchoolTerm = endSchoolTerm;
+	}
+
+	public List<String> getPlans() {
+		return plans;
+	}
+
+	public void setPlans(List<String> plans) {
+		this.plans = plans;
+	}
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+}

+ 125 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Photo.java

@@ -0,0 +1,125 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(photo_):
+ */
+public class Photo {
+
+	/**  */
+	private Integer id;
+	
+	/** 相册编号 */
+	private Integer photoAlbumId;
+
+	private String musicGroupId;
+	
+	/** 名称 */
+	private String name;
+	
+	/** 学生端是否展示 */
+	private YesOrNoEnum clientShow = YesOrNoEnum.NO;
+	
+	/** 地址 */
+	private String url;
+	
+	/** 缩略图地址 */
+	private String thumbnailUrl;
+
+	/** 排序 */
+	private Integer order;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setPhotoAlbumId(Integer photoAlbumId){
+		this.photoAlbumId = photoAlbumId;
+	}
+	
+	public Integer getPhotoAlbumId(){
+		return this.photoAlbumId;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setClientShow(YesOrNoEnum clientShow){
+		this.clientShow = clientShow;
+	}
+	
+	public YesOrNoEnum getClientShow(){
+		return this.clientShow;
+	}
+			
+	public void setUrl(String url){
+		this.url = url;
+	}
+	
+	public String getUrl(){
+		return this.url;
+	}
+			
+	public void setThumbnailUrl(String thumbnailUrl){
+		this.thumbnailUrl = thumbnailUrl;
+	}
+	
+	public String getThumbnailUrl(){
+		return this.thumbnailUrl;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 150 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/PhotoAlbum.java

@@ -0,0 +1,150 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.Date;
+
+/**
+ * 对应数据库表(photo_album_):
+ */
+public class PhotoAlbum {
+
+	/**  */
+	private Integer id;
+
+	/**  */
+	private Long photoNum;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+	
+	/** 名称 */
+	private String name;
+	
+	/** 学生端是否展示 */
+	private YesOrNoEnum clientShow = YesOrNoEnum.YES;
+	
+	/** 相册类型DEFAULT,SHOW */
+	private String type = "DEFAULT";
+	
+	/** 封面 */
+	private String coverUrl;
+	
+	/** 封面缩略图 */
+	private String coverThumbnailUrl;
+
+	//排序
+	private Integer order;
+	
+	/**  */
+	private java.util.Date timeLine;
+
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public Date getTimeLine() {
+		return timeLine;
+	}
+
+	public void setTimeLine(Date timeLine) {
+		this.timeLine = timeLine;
+	}
+
+	public Long getPhotoNum() {
+		return photoNum;
+	}
+
+	public void setPhotoNum(Long photoNum) {
+		this.photoNum = photoNum;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+
+	public YesOrNoEnum getClientShow() {
+		return clientShow;
+	}
+
+	public void setClientShow(YesOrNoEnum clientShow) {
+		this.clientShow = clientShow;
+	}
+
+	public void setType(String type){
+		this.type = type;
+	}
+	
+	public String getType(){
+		return this.type;
+	}
+			
+	public void setCoverUrl(String coverUrl){
+		this.coverUrl = coverUrl;
+	}
+	
+	public String getCoverUrl(){
+		return this.coverUrl;
+	}
+			
+	public void setCoverThumbnailUrl(String coverThumbnailUrl){
+		this.coverThumbnailUrl = coverThumbnailUrl;
+	}
+	
+	public String getCoverThumbnailUrl(){
+		return this.coverThumbnailUrl;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

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

@@ -17,7 +17,8 @@ public class QuestionnaireUserResult {
 	/**  */
 	private QuestionnaireActiveTypeEnum activeType;
 
-	/**  */
+	//如果是乐器置换那么是ReplacementInstrumentCooperationId
+	//如果是乐团满意度调查那么是music_group_questionnaire_id
 	private Integer activeId;
 	
 	/**  */

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java

@@ -44,6 +44,10 @@ public class StudentAttendance {
 	private Integer userId;
 
 	/**  */
+	@ApiModelProperty(value = "年级",required = false)
+	private Integer currentGradeNum;
+
+	/**  */
 	@ApiModelProperty(value = "学生姓名",required = false)
 	private String username;
 
@@ -92,6 +96,14 @@ public class StudentAttendance {
 
 	private int normalRemind;
 
+	public Integer getCurrentGradeNum() {
+		return currentGradeNum;
+	}
+
+	public void setCurrentGradeNum(Integer currentGradeNum) {
+		this.currentGradeNum = currentGradeNum;
+	}
+
 	public int getNormalRemind() {
 		return normalRemind;
 	}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java

@@ -19,6 +19,7 @@ public enum IndexErrorType implements BaseEnum<String, IndexErrorType> {
     STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP("STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP", "申请退团学员数"),
     NO_MEMBER_STUDENT_INFO("NO_MEMBER_STUDENT_INFO", "当前共有{0}个乐团共{1}名学员会员已过期"),
     MEMBER_STUDENT_INFO("MEMBER_STUDENT_INFO", "当前共有{0}个乐团共{1}名学员会员即将过期"),
+    MUSIC_GROUP_PERFORMANCE("MUSIC_GROUP_PERFORMANCE", "当前共有{0}个乐团共{1}次展演计划"),
     WAIT_CREATE_PAYMENT_CALENDER("WAIT_CREATE_PAYMENT_CALENDER", "待创建缴费项目"),
     ATTENDANCE_ERR_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员考勤异常"),
     COURSE_TRUANT_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员旷课"),

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/QuestionnaireActiveTypeEnum.java

@@ -3,7 +3,8 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum QuestionnaireActiveTypeEnum implements BaseEnum<String, QuestionnaireActiveTypeEnum> {
-	REPLACEMENT("REPLACEMENT", "乐器置换");
+	REPLACEMENT("REPLACEMENT", "乐器置换"),
+	MUSIC_GROUP_QUESTION("MUSIC_GROUP_QUESTION", "乐团满意度调查");
 
 	private String code;
 

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/YesOrNoEnum.java

@@ -3,8 +3,8 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum YesOrNoEnum implements BaseEnum<Integer, YesOrNoEnum> {
-    YES(1,"是"),
-    NO(0,"否");
+    NO(0,"否"),
+    YES(1,"是");
 
     private Integer code;
     private String msg;

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.common.page.QueryInfo;
+
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -45,6 +46,12 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "上课结束时间")
     private Date endTime;
+
+	@ApiModelProperty(value = "上课时间字符")
+	private String startClassTimeStr;
+
+	@ApiModelProperty(value = "结束时间字符")
+	private String endClassTimeStr;
     
     @ApiModelProperty(value = "课程创建开始时间")
     private Date createStartDate;
@@ -335,4 +342,20 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
     public void setDealEndTime(String dealEndTime) {
         this.dealEndTime = dealEndTime;
     }
+
+	public String getStartClassTimeStr() {
+		return startClassTimeStr;
+	}
+
+	public void setStartClassTimeStr(String startClassTimeStr) {
+		this.startClassTimeStr = startClassTimeStr;
+	}
+
+	public String getEndClassTimeStr() {
+		return endClassTimeStr;
+	}
+
+	public void setEndClassTimeStr(String endClassTimeStr) {
+		this.endClassTimeStr = endClassTimeStr;
+	}
 }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPerformanceQueryInfo.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class MusicGroupPerformanceQueryInfo extends QueryInfo {
+
+    private String musicGroupId;
+
+    private String organId;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+}

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupRecordStudentQueryInfo.java

@@ -0,0 +1,51 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class MusicGroupRecordStudentQueryInfo extends QueryInfo {
+	
+	private String musicGroupId;
+
+	/**  */
+	private Integer subjectId;
+
+	@ApiModelProperty(value = "年级 1-13")
+	private Integer currentGradeNum;
+
+	@ApiModelProperty(value = "是否购买乐保")
+	private Boolean isBuyInstrumentsInsurance;
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Integer subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public Integer getCurrentGradeNum() {
+		return currentGradeNum;
+	}
+
+	public void setCurrentGradeNum(Integer currentGradeNum) {
+		this.currentGradeNum = currentGradeNum;
+	}
+
+	public Boolean getIsBuyInstrumentsInsurance() {
+		return isBuyInstrumentsInsurance;
+	}
+
+	public void setIsBuyInstrumentsInsurance(Boolean isBuyInstrumentsInsurance) {
+		this.isBuyInstrumentsInsurance = isBuyInstrumentsInsurance;
+	}
+}

+ 76 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PhotoQueryInfo.java

@@ -0,0 +1,76 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.page.QueryInfo;
+
+public class PhotoQueryInfo extends QueryInfo {
+	private String type = "DEFAULT";
+
+	private YesOrNoEnum clientShow;
+
+	private Integer photoAlbumId;
+
+	private String musicGroupId;
+
+	private Integer photoId;
+
+	private String timeLine;
+
+	private String year;
+
+	public String getYear() {
+		return year;
+	}
+
+	public void setYear(String year) {
+		this.year = year;
+	}
+
+	public String getTimeLine() {
+		return timeLine;
+	}
+
+	public void setTimeLine(String timeLine) {
+		this.timeLine = timeLine;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public YesOrNoEnum getClientShow() {
+		return clientShow;
+	}
+
+	public void setClientShow(YesOrNoEnum clientShow) {
+		this.clientShow = clientShow;
+	}
+
+	public Integer getPhotoAlbumId() {
+		return photoAlbumId;
+	}
+
+	public void setPhotoAlbumId(Integer photoAlbumId) {
+		this.photoAlbumId = photoAlbumId;
+	}
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getPhotoId() {
+		return photoId;
+	}
+
+	public void setPhotoId(Integer photoId) {
+		this.photoId = photoId;
+	}
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -585,4 +585,6 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param classGroupId
      */
     void cancelPreCourseSchedule(Integer musicGroupSchoolTermCourseDetailId, Integer classGroupId);
+
+    List<ClassGroup> queryStudentClassGroupsAndTeacher(String musicGroupId);
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganLinkmanService.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.service;
+
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+import com.ym.mec.common.service.BaseService;
+
+public interface CooperationOrganLinkmanService extends BaseService<Integer, CooperationOrganLinkman> {
+
+	/**
+	 * 根据合作单位编号获取列表
+	 * @param cooperationOrganId
+	 * @return
+	 */
+	List<CooperationOrganLinkman> queryByCooperationOrganId(Integer cooperationOrganId);
+}

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

@@ -563,7 +563,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param groupId
 	 * @return
 	 */
-	Object getTeacherCourseHeadInfo(GroupType groupType,String groupId,Long courseScheduleId);
+	Map<String,Object> getTeacherCourseHeadInfo(GroupType groupType,String groupId,Long courseScheduleId);
 
 	/**
 	 * 根据课程组获取课表信息

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

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.MusicGroupNews;
+import com.ym.mec.common.service.BaseService;
+
+public interface MusicGroupNewsService extends BaseService<Long, MusicGroupNews> {
+
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPerformanceService.java

@@ -0,0 +1,10 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.MusicGroupPerformance;
+import com.ym.mec.biz.dal.page.MusicGroupPerformanceQueryInfo;
+import com.ym.mec.common.service.BaseService;
+
+public interface MusicGroupPerformanceService extends BaseService<Integer, MusicGroupPerformance> {
+
+    Object queryNoStartPage(MusicGroupPerformanceQueryInfo queryInfo);
+}

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupQuestionnaireService.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
+import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.Map;
+
+public interface MusicGroupQuestionnaireService extends BaseService<Integer, MusicGroupQuestionnaire> {
+
+    /**
+     * 新增乐团调查问卷
+     * @param musicGroupQuestionnaire
+     */
+    void add(MusicGroupQuestionnaire musicGroupQuestionnaire);
+
+    /**
+     * 获取问卷题目详情
+     * @return
+     */
+    QuestionnaireTopic getQuestionDetail();
+
+    /**
+     * 修改乐团满意度调查
+     * @param musicGroupQuestionnaire
+     */
+    void updateResult(MusicGroupQuestionnaire musicGroupQuestionnaire);
+
+    Map<String,Object> getDetail(Integer id);
+
+    void del(Integer id);
+}

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

@@ -376,4 +376,18 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 */
 	PageInfo<MusicMemberDto> queryMusicMemberList(MusicMemberQueryInfo musicMemberQueryInfo);
+	
+	/**
+	 * 查询乐团基本信息
+	 * @param id
+	 * @return
+	 */
+	MusicGroupBasicDto queryBasicInfo(String id);
+
+	/**
+	 * 获取学员退团页面详情
+	 * @param musicGroupId
+	 * @return
+	 */
+    Object getQuitGroupDetail(String musicGroupId);
 }

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupTrainPlanService.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MusicGroupTrainPlanService extends BaseService<Integer, MusicGroupTrainPlan> {
+
+    int add(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    Map<String,Object> queryPlanPage(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<ClassGroup> queryPlanCourseNum(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<String> queryCourseType(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    Map<String,Object> queryExceptionPlan(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    MusicGroupTrainPlanSaveDto getSchoolTerm(CourseSchedule courseSchedule);
+
+    List<MusicGroupTrainPlan> queryPlan(MusicGroupTrainPlanSaveDto schoolTerm);
+}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PhotoAlbumService.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.PhotoAlbum;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface PhotoAlbumService extends BaseService<Integer, PhotoAlbum> {
+
+    PageInfo<PhotoAlbum> queryAlbumPage(PhotoQueryInfo queryInfo);
+
+    void batchUpdate(List<PhotoAlbum> photoAlbumList);
+
+    void batchDelete(String ids);
+}

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PhotoService.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.Photo;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface PhotoService extends BaseService<Integer, Photo> {
+
+    int del(String ids);
+
+    int batchAdd(List<Photo> photoList);
+
+    int batchUpdate(List<Photo> photoList);
+
+    PageInfo<Photo> queryPhotoPage(PhotoQueryInfo queryInfo);
+}

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

@@ -45,7 +45,6 @@ public interface ReplacementInstrumentActivityService extends BaseService<Intege
      */
     ReplacementInstrumentActivityStatDto getInfo(Integer id);
 
-
     /**
      * 获取问卷列表
      * @param queryInfo

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

@@ -13,6 +13,7 @@ import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
 import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
+import com.ym.mec.biz.dal.dto.StudentRegisterInstrumentsDetailDto;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
@@ -22,6 +23,7 @@ import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.page.MusicGroupRecordStudentQueryInfo;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -349,7 +351,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @param userId
      * @return
      */
-    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId);
+    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId,String musicGroupId);
 
 
     /**
@@ -444,6 +446,8 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     StudentRegistration getStudentRegister(String musicGroupId, Integer studentId);
 
+    PageInfo<StudentRegisterInstrumentsDetailDto> queryStudentRegisterInstrumentsDetailList(MusicGroupRecordStudentQueryInfo queryInfo);
+	
     /**
      * 云教练收费:审核中的记录审核失败
      * @param studentRegistration

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.IndexBaseDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -74,4 +75,16 @@ public interface StudentServeService {
      * 解除会员
      */
     void cleanStudentMember();
+
+    /**
+     * @describe 乐团作业情况
+     * @author Joburgess
+     * @date 2021/7/13 0013
+     * @param musicGroupId:
+     * @return void
+     */
+    List<IndexBaseDto> musicGroupHomeworkStat(String musicGroupId, Integer studentId, String startDay, String endDay);
+
+
+    List<IndexBaseDto> musicGroupHomeworkStatWithStu(String musicGroupId, Integer studentId, String startDay, String endDay);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -226,8 +226,15 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
     String CHILDREN_DAY_VIP_ACTIVITY_IDS = "children_day_vip_activity_ids";
 
+    //云教练作业开关0关1开
     String HOMEWORK_OPEN_FLAG = "homework_open_flag";
 
+    //云教练免费体验开关0关1开
+    String FREE_CLOUD_OPEN_FLAG = "free_cloud_open_flag";
+
+    //乐团问卷调查编号
+    String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

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

@@ -2747,6 +2747,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
+    public List<ClassGroup> queryStudentClassGroupsAndTeacher(String musicGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("请登录");
+        }
+        List<ClassGroup> classGroups = classGroupDao.queryStudentClassGroups(musicGroupId, sysUser.getId());
+        if(classGroups.size() > 0){
+            classGroups.forEach(e->{
+                e.setTeacherMapperList(classGroupTeacherMapperDao.findClassGroupTeachers(e.getId().toString()));
+            });
+        }
+        return classGroups;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult preCourseSchedule(List<ClassGroup4MixDto> classGroup4MixDtos) {
         Date date = new Date();

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganLinkmanServiceImpl.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.biz.dal.dao.CooperationOrganLinkmanDao;
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+import com.ym.mec.biz.service.CooperationOrganLinkmanService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+
+@Service
+public class CooperationOrganLinkmanServiceImpl extends BaseServiceImpl<Integer, CooperationOrganLinkman>  implements CooperationOrganLinkmanService {
+	
+	@Autowired
+	private CooperationOrganLinkmanDao cooperationOrganLinkmanDao;
+
+	@Override
+	public BaseDAO<Integer, CooperationOrganLinkman> getDAO() {
+		return cooperationOrganLinkmanDao;
+	}
+
+	@Override
+	public List<CooperationOrganLinkman> queryByCooperationOrganId(Integer cooperationOrganId) {
+		return cooperationOrganLinkmanDao.queryByCooperationOrganId(cooperationOrganId);
+	}
+	
+}

+ 48 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java

@@ -1,32 +1,44 @@
 package com.ym.mec.biz.service.impl;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.CooperationOrganDao;
+import com.ym.mec.biz.dal.dao.CooperationOrganLinkmanDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.ImGroupService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, CooperationOrgan>  implements CooperationOrganService {
 	
 	@Autowired
 	private CooperationOrganDao cooperationOrganDao;
+	
+	@Autowired
+	private CooperationOrganLinkmanDao cooperationOrganLinkmanDao;
+	
 	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
@@ -46,6 +58,27 @@ public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, Cooper
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public long insert(CooperationOrgan cooperationOrgan) {
+		Date date = new Date();
+		cooperationOrgan.setCreateTime(date);
+		cooperationOrgan.setUpdateTime(date);
+		super.insert(cooperationOrgan);
+
+		List<CooperationOrganLinkman> list = cooperationOrgan.getCooperationOrganLinkmanList();
+
+		if (list != null && list.size() > 0) {
+			for (CooperationOrganLinkman co : list) {
+				co.setCreateTime(date);
+				co.setCooperationOrganId(cooperationOrgan.getId());
+			}
+			cooperationOrganLinkmanDao.batchInsert(list);
+		}
+
+		return 1;
+	}
+
+	@Override
 	public List<CooperationOrgan> queryByOrganId(String organId) {
 		return cooperationOrganDao.queryByOrganId(organId);
 	}
@@ -98,6 +131,14 @@ public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, Cooper
 			//修改乐团主管
 			musicGroupDao.batchUpdateEdu(cooperationOrgan.getId(),cooperationOrgan.getEducationUserId());
 		}
+		
+		//修改了合作单位联系人
+		cooperationOrganLinkmanDao.deleteByCooperationOrganId(cooperationOrgan.getId());
+		List<CooperationOrganLinkman> cooperationOrganLinkmanList = cooperationOrgan.getCooperationOrganLinkmanList();
+		if(cooperationOrganLinkmanList != null && cooperationOrganLinkmanList.size() > 0){
+			cooperationOrganLinkmanDao.batchInsert(cooperationOrganLinkmanList);
+		}
+		
 		cooperationOrganDao.update(cooperationOrgan);
 	}
 

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

@@ -156,6 +156,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private VipGroupActivityDao vipGroupActivityDao;
     @Autowired
 	private StudentDao studentDao;
+    @Autowired
+	private MusicGroupTrainPlanService musicGroupTrainPlanService;
 
     private final Logger LOGGER = LoggerFactory
             .getLogger(this.getClass());
@@ -224,6 +226,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
 		currentCourseDetail.setAttendanceRange(CourseScheduleType.VIP.equals(currentCourseDetail.getCourseType())?Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ATTENDANCE_RANGE_VIP)):Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ATTENDANCE_RANGE)));
         currentCourseDetail.setAdvanceSignOutMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_OUT_MINUTES)));
+		CourseSchedule courseSchedule = courseScheduleDao.get(courseID);
+		//获取课程规划
+		MusicGroupTrainPlanSaveDto schoolTerm = musicGroupTrainPlanService.getSchoolTerm(courseSchedule);
+		int courseNumNo = courseScheduleDao.getCourseNumNo(schoolTerm);
+		List<MusicGroupTrainPlan> planList = musicGroupTrainPlanService.queryPlan(schoolTerm);
+		if(planList.size() >= courseNumNo){
+			currentCourseDetail.setCoursePlan(planList.get(courseNumNo - 1).getPlan());
+		}
 		//获取有会员的学员数
 		String configValue = sysConfigDao.findConfigValue(SysConfigService.HOMEWORK_OPEN_FLAG);
 		if(StringUtils.isEmpty(configValue)){
@@ -232,7 +242,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(configValue.equals("0")){
 			currentCourseDetail.setMemberNum(0);
 		}else {
-			CourseSchedule courseSchedule = courseScheduleDao.get(courseID);
 			MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
 			if(musicGroup != null){
 				currentCourseDetail.setCourseViewType(musicGroup.getCourseViewType());
@@ -5300,7 +5309,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
-	public Object getTeacherCourseHeadInfo(GroupType groupType,String groupId,Long courseScheduleId){
+	public Map<String,Object> getTeacherCourseHeadInfo(GroupType groupType,String groupId,Long courseScheduleId){
 		Map<String,Object> resultMap = new HashMap<>(8);
 		Teacher teacher;
 		switch (groupType){
@@ -5545,7 +5554,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(schedule == null){
 			throw new BizException("课程不存在");
 		}
-		return getTeacherCourseHeadInfo(schedule.getGroupType(),schedule.getMusicGroupId(),courseScheduleId);
+		Map<String,Object> teacherCourseHeadInfo = getTeacherCourseHeadInfo(schedule.getGroupType(), schedule.getMusicGroupId(), courseScheduleId);
+		//获取课程规划
+		MusicGroupTrainPlanSaveDto schoolTerm = musicGroupTrainPlanService.getSchoolTerm(schedule);
+		int courseNumNo = courseScheduleDao.getCourseNumNo(schoolTerm);
+		List<MusicGroupTrainPlan> planList = musicGroupTrainPlanService.queryPlan(schoolTerm);
+		if(planList.size() >= courseNumNo){
+			teacherCourseHeadInfo.put("coursePlan",planList.get(courseNumNo - 1).getPlan());
+		}
+		return teacherCourseHeadInfo;
 	}
 
 	@Override
@@ -5575,19 +5592,35 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<Long> courseScheduleIds = courseScheduleRateDtos.stream().map(CourseScheduleRateDto::getCourseScheduleId).collect(Collectors.toList());
 		List<CourseScheduleReview> courseReviews = courseScheduleReviewDao.findByCourseSchedules(courseScheduleIds);
 		Map<Integer, List<CourseScheduleReview>> reviews = courseReviews.stream().collect(Collectors.groupingBy(CourseScheduleReview::getCourseScheduleId));
-
-		//标记当前课程的上一节课
-		if(courseSchedule != null){
-			for (CourseScheduleRateDto e:courseScheduleRateDtos) {
-				if(reviews.containsKey(e.getCourseScheduleId().intValue())){
-					List<CourseScheduleReview> review = reviews.get(e.getCourseScheduleId().intValue());
-					e.setTeachingContent(review.get(0).getTeachingMaterial());
+		List<CourseSchedule> courseScheduleList = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
+		Map<Long, List<CourseSchedule>> courseMap = courseScheduleList.stream().collect(Collectors.groupingBy(e -> e.getId()));
+		MusicGroupTrainPlanSaveDto schoolTerm = null;
+		List<MusicGroupTrainPlan> planList = null;
+		for (CourseScheduleRateDto scheduleRateDto : courseScheduleRateDtos) {
+			CourseSchedule course = courseMap.get(scheduleRateDto.getCourseScheduleId()).get(0);
+			if(schoolTerm == null){
+				schoolTerm = musicGroupTrainPlanService.getSchoolTerm(course);
+				planList = musicGroupTrainPlanService.queryPlan(schoolTerm);
+			}else {
+				MusicGroupTrainPlanSaveDto schoolTerm1 = musicGroupTrainPlanService.getSchoolTerm(course);
+				if(!DateUtil.format(schoolTerm1.getStartSchoolTerm(),DateUtil.ISO_EXPANDED_DATE_FORMAT).
+						equals(DateUtil.format(schoolTerm.getStartSchoolTerm(),DateUtil.ISO_EXPANDED_DATE_FORMAT))){
+					planList = musicGroupTrainPlanService.queryPlan(schoolTerm);
 				}
+				schoolTerm = schoolTerm1;
 			}
-			for (CourseScheduleRateDto e:courseScheduleRateDtos) {
-				if(e.getCourseScheduleId().equals(courseSchedule.getId())){
-					e.setIsDefault(true);
-					break;
+			int courseNumNo = courseScheduleDao.getCourseNumNo(schoolTerm);
+			if(planList.size() >= courseNumNo){
+				scheduleRateDto.setCoursePlan(planList.get(courseNumNo - 1).getPlan());
+			}
+			//获取课程规划
+			if(courseSchedule != null){
+				if(reviews.containsKey(scheduleRateDto.getCourseScheduleId().intValue())){
+					List<CourseScheduleReview> review = reviews.get(scheduleRateDto.getCourseScheduleId().intValue());
+					scheduleRateDto.setTeachingContent(review.get(0).getTeachingMaterial());
+				}
+				if(scheduleRateDto.getCourseScheduleId().equals(courseSchedule.getId())){
+					scheduleRateDto.setIsDefault(true);
 				}
 			}
 		}

+ 79 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -9,9 +9,7 @@ import com.ym.mec.biz.dal.dto.IndexBaseDto;
 import com.ym.mec.biz.dal.dto.IndexErrorDataExportDto;
 import com.ym.mec.biz.dal.dto.OrganVipGroupCategoryCourseNumDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
-import com.ym.mec.biz.dal.entity.IndexErrInfoDto;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.IndexDataQueryInfo;
 import com.ym.mec.biz.service.EmployeeService;
@@ -25,7 +23,6 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
 import com.ym.mec.biz.service.IndexBaseMonthDataService;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
@@ -68,6 +65,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	private EmployeeService employeeService;
 	@Autowired
 	private StudentRegistrationDao studentRegistrationDao;
+	@Autowired
+	private MusicGroupPerformanceDao musicGroupPerformanceDao;
 
 	private static ThreadLocal<Set<Integer>> organIds = new ThreadLocal<Set<Integer>>(){
 		@Override
@@ -152,7 +151,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			List<IndexBaseMonthData> totalAmountDataWithTimely = indexBaseMonthDataDao.getTotalAmountDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds));
 			typeDateMap.put(IndexDataType.TOTAL_AMOUNT,totalAmountDataWithTimely);
 			//经营报表细化
-			List<IndexBaseMonthData> applyAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"APPLY",null);
+			List<IndexBaseMonthData> applyAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"APPLY,ADD_STUDENT",null);
 			typeDateMap.put(APPLY_AMOUNT,applyAmount);
 			List<IndexBaseMonthData> renewAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"RENEW",null);
 			typeDateMap.put(RENEW_AMOUNT,renewAmount);
@@ -164,6 +163,64 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			typeDateMap.put(OTHER_AMOUNT,otherAmount);
 		}
 
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(MUSIC_GROUP_COURSE.getCode())||dataTypes.contains(VIP_GROUP_COURSE.getCode())
+				||dataTypes.contains(VIP_GROUP_ONLINE_COURSE.getCode())||dataTypes.contains(VIP_GROUP_OFFLINE_COURSE.getCode())
+				||dataTypes.contains(PRACTICE_GROUP_COURSE.getCode())){
+			if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MUSIC_GROUP_COURSE.getCode())) {
+				List<IndexBaseMonthData> musicCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(null, startDate.toString(), endDate.toString(), GroupType.MUSIC, null, null, new ArrayList<>(organIds));
+				typeDateMap.put(MUSIC_GROUP_COURSE,musicCourseData);
+			}
+
+			if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_COURSE.getCode())) {
+				List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(null, startDate.toString(), endDate.toString(), GroupType.VIP, null, null, new ArrayList<>(organIds));
+				List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(null, startDate.toString(), endDate.toString(), GroupType.VIP, null, null, new ArrayList<>(organIds));
+				Map<Integer, Map<String, Integer>> organCategoryCourseMap = new HashMap<>();
+				if (!CollectionUtils.isEmpty(vipGroupCategoryCourseData)) {
+					organCategoryCourseMap = vipGroupCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
+				}
+				for (IndexBaseMonthData vipCourseDatum : vipCourseData) {
+					if (organCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
+						vipCourseDatum.setExtendInfo(JSON.toJSONString(organCategoryCourseMap.get(vipCourseDatum.getOrganId())));
+					}
+				}
+				typeDateMap.put(VIP_GROUP_COURSE,vipCourseData);
+			}
+
+			if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_ONLINE_COURSE.getCode())) {
+				List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(null, startDate.toString(), endDate.toString(), GroupType.VIP, null, TeachModeEnum.ONLINE, new ArrayList<>(organIds));
+				List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(null, startDate.toString(), endDate.toString(), GroupType.VIP, null, TeachModeEnum.ONLINE, new ArrayList<>(organIds));
+				Map<Integer, Map<String, Integer>> organOnlineCategoryCourseMap = new HashMap<>();
+				if (!CollectionUtils.isEmpty(vipGroupOnlineCategoryCourseData)) {
+					organOnlineCategoryCourseMap = vipGroupOnlineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
+				}
+				for (IndexBaseMonthData vipCourseDatum : vipOnlineCourseData) {
+					if (organOnlineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
+						vipCourseDatum.setExtendInfo(JSON.toJSONString(organOnlineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
+					}
+				}
+				typeDateMap.put(VIP_GROUP_ONLINE_COURSE,vipOnlineCourseData);
+			}
+
+			if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_OFFLINE_COURSE.getCode())) {
+				List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(null, startDate.toString(), endDate.toString(), GroupType.VIP, null, TeachModeEnum.OFFLINE, new ArrayList<>(organIds));
+				List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(null, startDate.toString(), endDate.toString(), GroupType.VIP, null, TeachModeEnum.OFFLINE, new ArrayList<>(organIds));
+				Map<Integer, Map<String, Integer>> organOfflineCategoryCourseMap = new HashMap<>();
+				if (!CollectionUtils.isEmpty(vipGroupOfflineCategoryCourseData)) {
+					organOfflineCategoryCourseMap = vipGroupOfflineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
+				}
+				for (IndexBaseMonthData vipCourseDatum : vipOfflineCourseData) {
+					if (organOfflineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
+						vipCourseDatum.setExtendInfo(JSON.toJSONString(organOfflineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
+					}
+				}
+				typeDateMap.put(VIP_GROUP_OFFLINE_COURSE,vipOfflineCourseData);
+			}
+
+			if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PRACTICE_GROUP_COURSE.getCode())) {
+				List<IndexBaseMonthData> practiceCourses = indexBaseMonthDataDao.getGroupCourseDataWithGroup(null, startDate.toString(), endDate.toString(), GroupType.PRACTICE, null, null, new ArrayList<>(organIds));
+				typeDateMap.put(PRACTICE_GROUP_COURSE,practiceCourses);
+			}
+		}
 
 		for (IndexDataType dataType : IndexDataType.values()) {
 			if(typeDateMap.containsKey(dataType)||(!CollectionUtils.isEmpty(dataTypes)&&!dataTypes.contains(dataType.getCode()))){
@@ -373,12 +430,12 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 
 		//课程数据
 		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MUSIC_GROUP_COURSE)) {
-			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.MUSIC, null, null), dayStr, IndexDataType.MUSIC_GROUP_COURSE);
+			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.MUSIC, null, null, null), dayStr, IndexDataType.MUSIC_GROUP_COURSE);
 		}
 
 		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_COURSE)) {
-			List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, null);
-			List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, null);
+			List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, null, null);
+			List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, null, null);
 			Map<Integer, Map<String, Integer>> organCategoryCourseMap = new HashMap<>();
 			if (!CollectionUtils.isEmpty(vipGroupCategoryCourseData)) {
 				organCategoryCourseMap = vipGroupCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
@@ -392,8 +449,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		}
 
 		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_ONLINE_COURSE)) {
-			List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, TeachModeEnum.ONLINE);
-			List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, TeachModeEnum.ONLINE);
+			List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.ONLINE, null);
+			List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.ONLINE, null);
 			Map<Integer, Map<String, Integer>> organOnlineCategoryCourseMap = new HashMap<>();
 			if (!CollectionUtils.isEmpty(vipGroupOnlineCategoryCourseData)) {
 				organOnlineCategoryCourseMap = vipGroupOnlineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
@@ -407,8 +464,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		}
 
 		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_OFFLINE_COURSE)) {
-			List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, TeachModeEnum.OFFLINE);
-			List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, TeachModeEnum.OFFLINE);
+			List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.OFFLINE, null);
+			List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.OFFLINE, null);
 			Map<Integer, Map<String, Integer>> organOfflineCategoryCourseMap = new HashMap<>();
 			if (!CollectionUtils.isEmpty(vipGroupOfflineCategoryCourseData)) {
 				organOfflineCategoryCourseMap = vipGroupOfflineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
@@ -422,7 +479,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		}
 
 		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PRACTICE_GROUP_COURSE)) {
-			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.PRACTICE, null, null), dayStr, IndexDataType.PRACTICE_GROUP_COURSE);
+			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.PRACTICE, null, null, null), dayStr, IndexDataType.PRACTICE_GROUP_COURSE);
 		}
 
 		//学员变动
@@ -934,6 +991,15 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		infoDto.setNum2(userIds.size());
 		infoDto.setDesc(IndexErrorType.MEMBER_STUDENT_INFO.getMsg());
 		result.add(infoDto);
+
+		//乐团展演计划提醒
+		List<MusicGroupPerformance> musicGroupPerformances = musicGroupPerformanceDao.findNoStart(educationUserId,organIds);
+		IndexErrInfoDto infoDto1 = new IndexErrInfoDto();
+		infoDto1.setErrorType(IndexErrorType.MUSIC_GROUP_PERFORMANCE);
+		infoDto1.setNum(musicGroupPerformances.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet()).size());
+		infoDto1.setNum2(musicGroupPerformances.stream().map(e -> e.getId()).collect(Collectors.toSet()).size());
+		infoDto1.setDesc(IndexErrorType.MUSIC_GROUP_PERFORMANCE.getMsg());
+		result.add(infoDto1);
 		return result;
 	}
 

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupNewsServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.common.dal.BaseDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.biz.dal.entity.MusicGroupNews;
+import com.ym.mec.biz.service.MusicGroupNewsService;
+import com.ym.mec.biz.dal.dao.MusicGroupNewsDao;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MusicGroupNewsServiceImpl extends BaseServiceImpl<Long, MusicGroupNews>  implements MusicGroupNewsService {
+	
+	@Autowired
+	private MusicGroupNewsDao musicGroupNewsDao;
+
+	@Override
+	public BaseDAO<Long, MusicGroupNews> getDAO() {
+		return musicGroupNewsDao;
+	}
+	
+}

+ 81 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPerformanceServiceImpl.java

@@ -0,0 +1,81 @@
+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.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.MusicGroupPerformanceQueryInfo;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.biz.dal.entity.MusicGroupPerformance;
+import com.ym.mec.biz.service.MusicGroupPerformanceService;
+import com.ym.mec.biz.dal.dao.MusicGroupPerformanceDao;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class MusicGroupPerformanceServiceImpl extends BaseServiceImpl<Integer, MusicGroupPerformance>  implements MusicGroupPerformanceService {
+	
+	@Autowired
+	private MusicGroupPerformanceDao musicGroupPerformanceDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private EmployeeDao employeeDao;
+
+	@Override
+	public BaseDAO<Integer, MusicGroupPerformance> getDAO() {
+		return musicGroupPerformanceDao;
+	}
+
+    @Override
+    public Object queryNoStartPage(MusicGroupPerformanceQueryInfo queryInfo) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			throw new BizException("用户信息获取失败");
+		}
+		Employee employee = employeeDao.get(sysUser.getId());
+		if (org.apache.commons.lang3.StringUtils.isEmpty(queryInfo.getOrganId())) {
+			queryInfo.setOrganId(employee.getOrganIdList());
+		} else if (org.apache.commons.lang3.StringUtils.isEmpty(employee.getOrganIdList())) {
+			throw new BizException("用户所在分部异常");
+		} else {
+			List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+			if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+				throw new BizException("非法请求");
+			}
+		}
+		//当前用户是否是分部经理
+		List<Integer> userRole = employeeDao.queryUserRole(sysUser.getId());
+		Integer educationUserId = null;
+		if (!sysUser.getIsSuperAdmin() && userRole.size() == 1 && userRole.contains(SysUserRole.EDUCATIONAL_TEACHER)) {
+			//获取教务老师关联的班级列表
+			educationUserId = sysUser.getId();
+		}
+		PageInfo<MusicGroupPerformance> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+		params.put("educationUserId",educationUserId);
+
+		List<MusicGroupPerformance> dataList = null;
+		int count = musicGroupPerformanceDao.countNoStart(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = musicGroupPerformanceDao.queryNoStart(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+    }
+}

+ 107 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupQuestionnaireServiceImpl.java

@@ -0,0 +1,107 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.QuestionnaireUserResultDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.QuestionnaireResultDto;
+import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
+import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
+import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
+import com.ym.mec.biz.service.QuestionnaireTopicService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
+import com.ym.mec.biz.service.MusicGroupQuestionnaireService;
+import com.ym.mec.biz.dal.dao.MusicGroupQuestionnaireDao;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class MusicGroupQuestionnaireServiceImpl extends BaseServiceImpl<Integer, MusicGroupQuestionnaire>  implements MusicGroupQuestionnaireService {
+	
+	@Autowired
+	private MusicGroupQuestionnaireDao musicGroupQuestionnaireDao;
+	@Autowired
+	private SysConfigDao sysConfigDao;
+	@Autowired
+	private QuestionnaireTopicService questionnaireTopicService;
+	@Autowired
+	private QuestionnaireUserResultDao questionnaireUserResultDao;
+
+	@Override
+	public BaseDAO<Integer, MusicGroupQuestionnaire> getDAO() {
+		return musicGroupQuestionnaireDao;
+	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void add(MusicGroupQuestionnaire musicGroupQuestionnaire) {
+		musicGroupQuestionnaireDao.insert(musicGroupQuestionnaire);
+		//保存问卷结果
+		List<QuestionnaireUserResult> questionnaireUserResultList = musicGroupQuestionnaire.getQuestionnaireUserResultList();
+		if(questionnaireUserResultList == null || questionnaireUserResultList.size() == 0){
+			throw new BizException("请录入问卷结果");
+		}
+		for (QuestionnaireUserResult result : questionnaireUserResultList) {
+			result.setActiveId(musicGroupQuestionnaire.getId());
+			result.setActiveType(QuestionnaireActiveTypeEnum.MUSIC_GROUP_QUESTION);
+		}
+		questionnaireUserResultDao.batchInsert1(questionnaireUserResultList);
+	}
+
+	@Override
+	public QuestionnaireTopic getQuestionDetail() {
+		String topicId = sysConfigDao.findConfigValue(SysConfigService.MUSIC_GROUP_TOPIC_ID);
+		if(StringUtils.isEmpty(topicId)){
+			topicId = "1";
+		}
+		return questionnaireTopicService.getDetail(Integer.parseInt(topicId));
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateResult(MusicGroupQuestionnaire musicGroupQuestionnaire) {
+		MusicGroupQuestionnaire questionnaire = musicGroupQuestionnaireDao.get(musicGroupQuestionnaire.getId());
+		if(questionnaire == null){
+			throw new BizException("修改失败:问卷不存在");
+		}
+		musicGroupQuestionnaireDao.update(questionnaire);
+		//保存问卷结果
+		List<QuestionnaireUserResult> questionnaireUserResultList = musicGroupQuestionnaire.getQuestionnaireUserResultList();
+		if(questionnaireUserResultList == null || questionnaireUserResultList.size() == 0){
+			throw new BizException("请录入问卷结果");
+		}
+		for (QuestionnaireUserResult result : questionnaireUserResultList) {
+			result.setActiveId(musicGroupQuestionnaire.getId());
+			result.setActiveType(QuestionnaireActiveTypeEnum.MUSIC_GROUP_QUESTION);
+		}
+		//删除原来的问卷结果
+		questionnaireUserResultDao.delByActiveIdAndUserId(musicGroupQuestionnaire.getId(), null,"MUSIC_GROUP_QUESTION");
+		questionnaireUserResultDao.batchInsert1(questionnaireUserResultList);
+	}
+
+	@Override
+	public Map<String,Object> getDetail(Integer id) {
+		Map<String,Object> resultMap = new HashMap<>(2);
+		MusicGroupQuestionnaire musicGroupQuestionnaire = musicGroupQuestionnaireDao.get(id);
+		resultMap.put("musicGroupQuestionnaire",musicGroupQuestionnaire);
+		//获取问卷结果
+		List<QuestionnaireResultDto> questionnaireResultDtos = questionnaireUserResultDao.getQuestionResult(musicGroupQuestionnaire.getId(),"MUSIC_GROUP_QUESTION");
+		resultMap.put("questionResult",questionnaireResultDtos);
+		return resultMap;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void del(Integer id) {
+		questionnaireUserResultDao.delByActiveIdAndUserId(id, null,"MUSIC_GROUP_QUESTION");
+		musicGroupQuestionnaireDao.delete(id);
+	}
+}

+ 65 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.entity.ApprovalStatus.PROCESSING;
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.CLOSE;
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.ING;
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
@@ -36,6 +37,7 @@ import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.HighClassGroupDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.MusicGroupBasicDto;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
 import com.ym.mec.biz.dal.dto.SporadicPayDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
@@ -1779,7 +1781,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         MusicGroupQuit musicGroupQuit = musicGroupQuitDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
         if (musicGroupQuit != null) {
-            if (musicGroupQuit.getStatus() == ApprovalStatus.PROCESSING) {
+            if (musicGroupQuit.getStatus() == PROCESSING) {
                 throw new BizException("申请失败,存在[申请中]的记录");
             }
         }
@@ -1790,7 +1792,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupQuit.setMusicGroupId(musicGroupId);
         musicGroupQuit.setUserId(sysUser.getId());
         musicGroupQuit.setUserComment(reason);
-        musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
+        musicGroupQuit.setStatus(PROCESSING);
 
         musicGroupQuitDao.insert(musicGroupQuit);
         Set<Integer> roleIds = new HashSet<>(1);
@@ -1826,7 +1828,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (musicGroup == null) {
             throw new BizException("乐团不存在");
         }
-        if (musicGroupQuit.getStatus() != ApprovalStatus.PROCESSING) {
+        if (musicGroupQuit.getStatus() != PROCESSING) {
             throw new BizException("当前状态下不能取消");
         }
         musicGroupQuit.setStatus(ApprovalStatus.CANCELED);
@@ -2147,7 +2149,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         Date date = new Date();
 
         MusicGroupQuit musicGroupQuit = musicGroupQuitDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-        if (musicGroupQuit != null && musicGroupQuit.getStatus() == ApprovalStatus.PROCESSING) {
+        if (musicGroupQuit != null && musicGroupQuit.getStatus() == PROCESSING) {
             musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
             musicGroupQuit.setReason(reason);
             musicGroupQuit.setQuitDate(date);
@@ -2818,14 +2820,29 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         // 获取教务老师编号列表
         Set<Integer> educationalTeacherIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toSet());
-        // 获取相关老师的名字
-        List<Map<Integer, String>> educationalTeacherNames = teacherDao.queryNameByIds(StringUtils.join(educationalTeacherIds, ","));
-        Map<Integer, String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames);
+        Map<Integer, String> educationalTeacherNameMap = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(educationalTeacherIds, ",")));
 
         // 获取运营主管编号列表
         Set<Integer> teamTeacherIds = musicGroupList.stream().map(e -> e.getTeamTeacherId()).collect(Collectors.toSet());
-        List<Map<Integer, String>> teamTeacherNames = teacherDao.queryNameByIds(StringUtils.join(teamTeacherIds, ","));
-        Map<Integer, String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames);
+        Map<Integer, String> teamTeacherNameMap = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(teamTeacherIds, ",")));
+
+        // 获取乐队指导编号列表
+        Set<Integer> directorUserIds = musicGroupList.stream().map(e -> e.getDirectorUserId()).collect(Collectors.toSet());
+        directorUserIds.removeAll(Collections.singleton(null));
+        Map<Integer, String> directorUserNameMap = new HashMap<>();
+        if(directorUserIds.size() > 0){
+            List<Map<Integer, String>> repairUserNames = teacherDao.queryNameByIds(StringUtils.join(directorUserIds, ","));
+            directorUserNameMap = MapUtil.convertMybatisMap(repairUserNames);
+        }
+
+        // 获取维修技师编号列表
+        Set<Integer> repairUserIds = musicGroupList.stream().map(e -> e.getRepairUserId()).collect(Collectors.toSet());
+        repairUserIds.removeAll(Collections.singleton(null));
+        Map<Integer, String> repairUserNameMap = new HashMap<>();
+        if(repairUserIds.size() > 0){
+            List<Map<Integer, String>> repairUserNames = teacherDao.queryNameByIds(StringUtils.join(repairUserIds, ","));
+            repairUserNameMap = MapUtil.convertMybatisMap(repairUserNames);
+        }
 
         // 获取乐团编号列表
         Set<String> musicGroupIds = musicGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
@@ -2854,12 +2871,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         Map<String, Boolean> viewRegButtonMap = studentRegistrationService.checkMusicGroupsRegOrPayStatus(new ArrayList<>(musicGroupIds));
         //获取分部名称map
-        musicGroupList.forEach(e -> {
+        for (MusicGroup e : musicGroupList) {
 //            e.setSchoolName(schoolNameMap.get(e.getSchoolId()));
             e.setOrganName(organNames.get(e.getOrganId()));
             e.setCooperationOrganName(cooperationOrganNames.get(e.getCooperationOrganId()));
             e.setEducationalTeacherName(educationalTeacherNameMap.get(e.getEducationalTeacherId()));
             e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId()));
+            e.setRepairUserName(repairUserNameMap.get(e.getRepairUserId()));
+            e.setDirectorUserName(directorUserNameMap.get(e.getDirectorUserId()));
             e.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()));
             e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
             e.setHasVerifyMusicalList(purchaseListMap.get(e.getId()) != null);
@@ -2868,7 +2887,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     e.setIsRemedy(true);
                 }
             }
-        });
+        }
         return musicGroupPageInfo;
     }
 
@@ -3475,4 +3494,39 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         pageInfo.setRows(dataList);
         return pageInfo;
     }
+
+	@Override
+	public MusicGroupBasicDto queryBasicInfo(String id) {
+		return musicGroupDao.queryBasicInfo(id);
+	}
+
+    @Override
+    public Object getQuitGroupDetail(String musicGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("请登录");
+        }
+        Map<String,Object> resultMap = new HashMap<>(7);
+        String username = sysUser.getUsername();
+        resultMap.put("username",StringUtils.isEmpty(username)?sysUser.getRealName():username);
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        resultMap.put("musicGroupName",musicGroup.getName());
+        int musicGroupStudentNum = studentRegistrationDao.findMusicGroupStudentNum(musicGroupId);
+        resultMap.put("musicGroupStudentNum",musicGroupStudentNum);
+        StudentRegistration studentRegistration = studentRegistrationDao.getStudentRegister(musicGroupId, sysUser.getId());
+        int daysBetween = DateUtil.daysBetween(studentRegistration.getCreateTime(),new Date());
+        resultMap.put("days",daysBetween);
+        MusicGroupQuit musicGroupQuit = musicGroupQuitDao.queryByUserIdAndMusicGroupId(sysUser.getId(), musicGroupId);
+        if(musicGroupQuit != null && musicGroupQuit.getStatus() == PROCESSING){
+            resultMap.put("memo",musicGroupQuit.getUserComment());
+            resultMap.put("quitTime",musicGroupQuit.getCreateTime());
+        }
+        if(musicGroup.getEducationalTeacherId() != null){
+            SysUser user = sysUserFeignService.queryUserById(musicGroup.getEducationalTeacherId());
+            resultMap.put("teacherMobile",user.getPhone());
+        }else {
+            resultMap.put("teacherMobile","027-87718176");
+        }
+        return resultMap;
+    }
 }

+ 184 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupTrainPlanServiceImpl.java

@@ -0,0 +1,184 @@
+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.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.MusicGroupTrainPlanDao;
+import com.ym.mec.biz.dal.dto.WaitCourseTrainPlanDto;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.service.MusicGroupTrainPlanService;
+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.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class MusicGroupTrainPlanServiceImpl extends BaseServiceImpl<Integer, MusicGroupTrainPlan>  implements MusicGroupTrainPlanService {
+	
+	@Autowired
+	private MusicGroupTrainPlanDao musicGroupTrainPlanDao;
+	@Autowired
+	private CourseScheduleDao courseScheduleDao;
+	@Autowired
+	private ClassGroupDao classGroupDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@Override
+	public BaseDAO<Integer, MusicGroupTrainPlan> getDAO() {
+		return musicGroupTrainPlanDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int add(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
+		//获取学期时间
+		getCourseDetail(musicGroupTrainPlanSaveDto);
+		List<String> plans = musicGroupTrainPlanSaveDto.getPlans();
+		if(plans == null || plans.size() == 0){
+			throw new BizException("请录入课程规划");
+		}
+		//获取当前班级的课程类型课程数
+		int courseNum = courseScheduleDao.countCourseByClassAndType(musicGroupTrainPlanSaveDto);
+		int planNum = musicGroupTrainPlanDao.countPlanNum(musicGroupTrainPlanSaveDto);
+		if((planNum + plans.size()) > courseNum){
+			throw new BizException("课程规划不得超过课程数");
+		}
+		return musicGroupTrainPlanDao.add(musicGroupTrainPlanSaveDto);
+	}
+
+	@Override
+	public Map<String,Object> queryPlanPage(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
+		getCourseDetail(musicGroupTrainPlanSaveDto);
+		//课程时间列表
+		List<String> classDates = courseScheduleDao.queryClassDateList(musicGroupTrainPlanSaveDto);
+		Map<String,Object> paramMap = new HashMap<>();
+		paramMap.put("classGroupId",musicGroupTrainPlanSaveDto.getClassGroupId());
+		paramMap.put("courseScheduleType",musicGroupTrainPlanSaveDto.getCourseScheduleType());
+		paramMap.put("startSchoolTerm",musicGroupTrainPlanSaveDto.getStartSchoolTerm());
+		paramMap.put("endSchoolTerm",musicGroupTrainPlanSaveDto.getEndSchoolTerm());
+		//课程规划
+		List<MusicGroupTrainPlan> musicGroupTrainPlans = musicGroupTrainPlanDao.findAll(paramMap);
+		Map<String,Object> resultMap = new HashMap<>(2);
+		resultMap.put("classDates",classDates);
+		resultMap.put("musicGroupTrainPlans",musicGroupTrainPlans);
+		return resultMap;
+	}
+
+	@Override
+	public List<ClassGroup> queryPlanCourseNum(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
+		List<ClassGroup> classGroups;
+		if(musicGroupTrainPlanSaveDto.getStudentFlag()){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if(sysUser == null){
+				throw new BizException("请登录");
+			}
+			classGroups = classGroupDao.queryStudentClassGroups(musicGroupTrainPlanSaveDto.getMusicGroupId(),sysUser.getId());
+		}else {
+			classGroups = classGroupDao.findClassGroups(musicGroupTrainPlanSaveDto.getMusicGroupId());
+		}
+		if(classGroups.size() == 0){
+			return null;
+		}
+		List<Integer> classGroupIdList = classGroups.stream().map(e -> e.getId()).collect(Collectors.toList());
+		getCourseDetail(musicGroupTrainPlanSaveDto);
+		Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalNumByClassGroupIds(classGroupIdList, musicGroupTrainPlanSaveDto.getStartSchoolTerm(),musicGroupTrainPlanSaveDto.getEndSchoolTerm()));
+		Map<Integer, Long> currentNumMap = MapUtil.convertIntegerMap(courseScheduleDao.countExpendNumByClassGroupIds(classGroupIdList, musicGroupTrainPlanSaveDto.getStartSchoolTerm(),musicGroupTrainPlanSaveDto.getEndSchoolTerm()));
+		for (ClassGroup classGroup : classGroups) {
+			int totalClassTimes = 0;
+			int currentClassTimes = 0;
+			if (totalNumMap.containsKey(classGroup.getId())) {
+				totalClassTimes = totalNumMap.get(classGroup.getId()).intValue();
+			}
+			if (currentNumMap.containsKey(classGroup.getId())) {
+				currentClassTimes = currentNumMap.get(classGroup.getId()).intValue();
+			}
+			classGroup.setTotalClassTimes(totalClassTimes);
+			classGroup.setCurrentClassTimes(currentClassTimes);
+		}
+		return classGroups;
+	}
+
+    @Override
+    public List<String> queryCourseType(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
+		getCourseDetail(musicGroupTrainPlanSaveDto);
+		List<String> strings = courseScheduleDao.queryCourseTypeByClassGroupIds(musicGroupTrainPlanSaveDto);
+		return strings;
+    }
+
+	@Override
+	public Map<String, Object> queryExceptionPlan(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
+		getCourseDetail(musicGroupTrainPlanSaveDto);
+		Map<String,Object> resultMap = new HashMap<>(2);
+		//获取乐团当前学期每个班级不同课程类型数量
+		List<WaitCourseTrainPlanDto> waitCourseTrainPlanDtos = musicGroupTrainPlanDao.queryWaitCourseTrainPlan(musicGroupTrainPlanSaveDto);
+		resultMap.put("waitCourseTrainPlanDtos",waitCourseTrainPlanDtos);
+		List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1 = musicGroupTrainPlanDao.queryWaitCourseTrainPlan1(musicGroupTrainPlanSaveDto);
+		resultMap.put("waitCourseTrainPlanDtos1",queryWaitCourseTrainPlan1);
+		return resultMap;
+	}
+
+	private MusicGroupTrainPlanSaveDto getCourseDetail(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto){
+		String year = musicGroupTrainPlanSaveDto.getYear();
+		if(StringUtils.isEmpty(year)){
+			throw new BizException("请录入年份");
+		}
+		Integer term = musicGroupTrainPlanSaveDto.getTerm();
+		if(term == null){
+			throw new BizException("请录入学期");
+		}
+		if(term == 0){
+			musicGroupTrainPlanSaveDto.setStartSchoolTerm(DateUtil.stringToDate(year + "-03-01 00:00:00"));
+			musicGroupTrainPlanSaveDto.setEndSchoolTerm(DateUtil.stringToDate(year + "-08-31 00:00:00"));
+		}else {
+			musicGroupTrainPlanSaveDto.setStartSchoolTerm(DateUtil.stringToDate(year + "-09-01 00:00:00"));
+			year = DateUtil.getYear(DateUtil.addYears(musicGroupTrainPlanSaveDto.getStartSchoolTerm(), 1));
+			musicGroupTrainPlanSaveDto.setEndSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-02-01 00:00:00")));
+		}
+		return musicGroupTrainPlanSaveDto;
+	}
+
+	@Override
+	public MusicGroupTrainPlanSaveDto getSchoolTerm(CourseSchedule courseSchedule){
+		MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto = new MusicGroupTrainPlanSaveDto();
+		Date startCourseDate = courseSchedule.getClassDate();
+		//一个学期默认为6个月,9月1日—2月28、29日,3月1日—8月31日
+		Integer month = Integer.parseInt(DateUtil.getMonth(startCourseDate));
+		String year = DateUtil.getYear(startCourseDate);
+		if(month >= 9 || month <= 2){
+			if(month >= 9){
+				musicGroupTrainPlanSaveDto.setStartSchoolTerm(DateUtil.stringToDate(year + "-09-01 00:00:00"));
+				year = DateUtil.getYear(DateUtil.addYears(startCourseDate, 1));
+			}else {
+				String year1 = DateUtil.getYear(DateUtil.addYears(startCourseDate, -1));
+				musicGroupTrainPlanSaveDto.setStartSchoolTerm(DateUtil.stringToDate(year1 + "-09-01 00:00:00"));
+			}
+			musicGroupTrainPlanSaveDto.setEndSchoolTerm(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(year + "-02-01 00:00:00")));
+		}else {
+			musicGroupTrainPlanSaveDto.setStartSchoolTerm(DateUtil.stringToDate(year + "-03-01 00:00:00"));
+			musicGroupTrainPlanSaveDto.setEndSchoolTerm(DateUtil.stringToDate(year + "-08-31 00:00:00"));
+		}
+		musicGroupTrainPlanSaveDto.setMusicGroupId(courseSchedule.getMusicGroupId());
+		musicGroupTrainPlanSaveDto.setClassGroupId(courseSchedule.getClassGroupId());
+		musicGroupTrainPlanSaveDto.setCourseScheduleType(courseSchedule.getType().getCode());
+		musicGroupTrainPlanSaveDto.setCourseClassTime(courseSchedule.getStartClassTime());
+		return musicGroupTrainPlanSaveDto;
+	}
+
+	@Override
+	public List<MusicGroupTrainPlan> queryPlan(MusicGroupTrainPlanSaveDto schoolTerm) {
+		return musicGroupTrainPlanDao.queryPlan(schoolTerm);
+	}
+}

+ 59 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PhotoAlbumServiceImpl.java

@@ -0,0 +1,59 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.PhotoAlbumDao;
+import com.ym.mec.biz.dal.dao.PhotoDao;
+import com.ym.mec.biz.dal.entity.PhotoAlbum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.biz.service.PhotoAlbumService;
+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 org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class PhotoAlbumServiceImpl extends BaseServiceImpl<Integer, PhotoAlbum>  implements PhotoAlbumService {
+	
+	@Autowired
+	private PhotoAlbumDao photoAlbumDao;
+	@Autowired
+	private PhotoDao photoDao;
+
+	@Override
+	public BaseDAO<Integer, PhotoAlbum> getDAO() {
+		return photoAlbumDao;
+	}
+
+    @Override
+    public PageInfo<PhotoAlbum> queryAlbumPage(PhotoQueryInfo queryInfo) {
+		PageInfo<PhotoAlbum> photoAlbumPageInfo = queryPage(queryInfo);
+		List<PhotoAlbum> rows = photoAlbumPageInfo.getRows();
+		if(rows.size() > 0){
+			List<Integer> albumIds = rows.stream().map(e -> e.getId()).collect(Collectors.toList());
+			Map<Integer, Long> totalNumMap = MapUtil.convertIntegerMap(photoAlbumDao.countTotalNumByAlbumIds(albumIds,queryInfo.getClientShow()));
+			for (PhotoAlbum photoAlbum : rows) {
+				photoAlbum.setPhotoNum(totalNumMap.get(photoAlbum.getId()));
+			}
+		}
+		return photoAlbumPageInfo;
+    }
+
+    @Override
+    public void batchUpdate(List<PhotoAlbum> photoAlbumList) {
+		photoAlbumDao.batchUpdate(photoAlbumList);
+    }
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void batchDelete(String ids) {
+		photoDao.deleteByAlbumIds(ids);
+		photoAlbumDao.deleteByIds(ids);
+    }
+}

+ 97 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PhotoServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.PhotoAlbumDao;
+import com.ym.mec.biz.dal.dao.PhotoDao;
+import com.ym.mec.biz.dal.entity.Photo;
+import com.ym.mec.biz.dal.entity.PhotoAlbum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.biz.service.PhotoService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class PhotoServiceImpl extends BaseServiceImpl<Integer, Photo>  implements PhotoService {
+	
+	@Autowired
+	private PhotoDao photoDao;
+	@Autowired
+	private PhotoAlbumDao photoAlbumDao;
+
+	@Override
+	public BaseDAO<Integer, Photo> getDAO() {
+		return photoDao;
+	}
+
+    @Override
+    public int del(String ids) {
+		return photoDao.deleteByIds(ids);
+    }
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int batchAdd(List<Photo> photoList) {
+		if(photoList == null ||photoList.size() == 0){
+			throw new BizException("请录入照片");
+		}
+		Photo photo = photoList.get(0);
+		Integer photoAlbumId = photo.getPhotoAlbumId();
+		String musicGroupId = photo.getMusicGroupId();
+		if(photoAlbumId == null && StringUtils.isEmpty(musicGroupId)){
+			throw new BizException("参数校验失败");
+		}
+		//如果相册编号是空,那么插入证书相册
+		if(photoAlbumId == null){
+			PhotoAlbum photoAlbum = photoAlbumDao.findByTypeAndGroupId(musicGroupId,"SHOW");
+			if(photoAlbum == null){
+				photoAlbum = new PhotoAlbum();
+				photoAlbum.setMusicGroupId(musicGroupId);
+				photoAlbum.setName("获奖证书");
+				photoAlbum.setClientShow(YesOrNoEnum.YES);
+				photoAlbum.setCoverUrl("https://daya.ks3-cn-beijing.ksyun.com/202107/Sdmx7vx.png");
+				photoAlbum.setType("SHOW");
+				photoAlbumDao.insert(photoAlbum);
+			}
+			photoAlbumId = photoAlbum.getId();
+		}
+		for (Photo e : photoList) {
+			e.setPhotoAlbumId(photoAlbumId);
+		}
+		return photoDao.batchInsert(photoList);
+	}
+
+    @Override
+    public int batchUpdate(List<Photo> photoList) {
+		return photoDao.batchUpdate(photoList);
+    }
+
+    @Override
+    public PageInfo<Photo> queryPhotoPage(PhotoQueryInfo queryInfo) {
+		Integer photoAlbumId = queryInfo.getPhotoAlbumId();
+		if(photoAlbumId == null){
+			String type = queryInfo.getType();
+			if(!"SHOW".equals(type)){
+				throw new BizException("参数校验失败");
+			}
+			PhotoAlbum photoAlbum = photoAlbumDao.findByTypeAndGroupId(queryInfo.getMusicGroupId(), type);
+			if(photoAlbum == null){
+				photoAlbum = new PhotoAlbum();
+				photoAlbum.setMusicGroupId(queryInfo.getMusicGroupId());
+				photoAlbum.setName("获奖证书");
+				photoAlbum.setClientShow(YesOrNoEnum.YES);
+				photoAlbum.setType("SHOW");
+				photoAlbumDao.insert(photoAlbum);
+			}
+			queryInfo.setPhotoAlbumId(photoAlbum.getId());
+		}
+        return queryPage(queryInfo);
+    }
+}

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

@@ -68,6 +68,7 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 	public Map<String,Object> questionnaireUserResultExport(Integer cooperationId,List<QuestionnaireQuestion> questionList) {
 		HashMap<String, Object> paramMap = new HashMap<>(2);
 		paramMap.put("activeId",cooperationId);
+		paramMap.put("activeType","REPLACEMENT");
 		List<QuestionnaireUserResult> userResults = questionnaireUserResultDao.findAll(paramMap);
 
 		Map<String,Object> resultMap = new HashMap<>(2);

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

@@ -191,7 +191,7 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
 
             if (questionnaireUserResultList != null && questionnaireUserResultList.size() > 0) {
                 //删除原来的问卷结果
-                questionnaireUserResultDao.delByActiveIdAndUserId(activity.getReplacementInstrumentCooperationId(), sysUser.getId());
+                questionnaireUserResultDao.delByActiveIdAndUserId(activity.getReplacementInstrumentCooperationId(), sysUser.getId(),"REPLACEMENT");
             }
             if (replacementInstrumentActivity.getInstrumentsId() != null && (activity.getInstrumentsId() == null || activity.getInstrumentsId() == 0)) {
                 sendPush = true;

+ 11 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -12,6 +12,7 @@ import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,14 +38,6 @@ import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.School;
-import com.ym.mec.biz.dal.entity.StudentAttendance;
-import com.ym.mec.biz.dal.entity.SysConfig;
-import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -160,7 +153,14 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         int remindNum = studentAttendanceDao.countNormalRemindNum(courseScheduleId);
         studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
         int classTimes = courseScheduleDao.countClassTimes(courseSchedule.getClassGroupId().longValue(), courseSchedule.getStartClassTime());
+        List<Student> students = new ArrayList<>();
         studentAttendances.forEach(studentAttendance -> {
+            if(studentAttendance.getCurrentGradeNum() != null){
+                Student student = new Student();
+                student.setUserId(studentAttendance.getUserId());
+                student.setCurrentGradeNum(studentAttendance.getCurrentGradeNum());
+                students.add(student);
+            }
             studentAttendance.setTeacherId(sysUser.getId());
             studentAttendance.setCurrentClassTimes(classTimes + 1);
             StudentAttendance studentAttendanceInfo = studentAttendanceDao.getStudentAttendanceInfo(studentAttendance);
@@ -200,6 +200,9 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                         YesOrNoEnum.NO.getCode());
             }
         });
+        if(students.size() > 0){
+            studentDao.batchUpdate(students);
+        }
         //获取正常签到的学生信息
 //        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
 //        if (normal != null && normal.size() > 0) {

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

@@ -59,14 +59,17 @@ import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 import com.ym.mec.biz.dal.dto.NoClassMusicStudentDto;
 import com.ym.mec.biz.dal.dto.PageInfoReg;
 import com.ym.mec.biz.dal.dto.RegisterDto;
 import com.ym.mec.biz.dal.dto.StudentAddDto;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
+import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
 import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
+import com.ym.mec.biz.dal.dto.StudentRegisterInstrumentsDetailDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
@@ -110,6 +113,7 @@ import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
+import com.ym.mec.biz.dal.page.MusicGroupRecordStudentQueryInfo;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -1735,8 +1739,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId) {
-        return studentRegistrationDao.queryStudentMusicGroupInfo(userId);
+    public List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId,String musicGroupId) {
+        return studentRegistrationDao.queryStudentMusicGroupInfo(userId,musicGroupId);
     }
 
     @Override
@@ -2010,6 +2014,26 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
 	@Override
+	public PageInfo<StudentRegisterInstrumentsDetailDto> queryStudentRegisterInstrumentsDetailList(MusicGroupRecordStudentQueryInfo queryInfo) {
+		PageInfo<StudentRegisterInstrumentsDetailDto> pageInfo = new PageInfo<StudentRegisterInstrumentsDetailDto>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<StudentRegisterInstrumentsDetailDto> dataList = null;
+		int count = studentRegistrationDao.queryStudentRegisterInstrumentsDetailCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = studentRegistrationDao.queryStudentRegisterInstrumentsDetailList(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<StudentRegisterInstrumentsDetailDto>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
     @Transactional(rollbackFor = Exception.class)
 	public Boolean setCloudTeacherToFailed(StudentRegistration studentRegistration) {
         

+ 118 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -50,6 +50,8 @@ public class StudentServeServiceImpl implements StudentServeService {
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
     private MusicGroupDao musicGroupDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -1041,4 +1043,120 @@ public class StudentServeServiceImpl implements StudentServeService {
     public void cleanStudentMember() {
         studentDao.cleanStudentMember();
     }
+
+    @Override
+    public List<IndexBaseDto> musicGroupHomeworkStat(String musicGroupId, Integer studentId, String startDayStr, String endDayStr) {
+        List<IndexBaseDto> result = new ArrayList<>();
+        List<StudentRegistration> musicGroupStu = studentRegistrationDao.getMusicGroupStu(musicGroupId);
+        List<Integer> studentIds = new ArrayList<>();
+        if(Objects.nonNull(studentId)){
+            studentIds.add(studentId);
+        }else if(!CollectionUtils.isEmpty(musicGroupStu)){
+            studentIds = musicGroupStu.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
+        }
+
+        LocalDate startDate = LocalDate.parse(startDayStr, DateUtil.dateFormatter);
+        LocalDate endDate = LocalDate.parse(endDayStr, DateUtil.dateFormatter);
+        List<String> mondayDateStrs = new ArrayList<>();
+        while (startDate.compareTo(endDate)<0){
+            LocalDate monDayDate = startDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+            mondayDateStrs.add(monDayDate.toString());
+            startDate = startDate.plusDays(7);
+        }
+
+        Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = new HashMap<>();
+
+        List<IndexBaseMonthData> d1 = new ArrayList<>();
+        List<IndexBaseMonthData> d2 = new ArrayList<>();
+        List<IndexBaseMonthData> d3 = new ArrayList<>();
+        if(StringUtils.isNotBlank(musicGroupId) && !CollectionUtils.isEmpty(studentIds)){
+            d1 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, musicGroupId,null, studentIds);
+            d2 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, musicGroupId, "submit", studentIds);
+            d3 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, musicGroupId, "comment", studentIds);
+        }
+        musicGroupHomeworkDataDeal(d1, mondayDateStrs, IndexDataType.HOMEWORK_CREATE_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_CREATE_RATE, d1);
+
+        musicGroupHomeworkDataDeal(d2, mondayDateStrs, IndexDataType.HOMEWORK_SUBMIT_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_SUBMIT_RATE, d2);
+
+        musicGroupHomeworkDataDeal(d3, mondayDateStrs, IndexDataType.HOMEWORK_COMMENT_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_COMMENT_RATE, d3);
+
+        for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
+            IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
+            typeDateMapEntry.getValue().sort(Comparator.comparing(IndexBaseMonthData::getMonth));
+            indexBaseData.setIndexMonthData(typeDateMapEntry.getValue(), null);
+            result.add(indexBaseData);
+        }
+        return result;
+    }
+
+    private List<IndexBaseMonthData> musicGroupHomeworkDataDeal(List<IndexBaseMonthData> dataList, List<String> mondayDateStrs, IndexDataType dataType){
+        if(Objects.isNull(dataList)){
+            dataList = new ArrayList<>();
+        }
+        Set<String> hasMondayDates = dataList.stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
+
+        for (String mondayDate : mondayDateStrs) {
+            if(hasMondayDates.contains(mondayDate)){
+                continue;
+            }
+            IndexBaseMonthData indexBaseMonthData = new IndexBaseMonthData(DateUtil.stringToDate(mondayDate, "yyyy-MM-dd"), null);
+            indexBaseMonthData.setDataType(dataType);
+            indexBaseMonthData.setTotalNum(BigDecimal.ZERO);
+            indexBaseMonthData.setActivateNum(BigDecimal.ZERO);
+            indexBaseMonthData.setPercent(BigDecimal.ZERO);
+            indexBaseMonthData.setDataType(dataType);
+            dataList.add(indexBaseMonthData);
+        }
+        return dataList;
+    }
+
+    @Override
+    public List<IndexBaseDto> musicGroupHomeworkStatWithStu(String musicGroupId, Integer studentId, String startDayStr, String endDayStr) {
+        List<IndexBaseDto> result = new ArrayList<>();
+        List<StudentRegistration> musicGroupStu = studentRegistrationDao.getMusicGroupStu(musicGroupId);
+        List<Integer> studentIds = new ArrayList<>();
+        if(Objects.nonNull(studentId)){
+            studentIds.add(studentId);
+        }else if(!CollectionUtils.isEmpty(musicGroupStu)){
+            studentIds = musicGroupStu.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
+        }
+
+        LocalDate startDate = LocalDate.parse(startDayStr, DateUtil.dateFormatter);
+        LocalDate endDate = LocalDate.parse(endDayStr, DateUtil.dateFormatter);
+        List<String> mondayDateStrs = new ArrayList<>();
+        while (startDate.compareTo(endDate)<0){
+            LocalDate monDayDate = startDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+            mondayDateStrs.add(monDayDate.toString());
+            startDate = startDate.plusDays(7);
+        }
+
+        Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = new HashMap<>();
+
+        List<IndexBaseMonthData> d1 = new ArrayList<>();
+        List<IndexBaseMonthData> d2 = new ArrayList<>();
+        List<IndexBaseMonthData> d3 = new ArrayList<>();
+        if(StringUtils.isNotBlank(musicGroupId) && !CollectionUtils.isEmpty(studentIds)){
+            d1 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, musicGroupId,null, studentIds);
+            d2 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, musicGroupId, "submit", studentIds);
+            d3 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, musicGroupId, "comment", studentIds);
+        }
+        musicGroupHomeworkDataDeal(d1, mondayDateStrs, IndexDataType.HOMEWORK_CREATE_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_CREATE_RATE, d1);
+
+        musicGroupHomeworkDataDeal(d2, mondayDateStrs, IndexDataType.HOMEWORK_SUBMIT_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_SUBMIT_RATE, d2);
+
+        musicGroupHomeworkDataDeal(d3, mondayDateStrs, IndexDataType.HOMEWORK_COMMENT_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_COMMENT_RATE, d3);
+
+        for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
+            IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
+            indexBaseData.setPercent(typeDateMapEntry.getValue().stream().map(IndexBaseMonthData::getTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+            result.add(indexBaseData);
+        }
+        return result;
+    }
 }

+ 18 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -40,6 +40,12 @@
         <result column="status" property="musicGroupStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
+    <resultMap id="Mapper" type="com.ym.mec.biz.dal.dto.Mapper">
+        <result column="key_" property="key"/>
+        <result column="value_" property="value"/>
+        <result column="courseScheduleId_" property="courseScheduleId"/>
+    </resultMap>
+
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ClassGroup" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO class_group
@@ -946,6 +952,12 @@
         where cg.music_group_id_ = #{musicGroupId} AND cgsm.user_id_ = #{teacherId}
         AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND cg.group_type_ = 'MUSIC'
     </select>
+    <select id="queryStudentClassGroups" resultMap="ClassGroup">
+        SELECT cg.* FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        where cg.music_group_id_ = #{musicGroupId} AND cgsm.user_id_ = #{studentId}
+        AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND cg.group_type_ = 'MUSIC'
+    </select>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
         <result column="class_group_id_" property="classGroupId"/>
@@ -1521,4 +1533,10 @@
     <select id="countCourseNum" resultType="int">
         SELECT COUNT(id_) FROM course_schedule WHERE class_group_id_ = #{classGroupId} AND teach_mode_ = #{teachMode} AND pre_course_flag_ = 0
     </select>
+    
+    <select id="countTeacherByMusicGroupId" resultMap="Mapper">
+		select cg.id_ courseScheduleId_,cg.name_ key_,GROUP_CONCAT(u.real_name_) value_ from class_group cg LEFT JOIN class_group_teacher_mapper cgtm on cg.id_ = cgtm.class_group_id_
+		LEFT JOIN sys_user u on u.id_ = cgtm.user_id_
+		where cg.del_flag_ = 0 and cg.group_type_ = 'MUSIC' and cg.music_group_id_ = #{musicGroupId}  group by cg.id_ order by cg.type_
+    </select>
 </mapper>

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -197,10 +197,12 @@
             su.username_,
             su.avatar_,
             cssp.be_merged_,
+            st.current_grade_num_,
             IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
         FROM
             course_schedule_student_payment cssp
             LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+            LEFT JOIN student st ON st.user_id_ = su.id_
             LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
         WHERE
             cssp.course_schedule_id_ =#{courseScheduleId}

+ 123 - 0
mec-biz/src/main/resources/config/mybatis/CooperationOrganLinkmanMapper.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.biz.dal.dao.CooperationOrganLinkmanDao">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.CooperationOrganLinkman"
+		id="CooperationOrganLinkman">
+		<result column="id_" property="id" />
+		<result column="cooperation_organ_id_" property="cooperationOrganId" />
+		<result column="linkman_" property="linkman" />
+		<result column="mobile_no_" property="mobileNo" />
+		<result column="job_" property="job" />
+		<result column="create_time_" property="createTime" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="CooperationOrganLinkman">
+		SELECT *
+		FROM cooperation_organ_linkman WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="CooperationOrganLinkman">
+		SELECT * FROM
+		cooperation_organ_linkman ORDER BY id_
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CooperationOrganLinkman"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO cooperation_organ_linkman
+		(id_,cooperation_organ_id_,linkman_,mobile_no_,job_,create_time_)
+		VALUES(#{id},#{cooperationOrganId},#{linkman},#{mobileNo},#{job},#{createTime})
+	</insert>
+	
+	<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO cooperation_organ_linkman
+		(id_,cooperation_organ_id_,linkman_,mobile_no_,job_,create_time_)
+		VALUES
+		<foreach collection="list" item="item" separator=",">
+		(#{item.id},#{item.cooperationOrganId},#{item.linkman},#{item.mobileNo},#{item.job},#{item.createTime})
+		</foreach>
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CooperationOrganLinkman">
+		UPDATE cooperation_organ_linkman
+		<set>
+			<if test="cooperationOrganId != null">
+				cooperation_organ_id_ = #{cooperationOrganId},
+			</if>
+			<if test="job != null">
+				job_ = #{job},
+			</if>
+			<if test="id != null">
+				id_ = #{id},
+			</if>
+			<if test="linkman != null">
+				linkman_ = #{linkman},
+			</if>
+			<if test="mobileNo != null">
+				mobile_no_ = #{mobileNo},
+			</if>
+			<if test="createTime != null">
+				create_time_ = #{createTime},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+	
+	<update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.CooperationOrganLinkman">
+        <foreach collection="cooperationOrganLinkmans" item="cooperationOrganLinkman" separator=";">
+			UPDATE cooperation_organ_linkman
+			<set>
+				<if test="cooperationOrganLinkman.cooperationOrganId != null">
+					cooperation_organ_id_ = #{cooperationOrganLinkman.cooperationOrganId},
+				</if>
+				<if test="cooperationOrganLinkman.job != null">
+					job_ = #{cooperationOrganLinkman.job},
+				</if>
+				<if test="cooperationOrganLinkman.id != null">
+					id_ = #{cooperationOrganLinkman.id},
+				</if>
+				<if test="cooperationOrganLinkman.linkman != null">
+					linkman_ = #{cooperationOrganLinkman.linkman},
+				</if>
+				<if test="cooperationOrganLinkman.mobileNo != null">
+					mobile_no_ = #{cooperationOrganLinkman.mobileNo},
+				</if>
+				<if test="cooperationOrganLinkman.createTime != null">
+					create_time_ = #{cooperationOrganLinkman.createTime},
+				</if>
+			</set>
+			WHERE id_ = #{cooperationOrganLinkman.id}
+        </foreach>
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM cooperation_organ_linkman WHERE id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="CooperationOrganLinkman" parameterType="map">
+		SELECT * FROM cooperation_organ_linkman ORDER BY id_
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM cooperation_organ_linkman
+	</select>
+	
+	<select id="queryByCooperationOrganId" resultMap="CooperationOrganLinkman">
+		SELECT * FROM cooperation_organ_linkman where cooperation_organ_id_ = #{cooperationOrganId} ORDER BY id_ asc
+	</select>
+	
+	<delete id="deleteByCooperationOrganId">
+		DELETE FROM cooperation_organ_linkman WHERE cooperation_organ_id_ = #{cooperationOrganId}
+	</delete>
+</mapper>

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -25,6 +25,10 @@
     <resultMap type="com.ym.mec.biz.dal.entity.CooperationOrgan" id="ExtCooperationOrgan" extends="CooperationOrgan">
         <result column="organ_id_" property="organization.id"/>
         <result column="organ_name_" property="organization.name"/>
+        <collection property="cooperationOrganLinkmanList"
+                     select="com.ym.mec.biz.dal.dao.CooperationOrganLinkmanDao.queryByCooperationOrganId"
+                     column="id_">
+        </collection>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->

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

@@ -2346,6 +2346,42 @@
         AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 1
         GROUP BY cs.class_group_id_
     </select>
+    <select id="countTotalNumByClassGroupIds" resultType="java.util.Map">
+        SELECT cs.class_group_id_ 'key',COUNT(cs.id_) 'value' FROM course_schedule cs
+        WHERE cs.class_group_id_ IN
+        <foreach collection="classGroupIds" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="startClassDate != null">
+            AND cs.class_date_ >= DATE_FORMAT(#{startClassDate}, '%Y%m%d')
+        </if>
+        <if test="endClassDate != null">
+            AND cs.class_date_ &lt;= DATE_FORMAT(#{endClassDate}, '%Y%m%d')
+        </if>
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        GROUP BY cs.class_group_id_
+    </select>
+    <select id="queryCourseTypeByClassGroupIds" resultType="java.lang.String">
+        SELECT DISTINCT c.type_ FROM (
+        SELECT DISTINCT cs.type_ FROM course_schedule cs
+        WHERE cs.class_group_id_ = #{dto.classGroupId}
+        <if test="dto.startSchoolTerm != null">
+            AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+        </if>
+        <if test="dto.endSchoolTerm != null">
+            AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+        </if>
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        UNION ALL
+        SELECT DISTINCT tp.course_type_ type_ FROM music_group_train_plan tp
+        WHERE tp.class_group_id_ = #{dto.classGroupId}
+        <if test="dto.startSchoolTerm != null">
+            AND tp.start_school_term_ = DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+        </if>
+        <if test="dto.endSchoolTerm != null">
+            AND tp.end_school_term_ = DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+        </if>) c
+    </select>
     <select id="countCurrentNumByClassGroupId" resultType="java.util.Map">
         SELECT cs.class_group_id_ 'key',COUNT(cs.id_) 'value' FROM course_schedule cs
         WHERE cs.class_group_id_ IN
@@ -2368,6 +2404,21 @@
         AND cs.status_ != 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
         GROUP BY cs.class_group_id_
     </select>
+    <select id="countExpendNumByClassGroupIds" resultType="java.util.Map">
+        SELECT cs.class_group_id_ 'key',COUNT(cs.id_) 'value' FROM course_schedule cs
+        WHERE cs.class_group_id_ IN
+        <foreach collection="classGroupIds" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="startClassDate != null">
+            AND cs.class_date_ >= DATE_FORMAT(#{startClassDate}, '%Y%m%d')
+        </if>
+        <if test="endClassDate != null">
+            AND cs.class_date_ &lt;= DATE_FORMAT(#{endClassDate}, '%Y%m%d')
+        </if>
+        AND cs.status_ != 'NOT_START' AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+        GROUP BY cs.class_group_id_
+    </select>
 
     <select id="findUserSurplusCourseInfoByGroup" resultMap="StudentCourseInfoDto">
         SELECT cs.id_,
@@ -2612,6 +2663,12 @@
         <if test="endTime!=null">
             AND cs.class_date_ &lt;= DATE_FORMAT(#{endTime},"%Y-%m-%d")
         </if>
+        <if test="startClassTimeStr!=null">
+            AND cs.start_class_time_ &gt;= #{startClassTimeStr}
+        </if>
+        <if test="endClassTimeStr!=null">
+            AND cs.end_class_time_ &lt;= #{endClassTimeStr}
+        </if>
         <if test="courseStatus!=null">
             AND cs.status_ = #{courseStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
@@ -3947,4 +4004,27 @@
         SELECT count(id_) FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = 'MUSIC' AND is_lock_ = 1 AND pre_course_flag_ = 1
                                         AND CONCAT(class_date_,' ', start_class_time_) &lt;= NOW()
     </select>
+    <select id="queryClassDateList" resultType="java.lang.String">
+        SELECT CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',end_class_time_) start_class_time_ FROM course_schedule cs
+        WHERE cs.class_date_ BETWEEN #{dto.startSchoolTerm} AND #{dto.endSchoolTerm}
+        AND cs.class_group_id_ = #{dto.classGroupId} AND cs.type_ = #{dto.courseScheduleType}
+        AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND cs.del_flag_ = 0
+        ORDER BY cs.class_date_,cs.start_class_time_
+    </select>
+    <select id="countCourseByClassAndType" resultType="int">
+        SELECT COUNT(cs.id_) FROM course_schedule cs
+        WHERE cs.class_group_id_ = #{dto.classGroupId} AND cs.type_ = #{dto.courseScheduleType}
+        <if test="dto.startSchoolTerm != null">
+            AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+        </if>
+        <if test="dto.endSchoolTerm != null">
+            AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+        </if>
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+    </select>
+    <select id="getCourseNumNo" resultType="int">
+        SELECT COUNT(id_) FROM course_schedule
+        WHERE class_date_ BETWEEN #{schoolTerm.startSchoolTerm} AND #{schoolTerm.endSchoolTerm} AND class_group_id_ = #{schoolTerm.classGroupId} AND type_ = #{schoolTerm.courseScheduleType}
+        AND CONCAT(class_date_,' ',start_class_time_) &lt;= #{schoolTerm.courseClassTime} AND is_lock_ = 0 AND del_flag_ = 0 AND pre_course_flag_ = 0
+    </select>
 </mapper>

+ 25 - 3
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -485,7 +485,7 @@
 	<select id="getGroupCourseDataWithGroup" resultMap="IndexBaseMonthData">
 		SELECT
 		m.organ_id_,
-		#{dayStr} month_,
+		m.class_date_ month_,
 		COUNT( m.id_ ) total_num_,
 		COUNT( m.id_ ) activate_num_,
 		COUNT( m.id_ ) percent_
@@ -503,11 +503,24 @@
 		<if test="dayStr!=null and dayStr!=''">
 			AND m.class_date_ = #{dayStr}
 		</if>
+		<if test="startDate!=null and endDate!=''">
+			AND m.class_date_ BETWEEN #{startDate} AND #{endDate}
+		</if>
 		<if test="teachMode!=null">
 			AND m.teach_mode_ = #{teachMode, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
-		GROUP BY
-			m.organ_id_
+		<if test="organIds!=null and organIds.size()>0">
+			AND m.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		<if test="dayStr!=null and dayStr!=''">
+			GROUP BY m.organ_id_
+		</if>
+		<if test="startDate!=null and endDate!=''">
+			GROUP BY m.class_date_
+		</if>
 		ORDER BY
 			m.organ_id_;
 	</select>
@@ -532,9 +545,18 @@
 		<if test="dayStr!=null and dayStr!=''">
 			AND m.class_date_ = #{dayStr}
 		</if>
+		<if test="startDate!=null and endDate!=null">
+			AND m.class_date_ BETWEEN #{startDate} AND #{endDate}
+		</if>
 		<if test="teachMode!=null">
 			AND m.teach_mode_ = #{teachMode, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
+		<if test="organIds!=null and organIds.size()>0">
+			AND m.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
 		GROUP BY
 		m.organ_id_,vgc.name_
 		ORDER BY

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

@@ -43,6 +43,20 @@
         <result column="cloud_teacher_type_" property="cloudTeacherType"/>
         <result column="course_view_type_" property="courseViewType"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_show_record_of_student_" property="isShowRecordOfStudent"/>
+    </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.MusicGroupBasicDto" id="MusicGroupBasicDto" extends="MusicGroup">
+    	<result column="organ_name_" property="organName"/>
+        <result column="school_name_" property="schoolName"/>
+        <result column="charge_type_name_" property="chargeTypeName"/>
+        <result column="cooperation_organ_name_" property="cooperationOrganName"/>
+        <result column="team_teacher_name_" property="teamTeacherName"/>
+        <result column="edu_teacher_name_" property="educationalTeacherName"/>
+        <result column="teans_teacher_name_" property="transactionTeacherName"/>
+        <result column="teans_teacher_phone_" property="transactionTeacherPhone"/>
+        <result column="dir_teacher_name_" property="directorUserName"/>
+        <result column="repair_teacher_name_" property="repairUserName"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -58,6 +72,18 @@
         WHERE id_ = #{id} for
         update
     </select>
+    
+    <select id="queryBasicInfo" resultMap="MusicGroupBasicDto">
+        SELECT mg.*,o.name_ organ_name_,s.name_ school_name_ ,co.name_ cooperation_organ_name_,ct.name_ charge_type_name_,
+        u1.real_name_ edu_teacher_name_,u2.real_name_ teans_teacher_name_,u2.phone_ teans_teacher_phone_,
+        u3.real_name_ team_teacher_name_,u4.real_name_ dir_teacher_name_,u5.real_name_ repair_teacher_name_
+        FROM music_group mg left join organization o on mg.organ_id_ = o.id_
+        left join school s on mg.school_id_ = s.id_ left join cooperation_organ co on co.id_ = mg.cooperation_organ_id_
+        left join charge_type ct on ct.id_ = mg.charge_type_id_ left join sys_user u1 on u1.id_ = mg.educational_teacher_id_
+        left join sys_user u2 on u2.id_ = mg.transaction_teacher_id_ left join sys_user u3 on u3.id_ = mg.team_teacher_id_
+        left join sys_user u4 on u4.id_ = mg.director_user_id_ left join sys_user u5 on u5.id_ = mg.repair_user_id_
+        WHERE mg.id_ = #{id}
+    </select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="MusicGroup">
@@ -192,6 +218,7 @@
         </set>
         WHERE id_ = #{id}
     </update>
+    
     <update id="batchUpdateEdu">
         UPDATE music_group
         SET educational_teacher_id_ = #{educationUserId}
@@ -225,7 +252,7 @@
                 AND charge_type_id_ = #{chargeTypeId}
             </if>
             <if test="musicGroupStatus != null">
-                AND status_ = #{musicGroupStatus}
+                AND FIND_IN_SET(status_,#{musicGroupStatus})
             </if>
             <if test="musicGroupId != null">
                 AND FIND_IN_SET(id_,#{musicGroupId})
@@ -276,6 +303,7 @@
         <result column="music_group_num_" property="musicGroupNum"/>
         <result column="music_group_status_" property="musicGroupStatus"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_show_record_of_student_" property="isShowRecordOfStudent"/>
     </resultMap>
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
@@ -288,6 +316,7 @@
              , s.id_        subject_id_
              , mg.id_       music_group_id_
              , mg.status_   music_group_status_
+             , mg.is_show_record_of_student_
         FROM student_registration sr
                      LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
                      LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
@@ -908,4 +937,8 @@
             </if>
         </where>
     </sql>
+    
+    <update id="updateIsShowRecordOfStudent" parameterType="map">
+    	update music_group set is_show_record_of_student_ = #{isShowRecordOfStudent},update_time_ = now() where id_ = #{musicGroupId}
+    </update>
 </mapper>

+ 100 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupNewsMapper.xml

@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupNewsDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupNews" id="MusicGroupNews">
+		<result column="id_" property="id" />
+		<result column="title_" property="title" />
+		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="link_url_" property="linkUrl" />
+		<result column="order_" property="order" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="author_" property="author" />
+		<result column="operator_id_" property="operatorId" />
+		<result column="real_name_" property="operatorName" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="MusicGroupNews" >
+		SELECT * FROM music_group_news WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="MusicGroupNews">
+		SELECT * FROM music_group_news ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupNews" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO music_group_news (title_,status_,link_url_,order_,music_group_id_,author_,operator_id_,create_time_,update_time_)
+		VALUES(#{title},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{linkUrl},#{order},#{musicGroupId},#{author},#{operatorId},NOW(),NOW())
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupNews">
+		UPDATE music_group_news <set>
+		<if test="operatorId != null">
+		operator_id_ = #{operatorId},
+		</if>
+		<if test="status != null">
+		status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		</if>
+		<if test="author != null">
+		author_ = #{author},
+		</if>
+		<if test="title != null">
+		title_ = #{title},
+		</if>
+		<if test="linkUrl != null">
+		link_url_ = #{linkUrl},
+		</if>
+		<if test="order != null">
+		order_ = #{order},
+		</if>
+		<if test="musicGroupId != null">
+		music_group_id_ = #{musicGroupId},
+		</if>
+		update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM music_group_news WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="MusicGroupNews" parameterType="map">
+		SELECT mgn.*,su.real_name_ FROM music_group_news mgn
+		LEFT JOIN sys_user su ON  su.id_ = mgn.operator_id_
+		<where>
+			<if test="search != null and search != ''">
+				mgn.music_group_id_ = #{search}
+			</if>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				mgn.music_group_id_ = #{musicGroupId}
+			</if>
+		</where>
+		ORDER BY mgn.id_ DESC
+		<include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(mgn.id_) FROM music_group_news mgn
+		<where>
+			<if test="search != null and search != ''">
+				mgn.music_group_id_ = #{search}
+			</if>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				mgn.music_group_id_ = #{musicGroupId}
+			</if>
+		</where>
+	</select>
+</mapper>

+ 135 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPerformanceMapper.xml

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupPerformanceDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupPerformance" id="MusicGroupPerformance">
+		<result column="id_" property="id" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="name_" property="name" />
+		<result column="music_score_name_" property="musicScoreName" />
+		<result column="operator_" property="operator" />
+		<result column="operator_name_" property="operatorName" />
+		<result column="order_" property="order" />
+		<result column="start_time_" property="startTime" />
+		<result column="sub_day_" property="subDay" />
+		<result column="music_group_name_" property="musicGroupName" />
+		<result column="organ_name_" property="organName" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="MusicGroupPerformance" >
+		SELECT * FROM music_group_performance WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="MusicGroupPerformance">
+		SELECT * FROM music_group_performance ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPerformance" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO music_group_performance (music_group_id_,name_,music_score_name_,operator_,order_,start_time_,create_time_,update_time_)
+		VALUES(#{musicGroupId},#{name},#{musicScoreName},#{operator},#{order},#{startTime},NOW(),NOW())
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPerformance">
+		UPDATE music_group_performance <set>
+		<if test="operator != null">
+		operator_ = #{operator},
+		</if>
+		<if test="musicScoreName != null">
+		music_score_name_ = #{musicScoreName},
+		</if>
+		<if test="musicGroupId != null">
+		music_group_id_ = #{musicGroupId},
+		</if>
+		<if test="order != null">
+		order_ = #{order},
+		</if>
+		<if test="name != null">
+		name_ = #{name},
+		</if>
+		<if test="startTime != null">
+		start_time_ = #{startTime},
+		</if>
+		update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM music_group_performance WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="MusicGroupPerformance" parameterType="map">
+		SELECT mgp.*,su.real_name_ operator_name_ FROM music_group_performance mgp
+		LEFT JOIN sys_user su ON  su.id_ = mgp.operator_
+		<where>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				AND mgp.music_group_id_ = #{musicGroupId}
+			</if>
+		</where>
+		ORDER BY mgp.order_ ASC,mgp.start_time_ ASC
+		<include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(mgp.id_) FROM music_group_performance mgp
+		<where>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				AND mgp.music_group_id_ = #{musicGroupId}
+			</if>
+		</where>
+	</select>
+    <select id="findNoStart" resultMap="MusicGroupPerformance">
+		SELECT mgp.* FROM music_group_performance mgp
+		LEFT JOIN music_group mg ON mg.id_ = mgp.music_group_id_
+		WHERE DATEDIFF(DATE_FORMAT(start_time_, '%Y-%m-%d'),DATE_FORMAT(NOW(), '%Y-%m-%d')) >= 0
+		<if test="educationUserId != null">
+			AND mg.educational_teacher_id_ = #{educationUserId}
+		</if>
+		<if test="organIds != null and organIds != ''">
+			AND FIND_IN_SET(mg.organ_id_,#{organIds})
+		</if>
+	</select>
+	<select id="queryNoStart" resultMap="MusicGroupPerformance">
+		SELECT mgp.*,mg.name_ music_group_name_,o.name_ organ_name_,DATEDIFF(DATE_FORMAT(mgp.start_time_, '%Y-%m-%d'),DATE_FORMAT(NOW(), '%Y-%m-%d')) sub_day_
+		FROM music_group_performance mgp
+		LEFT JOIN music_group mg ON mg.id_ = mgp.music_group_id_
+		LEFT JOIN organization o ON o.id_ = mg.organ_id_
+		WHERE DATEDIFF(DATE_FORMAT(mgp.start_time_, '%Y-%m-%d'),DATE_FORMAT(NOW(), '%Y-%m-%d')) >= 0
+		<if test="educationUserId != null">
+			AND mg.educational_teacher_id_ = #{educationUserId}
+		</if>
+		<if test="search != null and search != ''">
+			AND (mg.id_ = #{search} OR mg.name_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(mg.organ_id_,#{organId})
+		</if>
+		<include refid="global.limit"/>
+	</select>
+	<select id="countNoStart" resultType="java.lang.Integer">
+		SELECT COUNT(mgp.id_) FROM music_group_performance mgp
+		LEFT JOIN music_group mg ON mg.id_ = mgp.music_group_id_
+		WHERE DATEDIFF(DATE_FORMAT(start_time_, '%Y-%m-%d'),DATE_FORMAT(NOW(), '%Y-%m-%d')) >= 0
+		<if test="educationUserId != null">
+			AND mg.educational_teacher_id_ = #{educationUserId}
+		</if>
+		<if test="search != null and search != ''">
+			AND (mg.id_ = #{search} OR mg.name_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(mg.organ_id_,#{organId})
+		</if>
+	</select>
+</mapper>

+ 90 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupQuestionnaireMapper.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupQuestionnaireDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire" id="MusicGroupQuestionnaire">
+		<result column="id_" property="id" />
+		<result column="questionnaire_topic_id_" property="questionnaireTopicId" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="target_" property="target" />
+		<result column="operator_id_" property="operatorId" />
+		<result column="real_name_" property="operatorName" />
+		<result column="question_time_" property="questionTime" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="MusicGroupQuestionnaire" >
+		SELECT mgq.*,su.real_name_ FROM music_group_questionnaire mgq
+		LEFT JOIN sys_user su ON su.id_ = mgq.operator_id_
+		WHERE mgq.id_ = #{id}
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="MusicGroupQuestionnaire">
+		SELECT * FROM music_group_questionnaire ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO music_group_questionnaire (questionnaire_topic_id_,music_group_id_,target_,operator_id_,question_time_,create_time_,update_time_)
+		VALUES(#{questionnaireTopicId},#{musicGroupId},#{target},#{operatorId},#{questionTime},NOW(),NOW())
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire">
+		UPDATE music_group_questionnaire <set>
+		<if test="operatorId != null">
+			operator_id_ = #{operatorId},
+		</if>
+		<if test="target != null">
+			target_ = #{target},
+		</if>
+		<if test="questionnaireTopicId != null">
+			questionnaire_topic_id_ = #{questionnaireTopicId},
+		</if>
+		<if test="questionTime != null">
+			question_time_ = #{questionTime},
+		</if>
+		<if test="musicGroupId != null">
+			music_group_id_ = #{musicGroupId},
+		</if>
+			update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM music_group_questionnaire WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="MusicGroupQuestionnaire" parameterType="map">
+		SELECT mgq.*,su.real_name_ FROM music_group_questionnaire mgq
+		LEFT JOIN sys_user su ON su.id_ = mgq.operator_id_
+		<include refid="queryPageSql"/>
+		ORDER BY mgq.id_
+		<include refid="global.limit"/>
+	</select>
+	<sql id="queryPageSql">
+		<where>
+			<if test="search != null and search != ''">
+				AND mgq.music_group_id_ = #{search}
+			</if>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				AND mgq.music_group_id_ = #{musicGroupId}
+			</if>
+		</where>
+	</sql>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(mgq.id_) FROM music_group_questionnaire mgq
+		<include refid="queryPageSql"/>
+	</select>
+</mapper>

+ 196 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupTrainPlanMapper.xml

@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupTrainPlanDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupTrainPlan" id="MusicGroupTrainPlan">
+		<result column="id_" property="id" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="class_group_id_" property="classGroupId" />
+		<result column="course_type_" property="courseType" />
+		<result column="plan_" property="plan" />
+		<result column="start_school_term_" property="startSchoolTerm" />
+		<result column="end_school_term_" property="endSchoolTerm" />
+		<result column="update_time_" property="updateTime" />
+		<result column="create_time_" property="createTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="MusicGroupTrainPlan" >
+		SELECT * FROM music_group_train_plan WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="MusicGroupTrainPlan">
+		SELECT * FROM music_group_train_plan
+		<where>
+			<if test="classGroupId != null">
+				AND class_group_id_ = #{classGroupId}
+			</if>
+			<if test="courseScheduleType != null and courseScheduleType != ''">
+				AND course_type_ = #{courseScheduleType}
+			</if>
+			<if test="endSchoolTerm != null">
+				AND end_school_term_ = #{endSchoolTerm}
+			</if>
+			<if test="startSchoolTerm != null">
+				AND start_school_term_ = #{startSchoolTerm}
+			</if>
+		</where>
+		ORDER BY id_
+	</select>
+	<select id="findAllPlan" resultType="java.lang.String">
+		SELECT plan_ FROM music_group_train_plan
+		<where>
+			<if test="classGroupId != null">
+				AND class_group_id_ = #{classGroupId}
+			</if>
+			<if test="courseScheduleType != null and courseScheduleType != ''">
+				AND course_type_ = #{courseScheduleType}
+			</if>
+			<if test="endSchoolTerm != null">
+				AND end_school_term_ = #{endSchoolTerm}
+			</if>
+			<if test="startSchoolTerm != null">
+				AND start_school_term_ = #{startSchoolTerm}
+			</if>
+		</where>
+		ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupTrainPlan" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO music_group_train_plan (music_group_id_,class_group_id_,course_type_,plan_,start_school_term_,end_school_term_,update_time_,create_time_)
+		VALUES(#{musicGroupId},#{classGroupId},#{courseType},#{plan},#{startSchoolTerm},#{endSchoolTerm},NOW(),NOW())
+	</insert>
+    <insert id="add">
+		INSERT INTO music_group_train_plan (music_group_id_,class_group_id_,course_type_,plan_,start_school_term_,end_school_term_,update_time_,create_time_)
+		VALUES
+		<foreach collection="dto.plans" separator="," item="plan">
+			(#{dto.musicGroupId},#{dto.classGroupId},#{dto.courseScheduleType},#{plan},#{dto.startSchoolTerm},#{dto.endSchoolTerm},NOW(),NOW())
+		</foreach>
+	</insert>
+
+    <!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupTrainPlan">
+		UPDATE music_group_train_plan <set>
+		<if test="endSchoolTerm != null">
+		end_school_term_ = #{endSchoolTerm},
+		</if>
+		<if test="classGroupId != null">
+		class_group_id_ = #{classGroupId},
+		</if>
+		<if test="startSchoolTerm != null">
+		start_school_term_ = #{startSchoolTerm},
+		</if>
+		<if test="plan != null">
+		plan_ = #{plan},
+		</if>
+		<if test="courseType != null">
+		course_type_ = #{courseType},
+		</if>
+		<if test="musicGroupId != null">
+		music_group_id_ = #{musicGroupId},
+		</if>
+		update_time_ = NOW(),
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM music_group_train_plan WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="MusicGroupTrainPlan" parameterType="map">
+		SELECT * FROM music_group_train_plan ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM music_group_train_plan
+	</select>
+	<resultMap id="WaitCourseTrainPlanDto" type="com.ym.mec.biz.dal.dto.WaitCourseTrainPlanDto">
+		<result property="classGroupId" column="class_group_id_"/>
+		<result property="classGroupName" column="name_"/>
+		<result property="num" column="num_"/>
+		<result property="scheduleType" column="type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+	</resultMap>
+    <select id="queryWaitCourseTrainPlan" resultMap="WaitCourseTrainPlanDto">
+		SELECT c.class_group_id_,c.type_,c.course_num_ - (CASE WHEN t.course_num_ IS NULL THEN 0 ELSE t.course_num_ END) num_,c.name_ FROM (
+		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,cg.name_ FROM course_schedule cs
+		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
+		WHERE cs.music_group_id_ = #{dto.musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+		<if test="dto.startSchoolTerm != null">
+			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+		</if>
+		GROUP BY cs.class_group_id_,cs.type_) c
+		LEFT JOIN (SELECT tp.class_group_id_,tp.course_type_ type_,COUNT(tp.id_) course_num_,'' name_ FROM music_group_train_plan tp
+				WHERE tp.music_group_id_ = #{dto.musicGroupId}
+				<if test="dto.startSchoolTerm != null">
+					AND tp.start_school_term_ = #{dto.startSchoolTerm}
+				</if>
+				<if test="dto.endSchoolTerm != null">
+					AND tp.end_school_term_ = #{dto.endSchoolTerm}
+				</if>
+				GROUP BY tp.class_group_id_,tp.course_type_) t ON c.type_ = t.type_ AND c.class_group_id_ = t.class_group_id_
+		WHERE c.course_num_ > (CASE WHEN t.course_num_ IS NULL THEN 0 ELSE t.course_num_ END)
+	</select>
+    <select id="queryWaitCourseTrainPlan1" resultMap="WaitCourseTrainPlanDto">
+		SELECT t.class_group_id_,t.type_,t.course_num_ - (CASE WHEN c.course_num_ IS NULL THEN 0 ELSE c.course_num_ END) num_,t.name_
+		FROM (SELECT tp.class_group_id_,tp.course_type_ type_,COUNT(tp.id_) course_num_,cg.name_ FROM music_group_train_plan tp
+		LEFT JOIN class_group cg ON cg.id_ = tp.class_group_id_
+		WHERE tp.music_group_id_ = #{dto.musicGroupId}
+		<if test="dto.startSchoolTerm != null">
+			AND tp.start_school_term_ = #{dto.startSchoolTerm}
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND tp.end_school_term_ = #{dto.endSchoolTerm}
+		</if>
+		GROUP BY tp.class_group_id_,tp.course_type_) t
+		LEFT JOIN (
+		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,'' name_ FROM course_schedule cs
+		WHERE cs.music_group_id_ = #{dto.musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+		<if test="dto.startSchoolTerm != null">
+			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+		</if>
+		GROUP BY cs.class_group_id_,cs.type_) c ON c.class_group_id_ = t.class_group_id_ AND c.type_ = t.type_
+		WHERE t.course_num_ > (CASE WHEN c.course_num_ IS NULL THEN 0 ELSE c.course_num_ END)
+	</select>
+	<select id="countPlanNum" resultType="int">
+		SELECT COUNT(id_) FROM music_group_train_plan
+		WHERE class_group_id_ = #{dto.classGroupId} AND course_type_ = #{dto.courseScheduleType}
+		<if test="dto.startSchoolTerm != null">
+			AND start_school_term_ = #{dto.startSchoolTerm}
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND end_school_term_ = #{dto.endSchoolTerm}
+		</if>
+	</select>
+	<select id="queryPlan" resultMap="MusicGroupTrainPlan">
+		SELECT * FROM music_group_train_plan
+		<where>
+			<if test="schoolTerm.startSchoolTerm != null">
+				AND start_school_term_ = #{schoolTerm.startSchoolTerm}
+			</if>
+			<if test="schoolTerm.endSchoolTerm != null">
+				AND end_school_term_ = #{schoolTerm.endSchoolTerm}
+			</if>
+			<if test="schoolTerm.classGroupId != null">
+				AND class_group_id_ = #{schoolTerm.classGroupId}
+			</if>
+			<if test="schoolTerm.courseScheduleType != null">
+				AND course_type_ = #{schoolTerm.courseScheduleType}
+			</if>
+		</where>
+	</select>
+</mapper>

+ 156 - 0
mec-biz/src/main/resources/config/mybatis/PhotoAlbumMapper.xml

@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.PhotoAlbumDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.PhotoAlbum" id="PhotoAlbum">
+		<result column="id_" property="id" />
+		<result column="music_group_id_" property="musicGroupId" />
+		<result column="name_" property="name" />
+		<result column="client_show_" property="clientShow" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="type_" property="type" />
+		<result column="cover_url_" property="coverUrl" />
+		<result column="cover_thumbnail_url_" property="coverThumbnailUrl" />
+		<result column="order_" property="order" />
+		<result column="time_line_" property="timeLine" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="PhotoAlbum" >
+		SELECT * FROM photo_album_ WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="PhotoAlbum">
+		SELECT * FROM photo_album_ ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.PhotoAlbum" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO photo_album_ (music_group_id_,name_,client_show_,type_,cover_url_,cover_thumbnail_url_,create_time_,update_time_,order_,time_line_)
+		VALUES(#{musicGroupId},#{name},#{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		       #{type},#{coverUrl},#{coverThumbnailUrl},NOW(),NOW(),#{order},#{timeLine})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.PhotoAlbum">
+		UPDATE photo_album_ <set>
+		<if test="timeLine != null">
+			time_line_ = #{timeLine},
+		</if>
+		<if test="coverUrl != null">
+			cover_url_ = #{coverUrl},
+		</if>
+		<if test="order != null">
+			order_ = #{order},
+		</if>
+		<if test="coverThumbnailUrl != null">
+			cover_thumbnail_url_ = #{coverThumbnailUrl},
+		</if>
+		<if test="clientShow != null">
+			client_show_ = #{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		</if>
+		<if test="musicGroupId != null">
+			music_group_id_ = #{musicGroupId},
+		</if>
+		<if test="type != null">
+			type_ = #{type},
+		</if>
+		<if test="name != null">
+			name_ = #{name},
+		</if>
+			update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+	<update id="batchUpdate">
+		<foreach collection="photoAlbumList" item="album" separator=";">
+			UPDATE photo_album_ <set>
+			<if test="album.timeLine != null">
+				time_line_ = #{album.timeLine},
+			</if>
+			<if test="album.coverUrl != null">
+				cover_url_ = #{album.coverUrl},
+			</if>
+			<if test="album.order != null">
+				order_ = #{album.order},
+			</if>
+			<if test="album.coverThumbnailUrl != null">
+				cover_thumbnail_url_ = #{album.coverThumbnailUrl},
+			</if>
+			<if test="album.clientShow != null">
+				client_show_ = #{album.clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="album.musicGroupId != null">
+				music_group_id_ = #{album.musicGroupId},
+			</if>
+			<if test="album.type != null">
+				type_ = #{album.type},
+			</if>
+			<if test="album.name != null">
+				name_ = #{album.name},
+			</if>
+			update_time_ = NOW()
+		</set> WHERE id_ = #{album.id}
+		</foreach>
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM photo_album_ WHERE id_ = #{id} 
+	</delete>
+    <delete id="deleteByIds">
+		DELETE FROM photo_album_ WHERE FIND_IN_SET(id_,#{ids})
+	</delete>
+
+    <!-- 分页查询 -->
+	<select id="queryPage" resultMap="PhotoAlbum" parameterType="map">
+		SELECT * FROM photo_album_
+		<include refid="queryPageSql"/>
+		ORDER BY order_ ASC,id_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<sql id="queryPageSql">
+		<where>
+			<if test="timeLine != null and timeLine != ''">
+				AND DATE_FORMAT(time_line_,"%Y%m") = #{timeLine}
+			</if>
+			<if test="year != null and year != ''">
+				AND DATE_FORMAT(time_line_,"%Y") = #{year}
+			</if>
+			<if test="type != null and type != ''">
+				AND type_ = #{type}
+			</if>
+			<if test="musicGroupId != null and musicGroupId != ''">
+				AND music_group_id_ = #{musicGroupId}
+			</if>
+			<if test="clientShow != null">
+				AND client_show_ = #{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+		</where>
+	</sql>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(id_) FROM photo_album_
+		<include refid="queryPageSql"/>
+	</select>
+	<select id="countTotalNumByAlbumIds" resultType="java.util.Map">
+		SELECT photo_album_id_ 'key',COUNT(id_) 'value' FROM photo_
+		WHERE photo_album_id_ IN
+		<foreach collection="albumIds" separator="," item="albumId" close=")" open="(">
+			#{albumId}
+		</foreach>
+		<if test="clientShow != null">
+			AND client_show_ = #{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		</if>
+		GROUP BY photo_album_id_
+	</select>
+	<select id="findByTypeAndGroupId" resultMap="PhotoAlbum">
+		SELECT * FROM photo_album_ WHERE music_group_id_ = #{musicGroupId} AND type_ = #{type} LIMIT 1
+	</select>
+</mapper>

+ 128 - 0
mec-biz/src/main/resources/config/mybatis/PhotoMapper.xml

@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.PhotoDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.Photo" id="Photo">
+		<result column="id_" property="id" />
+		<result column="photo_album_id_" property="photoAlbumId" />
+		<result column="name_" property="name" />
+		<result column="client_show_" property="clientShow" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="url_" property="url" />
+		<result column="thumbnail_url_" property="thumbnailUrl" />
+		<result column="order_" property="order" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="Photo" >
+		SELECT * FROM photo_ WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="Photo">
+		SELECT * FROM photo_ ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Photo" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO photo_ (photo_album_id_,name_,client_show_,url_,thumbnail_url_,create_time_,update_time_,order_)
+		VALUES(#{photoAlbumId},#{name},#{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{url},#{thumbnailUrl},NOW(),NOW(),#{order})
+	</insert>
+	<insert id="batchInsert">
+		INSERT INTO photo_ (photo_album_id_,name_,client_show_,url_,thumbnail_url_,create_time_,update_time_,order_)
+		VALUES
+		<foreach collection="photoList" item="photo" separator=",">
+			(#{photo.photoAlbumId},#{photo.name},#{photo.clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			 #{photo.url},#{photo.thumbnailUrl},NOW(),NOW(),#{photo.order})
+		</foreach>
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.Photo">
+		UPDATE photo_ <set>
+		<if test="order != null">
+			order_ = #{order},
+		</if>
+		<if test="photoAlbumId != null">
+		photo_album_id_ = #{photoAlbumId},
+		</if>
+		<if test="url != null">
+		url_ = #{url},
+		</if>
+		<if test="clientShow != null">
+		client_show_ = #{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		</if>
+		<if test="thumbnailUrl != null">
+		thumbnail_url_ = #{thumbnailUrl},
+		</if>
+		<if test="name != null">
+		name_ = #{name},
+		</if>
+		update_time_ = NOW()
+		</set> WHERE id_ = #{id}
+	</update>
+    <update id="batchUpdate">
+		<foreach collection="photoList" item="item" separator=";">
+			UPDATE photo_ <set>
+			<if test="item.order != null">
+				order_ = #{item.order},
+			</if>
+			<if test="item.photoAlbumId != null">
+				photo_album_id_ = #{item.photoAlbumId},
+			</if>
+			<if test="item.url != null">
+				url_ = #{item.url},
+			</if>
+			<if test="item.clientShow != null">
+				client_show_ = #{item.clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="item.thumbnailUrl != null">
+				thumbnail_url_ = #{item.thumbnailUrl},
+			</if>
+			<if test="item.name != null">
+				name_ = #{item.name},
+			</if>
+			update_time_ = NOW()
+		</set> WHERE id_ = #{item.id}
+		</foreach>
+	</update>
+
+    <!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM photo_ WHERE id_ = #{id} 
+	</delete>
+	<delete id="deleteByAlbumIds">
+		DELETE FROM photo_ WHERE FIND_IN_SET(photo_album_id_,#{albumIds})
+	</delete>
+	<delete id="deleteByIds">
+		DELETE FROM photo_ WHERE FIND_IN_SET(id_,#{ids})
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="Photo" parameterType="map">
+		SELECT * FROM photo_
+		<include refid="queryPageSql"/>
+		ORDER BY order_ ASC,id_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<sql id="queryPageSql">
+		<where>
+			<if test="photoAlbumId != null">
+				AND photo_album_id_ = #{photoAlbumId}
+			</if>
+			<if test="clientShow != null">
+				AND client_show_ = #{clientShow,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+		</where>
+	</sql>
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(id_) FROM photo_
+		<include refid="queryPageSql"/>
+	</select>
+</mapper>

+ 28 - 6
mec-biz/src/main/resources/config/mybatis/QuestionnaireUserResultMapper.xml

@@ -31,7 +31,10 @@
 		SELECT * FROM questionnaire_user_result
 		<where>
 			<if test="activeId != null">
-				active_id_ = #{activeId}
+				AND active_id_ = #{activeId}
+			</if>
+			<if test="activeType != null and activeType != ''">
+				AND active_type_ = #{activeType}
 			</if>
 		</where>
 		ORDER BY user_id_,id_
@@ -73,16 +76,14 @@
 		<if test="questionnaireTopicId != null">
 			questionnaire_topic_id_ = #{questionnaireTopicId},
 		</if>
-		<if test="updateTime != null">
-			update_time_ = #{updateTime},
-		</if>
 		<if test="questionnaireQuestionItemIdList != null">
 			questionnaire_question_item_id_list_ = #{questionnaireQuestionItemIdList},
 		</if>
 		<if test="additionalValue != null">
 			additional_value_ = #{additionalValue},
 		</if>
-		</set> WHERE id_ = #{id}
+			update_time_ = NOW()
+	</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->
@@ -90,7 +91,11 @@
 		DELETE FROM questionnaire_user_result WHERE id_ = #{id} 
 	</delete>
     <delete id="delByActiveIdAndUserId">
-		DELETE FROM questionnaire_user_result WHERE active_id_ = #{activityId} AND user_id_ = #{userId}
+		DELETE FROM questionnaire_user_result
+		WHERE active_id_ = #{activityId} AND active_type_ = #{activeType}
+		<if test="userId != null">
+		  AND user_id_ = #{userId}
+		</if>
 	</delete>
 
     <!-- 分页查询 -->
@@ -172,4 +177,21 @@
 		GROUP BY qu1.user_id_,qq.id_
 		ORDER BY qu1.user_id_,qq.sort_
 	</select>
+
+	<resultMap id="QuestionnaireResultDto" type="com.ym.mec.biz.dal.dto.QuestionnaireResultDto">
+		<result column="id_" property="userResultId" />
+		<result property="content" column="content_"/>
+		<result property="answerValue" column="answer_value_"/>
+		<result column="questionnaire_question_id_" property="questionnaireQuestionId" />
+		<result column="questionnaire_question_item_id_list_" property="questionnaireQuestionItemIdList" />
+		<result column="additional_value_" property="additionalValue" />
+	</resultMap>
+	<select id="getQuestionResult" resultMap="QuestionnaireResultDto">
+		SELECT qur.*,qq.content_,GROUP_CONCAT(qqi.answer_value_ ORDER BY qqi.sort_) answer_value_ FROM questionnaire_user_result qur
+		LEFT JOIN questionnaire_question qq ON qq.id_ = qur.questionnaire_question_id_
+		LEFT JOIN questionnaire_question_item qqi ON FIND_IN_SET(qqi.id_,qur.questionnaire_question_item_id_list_)
+		WHERE qur.active_id_ = #{activeId} AND qur.active_type_ = #{activeType}
+		GROUP BY qq.id_
+		ORDER BY qq.sort_
+	</select>
 </mapper>

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

@@ -177,6 +177,7 @@
         <result property="groupType" column="group_type_"/>
         <result property="subjectId" column="subject_id_"/>
         <result property="subjectName" column="subject_name_"/>
+        <result property="currentGradeNum" column="current_grade_num_"/>
         <result property="avatar" column="avatar_"/>
         <result property="phone" column="phone_"/>
         <result property="beMerged" column="be_merged_"/>
@@ -483,7 +484,7 @@
     </select>
     <sql id="findStudentAttendanceSql">
         <where>
-            cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+            cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
             <if test="visitFlag != null">
                 <if test="visitFlag == 1">
                     AND sa.visit_flag_ = 1

+ 33 - 0
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -684,4 +684,37 @@
 			  </foreach>
 		  </if>
 	</select>
+
+	<select id="getHomeworkData" resultMap="com.ym.mec.biz.dal.dao.IndexBaseMonthDataDao.IndexBaseMonthData">
+		SELECT
+		sees.monday_ month_,
+		<choose>
+			<when test="type == 'submit'">
+				SUM(sees.actual_exercises_num_) total_num_,
+				SUM(sees.exercises_reply_num_) activate_num_,
+				TRUNCATE(SUM(sees.exercises_reply_num_)/SUM(sees.actual_exercises_num_)*100, 2) percent_
+			</when>
+			<when test="type == 'comment'">
+				SUM(sees.exercises_reply_num_) total_num_,
+				SUM(sees.exercises_message_num_) activate_num_,
+				TRUNCATE(SUM(sees.exercises_message_num_)/SUM(sees.exercises_reply_num_)*100, 2) percent_
+			</when>
+			<otherwise>
+				SUM(sees.expect_exercises_num_-sees.not_over_course_num_) total_num_,
+				SUM(sees.actual_exercises_num_) activate_num_,
+				TRUNCATE(SUM(sees.actual_exercises_num_)/SUM(sees.expect_exercises_num_-sees.not_over_course_num_)*100, 2) percent_
+			</otherwise>
+		</choose>
+		FROM student_extracurricular_exercises_situation_ sees
+		LEFT JOIN teacher tea ON sees.teacher_id_=tea.id_
+		WHERE tea.job_nature_='FULL_TIME'
+		AND DATE_FORMAT(sees.monday_, '%Y-%m-%d')&gt;=#{startDay}
+		AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d')&lt;=#{endDay}
+		AND (sees.serve_type_ = 'EXERCISE' OR EXISTS (SELECT id_ FROM course_schedule WHERE group_type_='MUSIC' AND music_group_id_=#{musicGroupId} AND FIND_IN_SET(id_, sees.course_ids_)))
+		AND sees.student_id_ IN
+		<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+			#{studentId}
+		</foreach>
+		GROUP BY sees.monday_
+	</select>
 </mapper>

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

@@ -209,6 +209,9 @@
                 <if test="item.subjectIdList != null">
                     subject_id_list_ = #{item.subjectIdList},
                 </if>
+                <if test="item.currentGradeNum != null">
+                    current_grade_num_=#{item.currentGradeNum},
+                </if>
                 <if test="item.serviceTag != null">
                     service_tag_ = #{item.serviceTag},
                 </if>

+ 78 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -100,6 +100,12 @@
         <result column="group_name_" property="groupName"/>
     </resultMap>
 
+    <resultMap id="Mapper" type="com.ym.mec.biz.dal.dto.Mapper">
+        <result column="key_" property="key"/>
+        <result column="value_" property="value"/>
+        <result column="subject_id_" property="courseScheduleId"/>
+    </resultMap>
+
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="StudentRegistration">
         SELECT *
@@ -1123,6 +1129,9 @@
         ON mgq.music_group_id_ = sr.music_group_id_
         AND mgq.user_id_ = sr.user_id_ AND mgq.join_date_ = sr.create_time_
         where sr.user_id_ = #{userId}
+        <if test="musicGroupId != null and musicGroupId != ''">
+            AND sr.music_group_id_ = #{musicGroupId}
+        </if>
         order by sr.id_
     </select>
 
@@ -1568,6 +1577,75 @@
         </if>
     </select>
     
+    <select id="countStudentWithSubjectByMusicGroupId" resultMap="Mapper">
+        select sr.actual_subject_id_ subject_id_, s.name_ key_,count(sr.id_) value_ from student_registration sr LEFT JOIN subject s on sr.actual_subject_id_ = s.id_ 
+		where sr.music_group_status_ = 'NORMAL' and sr.music_group_id_ = #{musicGroupId} 
+		group by sr.actual_subject_id_
+    </select>
+    
+    <select id="countStudentWithGradeByMusicGroupId" resultMap="Mapper">
+        select s.current_grade_num_ key_,count(sr.id_) value_ from student_registration sr LEFT JOIN student s on sr.user_id_= s.user_id_
+		where sr.music_group_status_ = 'NORMAL' and sr.music_group_id_ = #{musicGroupId} 
+		group by s.current_grade_num_
+    </select>
+    
+    <select id="queryStudentRegisterInstrumentsDetailList" resultType="com.ym.mec.biz.dal.dto.StudentRegisterInstrumentsDetailDto" parameterType="map">
+        SELECT sr.user_id_ userId,u.username_ name,u.phone_ phone,u.gender_ phone,sub.name_ subjectName,sr.actual_subject_id_ actualSubjectId,s.current_grade_num_ currentGradeNum,
+        si.goods_brand_ goodsBrand,si.goods_name_ goodsName,si.specification_ specification,si.create_time_ goodsBuyTime,si.start_time_ insuranceStartTime,si.end_time_ insuranceEndTime
+		from student_registration sr LEFT JOIN sys_user u on sr.user_id_ = u.id_ 
+		LEFT JOIN student s on s.user_id_ = sr.user_id_ LEFT JOIN `subject` sub on sub.id_ = sr.actual_subject_id_
+		LEFT JOIN (select * from student_instrument where id_ in ((select max(id_) from student_instrument group by student_id_))) si on si.student_id_ = sr.user_id_
+		WHERE sr.music_group_status_ = 'NORMAL' 
+		<if test="musicGroupId != null">
+			AND sr.music_group_id_ = #{musicGroupId}
+		</if>
+		<if test="subjectId != null">
+			AND sr.actual_subject_id_ = #{subjectId}
+		</if>
+		<if test="currentGradeNum != null">
+			AND s.current_grade_num_ = #{currentGradeNum}
+		</if>
+		<if test="isBuyInstrumentsInsurance != null and isBuyInstrumentsInsurance == true">
+			AND si.start_time_ is not null
+		</if>
+		<if test="isBuyInstrumentsInsurance != null and isBuyInstrumentsInsurance == false">
+			AND si.start_time_ is null
+		</if>
+		<if test="search != null and search != ''">
+			AND (u.username_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') or u.id_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+        ORDER BY sr.create_time_ desc
+        <include refid="global.limit"/>
+    </select>
+    
+    <select id="queryStudentRegisterInstrumentsDetailCount" resultType="int" parameterType="map">
+        SELECT count(sr.id_)
+		from student_registration sr LEFT JOIN sys_user u on sr.user_id_ = u.id_ 
+		LEFT JOIN student s on s.user_id_ = sr.user_id_ LEFT JOIN `subject` sub on sub.id_ = sr.actual_subject_id_
+		LEFT JOIN (select * from student_instrument where id_ in ((select max(id_) from student_instrument group by student_id_))) si on si.student_id_ = sr.user_id_
+		WHERE sr.music_group_status_ = 'NORMAL' 
+		<if test="musicGroupId != null">
+			AND sr.music_group_id_ = #{musicGroupId}
+		</if>
+		<if test="subjectId != null">
+			AND sr.actual_subject_id_ = #{subjectId}
+		</if>
+		<if test="currentGradeNum != null">
+			AND s.current_grade_num_ = #{currentGradeNum}
+		</if>
+		<if test="isBuyInstrumentsInsurance != null and isBuyInstrumentsInsurance == true">
+			AND si.start_time_ is not null
+		</if>
+		<if test="isBuyInstrumentsInsurance != null and isBuyInstrumentsInsurance == false">
+			AND si.start_time_ is null
+		</if>
+		<if test="search != null and search != ''">
+			AND (u.username_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') or u.id_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+        ORDER BY sr.create_time_ desc
+        <include refid="global.limit"/>
+    </select>
+    
     <select id="queryStudentApplyDetail" resultType="com.ym.mec.biz.dal.dto.SubjectApplyDetailDto">
         SELECT music_group_id_ musicGroupId,actual_subject_id_ subjectId, COUNT(*) applyStudentNum,SUM(IF(payment_status_ = '2',1,0)) payNum,
         SUM(IF(paying_status_='2',1,0)) checkNum,SUM(IF((payment_status_= '2' and has_cloud_teacher_=1),1,0)) buyCloudTeacherNum,

+ 2 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -115,12 +115,12 @@ public class MusicGroupController extends BaseController {
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryStudentMusicGroupInfo")
-    public Object queryStudentMusicGroupInfo() {
+    public Object queryStudentMusicGroupInfo(String musicGroupId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return succeed(studentRegistrationService.queryStudentMusicGroupInfo(sysUser.getId()));
+        return succeed(studentRegistrationService.queryStudentMusicGroupInfo(sysUser.getId(),musicGroupId));
     }
 
     @ApiOperation("获取学生个人中心乐团信息")

+ 79 - 0
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupDetailController.java

@@ -0,0 +1,79 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.MusicGroupPerformanceQueryInfo;
+import com.ym.mec.biz.dal.page.MusicGroupTeachersQueryInfo;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("musicGroupDetail")
+@Api(tags = "乐团档案服务")
+@RestController
+public class MusicGroupDetailController extends BaseController {
+
+    @Autowired
+    private MusicGroupNewsService musicGroupNewsService;
+    @Autowired
+    private MusicGroupPerformanceService musicGroupPerformanceService;
+    @Autowired
+    private PhotoAlbumService photoAlbumService;
+    @Autowired
+    private PhotoService photoService;
+    @Autowired
+    private MusicGroupTrainPlanService musicGroupTrainPlanService;
+    @Autowired
+    private MusicGroupService musicGroupService;
+    @Autowired
+    private ClassGroupService classGroupService;
+
+    @ApiOperation("获取学员退团页面数据")
+    @RequestMapping(value = "getQuitGroupDetail")
+    public Object getQuitGroupDetail(String musicGroupId) {
+        return succeed(musicGroupService.getQuitGroupDetail(musicGroupId));
+    }
+
+    @ApiOperation("获取乐团训练规划课时")
+    @PostMapping(value = "queryPlanCourseNum")
+    public Object queryPlanCourseNum(@RequestBody MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
+        musicGroupTrainPlanSaveDto.setStudentFlag(true);
+        return succeed(musicGroupTrainPlanService.queryPlanCourseNum(musicGroupTrainPlanSaveDto));
+    }
+
+    @ApiOperation(value = "分页查询乐团资讯")
+    @GetMapping("/queryNewsPage")
+    public Object queryNewsPage(MusicGroupTeachersQueryInfo queryInfo) {
+        return succeed(musicGroupNewsService.queryPage(queryInfo));
+    }
+
+    @ApiOperation("分页查询展演信息")
+    @PostMapping(value = "queryPerformancePage")
+    public Object queryPerformancePage(MusicGroupPerformanceQueryInfo queryInfo) {
+        return succeed(musicGroupPerformanceService.queryPage(queryInfo));
+    }
+
+    @ApiOperation("分页查询相册")
+    @PostMapping(value = "queryAlbumPage")
+    public Object queryAlbumPage(PhotoQueryInfo queryInfo) {
+        queryInfo.setClientShow(YesOrNoEnum.YES);
+        return succeed(photoAlbumService.queryAlbumPage(queryInfo));
+    }
+
+    @ApiOperation("分页查询照片")
+    @PostMapping(value = "queryPhotoPage")
+    public Object queryPhotoPage(PhotoQueryInfo queryInfo) {
+        queryInfo.setClientShow(YesOrNoEnum.YES);
+        return succeed(photoService.queryPhotoPage(queryInfo));
+    }
+
+    @ApiOperation(value = "查询学员班级列表")
+    @GetMapping("queryStudentAndTeacher")
+    public Object queryStudentClassGroupsAndTeacher(String musicGroupId) {
+        return succeed(classGroupService.queryStudentClassGroupsAndTeacher(musicGroupId));
+    }
+}

+ 81 - 0
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRecordController.java

@@ -0,0 +1,81 @@
+package com.ym.mec.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dto.MusicGroupBasicDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.page.MusicGroupRecordStudentQueryInfo;
+import com.ym.mec.biz.service.CooperationOrganLinkmanService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("musicGroupRecord")
+@Api(tags = "乐团档案")
+@RestController
+public class MusicGroupRecordController extends BaseController {
+
+	@Autowired
+	private CooperationOrganLinkmanService cooperationOrganLinkmanService;
+	
+	@Autowired
+	private MusicGroupService musicGroupService;
+	
+	@Autowired
+	private OrganizationService organizationService;
+	
+	@Autowired
+	private StudentRegistrationDao studentRegistrationDao;
+	
+	@Autowired
+	private StudentRegistrationService studentRegistrationService;
+	
+	@Autowired
+	private ClassGroupDao classGroupDao;
+
+	@ApiOperation(value = "查询基本信息")
+	@GetMapping("/queryBasicInfo")
+	public Object queryBasicInfo(String musicGroupId) {
+		
+		MusicGroupBasicDto musicGroupBasicDto = musicGroupService.queryBasicInfo(musicGroupId);
+		
+		if(musicGroupBasicDto != null){
+			Integer cooperationOrganId = musicGroupBasicDto.getCooperationOrganId();
+			musicGroupBasicDto.setCooperationOrganLinkmanList(cooperationOrganLinkmanService.queryByCooperationOrganId(cooperationOrganId));
+		}
+		
+		return succeed(musicGroupBasicDto);
+	}
+
+	@ApiOperation(value = "查询学员、师资")
+	@GetMapping("/queryStudentAndTeacher")
+	public Object queryStudentAndTeacher(String musicGroupId) {
+		
+		MusicGroup musicGroup = musicGroupService.get(musicGroupId);
+		if(musicGroup == null){
+			return failed("乐团信息查询失败");
+		}
+		
+		ModelMap model = new ModelMap();
+
+		model.put("subject", studentRegistrationDao.countStudentWithSubjectByMusicGroupId(musicGroupId));
+		
+		model.put("gradeMap", organizationService.getGradeList(musicGroup.getOrganId()));
+		model.put("grade", studentRegistrationDao.countStudentWithGradeByMusicGroupId(musicGroupId));
+		model.put("teacher", classGroupDao.countTeacherByMusicGroupId(musicGroupId));
+		
+		return succeed(model);
+	}
+
+}

+ 34 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java

@@ -8,15 +8,20 @@ import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
+import com.ym.mec.biz.service.StudentServeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.util.date.DateUtil;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Objects;
@@ -36,6 +41,8 @@ public class StudentCourseHomeworkController extends BaseController {
     private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private StudentServeService studentServeService;
 
     @ApiOperation(value = "提交作业")
     @PostMapping(value = "/add",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@@ -119,4 +126,31 @@ public class StudentCourseHomeworkController extends BaseController {
         return succeed(studentCourseHomeworkPageInfo);
     }
 
+    @ApiOperation(value = "乐团作业情况")
+    @GetMapping("/musicGroupHomeworkStat")
+    public HttpResponseResult musicGroupHomeworkStat(String musicGroupId, String year, Integer term) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+
+        if(StringUtils.isEmpty(year)){
+            throw new BizException("请录入年份");
+        }
+        if(term == null){
+            throw new BizException("请录入学期");
+        }
+        String startDay = "";
+        String endDay = "";
+        if(term == 0){
+            startDay = year + "-03-01";
+            endDay = year + "-08-31";
+        }else {
+            startDay = year + "-09-01";
+            endDay = (Integer.valueOf(year) + 1) + "-02-01";
+        }
+
+        return succeed(studentServeService.musicGroupHomeworkStatWithStu(musicGroupId, sysUser.getId(), startDay, endDay));
+    }
+
 }

+ 0 - 1
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -306,5 +306,4 @@ public class StudentManageController extends BaseController {
         }
         return succeed(organizationService.getGradeList(sysUser.getOrganId()));
     }
-
 }

+ 13 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java

@@ -54,6 +54,8 @@ public class TeacherAttendanceController extends BaseController {
     private CourseScheduleService courseScheduleService;
     @Autowired
     private MusicGroupService musicGroupService;
+    @Autowired
+    private OrganizationService organizationService;
 
     @ApiOperation(value = "新增教师签到")
     @PostMapping("/add")
@@ -74,6 +76,17 @@ public class TeacherAttendanceController extends BaseController {
         return succeed(classGroupService.findAttendanceStudentByCourse(courseScheduleId));
     }
 
+    @ApiOperation(value = "获取用户所在分部的年级列表)")
+    @GetMapping("/getGradeList")
+    public HttpResponseResult<Map<Integer,String>> getGradeList(Long courseScheduleId) {
+        CourseSchedule courseSchedule = courseScheduleService.get(courseScheduleId);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请重新登录");
+        }
+        return succeed(organizationService.getGradeList(courseSchedule.getOrganId()));
+    }
+
     @ApiOperation(value = "点名")
     @PostMapping("/addStudentAttendances")
     @AuditLogAnnotation(operateName = "点名")

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java

@@ -37,7 +37,7 @@ public class CooperationOrganController extends BaseController {
     @ApiOperation(value = "新增合作单位(教学点)")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/add')")
-    public Object add(CooperationOrgan cooperationOrgan) {
+    public Object add(@RequestBody CooperationOrgan cooperationOrgan) {
         cooperationOrganService.insert(cooperationOrgan);
         return succeed();
     }
@@ -53,7 +53,7 @@ public class CooperationOrganController extends BaseController {
     @ApiOperation(value = "修改合作单位(教学点)")
     @PutMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/update')")
-    public Object update(CooperationOrgan cooperationOrgan) {
+    public Object update(@RequestBody CooperationOrgan cooperationOrgan) {
         cooperationOrgan.setUpdateTime(new Date());
         cooperationOrganService.updateCooperation(cooperationOrgan);
         return succeed();

+ 29 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganLinkmanController.java

@@ -0,0 +1,29 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.service.CooperationOrganLinkmanService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("cooperationOrganLinkman")
+@Api(tags = "合作单位联系人服务")
+@RestController
+public class CooperationOrganLinkmanController extends BaseController {
+
+	@Autowired
+	private CooperationOrganLinkmanService cooperationOrganLinkmanService;
+
+	@ApiOperation(value = "查询合作单位联系人列表")
+	@GetMapping("/query")
+	@PreAuthorize("@pcs.hasPermissions('cooperationOrganLinkman/query')")
+	public Object query(Integer cooperationOrganId) {
+		return succeed(cooperationOrganLinkmanService.queryByCooperationOrganId(cooperationOrganId));
+	}
+}

+ 67 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupNewsController.java

@@ -0,0 +1,67 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.MusicGroupNews;
+import com.ym.mec.biz.dal.page.MusicGroupTeachersQueryInfo;
+import com.ym.mec.biz.service.MusicGroupNewsService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.QueryInfo;
+import com.yonge.log.model.AuditLogAnnotation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("musicGroupNews")
+@Api(tags = "乐团资讯服务")
+@RestController
+public class MusicGroupNewsController extends BaseController {
+
+    @Autowired
+    private MusicGroupNewsService musicGroupNewsService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "新增")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupNews/add')")
+    @AuditLogAnnotation(operateName = "新增")
+    public Object add(MusicGroupNews musicGroupNews) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("请登录");
+        }
+        musicGroupNews.setOperatorId(sysUser.getId());
+        return succeed(musicGroupNewsService.insert(musicGroupNews));
+    }
+
+    @ApiOperation(value = "删除")
+    @PostMapping("/del")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupNews/del')")
+    public Object del(Long id) {
+        musicGroupNewsService.delete(id);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupNews/update')")
+    public Object update(MusicGroupNews musicGroupNews) {
+        musicGroupNewsService.update(musicGroupNews);
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupNews/queryPage')")
+    public Object queryPage(MusicGroupTeachersQueryInfo queryInfo) {
+        return succeed(musicGroupNewsService.queryPage(queryInfo));
+    }
+
+}

+ 89 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPerformanceController.java

@@ -0,0 +1,89 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.MusicGroupPerformance;
+import com.ym.mec.biz.dal.page.MusicGroupPerformanceQueryInfo;
+import com.ym.mec.biz.service.MusicGroupPerformanceService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RequestMapping("musicGroupPerformance")
+@Api(tags = "乐团展演信息")
+@RestController
+public class MusicGroupPerformanceController extends BaseController {
+
+	@Autowired
+	private MusicGroupPerformanceService musicGroupPerformanceService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation("新增")
+	@PostMapping(value = "add")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupPerformance/add')")
+	public Object add(@RequestBody MusicGroupPerformance musicGroupPerformance) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("请登录");
+		}
+		musicGroupPerformance.setOperator(sysUser.getId());
+		List<String> musicScoreNames = musicGroupPerformance.getMusicScoreNames();
+		if(musicScoreNames != null && musicScoreNames.size() > 0){
+			for (String musicScoreName : musicScoreNames) {
+				if(musicScoreName.contains(",")){
+					throw new BizException("请勿录入特殊字符");
+				}
+			}
+			musicGroupPerformance.setMusicScoreName(StringUtils.join(musicScoreNames,","));
+		}
+		return succeed(musicGroupPerformanceService.insert(musicGroupPerformance));
+	}
+
+	@ApiOperation("修改")
+	@PostMapping(value = "update")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupPerformance/update')")
+	public Object update(@RequestBody MusicGroupPerformance musicGroupPerformance) {
+		List<String> musicScoreNames = musicGroupPerformance.getMusicScoreNames();
+		if(musicScoreNames != null && musicScoreNames.size() > 0){
+			for (String musicScoreName : musicScoreNames) {
+				if(musicScoreName.contains(",")){
+					throw new BizException("请勿录入特殊字符");
+				}
+			}
+			musicGroupPerformance.setMusicScoreName(StringUtils.join(musicScoreNames,","));
+		}
+		return succeed(musicGroupPerformanceService.update(musicGroupPerformance));
+	}
+
+	@ApiOperation("删除")
+	@PostMapping(value = "del")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupPerformance/del')")
+	public Object del(Integer id) {
+		return succeed(musicGroupPerformanceService.delete(id));
+	}
+
+	@ApiOperation("分页查询")
+	@PostMapping(value = "queryPage")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupPerformance/queryPage')")
+	public Object queryPage(MusicGroupPerformanceQueryInfo queryInfo) {
+		return succeed(musicGroupPerformanceService.queryPage(queryInfo));
+	}
+
+	@ApiOperation("分页查询首页乐团展演列表")
+	@PostMapping(value = "queryNoStartPage")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupPerformance/queryNoStartPage')")
+	public Object queryNoStartPage(MusicGroupPerformanceQueryInfo queryInfo) {
+		return succeed(musicGroupPerformanceService.queryNoStartPage(queryInfo));
+	}
+}

+ 77 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuestionnaireController.java

@@ -0,0 +1,77 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
+import com.ym.mec.biz.dal.page.MusicGroupPerformanceQueryInfo;
+import com.ym.mec.biz.service.MusicGroupQuestionnaireService;
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("musicGroupQuestionnaire")
+@Api(tags = "乐团满意度调查")
+@RestController
+public class MusicGroupQuestionnaireController extends BaseController {
+
+    @Autowired
+    private MusicGroupQuestionnaireService musicGroupQuestionnaireService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "新增")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupQuestionnaire/add')")
+    public Object add(@RequestBody MusicGroupQuestionnaire musicGroupQuestionnaire){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(musicGroupQuestionnaire.getOperatorId() == null){
+            musicGroupQuestionnaire.setOperatorId(sysUser.getId());
+        }
+        musicGroupQuestionnaireService.add(musicGroupQuestionnaire);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取题目详情详情")
+    @GetMapping("/getQuestionDetail")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupQuestionnaire/getQuestionDetail')")
+    public Object getDetail() {
+        return succeed(musicGroupQuestionnaireService.getQuestionDetail());
+    }
+
+    @ApiOperation(value = "删除")
+    @PostMapping("/del")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupQuestionnaire/del')")
+    public Object del(Integer id){
+        musicGroupQuestionnaireService.del(id);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupQuestionnaire/update')")
+    public Object update(@RequestBody MusicGroupQuestionnaire musicGroupQuestionnaire){
+        musicGroupQuestionnaireService.updateResult(musicGroupQuestionnaire);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取详情")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupQuestionnaire/get')")
+    @GetMapping("/get")
+    public Object get(Integer id){
+        return succeed(musicGroupQuestionnaireService.getDetail(id));
+    }
+
+    @ApiOperation(value = "分页查询")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupQuestionnaire/queryPage')")
+    public Object queryPage(MusicGroupPerformanceQueryInfo queryInfo){
+        return succeed(musicGroupQuestionnaireService.queryPage(queryInfo));
+    }
+}

Неке датотеке нису приказане због велике количине промена