浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 5 年之前
父节点
当前提交
a6ea379b4f
共有 21 个文件被更改,包括 312 次插入50 次删除
  1. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentRegisterPerDto.java
  5. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  6. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  7. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  8. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  9. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  10. 3 8
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml
  11. 55 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 9 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  13. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  14. 1 2
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  15. 13 15
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  16. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  17. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/config/ResourceServerConfig.java
  18. 31 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  19. 13 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java
  20. 62 9
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  21. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

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

@@ -192,6 +192,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId, @Param("type") String type);
 
     /**
+     * @describe
+     * @author Joburgess
+     * @date 2019/12/26
+     * @param classDate:
+     * @param teacherId:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     */
+    List<CourseScheduleDto> getTeacherHistoryCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId);
+
+    /**
      * @param params:
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
      * @describe 根据日期获取排课
@@ -257,6 +267,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId, @Param("month") Date month, @Param("type") String type);
 
     /**
+     * @describe 获取教师历史有课日期
+     * @author Joburgess
+     * @date 2019/12/26
+     * @param teacherId: 教师编号
+     * @param month: 月份
+     * @return java.util.List<java.util.Date>
+     */
+    List<Date> getTeacherHistoryCourseScheduleDate(@Param("teacherId") Integer teacherId, @Param("month") Date month);
+
+    /**
      * @param month:
      * @param organId:
      * @return java.util.List<java.util.Date>

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

@@ -91,6 +91,10 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      */
     int batchDeleteWithID(@Param("ids") List<Integer> ids);
 
+
+//    int batchDeleteWithCourseAndUser(@Param("courseScheduleIds") List<Integer> courseScheduleIds,
+//                                     @Param("userId") Integer userId);
+
     /**
      * @param classGroupId:
      * @param userId:

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java

@@ -48,6 +48,11 @@ public class MusicGroupStudentsDto{
 
     private Boolean isActive = false;
 
+
+    private String activeName;
+
+    private String isNewStudentStr;
+
     public Boolean getIsActive() {
         return isActive;
     }
@@ -159,4 +164,20 @@ public class MusicGroupStudentsDto{
     public void setIsNewStudent(Integer isNewStudent) {
         this.isNewStudent = isNewStudent;
     }
+
+    public String getActiveName() {
+        return activeName;
+    }
+
+    public void setActiveName(String activeName) {
+        this.activeName = activeName;
+    }
+
+    public String getIsNewStudentStr() {
+        return isNewStudentStr;
+    }
+
+    public void setIsNewStudentStr(String isNewStudentStr) {
+        this.isNewStudentStr = isNewStudentStr;
+    }
 }

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

@@ -3,12 +3,22 @@ package com.ym.mec.biz.dal.dto;
 public class StudentRegisterPerDto {
     private String organName;
 
+    private String organId;
+
     private Integer studentNum;
 
     private Integer perNum;
 
     private float per;
 
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
     public String getOrganName() {
         return organName;
     }

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

@@ -113,6 +113,16 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(Integer userId, Date classDate, String type);
 
 	/**
+	 * @describe 根据日期获取
+	 * @author Joburgess
+	 * @date 2019/12/26
+	 * @param userId:
+	 * @param classDate:
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+	 */
+	List<CourseScheduleDto> getTeacherHistoryCourseSchedulesWithDate(Integer userId, Date classDate);
+
+	/**
 	 * @Author: Joburgess
 	 * @Date: 2019/9/17
 	 * 根据日期获取当日排课信息
@@ -141,6 +151,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	List<Date> getCourseScheduleDateByTeacher(Date month, String type);
 
 	/**
+	 * @describe
+	 * @author Joburgess
+	 * @date 2019/12/26
+	 * @param month:
+	 * @return java.util.List<java.util.Date>
+	 */
+	List<Date> getHistoryCourseScheduleDateByTeacher(Integer userId,Date month);
+
+	/**
 	 * @Author: Joburgess
 	 * @Date: 2019/10/11
 	 * @params [month]

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

@@ -278,6 +278,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	public List<Date> getHistoryCourseScheduleDateByTeacher(Integer userId,Date month) {
+		return courseScheduleDao.getTeacherHistoryCourseScheduleDate(userId,month);
+	}
+
+	@Override
 	public List<Date> getCourseScheduleDates(Date month) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if(null==user){
@@ -389,6 +394,31 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	public List<CourseScheduleDto> getTeacherHistoryCourseSchedulesWithDate(Integer userId, Date classDate) {
+		if(Objects.isNull(classDate)){
+			throw new BizException("请选择上课日期!");
+		}
+		List<CourseScheduleDto> teacherCourseSchedulesWithDate = courseScheduleDao.getTeacherHistoryCourseSchedulesWithDate(classDate, userId.longValue());
+		List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream()
+				.filter(cs -> cs.getType().equals(CourseSchedule.CourseScheduleType.VIP) || cs.getType().equals(CourseSchedule.CourseScheduleType.DEMO))
+				.map(CourseScheduleDto::getId).collect(Collectors.toList());
+
+		Map<Integer, String> subjectNameCourseMap=new HashMap<>();
+		if(!CollectionUtils.isEmpty(courseScheduleIds)){
+			List<Map<Integer, String>> subjectNameCourseMaps = subjectDao.findSubjectNameCourseMaps(courseScheduleIds);
+			subjectNameCourseMap = MapUtil.convertMybatisMap(subjectNameCourseMaps);
+		}
+		for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+			if(Objects.nonNull(courseScheduleDto.getClassGroupId())){
+				String[] studentNums = classGroupStudentMapperDao.findCourseStudentName(courseScheduleDto.getId().intValue());
+				courseScheduleDto.setStudentNames(org.apache.commons.lang3.StringUtils.join(studentNums, ","));
+			}
+			courseScheduleDto.setSubjectName(subjectNameCourseMap.get(courseScheduleDto.getId()));
+		}
+		return teacherCourseSchedulesWithDate;
+	}
+
+	@Override
 	public void checkNewCourseSchedules(List<CourseSchedule> courseSchedules,boolean checkExistCourseSchedule){
 		if(CollectionUtils.isEmpty(courseSchedules)){
 			return;

+ 13 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1920,12 +1920,22 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if(sysUser == null){
             throw new BizException("用户信息获取失败");
         }
-        MusicGroup musicGroup = saveLog(musicGroupId,MusicGroupStatusEnum.PAY);
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if(musicGroup == null){
+            throw new BizException("乐团信息不存在");
+        }
         //记录操作日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"确认开团(缴费中 -> 筹备中)",sysUser.getId(),""));
+        String event;
+        if(musicGroup.getStatus() == MusicGroupStatusEnum.APPLY){
+            event = "确认开团(报名中 -> 筹备中)";
+        }else if (musicGroup.getStatus() == MusicGroupStatusEnum.PAY){
+            event = "确认开团(缴费中 -> 筹备中)";
+        }else {
+            throw new BizException("当前乐团状态不支持此操作");
+        }
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,event,sysUser.getId(),""));
         musicGroup.setStatus(MusicGroupStatusEnum.PREPARE);
         musicGroupDao.update(musicGroup);
-
         //给家长发送乐团基础训练课短信
         //获取所有乐团学员列表
         List<StudentRegistration> students = studentRegistrationDao.queryStudentByMusicGroupId(musicGroupId);

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

@@ -536,9 +536,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (studentRegistration == null) {
             throw new BizException("参数校验失败");
         }
-        if(studentAddDto.getSignClassId() == null && studentAddDto.getMixClassId() == null){
+        /*if(studentAddDto.getSignClassId() == null && studentAddDto.getMixClassId() == null){
             throw new BizException("参数校验失败: 单技班或合奏班必填一项");
-        }
+        }*/
         String musicGroupId = studentRegistration.getMusicGroupId();
 
         StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, studentRegistration.getParentsPhone());

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

@@ -1394,8 +1394,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         studentPauseInfoDao.insert(studentPauseInfo);
 
-        courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(vipGroupId.intValue(),-1,vipGroup.getStatus());
-
         sysUserCashAccountService.appendCourseBalance(studentId, surplusCourseFee);
 		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT_SCHOOL);
 		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
@@ -1415,6 +1413,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			vipGroupDao.update(vipGroup);
 		}
 
+		courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(vipGroupId.intValue(),-1,vipGroup.getStatus());
 	}
 
     @Override
@@ -1460,7 +1459,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("未找到休学信息");
 		}
 		Map<String, Object> courseInfo = JSON.parseObject(studentPauseInfo.getCoursesJson(), Map.class);
-        Integer[] teachModeSequence=JSON.parseArray(courseInfo.get("teaChModeSequence").toString(), Integer.class).stream().toArray(Integer[]::new);
 		List<BigDecimal> coursePrices = (List<BigDecimal>) courseInfo.get("coursePriceInfo");
 		coursePrices.sort(Comparator.naturalOrder());
 		Collections.reverse(coursePrices);
@@ -1530,6 +1528,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentPauseInfoDao.update(studentPauseInfo);
         vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
         vipGroupDao.update(vipGroup);
+		courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(vipGroup.getId().intValue(),1,vipGroup.getStatus());
 	}
 
     @Override

+ 3 - 8
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml

@@ -74,10 +74,10 @@
         #{onlineClassesSalary,jdbcType=DECIMAL},
       </if>
       <if test="createTime != null">
-        #{createTime,jdbcType=TIMESTAMP},
+        NOW(),
       </if>
       <if test="updateTime != null">
-        #{updateTime,jdbcType=TIMESTAMP},
+        NOW(),
       </if>
     </trim>
   </insert>
@@ -106,12 +106,7 @@
       <if test="onlineClassesSalary != null">
         online_classes_salary_ = #{onlineClassesSalary,jdbcType=DECIMAL},
       </if>
-      <if test="createTime != null">
-        create_time_ = #{createTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="updateTime != null">
-        update_time_ = #{updateTime,jdbcType=TIMESTAMP},
-      </if>
+      update_time_ = NOW()
     </set>
     where id_ = #{id,jdbcType=BIGINT}
   </update>

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

@@ -532,6 +532,40 @@
         ORDER BY start_class_time_
     </select>
 
+    <select id="getTeacherHistoryCourseSchedulesWithDate" resultMap="courseScheduleDto">
+        SELECT
+            cs.id_ seal_class_id_,
+            cg.name_,
+            su.username_ teacher_name_,
+            cs.type_,
+            cs.id_,
+            cs.class_group_id_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.status_,
+            csts.user_id_ actual_teacher_id_,
+            csts.teacher_role_,
+            cs.schoole_id_,
+            s.name_ school_name_,
+            if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
+            if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
+            cs.teach_mode_
+        FROM
+            course_schedule_teacher_salary csts
+            LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
+            LEFT JOIN sys_user su ON csts.user_id_ = su.id_
+            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            LEFT JOIN school s ON cs.schoole_id_ = s.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
+        WHERE
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
+            AND csts.user_id_ = #{teacherId} AND cg.del_flag_ = 0
+            AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ )&lt;NOW()
+        ORDER BY start_class_time_
+    </select>
+
     <select id="getCourseScheduleDateByMonth" resultType="java.util.Date">
         SELECT
         cs.class_date_
@@ -694,6 +728,27 @@
         GROUP BY cs.class_date_
     </select>
 
+    <select id="getTeacherHistoryCourseScheduleDate" resultType="java.util.Date">
+        SELECT
+        cs.class_date_
+        FROM
+        course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
+        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+        WHERE
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
+        AND csts.user_id_ = #{teacherId}
+        AND cg.del_flag_ = 0
+        <if test="month==null">
+            AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+        </if>
+        <if test="month!=null">
+            AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+        </if>
+        GROUP BY cs.class_date_
+    </select>
+
     <select id="getCourseScheduleDate" resultType="java.util.Date">
         SELECT
         cs.class_date_

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

@@ -163,7 +163,15 @@
 		AND cs.class_group_id_ = #{classGroupId}
     </select>
 	<select id="findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent" resultType="int">
-		SELECT id_ FROM course_schedule_student_payment WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
+		SELECT
+			cssp.id_
+		FROM
+			course_schedule_student_payment cssp
+			LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
+		WHERE
+			cssp.class_group_id_ = #{classGroupId}
+			AND cssp.user_id_=#{userId}
+			AND CONCAT(cs.class_date_,' ',cs.start_class_time_)>NOW()
 	</select>
 
     <select id="findVipGroupCoursePrice" resultType="java.math.BigDecimal">

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

@@ -202,7 +202,7 @@
 			LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_
 			LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
 			<include refid="vipGroupSalaryQueryCondition"/>
-		ORDER BY id_
+		ORDER BY class_date_
 		<include refid="global.limit"/>
 	</select>
 	<select id="countVipGroupSalarys" resultType="int">

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

@@ -631,13 +631,12 @@
         GROUP_CONCAT(DISTINCT vg.name_) vip_group_name_,GROUP_CONCAT(DISTINCT o.name_) organ_name_,GROUP_CONCAT(DISTINCT s.name_) music_group_subject_
         FROM sys_user su
         LEFT JOIN course_schedule_student_payment cssp ON su.id_ = cssp.user_id_
-        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
         LEFT JOIN music_group mg ON cssp.music_group_id_ = mg.id_ AND cssp.group_type_ = 'MUSIC'
         LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
         LEFT JOIN organization o ON su.organ_id_ = o.id_
         LEFT JOIN student_registration sr ON su.id_ = sr.user_id_ AND cssp.music_group_id_ = sr.music_group_id_
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
-        WHERE cs.status_ != 'OVER' AND su.password_ IS NULL AND su.user_type_ = 'STUDENT'
+        WHERE cssp.id_ IS NOT NULL AND su.user_type_ = 'STUDENT' AND (sr.music_group_status_ != 'QUIT' OR sr.id_ IS NULL) AND su.password_ IS NULL
         <if test="organId != null and organId != ''">
             AND FIND_IN_SET(su.organ_id_,#{organId})
         </if>

+ 13 - 15
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -561,22 +561,20 @@
         <result property="perNum" column="per_num_"/>
     </resultMap>
     <select id="queryStudentPer" resultMap="StudentRegisterPerDtoMap">
-        SELECT a.name_ organ_name_,a.num student_num_,b.num per_num_,ifnull(b.num,0)*100/a.num per_ FROM (
-        SELECT b.name_,COUNT(a.id_) num,b.id_ FROM sys_user a LEFT JOIN organization b ON a.organ_id_=b.id_
-        WHERE a.id_ IN(
-        SELECT b.id_ FROM course_schedule_student_payment a LEFT JOIN sys_user b ON a.user_id_=b.id_
-        LEFT JOIN course_schedule c ON a.course_schedule_id_=c.id_ WHERE b.user_type_='STUDENT' AND c.status_ IN('UNDERWAY','NOT_START')
-        GROUP BY a.user_id_,b.organ_id_ )
-        GROUP BY organ_id_) a
+        SELECT a.name_ organ_name_,a.num_ student_num_,b.num_ per_num_,ifnull(b.num_,0)*100/a.num_ per_
+        FROM (SELECT o.id_,o.name_,COUNT(DISTINCT su.id_) num_ FROM sys_user su
+        LEFT JOIN course_schedule_student_payment cssp ON su.id_ = cssp.user_id_
+        LEFT JOIN student_registration sr ON su.id_ = sr.user_id_ AND cssp.music_group_id_ = sr.music_group_id_
+        LEFT JOIN organization o ON su.organ_id_ = o.id_
+        WHERE cssp.id_ IS NOT NULL AND su.user_type_ = 'STUDENT' AND (sr.id_ IS NULL OR sr.music_group_status_ != 'QUIT')
+        GROUP BY su.organ_id_) a
         LEFT JOIN
-        (SELECT b.name_,COUNT(a.id_) num,b.id_ FROM sys_user a LEFT JOIN organization b ON a.organ_id_=b.id_
-        WHERE a.id_ IN(
-        SELECT b.id_ FROM course_schedule_student_payment a LEFT JOIN sys_user b ON a.user_id_=b.id_
-        LEFT JOIN course_schedule c ON a.course_schedule_id_ = c.id_
-        WHERE b.user_type_='STUDENT' AND password_ IS NOT NULL AND c.status_ IN('UNDERWAY','NOT_START') GROUP BY a.user_id_,b.organ_id_ )
-        GROUP BY organ_id_) b
-        ON a.id_=b.id_
-        WHERE a.name_ IS NOT NULL
+        (SELECT su.organ_id_ id_,COUNT(DISTINCT su.id_) num_ FROM sys_user su
+        LEFT JOIN course_schedule_student_payment cssp ON su.id_ = cssp.user_id_
+        LEFT JOIN student_registration sr ON su.id_ = sr.user_id_ AND cssp.music_group_id_ = sr.music_group_id_
+        WHERE cssp.id_ IS NOT NULL AND su.user_type_ = 'STUDENT' AND (sr.id_ IS NULL OR sr.music_group_status_ != 'QUIT') AND su.password_ IS NOT NULL
+        GROUP BY su.organ_id_) b
+        ON a.id_ = b.id_
         ORDER BY per_ DESC
     </select>
 

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

@@ -205,7 +205,7 @@
         FROM
             course_schedule cs left join teacher_attendance ta  ON ta.course_schedule_id_=cs.id_
         <include refid="queryCondition"/>
-        ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
+        ORDER BY cs.class_date_ ASC,cs.start_class_time_ ASC
         <include refid="global.limit"/>
     </select>
 

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/config/ResourceServerConfig.java

@@ -25,7 +25,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
 		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
-				.authorizeRequests().antMatchers("/v2/api-docs","/code/*","/teacher/queryStudentApply","/teacher/querySubByMusicGroupId").permitAll().anyRequest().authenticated().and().httpBasic();
+				.authorizeRequests().antMatchers("/v2/api-docs","/code/*","/teacher/queryStudentApply","/teacher/querySubByMusicGroupId","/studentRegistration/updateSubject").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

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

@@ -37,6 +37,7 @@ public class TeacherCourseScheduleController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+
     @ApiOperation(value = "根据月份获取该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
     public Object getCourseScheduleDateByMonth(@ApiParam(value = "月份", required = true) @RequestParam Date month,
@@ -65,6 +66,36 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(result);
     }
 
+    @ApiOperation(value = "根据月份获取该月历史有课的日期")
+    @GetMapping("/getHistoryCourseScheduleDateByMonth")
+    public Object getHistoryCourseScheduleDateByTeacher(@ApiParam(value = "月份", required = true) @RequestParam Date month) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(null==user){
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        if(Objects.isNull(month)){
+            return failed(HttpStatus.FORBIDDEN, "请指定日期!");
+        }
+        return succeed(scheduleService.getHistoryCourseScheduleDateByTeacher(user.getId(),month));
+    }
+
+    @ApiOperation(value = "根据日期获取当日历史课程")
+    @GetMapping("/getHistoryCourseSchedulesWithDate")
+    public Object getHistoryCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date){
+        if(Objects.isNull(date)){
+            return failed("请指定日期!");
+        }
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(null==user){
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherHistoryCourseSchedulesWithDate(user.getId(),date);
+        Map<String,Object> result = new HashMap<>();
+        result.put("rows",teacherCourseSchedulesWithDate);
+        result.put("appealDaysRange",1);
+        return succeed(result);
+    }
+
     @ApiOperation(value = "根据课程ID查询打卡界面课程详情")
     @GetMapping("/getCurrentCourseDetail")
     public Object getCurrentCourseDetail(Long courseID){

+ 13 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java

@@ -9,13 +9,12 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.util.upload.UploadUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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.RequestParam;
@@ -38,6 +37,8 @@ public class TeacherManageController extends BaseController {
     private ClassGroupService classGroupService;
     @Autowired
     private SysUserBankCardService sysUserBankCardService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     private final static Logger LOGGER = LoggerFactory.getLogger(TeacherManageController.class);
 
@@ -143,4 +144,13 @@ public class TeacherManageController extends BaseController {
         }
         return succeed(sysUserBankCardService.findByUser(sysUser.getId()));
     }
+
+    @ApiOperation(value = "调剂学生报名专业")
+    @PostMapping("studentRegistration/updateSubject")
+    public Object batchUpdateSubject(Integer userId,Integer subId,String musicGroupId) throws Exception {
+        if (null == userId || subId == null || StringUtils.isEmpty(musicGroupId)) {
+            return failed("参数校验异常");
+        }
+        return succeed(studentRegistrationService.batchUpdateSubject(userId, subId,musicGroupId));
+    }
 }

+ 62 - 9
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -2,18 +2,19 @@ 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.dao.*;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.VipGroupDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.KitPurchaseMethodEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
+import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.biz.service.*;
 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.collection.MapUtil;
@@ -26,13 +27,16 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RequestMapping
 @Api(tags = "数据导出服务")
@@ -54,12 +58,8 @@ public class ExportController extends BaseController {
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
-    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
-    @Autowired
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
-    private SporadicChargeInfoDao sporadicChargeInfoDao;
-    @Autowired
     private VipGroupDao vipGroupDao;
 
     @ApiOperation(value = "导出学员是否有课")
@@ -265,4 +265,57 @@ public class ExportController extends BaseController {
         }
     }
 
+
+    @ApiOperation(value = "乐团管理--乐团详情-导出学员列表")
+    @RequestMapping("export/musicGroupStudent")
+    @PreAuthorize("@pcs.hasPermissions('export/musicGroupStudent')")
+    public void queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo, HttpServletResponse response) {
+        queryInfo.setRows(99999);
+        PageInfo<MusicGroupStudentsDto> musicGroupStudentsDtoPageInfo = studentManageService.queryMusicGroupStudent(queryInfo);
+        try {
+            for (MusicGroupStudentsDto row : musicGroupStudentsDtoPageInfo.getRows()) {
+                if (row.getGender().equals("1")) {
+                    row.setGender("男");
+                } else {
+                    row.setGender("女");
+                }
+                if (row.getPaymentStatus().equals("PAID_COMPLETED")) {
+                    row.setPaymentStatus("完成缴费");
+                } else if (row.getPaymentStatus().equals("NON_PAYMENT")) {
+                    row.setPaymentStatus("未缴费");
+                } else if (row.getPaymentStatus().equals("PROCESSING")) {
+                    row.setPaymentStatus("缴费中");
+                }
+                if(row.getStudentStatus().equals("NORMAL")){
+                    row.setStudentStatus("在读");
+                }else {
+                    row.setStudentStatus("退团");
+                }
+                if (row.getIsActive()) {
+                    row.setActiveName("是");
+                } else {
+                    row.setActiveName("否");
+                }
+                if(row.getIsNewStudent().equals(1)){
+                    row.setIsNewStudentStr("是");
+                }else {
+                    row.setIsNewStudentStr("否");
+                }
+                row.setCurrentGrade(row.getCurrentGrade() + row.getCurrentClass());
+            }
+            String[] header = {"学生姓名", "性别", "联系电话", "年级班级", "专业", "学员状态", "新增学员", "缴费金额",
+                    "下次缴费日期", "报名缴费", "是否激活"};
+            String[] body = {"realName", "gender", "phone", "currentGrade", "subjectName", "studentStatus", "isNewStudentStr",
+                    "courseFee", "nextPaymentDate","paymentStatus", "activeName"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }

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

@@ -161,7 +161,7 @@ public class MusicGroupController extends BaseController {
 		return succeed(musicGroupService.openPay(musicGroupId, expireDate));
 	}
 
-	@ApiOperation(value = "确认开团(缴费中 -->  筹备中)")
+	@ApiOperation(value = "确认开团(缴费中(报名中) -->  筹备中)")
 	@PostMapping("/found")
 	@PreAuthorize("@pcs.hasPermissions('musicGroup/found')")
 	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String") })