瀏覽代碼

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into saas_export

zouxuan 3 年之前
父節點
當前提交
00fda7305c
共有 25 個文件被更改,包括 1950 次插入1380 次删除
  1. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  2. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeBuyResultDto.java
  3. 30 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScore.java
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExamSongTypeEnum.java
  5. 28 11
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRepairService.java
  6. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreService.java
  7. 49 18
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  8. 7 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  9. 20 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  10. 348 357
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java
  11. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  12. 53 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java
  13. 783 763
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  14. 1 1
      mec-biz/src/main/resources/config/mybatis/SysMusicScoreCategoriesMapper.xml
  15. 14 4
      mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml
  16. 24 0
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  17. 26 26
      mec-teacher/src/main/java/com/ym/mec/teacher/config/ResourceServerConfig.java
  18. 43 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduContractsController.java
  19. 31 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduPracticeGroupController.java
  20. 134 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduRepairController.java
  21. 32 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduSysCouponCodeController.java
  22. 40 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/GoodsController.java
  23. 30 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentController.java
  24. 224 156
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  25. 0 21
      mec-web/src/main/java/com/ym/mec/web/controller/SysMusicScoreController.java

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

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseHomework;
@@ -519,4 +521,12 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     int countTeacherBasicInfo(Map<String, Object> params);
 
     List<SysUserDto> queryTeacherBasicInfo(Map<String, Object> params);
+
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     */
+    <T> IPage<T> getStudentsByTeacherOrgan(Page<T> page, @Param("param") Map<String, Object> param);
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeBuyResultDto.java

@@ -33,6 +33,11 @@ public class PracticeBuyResultDto {
     
     private Integer courseNum;
 
+    /**
+     * 查询财务章
+     */
+    private String financeChops;
+
     public String getOrderNo() {
         return orderNo;
     }
@@ -120,4 +125,12 @@ public class PracticeBuyResultDto {
 	public void setCourseNum(Integer courseNum) {
 		this.courseNum = courseNum;
 	}
+
+    public String getFinanceChops() {
+        return financeChops;
+    }
+
+    public void setFinanceChops(String financeChops) {
+        this.financeChops = financeChops;
+    }
 }

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

@@ -50,6 +50,8 @@ public class SysMusicScore {
 	
 	/** 类型PERSON 个人,COMMON公用 */
 	private ExamSongTypeEnum type;
+
+	private String typeName;
 	
 	/** 声部列表 */
 	private String subjectIds;
@@ -105,9 +107,12 @@ public class SysMusicScore {
 
 	//是否显示
 	private Integer showFlag = 0;
+	private String showName;
 
 	private Boolean isOpenMetronome;
-	
+
+	private String openMetronomeName;
+
 	private String museScoreUrl;
 	
 	private String museScoreMemo;
@@ -124,6 +129,30 @@ public class SysMusicScore {
 		this.extConfigJson = extConfigJson;
 	}
 
+	public String getTypeName() {
+		return typeName;
+	}
+
+	public void setTypeName(String typeName) {
+		this.typeName = typeName;
+	}
+
+	public String getOpenMetronomeName() {
+		return openMetronomeName;
+	}
+
+	public String getShowName() {
+		return showName;
+	}
+
+	public void setShowName(String showName) {
+		this.showName = showName;
+	}
+
+	public void setOpenMetronomeName(String openMetronomeName) {
+		this.openMetronomeName = openMetronomeName;
+	}
+
 	public Integer getSubjectId() {
 		return subjectId;
 	}

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

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum ExamSongTypeEnum implements BaseEnum<String, ExamSongTypeEnum> {
-	PERSON("PERSON", "个人"), COMMON("COMMON", "公");
+	PERSON("PERSON", "个人"), COMMON("COMMON", "公");
 
 	private String code;
 

+ 28 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRepairService.java

@@ -20,22 +20,35 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
     PageInfo<BasicUserDto> getStudents(RepairStudentQueryInfo queryInfo);
 
     /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
+     */
+    PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param);
+
+    /**
      * 添加维修单
+     *
      * @param repairInfo
      * @return
      */
-   Map addRepair(StudentRepair repairInfo) throws Exception;
+    Map addRepair(StudentRepair repairInfo) throws Exception;
 
 
     /**
      * 维修完成
+     *
      * @param id
      * @param description
      */
-    void repairSuccess(Integer id, String description,Integer repairStatus);
+    void repairSuccess(Integer id, String description, Integer repairStatus);
 
     /**
      * 获取学生信息
+     *
      * @param studentId
      * @return
      */
@@ -43,6 +56,7 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
 
     /**
      * 获取维修单详情
+     *
      * @param id
      * @return
      */
@@ -50,6 +64,7 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
 
     /**
      * 支付维修单
+     *
      * @param repairInfo
      * @return
      */
@@ -57,58 +72,60 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
 
     /**
      * 获取学生维修技师信息
+     *
      * @param studentId
      * @return
      */
-    BasicUserDto getStudentRepairer(Integer studentId,Integer organId);
+    BasicUserDto getStudentRepairer(Integer studentId, Integer organId);
 
     /**
      * 支付回调
+     *
      * @param order
      */
     Boolean orderCallback(StudentPaymentOrder order);
 
     /**
+     * @param studentGoodsSell:
+     * @return java.util.Map
      * @describe 添加商品销售订单
      * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
      * @author zouxuan
      * @date 2020/9/16
      * @time 13:47
-     * @param studentGoodsSell:
-     * @return java.util.Map
      */
     Map addGoodsSellOrder(StudentGoodsSell studentGoodsSell) throws Exception;
 
     /**
+     * @param goodsSellId:
+     * @return java.util.Map
      * @describe 学员扫码支付
      * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
      * @author zouxuan
      * @date 2020/9/16
      * @time 13:47
-     * @param goodsSellId:
-     * @return java.util.Map
      */
     Map studentPaymentGoodsOrder(Integer goodsSellId) throws Exception;
 
     /**
+     * @param order:
+     * @return void
      * @describe 商品销售订单回调
      * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
      * @author zouxuan
      * @date 2020/9/16
      * @time 16:58
-     * @param order:
-     * @return void
      */
     void goodsSellOrderCallback(StudentPaymentOrder order);
 
     /**
+     * @param queryInfo:
+     * @return java.lang.Object
      * @describe 获取商品购买教务老师关联的学员列表
      * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
      * @author zouxuan
      * @date 2020/9/28
      * @time 11:27
-     * @param queryInfo:
-     * @return java.lang.Object
      */
     PageInfo<BasicUserDto> queryEduStudents(QueryInfo queryInfo);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreService.java

@@ -8,6 +8,8 @@ import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface SysMusicScoreService extends BaseService<Integer, SysMusicScore> {
 
     void updateMusicScore(MusicScoreDto musicScoreDto);
@@ -16,6 +18,8 @@ public interface SysMusicScoreService extends BaseService<Integer, SysMusicScore
 
     void del(Integer id);
 
+    List<SysMusicScore> queryMusicScoreAll(SysExamSongQueryInfo queryInfo);
+
     PageInfo<SysMusicScore> queryMusicScorePage(SysExamSongQueryInfo queryInfo);
     
     PageInfo<SysMusicScore> queryMusicScorePageInfo(SysExamSongQueryInfo queryInfo);

+ 49 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -9,8 +9,6 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
-import org.apache.ibatis.annotations.Param;
-
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -19,24 +17,28 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 新增教师
+     *
      * @param teacher
      */
     int add(Teacher teacher) throws Exception;
 
     /**
      * 修改教师信息(不包含离职日期等信息)
+     *
      * @param teacher
      */
     void updateTea1(Teacher teacher);
 
     /**
      * 修改教师信息
+     *
      * @param teacher
      */
     void updateTea(Teacher teacher);
 
     /**
      * 分页查询教师列表
+     *
      * @param queryInfo
      * @return
      */
@@ -44,6 +46,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师详情
+     *
      * @param id
      * @return
      */
@@ -58,14 +61,16 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师所在群组列表
+     *
      * @param userId
      * @param search
      * @return
      */
-    List<ImGroupModel> queryTeacherGroups(Integer userId,String search);
+    List<ImGroupModel> queryTeacherGroups(Integer userId, String search);
 
     /**
      * 获取教师通讯录
+     *
      * @param id
      * @param search
      * @return
@@ -74,6 +79,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师通讯录
+     *
      * @param id
      * @param search
      * @return
@@ -82,6 +88,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师通讯录学员列表
+     *
      * @param id
      * @param search
      * @return
@@ -90,39 +97,42 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 查询分部所有老师
+     *
      * @param organId
      * @return
      */
     List<TeacherBasicDto> findTeachers(String organId);
 
     /**
+     * @param subjectId: 科目编号
+     * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
      * @describe 根据科目获取部门下的教师
      * @author Joburgess
      * @date 2019/11/4
-     * @param subjectId: 科目编号
-     * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
      */
     List<Teacher> findOrganTeacherBySubject(Integer subjectId);
 
     /**
      * 获取教师上课结算列表
+     *
      * @param queryInfo
      * @return
      */
     PageInfo<TeacherCloseDto> queryCloses(TeacherCloseQueryInfo queryInfo);
 
     /**
+     * @param musicGroupId:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.BasicUserDto>
      * @describe 获取乐团下的老师
      * @author Joburgess
      * @date 2019/10/19
-     * @param musicGroupId:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.BasicUserDto>
      */
     List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId);
 
 
     /**
      * 获取老师未结算课酬总额
+     *
      * @param teacherId
      * @return
      */
@@ -130,6 +140,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取乐团详情老师列表
+     *
      * @param queryInfo
      * @return
      */
@@ -137,6 +148,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师上课记录列表(乐团管理--乐团详情)
+     *
      * @param queryInfo
      * @return
      */
@@ -144,6 +156,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取乐团学员的报名列表
+     *
      * @param queryInfo
      * @return
      */
@@ -151,13 +164,15 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取分部下教师
+     *
      * @param organId
      * @return
      */
-    List<Teacher> findTeacherByOrganId(String organId,String subjectIds,String jobNature);
+    List<Teacher> findTeacherByOrganId(String organId, String subjectIds, String jobNature);
 
     /**
      * 分页获取教师列表
+     *
      * @param queryInfo
      * @return
      */
@@ -165,6 +180,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师布置的作业
+     *
      * @param courseScheduleId
      * @return
      */
@@ -172,52 +188,67 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教务端通讯录
+     *
      * @param id
      * @param search
      * @return
      */
     List<BasicUserDto> queryEducationIpa(Integer id, String search);
-    
+
     /**
      * 实名认证
-     * @param userId 用户编号
-     * @param realName 姓名
-     * @param idcardNo 身份证号码
+     *
+     * @param userId         用户编号
+     * @param realName       姓名
+     * @param idcardNo       身份证号码
      * @param idcardFrontImg 身份证正面
-     * @param idcardBackImg 身份证反面
-     * @param idcardHandImg 手持身份照
+     * @param idcardBackImg  身份证反面
+     * @param idcardHandImg  手持身份照
      * @return
      */
-	boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg);
+    boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg);
 
     /**
      * 获取和当前指导老师关联的学员
+     *
      * @return
      */
     PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo);
-    
+
     /**
      * 查询老师默认课酬
+     *
      * @param organIdList
      * @return
      */
     List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(String organIdList);
 
     /**
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.TeacherMusicStudentOverViewDto>
      * @describe 查询教师关联的乐团预览信息
      * @author Joburgess
      * @date 2021/8/12 0012
-     * @param queryInfo:
-     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.TeacherMusicStudentOverViewDto>
      */
     PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(TeacherServeQueryInfo queryInfo);
 
     /**
      * 查询分部下教师关联的会员数据
+     *
      * @param queryInfo
      * @return
      */
     PageInfo<TeacherStudentDataDto> queryMemberStudentData(TeacherServeQueryInfo queryInfo);
 
     PageInfo<SysUserDto> queryTeacherBasicInfo(UserBasicQueryInfo queryInfo);
+
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
+     */
+    PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param);
 }

+ 7 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -92,8 +92,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private ImLiveRoomReservationService imLiveRoomReservationService;
     @Autowired
     private ImLiveRoomBlackService imLiveRoomBlackService;
-    @Autowired
-    private EmployeeService employeeService;
 
     //待替换的变量
     public static final String USER_ID = "${userId}";
@@ -648,18 +646,18 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                     member.setTotalTime(speakerLiveTime);
                 }
             }
+            //添加人员数据
             Lists.partition(memberList, 500)
                     .forEach(list -> liveBroadcastRoomMemberService.getDao().insertBatch(list));
-            //删除用户对应的直播间关系缓存
-            memberList.stream()
-                    .map(ImLiveBroadcastRoomMember::getUserId)
-                    .filter(Objects::nonNull)
-                    .forEach(id -> redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, id.toString())).delete());
         }
+        //获取在线人员信息
+        RMap<Integer, String> onlineUserCache = getOnlineUserCache(roomUid);
+        //删除人员对应直播间编号信息
+        onlineUserCache.forEach((id,s) -> redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, id.toString())).delete());
         //删除直播间所有用户数据
         roomTotalUserCache.delete();
         //删除在线用户数据
-        getOnlineUserCache(roomUid).delete();
+        onlineUserCache.delete();
     }
 
     /**
@@ -916,7 +914,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         onlineUserInfo.fastPut(userId, JSONObject.toJSONString(userInfo));
         //向直播间发送当前在线人数消息
         this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
-        log.info("join sendOnlineUserCount>>>> param is null   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserInfo.size());
+        log.info("join sendOnlineUserCount>>>>   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserInfo.size());
         log.info("joinRoom>>>> userInfo: {}", JSONObject.toJSONString(userInfo));
     }
 

+ 20 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -148,9 +148,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Autowired
     private SysUserCashAccountLogService sysUserCashAccountLogService;
     @Autowired
-    private MemberFeeSettingDao memberFeeSettingDao;
+    private OrganizationService organizationService;
     @Autowired
-    private MemberFeeSettingService memberFeeSettingService;
+    private TenantConfigService tenantConfigService;
 
     private static Map<Integer, Map<Integer, List<Integer>>> schoolSubjectTeachersMap;
 
@@ -3460,12 +3460,27 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (Objects.isNull(order)) {
             throw new BizException("订单不存在");
         }
+
+        //查询财务章 如果分部有企业信息,就用分部上的企业信息,否则用机构上的企业信息
+        String financeChops;
+        Organization organizationDto = organizationService.get(order.getOrganId());
+        if (organizationDto == null || StringUtils.isBlank(organizationDto.getCorporateName()) || StringUtils.isBlank(organizationDto.getCorporateCode())) {
+            TenantConfig tenantConfig = tenantConfigService.queryByTenantId(order.getTenantId());
+            if (tenantConfig == null) {
+                throw new BizException("机构配置信息查询失败");
+            }
+            financeChops = tenantConfig.getCorporateFinanceChops();
+        } else {
+            financeChops = organizationDto.getCorporateFinancialSeal();
+        }
+
         PracticeBuyResultDto practiceBuyResult = new PracticeBuyResultDto();
         practiceBuyResult.setOrderNo(orderNo);
         practiceBuyResult.setStatus(order.getStatus());
         practiceBuyResult.setCreateTime(order.getCreateTime());
         practiceBuyResult.setPrice(order.getExpectAmount());
         practiceBuyResult.setType(order.getType().getCode());
+        practiceBuyResult.setFinanceChops(financeChops);
 
         if (order.getGroupType().equals(GroupType.GOODS_SELL)) {
             practiceBuyResult.setDetail(studentGoodsSellDao.getStudentGoodsSellDto(orderNo));
@@ -4901,17 +4916,17 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         String activeConfig = sysConfigDao.findConfigValue("cloud_teacher_active_config");
         List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(activeConfig, Cloud2022ActivityDto.class);
         List<Cloud2022ActivityDto> activityDtos = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).collect(Collectors.toList());
-        if(org.apache.commons.collections.CollectionUtils.isEmpty(activityDtos)){
+        if (org.apache.commons.collections.CollectionUtils.isEmpty(activityDtos)) {
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "您没有排课资格,请联系指导老师");
         }
         //是否还有购买资格
         Integer activityId = Integer.parseInt(activityDtos.get(0).getActivityId());
         Integer noCourseNum = activityUserMapperService.getStudentNoCourseNum(sysUser.getId(), activityId);
         List<ActivityUserMapper> activityUserMappers = activityUserMapperService.findByStudentIdList(activityId, sysUser.getId().toString(), "GIVE_PRACTICE");
-        if(org.apache.commons.collections.CollectionUtils.isEmpty(activityUserMappers)){
+        if (org.apache.commons.collections.CollectionUtils.isEmpty(activityUserMappers)) {
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "您没有排课资格,请联系指导老师");
         }
-        if(noCourseNum == null || noCourseNum <= 0){
+        if (noCourseNum == null || noCourseNum <= 0) {
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "您没有排课资格,请联系指导老师");
         }
         if (Objects.isNull(practiceGroupBuyParams.getUserId())) {

+ 348 - 357
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -8,17 +8,12 @@ import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.service.*;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -43,17 +38,6 @@ import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.GoodsSellDto;
 import com.ym.mec.biz.dal.dto.RepairGoodsDto;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.GoodsProcurement;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.SellOrder;
-import com.ym.mec.biz.dal.entity.StudentGoodsSell;
-import com.ym.mec.biz.dal.entity.StudentInstrument;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentRepair;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.enums.AccountType;
 import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
@@ -67,22 +51,6 @@ import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.SellTypeEnum;
 import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
-import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.GoodsService;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.SellOrderService;
-import com.ym.mec.biz.service.StudentGoodsSellService;
-import com.ym.mec.biz.service.StudentInstrumentService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
-import com.ym.mec.biz.service.StudentRepairService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysCouponCodeService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysPaymentConfigService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -139,6 +107,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     private StudentGoodsSellService studentGoodsSellService;
     @Autowired
     private SysCouponCodeService sysCouponCodeService;
+    @Autowired
+    private TeacherService teacherService;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -174,6 +144,27 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         return pageInfo;
     }
 
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
+     */
+    @Override
+    public PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param) {
+        SysUser sysUser = getSysUser();
+        param.put("teacherId",sysUser.getId());
+        return teacherService.getStudentsByTeacherOrgan(param);
+    }
+
+    private SysUser getSysUser() {
+        //修改机构基础信息
+        return Optional.ofNullable(sysUserFeignService.queryUserInfo())
+                .orElseThrow(() -> new BizException("用户不存在."));
+    }
+
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public Map addGoodsSellOrder(StudentGoodsSell studentGoodsSell) throws Exception {
@@ -207,52 +198,52 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 }
                 //退优惠券
                 sysCouponCodeService.quit(orderByOrderNo.getCouponCodeId());
-                
+
                 Date nowDate = new Date();
                 //增加商品库存
                 List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(orderByOrderNo.getId());
                 String goodsIds = studentPaymentOrderDetailList.stream().filter(t -> StringUtils.isNotBlank(t.getMinuendStockGoodsIdList())).map(t -> t.getMinuendStockGoodsIdList()).collect(Collectors.joining(","));
-                if(StringUtils.isNotBlank(goodsIds)){
-                	GoodsProcurement goodsProcurement = null;
-                	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
-                	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
-                	Goods goods = null;
-        			Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
-        			Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
-                	
-                	for(String goodsIdStr : goodsIds.split(",")){
-                		if(StringUtils.isBlank(goodsIdStr)){
-							continue;
-						}
-						goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-						if(batchUpdateGoodsMap.get(goods.getId()) != null){
-							goods = batchUpdateGoodsMap.get(goods.getId());
-						}
-						goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
-						goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
-						goods.setUpdateTime(nowDate);
-    					
-						batchUpdateGoodsMap.put(goods.getId(), goods);
-    					
-    					// 进货清单
-    					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
-    					if(goodsProcurement != null){
-							if(goodsProcurementMap.get(goodsProcurement.getId()) != null){
-								goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
-							}
-    						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
-    						goodsProcurement.setUpdateTime(nowDate);
-							goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
-    					}
-						
-                	}
-                	
-                	if(goodsProcurementMap.size() > 0){
-                		goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
-                	}
-                    
-                    if(batchUpdateGoodsMap.size() > 0){
-                    	goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
+                if (StringUtils.isNotBlank(goodsIds)) {
+                    GoodsProcurement goodsProcurement = null;
+                    List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
+                    Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
+                    Goods goods = null;
+                    Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
+                    Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
+
+                    for (String goodsIdStr : goodsIds.split(",")) {
+                        if (StringUtils.isBlank(goodsIdStr)) {
+                            continue;
+                        }
+                        goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+                        if (batchUpdateGoodsMap.get(goods.getId()) != null) {
+                            goods = batchUpdateGoodsMap.get(goods.getId());
+                        }
+                        goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
+                        goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
+                        goods.setUpdateTime(nowDate);
+
+                        batchUpdateGoodsMap.put(goods.getId(), goods);
+
+                        // 进货清单
+                        goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+                        if (goodsProcurement != null) {
+                            if (goodsProcurementMap.get(goodsProcurement.getId()) != null) {
+                                goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
+                            }
+                            goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+                            goodsProcurement.setUpdateTime(nowDate);
+                            goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
+                        }
+
+                    }
+
+                    if (goodsProcurementMap.size() > 0) {
+                        goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
+                    }
+
+                    if (batchUpdateGoodsMap.size() > 0) {
+                        goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
                     }
                 }
             }
@@ -293,9 +284,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             }
         }
         List<Integer> goodsIds = goodsSellDtos.stream().map(GoodsSellDto::getGoodsId).collect(Collectors.toList());
-        Map<Integer, String> integerStringMap = getMap("goods", "id_", "type_", goodsIds,student.getTenantId(), Integer.class, String.class);
-        Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds,student.getTenantId(), Integer.class, BigDecimal.class);
-        Map<Integer, BigDecimal> groupPriceMap = getMap("goods", "id_", "group_purchase_price_", goodsIds,student.getTenantId(), Integer.class, BigDecimal.class);
+        Map<Integer, String> integerStringMap = getMap("goods", "id_", "type_", goodsIds, student.getTenantId(), Integer.class, String.class);
+        Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds, student.getTenantId(), Integer.class, BigDecimal.class);
+        Map<Integer, BigDecimal> groupPriceMap = getMap("goods", "id_", "group_purchase_price_", goodsIds, student.getTenantId(), Integer.class, BigDecimal.class);
         for (GoodsSellDto goodsSellDto : goodsSellDtos) {
             goodsSellDto.setGoodsType(integerStringMap.get(goodsSellDto.getGoodsId()));
             if (StringUtils.isNotEmpty(goodsSellDto.getComplementGoodsIdList())) {
@@ -358,7 +349,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentPaymentOrder.setRoutingOrganId(student.getOrganId());
         studentPaymentOrder.setTenantId(student.getTenantId());
         studentPaymentOrderService.insert(studentPaymentOrder);
-        
+
         Date date = new Date();
         //添加订单详情
         List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<StudentPaymentOrderDetail>();
@@ -366,69 +357,69 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         StudentPaymentOrderDetail studentPaymentOrderDetail = null;
 
         BigDecimal totalPrice = BigDecimal.ZERO;
-        
-        if(goodsSellDtos != null){
-        	//String goodsIdsStr = goodsSellDtos.stream().map(t -> t.getGoodsId().toString()).collect(Collectors.joining(","));
-        	
-        	StringBuffer sb = new StringBuffer();
-        	for(GoodsSellDto goodsSellDto : goodsSellDtos){
-        		for(int i = 0; i < goodsSellDto.getGoodsNum() ; i++){
-        			sb.append(goodsSellDto.getGoodsId()).append(",");
-        		}
-        	}
-        	
-        	String goodsIdsStr = StringUtils.removeEnd(sb.toString(), ",");
-        	
-        	List<Goods> goodsList = goodsService.findGoodsByIds(goodsIdsStr);
-        	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
-        	BigDecimal totalGroupPurchasePrice = BigDecimal.ZERO;
-        	
-        	for(String goodsIdStr : goodsIdsStr.split(",")){
-        		totalGroupPurchasePrice = totalGroupPurchasePrice.add(goodsMap.get(Integer.parseInt(goodsIdStr)).getGroupPurchasePrice());
-        	}
-        	
-        	Goods goods = null;
-        	for(String goodsIdStr : goodsIdsStr.split(",")){
-        		if(StringUtils.isBlank(goodsIdStr)){
-					continue;
-				}
-				goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-				
-				if(goods != null){
-					studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-	                studentPaymentOrderDetail.setCreateTime(date);
-	                if(goods.getType() == GoodsType.INSTRUMENT){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.MUSICAL);
-	                }else if(goods.getType() == GoodsType.ACCESSORIES){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.ACCESSORIES);
-	                }else if(goods.getType() == GoodsType.TEACHING || goods.getType() == GoodsType.STAFF){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.TEACHING);
-	                }else{
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.OTHER);
-	                }
-	                studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
-	                
-	                BigDecimal tempPrice = BigDecimal.ZERO;
-	                if(totalGroupPurchasePrice.compareTo(BigDecimal.ZERO) > 0) {
-	                	tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
-	                }
-	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() + 1){
-	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
-	                }else{
-	                	studentPaymentOrderDetail.setPrice(tempPrice);
-	                }
-	                studentPaymentOrderDetail.setUpdateTime(date);
-	                studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-	                
-	                totalPrice = totalPrice.add(studentPaymentOrderDetail.getPrice());
-	                studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-				}
-        	}
-        }
-        
-        if(studentPaymentOrderDetailList.size() > 0){
-        	studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+
+        if (goodsSellDtos != null) {
+            //String goodsIdsStr = goodsSellDtos.stream().map(t -> t.getGoodsId().toString()).collect(Collectors.joining(","));
+
+            StringBuffer sb = new StringBuffer();
+            for (GoodsSellDto goodsSellDto : goodsSellDtos) {
+                for (int i = 0; i < goodsSellDto.getGoodsNum(); i++) {
+                    sb.append(goodsSellDto.getGoodsId()).append(",");
+                }
+            }
+
+            String goodsIdsStr = StringUtils.removeEnd(sb.toString(), ",");
+
+            List<Goods> goodsList = goodsService.findGoodsByIds(goodsIdsStr);
+            Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
+            BigDecimal totalGroupPurchasePrice = BigDecimal.ZERO;
+
+            for (String goodsIdStr : goodsIdsStr.split(",")) {
+                totalGroupPurchasePrice = totalGroupPurchasePrice.add(goodsMap.get(Integer.parseInt(goodsIdStr)).getGroupPurchasePrice());
+            }
+
+            Goods goods = null;
+            for (String goodsIdStr : goodsIdsStr.split(",")) {
+                if (StringUtils.isBlank(goodsIdStr)) {
+                    continue;
+                }
+                goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+
+                if (goods != null) {
+                    studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+                    studentPaymentOrderDetail.setCreateTime(date);
+                    if (goods.getType() == GoodsType.INSTRUMENT) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.MUSICAL);
+                    } else if (goods.getType() == GoodsType.ACCESSORIES) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.ACCESSORIES);
+                    } else if (goods.getType() == GoodsType.TEACHING || goods.getType() == GoodsType.STAFF) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.TEACHING);
+                    } else {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.OTHER);
+                    }
+                    studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
+
+                    BigDecimal tempPrice = BigDecimal.ZERO;
+                    if (totalGroupPurchasePrice.compareTo(BigDecimal.ZERO) > 0) {
+                        tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
+                    }
+
+                    if (totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() + 1) {
+                        studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
+                    } else {
+                        studentPaymentOrderDetail.setPrice(tempPrice);
+                    }
+                    studentPaymentOrderDetail.setUpdateTime(date);
+                    studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+
+                    totalPrice = totalPrice.add(studentPaymentOrderDetail.getPrice());
+                    studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+                }
+            }
+        }
+
+        if (studentPaymentOrderDetailList.size() > 0) {
+            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
         }
 
         studentPaymentOrder.setVersion(0);
@@ -487,8 +478,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentDao.lockUser(studentId);
         List<GoodsSellDto> goodsSellDtos = JSONObject.parseArray(studentGoodsSell.getGoodsJson(), GoodsSellDto.class);
         List<Integer> goodsIds = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
-        Map<Integer, String> integerStringMap = getMap("goods", "id_", "type_", goodsIds,studentGoodsSell.getTenantId(), Integer.class, String.class);
-        Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds,studentGoodsSell.getTenantId(), Integer.class, BigDecimal.class);
+        Map<Integer, String> integerStringMap = getMap("goods", "id_", "type_", goodsIds, studentGoodsSell.getTenantId(), Integer.class, String.class);
+        Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds, studentGoodsSell.getTenantId(), Integer.class, BigDecimal.class);
         for (GoodsSellDto goodsSellDto : goodsSellDtos) {
             goodsSellDto.setGoodsType(integerStringMap.get(goodsSellDto.getGoodsId()));
             if (StringUtils.isNotEmpty(goodsSellDto.getComplementGoodsIdList())) {
@@ -633,14 +624,14 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         repairInfo.setPayStatus(0);
         repairInfo.setCreateTime(date);
         repairInfo.setUpdateTime(date);
-        
+
         List<RepairGoodsDto> repairGoodsDtos = null;
-        		
+
         String goodsJson = repairInfo.getGoodsJson();
         if (StringUtils.isNotEmpty(goodsJson)) {
             repairGoodsDtos = JSONObject.parseArray(goodsJson, RepairGoodsDto.class);
             List<Integer> goodsIds = repairGoodsDtos.stream().map(e -> e.getId()).collect(Collectors.toList());
-            Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds,student.getTenantId(), Integer.class, BigDecimal.class);
+            Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds, student.getTenantId(), Integer.class, BigDecimal.class);
             repairGoodsDtos.forEach(e -> {
                 e.setGroupPurchasePrice(map.get(e.getId()));
             });
@@ -692,8 +683,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 
         studentPaymentOrderService.insert(studentPaymentOrder);
         studentPaymentOrder.setVersion(0);
-  
-        
+
+
         List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<StudentPaymentOrderDetail>();
         // 添加studentPaymentOrderDetail
         StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
@@ -703,69 +694,69 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().multiply(repairInfo.getAmount()).divide(goodsPrice.add(repairInfo.getAmount()), RoundingMode.UP));
         studentPaymentOrderDetail.setUpdateTime(date);
         studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-        
+
         studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
 
         BigDecimal totalPrice = studentPaymentOrderDetail.getPrice();
         BigDecimal repairPrice = studentPaymentOrderDetail.getPrice();
-        
-        if(StringUtils.isNotBlank(repairInfo.getGoodsJson()) && repairGoodsDtos != null){
-        	String goodsIds = repairGoodsDtos.stream().map(t -> t.getId().toString()).collect(Collectors.joining(","));
-        	List<Goods> goodsList = goodsService.findGoodsByIds(goodsIds);
-        	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
-        	Goods goods = null;
-        	BigDecimal totalGroupPurchasePrice = BigDecimal.ZERO;
-        	for(String goodsIdStr : goodsIds.split(",")){
-        		if(StringUtils.isBlank(goodsIdStr)){
-					continue;
-				}
-				goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-				
-				if(goods != null){
-					totalGroupPurchasePrice = totalGroupPurchasePrice.add(goods.getGroupPurchasePrice());
-				}
-        	}
-        	for(String goodsIdStr : goodsIds.split(",")){
-        		if(StringUtils.isBlank(goodsIdStr)){
-					continue;
-				}
-				goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-				
-				if(goods != null){
-					studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-	                studentPaymentOrderDetail.setCreateTime(date);
-	                if(goods.getType() == GoodsType.INSTRUMENT){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.MUSICAL);
-	                }else if(goods.getType() == GoodsType.ACCESSORIES){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.ACCESSORIES);
-	                }else if(goods.getType() == GoodsType.TEACHING || goods.getType() == GoodsType.STAFF){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.TEACHING);
-	                }else{
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.OTHER);
-	                }
-	                studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
-	                
-	                BigDecimal tempPrice = BigDecimal.ZERO;
-	                if(totalGroupPurchasePrice.compareTo(BigDecimal.ZERO) > 0) {
-	                	tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
-	                }
-	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()){
-	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
-	                }else{
-	                	studentPaymentOrderDetail.setPrice(tempPrice);
-	                }
-	                studentPaymentOrderDetail.setUpdateTime(date);
-	                studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-	                
-	                totalPrice = totalPrice.add(studentPaymentOrderDetail.getPrice());
-	                studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-				}
-        	}
-        }
-        
-        if(studentPaymentOrderDetailList.size() > 0){
-        	studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+
+        if (StringUtils.isNotBlank(repairInfo.getGoodsJson()) && repairGoodsDtos != null) {
+            String goodsIds = repairGoodsDtos.stream().map(t -> t.getId().toString()).collect(Collectors.joining(","));
+            List<Goods> goodsList = goodsService.findGoodsByIds(goodsIds);
+            Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
+            Goods goods = null;
+            BigDecimal totalGroupPurchasePrice = BigDecimal.ZERO;
+            for (String goodsIdStr : goodsIds.split(",")) {
+                if (StringUtils.isBlank(goodsIdStr)) {
+                    continue;
+                }
+                goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+
+                if (goods != null) {
+                    totalGroupPurchasePrice = totalGroupPurchasePrice.add(goods.getGroupPurchasePrice());
+                }
+            }
+            for (String goodsIdStr : goodsIds.split(",")) {
+                if (StringUtils.isBlank(goodsIdStr)) {
+                    continue;
+                }
+                goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+
+                if (goods != null) {
+                    studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+                    studentPaymentOrderDetail.setCreateTime(date);
+                    if (goods.getType() == GoodsType.INSTRUMENT) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.MUSICAL);
+                    } else if (goods.getType() == GoodsType.ACCESSORIES) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.ACCESSORIES);
+                    } else if (goods.getType() == GoodsType.TEACHING || goods.getType() == GoodsType.STAFF) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.TEACHING);
+                    } else {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.OTHER);
+                    }
+                    studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
+
+                    BigDecimal tempPrice = BigDecimal.ZERO;
+                    if (totalGroupPurchasePrice.compareTo(BigDecimal.ZERO) > 0) {
+                        tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
+                    }
+
+                    if (totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()) {
+                        studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
+                    } else {
+                        studentPaymentOrderDetail.setPrice(tempPrice);
+                    }
+                    studentPaymentOrderDetail.setUpdateTime(date);
+                    studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+
+                    totalPrice = totalPrice.add(studentPaymentOrderDetail.getPrice());
+                    studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+                }
+            }
+        }
+
+        if (studentPaymentOrderDetailList.size() > 0) {
+            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
         }
 
         BigDecimal balance = BigDecimal.ZERO;
@@ -887,7 +878,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         ) {
             throw new BizException("邮寄信息必填");
         }
-        
+
         List<RepairGoodsDto> repairGoodsDtos = null;
         Date date = new Date();
         StudentRepair studentRepair = studentRepairDao.get(repairInfo.getId());
@@ -908,7 +899,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 JSONObject goodObject = (JSONObject) good;
                 BigDecimal groupPurchasePrice = goodObject.getBigDecimal("groupPurchasePrice");
                 if (Objects.nonNull(groupPurchasePrice)) {
-                	goodsPrice = goodsPrice.add(groupPurchasePrice);
+                    goodsPrice = goodsPrice.add(groupPurchasePrice);
                 }
             }
         }
@@ -945,7 +936,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 
         studentPaymentOrderService.insert(studentPaymentOrder);
         studentPaymentOrder.setVersion(0);
-        
+
         List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<StudentPaymentOrderDetail>();
         // 添加studentPaymentOrderDetail
         StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
@@ -955,66 +946,66 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().multiply(studentRepair.getAmount()).divide(goodsPrice.add(studentRepair.getAmount()), RoundingMode.UP));
         studentPaymentOrderDetail.setUpdateTime(date);
         studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-        
+
         studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
 
         BigDecimal totalPrice = studentPaymentOrderDetail.getPrice();
         BigDecimal repairPrice = studentPaymentOrderDetail.getPrice();
-        
-        if(StringUtils.isNotBlank(studentRepair.getGoodsJson()) && repairGoodsDtos != null){
-        	String goodsIds = repairGoodsDtos.stream().map(t -> t.getId().toString()).collect(Collectors.joining(","));
-        	List<Goods> goodsList = goodsService.findGoodsByIds(goodsIds);
-        	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
-        	Goods goods = null;
-        	BigDecimal totalGroupPurchasePrice = BigDecimal.ZERO;
-        	for(String goodsIdStr : goodsIds.split(",")){
-        		if(StringUtils.isBlank(goodsIdStr)){
-					continue;
-				}
-				goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-				
-				if(goods != null){
-					totalGroupPurchasePrice = totalGroupPurchasePrice.add(goods.getGroupPurchasePrice());
-				}
-        	}
-        	for(String goodsIdStr : goodsIds.split(",")){
-        		if(StringUtils.isBlank(goodsIdStr)){
-					continue;
-				}
-				goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-				
-				if(goods != null){
-					studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-	                studentPaymentOrderDetail.setCreateTime(date);
-	                if(goods.getType() == GoodsType.INSTRUMENT){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.MUSICAL);
-	                }else if(goods.getType() == GoodsType.ACCESSORIES){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.ACCESSORIES);
-	                }else if(goods.getType() == GoodsType.TEACHING || goods.getType() == GoodsType.STAFF){
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.TEACHING);
-	                }else{
-	                	studentPaymentOrderDetail.setType(OrderDetailTypeEnum.OTHER);
-	                }
-	                studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
-	                
-	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
-	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()){
-	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
-	                }else{
-	                	studentPaymentOrderDetail.setPrice(tempPrice);
-	                }
-	                studentPaymentOrderDetail.setUpdateTime(date);
-	                studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-	                
-	                totalPrice = totalPrice.add(studentPaymentOrderDetail.getPrice());
-	                studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-				}
-        	}
-        }
-        
-        if(studentPaymentOrderDetailList.size() > 0){
-        	studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+
+        if (StringUtils.isNotBlank(studentRepair.getGoodsJson()) && repairGoodsDtos != null) {
+            String goodsIds = repairGoodsDtos.stream().map(t -> t.getId().toString()).collect(Collectors.joining(","));
+            List<Goods> goodsList = goodsService.findGoodsByIds(goodsIds);
+            Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
+            Goods goods = null;
+            BigDecimal totalGroupPurchasePrice = BigDecimal.ZERO;
+            for (String goodsIdStr : goodsIds.split(",")) {
+                if (StringUtils.isBlank(goodsIdStr)) {
+                    continue;
+                }
+                goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+
+                if (goods != null) {
+                    totalGroupPurchasePrice = totalGroupPurchasePrice.add(goods.getGroupPurchasePrice());
+                }
+            }
+            for (String goodsIdStr : goodsIds.split(",")) {
+                if (StringUtils.isBlank(goodsIdStr)) {
+                    continue;
+                }
+                goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+
+                if (goods != null) {
+                    studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+                    studentPaymentOrderDetail.setCreateTime(date);
+                    if (goods.getType() == GoodsType.INSTRUMENT) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.MUSICAL);
+                    } else if (goods.getType() == GoodsType.ACCESSORIES) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.ACCESSORIES);
+                    } else if (goods.getType() == GoodsType.TEACHING || goods.getType() == GoodsType.STAFF) {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.TEACHING);
+                    } else {
+                        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.OTHER);
+                    }
+                    studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
+
+                    BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
+
+                    if (totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()) {
+                        studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
+                    } else {
+                        studentPaymentOrderDetail.setPrice(tempPrice);
+                    }
+                    studentPaymentOrderDetail.setUpdateTime(date);
+                    studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+
+                    totalPrice = totalPrice.add(studentPaymentOrderDetail.getPrice());
+                    studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+                }
+            }
+        }
+
+        if (studentPaymentOrderDetailList.size() > 0) {
+            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
         }
 
         BigDecimal balance = BigDecimal.ZERO;
@@ -1137,55 +1128,55 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             //购买的商品加入销售列表
             saveSellOrder(studentPaymentOrder.getOrderNo());
         } else if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
-            
-        	//增加商品库存
+
+            //增加商品库存
             List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(studentPaymentOrder.getId());
             String goodsIds = studentPaymentOrderDetailList.stream().filter(t -> StringUtils.isNotBlank(t.getMinuendStockGoodsIdList())).map(t -> t.getMinuendStockGoodsIdList()).collect(Collectors.joining(","));
-            if(StringUtils.isNotBlank(goodsIds)){
-            	GoodsProcurement goodsProcurement = null;
-            	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
-            	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
-            	Goods goods = null;
-    			Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
-    			Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
-            	
-            	for(String goodsIdStr : goodsIds.split(",")){
-            		if(StringUtils.isBlank(goodsIdStr)){
-						continue;
-					}
-					goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-					if(batchUpdateGoodsMap.get(goods.getId()) != null){
-						goods = batchUpdateGoodsMap.get(goods.getId());
-					}
-					goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
-					goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
-					goods.setUpdateTime(nowDate);
-					
-					batchUpdateGoodsMap.put(goods.getId(), goods);
-					
-					// 进货清单
-					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
-					if(goodsProcurement != null){
-						if(goodsProcurementMap.get(goodsProcurement.getId()) != null){
-							goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
-						}
-						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
-						goodsProcurement.setUpdateTime(nowDate);
-						goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
-					}
-					
-            	}
-            	
-            	if(goodsProcurementMap.size() > 0){
-            		goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
-            	}
-                
-                if(batchUpdateGoodsMap.size() > 0){
-                	goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
+            if (StringUtils.isNotBlank(goodsIds)) {
+                GoodsProcurement goodsProcurement = null;
+                List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
+                Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
+                Goods goods = null;
+                Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
+                Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
+
+                for (String goodsIdStr : goodsIds.split(",")) {
+                    if (StringUtils.isBlank(goodsIdStr)) {
+                        continue;
+                    }
+                    goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+                    if (batchUpdateGoodsMap.get(goods.getId()) != null) {
+                        goods = batchUpdateGoodsMap.get(goods.getId());
+                    }
+                    goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
+                    goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
+                    goods.setUpdateTime(nowDate);
+
+                    batchUpdateGoodsMap.put(goods.getId(), goods);
+
+                    // 进货清单
+                    goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+                    if (goodsProcurement != null) {
+                        if (goodsProcurementMap.get(goodsProcurement.getId()) != null) {
+                            goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
+                        }
+                        goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+                        goodsProcurement.setUpdateTime(nowDate);
+                        goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
+                    }
+
+                }
+
+                if (goodsProcurementMap.size() > 0) {
+                    goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
+                }
+
+                if (batchUpdateGoodsMap.size() > 0) {
+                    goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
                 }
             }
-        	
-        	if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐器购买支付失败");
             }
             sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
@@ -1564,54 +1555,54 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             if (this.update(repairInfo) <= 0) {
                 throw new BizException("维修单更新失败");
             }
-            
+
             //增加商品库存
             List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(studentPaymentOrder.getId());
             String goodsIds = studentPaymentOrderDetailList.stream().filter(t -> StringUtils.isNotBlank(t.getMinuendStockGoodsIdList())).map(t -> t.getMinuendStockGoodsIdList()).collect(Collectors.joining(","));
-            if(StringUtils.isNotBlank(goodsIds)){
-            	GoodsProcurement goodsProcurement = null;
-            	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
-            	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
-            	Goods goods = null;
-    			Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
-    			Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
-            	
-            	for(String goodsIdStr : goodsIds.split(",")){
-            		if(StringUtils.isBlank(goodsIdStr)){
-						continue;
-					}
-					goods = goodsMap.get(Integer.parseInt(goodsIdStr));
-					if(batchUpdateGoodsMap.get(goods.getId()) != null){
-						goods = batchUpdateGoodsMap.get(goods.getId());
-					}
-					goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
-					goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
-					goods.setUpdateTime(nowDate);
-					
-					batchUpdateGoodsMap.put(goods.getId(), goods);
-					
-					// 进货清单
-					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
-					if(goodsProcurement != null){
-						if(goodsProcurementMap.get(goodsProcurement.getId()) != null){
-							goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
-						}
-						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
-						goodsProcurement.setUpdateTime(nowDate);
-						goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
-					}
-					
-            	}
-            	
-            	if(goodsProcurementMap.size() > 0){
-            		goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
-            	}
-                
-                if(batchUpdateGoodsMap.size() > 0){
-                	goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
+            if (StringUtils.isNotBlank(goodsIds)) {
+                GoodsProcurement goodsProcurement = null;
+                List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
+                Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
+                Goods goods = null;
+                Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
+                Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
+
+                for (String goodsIdStr : goodsIds.split(",")) {
+                    if (StringUtils.isBlank(goodsIdStr)) {
+                        continue;
+                    }
+                    goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+                    if (batchUpdateGoodsMap.get(goods.getId()) != null) {
+                        goods = batchUpdateGoodsMap.get(goods.getId());
+                    }
+                    goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
+                    goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
+                    goods.setUpdateTime(nowDate);
+
+                    batchUpdateGoodsMap.put(goods.getId(), goods);
+
+                    // 进货清单
+                    goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+                    if (goodsProcurement != null) {
+                        if (goodsProcurementMap.get(goodsProcurement.getId()) != null) {
+                            goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
+                        }
+                        goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+                        goodsProcurement.setUpdateTime(nowDate);
+                        goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
+                    }
+
+                }
+
+                if (goodsProcurementMap.size() > 0) {
+                    goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
+                }
+
+                if (batchUpdateGoodsMap.size() > 0) {
+                    goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
                 }
             }
-            
+
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐器维修支付失败");
             }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -54,6 +54,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import static com.ym.mec.biz.dal.enums.MessageTypeEnum.OA_NOTICE_PUSH;
 import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
 
 @Service
@@ -475,6 +476,10 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		} else if (messageSender.getSendMode().equals("EMAIL")) {
 			mode = MessageSendMode.EMAIL;
 		}
+		// oa 待审批只推送 不记录表
+		if (type == OA_NOTICE_PUSH) {
+			return;
+		}
 		addMessage(receiverTenantId, receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
 				url, messageConfig.getGroup(),jpushType);
 	}

+ 53 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -21,6 +21,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.SysMusicScoreMetronomeTranscod;
 import com.ym.mec.biz.dal.dto.SysMusicScoreTranscod;
 import com.ym.mec.biz.dal.entity.SysMusicScoreChangeLog;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.UploadFileService;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -28,7 +29,6 @@ import com.ym.mec.util.file.FileUtil;
 import com.ym.mec.util.shell.ScriptUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.commons.util.IdUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -68,6 +68,8 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
     private IdGeneratorService idGeneratorService;
     @Autowired
     private UploadFileService uploadFileService;
+    @Autowired
+    private OrganizationService organizationService;
 
     @Override
     public BaseDAO<Integer, SysMusicScore> getDAO() {
@@ -185,10 +187,26 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
         }
     }
 
-    @Override
-    public PageInfo<SysMusicScore> queryMusicScorePage(SysExamSongQueryInfo queryInfo) {
-        PageInfo<SysMusicScore> sysMusicScorePageInfo = queryPage(queryInfo);
-        List<SysMusicScore> rows = sysMusicScorePageInfo.getRows();
+    private void dealMusicScoreParam(SysExamSongQueryInfo queryInfo){
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        if(queryInfo.getCategoriesId() != null){
+            List<Integer> categoriesIdList = new ArrayList<>();
+            Integer categoriesId = Integer.parseInt(queryInfo.getCategoriesId());
+
+            SysMusicScoreCategories sysMusicScoreCategories = sysMusicScoreCategoriesService.get(categoriesId);
+
+            if(sysMusicScoreCategories == null){
+                throw new BizException("分类找不到");
+            }
+            categoriesIdList.add(categoriesId);
+            sysMusicScoreCategories = sysMusicScoreCategoriesService.getChildTree(sysMusicScoreCategories);
+            getAllCategoryIdList(categoriesIdList, sysMusicScoreCategories.getSysMusicScoreCategoriesList());
+
+            queryInfo.setCategoriesIdList(categoriesIdList);
+        }
+    }
+
+    private void dealMusicScoreData(List<SysMusicScore> rows){
         if (rows != null && rows.size() > 0) {
             Set<Integer> categoriesIds = rows.stream().map(e -> e.getMusicScoreCategoriesId()).collect(Collectors.toSet());
             //获取分部列表
@@ -198,11 +216,14 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
             subjectIds.removeAll(Collections.singleton(null));
             Map<Long, String> subjectMap = new HashMap();
             if (subjectIds.size() > 0) {
-                subjectMap = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
+                String ids = StringUtils.join(subjectIds, ",");
+                subjectMap = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(ids));
             }
             Map<Integer, String> map = new HashMap<>(categoriesIds.size());
             for (Integer categoriesId : categoriesIds) {
-                map.put(categoriesId, getParentTreeName(categoriesId));
+                if(null != categoriesId){
+                    map.put(categoriesId, getParentTreeName(categoriesId));
+                }
             }
             for (SysMusicScore row : rows) {
                 row.setCategoriesName(map.get(row.getMusicScoreCategoriesId()));
@@ -210,6 +231,30 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
                 row.setSubjectName(subjectMap.get(row.getSubjectId()));
             }
         }
+    }
+
+    @Override
+    public List<SysMusicScore> queryMusicScoreAll(SysExamSongQueryInfo queryInfo) {
+        //封装查询参数
+        dealMusicScoreParam(queryInfo);
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<SysMusicScore> rows = findAll(params);
+        //处理查询结果
+        dealMusicScoreData(rows);
+        return rows;
+    }
+
+    @Override
+    public PageInfo<SysMusicScore> queryMusicScorePage(SysExamSongQueryInfo queryInfo) {
+        //封装查询参数
+        dealMusicScoreParam(queryInfo);
+
+        PageInfo<SysMusicScore> sysMusicScorePageInfo = queryPage(queryInfo);
+        List<SysMusicScore> rows = sysMusicScorePageInfo.getRows();
+        //处理查询结果
+        dealMusicScoreData(rows);
         return sysMusicScorePageInfo;
     }
 
@@ -386,4 +431,5 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
         }
 
     }
+
 }

+ 783 - 763
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -16,8 +16,10 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.common.page.PageUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -74,784 +76,802 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.idcard.IdcardValidator;
 
 @Service
-public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  implements TeacherService {
-
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private SubjectDao subjectDao;
-	@Autowired
-	private ClassGroupDao classGroupDao;
-	@Autowired
-	private ClassGroupService classGroupService;
-	@Autowired
-	private MusicGroupDao musicGroupDao;
-	@Autowired
-	private StudentRegistrationDao studentRegistrationDao;
-	@Autowired
-	private DemoGroupDao demoGroupDao;
-	@Autowired
-	private OrganizationDao organizationDao;
-	@Autowired
-	private SchoolDao schoolDao;
-	@Autowired
-	private SysUserCashAccountDao sysUserCashAccountDao;
-	@Autowired
-	private StudentPaymentOrderDao studentPaymentOrderDao;
-	@Autowired
-	private ImFeignService imFeignService;
-	@Autowired
-	private ImGroupDao imGroupDao ;
-	@Autowired
-	private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
-	@Autowired
-	private StudentDao studentDao;
-	@Autowired
-	private ImUserFriendDao imUserFriendDao;
-	@Autowired
-	private RedisTemplate<String,String> redisTemplate;
-	@Autowired
-	private CloudTeacherDao cloudTeacherDao;
-	@Autowired
-	private TenantInfoService tenantInfoService;
+public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implements TeacherService {
+
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private SubjectDao subjectDao;
+    @Autowired
+    private ClassGroupDao classGroupDao;
+    @Autowired
+    private ClassGroupService classGroupService;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private DemoGroupDao demoGroupDao;
+    @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
+    private SchoolDao schoolDao;
+    @Autowired
+    private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
+    private ImGroupDao imGroupDao;
+    @Autowired
+    private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private ImUserFriendDao imUserFriendDao;
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+    @Autowired
+    private CloudTeacherDao cloudTeacherDao;
+    @Autowired
+    private TenantInfoService tenantInfoService;
 
     @Autowired
     private RealnameAuthenticationPluginContext realnameAuthenticationPluginContext;
 
-	@Override
-	public BaseDAO<Integer, Teacher> getDAO() {
-		return teacherDao;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public int add(Teacher teacher) throws Exception {
-		SysUser user = teacherDao.getUserWithPhone(teacher.getPhone());
-		if(user != null && user.getId() != null){
-			EmployeeServiceImpl.checkTenantId(teacher.getTenantId(),user.getTenantId());
-			if(user.getUserType().contains("TEACHER")){
-				throw new BizException("此手机号已被占用");
-			}
-			Integer id = user.getId();
-			Teacher teacher1 = teacherDao.get(id);
-			if(teacher1 == null || teacher1.getId() == null){
-				teacher.setId(id);
-				teacher.setDelFlag(YesOrNoEnum.NO);
-				teacherDao.insert(teacher);
-				teacher.setOrganId(null);
-				teacher.setUserType(user.getUserType() + ",TEACHER");
-				teacherDao.updateUser(teacher);
-			}else {
-				throw new BizException("用户已存在");
-			}
-			return id;
-		}
-		if(Objects.nonNull(teacher.getEntryDate())&&Objects.nonNull(teacher.getFormalStaffDate())){
-			if(teacher.getEntryDate().compareTo(teacher.getFormalStaffDate())>0){
-				throw new BizException("入职日期不可晚于转正日期");
-			}
-		}
-		teacher.setUserType("TEACHER");
-		teacher.setUsername(teacher.getRealName());
-		teacherDao.addSysUser(teacher);
-		//添加用户现金账户
-		sysUserCashAccountDao.insert(new SysUserCashAccount(teacher.getId(),"CNY"));
-		//添加用户电子签章账户
+    @Override
+    public BaseDAO<Integer, Teacher> getDAO() {
+        return teacherDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(Teacher teacher) throws Exception {
+        SysUser user = teacherDao.getUserWithPhone(teacher.getPhone());
+        if (user != null && user.getId() != null) {
+            EmployeeServiceImpl.checkTenantId(teacher.getTenantId(), user.getTenantId());
+            if (user.getUserType().contains("TEACHER")) {
+                throw new BizException("此手机号已被占用");
+            }
+            Integer id = user.getId();
+            Teacher teacher1 = teacherDao.get(id);
+            if (teacher1 == null || teacher1.getId() == null) {
+                teacher.setId(id);
+                teacher.setDelFlag(YesOrNoEnum.NO);
+                teacherDao.insert(teacher);
+                teacher.setOrganId(null);
+                teacher.setUserType(user.getUserType() + ",TEACHER");
+                teacherDao.updateUser(teacher);
+            } else {
+                throw new BizException("用户已存在");
+            }
+            return id;
+        }
+        if (Objects.nonNull(teacher.getEntryDate()) && Objects.nonNull(teacher.getFormalStaffDate())) {
+            if (teacher.getEntryDate().compareTo(teacher.getFormalStaffDate()) > 0) {
+                throw new BizException("入职日期不可晚于转正日期");
+            }
+        }
+        teacher.setUserType("TEACHER");
+        teacher.setUsername(teacher.getRealName());
+        teacherDao.addSysUser(teacher);
+        //添加用户现金账户
+        sysUserCashAccountDao.insert(new SysUserCashAccount(teacher.getId(), "CNY"));
+        //添加用户电子签章账户
 //		contractService.register(teacher.getId(), user.getRealName(), user.getIdCardNo(), user.getPhone());
-		teacherDao.insert(teacher);
-		ImResult imResult = imFeignService.register(new ImUserModel(teacher.getId().toString(), teacher.getUsername(), null));
-		if(imResult != null){
-			teacher.setImToken(imResult.getToken());
-			teacherDao.updateUser(teacher);
-		}
-		return teacher.getId();
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateTea1(Teacher teacher) {
-		Teacher teacher1 = teacherDao.get(teacher.getId());
-		if(null==teacher1){
-			throw new BizException("教师信息不存在");
-		}
-
-		if(StringUtils.isNotEmpty(teacher.getPhone())){
-			SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
-			if(sysUser != null && !sysUser.getId().equals(teacher.getId())){
-				throw new BizException("手机号已存在");
-			}
-		}
-
-		// 同步更新机构手机号 如果它存在
-		SysUser user = teacherDao.getUser(teacher.getId()); // 138 -> 159
-		if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
-			tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
-		}
-
-		if(Objects.nonNull(teacher.getEntryDate())&&Objects.nonNull(teacher.getFormalStaffDate())){
-			if(teacher.getEntryDate().compareTo(teacher.getFormalStaffDate())>0){
-				throw new BizException("入职日期不可晚于转正日期");
-			}
-		}
-		teacher.setUpdateTime(new Date());
-		teacher.setTeacherOrganId(teacher.getOrganId());
-		teacherDao.update(teacher);
-		teacher.setOrganId(null);
-		teacherDao.updateUser(teacher);
-		imGroupDao.updateNickname(teacher.getId(),teacher.getRealName());
-		imGroupDao.updateUserFriendNickname(teacher.getId(),teacher.getRealName());
-		imFeignService.update(new ImUserModel(teacher.getId().toString(),teacher.getRealName(),teacher.getAvatar()));
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateTea(Teacher teacher) {
-		Teacher teacher1 = teacherDao.get(teacher.getId());
-		if(null==teacher1){
-			throw new BizException("教师信息不存在");
-		}
-		if(StringUtils.isNotEmpty(teacher.getPhone())){
-			SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
-			if(sysUser != null && !sysUser.getId().equals(teacher.getId())){
-				throw new BizException("手机号已存在");
-			}
-		}
-		// 同步更新机构手机号 如果它存在
-		SysUser user = teacherDao.getUser(teacher.getId());
-		if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
-			tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
-		}
-
-		if(Objects.nonNull(teacher.getEntryDate())&&Objects.nonNull(teacher.getFormalStaffDate())){
-			if(teacher.getEntryDate().compareTo(teacher.getFormalStaffDate())>0){
-				throw new BizException("入职日期不可晚于转正日期");
-			}
-		}
-		teacher.setUpdateTime(new Date());
-		teacher.setTeacherOrganId(teacher.getOrganId());
-		teacherDao.eduUpdateTeacher(teacher);
-		teacher.setOrganId(null);
-		teacherDao.updateUser(teacher);
-		imGroupDao.updateNickname(teacher.getId(),teacher.getRealName());
-		imGroupDao.updateUserFriendNickname(teacher.getId(),teacher.getRealName());
-		imFeignService.update(new ImUserModel(teacher.getId().toString(),teacher.getRealName(),teacher.getAvatar()));
-	}
-
-	@Override
-	public void deleteTeacher(Long userId) {
-		SysUser sysUser=new SysUser();
-		sysUser.setId(userId.intValue());
-		sysUser.setDelFlag(YesOrNoEnum.YES);
-		teacherDao.updateUser(sysUser);
-	}
-
-	@Override
-	public List<ImGroupModel> queryTeacherGroups(Integer userId,String search) {
-		//获取教师所在班级列表
-		List<ImGroupModel> imGroupModels =  classGroupDao.queryTeacherGroups(userId,search);
-		if(imGroupModels != null && imGroupModels.size() > 0){
-			imGroupModels.forEach(e -> {
-				e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId()),null).size());
-			});
-		}
-		return imGroupModels;
-	}
-
-	@Override
-	public List<BasicUserDto> queryGroupStudentList(Integer teacherId, String search) {
-		//获取关联的学员列表
-		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
-		List<BasicUserDto> teachers = new ArrayList<>();
-		if(studentIds.size() > 0){
-			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
-		}
-		return teachers.stream().distinct().collect(Collectors.toList());
-	}
-
-	@Override
-	public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
-		//获取关联的学员列表
-		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
-		//获取关联的老师列表
-		studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
-		//获取关联的乐团的管理老师
-		List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
-		musicLeaderIds.removeAll(Collections.singleton(null));
-		if(musicLeaderIds.size() > 0){
-			Set<String> leaderIds = new HashSet<>();
-			musicLeaderIds.forEach(e->{
-				leaderIds.addAll(Arrays.asList(e.split(",")));
-			});
-			leaderIds.forEach(e->{
-				studentIds.add(Integer.valueOf(e));
-			});
-		}
-		studentIds.removeAll(Collections.singleton(null));
-		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
-		List<BasicUserDto> teachers = new ArrayList<>();
-		if(musicGroups != null && musicGroups.size() > 0){
-			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
-			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
-			Set<Integer> teacherIdSet = new HashSet<>();
-			if(musicGroupList != null && musicGroupList.size() > 0){
-				musicGroupList.forEach(e->{
-					teacherIdSet.add(e.getTeamTeacherId());
-					teacherIdSet.add(e.getEducationalTeacherId());
-					teacherIdSet.add(e.getDirectorUserId());
-				});
-			}
-			teacherIdSet.remove(teacherId);
-			teacherIdSet.removeAll(Collections.singleton(null));
-			if(teacherIdSet.size() > 0){
-				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search);
-			}
-		}
-		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
-		if(userDtos != null && userDtos.size() > 0){
-			teachers.addAll(userDtos);
-			Set<String> musicGroupIds = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
-			if(musicGroupIds != null && musicGroupIds.size() > 0){
-				Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
-				userDtos.forEach(e->{
-					e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
-				});
-			}
-		}
-		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		studentIds.remove(teacherId);
-		if(studentIds.size() > 0){
-			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
-		}
-		return teachers.stream().distinct().collect(Collectors.toList());
-	}
-
-	@Transactional(rollbackFor = Exception.class)
-	public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
-		Set<BasicUserDto> basicUserDtos = new HashSet<>();
-		//学员关联的通讯录
-		//获取相关课程,班级老师列表
-		Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(teacherId);
-		//获取学员所在乐团列表
-		List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(teacherId);
-		if (musicGroupIds != null && musicGroupIds.size() > 0) {
-			List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
-			musicGroups.forEach(e -> {
-				teacherIds.add(e.getDirectorUserId());
-				teacherIds.add(e.getEducationalTeacherId());
-				teacherIds.add(e.getTeamTeacherId());
-			});
-		}
-		//获取相关vip课老师列表
-		teacherIds.addAll(teacherDao.findVipTeacherIds(teacherId));
-		//获取陪练课老师列表
-		teacherIds.addAll(teacherDao.findPracticeTeacherIds(teacherId));
-		//获取对外课程老师列表
-		teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(teacherId));
-		//获取陪练课课程教务老师
-		teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(teacherId));
-		//获取VIP课程教务老师
-		teacherIds.addAll(teacherDao.findVipEducationalTeacherId(teacherId));
-		//获取对外课程务老师
-		teacherIds.addAll(teacherDao.findCommEducationalTeacherId(teacherId));
-		//获取关联的指导老师
-		Student student = studentDao.get(teacherId);
-		if (student != null && student.getTeacherId() != null) {
-			teacherIds.add(student.getTeacherId());
-		}
-		if (teacherIds.size() > 0) {
-			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(teacherIds, search));
-		}
-
-		//获取关联的学员列表
-		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
-		//获取关联的老师列表
-		studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
-		//获取关联的乐团的管理老师
-		List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
-		musicLeaderIds.removeAll(Collections.singleton(null));
-		if(musicLeaderIds.size() > 0){
-			Set<String> leaderIds = new HashSet<>();
-			musicLeaderIds.forEach(e->{
-				leaderIds.addAll(Arrays.asList(e.split(",")));
-			});
-			leaderIds.forEach(e->{
-				studentIds.add(Integer.valueOf(e));
-			});
-		}
-		studentIds.removeAll(Collections.singleton(null));
-		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
-
-		if(musicGroups != null && musicGroups.size() > 0){
-			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
-			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
-			Set<Integer> teacherIdSet = new HashSet<>();
-			if(musicGroupList != null && musicGroupList.size() > 0){
-				musicGroupList.forEach(e->{
-					teacherIdSet.add(e.getTeamTeacherId());
-					teacherIdSet.add(e.getEducationalTeacherId());
-					teacherIdSet.add(e.getDirectorUserId());
-				});
-			}
-			teacherIdSet.remove(teacherId);
-			teacherIdSet.removeAll(Collections.singleton(null));
-			if(teacherIdSet.size() > 0){
-				basicUserDtos.addAll(teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search));
-			}
-		}
-
-		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
-		if(userDtos != null && userDtos.size() > 0){
-			basicUserDtos.addAll(userDtos);
-			Set<String> musicGroupIds1 = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
-			if(musicGroupIds1 != null && musicGroupIds1.size() > 0){
-				Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds1));
-				userDtos.forEach(e->{
-					e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
-				});
-			}
-		}
-		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		studentIds.remove(teacherId);
-		if(studentIds.size() > 0){
-			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
-		}
-
-		String syncImUserFriendKey = "syncImUserFriend:" + teacherId;
-		if(basicUserDtos.size() > 0){
-			for (BasicUserDto basicUserDto : basicUserDtos) {
-				if(basicUserDto.getUserId().equals(teacherId)){
-					continue;
-				}
-				// 检查是否已经是好友
-				ImUserFriend userFriend = imUserFriendDao.query(teacherId, basicUserDto.getUserId());
-				if (userFriend != null) {
-					continue;
-				}
-				imUserFriendDao.insertByBasicUser(basicUserDto,teacherId);
-			}
-			redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
-			return imUserFriendDao.queryFriendListByUserId(teacherId, search);
-		}
-		redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
-		return new ArrayList<>();
-	}
+        teacherDao.insert(teacher);
+        ImResult imResult = imFeignService.register(new ImUserModel(teacher.getId().toString(), teacher.getUsername(), null));
+        if (imResult != null) {
+            teacher.setImToken(imResult.getToken());
+            teacherDao.updateUser(teacher);
+        }
+        return teacher.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTea1(Teacher teacher) {
+        Teacher teacher1 = teacherDao.get(teacher.getId());
+        if (null == teacher1) {
+            throw new BizException("教师信息不存在");
+        }
+
+        if (StringUtils.isNotEmpty(teacher.getPhone())) {
+            SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
+            if (sysUser != null && !sysUser.getId().equals(teacher.getId())) {
+                throw new BizException("手机号已存在");
+            }
+        }
+
+        // 同步更新机构手机号 如果它存在
+        SysUser user = teacherDao.getUser(teacher.getId()); // 138 -> 159
+        if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
+            tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
+        }
+
+        if (Objects.nonNull(teacher.getEntryDate()) && Objects.nonNull(teacher.getFormalStaffDate())) {
+            if (teacher.getEntryDate().compareTo(teacher.getFormalStaffDate()) > 0) {
+                throw new BizException("入职日期不可晚于转正日期");
+            }
+        }
+        teacher.setUpdateTime(new Date());
+        teacher.setTeacherOrganId(teacher.getOrganId());
+        teacherDao.update(teacher);
+        teacher.setOrganId(null);
+        teacherDao.updateUser(teacher);
+        imGroupDao.updateNickname(teacher.getId(), teacher.getRealName());
+        imGroupDao.updateUserFriendNickname(teacher.getId(), teacher.getRealName());
+        imFeignService.update(new ImUserModel(teacher.getId().toString(), teacher.getRealName(), teacher.getAvatar()));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTea(Teacher teacher) {
+        Teacher teacher1 = teacherDao.get(teacher.getId());
+        if (null == teacher1) {
+            throw new BizException("教师信息不存在");
+        }
+        if (StringUtils.isNotEmpty(teacher.getPhone())) {
+            SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
+            if (sysUser != null && !sysUser.getId().equals(teacher.getId())) {
+                throw new BizException("手机号已存在");
+            }
+        }
+        // 同步更新机构手机号 如果它存在
+        SysUser user = teacherDao.getUser(teacher.getId());
+        if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
+            tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
+        }
+
+        if (Objects.nonNull(teacher.getEntryDate()) && Objects.nonNull(teacher.getFormalStaffDate())) {
+            if (teacher.getEntryDate().compareTo(teacher.getFormalStaffDate()) > 0) {
+                throw new BizException("入职日期不可晚于转正日期");
+            }
+        }
+        teacher.setUpdateTime(new Date());
+        teacher.setTeacherOrganId(teacher.getOrganId());
+        teacherDao.eduUpdateTeacher(teacher);
+        teacher.setOrganId(null);
+        teacherDao.updateUser(teacher);
+        imGroupDao.updateNickname(teacher.getId(), teacher.getRealName());
+        imGroupDao.updateUserFriendNickname(teacher.getId(), teacher.getRealName());
+        imFeignService.update(new ImUserModel(teacher.getId().toString(), teacher.getRealName(), teacher.getAvatar()));
+    }
+
+    @Override
+    public void deleteTeacher(Long userId) {
+        SysUser sysUser = new SysUser();
+        sysUser.setId(userId.intValue());
+        sysUser.setDelFlag(YesOrNoEnum.YES);
+        teacherDao.updateUser(sysUser);
+    }
+
+    @Override
+    public List<ImGroupModel> queryTeacherGroups(Integer userId, String search) {
+        //获取教师所在班级列表
+        List<ImGroupModel> imGroupModels = classGroupDao.queryTeacherGroups(userId, search);
+        if (imGroupModels != null && imGroupModels.size() > 0) {
+            imGroupModels.forEach(e -> {
+                e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId()), null).size());
+            });
+        }
+        return imGroupModels;
+    }
+
+    @Override
+    public List<BasicUserDto> queryGroupStudentList(Integer teacherId, String search) {
+        //获取关联的学员列表
+        Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+        List<BasicUserDto> teachers = new ArrayList<>();
+        if (studentIds.size() > 0) {
+            teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds, search));
+        }
+        return teachers.stream().distinct().collect(Collectors.toList());
+    }
+
+    @Override
+    public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
+        //获取关联的学员列表
+        Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+        //获取关联的老师列表
+        studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
+        //获取关联的乐团的管理老师
+        List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
+        musicLeaderIds.removeAll(Collections.singleton(null));
+        if (musicLeaderIds.size() > 0) {
+            Set<String> leaderIds = new HashSet<>();
+            musicLeaderIds.forEach(e -> {
+                leaderIds.addAll(Arrays.asList(e.split(",")));
+            });
+            leaderIds.forEach(e -> {
+                studentIds.add(Integer.valueOf(e));
+            });
+        }
+        studentIds.removeAll(Collections.singleton(null));
+        List<ImGroupModel> musicGroups = musicGroupDao.queryTeacherGroups(teacherId, search);
+        List<BasicUserDto> teachers = new ArrayList<>();
+        if (musicGroups != null && musicGroups.size() > 0) {
+            Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
+            List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
+            Set<Integer> teacherIdSet = new HashSet<>();
+            if (musicGroupList != null && musicGroupList.size() > 0) {
+                musicGroupList.forEach(e -> {
+                    teacherIdSet.add(e.getTeamTeacherId());
+                    teacherIdSet.add(e.getEducationalTeacherId());
+                    teacherIdSet.add(e.getDirectorUserId());
+                });
+            }
+            teacherIdSet.remove(teacherId);
+            teacherIdSet.removeAll(Collections.singleton(null));
+            if (teacherIdSet.size() > 0) {
+                teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet, ","), search);
+            }
+        }
+        List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
+        if (userDtos != null && userDtos.size() > 0) {
+            teachers.addAll(userDtos);
+            Set<String> musicGroupIds = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+            if (musicGroupIds != null && musicGroupIds.size() > 0) {
+                Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
+                userDtos.forEach(e -> {
+                    e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
+                });
+            }
+        }
+        studentIds.removeAll(userDtos.stream().map(e -> e.getUserId()).collect(Collectors.toSet()));
+        studentIds.remove(teacherId);
+        if (studentIds.size() > 0) {
+            teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds, search));
+        }
+        return teachers.stream().distinct().collect(Collectors.toList());
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
+        Set<BasicUserDto> basicUserDtos = new HashSet<>();
+        //学员关联的通讯录
+        //获取相关课程,班级老师列表
+        Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(teacherId);
+        //获取学员所在乐团列表
+        List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(teacherId);
+        if (musicGroupIds != null && musicGroupIds.size() > 0) {
+            List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
+            musicGroups.forEach(e -> {
+                teacherIds.add(e.getDirectorUserId());
+                teacherIds.add(e.getEducationalTeacherId());
+                teacherIds.add(e.getTeamTeacherId());
+            });
+        }
+        //获取相关vip课老师列表
+        teacherIds.addAll(teacherDao.findVipTeacherIds(teacherId));
+        //获取陪练课老师列表
+        teacherIds.addAll(teacherDao.findPracticeTeacherIds(teacherId));
+        //获取对外课程老师列表
+        teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(teacherId));
+        //获取陪练课课程教务老师
+        teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(teacherId));
+        //获取VIP课程教务老师
+        teacherIds.addAll(teacherDao.findVipEducationalTeacherId(teacherId));
+        //获取对外课程务老师
+        teacherIds.addAll(teacherDao.findCommEducationalTeacherId(teacherId));
+        //获取关联的指导老师
+        Student student = studentDao.get(teacherId);
+        if (student != null && student.getTeacherId() != null) {
+            teacherIds.add(student.getTeacherId());
+        }
+        if (teacherIds.size() > 0) {
+            basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(teacherIds, search));
+        }
+
+        //获取关联的学员列表
+        Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+        //获取关联的老师列表
+        studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
+        //获取关联的乐团的管理老师
+        List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
+        musicLeaderIds.removeAll(Collections.singleton(null));
+        if (musicLeaderIds.size() > 0) {
+            Set<String> leaderIds = new HashSet<>();
+            musicLeaderIds.forEach(e -> {
+                leaderIds.addAll(Arrays.asList(e.split(",")));
+            });
+            leaderIds.forEach(e -> {
+                studentIds.add(Integer.valueOf(e));
+            });
+        }
+        studentIds.removeAll(Collections.singleton(null));
+        List<ImGroupModel> musicGroups = musicGroupDao.queryTeacherGroups(teacherId, search);
+
+        if (musicGroups != null && musicGroups.size() > 0) {
+            Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
+            List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
+            Set<Integer> teacherIdSet = new HashSet<>();
+            if (musicGroupList != null && musicGroupList.size() > 0) {
+                musicGroupList.forEach(e -> {
+                    teacherIdSet.add(e.getTeamTeacherId());
+                    teacherIdSet.add(e.getEducationalTeacherId());
+                    teacherIdSet.add(e.getDirectorUserId());
+                });
+            }
+            teacherIdSet.remove(teacherId);
+            teacherIdSet.removeAll(Collections.singleton(null));
+            if (teacherIdSet.size() > 0) {
+                basicUserDtos.addAll(teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet, ","), search));
+            }
+        }
+
+        List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
+        if (userDtos != null && userDtos.size() > 0) {
+            basicUserDtos.addAll(userDtos);
+            Set<String> musicGroupIds1 = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+            if (musicGroupIds1 != null && musicGroupIds1.size() > 0) {
+                Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds1));
+                userDtos.forEach(e -> {
+                    e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
+                });
+            }
+        }
+        studentIds.removeAll(userDtos.stream().map(e -> e.getUserId()).collect(Collectors.toSet()));
+        studentIds.remove(teacherId);
+        if (studentIds.size() > 0) {
+            basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds, search));
+        }
+
+        String syncImUserFriendKey = "syncImUserFriend:" + teacherId;
+        if (basicUserDtos.size() > 0) {
+            for (BasicUserDto basicUserDto : basicUserDtos) {
+                if (basicUserDto.getUserId().equals(teacherId)) {
+                    continue;
+                }
+                // 检查是否已经是好友
+                ImUserFriend userFriend = imUserFriendDao.query(teacherId, basicUserDto.getUserId());
+                if (userFriend != null) {
+                    continue;
+                }
+                imUserFriendDao.insertByBasicUser(basicUserDto, teacherId);
+            }
+            redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey, teacherId.toString());
+            return imUserFriendDao.queryFriendListByUserId(teacherId, search);
+        }
+        redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey, teacherId.toString());
+        return new ArrayList<>();
+    }
 
     @Override
     public List<TeacherBasicDto> findTeachers(String organId) {
-		return teacherDao.findByFlowOrganRangeTeachers(organId);
+        return teacherDao.findByFlowOrganRangeTeachers(organId);
     }
 
-	@Override
-	public List<Teacher> findOrganTeacherBySubject(Integer subjectId) {
-		return teacherDao.findOrganTeacherBySubject(subjectId);
-	}
-
-	@Override
-	public PageInfo<TeacherCloseDto> queryCloses(TeacherCloseQueryInfo queryInfo) {
-		PageInfo<TeacherCloseDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<TeacherCloseDto> dataList = null;
-		int count = teacherDao.countCloses(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryCloses(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public BigDecimal findTeacherNoPay(Integer teacherId) {
-		return teacherDao.findTeacherNoPay(teacherId);
-	}
-
-	@Override
-	public PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(MusicGroupTeachersQueryInfo queryInfo) {
-		PageInfo<MusicGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<MusicGroupTeachersDto> dataList = null;
-		int count = teacherDao.countMusicGroupTeachers(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryMusicGroupTeachers(params);
-			//获取教师id列表
-			Set<Integer> teacherIds = dataList.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet());
-			//根据教师编号和班级编号,获取老师签到次数
-			Map<Integer,Integer> signNumMap =  JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(teacherDao.findSignNum(StringUtils.join(teacherIds,","),queryInfo.getMusicGroupId()))),HashMap.class);
-			dataList.forEach(e->{
-				e.setNum(signNumMap.get(e.getTeacherId()));
-			});
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public PageInfo<MusicGroupTeacherAttendanceDto> queryTeacherAttendance(MusicGroupTeacherAttendanceQueryInfo queryInfo) {
-		PageInfo<MusicGroupTeacherAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<MusicGroupTeacherAttendanceDto> dataList = null;
-		int count = teacherDao.countTeacherAttendance(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryTeacherAttendance(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public PageInfo<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
-		PageInfo<MusicGroupStudentApplyDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<MusicGroupStudentApplyDto> dataList = null;
-		int count = teacherDao.countMusicGroupStudentApply(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryMusicGroupStudentApply(params);
-			String paymentStatus = queryInfo.getPaymentStatus();
-			if(StringUtils.isNotEmpty(paymentStatus) && paymentStatus.equals("2")){
-				List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder(queryInfo.getMusicGroupId());
-				Map<Integer, List<StudentPaymentOrder>> collect = studentPaymentOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getUserId));
-				dataList.forEach(e->{
-					List<StudentPaymentOrder> paymentOrders = collect.get(e.getUserId());
-					
-					if(paymentOrders != null && paymentOrders.size() > 0){
-						e.setPaymentAmount(paymentOrders.stream().map(t -> t.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add));
-						e.setPayTime(paymentOrders.get(0).getPayTime());
-					}
-				});
-			}
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public List<Teacher> findTeacherByOrganId(String organId,String subjectIds,String jobNature) {
-		return teacherDao.findTeacherByOrganId(organId,subjectIds,jobNature);
-	}
-
-	@Override
-	public PageInfo<Teacher> queryPageName(TeacherNameQueryInfo queryInfo) {
-		PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<Teacher> dataList = null;
-		int count = teacherDao.countTeacherName(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryPageName(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public CourseHomework getCourseScheduleHomework(Integer courseScheduleId) {
-		return teacherDao.getCourseScheduleHomework(courseScheduleId);
-	}
-
-	@Override
-	public List<BasicUserDto> queryEducationIpa(Integer userId, String search) {
-		return queryGroupStudents(userId, search);
-	}
-
-	@Override
-	public List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId) {
-		if(Objects.isNull(musicGroupId)){
-			throw new BizException("请指定乐团");
-		}
-		return teacherDao.findTeacherByMusicGroup(musicGroupId);
-	}
-
-	@Override
-	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-		PageInfo<Teacher> pageInfo = queryPage(queryInfo);
-		List<Teacher> rows = pageInfo.getRows();
-		if(rows != null && rows.size() > 0){
-			Set<Integer> teachers = rows.stream().map(e -> e.getId()).collect(Collectors.toSet());
-			String teacherIds = StringUtils.join(teachers, ",");
-			//获取小课数量
-			Map<Integer,Integer> vipNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherVipNum(teacherIds))),HashMap.class);
-			//获取试听课数量
-			Map<Integer,Integer> demoNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(demoGroupDao.countTeacherDemoGroupNum(teacherIds))),HashMap.class);
-
-			Set<Integer> organIds = rows.stream().map(e -> e.getTeacherOrganId()).collect(Collectors.toSet());
-			Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
-
-
-			for (Teacher e : rows) {
-				e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
-				e.setOrganName(organNames.get(e.getTeacherOrganId()));
-				if(StringUtils.isNotEmpty(e.getSplitSubjectName())){
-					e.setSubjectName(Arrays.asList(e.getSplitSubjectName().split(",")));
-				}
-				Integer num = vipNumMap.get(e.getId());
-				e.setVipNum(num == null?0:num);
-				Integer demoNum = demoNumMap.get(e.getId());
-				e.setDemoNum(demoNum == null?0:demoNum);
-			}
-		}
-		return pageInfo;
-	}
-
-	@Override
-	public Teacher getDetail(Integer id) {
-		Teacher teacher = teacherDao.get(id);
-		if(teacher != null){
-			LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
-			LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-			List<TeacherExercisesServiceDto> teacherExercisesServiceSituations = studentExtracurricularExercisesSituationDao.findTeacherExercisesServiceSituations(monDayDate.toString(), Arrays.asList(id));
-			Map<Integer, TeacherExercisesServiceDto> teacherServiceMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teacherExercisesServiceSituations)){
-				teacherServiceMap = teacherExercisesServiceSituations.stream().collect(Collectors.toMap(TeacherExercisesServiceDto::getTeacherId, t -> t));
-			}
-
-			Map<Integer,String> operatingStudentsNum = MapUtil.convertMybatisMap(studentDao.getTeacherOperatingStudentsNum(id.toString()));
-			Map<Integer,String> practiceStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.PRACTICE));
-			Map<Integer,String> vipStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.VIP));
-			Map<Integer,String> practiceAndVipStudentsNum = MapUtil.convertMybatisMap(studentDao.getPracticeAndVipNums(id.toString()));
-
-			//获取老师教学点列表
-			List<School> teacherSchools = schoolDao.findByUserId(id);
-			teacher.setTeacherSchools(teacherSchools);
-			//获取流动范围
-			if(StringUtils.isNotEmpty(teacher.getFlowOrganRange())){
-				teacher.setFlowOrganRangeId(teacher.getFlowOrganRange());
-				List<String> organNames = organizationDao.findByOrganIds(teacher.getFlowOrganRange());
-				teacher.setFlowOrganRange(StringUtils.join(organNames,","));
-			}
-			if(teacher.getTeacherOrganId() != null){
-				Organization organization = organizationDao.get(teacher.getTeacherOrganId());
-				teacher.setOrganName(Objects.nonNull(organization)?organization.getName():null);
-			}
-			//专业技能
-			if(StringUtils.isNotEmpty(teacher.getSubjectId())){
-				teacher.setSubjectName(subjectDao.findBySubIds(teacher.getSubjectId()));
-			}
-
-			//服务指标
-			TeacherExercisesServiceDto teacherService = teacherServiceMap.get(id);
-			if(Objects.nonNull(teacherService)){
-				BigDecimal serviceIndex = new BigDecimal(teacherService.getActualExercisesNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(teacherService.getExpectExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-				teacher.setServiceIndex(serviceIndex);
-			}else{
-				teacher.setServiceIndex(BigDecimal.ZERO);
-			}
-			//运营指标
-			String studentNum = operatingStudentsNum.get(id);
-			if(studentNum != null){
-				String practiceNum = practiceStudentsNum.get(id) ==null ? "0" : practiceStudentsNum.get(id);
-				String vipNum = vipStudentsNum.get(id) ==null ? "0" : vipStudentsNum.get(id);
-				String practiceAndVipNum = practiceAndVipStudentsNum.get(id) ==null ? "0" : practiceAndVipStudentsNum.get(id);
-				int allNum = Integer.parseInt(practiceNum) + Integer.parseInt(vipNum) - Integer.parseInt(practiceAndVipNum);
-				BigDecimal operatingIndex = new BigDecimal(allNum).multiply(new BigDecimal(100)).divide(new BigDecimal(studentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-				teacher.setOperatingIndex(operatingIndex);
-			}else {
-				teacher.setOperatingIndex(BigDecimal.ZERO);
-			}
-		}
-		return teacher;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg) {
-
-		SysUser user = teacherDao.getUser(userId);
-		if (user == null) {
-			throw new BizException("用户不存在");
-		}
-
-		Teacher teacher = teacherDao.get(userId);
-		if (teacher == null) {
-			throw new BizException("用户信息不存在");
-		}
-		// 查询是否已实名认证
-		if (StringUtils.isNotBlank(teacher.getIdcardBackImg()) && StringUtils.isNotBlank(teacher.getIdcardFrontImg())
-				&& StringUtils.isNotBlank(teacher.getIdcardHandImg())) {
-			throw new BizException("已实名认证,不能重复操作");
-		}
-
-		IdcardValidator validator = new IdcardValidator();
-		if (validator.isValidatedAllIdcard(idcardNo) == false) {
-			throw new BizException("身份证校验失败");
-		}
+    @Override
+    public List<Teacher> findOrganTeacherBySubject(Integer subjectId) {
+        return teacherDao.findOrganTeacherBySubject(subjectId);
+    }
+
+    @Override
+    public PageInfo<TeacherCloseDto> queryCloses(TeacherCloseQueryInfo queryInfo) {
+        PageInfo<TeacherCloseDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherCloseDto> dataList = null;
+        int count = teacherDao.countCloses(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryCloses(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public BigDecimal findTeacherNoPay(Integer teacherId) {
+        return teacherDao.findTeacherNoPay(teacherId);
+    }
+
+    @Override
+    public PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(MusicGroupTeachersQueryInfo queryInfo) {
+        PageInfo<MusicGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MusicGroupTeachersDto> dataList = null;
+        int count = teacherDao.countMusicGroupTeachers(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryMusicGroupTeachers(params);
+            //获取教师id列表
+            Set<Integer> teacherIds = dataList.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet());
+            //根据教师编号和班级编号,获取老师签到次数
+            Map<Integer, Integer> signNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(teacherDao.findSignNum(StringUtils.join(teacherIds, ","), queryInfo.getMusicGroupId()))), HashMap.class);
+            dataList.forEach(e -> {
+                e.setNum(signNumMap.get(e.getTeacherId()));
+            });
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<MusicGroupTeacherAttendanceDto> queryTeacherAttendance(MusicGroupTeacherAttendanceQueryInfo queryInfo) {
+        PageInfo<MusicGroupTeacherAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MusicGroupTeacherAttendanceDto> dataList = null;
+        int count = teacherDao.countTeacherAttendance(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryTeacherAttendance(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
+        PageInfo<MusicGroupStudentApplyDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MusicGroupStudentApplyDto> dataList = null;
+        int count = teacherDao.countMusicGroupStudentApply(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryMusicGroupStudentApply(params);
+            String paymentStatus = queryInfo.getPaymentStatus();
+            if (StringUtils.isNotEmpty(paymentStatus) && paymentStatus.equals("2")) {
+                List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder(queryInfo.getMusicGroupId());
+                Map<Integer, List<StudentPaymentOrder>> collect = studentPaymentOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getUserId));
+                dataList.forEach(e -> {
+                    List<StudentPaymentOrder> paymentOrders = collect.get(e.getUserId());
+
+                    if (paymentOrders != null && paymentOrders.size() > 0) {
+                        e.setPaymentAmount(paymentOrders.stream().map(t -> t.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add));
+                        e.setPayTime(paymentOrders.get(0).getPayTime());
+                    }
+                });
+            }
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public List<Teacher> findTeacherByOrganId(String organId, String subjectIds, String jobNature) {
+        return teacherDao.findTeacherByOrganId(organId, subjectIds, jobNature);
+    }
+
+    @Override
+    public PageInfo<Teacher> queryPageName(TeacherNameQueryInfo queryInfo) {
+        PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<Teacher> dataList = null;
+        int count = teacherDao.countTeacherName(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryPageName(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public CourseHomework getCourseScheduleHomework(Integer courseScheduleId) {
+        return teacherDao.getCourseScheduleHomework(courseScheduleId);
+    }
+
+    @Override
+    public List<BasicUserDto> queryEducationIpa(Integer userId, String search) {
+        return queryGroupStudents(userId, search);
+    }
+
+    @Override
+    public List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId) {
+        if (Objects.isNull(musicGroupId)) {
+            throw new BizException("请指定乐团");
+        }
+        return teacherDao.findTeacherByMusicGroup(musicGroupId);
+    }
+
+    @Override
+    public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        PageInfo<Teacher> pageInfo = queryPage(queryInfo);
+        List<Teacher> rows = pageInfo.getRows();
+        if (rows != null && rows.size() > 0) {
+            Set<Integer> teachers = rows.stream().map(e -> e.getId()).collect(Collectors.toSet());
+            String teacherIds = StringUtils.join(teachers, ",");
+            //获取小课数量
+            Map<Integer, Integer> vipNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherVipNum(teacherIds))), HashMap.class);
+            //获取试听课数量
+            Map<Integer, Integer> demoNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(demoGroupDao.countTeacherDemoGroupNum(teacherIds))), HashMap.class);
+
+            Set<Integer> organIds = rows.stream().map(e -> e.getTeacherOrganId()).collect(Collectors.toSet());
+            Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+
+
+            for (Teacher e : rows) {
+                e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
+                e.setOrganName(organNames.get(e.getTeacherOrganId()));
+                if (StringUtils.isNotEmpty(e.getSplitSubjectName())) {
+                    e.setSubjectName(Arrays.asList(e.getSplitSubjectName().split(",")));
+                }
+                Integer num = vipNumMap.get(e.getId());
+                e.setVipNum(num == null ? 0 : num);
+                Integer demoNum = demoNumMap.get(e.getId());
+                e.setDemoNum(demoNum == null ? 0 : demoNum);
+            }
+        }
+        return pageInfo;
+    }
+
+    @Override
+    public Teacher getDetail(Integer id) {
+        Teacher teacher = teacherDao.get(id);
+        if (teacher != null) {
+            LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
+            LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+            List<TeacherExercisesServiceDto> teacherExercisesServiceSituations = studentExtracurricularExercisesSituationDao.findTeacherExercisesServiceSituations(monDayDate.toString(), Arrays.asList(id));
+            Map<Integer, TeacherExercisesServiceDto> teacherServiceMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teacherExercisesServiceSituations)) {
+                teacherServiceMap = teacherExercisesServiceSituations.stream().collect(Collectors.toMap(TeacherExercisesServiceDto::getTeacherId, t -> t));
+            }
+
+            Map<Integer, String> operatingStudentsNum = MapUtil.convertMybatisMap(studentDao.getTeacherOperatingStudentsNum(id.toString()));
+            Map<Integer, String> practiceStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.PRACTICE));
+            Map<Integer, String> vipStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.VIP));
+            Map<Integer, String> practiceAndVipStudentsNum = MapUtil.convertMybatisMap(studentDao.getPracticeAndVipNums(id.toString()));
+
+            //获取老师教学点列表
+            List<School> teacherSchools = schoolDao.findByUserId(id);
+            teacher.setTeacherSchools(teacherSchools);
+            //获取流动范围
+            if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
+                teacher.setFlowOrganRangeId(teacher.getFlowOrganRange());
+                List<String> organNames = organizationDao.findByOrganIds(teacher.getFlowOrganRange());
+                teacher.setFlowOrganRange(StringUtils.join(organNames, ","));
+            }
+            if (teacher.getTeacherOrganId() != null) {
+                Organization organization = organizationDao.get(teacher.getTeacherOrganId());
+                teacher.setOrganName(Objects.nonNull(organization) ? organization.getName() : null);
+            }
+            //专业技能
+            if (StringUtils.isNotEmpty(teacher.getSubjectId())) {
+                teacher.setSubjectName(subjectDao.findBySubIds(teacher.getSubjectId()));
+            }
+
+            //服务指标
+            TeacherExercisesServiceDto teacherService = teacherServiceMap.get(id);
+            if (Objects.nonNull(teacherService)) {
+                BigDecimal serviceIndex = new BigDecimal(teacherService.getActualExercisesNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(teacherService.getExpectExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                teacher.setServiceIndex(serviceIndex);
+            } else {
+                teacher.setServiceIndex(BigDecimal.ZERO);
+            }
+            //运营指标
+            String studentNum = operatingStudentsNum.get(id);
+            if (studentNum != null) {
+                String practiceNum = practiceStudentsNum.get(id) == null ? "0" : practiceStudentsNum.get(id);
+                String vipNum = vipStudentsNum.get(id) == null ? "0" : vipStudentsNum.get(id);
+                String practiceAndVipNum = practiceAndVipStudentsNum.get(id) == null ? "0" : practiceAndVipStudentsNum.get(id);
+                int allNum = Integer.parseInt(practiceNum) + Integer.parseInt(vipNum) - Integer.parseInt(practiceAndVipNum);
+                BigDecimal operatingIndex = new BigDecimal(allNum).multiply(new BigDecimal(100)).divide(new BigDecimal(studentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                teacher.setOperatingIndex(operatingIndex);
+            } else {
+                teacher.setOperatingIndex(BigDecimal.ZERO);
+            }
+        }
+        return teacher;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg) {
+
+        SysUser user = teacherDao.getUser(userId);
+        if (user == null) {
+            throw new BizException("用户不存在");
+        }
+
+        Teacher teacher = teacherDao.get(userId);
+        if (teacher == null) {
+            throw new BizException("用户信息不存在");
+        }
+        // 查询是否已实名认证
+        if (StringUtils.isNotBlank(teacher.getIdcardBackImg()) && StringUtils.isNotBlank(teacher.getIdcardFrontImg())
+                && StringUtils.isNotBlank(teacher.getIdcardHandImg())) {
+            throw new BizException("已实名认证,不能重复操作");
+        }
+
+        IdcardValidator validator = new IdcardValidator();
+        if (validator.isValidatedAllIdcard(idcardNo) == false) {
+            throw new BizException("身份证校验失败");
+        }
 
         realnameAuthenticationPluginContext.getRealnameAuthenticationPlugin(LinkfaceRealnameAuthenticationPlugin.getName()).verify(realName, idcardNo);
 
-		Date date = new Date();
-
-		teacher.setIdcardBackImg(idcardBackImg);
-		teacher.setIdcardFrontImg(idcardFrontImg);
-		teacher.setIdcardHandImg(idcardHandImg);
-		teacher.setUpdateTime(date);
-		teacherDao.update(teacher);
-		
-		user.setRealName(realName);
-		user.setIdCardNo(idcardNo);
-		user.setUpdateTime(date);
-		teacherDao.updateUser(user);
-		
-		return true;
-	}
-
-	@Override
-	public PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo) {
-		PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<BasicUserDto> dataList = null;
-		int count = teacherDao.countStudent(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryStudent(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(String organIdList) {
-		return teacherDao.queryTeacherDefaultSalary(organIdList,TenantContextHolder.getTenantId());
-	}
-
-	@Override
-	public PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(TeacherServeQueryInfo queryInfo) {
-		PageInfo<TeacherMusicStudentOverViewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<TeacherMusicStudentOverViewDto> dataList = null;
-		int count = teacherDao.countTeacherMusics(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			List<String> musicGroupIds = teacherDao.queryTeacherMusicIds(params);
-			dataList = musicGroupDao.queryTeacherMusicStudentOverView(musicGroupIds);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public PageInfo<TeacherStudentDataDto> queryMemberStudentData(TeacherServeQueryInfo queryInfo) {
-		PageInfo<TeacherStudentDataDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<TeacherStudentDataDto> dataList = new ArrayList<>();
-		int count = teacherDao.countMemberStudentData(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryMemberStudentData(params);
-			List<Integer> teacherIds = dataList.stream().map(TeacherStudentDataDto::getTeacherId).collect(Collectors.toList());
-
-			List<Map<Integer, Integer>> teachersStudentNumMapList = studentDao.getOrganTeacherStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<Integer, Long> teachersStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teachersStudentNumMapList)){
-				teachersStudentNumMap = MapUtil.convertIntegerMap(teachersStudentNumMapList);
-			}
-
-			List<Map<Integer, Integer>> teachersMemberStudentNumMapList = cloudTeacherDao.getTeachersMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<Integer, Long> teachersMemberStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teachersMemberStudentNumMapList)){
-				teachersMemberStudentNumMap = MapUtil.convertIntegerMap(teachersMemberStudentNumMapList);
-			}
-			List<Map<Integer, Integer>> teacherExperienceMemberStudentNumMapList = studentDao.getTeacherExperienceMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<Integer, Long> teacherExperienceMemberStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teacherExperienceMemberStudentNumMapList)){
-				teacherExperienceMemberStudentNumMap = MapUtil.convertIntegerMap(teacherExperienceMemberStudentNumMapList);
-			}
-			List<Map<Integer, Integer>> organTeacherCloudStudyStudentNumMapList = studentDao.getOrganTeacherCloudStudyStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<String, Long> organTeacherCloudStudyStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(organTeacherCloudStudyStudentNumMapList)){
-				organTeacherCloudStudyStudentNumMap = MapUtil.convertIntegerMap(organTeacherCloudStudyStudentNumMapList);
-			}
-			for (TeacherStudentDataDto teacherStudentDataDto : dataList) {
-				if(teachersStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.setTotalStudentNum(teachersStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teachersMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.setVipStudentNum(teachersMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teacherExperienceMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.seteVipStudentNum(teacherExperienceMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teacherStudentDataDto.getVipStudentNum()>0&&teacherStudentDataDto.getTotalStudentNum()>0){
-					teacherStudentDataDto.setVipStudentDuty(new BigDecimal(teacherStudentDataDto.getVipStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
-				}
-				if(organTeacherCloudStudyStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.setCloudStudyUseStudentNum(organTeacherCloudStudyStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teacherStudentDataDto.getCloudStudyUseStudentNum()>0&&teacherStudentDataDto.getTotalStudentNum()>0){
-					teacherStudentDataDto.setCloudStudyUseStudentDuty(new BigDecimal(teacherStudentDataDto.getCloudStudyUseStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
-				}
-			}
-		}
-		pageInfo.setStatInfo(new HashMap<String, Object>(){{put("noTeacherStudentNum", studentDao.getOrganNoTeacherStudentNum(Integer.valueOf(queryInfo.getOrganId())));}});
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
+        Date date = new Date();
+
+        teacher.setIdcardBackImg(idcardBackImg);
+        teacher.setIdcardFrontImg(idcardFrontImg);
+        teacher.setIdcardHandImg(idcardHandImg);
+        teacher.setUpdateTime(date);
+        teacherDao.update(teacher);
+
+        user.setRealName(realName);
+        user.setIdCardNo(idcardNo);
+        user.setUpdateTime(date);
+        teacherDao.updateUser(user);
+
+        return true;
+    }
+
+    @Override
+    public PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo) {
+        PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<BasicUserDto> dataList = null;
+        int count = teacherDao.countStudent(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryStudent(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(String organIdList) {
+        return teacherDao.queryTeacherDefaultSalary(organIdList, TenantContextHolder.getTenantId());
+    }
+
+    @Override
+    public PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(TeacherServeQueryInfo queryInfo) {
+        PageInfo<TeacherMusicStudentOverViewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherMusicStudentOverViewDto> dataList = null;
+        int count = teacherDao.countTeacherMusics(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            List<String> musicGroupIds = teacherDao.queryTeacherMusicIds(params);
+            dataList = musicGroupDao.queryTeacherMusicStudentOverView(musicGroupIds);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<TeacherStudentDataDto> queryMemberStudentData(TeacherServeQueryInfo queryInfo) {
+        PageInfo<TeacherStudentDataDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherStudentDataDto> dataList = new ArrayList<>();
+        int count = teacherDao.countMemberStudentData(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryMemberStudentData(params);
+            List<Integer> teacherIds = dataList.stream().map(TeacherStudentDataDto::getTeacherId).collect(Collectors.toList());
+
+            List<Map<Integer, Integer>> teachersStudentNumMapList = studentDao.getOrganTeacherStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<Integer, Long> teachersStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teachersStudentNumMapList)) {
+                teachersStudentNumMap = MapUtil.convertIntegerMap(teachersStudentNumMapList);
+            }
+
+            List<Map<Integer, Integer>> teachersMemberStudentNumMapList = cloudTeacherDao.getTeachersMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<Integer, Long> teachersMemberStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teachersMemberStudentNumMapList)) {
+                teachersMemberStudentNumMap = MapUtil.convertIntegerMap(teachersMemberStudentNumMapList);
+            }
+            List<Map<Integer, Integer>> teacherExperienceMemberStudentNumMapList = studentDao.getTeacherExperienceMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<Integer, Long> teacherExperienceMemberStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teacherExperienceMemberStudentNumMapList)) {
+                teacherExperienceMemberStudentNumMap = MapUtil.convertIntegerMap(teacherExperienceMemberStudentNumMapList);
+            }
+            List<Map<Integer, Integer>> organTeacherCloudStudyStudentNumMapList = studentDao.getOrganTeacherCloudStudyStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<String, Long> organTeacherCloudStudyStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(organTeacherCloudStudyStudentNumMapList)) {
+                organTeacherCloudStudyStudentNumMap = MapUtil.convertIntegerMap(organTeacherCloudStudyStudentNumMapList);
+            }
+            for (TeacherStudentDataDto teacherStudentDataDto : dataList) {
+                if (teachersStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.setTotalStudentNum(teachersStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teachersMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.setVipStudentNum(teachersMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teacherExperienceMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.seteVipStudentNum(teacherExperienceMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teacherStudentDataDto.getVipStudentNum() > 0 && teacherStudentDataDto.getTotalStudentNum() > 0) {
+                    teacherStudentDataDto.setVipStudentDuty(new BigDecimal(teacherStudentDataDto.getVipStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
+                }
+                if (organTeacherCloudStudyStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.setCloudStudyUseStudentNum(organTeacherCloudStudyStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teacherStudentDataDto.getCloudStudyUseStudentNum() > 0 && teacherStudentDataDto.getTotalStudentNum() > 0) {
+                    teacherStudentDataDto.setCloudStudyUseStudentDuty(new BigDecimal(teacherStudentDataDto.getCloudStudyUseStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
+                }
+            }
+        }
+        pageInfo.setStatInfo(new HashMap<String, Object>() {{
+            put("noTeacherStudentNum", studentDao.getOrganNoTeacherStudentNum(Integer.valueOf(queryInfo.getOrganId())));
+        }});
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 
     @Override
     public PageInfo<SysUserDto> queryTeacherBasicInfo(UserBasicQueryInfo queryInfo) {
-		PageInfo<SysUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<SysUserDto> dataList = null;
-		int count = teacherDao.countTeacherBasicInfo(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryTeacherBasicInfo(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
+        PageInfo<SysUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<SysUserDto> dataList = null;
+        int count = teacherDao.countTeacherBasicInfo(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryTeacherBasicInfo(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
+     */
+    @Override
+    public PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param) {
+        Page<BasicUserDto> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setAsc("b.id_");
+        return PageUtil.pageInfo(teacherDao.getStudentsByTeacherOrgan(pageInfo, param));
     }
+
 }

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

@@ -165,7 +165,7 @@
 	</select>
 	<select id="findByParentId" resultMap="SysMusicScoreCategories">
 		SELECT sm.*,
-		(select count(1) from sys_music_score sms where sm.id_ = sms.music_score_categories_id_) as music_score_num_sum_
+		(select count(1) from sys_music_score sms where sms.del_flag_ = 0 and sm.id_ = sms.music_score_categories_id_) as music_score_num_sum_
         FROM sys_music_score_categories sm
 		<include refid="queryTree"/>
  		ORDER BY sm.order_

+ 14 - 4
mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

@@ -45,10 +45,7 @@
 		SELECT * FROM sys_music_score WHERE id_ = #{id} 
 	</select>
 	
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="SysMusicScore">
-		SELECT * FROM sys_music_score ORDER BY id_
-	</select>
+
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysMusicScore" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
@@ -125,6 +122,19 @@
 		UPDATE sys_music_score SET del_flag_ = 1 WHERE id_ = #{id}
 	</update>
 
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysMusicScore">
+		SELECT ses.*,su.real_name_ create_user_name_,smsc.name_ categories_name_,smsc.id_ categories_id_,
+		smsa.mp3_url_ accompaniment_url_,smsa.metronome_mp3_url_ accompaniment_metronome_url_,smsa.is_open_metronome_,smsa.subject_id_,smsa.xml_url_
+		FROM sys_music_score ses
+		LEFT JOIN sys_music_score_accompaniment smsa ON smsa.exam_song_id_ = ses.id_
+		LEFT JOIN sys_user su ON ses.create_user_id_ = su.id_
+		LEFT JOIN sys_music_score_categories smsc ON smsc.id_ = ses.music_score_categories_id_
+		<include refid="queryPageSql"/>
+		GROUP BY ses.id_
+		ORDER BY ses.music_score_categories_id_ DESC,ses.order_ ASC,ses.create_time_ DESC,ses.id_ desc
+	</select>
+
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysMusicScore" parameterType="map">
 		SELECT ses.*,su.real_name_ create_user_name_,smsc.name_ categories_name_,smsc.id_ categories_id_,

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

@@ -1473,4 +1473,28 @@
             </if>
         </where>
     </sql>
+
+    <select id="getStudentsByTeacherOrgan" resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
+        select b.id_ as userId,
+        b.organ_id_ as organId,
+        b.username_ as name,
+        b.avatar_ as headUrl,
+        b.phone_ as phone,
+        b.user_type_ as userType
+        from teacher as a
+        left join sys_user as b on a.organ_id_ = b.organ_id_
+        <where>
+            a.id_ = #{param.teacherId}
+            and b.id_ <![CDATA[ <> ]]>  #{param.teacherId}
+                and find_in_set('STUDENT', user_type_)
+            <if test="param.search != null and param.search != ''">
+                AND (b.id_ LIKE CONCAT('%', #{param.search}, '%')
+                OR b.username_ LIKE CONCAT('%', #{param.search}, '%')
+                OR b.phone_ LIKE CONCAT('%', #{param.search}, '%')
+                )
+            </if>
+        </where>
+
+    </select>
+
 </mapper>

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

@@ -1,5 +1,7 @@
 package com.ym.mec.teacher.config;
 
+import com.ym.mec.common.security.BaseAccessDeniedHandler;
+import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
@@ -8,36 +10,34 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E
 import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
 import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
 
-import com.ym.mec.common.security.BaseAccessDeniedHandler;
-import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
-
 @Configuration
 @EnableResourceServer
 @EnableGlobalMethodSecurity(prePostEnabled = true)
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
-	@Autowired
-	private BaseAccessDeniedHandler baseAccessDeniedHandler;
-
-	@Autowired
-	private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
-
-	@Override
-	public void configure(HttpSecurity http) throws Exception {
-		http.csrf()
-				.disable()
-				.exceptionHandling()
-				.accessDeniedHandler(baseAccessDeniedHandler)
-				.authenticationEntryPoint(baseAuthenticationEntryPoint)
-				.and()
-				.authorizeRequests()
-				.antMatchers("/v2/api-docs", "/code/*", "/teacher/queryStudentApply", "/teacher/querySubByMusicGroupId", "/studentRegistration/updateSubject",
-						"/studyReport/createEvaluate", "/teacherOrder/*","/teacher/getRegisterOrPreList","/teacherContract/callback").permitAll().anyRequest().authenticated().and().httpBasic();
-	}
-
-	@Override
-	public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
-		resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
-	}
+    @Autowired
+    private BaseAccessDeniedHandler baseAccessDeniedHandler;
+
+    @Autowired
+    private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
+
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+        http.csrf()
+                .disable()
+                .exceptionHandling()
+                .accessDeniedHandler(baseAccessDeniedHandler)
+                .authenticationEntryPoint(baseAuthenticationEntryPoint)
+                .and()
+                .authorizeRequests()
+                .antMatchers("/v2/api-docs", "/code/*", "/teacher/queryStudentApply", "/teacher/querySubByMusicGroupId", "/studentRegistration/updateSubject",
+                        "/studyReport/createEvaluate", "/teacherOrder/*", "/teacher/getRegisterOrPreList", "/teacherContract/callback", "/eduPracticeGroup/queryOrderInfo")
+                .permitAll().anyRequest().authenticated().and().httpBasic();
+    }
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
+    }
 
 }

+ 43 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduContractsController.java

@@ -0,0 +1,43 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.09.24
+ */
+@RequestMapping("eduContracts")
+@Api(tags = "协议服务")
+@RestController
+public class EduContractsController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private ContractService contractService;
+
+    @ApiOperation("查询产品协议")
+    @GetMapping(value = "queryProduceContract")
+    public Object queryProduceContract(Integer userId, String musicGroupId, CourseViewTypeEnum courseViewType) {
+        if(Objects.isNull(userId)){
+            SysUser sysUser = sysUserFeignService.queryUserInfo();
+            if (sysUser == null) {
+                return failed("获取用户信息失败");
+            }
+            userId = sysUser.getId();
+        }
+        return succeed(contractService.queryProductContract(userId,musicGroupId, courseViewType));
+    }
+}

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

@@ -0,0 +1,31 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.service.PracticeGroupService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/1/31
+ */
+@RequestMapping("eduPracticeGroup")
+@Api(tags = "陪练课服务")
+@RestController
+public class EduPracticeGroupController extends BaseController {
+
+    @Autowired
+    private PracticeGroupService practiceGroupService;
+
+    @ApiOperation("查询订单信息")
+    @GetMapping(value = "/queryOrderInfo")
+    public HttpResponseResult queryOrderInfo(String orderNo) {
+        return succeed(practiceGroupService.queryOrderInfo(orderNo));
+    }
+
+}

+ 134 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduRepairController.java

@@ -0,0 +1,134 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.entity.StudentGoodsSell;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
+import com.ym.mec.biz.dal.page.GoodsQueryInfo;
+import com.ym.mec.biz.dal.page.GoodsSellQueryInfo;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@RequestMapping("eduRepair")
+@Api(tags = "教务维修服务")
+@RestController
+public class EduRepairController extends BaseController {
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TeacherService teacherService;
+    @Autowired
+    private StudentRepairService studentRepairService;
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+    @Autowired
+    private GoodsService goodsService;
+    @Autowired
+    private GoodsCategoryService goodsCategoryService;
+    @Autowired
+    private StudentGoodsSellService studentGoodsSellService;
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "关键字"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
+    @ApiOperation("查询老师主分部下所有学生")
+    @PostMapping(value = "/getStudentsByTeacherOrgan")
+    public HttpResponseResult<PageInfo<BasicUserDto>> getStudentsByTeacherOrgan(@RequestBody Map<String, Object> param) {
+        return succeed(studentRepairService.getStudentsByTeacherOrgan(param));
+    }
+
+    @ApiOperation("添加商品销售订单")
+    @PostMapping(value = "/addGoodsSellOrder")
+    public HttpResponseResult addGoodsSellOrder(@RequestBody StudentGoodsSell studentGoodsSell) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("请登录");
+        }
+        if (studentGoodsSell.getIsRepeatPay() == false) {
+            List<StudentPaymentOrder> list = studentPaymentOrderService.queryByCondition(GroupType.GOODS_SELL, null, studentGoodsSell.getUserId(), DealStatusEnum.ING,
+                    OrderTypeEnum.RENEW);
+            if (list.size() > 0) {
+                return failed(HttpStatus.CONTINUE, "该学员有待支付的订单");
+            }
+        }
+        studentGoodsSell.setTeacherId(sysUser.getId());
+        studentGoodsSell.setAuthorUser(sysUser.getId());
+        Map map = studentRepairService.addGoodsSellOrder(studentGoodsSell);
+        if (map.containsKey("tradeState")) {
+            return failed(HttpStatus.CREATED, map, "恭喜您,购买成功!");
+        }
+        return succeed(map);
+    }
+
+    @ApiOperation("获取学生信息")
+    @GetMapping(value = "/getStudentInfo")
+    public HttpResponseResult getStudentInfo(Integer studentId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(studentRepairService.getStudentInfo(studentId));
+    }
+
+    @ApiOperation(value = "分页查询商品(教材、辅件)列表")
+    @GetMapping("/queryGoodsPage")
+    public Object queryPage(GoodsQueryInfo queryInfo) {
+        queryInfo.setOrganId(null);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        Teacher teacher = teacherService.get(sysUser.getId());
+        if (queryInfo.getStudentShowOrganId() == null &&
+                queryInfo.getEducationShowOrganId() == null &&
+                queryInfo.getCourseFeeShowOrganId() == null &&
+                queryInfo.getMemberFeeShowOrganId() == null &&
+                queryInfo.getReplacementShowOrganId() == null) {
+            queryInfo.setEducationShowOrganId(teacher.getOrganId().toString());
+        } else if (Objects.isNull(teacher.getOrganId())) {
+            return failed("用户所在分部异常");
+        }
+        return succeed(goodsService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "分页查询商品分类列表")
+    @GetMapping("/queryGoodsCategoryPage")
+    public Object queryGoodsCategoryPage(GoodsCategoryQueryInfo queryInfo) {
+        return succeed(goodsCategoryService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "分页查询教务老师关联的学员商品订单")
+    @GetMapping("/queryStudentGoodsOrders")
+    public Object queryStudentGoodsOrders(GoodsSellQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentGoodsSellService.queryStudentGoodsOrders(queryInfo));
+    }
+
+}

+ 32 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduSysCouponCodeController.java

@@ -0,0 +1,32 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.dal.dto.SysCouponCodeDto;
+import com.ym.mec.biz.dal.page.SysCouponCodeQueryInfo;
+import com.ym.mec.biz.service.SysCouponCodeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("eduSysCouponCode")
+@Api(tags = "优惠券明细")
+@RestController
+public class EduSysCouponCodeController extends BaseController {
+
+	@Autowired
+	private SysCouponCodeService sysCouponCodeService;
+
+	@ApiOperation("分页查询")
+	@RequestMapping(value = "queryPage")
+	public HttpResponseResult<PageInfo<SysCouponCodeDto>> queryPage(SysCouponCodeQueryInfo queryInfo) {
+		if(queryInfo.getUserId() == null){
+			throw new BizException("请指定学员");
+		}
+		return succeed(sysCouponCodeService.querySysCouponUseList(queryInfo));
+	}
+}

+ 40 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/GoodsController.java

@@ -0,0 +1,40 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.GoodsCategory;
+import com.ym.mec.biz.service.GoodsCategoryService;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+@RequestMapping("goods")
+@Api(tags = "商品(教材、辅件)服务")
+@RestController
+public class GoodsController extends BaseController {
+
+    @Autowired
+    private GoodsService goodsService;
+    @Autowired
+    private GoodsCategoryService goodsCategoryService;
+
+    @ApiOperation(value = "根据商品(教材、辅件)编号查询商品(教材、辅件)")
+    @GetMapping("/get/{id}")
+    public Object get(@ApiParam(value = "商品(教材、辅件)编号", required = true) @PathVariable("id") Integer id) {
+        Goods goods = goodsService.getDetail(id);
+        GoodsCategory goodsCategory = goodsCategoryService.get(goods.getGoodsCategoryId());
+        if (Objects.nonNull(goodsCategory)) {
+            goods.setGoodsCategoryName(goodsCategory.getName());
+        }
+        return succeed(goods);
+    }
+
+}

+ 30 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentController.java

@@ -0,0 +1,30 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Optional;
+
+@Api(tags = "学生管理")
+@RequestMapping("/student")
+@RestController
+public class StudentController extends BaseController {
+
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+
+    @ApiOperation(value = "获取学员账户信息")
+    @GetMapping("/userCashAccount/get")
+    public Object getStudentCashAccount(Integer id) {
+        Optional.ofNullable(id).orElseThrow(() -> new BizException("学生id不能为空!"));
+        return succeed(sysUserCashAccountService.get(id));
+    }
+
+}

+ 224 - 156
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -150,52 +150,52 @@ public class ExportController extends BaseController {
     @RequestMapping("export/now")
     @PreAuthorize("@pcs.hasPermissions('export/now')")
     public void export(HttpServletResponse response, @RequestBody ExportDto exportDto) throws Exception {
-        if(exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_REGISTER){
-            exportService.musicGroupRegister(response,exportDto);
-        }else if(exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_NORMAL_STUDENT_NUM){
-            exportService.musicGroupNormalStudentNum(response,exportDto);
-        }else {
+        if (exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_REGISTER) {
+            exportService.musicGroupRegister(response, exportDto);
+        } else if (exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_NORMAL_STUDENT_NUM) {
+            exportService.musicGroupNormalStudentNum(response, exportDto);
+        } else {
             Map<String, Object> queryInfo = exportDto.getQueryInfo();
-            if(queryInfo == null){
+            if (queryInfo == null) {
                 queryInfo = new HashMap<>(10);
             }
-            queryInfo.put("page",1);
-            queryInfo.put("rows",49999);
-            queryInfo.put("isExport",true);
-            exportService.export(response,exportService.getExportFuncMap().get(exportDto.getExportEnum()).apply(queryInfo),exportDto);
+            queryInfo.put("page", 1);
+            queryInfo.put("rows", 49999);
+            queryInfo.put("isExport", true);
+            exportService.export(response, exportService.getExportFuncMap().get(exportDto.getExportEnum()).apply(queryInfo), exportDto);
         }
     }
 
     @ApiOperation(value = "导出到报表中心")
     @PostMapping("export/managerDownload")
     @PreAuthorize("@pcs.hasPermissions('export/managerDownload')")
-    public HttpResponseResult managerDownload(@RequestBody ExportDto exportDto){
-        if(exportDto.getHeadColumns() == null || exportDto.getHeadColumns().size() == 0){
+    public HttpResponseResult managerDownload(@RequestBody ExportDto exportDto) {
+        if (exportDto.getHeadColumns() == null || exportDto.getHeadColumns().size() == 0) {
             throw new BizException("请选择导出字段");
         }
         Map<String, Object> queryInfo = exportDto.getQueryInfo();
-        if(queryInfo == null){
+        if (queryInfo == null) {
             queryInfo = new HashMap<>(10);
         }
-        queryInfo.put("page",1);
-        queryInfo.put("rows",49999);
-        queryInfo.put("isExport",true);
-        return exportService.getExportManageFuncMap().get(exportDto.getExportEnum()).apply(queryInfo,exportDto.getHeadColumns());
+        queryInfo.put("page", 1);
+        queryInfo.put("rows", 49999);
+        queryInfo.put("isExport", true);
+        return exportService.getExportManageFuncMap().get(exportDto.getExportEnum()).apply(queryInfo, exportDto.getHeadColumns());
     }
 
 
     @ApiOperation(value = "导出乐团课列表详情")
     @PostMapping("export/exportMusicGroupCourseList")
     @PreAuthorize("@pcs.hasPermissions('export/exportMusicGroupCourseList')")
-    public HttpResponseResult exportMusicGroupCourseList(ExportUserAccountQueryInfo queryInfo){
+    public HttpResponseResult exportMusicGroupCourseList(ExportUserAccountQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()));
         Integer i = musicGroupDao.countMusicGroupCourseList(queryInfo);
         if (Objects.isNull(i) || i <= 0) {
             throw new BizException("没有可导出的记录");
         }
-        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.MUSIC_GROUP_DATA_EXPORT,sysUser.getId());
-        return exportService.asyncExport(() -> exportService.exportMusicGroupCourseList(managerDownload,queryInfo),managerDownload.getName());
+        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.MUSIC_GROUP_DATA_EXPORT, sysUser.getId());
+        return exportService.asyncExport(() -> exportService.exportMusicGroupCourseList(managerDownload, queryInfo), managerDownload.getName());
     }
 
     @ApiOperation(value = "乐团详情--课表详情列表(课表详情)导出")
@@ -209,8 +209,8 @@ public class ExportController extends BaseController {
         queryInfo.setPage(1);
         queryInfo.setRows(65535);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.MUSIC_GROUP_COURSE_LIST,sysUser.getId());
-        return exportService.asyncExport(() -> exportService.exportMusicGroupCourseScheduleDetail(queryInfo, managerDownload),managerDownload.getName());
+        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.MUSIC_GROUP_COURSE_LIST, sysUser.getId());
+        return exportService.asyncExport(() -> exportService.exportMusicGroupCourseScheduleDetail(queryInfo, managerDownload), managerDownload.getName());
     }
 
     @ApiOperation(value = "乐团列表导出")
@@ -221,16 +221,16 @@ public class ExportController extends BaseController {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         List<MusicGroup> rows = musicGroupService.queryMusicGroupPage(queryInfo).getRows();
-        if(rows.size() < 1){
+        if (rows.size() < 1) {
             throw new BizException("没有可导出数据");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称","合作单位", "乐团状态",
-                    "收费模式","收费类型","乐团主管","成团人数", "在读人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
-                    "organName", "id", "name","cooperationOrganName", "status.msg", "courseViewType.msg","chargeTypeName",
-                    "educationalTeacherName", "groupMemberNum","payNum"
-                    ,"createTime","updateTime","hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称", "合作单位", "乐团状态",
+                    "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
+                    "organName", "id", "name", "cooperationOrganName", "status.msg", "courseViewType.msg", "chargeTypeName",
+                    "educationalTeacherName", "groupMemberNum", "payNum"
+                    , "createTime", "updateTime", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
@@ -259,15 +259,15 @@ public class ExportController extends BaseController {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         List<ChildrenStatisticsDetailDto> rows = childrenDayReserveService.exportStatisticsDetail(queryInfo);
-        if(rows.size() < 1){
+        if (rows.size() < 1) {
             throw new BizException("没有可导出数据");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "合作单位", "乐团","学员编号", "学员姓名", "手机号","声部","所在班级","指导老师", "是否预约", "器乐等级", "乐理等级", "是否购买VIP","是否购买乐理课"}, new String[]{
-                    "organName", "cooperationOrganName", "musicGroupName","userId", "username", "phone","subjectName",
-                    "currentClass", "realName", "isReserve == true ?'是':'否'","gradeLeave"
-                    ,"theoryLevel","buyVipFlag == true ?'是':'否'","buyTheoryCourseFlag == true ?'是':'否'"}, rows);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "合作单位", "乐团", "学员编号", "学员姓名", "手机号", "声部", "所在班级", "指导老师", "是否预约", "器乐等级", "乐理等级", "是否购买VIP", "是否购买乐理课"}, new String[]{
+                    "organName", "cooperationOrganName", "musicGroupName", "userId", "username", "phone", "subjectName",
+                    "currentClass", "realName", "isReserve == true ?'是':'否'", "gradeLeave"
+                    , "theoryLevel", "buyVipFlag == true ?'是':'否'", "buyTheoryCourseFlag == true ?'是':'否'"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
@@ -291,18 +291,18 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "2021双十一学员购买详情")
     @RequestMapping("export/doubleEleven2021OrderDetail")
     @PreAuthorize("@pcs.hasPermissions('export/doubleEleven2021OrderDetail')")
-    public void doubleEleven2021OrderDetail(HttpServletResponse response,DoubleEleven2021QueryInfo queryInfo) throws IOException {
+    public void doubleEleven2021OrderDetail(HttpServletResponse response, DoubleEleven2021QueryInfo queryInfo) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         List<DoubleEleven2021OrderDetailDto> rows = vipGroupActivityService.doubleEleven2021OrderDetail(queryInfo).getRows();
-        if(rows.size() < 1){
+        if (rows.size() < 1) {
             throw new BizException("没有可导出数据");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员编号", "学员姓名","订单号", "交易金额",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员编号", "学员姓名", "订单号", "交易金额",
                     "交易时间", "订单创建时间", "购买课程", "赠送会员"}, new String[]{
-                    "userId", "username", "orderNo","amount", "payTime", "createTime","type",
+                    "userId", "username", "orderNo", "amount", "payTime", "createTime", "type",
                     "giveMember==0?'否':'是'"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
@@ -327,19 +327,19 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部2021双11活动统计导出")
     @RequestMapping("export/organDoubleEleven2021Statis")
     @PreAuthorize("@pcs.hasPermissions('export/organDoubleEleven2021Statis')")
-    public void organDoubleEleven2021Statis(HttpServletResponse response,OrganDoubleEleven2021StatisDto statisDto) throws IOException {
+    public void organDoubleEleven2021Statis(HttpServletResponse response, OrganDoubleEleven2021StatisDto statisDto) throws IOException {
         List<DoubleEleven2021Dto> rows = vipGroupActivityService.organDoubleEleven2021Statis(statisDto);
-        if(rows.size() < 1){
+        if (rows.size() < 1) {
             throw new BizException("没有可导出数据");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "总成交金额","总购买人数", "人均购买金额",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "总成交金额", "总购买人数", "人均购买金额",
                     "20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数",
                     "40节1v2成交金额", "40节1v2成交人数", "乐理课成交金额", "乐理课成交人数", "赠送会员人数"}, new String[]{
-                    "organName", "totalBuyAmount", "totalBuyNum","avgBuyAmount", "vip1V120Amount", "vip1V120Num","vip1V140Amount",
-                    "vip1V140Num", "vip1V220Amount", "vip1V220Num","vip1V240Amount"
-                    ,"vip1V240Num","musicTheoryAmount","musicTheoryNum","giveMemberNum"}, rows);
+                    "organName", "totalBuyAmount", "totalBuyNum", "avgBuyAmount", "vip1V120Amount", "vip1V120Num", "vip1V140Amount",
+                    "vip1V140Num", "vip1V220Amount", "vip1V220Num", "vip1V240Amount"
+                    , "vip1V240Num", "musicTheoryAmount", "musicTheoryNum", "giveMemberNum"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
@@ -366,18 +366,18 @@ public class ExportController extends BaseController {
     public void userCashAccountDetail(HttpServletResponse response, ExportUserAccountQueryInfo queryInfo) throws IOException {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<SysUserCashAccountDetail> cashAccountDetails = sysUserCashAccountDetailDao.exportDetail(queryInfo);
-        if(cashAccountDetails.size() < 1){
+        if (cashAccountDetails.size() < 1) {
             throw new BizException("没有可导出数据");
         }
-        if(cashAccountDetails.size() > 49999){
+        if (cashAccountDetails.size() > 49999) {
             throw new BizException("数据超长,请联系管理员");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","学员编号", "姓名", "电话", "声部",
-                    "交易类型", "交易金额", "交易时间", "备注","可用余额"}, new String[]{
-                    "organName","userId", "username", "phone", "subjectName",
-                    "type.msg", "amount", "createTime", "comment","balance"}, cashAccountDetails);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "姓名", "电话", "声部",
+                    "交易类型", "交易金额", "交易时间", "备注", "可用余额"}, new String[]{
+                    "organName", "userId", "username", "phone", "subjectName",
+                    "type.msg", "amount", "createTime", "comment", "balance"}, cashAccountDetails);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
@@ -401,21 +401,21 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "学生个人课程余额导出")
     @PostMapping("export/userCoursesAccount")
     @PreAuthorize("@pcs.hasPermissions('export/userCoursesAccount')")
-    public void userCoursesAccount(HttpServletResponse response,ExportUserAccountQueryInfo queryInfo) throws IOException {
+    public void userCoursesAccount(HttpServletResponse response, ExportUserAccountQueryInfo queryInfo) throws IOException {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<SysUserCoursesAccountDetail> coursesAccountDetails = sysUserCoursesAccountDetailDao.exportDetail(queryInfo);
-        if(coursesAccountDetails.size() < 1){
+        if (coursesAccountDetails.size() < 1) {
             throw new BizException("没有可导出数据");
         }
-        if(coursesAccountDetails.size() > 49999){
+        if (coursesAccountDetails.size() > 49999) {
             throw new BizException("数据超长,请联系管理员");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "姓名", "电话", "声部",
-                    "交易类型", "交易金额", "交易时间", "备注","可用余额"}, new String[]{
+                    "交易类型", "交易金额", "交易时间", "备注", "可用余额"}, new String[]{
                     "organName", "userId", "username", "phone", "subjectName",
-                    "type.msg", "amount", "createTime", "comment","balance"}, coursesAccountDetails);
+                    "type.msg", "amount", "createTime", "comment", "balance"}, coursesAccountDetails);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
@@ -600,7 +600,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员编号", "学员姓名", "学员声部", "学员状态", "手机号",
-                    "缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间","会员金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"}, new String[]{
+                    "缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间", "会员金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"}, new String[]{
                     "userId", "sysUser.username", "studentRegistration.subjectName", "studentRegistration.musicGroupStatus.msg", "sysUser.phone",
                     "startPaymentDateMgpc", "deadlinePaymentDateMgpc", "openFlag.msg", "paymentStatus.desc", "payTime",
                     "cloudAmount", "musicalAmount", "courseAmount", "accessoriesAmount", "maintenanceAmount", "activityAmount"}, rows);
@@ -883,13 +883,13 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
-                    "家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)",
+                    "家长联系电话", "是否激活", "是否有课", "是否有网管课", "网管课剩余课时", "VIP课剩余课时", "课程余额(元)", "账户余额(元)",
                     "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用云教练", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
-                    "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg","noStartPracticeCourseNum","noStartVipCourseNum", "courseBalance", "balance", "musicGroupName",
+                    "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg", "noStartPracticeCourseNum", "noStartVipCourseNum", "courseBalance", "balance", "musicGroupName",
                     "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'",
-                    "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? \"未生效\" : \"未购买\" : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? \"未生效\" : \"会员已过期\"",
-                    "experienceMembershipEndTime","membershipEndTime == null ? \"未试用\" : membershipDay >= 0 ? membershipDay : \"已失效\""}, rows);
+                    "membershipEndTime", "membershipEndTime == null ? hasNoStartCloudTeacher ? \"未生效\" : \"未购买\" : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? \"未生效\" : \"会员已过期\"",
+                    "experienceMembershipEndTime", "membershipEndTime == null ? \"未试用\" : membershipDay >= 0 ? membershipDay : \"已失效\""}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
 
@@ -1119,9 +1119,9 @@ public class ExportController extends BaseController {
         MusicGroup musicGroup = musicGroupDao.get(queryInfo.getMusicGroupId());
         Map<Integer, String> gradeList = organizationService.getGradeList(musicGroup.getOrganId());
         for (StudentApplyDetailDto studentApplyDetailDto : studentApplyDetail) {
-            if(StringUtils.isNotEmpty(studentApplyDetailDto.getCurrentGrade())){
+            if (StringUtils.isNotEmpty(studentApplyDetailDto.getCurrentGrade())) {
                 String grade = gradeList.get(Integer.parseInt(studentApplyDetailDto.getCurrentGrade()));
-                if(StringUtils.isNotEmpty(grade)){
+                if (StringUtils.isNotEmpty(grade)) {
                     studentApplyDetailDto.setCurrentGrade(grade);
                 }
             }
@@ -1133,19 +1133,19 @@ public class ExportController extends BaseController {
             if (PaymentStatusEnum.YES.equals(studentApplyDetailDto.getPaymentStatus()) && studentApplyDetailDto.getKitGroupPurchaseTypeEnum() == null) {
                 studentApplyDetailDto.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.OWNED);
             }
-            if(studentApplyDetailDto.getPayingStatus().equals(1)){
+            if (studentApplyDetailDto.getPayingStatus().equals(1)) {
                 studentApplyDetailDto.setPayingStatusStr("缴费中");
-            }else if(studentApplyDetailDto.getPayingStatus().equals(2)){
+            } else if (studentApplyDetailDto.getPayingStatus().equals(2)) {
                 studentApplyDetailDto.setPayingStatusStr("审核中");
             }
         }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业",
-                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买云教练"}, new String[]{
+                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式", "缴费中/审核中", "是否购买云教练"}, new String[]{
                     "studentName", "parentsName", "currentGrade", "currentClass", "gender.description",
                     "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc",
-                    "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
+                    "kitGroupPurchaseTypeEnum.msg", "payingStatusStr", "hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
 
@@ -1211,9 +1211,9 @@ public class ExportController extends BaseController {
             MusicGroup musicGroup = musicGroupDao.get(queryInfo.getMusicGroupId());
             Map<Integer, String> gradeList = organizationService.getGradeList(musicGroup.getOrganId());
             for (MusicGroupStudentsDto row : musicGroupStudentsDtoPageInfo.getRows()) {
-                if(StringUtils.isNotEmpty(row.getCurrentGrade())){
+                if (StringUtils.isNotEmpty(row.getCurrentGrade())) {
                     String grade = gradeList.get(Integer.parseInt(row.getCurrentGrade()));
-                    if(StringUtils.isNotEmpty(grade)){
+                    if (StringUtils.isNotEmpty(grade)) {
                         row.setCurrentGrade(grade);
                     }
                 }
@@ -1246,14 +1246,14 @@ public class ExportController extends BaseController {
                     row.setNextPaymentDateStr(DateUtil.format(row.getNextPaymentDate(), DateUtil.DEFAULT_PATTERN));
                 }
             }
-            String[] header = {"学员编号", "学员姓名", "性别", "联系电话","入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活",
-                    "VIP/网管是否有课","关心包","加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"};
-            String[] body = {"userId", "realName", "gender", "phone","registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc"
-                    ,"courseFee", "activeName", "hasCourse ? '是' : '否'"
-                    ,"carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'"
-                    ,"comeOnPackage == null || comeOnPackage == 0 ? '不可用'' : comeOnPackage == 1 ? '可用' : '已使用'"
-                    ,"noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason",
-                    "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"};
+            String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活",
+                    "VIP/网管是否有课", "关心包", "加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"};
+            String[] body = {"userId", "realName", "gender", "phone", "registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc"
+                    , "courseFee", "activeName", "hasCourse ? '是' : '否'"
+                    , "carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'"
+                    , "comeOnPackage == null || comeOnPackage == 0 ? '不可用'' : comeOnPackage == 1 ? '可用' : '已使用'"
+                    , "noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason",
+                    "membershipEndTime", "membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1798,20 +1798,28 @@ public class ExportController extends BaseController {
         if (pageList.getTotal() <= 0) {
             throw new BizException("没有可导出的记录");
         }
-        Map<String,String> map = new HashMap<>(10);
-        map.put("一级","1");map.put("二级","2");map.put("三级","3");map.put("四级","4");map.put("五级","5");
-        map.put("六级","6");map.put("七级","7");map.put("八级","8");map.put("九级","9");map.put("十级","10");
+        Map<String, String> map = new HashMap<>(10);
+        map.put("一级", "1");
+        map.put("二级", "2");
+        map.put("三级", "3");
+        map.put("四级", "4");
+        map.put("五级", "5");
+        map.put("六级", "6");
+        map.put("七级", "7");
+        map.put("八级", "8");
+        map.put("九级", "9");
+        map.put("十级", "10");
         for (DegreeRegistration row : pageList.getRows()) {
             row.setActivityTag(map.get(row.getLevel()));
-            if(row.getType() == 2){
+            if (row.getType() == 2) {
                 row.setSubject("乐理");
             }
             row.setGender("1".equals(row.getGender()) ? "男" : "女");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            String[] header = {"姓名", "性别", "编号", "证件号码", "城市", "学校", "报考乐器", "报考级别", "级别", "乐理级别证书", "家长联系电话", "考级费用","备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
-            String[] body = {"name", "gender","id", "idcard", "city", "school", "subject", "level","activityTag",
+            String[] header = {"姓名", "性别", "编号", "证件号码", "城市", "学校", "报考乐器", "报考级别", "级别", "乐理级别证书", "家长联系电话", "考级费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
+            String[] body = {"name", "gender", "id", "idcard", "city", "school", "subject", "level", "activityTag",
                     "theoryCert", "mobile", "money", "memo", "status == 2?'已缴费':status == 3?'已退费':'未缴费'", "orderNo", "transNo", "createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
@@ -1847,7 +1855,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
 
-            String[] header = {"分部", "单位编号", "单位名称", "是否启用","乐团主管","状态栏"};
+            String[] header = {"分部", "单位编号", "单位名称", "是否启用", "乐团主管", "状态栏"};
             String[] body = {"organization.name", "id", "name", "isEnable == true ? '是':'否'", "realName", "isEnable == true ? '开启' : '未开启'"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
@@ -1877,18 +1885,18 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganIdList(),sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganIdList(), sysUser.getIsSuperAdmin()));
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         Integer tenantId = TenantContextHolder.getTenantId();
-        if(Objects.equals("COURSE_TIME_ERROR",queryInfo.getSearchType())){
+        if (Objects.equals("COURSE_TIME_ERROR", queryInfo.getSearchType())) {
             String courseStartTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_START_TIME_ERROR, tenantId);
             String courseEndTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_END_TIME_ERROR, tenantId);
-            if(StringUtils.isEmpty(courseStartTimeError) || StringUtils.isEmpty(courseEndTimeError)){
+            if (StringUtils.isEmpty(courseStartTimeError) || StringUtils.isEmpty(courseEndTimeError)) {
                 return failed("没有可导出的数据");
             }
-            params.put("courseStartTimeError",courseStartTimeError);
-            params.put("courseEndTimeError",courseEndTimeError);
+            params.put("courseStartTimeError", courseStartTimeError);
+            params.put("courseEndTimeError", courseEndTimeError);
         }
         int count = scheduleService.endCountCourseSchedules(params);
         if (count <= 0) {
@@ -1900,9 +1908,9 @@ public class ExportController extends BaseController {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         queryInfo.setIsExport(true);
-        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.COURSE_SCHEDULE,sysUser.getId());
+        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.COURSE_SCHEDULE, sysUser.getId());
         TenantContextHolder.setTenantId(tenantId);
-        HttpResponseResult succeed = exportService.asyncExport(() -> exportService.superFindCourseSchedules(queryInfo, managerDownload),managerDownload.getName());
+        HttpResponseResult succeed = exportService.asyncExport(() -> exportService.superFindCourseSchedules(queryInfo, managerDownload), managerDownload.getName());
         TenantContextHolder.clearTenantId();
         return succeed;
     }
@@ -1956,7 +1964,7 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('export/studentOrder')")
     public void studentOrder(String organIds, Date date, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        organIds = organizationService.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin());
+        organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin());
         Date startTime = DateUtil.getFirstDayOfMonth(date);
         Date EndTime = DateUtil.getLastSecondWithDay(DateUtil.getLastDayOfMonth(date));
 
@@ -2102,7 +2110,7 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()));
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         PageInfo<MusicArrearageStudentDto> result = musicGroupPaymentCalenderDetailService.queryArrearageStudents(queryInfo);
@@ -2191,23 +2199,23 @@ public class ExportController extends BaseController {
 
         for (TeacherServeDto row : result.getRows()) {
             row.setDateRange(com.ym.mec.util.date.DateUtil.dateToString(row.getMonday(), "yyyy-MM-dd") + '~' + com.ym.mec.util.date.DateUtil.dateToString(row.getSunday(), "yyyy-MM-dd"));
-            if(row.getActualExercisesNum()<=0){
-                row.setSubmitRate(zero.toString()+"%");
-            }else{
+            if (row.getActualExercisesNum() <= 0) {
+                row.setSubmitRate(zero.toString() + "%");
+            } else {
                 BigDecimal submitRate = new BigDecimal(row.getExercisesReplyNum()).divide(new BigDecimal(row.getActualExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred);
-                row.setSubmitRate(submitRate+"%");
+                row.setSubmitRate(submitRate + "%");
             }
-            if(row.getExercisesReplyNum() <= 0){
-                row.setExercisesMessageRate(zero.toString()+"%");
-            }else {
+            if (row.getExercisesReplyNum() <= 0) {
+                row.setExercisesMessageRate(zero.toString() + "%");
+            } else {
                 BigDecimal exercisesMessageRate = new BigDecimal(row.getExercisesMessageNum()).divide(new BigDecimal(row.getExercisesReplyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred);
-                row.setExercisesMessageRate(exercisesMessageRate+"%");
+                row.setExercisesMessageRate(exercisesMessageRate + "%");
             }
-            if(row.getExercisesReplyNum() <= 0){
-                row.setExercisesMessageTimelyRate(zero.toString()+"%");
-            }else {
+            if (row.getExercisesReplyNum() <= 0) {
+                row.setExercisesMessageTimelyRate(zero.toString() + "%");
+            } else {
                 BigDecimal exercisesMessageTimelyRate = new BigDecimal(row.getExercisesMessageTimelyNum()).divide(new BigDecimal(row.getExercisesReplyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred);
-                row.setExercisesMessageTimelyRate(exercisesMessageTimelyRate+"%");
+                row.setExercisesMessageTimelyRate(exercisesMessageTimelyRate + "%");
             }
         }
 
@@ -2215,7 +2223,7 @@ public class ExportController extends BaseController {
             String[] header = {"分部", "老师编号", "老师姓名", "服务周期", "课后训练(节)", "课后训练(人)", "课外训练(人)", "预计训练布置(人次)", "实际训练布置(人次)", "提交次数", "评价次数", "及时评价次数", "及时评价率", "作业点评率",
                     "训练布置", "训练点评", "训练提交率",
                     "提醒时间", "操作人"};
-            String[] body = {"organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "homeworkStuNum", "exerciseNum", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum","exercisesMessageNum","exercisesMessageTimelyNum","exercisesMessageTimelyRate","exercisesMessageRate",
+            String[] body = {"organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "homeworkStuNum", "exerciseNum", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum", "exercisesMessageNum", "exercisesMessageTimelyNum", "exercisesMessageTimelyRate", "exercisesMessageRate",
                     "expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "submitRate",
                     "remindDate", "operatorName"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
@@ -2246,7 +2254,7 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        organId = organizationService.getEmployeeOrgan(sysUser.getId(),organId,sysUser.getIsSuperAdmin());
+        organId = organizationService.getEmployeeOrgan(sysUser.getId(), organId, sysUser.getIsSuperAdmin());
         List<IndexErrorDataExportDto> result = indexService.exportIndexErrData(organId, errorType);
         if (CollectionUtils.isEmpty(result)) {
             throw new BizException("没有可导出的记录");
@@ -2330,7 +2338,7 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        queryInfo.setOrganIds(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganIds(),sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganIds(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganIds(), sysUser.getIsSuperAdmin()));
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         List<IndexErrorDataExportDto> result = indexErrDataRecordService.queryRecord(queryInfo).getRows();
@@ -2367,7 +2375,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "老师列表导出")
     @RequestMapping("export/teacherList")
     @PreAuthorize("@pcs.hasPermissions('export/teacherList')")
-    public void exportTeacherList(TeacherQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void exportTeacherList(TeacherQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -2382,9 +2390,9 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {"老师编号", "老师名称", "所属分部", "老师状态", "专业技能", "联系电话", "工作类型",
-                    "员工状态", "已开小课", "试听课安排", "开放网管课","转正日期","离职日期"};
+                    "员工状态", "已开小课", "试听课安排", "开放网管课", "转正日期", "离职日期"};
             String[] body = {"id", "realName", "organName", "lockFlag == 0?'正常':lockFlag == 1?'冻结':'锁定'", "splitSubjectName", "phone", "jobNature.msg",
-                    "isProbationPeriod.msg", "vipNum", "demoNum", "isSupportExtraPracticeLesson?'是':'否'","formalStaffDate","demissionDate"};
+                    "isProbationPeriod.msg", "vipNum", "demoNum", "isSupportExtraPracticeLesson?'是':'否'", "formalStaffDate", "demissionDate"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherPage-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2408,7 +2416,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "人力资源导出")
     @RequestMapping("export/employeeInfo")
     @PreAuthorize("@pcs.hasPermissions('export/employeeInfo')")
-    public void exportEmployeeInfo(EmployeeInfoQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void exportEmployeeInfo(EmployeeInfoQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         List<EmployeeInfo> rows = employeeInfoService.queryPage(queryInfo).getRows();
@@ -2418,15 +2426,15 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {"编号", "姓名", "手机号", "微信",
-                    "声部", "所在城市", "工作意向", "信息来源","下次沟通时间","入职时间",
-                    "职位", "分部", "人员状态", "证件号码","年龄","性别",
-                    "银行卡", "开户行", "紧急联系人", "紧急联系人关系","紧急联系人电话","最后一次操作时间",
+                    "声部", "所在城市", "工作意向", "信息来源", "下次沟通时间", "入职时间",
+                    "职位", "分部", "人员状态", "证件号码", "年龄", "性别",
+                    "银行卡", "开户行", "紧急联系人", "紧急联系人关系", "紧急联系人电话", "最后一次操作时间",
                     "HRBP", "离职时间"
             };
             String[] body = {"id", "realName", "mobileNo", "wechatNo", "subjectName", "liveCity", "intentionCity",
-                    "sourceFrom", "nextVisitDateStr", "entryDateStr", "position.msg","organName","status.desc",
-                    "idCard", "age", "gender?'男':'女'", "bankCardNo","bankAddress","emergencyContactName",
-                    "emergencyContactRelation", "emergencyContactPhone", "updateTime", "hrbpName","resignationDateStr"};
+                    "sourceFrom", "nextVisitDateStr", "entryDateStr", "position.msg", "organName", "status.desc",
+                    "idCard", "age", "gender?'男':'女'", "bankCardNo", "bankAddress", "emergencyContactName",
+                    "emergencyContactRelation", "emergencyContactPhone", "updateTime", "hrbpName", "resignationDateStr"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2450,7 +2458,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部下教师关联的会员数据导出")
     @RequestMapping("export/organTeacherMemberStudentData")
     @PreAuthorize("@pcs.hasPermissions('export/organTeacherMemberStudentData')")
-    public void exportEmployeeInfo(TeacherServeQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void exportEmployeeInfo(TeacherServeQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         List<TeacherStudentDataDto> rows = teacherService.queryMemberStudentData(queryInfo).getRows();
@@ -2485,20 +2493,20 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部云教练学员数据预览导出")
     @RequestMapping("export/organStudentOverView")
     @PreAuthorize("@pcs.hasPermissions('export/organStudentOverView')")
-    public void organStudentOverView(OrganCloudStudyStudentDataQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void organStudentOverView(OrganCloudStudyStudentDataQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        String organIds = organizationService.getEmployeeOrgan(sysUser.getId(),"",sysUser.getIsSuperAdmin());
+        String organIds = organizationService.getEmployeeOrgan(sysUser.getId(), "", sysUser.getIsSuperAdmin());
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        if(StringUtils.isEmpty(organIds)){
+        if (StringUtils.isEmpty(organIds)) {
             throw new BizException("没有可导出的记录");
         }
         List<Integer> collect = Arrays.stream(organIds.split(",")).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
         List<Integer> ids = collect.stream().filter(id -> !OrganizationService.EXCLUDE_ORGAN_IDS.contains(id)).collect(Collectors.toList());
-        if(ids == null || ids.size() == 0){
+        if (ids == null || ids.size() == 0) {
             throw new BizException("没有可导出的记录");
         }
         List<EduOrganStudentDataDto> rows = studentService.queryOrganStudentOverView(ids, queryInfo).getRows();
@@ -2508,7 +2516,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {"排名", "分部", "学员总数", "目标人数", "活跃人数", "使用人数", "新增使用人数", "使用比例", "付费会员数", "付费会员占比"};
-            String[] body = {"index","organName", "totalStudentNum", "targetNum", "cloudStudyLivelyStudentNum", "cloudStudyUseStudentNum", "newCloudStudyStudentNum",
+            String[] body = {"index", "organName", "totalStudentNum", "targetNum", "cloudStudyLivelyStudentNum", "cloudStudyUseStudentNum", "newCloudStudyStudentNum",
                     "cloudStudyUseStudentDuty+\"%\"", "vipStudentNum", "vipStudentDuty+\"%\""};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
@@ -2533,20 +2541,20 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部云教练学员数据详情导出")
     @RequestMapping("export/cloudStudyStudentOverView")
     @PreAuthorize("@pcs.hasPermissions('export/cloudStudyStudentOverView')")
-    public void cloudStudyStudentOverView(OrganCloudStudyStudentDataQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void cloudStudyStudentOverView(OrganCloudStudyStudentDataQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        String organIds = organizationService.getEmployeeOrgan(sysUser.getId(),"",sysUser.getIsSuperAdmin());
+        String organIds = organizationService.getEmployeeOrgan(sysUser.getId(), "", sysUser.getIsSuperAdmin());
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        if(StringUtils.isEmpty(organIds)){
+        if (StringUtils.isEmpty(organIds)) {
             throw new BizException("没有可导出的记录");
         }
         List<Integer> collect = Arrays.stream(organIds.split(",")).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
         List<Integer> ids = collect.stream().filter(id -> !OrganizationService.EXCLUDE_ORGAN_IDS.contains(id)).collect(Collectors.toList());
-        if(ids == null || ids.size() == 0){
+        if (ids == null || ids.size() == 0) {
             throw new BizException("没有可导出的记录");
         }
         List<EduOrganStudentDataDto> rows = indexService.organStudentOverView(ids, queryInfo).getRows();
@@ -2555,7 +2563,7 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            String[] header = {"排名", "分部", "学员总数", "活跃人数", "活跃人数比", "当日使用人数", "当日新增使用人数", "使用人数占比", "付费会员数量","付费会员占比", "新增付费会员"};
+            String[] header = {"排名", "分部", "学员总数", "活跃人数", "活跃人数比", "当日使用人数", "当日新增使用人数", "使用人数占比", "付费会员数量", "付费会员占比", "新增付费会员"};
             String[] body = {"index", "organName", "totalStudentNum", "cloudStudyLivelyStudentNum", "cloudStudyLivelyStudentDuty+\"%\"",
                     "cloudStudyUseStudentNum", "newCloudStudyStudentNum", "cloudStudyUseStudentDuty+\"%\"", "vipStudentNum", "vipStudentDuty+\"%\"", "newMemberStudentNum"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
@@ -2581,7 +2589,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部云教练学员训练数据导出")
     @RequestMapping("export/cloudStudyStudentTrainData")
     @PreAuthorize("@pcs.hasPermissions('export/cloudStudyStudentTrainData')")
-    public void cloudStudyStudentTrainData(StudentQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void cloudStudyStudentTrainData(StudentQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -2589,7 +2597,7 @@ public class ExportController extends BaseController {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
 
-        List<EduOrganStudentListExportDto> rows = ((PageInfo<EduOrganStudentListExportDto>)studentService.exportOrganStudentData(queryInfo).getDetail()).getRows();
+        List<EduOrganStudentListExportDto> rows = ((PageInfo<EduOrganStudentListExportDto>) studentService.exportOrganStudentData(queryInfo).getDetail()).getRows();
         if (CollectionUtils.isEmpty(rows)) {
             throw new BizException("没有可导出的记录");
         }
@@ -2599,12 +2607,12 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            String[] header = {"学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "指导老师", "声部", "是否有小课",
+            String[] header = {"学员编号", "学员", "年级", "班级", "手机号", "是否新用户", "是否激活", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "指导老师", "声部", "是否有小课",
                     "训练次数", "训练天数", "训练平均时长", "会员有效期", "是否服务", "是否运营", "是否云教练活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"};
-            String[] body = {"studentId", "studentName","currentGradeNum","currentClass", "phone", "newUser?\"是\":\"否\"", "enable?\"是\":\"否\"",
+            String[] body = {"studentId", "studentName", "currentGradeNum", "currentClass", "phone", "newUser?\"是\":\"否\"", "enable?\"是\":\"否\"",
                     "cloudStudyUseTime+\"分钟\"", "cloudStudyRunningDays+\"天\"", "musicGroupNames", "educationName", "schoolNames",
                     "teacherName", "subjectName", "hasVipGroup>0?\"是\":\"否\"", "cloudStudyUseNum+\"次\"", "cloudStudyUseDays+\"天\"",
-                    "cloudStudyUseAvgTime+\"分钟\"", "membershipEndTime", "serviceTag>0?\"是\":\"否\"", "operatingTag>0?\"是\":\"否\"","countFlag == null?'否':countFlag == 1?'是':'否'","activeAmount",
+                    "cloudStudyUseAvgTime+\"分钟\"", "membershipEndTime", "serviceTag>0?\"是\":\"否\"", "operatingTag>0?\"是\":\"否\"", "countFlag == null?'否':countFlag == 1?'是':'否'", "activeAmount",
                     "carePackage>0?carePackage>1?\"已使用\":\"可用\":\"不可用\"", "comeOnPackage>0?comeOnPackage>1?\"已使用\":\"可用\":\"不可用\"",
                     "notStartCourseNum", "notStartVipCourseNum", "notStartPracticeCourseNum"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
@@ -2630,24 +2638,24 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部云教练活动统计数据导出")
     @RequestMapping("export/countCloudTeacherActive")
     @PreAuthorize("@pcs.hasPermissions('export/countCloudTeacherActive')")
-    public void countCloudTeacherActive(CloudTeacherActiveQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void countCloudTeacherActive(CloudTeacherActiveQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        String organIds = organizationService.getEmployeeOrgan(sysUser.getId(),"",sysUser.getIsSuperAdmin());
+        String organIds = organizationService.getEmployeeOrgan(sysUser.getId(), "", sysUser.getIsSuperAdmin());
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        if(StringUtils.isEmpty(organIds)){
+        if (StringUtils.isEmpty(organIds)) {
             throw new BizException("没有可导出的记录");
         }
         List<Integer> collect = Arrays.stream(organIds.split(",")).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
         List<Integer> ids = collect.stream().filter(id -> !OrganizationService.EXCLUDE_ORGAN_IDS.contains(id)).collect(Collectors.toList());
-        if(ids == null || ids.size() == 0){
+        if (ids == null || ids.size() == 0) {
             throw new BizException("没有可导出的记录");
         }
         Object object = studentService.countCloudTeacherActive(ids, queryInfo).get("resultList");
-        if(object == null){
+        if (object == null) {
             throw new BizException("没有可导出的记录");
         }
         List<CloudTeacherActiveTargetDto> rows = (List<CloudTeacherActiveTargetDto>) object;
@@ -2680,7 +2688,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "云教练活动统计详情")
     @RequestMapping("export/countCloudTeacherActiveDetail")
     @PreAuthorize("@pcs.hasPermissions('export/countCloudTeacherActiveDetail')")
-    public void countCloudTeacherActiveDetail(CloudTeacherActiveQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+    public void countCloudTeacherActiveDetail(CloudTeacherActiveQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -2694,9 +2702,9 @@ public class ExportController extends BaseController {
         //获取分部年级列表
         Map<Integer, String> gradeList = organizationService.getGradeList(Integer.parseInt(queryInfo.getOrganIds()));
         for (CloudTeacherActiveTargetDetailDto row : rows) {
-            if(StringUtils.isNotEmpty(row.getCurrentGradeNum())){
+            if (StringUtils.isNotEmpty(row.getCurrentGradeNum())) {
                 String grade = gradeList.get(Integer.parseInt(row.getCurrentGradeNum()));
-                if(StringUtils.isNotEmpty(grade)){
+                if (StringUtils.isNotEmpty(grade)) {
                     row.setCurrentGradeNum(grade);
                 }
             }
@@ -2743,9 +2751,9 @@ public class ExportController extends BaseController {
 //                    row.setSubjectName("无");
 //                }
 //            }
-            String[] header = {"学员姓名","联系电话","年级","班级","老师推荐专业","是否在学习某件乐器","目前所学乐器","报名参加管乐团家长会了解相关情况","备注"};
-            String[] body = {"userName","phone","currentGrade","currentClass","subjectName == null?'无':subjectName","musicalInstrumentsLearning?'是':'否'",
-                    "musicalInstrumentsName","joinParentMeeting?'是':'否'","remark"};
+            String[] header = {"学员姓名", "联系电话", "年级", "班级", "老师推荐专业", "是否在学习某件乐器", "目前所学乐器", "报名参加管乐团家长会了解相关情况", "备注"};
+            String[] body = {"userName", "phone", "currentGrade", "currentClass", "subjectName == null?'无':subjectName", "musicalInstrumentsLearning?'是':'否'",
+                    "musicalInstrumentsName", "joinParentMeeting?'是':'否'", "remark"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2778,10 +2786,10 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            String[] header = {"分部","老师编号","老师姓名","预计安排(人次)","实际安排(人次)","布置率(%)","提交人数","点评次数","点评率(%)","及时点评次数","及时点评率(%)"};
-            String[] body = {"organName","teacherId","teacherName","expectExercisesNum","actualExercisesNum",
-                    "100 * actualExercisesNum / expectExercisesNum","exercisesReplyNum","exercisesMessageNum",
-                    "100 * exercisesMessageNum / exercisesReplyNum", "exercisesMessageTimelyNum","100 * exercisesMessageTimelyNum / exercisesReplyNum"};
+            String[] header = {"分部", "老师编号", "老师姓名", "预计安排(人次)", "实际安排(人次)", "布置率(%)", "提交人数", "点评次数", "点评率(%)", "及时点评次数", "及时点评率(%)"};
+            String[] body = {"organName", "teacherId", "teacherName", "expectExercisesNum", "actualExercisesNum",
+                    "100 * actualExercisesNum / expectExercisesNum", "exercisesReplyNum", "exercisesMessageNum",
+                    "100 * exercisesMessageNum / exercisesReplyNum", "exercisesMessageTimelyNum", "100 * exercisesMessageTimelyNum / exercisesReplyNum"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, list);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherPerformanceIndicator-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2801,6 +2809,7 @@ public class ExportController extends BaseController {
             }
         }
     }
+
     @Resource
     private TempBuyFreeLiveTheoryCourseDao tempBuyFreeLiveTheoryCourseDao;
 
@@ -2819,19 +2828,19 @@ public class ExportController extends BaseController {
     })
     @GetMapping("export/exportBuyFreeLiveTheoryCourseList")
     @PreAuthorize("@pcs.hasPermissions('export/exportBuyFreeLiveTheoryCourseList')")
-    public void exportBuyFreeLiveTheoryCourseList(TempBuyFreeLiveTheoryCourse tempBuyFreeLiveTheoryCourse, HttpServletResponse response) throws IOException{
+    public void exportBuyFreeLiveTheoryCourseList(TempBuyFreeLiveTheoryCourse tempBuyFreeLiveTheoryCourse, HttpServletResponse response) throws IOException {
         List<TempBuyFreeLiveTheoryCourse> list = tempBuyFreeLiveTheoryCourseDao.list(tempBuyFreeLiveTheoryCourse);
-        if (list.size() <= 0) {
-            return;
+        if (CollectionUtils.isEmpty(list)) {
+            throw new BizException("没有可导出的记录");
         }
 
-        list.stream().forEach(o->{
+        list.stream().forEach(o -> {
             String recommendLevel = o.getRecommendLevel();
-            if(StringUtils.isEmpty(recommendLevel)){
+            if (StringUtils.isEmpty(recommendLevel)) {
                 return;
             }
             LevelEnum levelEnum = LevelEnum.valueOf(recommendLevel);
-            if(null!= levelEnum){
+            if (null != levelEnum) {
                 o.setRecommendLevel(levelEnum.getMsg());
             }
         });
@@ -2839,8 +2848,67 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {
-                    "ID","用户ID","购买学生姓名","老师推荐级别(一级/二级/三级)"};
-            String[] body = {"id","userId","studentName","recommendLevel"};
+                    "ID", "用户ID", "购买学生姓名", "老师推荐级别(一级/二级/三级)"};
+            String[] body = {"id", "userId", "studentName", "recommendLevel"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, list);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=BuyFreeLiveTheoryCourse-" + DateUtil.getDate(new Date()) + ".xls");
+
+            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();
+                }
+            }
+        }
+    }
+
+    @Autowired
+    private SysMusicScoreService sysMusicScoreService;
+
+    @ApiOperation(value = "教学伴奏--列表导出")
+    @GetMapping("export/exportMusicScoreList")
+    @PreAuthorize("@pcs.hasPermissions('export/exportMusicScoreList')")
+    public void exportMusicScoreList(SysExamSongQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        List<SysMusicScore> list = sysMusicScoreService.queryMusicScoreAll(queryInfo);
+        if (CollectionUtils.isEmpty(list)) {
+            throw new BizException("没有可导出的记录");
+        }
+
+        list.stream().forEach(o -> {
+            ExamSongTypeEnum type = o.getType();
+            if (null != type) {
+                o.setTypeName(type.getMsg());
+            }
+            String rankIds = o.getRankIds();
+            if (StringUtils.isNotEmpty(rankIds) && rankIds.trim().equals("1")) {
+                o.setRankIds("收费");
+            } else {
+                o.setRankIds("免费");
+            }
+            if (null != o.getIsOpenMetronome() && o.getIsOpenMetronome()) {
+                o.setOpenMetronomeName("播放");
+            } else {
+                o.setOpenMetronomeName("不播放");
+            }
+            String accompaniment = "含节拍器:" + (StringUtils.isEmpty(o.getAccompanimentMetronomeUrl()) ? "否" : "是") + " 不含节拍器:" +
+                    (StringUtils.isEmpty(o.getAccompanimentUrl()) ? "否" : "是");
+            o.setMuseScoreMemo(accompaniment);
+            o.setShowName(o.getShowFlag() == 1 ? "启用" : "停用");
+        });
+
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] header = {
+                    "编号", "名称", "所属声部", "类型", "分类", "是否收费", "节拍器", "是否上传伴奏", "伴奏状态", "上传人", "上传时间"};
+            String[] body = {"id", "name", "subjectName", "typeName", "categoriesName", "rankIds", "openMetronomeName", "museScoreMemo","showName","createUserName","createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, list);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=BuyFreeLiveTheoryCourse-" + DateUtil.getDate(new Date()) + ".xls");

+ 0 - 21
mec-web/src/main/java/com/ym/mec/web/controller/SysMusicScoreController.java

@@ -26,10 +26,6 @@ public class SysMusicScoreController extends BaseController {
 
     @Autowired
     private SysMusicScoreService sysMusicScoreService;
-    @Autowired
-    private OrganizationService organizationService;
-    @Autowired
-    private SysMusicScoreCategoriesService sysMusicScoreCategoriesService;
 
     @ApiOperation(value = "修改")
     @PostMapping("/update")
@@ -72,23 +68,6 @@ public class SysMusicScoreController extends BaseController {
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('sysMusicScore/queryPage')")
     public Object queryPage(SysExamSongQueryInfo queryInfo) {
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
-        if(queryInfo.getCategoriesId() != null){
-        	
-        	List<Integer> categoriesIdList = new ArrayList<>();
-			Integer categoriesId = Integer.parseInt(queryInfo.getCategoriesId());
-			
-			SysMusicScoreCategories sysMusicScoreCategories = sysMusicScoreCategoriesService.get(categoriesId);
-			
-			if(sysMusicScoreCategories == null){
-				throw new BizException("分类找不到");
-			}
-			categoriesIdList.add(categoriesId);
-			sysMusicScoreCategories = sysMusicScoreCategoriesService.getChildTree(sysMusicScoreCategories);
-			getAllCategoryIdList(categoriesIdList, sysMusicScoreCategories.getSysMusicScoreCategoriesList());
-			
-			queryInfo.setCategoriesIdList(categoriesIdList);
-        }
         return succeed(sysMusicScoreService.queryMusicScorePage(queryInfo));
     }