Browse Source

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into oa_2022-03-29

zouxuan 3 years ago
parent
commit
3f6577cd1c

+ 18 - 6
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -708,10 +708,22 @@ public class UserChannelContext {
 		if (musicXmlNote.getFrequency() == -1) {// 休止符
 			return chunkList.stream().filter(t -> t.getFrequency() > MIN_FREQUECY).count() <= 1;
 		}
-		
+
 		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
+		//取出前面忽略的块
+		List<ChunkAnalysis> ignoreHeaderList = chunkAnalysisList.subList(0, startIndex);
+		if(ignoreHeaderList != null && ignoreHeaderList.size() > 0){
+			for(ChunkAnalysis ca : ignoreHeaderList){
+				if(ca.getFrequency() < MIN_FREQUECY){
+					firstChunkAnalysis.setFrequency(-1);
+					break;
+				}
+			}
+		}
 		
-		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).findFirst();
+		double firstChunkStartTime = firstChunkAnalysis.getStartTime();
+		
+		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkStartTime)).findFirst();
 
 		ChunkAnalysis lastChunkAnalysis = null;
 		if (chunkAnalysisOptional.isPresent()) {
@@ -730,7 +742,7 @@ public class UserChannelContext {
 		
 		NoteFrequencyRange noteFrequencyRange = null;
 		ChunkAnalysis chunkAnalysis = null;
-		boolean tempo = false;
+		boolean tempo = true;
 		//boolean isContinue = true;
 		//int unplayedSize = 0;
 		int firstPeakIndex = -1;
@@ -771,9 +783,9 @@ public class UserChannelContext {
 			totalTimes = chunkList.size();
 		}
 		
-		if (maxTimes / totalTimes < hardLevel.getIntegrityRange()) {
+		if (maxTimes * 100 / totalTimes < hardLevel.getIntegrityRange()) {
 			tempo = false;
-			LOGGER.debug("节奏错误原因:不是同一个音");
+			LOGGER.debug("节奏错误原因:信号分堆后的最大数量不足指定的完成比例");
 		}
 		
 		/**
@@ -817,7 +829,7 @@ public class UserChannelContext {
 		
 		if (tempo) {
 			// 判断进入时间点
-			if(firstPeakIndex * 100 /chunkAnalysisList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){
+			if(firstPeakIndex * 100 /chunkList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){
 				tempo = false;
 				LOGGER.debug("节奏错误原因:进入时间点太晚");
 			}else{

+ 7 - 17
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -59,31 +59,21 @@ public class NewsController extends BaseController {
 	@ApiOperation("资讯列表分页查询")
 	@GetMapping(value = "/list")
 	public Object getList(NewsInformationQueryInfo queryInfo) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		
 		if(queryInfo.getType() == 6 || queryInfo.getType() == 4){
 			queryInfo.setTenantId(-1);
 		}
-
 		String clientId = queryInfo.getClientId();
-		
-		if (!StringUtils.equalsIgnoreCase("student", clientId)) {
-			queryInfo.setOrganIdList(webFeignService.queryOrganIdByUserId(user.getId(), clientId));
-		} else {
-			if (user == null || user.getId() == null) {
-				queryInfo.setOrganId(43);
-			} else {
-				queryInfo.setOrganId(user.getOrganId());
-			}
-		}
-
-		List<Integer> excludeIds = new ArrayList<>();
 
+		SysUser user = sysUserFeignService.queryUserInfo();
 		if (user == null || user.getId() == null) {
 			queryInfo.setOrganId(43);
-			queryInfo.setExcludeIds(excludeIds);
+			queryInfo.setExcludeIds(new ArrayList<>());
 		} else {
-			queryInfo.setOrganId(user.getOrganId());
+			if (!StringUtils.equalsIgnoreCase("student", clientId)) {
+				queryInfo.setOrganIdList(webFeignService.queryOrganIdByUserId(user.getId(), clientId));
+			}else {
+				queryInfo.setOrganId(user.getOrganId());
+			}
 		}
 		
 		Map<String, Object> params = new HashMap<String, Object>();

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

@@ -597,4 +597,6 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     List<BaseNameDto> queryClassTeacher(@Param("studentIds") List<Integer> studentIds);
 
     List<BaseNameDto> queryFirstNotStartTeacher(@Param("studentIds") List<Integer> studentIds, @Param("groupType") String groupType);
+
+    List<ExportVipStudentCourseManageDto> queryVipStudentCourseManage(@Param("organId") String organId, @Param("tenantId") Integer tenantId);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportStudentCourseInfoDto.java

@@ -34,6 +34,14 @@ public class ExportStudentCourseInfoDto {
     //上次课时
     private String beforeClassNum;
 
+    //近30天消耗课时
+    private Integer consumerTimes;
+
+    //是否活跃
+    private String activeFlag;
+
+    private String courseType;
+
     //年纪
     private Integer grade;
 

+ 178 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportVipStudentCourseManageDto.java

@@ -0,0 +1,178 @@
+package com.ym.mec.biz.dal.dto;
+
+public class ExportVipStudentCourseManageDto {
+    //分部
+    private String organName;
+
+    //学员
+    private String username;
+
+    //学员编号
+    private Integer userId;
+
+    //老师
+    private String teacherName;
+
+    //老师编号
+    private Integer teacherId;
+
+    //教务
+    private String eduName;
+
+    //教务编号
+    private Integer eduId;
+
+    //声部课老师
+    private String subjectTeacherName;
+
+    //声部课老师
+    private Integer subjectTeacherId;
+
+    //近30天消耗课时
+    private Integer consumerTimes;
+
+    //总课时
+    private Integer totalClassNum;
+
+    //已完成课次
+    private Integer completedTimes;
+
+    //剩余课次
+    private Integer remaindTimes;
+
+    //最近上课时间
+    private String lastCourseTime;
+
+    //是否活跃
+    private String activeFlag;
+
+    private String courseType;
+
+    public String getSubjectTeacherName() {
+        return subjectTeacherName;
+    }
+
+    public void setSubjectTeacherName(String subjectTeacherName) {
+        this.subjectTeacherName = subjectTeacherName;
+    }
+
+    public Integer getSubjectTeacherId() {
+        return subjectTeacherId;
+    }
+
+    public void setSubjectTeacherId(Integer subjectTeacherId) {
+        this.subjectTeacherId = subjectTeacherId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getEduName() {
+        return eduName;
+    }
+
+    public void setEduName(String eduName) {
+        this.eduName = eduName;
+    }
+
+    public Integer getEduId() {
+        return eduId;
+    }
+
+    public void setEduId(Integer eduId) {
+        this.eduId = eduId;
+    }
+
+    public Integer getConsumerTimes() {
+        return consumerTimes;
+    }
+
+    public void setConsumerTimes(Integer consumerTimes) {
+        this.consumerTimes = consumerTimes;
+    }
+
+    public Integer getTotalClassNum() {
+        return totalClassNum;
+    }
+
+    public void setTotalClassNum(Integer totalClassNum) {
+        this.totalClassNum = totalClassNum;
+    }
+
+    public Integer getCompletedTimes() {
+        return completedTimes;
+    }
+
+    public void setCompletedTimes(Integer completedTimes) {
+        this.completedTimes = completedTimes;
+    }
+
+    public Integer getRemaindTimes() {
+        return remaindTimes;
+    }
+
+    public void setRemaindTimes(Integer remaindTimes) {
+        this.remaindTimes = remaindTimes;
+    }
+
+    public String getLastCourseTime() {
+        return lastCourseTime;
+    }
+
+    public void setLastCourseTime(String lastCourseTime) {
+        this.lastCourseTime = lastCourseTime;
+    }
+
+    public String getActiveFlag() {
+        return activeFlag;
+    }
+
+    public void setActiveFlag(String activeFlag) {
+        this.activeFlag = activeFlag;
+    }
+
+    public String getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(String courseType) {
+        this.courseType = courseType;
+    }
+}

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

@@ -72,6 +72,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
 //    QUESTIONNAIRE_USER_RESULT("QUESTIONNAIRE_USER_RESULT", "问卷调查导出"),
     STUDENT_VIP_COURSE_INFO("STUDENT_VIP_COURSE_INFO", "VIP课学员课程信息导出"),
     STUDENT_MUSIC_THEORY_COURSE_INFO("STUDENT_MUSIC_THEORY_COURSE_INFO", "乐理课学员课程信息导出"),
+    VIP_STUDENT_COURSE_MANAGE("VIP_STUDENT_COURSE_MANAGE", "vip学员课程管理"),
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出");
 
     private String code;

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

@@ -8,7 +8,8 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	ROUTE_ORDER(2, "财务管理"),
 	STUDENT_VIP_PRACTICE(3, "VIP网管课耗导出"),
 	STUDENT_MUSIC_THEORY_COURSE_INFO(4, "网管课学员课程信息导出"),
-	STUDENT_VIP_COURSE_INFO(5, "VIP课学员课程信息导出");
+	STUDENT_VIP_COURSE_INFO(5, "VIP课学员课程信息导出"),
+	VIP_STUDENT_COURSE_MANAGE(6, "vip学员课程管理");
 
 	private Integer code;
 

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

@@ -258,6 +258,9 @@ public interface ExportService {
     //学员小课记录导出
     HttpResponseResult exportStudentVipCourseInfo(Map<String, Object> info, List<String> headColumns);
 
+    //vip学员课程管理
+    HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info, List<String> headColumns);
+
     //学员小课记录导出
     HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info, List<String> headColumns);
 
@@ -279,4 +282,6 @@ public interface ExportService {
     void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId,List<String> headColumns) throws FileNotFoundException;
 
     void queryStudentCourseInfo(String organId, Integer tenantId, String vip, ManagerDownload managerDownload, List<String> headColumns,ExportEnum exportEnum) throws FileNotFoundException;
+
+    void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) throws FileNotFoundException;
 }

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

@@ -19,6 +19,8 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * @return
      */
     List<Organization> queryEmployeeOrgan() throws Exception;
+    
+    List<Organization> queryAllOrganWithNoAuth(Integer tenantId);
 
     /**
      * 获取员工坐在分部列表
@@ -69,6 +71,8 @@ public interface OrganizationService extends BaseService<Integer, Organization>
     List<Organization> findAllOrgans(Integer tenantId);
 
     List<Organization> findOrgans(List<Integer> organIds,Integer tenantId);
+    
+    List<Organization> queryEmployeeOrgan(String organId);
 
     /**
     * @description: 校验当前用户是否只有教务老师角色,并给教务老师角色赋值

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

@@ -2147,12 +2147,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 								backTeachingTeacherIdList.addAll(integerAndIntegerListDto.getIds());
 							}
 						}
-                        if (CollectionUtils.isEmpty(backTeachingTeacherIdList)) {
-                            IntegerAndIntegerListDto integerAndIntegerListDto = classGroupTeachingTeacherMap.get(backCourseSchedule.getClassGroupId().longValue());
-                            if (Objects.nonNull(integerAndIntegerListDto)) {
-//								backTeachingTeacherIdList.addAll(integerAndIntegerListDto.getIds());
-                            }
-                        }
+//                        if (CollectionUtils.isEmpty(backTeachingTeacherIdList)) {
+//                            IntegerAndIntegerListDto integerAndIntegerListDto = classGroupTeachingTeacherMap.get(backCourseSchedule.getClassGroupId().longValue());
+//                            if (Objects.nonNull(integerAndIntegerListDto)) {
+////								backTeachingTeacherIdList.addAll(integerAndIntegerListDto.getIds());
+//                            }
+//                        }
 
 						preTeachingTeacherIdList.add(preCourseSchedule.getActualTeacherId());
 						backTeachingTeacherIdList.add(backCourseSchedule.getActualTeacherId());

+ 57 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -338,6 +338,7 @@ public class ExportServiceImpl implements ExportService {
         exportManageFuncMap.put(ExportEnum.STUDENT_VIP_PRACTICE, (info,headColumns) -> exportStudentVipPractice(info,headColumns));
         exportManageFuncMap.put(ExportEnum.STUDENT_VIP_COURSE_INFO, (info,headColumns) -> exportStudentVipCourseInfo(info,headColumns));
         exportManageFuncMap.put(ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO, (info,headColumns) -> exportStudentMusicTheoryCourseInfo(info,headColumns));
+        exportManageFuncMap.put(ExportEnum.VIP_STUDENT_COURSE_MANAGE, (info,headColumns) -> exportVipStudentCourseManage(info,headColumns));
 
     }
 
@@ -1444,6 +1445,26 @@ public class ExportServiceImpl implements ExportService {
         return succeed;
     }
 
+    //vip学员课程管理
+    @Override
+    public HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info, List<String> headColumns){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        String organId = organizationService.getEmployeeOrgan(sysUser.getId(),getParam(info, "organId", String.class),sysUser.getIsSuperAdmin());
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.VIP_STUDENT_COURSE_MANAGE,sysUser.getId());
+        Integer tenantId = TenantContextHolder.getTenantId();
+        ExecutorService executor = Executors.newCachedThreadPool();
+        CompletableFuture.runAsync(()->{
+            try {
+                this.queryVipStudentCourseManage(organId, tenantId,managerDownload,headColumns,ExportEnum.VIP_STUDENT_COURSE_MANAGE);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        },executor);
+        HttpResponseResult<Object> succeed = BaseController.succeed();
+        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
+        return succeed;
+    }
+
     //学员小课记录导出
     @Override
     public HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info, List<String> headColumns){
@@ -2674,4 +2695,40 @@ public class ExportServiceImpl implements ExportService {
             }
         }
     }
+
+    @Override
+    public void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) throws FileNotFoundException {
+        List<ExportVipStudentCourseManageDto> studentCourseInfoDtos = courseScheduleStudentPaymentDao.queryVipStudentCourseManage(organId,tenantId);
+        String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath();
+        File file = new File(basePath + "/" + managerDownload.getName());
+        FileOutputStream fileOutputStream = new FileOutputStream(file);
+
+        HSSFWorkbook workbook = null;
+        try {
+            Map<String, String> headMap = getExportMap(new ExportDto(exportEnum, headColumns));
+            String[] header = headMap.keySet().toArray(new String[headMap.keySet().size()]);
+            String[] body = headMap.values().toArray(new String[headMap.keySet().size()]);
+            workbook = POIUtil.exportExcel(header, body, studentCourseInfoDtos);
+            workbook.write(fileOutputStream);
+            fileOutputStream.getFD().sync();
+            fileOutputStream.close();
+
+            String folder = "download/" + UploadUtil.getFileFloder();
+            String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, folder, file);
+            //把记录插入下载表
+            managerDownload.setFileUrl(url);
+            managerDownload.setStatus(1);
+            managerDownloadDao.update(managerDownload);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                fileOutputStream.close();
+                workbook.close();
+                file.delete();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }

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

@@ -80,6 +80,11 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	}
 
 	@Override
+	public List<Organization> queryAllOrganWithNoAuth(Integer tenantId) {
+		return organizationDao.findAllOrgans(tenantId);
+	}
+
+	@Override
 	public List<Organization> queryEmployeeOrganByUser(){
 		return this.queryEmployeeOrgan();
 	}
@@ -171,6 +176,11 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	}
 
     @Override
+	public List<Organization> queryEmployeeOrgan(String organId) {
+		return organizationDao.queryEmployeeOrgan(organId);
+	}
+
+	@Override
     public <T extends EducationBaseQueryInfo> T onlyEducation(T queryInfo) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {

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

@@ -180,7 +180,11 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		StatDto result = new StatDto();
 		MusicCompareRankingDto head = new MusicCompareRankingDto();
 		head.setUserId(queryInfo.getUserId());
-		List<MusicCompareRankingDto> userTrainStat = sysMusicCompareWeekDataDao.getUserTrainStat(queryInfo.getStartTime(), queryInfo.getOrderType(), Objects.isNull(queryInfo.getHeardLevel())?null:queryInfo.getHeardLevel().getCode(),queryInfo.getTeacherId(), queryInfo.getTenantId());
+		List<MusicCompareRankingDto> userTrainStat = sysMusicCompareWeekDataDao.getUserTrainStat(queryInfo.getStartTime(),
+				queryInfo.getOrderType(),
+				Objects.isNull(queryInfo.getHeardLevel())?null:queryInfo.getHeardLevel().getCode(),
+				queryInfo.getOrganId(),
+				queryInfo.getTenantId());
 		List<MusicCompareRankingDto> detail = new ArrayList<>();
 
 		List<Integer> studentIds = userTrainStat.stream().limit(10).map(MusicCompareRankingDto::getUserId).collect(Collectors.toList());

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

@@ -998,4 +998,74 @@
 		</foreach>
 		GROUP BY cssp.user_id_
 	</select>
+	<resultMap id="ExportVipStudentCourseManageDto" type="com.ym.mec.biz.dal.dto.ExportVipStudentCourseManageDto">
+		<result property="username" column="student_name_"/>
+		<result property="userId" column="id_"/>
+		<result property="totalClassNum" column="total_times_"/>
+		<result property="eduName" column="eduName"/>
+		<result property="eduId" column="eduId"/>
+		<result property="teacherName" column="teacherName"/>
+		<result property="teacherId" column="teacherId"/>
+		<result property="organName" column="organ_name_"/>
+		<result property="courseType" column="course_type_"/>
+		<result property="activeFlag" column="activeFlag"/>
+		<result property="completedTimes" column="completed_times_"/>
+		<result property="consumerTimes" column="consumerTimes"/>
+		<result property="lastCourseTime" column="last_course_time_"/>
+		<result property="remaindTimes" column="remaind_times_"/>
+		<result property="subjectTeacherName" column="subjectTeacherName"/>
+		<result property="subjectTeacherId" column="subjectTeacherId"/>
+	</resultMap>
+    <select id="queryVipStudentCourseManage" resultMap="ExportVipStudentCourseManageDto">
+		SELECT a.organ_name_ ,a.student_name_, a.id_,a.course_type_,a.total_times_,
+		a.completed_times_, a.remaind_times_, a.last_course_time_,
+		ifnull(b.vip_teacher_name_,a.teacher_name_) teacherName,ifnull(b.actual_teacher_id_,a.teacher_id_) teacherId,
+		ifnull(b.edu_teacher_name_,a.edu_teacher_name_) eduName,ifnull(b.educational_teacher_id_,a.edu_teacher_id_) eduId,
+		c.real_name_ subjectTeacherName,c.actual_teacher_id_ subjectTeacherId,ifnull(d.month_count_,0) consumerTimes,
+		       CASE WHEN d.month_count_ > 2 THEN '是' ELSE '否' END activeFlag FROM
+		(
+		SELECT o.`name_` organ_name_,u.`username_` student_name_,vgc.`name_` course_type_,u.`id_` ,
+		count(vg.`online_classes_num_` + vg.`offline_classes_num_` )  total_times_,
+		sum(case when cs.`status_` != 'NOT_START' then 1 else 0 end) completed_times_,
+		sum(case when cs.`status_` = 'NOT_START' then 1 else 0 end) remaind_times_,
+		max(case when cs.`status_` != 'NOT_START' then cs.`class_date_` end) last_course_time_ ,
+		vg.`vip_group_category_id_` ,tu.id_ teacher_id_ ,tu.`real_name_` teacher_name_,edu.`id_` edu_teacher_id_,edu.`real_name_` edu_teacher_name_
+		FROM `course_schedule_student_payment` cssp
+		LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
+		LEFT JOIN `vip_group` vg on vg.`id_` = cssp.`music_group_id_` AND cssp.`group_type_` = 'VIP'
+		LEFT JOIN `vip_group_category` vgc on vgc.`id_` = vg.`vip_group_category_id_`
+		LEFT JOIN `sys_user` u on u.`id_` = cssp.`user_id_`
+		LEFT JOIN `sys_user` tu on tu.`id_` = vg.`user_id_`
+		LEFT JOIN `sys_user` edu on edu.`id_` = vg.`educational_teacher_id_`
+		LEFT JOIN `organization` o on o.`id_` = u.`organ_id_`
+		WHERE cssp.`group_type_` = 'VIP' AND cs.`del_flag_` != 1 AND cs.`is_lock_` != 1
+		AND u.`organ_id_` not in (38,43,56,36) AND vg.`group_status_` in (2, 4) AND u.tenant_id_ = #{tenantId}
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(u.`organ_id_`,#{organId})
+		</if>
+		GROUP BY cssp.`user_id_` ,vg.`vip_group_category_id_`
+		) a LEFT JOIN
+		(
+		SELECT cssp.`user_id_` ,cs.`actual_teacher_id_`,tu.`real_name_` vip_teacher_name_,vg.`educational_teacher_id_` ,edu.`real_name_` edu_teacher_name_,vg.`vip_group_category_id_`     FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
+		LEFT JOIN `sys_user` tu on tu.`id_` = cs.`actual_teacher_id_`
+		LEFT JOIN `vip_group` vg on vg.`id_` = cssp.`music_group_id_`
+		LEFT JOIN `sys_user` edu on edu.`id_` = vg.`educational_teacher_id_`
+		WHERE cs.`status_` = 'OVER' AND cssp.`group_type_` = 'VIP'
+		GROUP BY cssp.`user_id_`,vg.`vip_group_category_id_`
+		) b on a.id_ = b.user_id_ and a.vip_group_category_id_ = b.vip_group_category_id_
+		LEFT JOIN
+		(
+		SELECT cssp.`user_id_` ,cs.`actual_teacher_id_`,tu.`real_name_` FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
+		LEFT JOIN `sys_user` tu on tu.`id_` = cs.`actual_teacher_id_`
+		WHERE cs.`status_` = 'OVER' and cs.`type_` = 'SINGLE'
+		GROUP BY cssp.`user_id_`
+		) c on b.user_id_ = c.user_id_
+		LEFT JOIN
+		(
+		SELECT cssp.`user_id_` ,vg.`vip_group_category_id_` ,ifnull(count(cssp.`id_`),0) month_count_  FROM `course_schedule_student_payment` cssp LEFT JOIN `course_schedule` cs on cssp.`course_schedule_id_` = cs.`id_`
+		LEFT JOIN `vip_group` vg on vg.`id_` = cssp.`music_group_id_`
+		WHERE cs.`status_` = 'OVER' and cssp.`group_type_` = 'VIP' AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) &lt; cs.`class_date_`
+		GROUP BY cssp.`user_id_` ,vg.`vip_group_category_id_`
+		) d on b.user_id_ = d.user_id_ and a.vip_group_category_id_ = d.vip_group_category_id_
+	</select>
 </mapper>

+ 26 - 9
mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java

@@ -1,18 +1,23 @@
 package com.ym.mec.web.controller.education;
 
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.service.CooperationOrganService;
-import com.ym.mec.biz.service.OrganizationService;
-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 java.util.List;
+
 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.List;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.service.CooperationOrganService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 
 @RequestMapping("eduOrganization")
 @Api(tags = "分部服务")
@@ -23,16 +28,28 @@ public class EduOrganizationController extends BaseController {
     private OrganizationService organizationService;
     @Autowired
     private CooperationOrganService cooperationOrganService;
+    
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "获取员工所在分部列表")
     @GetMapping("/queryAllOrgan")
-    public Object queryAllOrgan() throws Exception {
-        return succeed(organizationService.queryEmployeeOrgan());
+    public HttpResponseResult<List<Organization>> queryAllOrgan() throws Exception {
+
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null || sysUser.getId() == null){
+	    	Integer tenantId = 1;
+	        return succeed(organizationService.queryAllOrganWithNoAuth(tenantId));
+		}else{
+			String organIds = organizationService.getEmployeeOrgan(sysUser.getId(), "", sysUser.getIsSuperAdmin());
+	        return succeed(organizationService.queryEmployeeOrgan(organIds));
+		}
+    	
     }
 
     @ApiOperation(value = "获取员工所在分部列表")
     @GetMapping("/queryEmployeeOrgan")
-    public Object queryEmployeeOrgan() throws Exception {
+    public HttpResponseResult<List<Organization>> queryEmployeeOrgan() throws Exception {
         return succeed(organizationService.queryEmployeeOrgan());
     }
 

+ 4 - 0
mec-web/src/main/resources/exportColumnMapper.ini

@@ -266,6 +266,10 @@ fieldColumns = ["transNo", "orderNo", "createTime", "organName", "studentName",
 headColumns = ["分部", "学员姓名", "学员编号", "指导老师", "指导老师编号", "教务老师", "教务老师编号", "总课次", "已进行课次", "剩余课次", "上次课时间", "年级"]
 fieldColumns = ["organName", "username", "userId", "teacherName", "teacherId", "eduName", "eduId", "totalClassNum", "startClassNum", "subClassNum", "beforeClassNum", "grade"]
 
+[vip学员课程管理]
+headColumns = ["分部", "学员姓名", "学员编号", "指导老师", "指导老师编号", "教务老师", "教务老师编号", "声部课老师", "声部课老师编号", "总课次", "已进行课次", "剩余课次", "上次课时间", "近30天消耗课时", "是否活跃", "课程类型"]
+fieldColumns = ["organName", "username", "userId", "teacherName", "teacherId", "eduName", "eduId",  "subjectTeacherName",  "subjectTeacherId", "totalClassNum", "completedTimes", "remaindTimes", "lastCourseTime", "consumerTimes", "activeFlag", "courseType"]
+
 [乐理课学员课程信息导出]
 headColumns = ["分部", "学员姓名", "学员编号", "指导老师", "指导老师编号", "教务老师", "教务老师编号", "总课次", "已进行课次", "剩余课次", "上次课时间", "年级"]
 fieldColumns = ["organName", "username", "userId", "teacherName", "teacherId", "eduName", "eduId", "totalClassNum", "startClassNum", "subClassNum", "beforeClassNum", "grade"]