Przeglądaj źródła

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

zouxuan 5 lat temu
rodzic
commit
efe718840b
22 zmienionych plików z 1025 dodań i 514 usunięć
  1. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  3. 20 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  4. 90 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupRegisterDto.java
  5. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterSubjectDto.java
  6. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java
  7. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SporadicChargeTypeEnum.java
  8. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/VipGroupStatusEnum.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CooperationOrganQueryInfo.java
  10. 19 9
      mec-biz/src/main/java/com/ym/mec/biz/service/GroupClassService.java
  11. 8 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  12. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java
  13. 8 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  14. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  15. 3 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  16. 23 8
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  17. 15 4
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 511 406
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  19. 2 20
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  20. 2 1
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  21. 219 40
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  22. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/SporadicChargeInfoController.java

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -88,7 +88,9 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      */
     int deleteStudentByClassGroupId(@Param("classGroupId") Long classGroupId, @Param("userId") Long userId);
 
-    /**
+    int deleteClassGroupStudent(@Param("classGroupId") Long classGroupId, @Param("userId") Integer userId);
+
+  /**
      * @param classGroupId: 班级编号
      * @return java.lang.String[]
      * @describe 根据班级编号获取班级学生名称列表

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

@@ -61,6 +61,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     int batchDeleteCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
+    int batchDeleteCourseSchedulesWithLogic(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
     int batchDeleteAllCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
     /**

+ 20 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.MusicGroupRegisterDto;
+import com.ym.mec.biz.dal.dto.RegisterSubjectDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.School;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
@@ -173,20 +175,22 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     MusicGroup findUserMusicGroup(@Param("userId") Integer userId);
 
     /**
+     * @param userId: 用户编号
+     * @return com.ym.mec.biz.dal.entity.MusicGroup
      * @describe 查询用户的乐团信息
      * @author Joburgess
      * @date 2020/2/4
-     * @param userId: 用户编号
-     * @return com.ym.mec.biz.dal.entity.MusicGroup
      */
     List<MusicGroup> findUserMusicGroups(@Param("userId") Integer userId);
 
     /**
      * 查询乐团列表
+     *
      * @param params
      * @return
      */
     List<MusicGroup> findMusicGroups(Map<String, Object> params);
+
     int countMusicGroups(Map<String, Object> params);
 
     /**
@@ -207,6 +211,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 查询用户的学校
+     *
      * @param userId
      * @return
      */
@@ -214,6 +219,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据班级群,获取乐团信息
+     *
      * @param groupId
      * @return
      */
@@ -221,15 +227,25 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取用户所在乐团名
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,String>> queryUserMusicNames(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, String>> queryUserMusicNames(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 获取用户再乐团的状态
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,String>> queryUserMusicStatus(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, String>> queryUserMusicStatus(@Param("userIds") Set<Integer> userIds);
+
+    List<MusicGroupRegisterDto> getMusicGroupRegister(@Param("organIds") String organIds);
+
+    List<RegisterSubjectDto> getRegisterSubjectNum(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    List<MusicGroupRegisterDto> getMusicGroupRegisterOrder(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    List<MusicGroupRegisterDto> getMusicGroupRegisterTotalMoney(@Param("musicGroupIds") List<String> musicGroupIds);
 }

+ 90 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupRegisterDto.java

@@ -0,0 +1,90 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class MusicGroupRegisterDto {
+    private String organName;
+
+    private String musicGroupId;
+
+    private String musicGroupName;
+
+    private MusicGroupStatusEnum musicGroupStatus;
+
+    private Integer registerNum=0;
+
+    private Integer GroupBuyMusicalNum = 0;
+
+    private Integer registerPayNum = 0;
+
+    private BigDecimal totalMoney = BigDecimal.ZERO;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public MusicGroupStatusEnum getMusicGroupStatus() {
+        return musicGroupStatus;
+    }
+
+    public void setMusicGroupStatus(MusicGroupStatusEnum musicGroupStatus) {
+        this.musicGroupStatus = musicGroupStatus;
+    }
+
+    public Integer getRegisterNum() {
+        return registerNum;
+    }
+
+    public void setRegisterNum(Integer registerNum) {
+        this.registerNum = registerNum;
+    }
+
+
+    public Integer getGroupBuyMusicalNum() {
+        return GroupBuyMusicalNum;
+    }
+
+    public void setGroupBuyMusicalNum(Integer groupBuyMusicalNum) {
+        GroupBuyMusicalNum = groupBuyMusicalNum;
+    }
+
+    public Integer getRegisterPayNum() {
+        return registerPayNum;
+    }
+
+    public void setRegisterPayNum(Integer registerPayNum) {
+        this.registerPayNum = registerPayNum;
+    }
+
+    public BigDecimal getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(BigDecimal totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+}

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterSubjectDto.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.dto;
+
+public class RegisterSubjectDto {
+
+    private String musicGroupId;
+
+    private Integer subjectId;
+
+    private String subjectName;
+
+    private Integer num = 0;
+
+    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 String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+}

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

@@ -41,6 +41,8 @@ public class CooperationOrgan {
 	/** 分部编号 */
 	@ApiModelProperty(value = "分部编号", required = false)
 	private Integer organId;
+	
+	private Organization organization = new Organization();
 
 	/** 联系人 */
 	@ApiModelProperty(value = "联系人", required = false)
@@ -60,6 +62,9 @@ public class CooperationOrgan {
 
 	@ApiModelProperty(value = "权属类型(OWN('自有'),COOPERATION('合作'),LEASE('租赁'))", required = false)
 	private OwnershipType ownershipType;
+	
+	@ApiModelProperty(value = "是否启用", required = false)
+	private Boolean isEnable;
 
 	/**  */
 	private java.util.Date createTime;
@@ -75,6 +80,14 @@ public class CooperationOrgan {
 		this.organId = organId;
 	}
 
+	public Organization getOrganization() {
+		return organization;
+	}
+
+	public void setOrganization(Organization organization) {
+		this.organization = organization;
+	}
+
 	public void setId(Integer id) {
 		this.id = id;
 	}
@@ -147,6 +160,14 @@ public class CooperationOrgan {
 		this.ownershipType = ownershipType;
 	}
 
+	public Boolean getIsEnable() {
+		return isEnable;
+	}
+
+	public void setIsEnable(Boolean isEnable) {
+		this.isEnable = isEnable;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -12,7 +12,8 @@ public enum SporadicChargeTypeEnum implements BaseEnum<Integer, SporadicChargeTy
     VISITING_FEE(7,"上门费"),
     VIP_BUY(8,"VIP课购买"),
     RECHARGE(9,"账户余额"),
-    MUSIC_UPKEEP(10,"乐保服务");
+    MUSIC_UPKEEP(10,"乐保服务"),
+    OTHER(11,"其他");
 
     private Integer code;
 

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

@@ -14,7 +14,8 @@ public enum VipGroupStatusEnum implements BaseEnum<Integer, VipGroupStatusEnum>
 	PROGRESS(2, "进行中"),
 	FINISHED(4, "已结束"),
 	CANCEL(3, "取消"),
-	PAUSE(6, "暂停");
+	PAUSE(6, "暂停"),
+	DELETE(7, "删除");
 
 	private Integer code;
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CooperationOrganQueryInfo.java

@@ -5,6 +5,8 @@ import com.ym.mec.common.page.QueryInfo;
 public class CooperationOrganQueryInfo extends QueryInfo {
 
     private String organId;
+    
+    private Boolean isEnable;
 
 	public String getOrganId() {
 		return organId;
@@ -13,4 +15,12 @@ public class CooperationOrganQueryInfo extends QueryInfo {
 	public void setOrganId(String organId) {
 		this.organId = organId;
 	}
+
+	public Boolean getIsEnable() {
+		return isEnable;
+	}
+
+	public void setIsEnable(Boolean isEnable) {
+		this.isEnable = isEnable;
+	}
 }

+ 19 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/GroupClassService.java

@@ -11,36 +11,46 @@ import java.math.BigDecimal;
 public interface GroupClassService {
 
     /**
-     * @describe 删除团体信息
+     * @describe 删除课程组信息
      * @author Joburgess
      * @date 2020/2/17
-     * @param groupId: 团体编号
-     * @param groupType: 团体类型
+     * @param groupId: 课程组编号
+     * @param groupType: 课程组类型
      * @return boolean
      */
     boolean deleteAllGroupInfo(String groupId, GroupType groupType);
 
     /**
-     * @describe 删除团体信息
+     * @describe 删除课程组信息
      * @author Joburgess
      * @date 2020/2/17
-     * @param groupId: 团体编号
-     * @param groupType: 团体类型
+     * @param groupId: 课程组编号
+     * @param groupType: 课程组类型
      * @return boolean
      */
     boolean deleteGroupOtherInfo(String groupId, GroupType groupType);
 
     /**
-     * @describe 清理团体相关信息
+     * @describe 清理课程组相关信息
      * @author Joburgess
      * @date 2020/2/17
-     * @param groupId: 团体编号
-     * @param groupType: 团体类型
+     * @param groupId: 课程组编号
+     * @param groupType: 课程组类型
      * @return boolean
      */
     boolean cleanGroupInfo(String groupId, GroupType groupType);
 
     /**
+     * @describe 隐藏课程组相关信息
+     * @author Joburgess
+     * @date 2020/2/17
+     * @param groupId: 课程组编号
+     * @param groupType: 课程组类型
+     * @return boolean
+     */
+    boolean hideGroupInfo(String groupId, GroupType groupType);
+
+    /**
      * @describe 关闭课程组
      * @author Joburgess
      * @date 2020/3/4

+ 8 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -904,10 +904,11 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         if (Objects.isNull(practiceGroupBuyParams.getSubjectId())) {
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "请选择声部");
         }
-        if(Objects.isNull(practiceGroupBuyParams.getFirstCourseTime())||Objects.isNull(practiceGroupBuyParams.getSecondCourseTime())){
+        if(Objects.isNull(practiceGroupBuyParams.getFirstCourseTime())&&Objects.isNull(practiceGroupBuyParams.getSecondCourseTime())){
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "请确定上课时间");
         }
-        if(DateUtil.daysBetween(practiceGroupBuyParams.getFirstCourseTime(),practiceGroupBuyParams.getSecondCourseTime())>7){
+        if(Objects.nonNull(practiceGroupBuyParams.getSecondCourseTime())
+                &&DateUtil.daysBetween(practiceGroupBuyParams.getFirstCourseTime(),practiceGroupBuyParams.getSecondCourseTime())>7){
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "两次课程的时间需安排在七天内");
         }
 
@@ -945,7 +946,9 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
 
         List<Date> courseDates=new ArrayList<>();
         courseDates.add(practiceGroupBuyParams.getFirstCourseTime());
-        courseDates.add(practiceGroupBuyParams.getSecondCourseTime());
+        if(Objects.nonNull(practiceGroupBuyParams.getSecondCourseTime())){
+            courseDates.add(practiceGroupBuyParams.getSecondCourseTime());
+        }
         courseDates.sort(Comparator.comparing(Date::getTime));
 
         Date now=new Date();
@@ -961,7 +964,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         }
 
         practiceGroupBuyParams.setCoursesStartDate(courseDates.get(0));
-        practiceGroupBuyParams.setCoursesExpireDate(DateUtil.addMinutes(courseDates.get(1),practiceCourseMinutes));
+        practiceGroupBuyParams.setCoursesExpireDate(DateUtil.addMinutes(courseDates.get(courseDates.size()-1),practiceCourseMinutes));
         practiceGroupBuyParams.setOrganId(student.getOrganId());
         practiceGroupBuyParams.setSingleClassMinutes(practiceCourseMinutes);
         practiceGroupBuyParams.setGroupStatus(GroupStatusEnum.NORMAL);
@@ -974,7 +977,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         classGroup.setExpectStudentNum(1);
         classGroup.setStudentNum(1);
         classGroup.setName(practiceGroupBuyParams.getName());
-        classGroup.setTotalClassTimes(2);
+        classGroup.setTotalClassTimes(courseDates.size());
         classGroup.setType(ClassGroupTypeEnum.PRACTICE);
         classGroup.setDelFlag(0);
         classGroup.setGroupType(GroupType.PRACTICE);

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java

@@ -110,6 +110,24 @@ public class GroupClassServiceImpl implements GroupClassService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean hideGroupInfo(String groupId, GroupType groupType) {
+        classGroupDao.deleteByGroupWithLogic(groupId,groupType);
+        classGroupStudentMapperDao.deleteByGroupWithLogic(groupId,groupType);
+        List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotStartCourses(groupId, groupType);
+        if(CollectionUtils.isEmpty(groupNotStartCourses)){
+            return true;
+        }
+        List<Long> courseIds = groupNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+        courseScheduleDao.batchDeleteCourseSchedulesWithLogic(courseIds);
+        courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseIds);
+        courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseIds);
+        teacherAttendanceDao.batchDeleteByCourseSchedules(courseIds);
+        studentAttendanceDao.deleteByCourseSchedules(courseIds);
+        return true;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public void cancelGroup(Long groupId, GroupType groupType, BigDecimal refundAmount) {
         if(Objects.isNull(groupId)){

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

@@ -471,15 +471,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(vipGroup)){
 			throw new BizException("课程组不存在");
 		}
-		if(!VipGroupStatusEnum.NOT_START.equals(vipGroup.getStatus())
-				&&!VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus())){
+		Integer courseEndNum = courseScheduleDao.findCourseEndNum(vipGroupId);
+		if(courseEndNum>0){
 			throw new BizException("此状态课程组不支持删除");
 		}
-		int totalCourseNum = courseScheduleDao.countTotalCourseScheduleNumWithGroup(vipGroupId.toString(), GroupType.VIP.getCode());
-		if(totalCourseNum>0){
-			throw new BizException("此状态课程组不支持删除");
-		}
-		groupClassService.deleteAllGroupInfo(vipGroupId.toString(), GroupType.VIP);
+		vipGroup.setStatus(VipGroupStatusEnum.DELETE);
+		vipGroupDao.update(vipGroup);
+		groupClassService.hideGroupInfo(vipGroupId.toString(), GroupType.VIP);
 	}
 
 	@Override
@@ -697,10 +695,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						allStudentNum=Long.valueOf(0);
 					}
 
-					if((Objects.isNull(aLong)||aLong<=0)
-							&&(allStudentNum<=0)
-							&&(VipGroupStatusEnum.NOT_START.equals(vipGroup.getStatus())
-							||VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()))){
+					if((Objects.isNull(aLong1)||aLong1<=0)
+							&&(classGroup.getStudentNum()<=0)){
 						vipGroup.setEnableDelete(1);
 					}
 
@@ -1449,7 +1445,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(!isOk){
 			if(CollectionUtils.isEmpty(statusOrdersMap.get(DealStatusEnum.ING))||(!CollectionUtils.isEmpty(statusOrdersMap.get(DealStatusEnum.ING))&&statusOrdersMap.get(DealStatusEnum.ING).size()<=1)){
 				updateVipGroupStudentNumAndStatus(vipGroupId,classGroup,-1,false);
-				classGroupStudentMapperDao.deleteStudentByMusicGroupId(vipGroupId.toString(),userId);
+				classGroupStudentMapperDao.deleteClassGroupStudent(classGroup.getId().longValue(),userId);
 			}
 			if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().doubleValue() > 0) {
 				sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS,

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

@@ -620,7 +620,7 @@
             LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
             LEFT JOIN school s ON vg.teacher_school_id_ = s.id_
         WHERE
-            vg.user_id_ = #{teacherId} AND (vg.group_status_ = 2 OR vg.group_status_ = 5)
+            vg.user_id_ = #{teacherId} AND vg.group_status_!=7 AND (vg.group_status_ = 2 OR vg.group_status_ = 5)
         GROUP BY
         vg.id_,cg.id_
     </select>

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

@@ -71,6 +71,9 @@
     <delete id="deleteByGroup">
         DELETE FROM class_group_student_mapper WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </delete>
+    <delete id="deleteClassGroupStudent">
+        DELETE FROM class_group_student_mapper WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
+    </delete>
 
     <update id="deleteByGroupWithLogic">
         UPDATE class_group_student_mapper SET status_='QUIT',update_time_=NOW() WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}

+ 23 - 8
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -12,10 +12,16 @@
         <result column="job_" property="job"/>
         <result column="mobile_no_" property="mobileNo"/>
         <result column="address_" property="address"/>
+        <result column="is_enable_" property="isEnable"/>
         <result column="ownership_type_" property="ownershipType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
     </resultMap>
+    
+    <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"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="CooperationOrgan">
@@ -33,8 +39,8 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CooperationOrgan"
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO cooperation_organ
-        (id_,name_,linkman_,job_,mobile_no_,address_,organ_id_,create_time_,update_time_,ownership_type_)
-        VALUES(#{id},#{name},#{linkman},#{job},#{mobileNo},#{address},#{organId},now(),now(),#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        (id_,name_,linkman_,job_,mobile_no_,address_,organ_id_,create_time_,update_time_,ownership_type_,is_enable_)
+        VALUES(#{id},#{name},#{linkman},#{job},#{mobileNo},#{address},#{organId},now(),now(),#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{isEnable})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -65,6 +71,9 @@
             <if test="organId != null">
                 organ_id_ = #{organId},
             </if>
+            <if test="isEnable != null">
+                is_enable_ = #{isEnable},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -75,19 +84,22 @@
 	</update>
 
     <!-- 分页查询 -->
-    <select id="queryPage" resultMap="CooperationOrgan"
+    <select id="queryPage" resultMap="ExtCooperationOrgan"
             parameterType="map">
-        SELECT * FROM cooperation_organ
+        SELECT co.*,o.name_ organ_name_ FROM cooperation_organ co left join organization o on co.organ_id_ = o.id_
         <where>
-                del_flag_ != 1
+                co.del_flag_ != 1
             <if test="search != null">
-                AND (id_ LIKE CONCAT('%',#{search},'%') OR name_ LIKE CONCAT('%',#{search},'%'))
+                AND (co.id_ LIKE CONCAT('%',#{search},'%') OR co.name_ LIKE CONCAT('%',#{search},'%'))
             </if>
 	        <if test="organId != null">
-	            AND FIND_IN_SET(organ_id_,#{organId})
+	            AND FIND_IN_SET(co.organ_id_,#{organId})
+	        </if>
+	        <if test="isEnable != null">
+	            AND co.is_enable_ = #{isEnable}
 	        </if>
         </where>
-        ORDER BY update_time_ DESC
+        ORDER BY co.update_time_ DESC
         <include refid="global.limit"/>
     </select>
 
@@ -102,6 +114,9 @@
 	        <if test="organId != null">
 	            AND FIND_IN_SET(organ_id_,#{organId})
 	        </if>
+	        <if test="isEnable != null">
+	            AND is_enable_ = #{isEnable}
+	        </if>
         </where>
 	</select>
 

+ 15 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -301,6 +301,17 @@
         </foreach>
     </delete>
 
+    <update id="batchDeleteCourseSchedulesWithLogic">
+        UPDATE course_schedule
+            SET del_flag_ = '1',update_time_ = NOW()
+        WHERE
+            CONCAT( class_date_, ' ', start_class_time_ ) &gt; NOW()
+            AND id_ IN
+            <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+                #{courseScheduleId}
+            </foreach>
+    </update>
+
     <delete id="batchDeleteAllCourseSchedules">
         DELETE FROM course_schedule
         WHERE id_ IN
@@ -1542,7 +1553,7 @@
     <select id="queryMusicGroupIds" resultMap="com.ym.mec.biz.dal.dao.GroupDao.Group">
         SELECT DISTINCT cgsm.music_group_id_ group_id_,cgsm.group_type_ FROM class_group_student_mapper cgsm
         LEFT JOIN music_group mg ON mg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'MUSIC'
-        LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
+        LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP' AND vg.group_status_!=7
         LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'PRACTICE'
         WHERE cgsm.user_id_ = #{userId} AND cgsm.status_ != 'QUIT'
         AND (mg.status_ = 'PROGRESS' OR vg.group_status_ = 2 OR vg.group_status_ = 4 OR (pg.id_ IS NOT NULL AND
@@ -1554,7 +1565,7 @@
         SELECT COUNT(DISTINCT cgsm.music_group_id_)
         FROM class_group_student_mapper cgsm
                  LEFT JOIN music_group mg ON mg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'MUSIC'
-                 LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
+                 LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP' AND vg.group_status_!=7
                  LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'PRACTICE'
         WHERE cgsm.user_id_ = #{userId}
           AND cgsm.status_ != 'QUIT'
@@ -1563,7 +1574,7 @@
     <select id="queryMusicGroupIdsWithoutOverGroup" resultMap="com.ym.mec.biz.dal.dao.GroupDao.Group">
         SELECT DISTINCT spo.music_group_id_ group_id_,cgsm.group_type_ FROM student_payment_order spo
         LEFT JOIN class_group_student_mapper cgsm ON spo.music_group_id_ = cgsm.music_group_id_
-        LEFT JOIN vip_group vg ON vg.id_=spo.music_group_id_ AND spo.group_type_='VIP'
+        LEFT JOIN vip_group vg ON vg.id_=spo.music_group_id_ AND spo.group_type_='VIP' AND vg.group_status_!=7
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL
         AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS' AND cgsm.status_ != 'QUIT'
@@ -1575,7 +1586,7 @@
         SELECT COUNT(DISTINCT spo.music_group_id_)
         FROM student_payment_order spo
                  LEFT JOIN class_group_student_mapper cgsm ON spo.music_group_id_ = cgsm.music_group_id_
-                 LEFT JOIN vip_group vg ON vg.id_ = spo.music_group_id_ AND spo.group_type_ = 'VIP'
+                 LEFT JOIN vip_group vg ON vg.id_ = spo.music_group_id_ AND spo.group_type_ = 'VIP' AND vg.group_status_!=7
                  LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         WHERE spo.type_ != 'OTHER'
           AND spo.music_group_id_ IS NOT NULL

+ 511 - 406
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -3,445 +3,550 @@
 <!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupDao">
 
-	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroup" id="MusicGroup">
-		<result column="id_" property="id" />
-		<result column="name_" property="name" />
-		<result column="organ_id_" property="organId" />
-		<result column="school_id_" property="schoolId" />
-		<result column="apply_expire_date_" property="applyExpireDate" />
-		<result column="team_teacher_id_" property="teamTeacherId" />
-		<result column="educational_teacher_id_" property="educationalTeacherId" />
-		<result column="charge_type_id_" property="chargeTypeId" />
-		<result column="course_form_" property="courseForm" />
-		<result column="create_time_" property="createTime" />
-		<result column="update_time_" property="updateTime" />
-		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-		<result column="bill_start_date_" property="billStartDate" />
-		<result column="improvent_classes_num_" property="improventClassesNum" />
-		<result column="enroll_classes_" property="enrollClasses" />
-		<result column="payment_expire_date_" property="paymentExpireDate" />
-		<result column="is_extra_class_" property="isExtraClass" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-		<result column="cooperation_organ_id_" property="cooperationOrganId" />
-		<result column="enlightenment_course_time_" property="enlightenmentCourseTime" />
-		<result column="parent_meeting_time_" property="parentMeetingTime" />
-		<result column="img_" property="img" />
-		<result column="director_user_id_" property="directorUserId" />
-		<result column="settlement_type_" property="settlementType" />
-		<result column="expect_start_group_date_" property="expectStartGroupDate" />
-		<result column="group_member_num_" property="groupMemberNum" />
-		<result column="memo_" property="memo" />
-		<result column="repair_user_id_" property="repairUserId" />
-        <result column="ownership_type_" property="ownershipType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    <resultMap type="com.ym.mec.biz.dal.entity.MusicGroup" id="MusicGroup">
+        <result column="id_" property="id"/>
+        <result column="name_" property="name"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="school_id_" property="schoolId"/>
+        <result column="apply_expire_date_" property="applyExpireDate"/>
+        <result column="team_teacher_id_" property="teamTeacherId"/>
+        <result column="educational_teacher_id_" property="educationalTeacherId"/>
+        <result column="charge_type_id_" property="chargeTypeId"/>
+        <result column="course_form_" property="courseForm"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="bill_start_date_" property="billStartDate"/>
+        <result column="improvent_classes_num_" property="improventClassesNum"/>
+        <result column="enroll_classes_" property="enrollClasses"/>
+        <result column="payment_expire_date_" property="paymentExpireDate"/>
+        <result column="is_extra_class_" property="isExtraClass"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="cooperation_organ_id_" property="cooperationOrganId"/>
+        <result column="enlightenment_course_time_" property="enlightenmentCourseTime"/>
+        <result column="parent_meeting_time_" property="parentMeetingTime"/>
+        <result column="img_" property="img"/>
+        <result column="director_user_id_" property="directorUserId"/>
+        <result column="settlement_type_" property="settlementType"/>
+        <result column="expect_start_group_date_" property="expectStartGroupDate"/>
+        <result column="group_member_num_" property="groupMemberNum"/>
+        <result column="memo_" property="memo"/>
+        <result column="repair_user_id_" property="repairUserId"/>
+        <result column="ownership_type_" property="ownershipType"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="fee_type_" property="feeType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-	</resultMap>
+    </resultMap>
 
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="MusicGroup">
-		SELECT * FROM
-		music_group WHERE id_ = #{id}
-	</select>
-	
-	<select id="getLocked" resultMap="MusicGroup">
-		SELECT * FROM music_group WHERE id_ = #{id} for update
-	</select>
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="MusicGroup">
+        SELECT *
+        FROM music_group
+        WHERE id_ = #{id}
+    </select>
+
+    <select id="getLocked" resultMap="MusicGroup">
+        SELECT *
+        FROM music_group
+        WHERE id_ = #{id} for
+        update
+    </select>
 
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="MusicGroup">
-		SELECT * FROM music_group ORDER
-		BY id_
-	</select>
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="MusicGroup">
+        SELECT *
+        FROM music_group
+        ORDER BY id_
+    </select>
 
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroup"
-		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO music_group
-		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
-		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,settlement_type_,cooperation_organ_id_,enlightenment_course_time_,
-		parent_meeting_time_,img_,director_user_id_,is_classroom_lessons_,memo_,expect_start_group_date_,ownership_type_,repair_user_id_,fee_type_)
-		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
-		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
-		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{settlementType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-		#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId},#{isClassroomLessons},#{memo},#{expectStartGroupDate},
-		#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{repairUserId},#{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
-	</insert>
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroup"
+            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        INSERT INTO music_group
+        (id_, name_, organ_id_, school_id_, apply_expire_date_, team_teacher_id_, educational_teacher_id_,
+         charge_type_id_, course_form_, create_time_, update_time_, status_,
+         bill_start_date_, improvent_classes_num_, enroll_classes_, payment_expire_date_, is_extra_class_,
+         settlement_type_, cooperation_organ_id_, enlightenment_course_time_,
+         parent_meeting_time_, img_, director_user_id_, is_classroom_lessons_, memo_, expect_start_group_date_,
+         ownership_type_, repair_user_id_, fee_type_)
+        VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{teamTeacherId}, #{educationalTeacherId},
+                #{chargeTypeId}, #{courseForm}, now(), now(),
+                #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{billStartDate},
+                #{improventClassesNum}, #{enrollClasses}, #{paymentExpireDate},
+                #{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                #{settlementType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                #{cooperationOrganId}, #{enlightenmentCourseTime}, #{parentMeetingTime}, #{img}, #{directorUserId},
+                #{isClassroomLessons}, #{memo}, #{expectStartGroupDate},
+                #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{repairUserId},
+                #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+    </insert>
 
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroup">
-		UPDATE music_group
-		<set>
-			<if test="ownershipType != null">
-				ownership_type_ = #{ownershipType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="feeType != null">
-				fee_type_ = #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="status != null">
-				status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			repair_user_id_ = #{repairUserId},
-			<if test="organId != null">
-				organ_id_ = #{organId},
-			</if>
-			<if test="improventClassesNum != null">
-				improvent_classes_num_ = #{improventClassesNum},
-			</if>
-			<if test="courseForm != null">
-				course_form_ = #{courseForm},
-			</if>
-			<if test="chargeTypeId != null">
-				charge_type_id_ = #{chargeTypeId},
-			</if>
-			<if test="educationalTeacherId != null">
-				educational_teacher_id_ = #{educationalTeacherId},
-			</if>
-			<if test="enrollClasses != null">
-				enroll_classes_ = #{enrollClasses},
-			</if>
-			<if test="name != null">
-				name_ = #{name},
-			</if>
-			<if test="isExtraClass != null">
-				is_extra_class_ = #{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-			</if>
-			<if test="paymentExpireDate != null">
-				payment_expire_date_ = #{paymentExpireDate},
-			</if>
-			<if test="schoolId != null">
-				school_id_ = #{schoolId},
-			</if>
-			<if test="applyExpireDate != null">
-				apply_expire_date_ = #{applyExpireDate},
-			</if>
-			<if test="billStartDate != null">
-				bill_start_date_ = #{billStartDate},
-			</if>
-			<if test="cooperationOrganId != null">
-				cooperation_organ_id_ = #{cooperationOrganId},
-			</if>
-			<if test="updateTime != null">
-				update_time_ = NOW(),
-			</if>
-			<if test="enlightenmentCourseTime != null">
-				enlightenment_course_time_ = #{enlightenmentCourseTime},
-			</if>
-			<if test="teamTeacherId != null">
-				team_teacher_id_ = #{teamTeacherId},director_user_id_ = #{directorUserId},
-			</if>
-			<if test="parentMeetingTime != null">
-				parent_meeting_time_ = #{parentMeetingTime},
-			</if>
-			<if test="img != null">
-				img_ = #{img},
-			</if>
-			<if test="settlementType != null">
-				settlement_type_ = #{settlementType},
-			</if>
-			<if test="isClassroomLessons != null">
-				is_classroom_lessons_ = #{isClassroomLessons},
-			</if>
-			<if test="expectStartGroupDate != null">
-				expect_start_group_date_ = #{expectStartGroupDate},
-			</if>
-			<if test="groupMemberNum != null">
-				group_member_num_ = #{groupMemberNum},
-			</if>
-			<if test="memo != null">
-				memo_ = #{memo},
-			</if>
-		</set>
-		WHERE id_ = #{id}
-	</update>
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroup">
+        UPDATE music_group
+        <set>
+            <if test="ownershipType != null">
+                ownership_type_ = #{ownershipType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="feeType != null">
+                fee_type_ = #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="status != null">
+                status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            repair_user_id_ = #{repairUserId},
+            <if test="organId != null">
+                organ_id_ = #{organId},
+            </if>
+            <if test="improventClassesNum != null">
+                improvent_classes_num_ = #{improventClassesNum},
+            </if>
+            <if test="courseForm != null">
+                course_form_ = #{courseForm},
+            </if>
+            <if test="chargeTypeId != null">
+                charge_type_id_ = #{chargeTypeId},
+            </if>
+            <if test="educationalTeacherId != null">
+                educational_teacher_id_ = #{educationalTeacherId},
+            </if>
+            <if test="enrollClasses != null">
+                enroll_classes_ = #{enrollClasses},
+            </if>
+            <if test="name != null">
+                name_ = #{name},
+            </if>
+            <if test="isExtraClass != null">
+                is_extra_class_ = #{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="paymentExpireDate != null">
+                payment_expire_date_ = #{paymentExpireDate},
+            </if>
+            <if test="schoolId != null">
+                school_id_ = #{schoolId},
+            </if>
+            <if test="applyExpireDate != null">
+                apply_expire_date_ = #{applyExpireDate},
+            </if>
+            <if test="billStartDate != null">
+                bill_start_date_ = #{billStartDate},
+            </if>
+            <if test="cooperationOrganId != null">
+                cooperation_organ_id_ = #{cooperationOrganId},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="enlightenmentCourseTime != null">
+                enlightenment_course_time_ = #{enlightenmentCourseTime},
+            </if>
+            <if test="teamTeacherId != null">
+                team_teacher_id_ = #{teamTeacherId},director_user_id_ = #{directorUserId},
+            </if>
+            <if test="parentMeetingTime != null">
+                parent_meeting_time_ = #{parentMeetingTime},
+            </if>
+            <if test="img != null">
+                img_ = #{img},
+            </if>
+            <if test="settlementType != null">
+                settlement_type_ = #{settlementType},
+            </if>
+            <if test="isClassroomLessons != null">
+                is_classroom_lessons_ = #{isClassroomLessons},
+            </if>
+            <if test="expectStartGroupDate != null">
+                expect_start_group_date_ = #{expectStartGroupDate},
+            </if>
+            <if test="groupMemberNum != null">
+                group_member_num_ = #{groupMemberNum},
+            </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
 
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete">
-		DELETE FROM music_group WHERE id_ = #{id}
-	</delete>
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE
+        FROM music_group
+        WHERE id_ = #{id}
+    </delete>
 
-	<select id="queryPage" resultMap="MusicGroup" parameterType="map">
-		SELECT * FROM music_group
-		<include refid="musicGroupQueryPageSql"/>
-		ORDER BY create_time_ DESC
-		<include refid="global.limit" />
-	</select>
+    <select id="queryPage" resultMap="MusicGroup" parameterType="map">
+        SELECT * FROM music_group
+        <include refid="musicGroupQueryPageSql"/>
+        ORDER BY create_time_ DESC
+        <include refid="global.limit"/>
+    </select>
 
-	<sql id="musicGroupQueryPageSql">
-		<where>
-			<if test="organId != null">
-				AND FIND_IN_SET(organ_id_,#{organId})
-			</if>
-			<if test="musicGroupName != null and musicGroupName != ''">
-				AND (name_ LIKE CONCAT('%',#{musicGroupName},'%') or id_ like CONCAT('%',#{musicGroupName},'%'))
-			</if>
-			<if test="chargeTypeId != null">
-				AND charge_type_id_ = #{chargeTypeId}
-			</if>
-			<if test="musicGroupStatus != null">
-				AND status_ = #{musicGroupStatus}
-			</if>
-			<if test="musicGroupId != null">
-				AND FIND_IN_SET(id_,#{musicGroupId})
-			</if>
-		</where>
-	</sql>
+    <sql id="musicGroupQueryPageSql">
+        <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(organ_id_,#{organId})
+            </if>
+            <if test="musicGroupName != null and musicGroupName != ''">
+                AND (name_ LIKE CONCAT('%',#{musicGroupName},'%') or id_ like CONCAT('%',#{musicGroupName},'%'))
+            </if>
+            <if test="chargeTypeId != null">
+                AND charge_type_id_ = #{chargeTypeId}
+            </if>
+            <if test="musicGroupStatus != null">
+                AND status_ = #{musicGroupStatus}
+            </if>
+            <if test="musicGroupId != null">
+                AND FIND_IN_SET(id_,#{musicGroupId})
+            </if>
+        </where>
+    </sql>
 
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM music_group
-		<include refid="musicGroupQueryPageSql"/>
-	</select>
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM music_group
+        <include refid="musicGroupQueryPageSql"/>
+    </select>
 
-	<resultMap type="com.ym.mec.biz.dal.dto.MusicCardDto" id="queryUserMusicGroupsMap">
-		<result column="register_id_" property="registerId" />
-		<result column="user_name_" property="userName" />
-		<result column="subject_name_" property="subjectName" />
-		<result column="subject_id_" property="subjectId" />
-		<result column="current_class_" property="currentClass" />
-		<result column="current_grade_" property="currentGrade" />
-		<result column="music_group_name_" property="musicGroupName" />
-		<result column="music_group_id_" property="musicGroupId" />
-		<result column="vip_class_num_" property="vipClassNum" />
-		<result column="music_group_num_" property="musicGroupNum" />
-		<!--<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.dto.MusicCardDto" id="queryUserMusicGroupsMap">
+        <result column="register_id_" property="registerId"/>
+        <result column="user_name_" property="userName"/>
+        <result column="subject_name_" property="subjectName"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="current_class_" property="currentClass"/>
+        <result column="current_grade_" property="currentGrade"/>
+        <result column="music_group_name_" property="musicGroupName"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="vip_class_num_" property="vipClassNum"/>
+        <result column="music_group_num_" property="musicGroupNum"/>
+        <!--<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>-->
+    </resultMap>
 
     <select id="queryUserMusicGroups" resultMap="queryUserMusicGroupsMap">
-		SELECT sr.id_ register_id_,su.username_ user_name_,sr.current_class_,sr.current_grade_
-		,mg.name_ music_group_name_,s.name_ subject_name_,s.id_ subject_id_,mg.id_ music_group_id_
-		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_
-		LEFT JOIN sys_user su ON  su.id_ = sr.user_id_
-		WHERE sr.user_id_ = #{userId} AND mg.status_ IN ('APPLY','PAY','PREPARE','PROGRESS') AND sr.music_group_status_ != 'QUIT'
-		ORDER BY mg.create_time_ DESC
-	</select>
+        SELECT sr.id_       register_id_
+             , su.username_ user_name_
+             , sr.current_class_
+             , sr.current_grade_
+             , mg.name_     music_group_name_
+             , s.name_      subject_name_
+             , s.id_        subject_id_
+             , mg.id_       music_group_id_
+        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_
+                 LEFT JOIN sys_user su ON su.id_ = sr.user_id_
+        WHERE sr.user_id_ = #{userId}
+          AND mg.status_ IN ('APPLY', 'PAY', 'PREPARE', 'PROGRESS')
+          AND sr.music_group_status_ != 'QUIT'
+        ORDER BY mg.create_time_ DESC
+    </select>
 
-	<select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">
-		SELECT sr.name_ user_name_,mg.name_ music_group_name_,s.name_ subject_name_
-		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_
-		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
-		ORDER BY mg.update_time_ DESC LIMIT 1
-	</select>
+    <select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">
+        SELECT sr.name_ user_name_, mg.name_ music_group_name_, s.name_ subject_name_
+        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_
+        WHERE sr.user_id_ = #{userId}
+          AND sr.music_group_status_ != 'QUIT'
+        ORDER BY mg.update_time_ DESC
+        LIMIT 1
+    </select>
 
-	<select id="countUserMusicGroups" resultType="int">
-		SELECT COUNT(mg.id_)
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
-	</select>
+    <select id="countUserMusicGroups" resultType="int">
+        SELECT COUNT(mg.id_)
+        FROM student_registration sr
+                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+          AND sr.music_group_status_ != 'QUIT'
+    </select>
     <select id="countCourseByType" resultType="java.lang.Integer">
-		SELECT SUM(cg.total_class_times_) - SUM(cg.current_class_times_) FROM class_group_student_mapper cgsm
-		LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-		WHERE cgsm.user_id_ = #{userId} AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-		AND cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT'
-	</select>
+        SELECT SUM(cg.total_class_times_) - SUM(cg.current_class_times_)
+        FROM class_group_student_mapper cgsm
+                 LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        WHERE cgsm.user_id_ = #{userId}
+          AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND cg.del_flag_ = 0
+          AND cgsm.status_ != 'QUIT'
+    </select>
 
-	<resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
-		<result column="subject_name_" property="subjectName" />
-		<result column="username_" property="name" />
-		<result column="user_id_" property="userId" />
-		<result column="head_url_" property="headUrl" />
-		<result column="gender_" property="gender"/>
-		<result column="music_group_id_" property="musicGroupId"/>
-		<result column="user_type_" property="userType"/>
-		<result column="music_group_name_" property="musicGroupName"/>
-		<result column="subject_id_" property="subjectId"/>
-		<result column="phone_" property="phone"/>
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.dto.BasicUserDto" id="BasicUserDto">
+        <result column="subject_name_" property="subjectName"/>
+        <result column="username_" property="name"/>
+        <result column="user_id_" property="userId"/>
+        <result column="head_url_" property="headUrl"/>
+        <result column="gender_" property="gender"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="user_type_" property="userType"/>
+        <result column="music_group_name_" property="musicGroupName"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="phone_" property="phone"/>
+    </resultMap>
 
     <select id="queryUserGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
         SELECT mg.id_,mg.name_,mg.img_
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		<where>
-				sr.music_group_status_ != 'QUIT'
-			<if test="userId != null">
-				AND sr.user_id_ = #{userId}
-			</if>
-			<if test="search != null">
-				AND mg.name_ LIKE CONCAT('%',#{search},'%')
-			</if>
-		</where>
-	</select>
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        <where>
+            sr.music_group_status_ != 'QUIT'
+            <if test="userId != null">
+                AND sr.user_id_ = #{userId}
+            </if>
+            <if test="search != null">
+                AND mg.name_ LIKE CONCAT('%',#{search},'%')
+            </if>
+        </where>
+    </select>
 
     <select id="countMusicGroupUserNum" resultType="map" parameterType="list">
-		SELECT SUM(student_num_) 'value',music_group_id_ 'key' FROM class_group
-		WHERE FIND_IN_SET(music_group_id_,#{musicGroupIds})
-		GROUP BY music_group_id_
+        SELECT SUM(student_num_) 'value', music_group_id_ 'key'
+        FROM class_group
+        WHERE FIND_IN_SET(music_group_id_, #{musicGroupIds})
+        GROUP BY music_group_id_
     </select>
 
-	<resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
-		<result column="id_" property="id"/>
-		<result property="name" column="username_"/>
-		<result property="portrait" column="avatar_"/>
-	</resultMap>
-	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
-		SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_
-		FROM music_group mg
-		LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
-		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
-		WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId}
-		 OR director_user_id_ = #{userId}) AND mg.status_ = 'PROGRESS'
-		<if test="search != null and search != ''">
-			AND mg.name_ LIKE CONCAT('%',#{search},'%')
-		</if>
-		GROUP BY mg.id_
-	</select>
+    <resultMap id="ImUserModel" type="com.ym.mec.common.entity.ImUserModel">
+        <result column="id_" property="id"/>
+        <result property="name" column="username_"/>
+        <result property="portrait" column="avatar_"/>
+    </resultMap>
+    <select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
+        SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_
+        FROM music_group mg
+        LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+        LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
+        WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId}
+        OR director_user_id_ = #{userId}) AND mg.status_ = 'PROGRESS'
+        <if test="search != null and search != ''">
+            AND mg.name_ LIKE CONCAT('%',#{search},'%')
+        </if>
+        GROUP BY mg.id_
+    </select>
     <select id="countPayNum" resultType="java.util.Map" parameterType="list">
-		SELECT cg.music_group_id_ `key`,COUNT(cgsm.id_) `value` FROM class_group cg
-		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
-		WHERE FIND_IN_SET(cg.music_group_id_,#{musicGroupIds})
-		AND cgsm.status_ != 'QUIT' AND cg.type_ != 'MIX' AND cg.group_type_ = 'MUSIC'
-		GROUP BY cg.music_group_id_
-	</select>
+        SELECT cg.music_group_id_ `key`, COUNT(cgsm.id_) `value`
+        FROM class_group cg
+                 LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE FIND_IN_SET(cg.music_group_id_, #{musicGroupIds})
+          AND cgsm.status_ != 'QUIT'
+          AND cg.type_ != 'MIX'
+          AND cg.group_type_ = 'MUSIC'
+        GROUP BY cg.music_group_id_
+    </select>
 
     <select id="queryListByIds" resultMap="MusicGroup" parameterType="list">
-		SELECT * FROM music_group WHERE FIND_IN_SET(id_,#{musicGroupIds})
-	</select>
+        SELECT *
+        FROM music_group
+        WHERE FIND_IN_SET(id_, #{musicGroupIds})
+    </select>
     <select id="findSettlementTypeByMusicGroups" resultType="map">
-		SELECT
-			id_ AS 'key',
-			settlement_type_ AS 'value'
-		FROM
-			music_group
-		WHERE
-			id_ IN
-			<foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
-				#{musicGroupId}
-			</foreach>
-    </select>
-    
-  	<select id="queryOrganMusicGroupNum" resultType="map">
-    	select count(*) total,sum(case when status_ = 'PREPARE' then 1 else 0 end) prepare_num_,sum(case when status_ = 'PROGRESS' then 1 else 0 end) progress_num_,sum(case when status_ = 'PAUSE' then 1 else 0 end) pause_num_ from music_group
-   		where organ_id_ not in (36,38)
-   		<if test="organId != null">
-   			and FIND_IN_SET(organ_id_,#{organId})
-   		</if>
-  	</select>
-  	
-  	<select id="queryCurrentMonthCoursesNum" resultType="int">
-  		SELECT count(cs.id_) from course_schedule cs
-		left join class_group cg on cs.class_group_id_ = cg.id_
-		left join music_group mg on cg.music_group_id_ = mg.id_
-		where cs.group_type_ = 'MUSIC' AND cg.group_type_ = 'MUSIC'
-  		and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m') and (cs.del_flag_ = 0 or cs.del_flag_ is null) and mg.organ_id_ not in (36,38)
-   		<if test="organId != null">
-   			AND FIND_IN_SET(mg.organ_id_,#{organId})
-   		</if>
-  	</select>
-	<select id="queryTeacherMap" resultType="java.util.Map">
-		SELECT su.id_ 'key',su.phone_ 'value' FROM class_group_teacher_mapper cgtm
-		LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
-		WHERE cgtm.music_group_id_ = #{musicGroupId} AND su.phone_ IS NOT NULL
-		GROUP BY su.id_
-	</select>
-	<select id="queryUserIdByRoleId" resultType="java.lang.Integer" parameterType="list">
-		SELECT DISTINCT sur.user_id_ FROM sys_user_role sur
-		LEFT JOIN employee e ON sur.user_id_ = e.user_id_
-		WHERE sur.role_id_ IN
-		<foreach collection="roleIds" open="(" separator="," close=")" item="item">
-			#{item}
-		</foreach>
-		<if test="organId != null">
-			AND FIND_IN_SET(#{organId},e.organ_id_list_)
-		</if>
-	</select>
-	<select id="queryTeacherIdMap" resultType="java.util.Map">
-		SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
-		WHERE cgtm.music_group_id_ = #{musicGroupId}
-		GROUP BY cgtm.user_id_
-	</select>
-	<select id="queryEducationalMusicGroupId" resultType="java.lang.String">
-		SELECT GROUP_CONCAT(mg.id_) FROM music_group mg WHERE mg.educational_teacher_id_ = #{userIds}
-	</select>
+        SELECT
+        id_ AS 'key',
+        settlement_type_ AS 'value'
+        FROM
+        music_group
+        WHERE
+        id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+    </select>
 
-	<select id="findUserMusicGroup" resultMap="MusicGroup">
-		SELECT mg.* FROM music_group mg
-		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ ASC LIMIT 1
-	</select>
+    <select id="queryOrganMusicGroupNum" resultType="map">
+        select count(*) total,sum(case when status_ = 'PREPARE' then 1 else 0 end) prepare_num_,sum(case when status_ =
+        'PROGRESS' then 1 else 0 end) progress_num_,sum(case when status_ = 'PAUSE' then 1 else 0 end) pause_num_ from
+        music_group
+        where organ_id_ not in (36,38)
+        <if test="organId != null">
+            and FIND_IN_SET(organ_id_,#{organId})
+        </if>
+    </select>
 
-	<select id="findUserMusicGroups" resultMap="MusicGroup">
-		SELECT mg.* FROM music_group mg
-		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{userId}
-	</select>
+    <select id="queryCurrentMonthCoursesNum" resultType="int">
+        SELECT count(cs.id_) from course_schedule cs
+        left join class_group cg on cs.class_group_id_ = cg.id_
+        left join music_group mg on cg.music_group_id_ = mg.id_
+        where cs.group_type_ = 'MUSIC' AND cg.group_type_ = 'MUSIC'
+        and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m') and (cs.del_flag_ = 0 or cs.del_flag_
+        is null) and mg.organ_id_ not in (36,38)
+        <if test="organId != null">
+            AND FIND_IN_SET(mg.organ_id_,#{organId})
+        </if>
+    </select>
+    <select id="queryTeacherMap" resultType="java.util.Map">
+        SELECT su.id_ 'key', su.phone_ 'value'
+        FROM class_group_teacher_mapper cgtm
+                 LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
+        WHERE cgtm.music_group_id_ = #{musicGroupId}
+          AND su.phone_ IS NOT NULL
+        GROUP BY su.id_
+    </select>
+    <select id="queryUserIdByRoleId" resultType="java.lang.Integer" parameterType="list">
+        SELECT DISTINCT sur.user_id_ FROM sys_user_role sur
+        LEFT JOIN employee e ON sur.user_id_ = e.user_id_
+        WHERE sur.role_id_ IN
+        <foreach collection="roleIds" open="(" separator="," close=")" item="item">
+            #{item}
+        </foreach>
+        <if test="organId != null">
+            AND FIND_IN_SET(#{organId},e.organ_id_list_)
+        </if>
+    </select>
+    <select id="queryTeacherIdMap" resultType="java.util.Map">
+        SELECT cgtm.user_id_ 'key', cgtm.user_id_ 'value'
+        FROM class_group_teacher_mapper cgtm
+        WHERE cgtm.music_group_id_ = #{musicGroupId}
+        GROUP BY cgtm.user_id_
+    </select>
+    <select id="queryEducationalMusicGroupId" resultType="java.lang.String">
+        SELECT GROUP_CONCAT(mg.id_)
+        FROM music_group mg
+        WHERE mg.educational_teacher_id_ = #{userIds}
+    </select>
+
+    <select id="findUserMusicGroup" resultMap="MusicGroup">
+        SELECT mg.*
+        FROM music_group mg
+                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+        ORDER BY sr.id_ ASC
+        LIMIT 1
+    </select>
+
+    <select id="findUserMusicGroups" resultMap="MusicGroup">
+        SELECT mg.*
+        FROM music_group mg
+                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+        WHERE sr.user_id_ = #{userId}
+    </select>
 
     <select id="findMusicGroup" resultMap="MusicGroup">
-		SELECT mg.* FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE sr.id_ IN
-		<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
-			#{id}
-		</foreach>
-		AND mg.id_ IS NOT NULL LIMIT 1
-	</select>
-	<select id="queryMusicGroupNameMap" resultType="java.util.Map">
-		SELECT id_ 'key',name_ 'value' FROM music_group WHERE id_ IN
-		<foreach collection="musicGroupIds" open="(" close=")" item="item" separator=",">
-			#{item}
-		</foreach>
-		AND name_ IS NOT NULL
-	</select>
+        SELECT mg.* FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE sr.id_ IN
+        <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+        AND mg.id_ IS NOT NULL LIMIT 1
+    </select>
+    <select id="queryMusicGroupNameMap" resultType="java.util.Map">
+        SELECT id_ 'key',name_ 'value' FROM music_group WHERE id_ IN
+        <foreach collection="musicGroupIds" open="(" close=")" item="item" separator=",">
+            #{item}
+        </foreach>
+        AND name_ IS NOT NULL
+    </select>
 
-	<select id="findUserSchool" resultMap="com.ym.mec.biz.dal.dao.SchoolDao.School">
-		SELECT s.* FROM music_group mg
-		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		LEFT JOIN school s on mg.school_id_ = s.id_
-		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ DESC LIMIT 1
-	</select>
-	<select id="findByClassId" resultMap="MusicGroup">
-		SELECT mg.* FROM class_group cg
-		LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
-		WHERE cg.id_ = #{groupId} AND cg.group_type_ = 'MUSIC'
-		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
-	</select>
+    <select id="findUserSchool" resultMap="com.ym.mec.biz.dal.dao.SchoolDao.School">
+        SELECT s.*
+        FROM music_group mg
+                 LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+                 LEFT JOIN school s on mg.school_id_ = s.id_
+        WHERE sr.user_id_ = #{userId}
+        ORDER BY sr.id_ DESC
+        LIMIT 1
+    </select>
+    <select id="findByClassId" resultMap="MusicGroup">
+        SELECT mg.*
+        FROM class_group cg
+                 LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+        WHERE cg.id_ = #{groupId}
+          AND cg.group_type_ = 'MUSIC'
+          AND mg.status_ = 'PROGRESS'
+          AND cg.del_flag_ = 0
+    </select>
     <select id="queryUserMusicNames" resultType="java.util.Map">
-		SELECT sr.user_id_ 'key',GROUP_CONCAT(mg.name_) 'value' FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
-		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
-			#{userId}
-		</foreach>
-		GROUP BY sr.user_id_
-	</select>
-	<select id="queryUserMusicStatus" resultType="java.util.Map">
-		SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
-		WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
-		WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
-		WHEN sr.music_group_status_ = 'APPLY' THEN '报名'
-		WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
-		FROM student_registration sr
-		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
-		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
-		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
-			#{userId}
-		</foreach>
-		GROUP BY sr.user_id_
-	</select>
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(mg.name_) 'value' FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
+    <select id="queryUserMusicStatus" resultType="java.util.Map">
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
+        WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
+        WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
+        WHEN sr.music_group_status_ = 'APPLY' THEN '报名'
+        WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY sr.user_id_
+    </select>
 
-	<sql id="findMusicGroupsCondition">
-		<where>
-			<if test="educationalTeacherId!=null">
-				AND educational_teacher_id_=#{educationalTeacherId}
-			</if>
-			<if test="search!=null">
-				AND (id_=#{search} OR name_ LIKE CONCAT('%', #{search}, '%'))
-			</if>
-			<if test="status!=null">
-				AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-			</if>
-		</where>
-	</sql>
+    <sql id="findMusicGroupsCondition">
+        <where>
+            <if test="educationalTeacherId!=null">
+                AND educational_teacher_id_=#{educationalTeacherId}
+            </if>
+            <if test="search!=null">
+                AND (id_=#{search} OR name_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+            <if test="status!=null">
+                AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
     <select id="findMusicGroups" resultMap="MusicGroup">
-		SELECT * FROM music_group
-		<include refid="findMusicGroupsCondition"/>
-		ORDER BY id_
-		<include refid="global.limit"/>
-	</select>
-	<select id="countMusicGroups" resultType="int">
-		SELECT COUNT(id_) FROM music_group
-		<include refid="findMusicGroupsCondition"/>
-	</select>
+        SELECT * FROM music_group
+        <include refid="findMusicGroupsCondition"/>
+        ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="countMusicGroups" resultType="int">
+        SELECT COUNT(id_) FROM music_group
+        <include refid="findMusicGroupsCondition"/>
+    </select>
+
+    <select id="getMusicGroupRegister" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegisterDto">
+        SELECT mg.id_ musicGroupId ,o.name_ organName, mg.name_ musicGroupName, mg.status_ musicGroupStatus,
+        COUNT(sr.id_) registerNum
+        FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        LEFT JOIN organization o on o.id_ = mg.organ_id_
+        WHERE mg.status_ IN ('APPLY', 'PAY')
+        <if test="organIds != null">
+            AND FIND_IN_SET (mg.organ_id_,#{organIds})
+        </if>
+        GROUP BY sr.music_group_id_
+    </select>
+
+    <select id="getRegisterSubjectNum" resultType="com.ym.mec.biz.dal.dto.RegisterSubjectDto">
+        SELECT sr.music_group_id_ musicGroupId,s.id_ subjectId,s.name_ subjectName,count(sr.actual_subject_id_) num FROM
+        student_registration sr
+        LEFT JOIN subject s ON s.id_ = sr.actual_subject_id_
+        WHERE sr.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND sr.payment_status_ = 2
+        GROUP BY sr.music_group_id_,sr.actual_subject_id_
+    </select>
+
+    <select id="getMusicGroupRegisterOrder" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegisterDto">
+        SELECT spo.music_group_id_ musicGroupId, COUNT(spod.id_) GroupBuyMusicalNum FROM student_payment_order spo
+        LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
+        WHERE spo.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND spo.status_ = 'SUCCESS'
+        AND spo.type_ = 'APPLY'
+        AND spod.kit_group_purchase_type_ = 'GROUP'
+        AND spod.type_='MUSICAL'
+        GROUP BY spo.music_group_id_
+    </select>
+
+    <select id="getMusicGroupRegisterTotalMoney" resultType="com.ym.mec.biz.dal.dto.MusicGroupRegisterDto">
+        SELECT music_group_id_ musicGroupId, SUM(actual_amount_) totalMoney FROM student_payment_order WHERE
+        music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+        AND status_ = 'SUCCESS'
+        AND type_ = 'APPLY'
+        GROUP BY music_group_id_
+    </select>
 </mapper>

+ 2 - 20
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -534,6 +534,7 @@
             sys_user su
         WHERE
             1=1
+            AND su.del_flag_=0 AND su.lock_flag_=0
 			AND FIND_IN_SET('STUDENT',su.user_type_)
             <if test="organIdList!=null">
                 AND su.organ_id_ IN
@@ -544,16 +545,6 @@
             <if test="search != null">
                 AND (su.username_ LIKE CONCAT('%', #{search}, '%') OR su.phone_ LIKE CONCAT('%', #{search}, '%'))
             </if>
-            AND su.id_ NOT IN (
-        SELECT DISTINCT pg.student_id_ FROM course_schedule_student_payment cssp LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE cssp.group_type_='PRACTICE' AND  pg.type_ = 'CHARGE'
-            )
-            AND NOT EXISTS (
-                SELECT user_id_ FROM course_schedule_student_payment cssp
-                LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
-                WHERE cssp.user_id_=su.id_ AND cs.teach_mode_='ONLINE'
-                AND NOT EXISTS(SELECT student_id_ FROM practice_group WHERE cssp.music_group_id_=id_ AND cssp.group_type_='PRACTICE' AND type_='TRIAL')
-                AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) > NOW()
-            )
         ORDER BY su.id_
         <include refid="global.limit"/>
     </select>
@@ -564,6 +555,7 @@
             sys_user su
         WHERE
             1=1
+            AND su.del_flag_=0 AND su.lock_flag_=0
 			AND FIND_IN_SET('STUDENT',su.user_type_)
             <if test="organIdList!=null">
             AND su.organ_id_ IN
@@ -574,16 +566,6 @@
             <if test="search != null">
                 AND (su.username_ LIKE CONCAT('%', #{search}, '%') OR su.phone_ LIKE CONCAT('%', #{search}, '%'))
             </if>
-            AND su.id_ NOT IN (
-                SELECT DISTINCT pg.student_id_ FROM course_schedule_student_payment cssp LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE cssp.group_type_='PRACTICE' AND  pg.type_ = 'CHARGE'
-            )
-            AND NOT EXISTS (
-                SELECT user_id_ FROM course_schedule_student_payment cssp
-                LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
-                WHERE cssp.user_id_=su.id_ AND cs.teach_mode_='ONLINE'
-                AND NOT EXISTS(SELECT student_id_ FROM practice_group WHERE cssp.music_group_id_=id_ AND cssp.group_type_='PRACTICE' AND type_='TRIAL')
-                AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) > NOW()
-            )
     </select>
     <select id="findEnableAssignTeachers" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
         SELECT su.id_ userId,su.username_ userName,su.avatar_ avatar

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

@@ -164,7 +164,7 @@
     <sql id="vipGroupQueryCondition">
         <where>
             1=1
-            AND vg.audit_status_='PASS'
+            AND vg.audit_status_='PASS' AND vg.group_status_ != 7
             <if test="search!=null and search!=''">
                 AND (vg.name_ LIKE CONCAT('%',#{search},'%') OR vg.id_= #{search})
             </if>
@@ -323,6 +323,7 @@
         <where>
             vg.audit_status_='PASS'
             AND vg.group_status_=1
+            AND vg.group_status_!=7
             AND vg.courses_expire_date_ &gt;= DATE_FORMAT(NOW(),'%Y%m%d')
             AND vg.registration_start_time_ &lt;= NOW()
             AND vg.courses_start_date &gt; NOW()

+ 219 - 40
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -14,8 +14,10 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
@@ -87,6 +90,9 @@ public class ExportController extends BaseController {
     @Autowired
     private DegreeRegistrationService degreeRegistrationService;
 
+    @Autowired
+    private CooperationOrganService cooperationOrganService;
+
     @ApiOperation(value = "导出教师考勤列表")
     @PostMapping("export/queryTeacherAttendances")
     @PreAuthorize("@pcs.hasPermissions('export/queryTeacherAttendances')")
@@ -97,15 +103,15 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        if(!sysUser.getIsSuperAdmin()){
+        if (!sysUser.getIsSuperAdmin()) {
             Employee employee = employeeDao.get(sysUser.getId());
             if (StringUtils.isEmpty(queryInfo.getOrganId())) {
                 queryInfo.setOrganId(employee.getOrganIdList());
-            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
                 throw new BizException("用户所在分部异常");
-            }else {
+            } else {
                 List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
                     throw new BizException("非法请求");
                 }
             }
@@ -114,7 +120,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "老师编号", "老师姓名", "课程编号", "课程名称", "上课日期",
-                    "课程开始时间","课程结束时间","课程类型","签到时间","签到状态","签退时间","签退状态","备注"}, new String[]{
+                    "课程开始时间", "课程结束时间", "课程类型", "签到时间", "签到状态", "签退时间", "签退状态", "备注"}, new String[]{
                     "organName", "teacherId", "teacherName", "courseScheduleId", "courseScheduleName", "classDate",
                     "startClassTime", "endClassTime", "courseScheduleType.msg", "signInTime", "signInStatus.msg", "signOutTime", "signOutStatus.msg",
                     "remark"}, rows);
@@ -319,7 +325,7 @@ public class ExportController extends BaseController {
             }
         }
         Date endTime = queryInfo.getEndTime();
-        if(endTime != null){
+        if (endTime != null) {
             queryInfo.setEndTime(DateUtil.addDays(endTime, 1));
         }
         List<TeacherCourseReward> rows = teacherCourseRewardService.queryPage(queryInfo).getRows();
@@ -377,10 +383,10 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "是否激活", "是否有课", "是否有网管课", "课程余额(元)", "账户余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签","指导老师"}, new String[]{
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
                     "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg", "courseBalance", "balance", "musicGroupName",
-                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg","teacherName"}, rows);
+                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();
@@ -543,7 +549,7 @@ public class ExportController extends BaseController {
                     "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
                     "教学点", "课程状态", "指导老师", "学员编号", "是否点名"}, new String[]{
                     "organName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
-                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId","isCallNames.msg"}, rows);
+                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -828,6 +834,7 @@ public class ExportController extends BaseController {
                 row.setMusicalFee(BigDecimal.ZERO);
                 row.setTeachingFee(BigDecimal.ZERO);
                 if (row.getChargeType() != null) {
+
                     if (row.getChargeType().equals(1)) {
                         row.setSporadicType("考级");
                     } else if (row.getChargeType().equals(2)) {
@@ -846,6 +853,8 @@ public class ExportController extends BaseController {
                         row.setSporadicType("账户充值");
                     } else if (row.getChargeType().equals(10)) {
                         row.setSporadicType("乐保服务");
+                    } else if (row.getChargeType().equals(11)) {
+                        row.setSporadicType("其他");
                     }
                 }
                 School userSchool = musicGroupDao.findUserSchool(row.getUserId());
@@ -878,9 +887,9 @@ public class ExportController extends BaseController {
         }
 
         try {
-            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户","应付金额", "现金支付","余额支付", "到账时间",
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "到账时间",
                     "关联乐团ID/VIP课ID", "课程形态", "课程费用", "减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
-            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos","expectAmount", "actualAmount","balancePaymentAmount", "payTime", "musicGroupId",
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "payTime", "musicGroupId",
                     "groupType.desc", "courseFee", "remitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
@@ -1031,9 +1040,9 @@ public class ExportController extends BaseController {
                 } else {
                     row.setAttendanceStr("否");
                 }
-                if(new Integer(1).equals(row.getAssignHomework())){
+                if (new Integer(1).equals(row.getAssignHomework())) {
                     row.setAssignHomeworkStr("是");
-                }else{
+                } else {
                     row.setAssignHomeworkStr("否");
                 }
             }
@@ -1241,13 +1250,13 @@ public class ExportController extends BaseController {
             row.setIsViewStr(Objects.isNull(row.getIsView()) || row.getIsView() == 0 ? "否" : "是");
             row.setIsRepliedStr(Objects.isNull(row.getIsReplied()) || row.getIsReplied() == 0 ? "否" : "是");
             row.setIsRepliedTimelyStr(Objects.isNull(row.getIsRepliedTimely()) || row.getIsRepliedTimely() == 0 ? "否" : "是");
-            row.setExistVipCourseStr(Objects.isNull(row.getExistVipCourse())|| row.getExistVipCourse()==0?"否":"是");
+            row.setExistVipCourseStr(Objects.isNull(row.getExistVipCourse()) || row.getExistVipCourse() == 0 ? "否" : "是");
         }
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
                     new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交作业", "提交作业时间", "是否评价", "是否有vip", "及时评价"},
-                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName", "user.username","userId", "statusStr","submitTime", "isRepliedStr", "existVipCourseStr","isRepliedTimelyStr"}, rows);
+                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName", "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -1300,8 +1309,8 @@ public class ExportController extends BaseController {
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"学员编号", "学员姓名", "所属分部", "指导老师","教务老师", "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "作业提交时间"},
-                    new String[]{"studentId", "studentName", "organName", "teacherName","educationalTeacherName", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",
+                    new String[]{"学员编号", "学员姓名", "所属分部", "指导老师", "教务老师", "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "作业提交时间"},
+                    new String[]{"studentId", "studentName", "organName", "teacherName", "educationalTeacherName", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",
                             "exercisesMessageNum", "exercisesMessageTimelyNum", "existPracticeCourse", "existVipCourse", "lastSubmitTime"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1430,29 +1439,29 @@ public class ExportController extends BaseController {
         }
         List<Student4operating> rows = PageOperatingStudents.getRows();
         for (Student4operating row : rows) {
-            if(row.getOperatingTag() != null && row.getOperatingTag()==1){
+            if (row.getOperatingTag() != null && row.getOperatingTag() == 1) {
                 row.setOperatingTagStr("是");
-            }else {
+            } else {
                 row.setOperatingTagStr("否");
             }
-            if(row.getVipTimes() != null && row.getVipTimes() >0){
+            if (row.getVipTimes() != null && row.getVipTimes() > 0) {
                 row.setVipTimesStr("是");
-            }else {
+            } else {
                 row.setVipTimesStr("否");
             }
-            if(row.getMusicNetWorkTimes() != null && row.getMusicNetWorkTimes() >0){
+            if (row.getMusicNetWorkTimes() != null && row.getMusicNetWorkTimes() > 0) {
                 row.setMusicNetWorkTimesStr("是");
-            }else {
+            } else {
                 row.setMusicNetWorkTimesStr("否");
             }
-            if(row.getFreePracticeTimes() != null && row.getFreePracticeTimes() >0){
+            if (row.getFreePracticeTimes() != null && row.getFreePracticeTimes() > 0) {
                 row.setFreePracticeTimesStr("是");
-            }else {
+            } else {
                 row.setFreePracticeTimesStr("否");
             }
-            if(row.getBuyPracticeTimes() != null && row.getBuyPracticeTimes() >0){
+            if (row.getBuyPracticeTimes() != null && row.getBuyPracticeTimes() > 0) {
                 row.setBuyPracticeTimesStr("是");
-            }else {
+            } else {
                 row.setBuyPracticeTimesStr("否");
             }
         }
@@ -1460,8 +1469,8 @@ public class ExportController extends BaseController {
         try {
 
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"分部", "学生", "学生编号", "指导老师","指导老师id", "参与运营指标", "有线上VIP课", "参与免费网管课", "有付费网管课","有乐团网管课"},
-                    new String[]{"organName", "studentName", "studentId", "teacherName","teacherId", "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr","musicNetWorkTimes"}, rows);
+                    new String[]{"分部", "学生", "学生编号", "指导老师", "指导老师id", "参与运营指标", "有线上VIP课", "参与免费网管课", "有付费网管课", "有乐团网管课"},
+                    new String[]{"organName", "studentName", "studentId", "teacherName", "teacherId", "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr", "musicNetWorkTimes"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -1538,9 +1547,9 @@ public class ExportController extends BaseController {
                 } else {
                     row.setAttendanceStr("否");
                 }
-                if(new Integer(1).equals(row.getAssignHomework())){
+                if (new Integer(1).equals(row.getAssignHomework())) {
                     row.setAssignHomeworkStr("是");
-                }else{
+                } else {
                     row.setAssignHomeworkStr("否");
                 }
             }
@@ -1571,7 +1580,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "考级报名导出")
     @RequestMapping("export/degreeRegistration")
     @PreAuthorize("@pcs.hasPermissions('export/degreeRegistration')")
-    public void degreeRegistration(DegreeQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void degreeRegistration(DegreeQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         queryInfo.setSort("create_time_");
         queryInfo.setOrder("ASC");
         queryInfo.setRows(65000);
@@ -1586,20 +1595,20 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             for (DegreeRegistration row : pageList.getRows()) {
-                if(row.getGender().equals("1")){
+                if (row.getGender().equals("1")) {
                     row.setGender("男");
                 } else {
                     row.setGender("女");
                 }
-				if (row.getStatus().equals(2)) {
-					row.setStatusStr("已缴费");
-				} else {
-					row.setStatusStr("未缴费");
-				}
+                if (row.getStatus().equals(2)) {
+                    row.setStatusStr("已缴费");
+                } else {
+                    row.setStatusStr("未缴费");
+                }
             }
 
-            String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注","缴费状态","订单编号","商户订单号","报名时间"};
-            String[] body = {"name", "gender", "idcard", "city", "school", "subject", "level", "theoryLevel", "theoryCert", "mobile", "money", "theoryMoney", "memo","statusStr","orderNo","transNo","createTime"};
+            String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
+            String[] body = {"name", "gender", "idcard", "city", "school", "subject", "level", "theoryLevel", "theoryCert", "mobile", "money", "theoryMoney", "memo", "statusStr", "orderNo", "transNo", "createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1619,4 +1628,174 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+
+    @ApiOperation(value = "合作单位导出")
+    @RequestMapping("export/cooperationOrgan")
+    @PreAuthorize("@pcs.hasPermissions('export/cooperationOrgan')")
+    public void cooperationOrgan(CooperationOrganQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new IOException("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                throw new IOException("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    throw new IOException("非法请求");
+                }
+            }
+        }
+        queryInfo.setRows(65000);
+        PageInfo<CooperationOrgan> pageList = cooperationOrganService.queryPage(queryInfo);
+        if (pageList.getTotal() <= 0) {
+            response.setStatus(200);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+
+            String[] header = {"分部", "单位编号", "单位名称", "联系人", "职位", "手机号", "是否启用"};
+            String[] body = {"organization.name", "id", "name", "linkman", "job", "mobileNo", "isEnable"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=cooperationOrgan-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    @ApiOperation(value = "报名中缴费中乐团缴费情况导出")
+    @RequestMapping("export/musicGroupRegister")
+    @PreAuthorize("@pcs.hasPermissions('export/musicGroupRegister')")
+    public void musicGroupRegister(String organIds, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isBlank(organIds)) {
+                organIds = employee.getOrganIdList();
+            }
+        }
+        List<MusicGroupRegisterDto> musicGroupRegisters = musicGroupDao.getMusicGroupRegister(organIds);
+
+        if (musicGroupRegisters.size() <= 0) {
+            response.setStatus(200);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        List<String> musicGroupIds = musicGroupRegisters.stream().map(MusicGroupRegisterDto::getMusicGroupId).collect(Collectors.toList());
+
+        List<RegisterSubjectDto> registerSubjects = musicGroupDao.getRegisterSubjectNum(musicGroupIds);
+        List<MusicGroupRegisterDto> musicGroupRegisterOrders = musicGroupDao.getMusicGroupRegisterOrder(musicGroupIds);
+        List<MusicGroupRegisterDto> musicGroupRegisterTotalMoneys = musicGroupDao.getMusicGroupRegisterTotalMoney(musicGroupIds);
+
+        HashSet<Integer> added = new HashSet<>();
+        List<String> header = new ArrayList<>();
+        header.add("分部");
+        header.add("乐团名称");
+        header.add("乐团状态");
+        header.add("报名总数");
+        List<String> body = new ArrayList<>();
+        body.add("organName");
+        body.add("musicGroupName");
+        body.add("musicGroupStatus");
+        body.add("registerNum");
+        for (RegisterSubjectDto registerSubject : registerSubjects) {
+            if (!added.contains(registerSubject.getSubjectId())) {
+                added.add(registerSubject.getSubjectId());
+                header.add(registerSubject.getSubjectName());
+                body.add("subject" + registerSubject.getSubjectId());
+            }
+        }
+        header.add("团购数");
+        header.add("缴费总数");
+        header.add("回款总金额");
+
+        body.add("groupBuyMusicalNum");
+        body.add("registerPayNum");
+        body.add("totalMoney");
+
+
+        List<Map<String, Object>> data = new ArrayList<>();
+        for (MusicGroupRegisterDto musicGroupRegister : musicGroupRegisters) {
+            added.clear();
+            HashMap<String, Object> musicGroupRegisterMap = new HashMap<>();
+            int registerPayNum = 0;
+            musicGroupRegisterMap.put("organName", musicGroupRegister.getOrganName());
+            musicGroupRegisterMap.put("musicGroupName", musicGroupRegister.getMusicGroupName());
+            musicGroupRegisterMap.put("musicGroupStatus", musicGroupRegister.getMusicGroupStatus().getMsg());
+            musicGroupRegisterMap.put("registerNum", musicGroupRegister.getRegisterNum());
+            for (MusicGroupRegisterDto musicGroupRegisterOrder : musicGroupRegisterOrders) {
+                if (musicGroupRegisterOrder.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    musicGroupRegister.setGroupBuyMusicalNum(musicGroupRegisterOrder.getGroupBuyMusicalNum());
+                }
+            }
+            for (MusicGroupRegisterDto musicGroupRegisterTotalMoney : musicGroupRegisterTotalMoneys) {
+                if (musicGroupRegisterTotalMoney.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    musicGroupRegister.setTotalMoney(musicGroupRegisterTotalMoney.getTotalMoney());
+                }
+            }
+
+            for (RegisterSubjectDto registerSubject : registerSubjects) {
+                if (registerSubject.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    added.add(registerSubject.getSubjectId());
+                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), registerSubject.getNum());
+                    registerPayNum += registerSubject.getNum();
+                }
+                if (!added.contains(registerSubject.getSubjectId())) {
+                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), 0);
+                }
+            }
+            musicGroupRegisterMap.put("groupBuyMusicalNum", musicGroupRegister.getGroupBuyMusicalNum());
+            musicGroupRegisterMap.put("registerPayNum", registerPayNum);
+            musicGroupRegisterMap.put("totalMoney", musicGroupRegister.getTotalMoney());
+            data.add(musicGroupRegisterMap);
+        }
+
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] headerStr = header.toArray(new String[header.size()]);
+            String[] bodyStr = body.toArray(new String[body.size()]);
+
+            HSSFWorkbook workbook = POIUtil.exportExcel(headerStr, bodyStr, data);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }

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

@@ -5,6 +5,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
+import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
 import com.ym.mec.biz.service.SporadicChargeInfoService;
 import com.ym.mec.common.controller.BaseController;
@@ -87,7 +88,7 @@ public class SporadicChargeInfoController extends BaseController {
 			}
 			sporadicChargeInfo.setOrganId(user.getOrganId());
 		}
-		if(sporadicChargeInfo.getChargeType().equals("6")){
+		if(sporadicChargeInfo.getChargeType().equals(SporadicChargeTypeEnum.LUCKY_BAG_ACTIVE)){
 			SporadicChargeInfo info = sporadicChargeInfoService.findByOrganIdAndType(sporadicChargeInfo.getOrganId(), sporadicChargeInfo.getChargeType().getCode());
 			if(info != null){
 				return failed("分部活动已存在,请勿重复创建");