Browse Source

Merge branch 'zx_saas_0208' of http://git.dayaedu.com/yonge/mec into tast_saas

zouxuan 3 years ago
parent
commit
5eb249fd0f
26 changed files with 2279 additions and 594 deletions
  1. 9 1
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml
  2. 47 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportDto.java
  3. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OrganDoubleEleven2021StatisDto.java
  4. 97 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java
  5. 0 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/AccountLogQueryInfo.java
  6. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java
  7. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseSalaryQueryInfo4Web.java
  8. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentExercisesSituationQueryInfo.java
  9. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ExportFunction.java
  10. 245 21
      mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java
  13. 1299 46
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  14. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  15. 4 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java
  16. 2 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  18. 2 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  19. 4 4
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  20. 229 439
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  21. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderDetailController.java
  22. 1 4
      mec-web/src/main/java/com/ym/mec/web/controller/StudentExtracurricularExercisesSituationController.java
  23. 3 2
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java
  24. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/education/ActivityController.java
  25. 3 44
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentExtracurricularExercisesSituationController.java
  26. 259 0
      mec-web/src/main/resources/exportColumnMapper.ini

+ 9 - 1
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml

@@ -68,13 +68,21 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SysRole" parameterType="map">
-        SELECT * FROM sys_role WHERE del_flag_ = 0 and tenant_id_ = #{tenantId} ORDER BY update_time_ DESC
+        SELECT * FROM sys_role
+        WHERE del_flag_ = 0 AND tenant_id_ = #{tenantId}
+        <if test="search != null and search != ''">
+            AND role_name_ = #{search}
+        </if>
+        ORDER BY update_time_ DESC
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM sys_role WHERE del_flag_ = 0 and tenant_id_ = #{tenantId}
+        <if test="search != null and search != ''">
+            AND role_name_ = #{search}
+        </if>
 	</select>
 
     <select id="findRoleByUserId" resultMap="SysRole">

+ 47 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportDto.java

@@ -0,0 +1,47 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.ExportEnum;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ExportDto {
+    public ExportDto() {
+    }
+
+    public ExportDto(ExportEnum exportEnum, List<String> headColumns) {
+        this.exportEnum = exportEnum;
+        this.headColumns = headColumns;
+    }
+
+    private ExportEnum exportEnum;
+
+    private List<String> headColumns;
+
+    private Map<String,Object> queryInfo = new HashMap<>();
+
+    public Map<String, Object> getQueryInfo() {
+        return queryInfo;
+    }
+
+    public void setQueryInfo(Map<String, Object> queryInfo) {
+        this.queryInfo = queryInfo;
+    }
+
+    public ExportEnum getExportEnum() {
+        return exportEnum;
+    }
+
+    public void setExportEnum(ExportEnum exportEnum) {
+        this.exportEnum = exportEnum;
+    }
+
+    public List<String> getHeadColumns() {
+        return headColumns;
+    }
+
+    public void setHeadColumns(List<String> headColumns) {
+        this.headColumns = headColumns;
+    }
+}

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OrganDoubleEleven2021StatisDto.java

@@ -0,0 +1,34 @@
+package com.ym.mec.biz.dal.dto;
+
+public class OrganDoubleEleven2021StatisDto{
+
+    private Integer organId;
+
+    private String order = "DESC";
+
+    private String sort = "totalBuyAmount";
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getOrder() {
+        return order;
+    }
+
+    public void setOrder(String order) {
+        this.order = order;
+    }
+
+    public String getSort() {
+        return sort;
+    }
+
+    public void setSort(String sort) {
+        this.sort = sort;
+    }
+}

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

@@ -0,0 +1,97 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum ExportEnum implements BaseEnum<String, ExportEnum> {
+    USER_CASH_ACCOUNT_LOG("USER_CASH_ACCOUNT_LOG","退费记录导出"),
+    MUSIC_GROUP("MUSIC_GROUP","乐团列表导出"),
+    STATISTICS_DETAIL("STATISTICS_DETAIL","21年暑期考级活动统计页面详情导出"),
+    DOUBLE_ELEVEN2021_ORDER_DETAIL("DOUBLE_ELEVEN2021_ORDER_DETAIL", "2021双十一学员购买详情"),
+    ORGAN_DOUBLE_ELEVEN2021_STATIS("ORGAN_DOUBLE_ELEVEN2021_STATIS", "分部2021双11活动统计导出"),
+    USER_CASH_ACCOUNT_DETAIL("USER_CASH_ACCOUNT_DETAIL", "学生个人账户余额导出"),
+    USER_COURSES_ACCOUNT("USER_COURSES_ACCOUNT", "学生个人课程余额导出"),
+    CLASS_GROUP("CLASS_GROUP", "班级列表导出"),
+    GOODS("GOODS", "商品列表导出"),
+    VIP_GROUP_ACTIVITY("VIP_GROUP_ACTIVITY", "VIP活动导出"),
+    EXPORT_STUDENT_ATTENDANCES("EXPORT_STUDENT_ATTENDANCES", "学员考勤记录导出"),
+    MUSIC_GROUP_PAYMENT_CALENDER_DETAIL("MUSIC_GROUP_PAYMENT_CALENDER_DETAIL", "缴费记录导出"),
+    EXPORT_PAYMENT_CALENDER_AUDIT_LIST("EXPORT_PAYMENT_CALENDER_AUDIT_LIST", "审核列表导出"),
+    QUERY_TEACHER_ATTENDANCES("QUERY_TEACHER_ATTENDANCES", "导出教师考勤列表"),
+    TEACHER_SALARY_COMPLAINTS("TEACHER_SALARY_COMPLAINTS", "导出申述处理列表"),
+    STUDENT_BUY_PRACTICE("STUDENT_BUY_PRACTICE", "网管课购买列表"),
+    TENANT_PAYMENT_ORDER("TENANT_PAYMENT_ORDER", "导出对外订单列表"),
+    TEACHER_SALARY("TEACHER_SALARY", "导出老师课酬"),
+    TEACHER_COURSE_REWARD("TEACHER_COURSE_REWARD", "导出老师结转奖励"),
+    STUDENT_HAS_COURSE("STUDENT_HAS_COURSE", "导出学员列表"),
+    PRACTICE_GROUP_LIST("PRACTICE_GROUP_LIST", "导出陪练课列表"),
+    VIP_GROUP_LIST("VIP_GROUP_LIST", "导出VIP课管理"),
+    SUPER_FIND_COURSE_SCHEDULES("SUPER_FIND_COURSE_SCHEDULES", "终课表列表导出"),
+    SPORADIC_CHARGE_INFO("SPORADIC_CHARGE_INFO", "导出零星收费列表"),
+    MUSICAL_LIST_EXPORT("MUSICAL_LIST_EXPORT", "导出乐器采购清单"),
+    MUSICAL_LIST_DETAIL_EXPORT("MUSICAL_LIST_DETAIL_EXPORT", "导出学员采购清单明细"),
+    QUERY_STUDENT_APPLY_DETAIL_EXPORT("QUERY_STUDENT_APPLY_DETAIL_EXPORT", "学生详情列表导出"),
+    COURSE_SCHEDULE_TEACHER_SALARY("COURSE_SCHEDULE_TEACHER_SALARY", "分页导出教师薪酬列表"),
+    ORDER_LIST1("ORDER_LIST1", "订单列表导出1"),
+    ORDER_LIST2("ORDER_LIST2", "订单列表导出2"),
+    STUDENT_VIP_PRACTICE("STUDENT_VIP_PRACTICE", "学员小课记录导出"),
+    MUSIC_GROUP_STUDENT("MUSIC_GROUP_STUDENT", "乐团导出学员列表"),
+    COURSE_REVIEWS("COURSE_REVIEWS", "评论列表导出"),
+    PRACTICE_GROUP("PRACTICE_GROUP", "网管课管理导出"),
+    VIP_GROUP("VIP_GROUP", "VIP管理导出"),
+    EXTRA_EXERCISES_REPLYS("EXTRA_EXERCISES_REPLYS", "学生课外训练记录导出"),
+    EXERCISES_SITUATIONS("EXERCISES_SITUATIONS", "课外训练-教学导出"),
+    IS_SETTLEMENT_COURSE_SALARYS("IS_SETTLEMENT_COURSE_SALARYS", "教师课酬导出"),
+    OPERATING_STUDENTS("OPERATING_STUDENTS", "运营指标管理导出"),
+    VIP_COURSE_REVIEWS("VIP_COURSE_REVIEWS", "VIP评论列表导出"),
+    DEGREE_REGISTRATION("DEGREE_REGISTRATION", "考级报名导出"),
+    COOPERATION_ORGAN("COOPERATION_ORGAN", "合作单位导出"),
+    ROUTE_ORDER_LIST1("ROUTE_ORDER_LIST1", "财务管理导出1"),
+    ROUTE_ORDER_LIST2("ROUTE_ORDER_LIST2", "财务管理导出2"),
+    TEACHER_DEFAULT_SALARY("TEACHER_DEFAULT_SALARY", "老师默认课酬导出"),
+    MUSIC_GROUP_REGISTER("MUSIC_GROUP_REGISTER", "报名中缴费中乐团缴费情况导出"),
+    MUSIC_GROUP_NORMAL_STUDENT_NUM("MUSIC_GROUP_NORMAL_STUDENT_NUM", "乐团声部在读人数导出"),
+    STUDENT_ORDER("STUDENT_ORDER", "回款统计"),
+    EXPORT_SELL_ORDERS("EXPORT_SELL_ORDERS", "销售列表导出"),
+    ARREARAGE_STUDENTS("ARREARAGE_STUDENTS", "欠费学员列表导出"),
+    MUSIC_GROUP_QUIT("MUSIC_GROUP_QUIT", "退团申请列表导出"),
+    TEACHER_SERVE_INFO("TEACHER_SERVE_INFO", "服务指标明细导出"),
+    EXPORT_INDEX_ERR_DATA("EXPORT_INDEX_ERR_DATA", "首页异常统计导出"),
+    TEACHER_COURSE_STATISTICS("TEACHER_COURSE_STATISTICS", "运营预警导出"),
+    EXPORT_INDEX_HISTORY_ERR_DATA("EXPORT_INDEX_HISTORY_ERR_DATA", "首页历史异常统计导出"),
+    TEACHER_LIST("TEACHER_LIST", "老师列表导出"),
+    EMPLOYEE_INFO("EMPLOYEE_INFO", "人力资源导出"),
+    ORGAN_TEACHER_MEMBER_STUDENT_DATA("ORGAN_TEACHER_MEMBER_STUDENT_DATA", "分部下教师关联的会员数据导出"),
+    ORGAN_STUDENT_OVER_VIEW("ORGAN_STUDENT_OVER_VIEW", "分部云教练学员数据预览导出"),
+    CLOUD_STUDY_STUDENT_OVER_VIEW("CLOUD_STUDY_STUDENT_OVER_VIEW", "分部云教练学员数据详情导出"),
+    CLOUD_STUDY_STUDENT_TRAIN_DATA("CLOUD_STUDY_STUDENT_TRAIN_DATA", "分部云教练学员训练数据导出"),
+    COUNT_CLOUD_TEACHER_ACTIVE("COUNT_CLOUD_TEACHER_ACTIVE", "分部云教练活动统计数据导出"),
+    COUNT_CLOUD_TEACHER_ACTIVE_DETAIL("COUNT_CLOUD_TEACHER_ACTIVE_DETAIL", "云教练活动统计详情"),
+    MUSIC_ENLIGHTENMENT_QUESTIONNAIRES("MUSIC_ENLIGHTENMENT_QUESTIONNAIRES", "启蒙课问卷导出"),
+    EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出");
+
+    private String code;
+
+    private String msg;
+
+    ExportEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 0 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/AccountLogQueryInfo.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.Date;
 
 /**
 * @author zx

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java

@@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
  */
 public class ArrearageStudentsQueryInfo extends QueryInfo {
 
-    private String organIds;
+    private String organId;
 
     private String musicGroupId;
 
@@ -31,12 +31,12 @@ public class ArrearageStudentsQueryInfo extends QueryInfo {
         this.courseViewType = courseViewType;
     }
 
-    public String getOrganIds() {
-        return organIds;
+    public String getOrganId() {
+        return organId;
     }
 
-    public void setOrganIds(String organIds) {
-        this.organIds = organIds;
+    public void setOrganId(String organId) {
+        this.organId = organId;
     }
 
     public String getMusicGroupId() {

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseSalaryQueryInfo4Web.java

@@ -13,6 +13,8 @@ public class CourseSalaryQueryInfo4Web extends QueryInfo {
 
     private String month;
 
+    private String organId;
+
     private String organIdList;
 
     private GroupType groupType;
@@ -58,6 +60,16 @@ public class CourseSalaryQueryInfo4Web extends QueryInfo {
     }
 
     public void setOrganIdList(String organIdList) {
+        this.organId = organIdList;
+        this.organIdList = organIdList;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organIdList;
         this.organIdList = organIdList;
     }
 

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentExercisesSituationQueryInfo.java

@@ -11,7 +11,7 @@ import java.util.Date;
  */
 public class StudentExercisesSituationQueryInfo extends QueryInfo {
 
-    private String organIdList;
+    private String organId;
 
     @ApiModelProperty(value = "周一日期")
     private java.util.Date monday;
@@ -99,12 +99,12 @@ public class StudentExercisesSituationQueryInfo extends QueryInfo {
         this.teacherId = teacherId;
     }
 
-    public String getOrganIdList() {
-        return organIdList;
+    public String getOrganId() {
+        return organId;
     }
 
-    public void setOrganIdList(String organIdList) {
-        this.organIdList = organIdList;
+    public void setOrganId(String organId) {
+        this.organId = organId;
     }
 
     public Date getMonday() {

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExportFunction.java

@@ -0,0 +1,11 @@
+package com.ym.mec.biz.service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+@FunctionalInterface
+public interface ExportFunction {
+
+    List getRows(Map<String, Object> info, Function<Object,List> func,Class clazz,Boolean searchOrgan);
+}

+ 245 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java

@@ -1,44 +1,268 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ExportDto;
 import com.ym.mec.biz.dal.entity.ManagerDownload;
+import com.ym.mec.biz.dal.enums.ExportEnum;
+import com.ym.mec.biz.dal.enums.ExportTypeEnum;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
+import com.ym.mec.common.entity.HttpResponseResult;
+import org.springframework.scheduling.annotation.Async;
 
+import javax.annotation.PostConstruct;
+import javax.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.List;
 import java.util.Map;
+import java.util.function.BiFunction;
+import java.util.function.Function;
 
 
 public interface ExportService {
 
+    Map<String,String> getExportMap(ExportDto exportDto) throws IOException;
+
+    List<String> getExportFields(ExportEnum exportEnum) throws IOException;
+
+    <T> void export(HttpServletResponse response, List<T> rows, ExportDto exportDto) throws IOException;
+
+    Map<ExportEnum, BiFunction<Map<String, Object>,List<String>, HttpResponseResult>> getExportManageFuncMap();
+
+    Map<ExportEnum, Function<Map<String, Object>, List>> getExportFuncMap();
+
     /**
-     * 订单列表导出
-     * @param params
-     * @throws Exception
-     */
-    void orderList(Map<String, Object> params, ManagerDownload managerDownload, boolean isPlatformUser) throws Exception;
+    * @description: 班级列表导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 12:18
+    */
+    List exportClassGroup(Map<String, Object> info);
 
+    /**
+    * @description: 导出老师结转奖励
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 12:19
+    */
+    List teacherCourseReward(Map<String, Object> info);
 
     /**
-     * 财务管理下载
-     * @param params
-     * @param managerDownload
-     * @throws Exception
-     */
-    void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload, boolean isPlatformUser) throws Exception;
+    * @description: 导出陪练课列表
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 12:19
+    */
+    List practiceGroupList(Map<String, Object> info);
+
+    /**
+    * @description: 乐团【报名中、缴费中】 学生详情列表导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 12:19
+    */
+    List queryStudentApplyDetailExport(Map<String, Object> info);
 
     /**
-     * 课表列表导出
-     * @param queryInfo
-     * @param managerDownload
+    * @description: 评论列表导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:32
+    */
+    List courseReviews(Map<String, Object> info);
+
+    /**
+     * @description: 乐团管理--乐团详情-导出学员列表
+     * @param info
+     * @return java.util.List
+     * @author zx
+     * @date 2022/2/10 13:32
      */
-    void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) throws FileNotFoundException;
+    List queryMusicGroupStudent(Map<String, Object> info);
+
+    /**
+    * @description: 网管课管理导出
+     * @param
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:32
+    */
+    List practiceGroup();
+
+    /**
+    * @description: vip管理导出
+     * @param
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:33
+    */
+    List vipGroup();
+
+    /**
+    * @description: 学生课外训练记录导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:33
+    */
+    List extraExercisesReplys(Map<String, Object> info);
+
+    /**
+    * @description: 教师课酬导出
+     * @param info
+    * @return
+    * @author zx
+    * @date 2022/2/10 13:33
+    */
+    List isSettlementCourseSalarys(Map<String, Object> info);
+
+    /**
+    * @description: 运营指标管理导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:33
+    */
+    List operatingStudents(Map<String, Object> info);
+
+    /**
+    * @description: vip评论列表导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:33
+    */
+    List vipCourseReviews(Map<String, Object> info);
+
+    /**
+    * @description: 考级报名导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:33
+    */
+    List degreeRegistration(Map<String, Object> info);
+
+    /**
+    * @description: 回款统计
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List studentOrder(Map<String, Object> info);
+
+    /**
+    * @description: 销售列表导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List exportSellOrders(Map<String, Object> info);
+
+    /**
+    * @description: 服务指标明细导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List teacherServeInfo(Map<String, Object> info);
+
+    /**
+    * @description: 首页异常统计导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List exportIndexErrData(Map<String, Object> info);
+
+    /**
+    * @description: 分部云教练学员数据预览导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List organStudentOverView(Map<String, Object> info);
+
+    /**
+    * @description: 分部云教练学员训练数据导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List cloudStudyStudentTrainData(Map<String, Object> info);
+
+    /**
+    * @description: 分部云教练学员数据详情导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List cloudStudyStudentOverView(Map<String, Object> info);
+
+    //乐团声部在读人数导出
+    void musicGroupNormalStudentNum(HttpServletResponse response, ExportDto exportDto) throws IOException;
+
+    /**
+    * @description: 分部云教练活动统计数据导出
+     * @param info
+    * @return java.util.List
+    * @author zx
+    * @date 2022/2/10 13:34
+    */
+    List countCloudTeacherActive(Map<String, Object> info);
 
     /**
-    * @description:  报表中心学员小课记录导出
-     * @param organId
-     * @param managerDownload
-    * @return void
+    * @description: 云教练活动统计详情
+     * @param info
+    * @return java.util.List
     * @author zx
-    * @date 2021/11/5 11:38 
+    * @date 2022/2/10 13:35
     */
-    void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId) throws FileNotFoundException;
+    List countCloudTeacherActiveDetail(Map<String, Object> info);
+
+    <T> T getQueryInfo(Map<String, Object> info, Class<T> clazz, Boolean organFlag);
+
+    <T> T getParam(Map<String, Object> info, String key, Class<T> clazz);
+
+    //报名中缴费中乐团缴费情况导出
+    void musicGroupRegister(HttpServletResponse response, ExportDto exportDto) throws IOException;
+
+    //财务管理导出
+    HttpResponseResult routeOrderList(Map<String, Object> info,List<String> headColumns);
+
+    //学员小课记录导出
+    HttpResponseResult exportStudentVipPractice(Map<String, Object> info,List<String> headColumns);
+
+    //订单列表导出
+    HttpResponseResult orderList(Map<String, Object> info,List<String> headColumns);
+
+    //终课表列表导出
+    HttpResponseResult superFindCourseSchedules(Map<String, Object> info);
+
+    //保存下载记录
+    ManagerDownload saveManagerDownload(ExportTypeEnum exportTypeEnum, Integer userId);
+
+    @Async
+    abstract void orderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns) throws FileNotFoundException;
+
+
+    @Async
+    abstract void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns) throws FileNotFoundException;
+
+    @Async
+    abstract void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) throws FileNotFoundException;
+
+    @Async
+    abstract void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId,List<String> headColumns) throws FileNotFoundException;
 }

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

@@ -53,7 +53,7 @@ public interface OrganizationService extends BaseService<Integer, Organization>
     * @author zx
     * @date 2022/1/5 12:44
     */
-    String getEmployeeOrgan(String organIds);
+    String getEmployeeOrgan(Object organIds);
 
     /**
     * @description: 获取老师所在分部列表(包含流动分部)

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

@@ -77,7 +77,7 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
     * @author zx
     * @date 2021/10/25 12:07
     */
-    List<DoubleEleven2021Dto> organDoubleEleven2021Statis(String order,String sort,Integer organId);
+    List<DoubleEleven2021Dto> organDoubleEleven2021Statis(OrganDoubleEleven2021StatisDto queryInfo);
 
     /**
     * @description: 双11活动统计

File diff suppressed because it is too large
+ 1299 - 46
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java


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

@@ -123,12 +123,12 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	}
 
 	@Override
-	public String getEmployeeOrgan(String organIds) {
+	public String getEmployeeOrgan(Object organIds) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {
 			throw new BizException("用户信息获取失败");
 		}
-		return this.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin());
+		return this.getEmployeeOrgan(sysUser.getId(),organIds == null?"":organIds.toString(),sysUser.getIsSuperAdmin());
 	}
 
 	@Override

+ 4 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -213,14 +213,10 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
     @Override
-    public List<DoubleEleven2021Dto> organDoubleEleven2021Statis(String order,String sort,Integer organId) {
-		if(StringUtils.isEmpty(order)){
-			order = "DESC";
-		}
-		if(StringUtils.isEmpty(sort)){
-			sort = "totalBuyAmount";
-		}
-		List<DoubleEleven2021Dto> doubleEleven2021Dtos = vipGroupActivityDao.countOrganDoubleEleven2021Statis(organId);
+    public List<DoubleEleven2021Dto> organDoubleEleven2021Statis(OrganDoubleEleven2021StatisDto statisDto) {
+		String order = statisDto.getOrder();
+		String sort = statisDto.getSort();
+		List<DoubleEleven2021Dto> doubleEleven2021Dtos = vipGroupActivityDao.countOrganDoubleEleven2021Statis(statisDto.getOrganId());
 		if(doubleEleven2021Dtos != null && doubleEleven2021Dtos.size() > 0){
 			List<Integer> organIdList = doubleEleven2021Dtos.stream().map(e -> e.getOrganId()).collect(Collectors.toList());
 			List<DoubleEleven2021ActivityDto> activityDtoList = vipGroupActivityDao.countOrganActivityStatis(organIdList);

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

@@ -928,8 +928,8 @@
 			<if test="month!=null">
 				AND DATE_FORMAT(cs.class_date_, '%Y-%m') = #{month}
 			</if>
-			<if test="organIdList">
-				AND FIND_IN_SET(t.organ_id_,#{organIdList})
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(t.organ_id_,#{organId})
 			</if>
 			<if test="search!=null">
 				AND (csts.course_schedule_id_=#{search} OR cs.name_ LIKE CONCAT('%', #{search}, '%'))

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

@@ -622,7 +622,7 @@
                     #{musicGroupStatus}
                 </foreach>
             </if>
-            <if test="organIds != null">
+            <if test="organIds != null and organIds != ''">
                 AND FIND_IN_SET (mg.organ_id_,#{organIds})
             </if>
             AND (mg.del_flag_ IS NULL OR mg.del_flag_=0)

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

@@ -447,8 +447,8 @@
 			</if>
 			AND mgpcd.payment_status_ = 'NON_PAYMENT' AND mgpc.batch_no_ IS NOT NULL AND mgpc.pay_user_type_ = 'STUDENT'
 			AND mgpc.current_total_amount_ > 0
-			<if test="organIds != null and organIds != ''">
-				AND FIND_IN_SET(mg.organ_id_,#{organIds})
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(mg.organ_id_,#{organId})
 			</if>
 			<if test="musicGroupId!=null and musicGroupId!=''">
 				AND mgpc.music_group_id_ = #{musicGroupId}

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

@@ -256,8 +256,8 @@
 		<if test="search!=null">
 			AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
 		</if>
-		<if test="organIdList != null">
-			AND FIND_IN_SET(t.organ_id_,#{organIdList})
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(t.organ_id_,#{organId})
 		</if>
 		<if test="existVipCourse!=null and existVipCourse==1">
 			AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND class_date_ BETWEEN #{monday} AND #{sunday})
@@ -350,8 +350,8 @@
 		<if test="search!=null">
 			AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
 		</if>
-		<if test="organIdList != null">
-			AND FIND_IN_SET(t.organ_id_, #{organIdList})
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(t.organ_id_, #{organId})
 		</if>
 		<if test="existVipCourse!=null and existVipCourse==1">
 			AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND class_date_ BETWEEN #{monday} AND #{sunday})

+ 229 - 439
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -26,10 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -102,8 +99,6 @@ public class ExportController extends BaseController {
     @Autowired
     private TeacherService teacherService;
     @Autowired
-    private MusicGroupBuildLogDao musicGroupBuildLogDao;
-    @Autowired
     private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
     @Autowired
     private SellOrderService sellOrderService;
@@ -143,46 +138,48 @@ public class ExportController extends BaseController {
     private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
     @Autowired
     private MusicGroupService musicGroupService;
-    @Autowired
-    private SysUserCashAccountLogService sysUserCashAccountLogService;
 
-    @ApiOperation(value = "退费记录导出")
-    @RequestMapping("export/userCashAccountLog")
-    @PreAuthorize("@pcs.hasPermissions('export/userCashAccountLog')")
-    public void exportUserCashAccountLog(HttpServletResponse response, AccountLogQueryInfo queryInfo) throws IOException {
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
-        queryInfo.setPage(1);
-        queryInfo.setRows(49999);
-        List<SysUserCashAccountLog> rows = sysUserCashAccountLogService.queryPage(queryInfo).getRows();
-        if(rows.size() < 1){
-            throw new BizException("没有可导出数据");
-        }
-        OutputStream outputStream = response.getOutputStream();
-        try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"退费编号", "学员编号", "学员姓名","分部", "课程组编号", "课程组类型",
-                    "退费金额","退费类型","退费时间","交易流水号", "打款时间"}, new String[]{
-                    "id", "userId","username", "organName", "groupId","groupType.desc",
-                    "amount", "returnFeeType.msg", "createTime", "transNo","payTime"}, rows);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attac:wq" +
-                    "hment;filename=classGroup-" + 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();
-                }
-            }
+    @ApiOperation(value = "获取可导出字段")
+    @RequestMapping("export/getFields")
+    @PreAuthorize("@pcs.hasPermissions('export/getFields')")
+    public HttpResponseResult export(ExportEnum exportEnum) throws IOException {
+        return succeed(exportService.getExportFields(exportEnum));
+    }
+
+    @ApiOperation(value = "导出")
+    @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 {
+            Map<String, Object> queryInfo = exportDto.getQueryInfo();
+            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);
         }
     }
 
+    @ApiOperation(value = "导出到报表中心")
+    @PostMapping("export/managerDownload")
+    @PreAuthorize("@pcs.hasPermissions('export/managerDownload')")
+    public HttpResponseResult managerDownload(@RequestBody ExportDto exportDto){
+        Map<String, Object> queryInfo = exportDto.getQueryInfo();
+        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());
+    }
+
     @ApiOperation(value = "乐团列表导出")
     @PostMapping("export/musicGroup")
     @PreAuthorize("@pcs.hasPermissions('export/musicGroup')")
@@ -204,7 +201,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -241,7 +238,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -277,7 +274,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -297,8 +294,8 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "分部2021双11活动统计导出")
     @RequestMapping("export/organDoubleEleven2021Statis")
     @PreAuthorize("@pcs.hasPermissions('export/organDoubleEleven2021Statis')")
-    public void organDoubleEleven2021Statis(HttpServletResponse response,Integer organId,String order, String sort) throws IOException {
-        List<DoubleEleven2021Dto> rows = vipGroupActivityService.organDoubleEleven2021Statis(order, sort,organId);
+    public void organDoubleEleven2021Statis(HttpServletResponse response,OrganDoubleEleven2021StatisDto statisDto) throws IOException {
+        List<DoubleEleven2021Dto> rows = vipGroupActivityService.organDoubleEleven2021Statis(statisDto);
         if(rows.size() < 1){
             throw new BizException("没有可导出数据");
         }
@@ -313,7 +310,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -351,7 +348,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -389,7 +386,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -437,7 +434,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -473,7 +470,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=goods-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -508,7 +505,7 @@ public class ExportController extends BaseController {
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=vipGroupActivity-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -543,7 +540,7 @@ public class ExportController extends BaseController {
                     , "educationalTeacherName", "educationalTeacherId", "actualTeacherName", "actualTeacherId", "studentAttendanceStatus.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=studentAttendance-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -939,16 +936,16 @@ public class ExportController extends BaseController {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<VipGroup> rows = vipGroupService.findVipGroups(queryInfo).getRows();
         OutputStream outputStream = response.getOutputStream();
-        if (rows != null && rows.size() > 0) {
-            for (VipGroup e : rows) {
-                e.setSubClassTimes(e.getTotalClassTimes() == null ? 0 : e.getTotalClassTimes() - (e.getCurrentClassTimes() == null ? 0 : e.getCurrentClassTimes()));
-            }
-        }
+//        if (rows != null && rows.size() > 0) {
+//            for (VipGroup e : rows) {
+//                e.setSubClassTimes(e.getTotalClassTimes() == null ? 0 : e.getTotalClassTimes() - (e.getCurrentClassTimes() == null ? 0 : e.getCurrentClassTimes()));
+//            }
+//        }
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "教务老师", "班级人数", "课程单价",
                     "活动方案", "当前课次", "总课次", "剩余课次", "月消耗", "上次课时间", "开课时间", "结束时间", "申请时间", "学生姓名", "课程形式", "备注"}, new String[]{
                     "id", "name", "status.msg", "userName", "educationalTeacherName", "studentNum", "courseUnitPrice",
-                    "vipGroupActivityName", "currentClassTimes", "totalClassTimes", "subClassTimes", "monthConsumeRate", "lastOverTime",
+                    "vipGroupActivityName", "currentClassTimes", "totalClassTimes", "totalClassTimes == null ? 0 : totalClassTimes - (currentClassTimes == null ? 0 : currentClassTimes)", "monthConsumeRate", "lastOverTime",
                     "courseStartDate", "coursesExpireDate", "registrationStartTime", "userInfo", "vipGroupCategoryName", "stopReason"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -969,45 +966,6 @@ public class ExportController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "终课表列表导出")
-    @GetMapping("export/superFindCourseSchedules")
-    @PreAuthorize("@pcs.hasPermissions('export/superFindCourseSchedules')")
-    public Object superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo) throws IOException {
-        queryInfo.setPage(1);
-        queryInfo.setRows(49999);
-        queryInfo.setIsExport(true);
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            throw new BizException("用户信息获取失败");
-        }
-        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganIdList(),sysUser.getIsSuperAdmin()));
-        Map<String, Object> params = new HashMap<>();
-        MapUtil.populateMap(params, queryInfo);
-        int count = scheduleService.endCountCourseSchedules(params);
-        if (count <= 0) {
-            return failed("没有可导出的数据");
-        }
-
-        if (count > 50000) {
-            return failed("数据集太大,不能导出.最大数据集不能超过50000");
-        }
-        Date nowDate = new Date();
-        String no = idGeneratorService.generatorId("download") + "";
-        String fileName = "课表列表-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
-        ManagerDownload managerDownload = new ManagerDownload();
-        managerDownload.setType(ExportTypeEnum.COURSE_SCHEDULE);
-        managerDownload.setUserId(sysUser.getId());
-        managerDownload.setName(fileName);
-        managerDownload.setFileUrl("");
-        managerDownload.setCreateTime(nowDate);
-        managerDownload.setUpdateTime(nowDate);
-        managerDownloadDao.insert(managerDownload);
-        exportService.superFindCourseSchedules(queryInfo, managerDownload);
-        HttpResponseResult<Object> succeed = succeed();
-        succeed.setMsg(fileName + "导出申请已提交,请到【报表中心-下载列表查看】");
-        return succeed;
-    }
-
 
     @ApiOperation(value = "导出零星收费列表")
     @GetMapping("export/sporadicChargeInfo")
@@ -1018,14 +976,14 @@ public class ExportController extends BaseController {
         queryInfo.setIsExport(true);
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<SporadicChargeInfo> rows = sporadicChargeInfoService.queryDetailPage(queryInfo).getRows();
-        for (SporadicChargeInfo row : rows) {
-            row.setOpenFlagStr(row.getOpenFlag().equals(0) ? "开启" : "关闭");
-            row.setOrderType(row.getUserId() == null ? "公用" : "个人");
-        }
+//        for (SporadicChargeInfo row : rows) {
+//            row.setOpenFlagStr(row.getOpenFlag().equals(0) ? "开启" : "关闭");
+//            row.setOrderType(row.getUserId() == null ? "公用" : "个人");
+//        }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "收费类型", "标题", "收费状态", "金额", "时间", "学生姓名", "订单类型", "创建人"}, new String[]{
-                    "organName", "chargeType.msg", "title", "openFlagStr", "amount", "createTime", "userName", "orderType", "operatorName"}, rows);
+                    "organName", "chargeType.msg", "title", "openFlag == 0?'开启':'关闭'", "amount", "createTime", "userName", "userId == null?'公用':'个人'", "operatorName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             
@@ -1091,7 +1049,8 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "团练宝金额", "乐保金额", "订单总价"}, new String[]{
-                    "organName", "musicGroupName", "userId", "username", "subjectName", "musicalName", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"}, musicalList);
+                    "organName", "musicGroupName", "userId", "username", "subjectName", "musicalName", "kitGroupPurchaseTypeEnum.msg",
+                    "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"}, musicalList);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             
@@ -1149,8 +1108,11 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业", "实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买团练宝"}, new String[]{
-                    "studentName", "parentsName", "currentGrade", "currentClass", "gender.description", "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc", "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业",
+                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买团练宝"}, new String[]{
+                    "studentName", "parentsName", "currentGrade", "currentClass", "gender.description",
+                    "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc",
+                    "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             
@@ -1201,81 +1163,6 @@ public class ExportController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "订单列表导出")
-    @RequestMapping("export/orderList")
-    @PreAuthorize("@pcs.hasPermissions('export/orderList')")
-    public HttpResponseResult orderList(StudentPaymentOrderQueryInfo queryInfo) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-        	return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
-        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
-            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
-            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
-            if (userIds.size() <= 0) {
-                userIds.add(0);
-            }
-            queryInfo.setUserIds(userIds);
-        }
-        queryInfo.setPage(1);
-        queryInfo.setRows(50000);
-        queryInfo.setIsExport(true);
-        Map<String, Object> params = new HashMap<>();
-        MapUtil.populateMap(params, queryInfo);
-        int count = studentPaymentOrderDao.queryCount(params);
-        if (count <= 0) {
-            return failed("没有可导出的数据");
-        }
-
-        if (count > 50000) {
-            return failed("数据集太大,不能导出.最大数据集不能超过50000");
-        }
-        Date nowDate = new Date();
-        String no = idGeneratorService.generatorId("download") + "";
-        String fileName = "orderList-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
-        ManagerDownload managerDownload = new ManagerDownload();
-        managerDownload.setType(ExportTypeEnum.ORDER);
-        managerDownload.setUserId(sysUser.getId());
-        managerDownload.setName(fileName);
-        managerDownload.setFileUrl("");
-        managerDownload.setCreateTime(nowDate);
-        managerDownload.setUpdateTime(nowDate);
-        managerDownloadDao.insert(managerDownload);
-        exportService.orderList(params, managerDownload, sysUser.getTenantId() <= 0);
-        HttpResponseResult<Object> succeed = succeed();
-        succeed.setMsg(fileName + "导出申请已提交,请到【报表中心-下载列表查看】");
-        return succeed;
-    }
-
-
-    @ApiOperation(value = "学员小课记录导出")
-    @RequestMapping("export/studentVipPractice")
-    @PreAuthorize("@pcs.hasPermissions('export/studentVipPractice')")
-    public HttpResponseResult exportStudentVipPractice(String organId) throws IOException {
-        Boolean hasCourse = courseScheduleStudentPaymentDao.hasCourse(organId, TenantContextHolder.getTenantId());
-        if (hasCourse == null || !hasCourse) {
-            return failed("没有可导出的数据");
-        }
-        Integer tenantId = TenantContextHolder.getTenantId();
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        Date nowDate = new Date();
-        String no = idGeneratorService.generatorId("download") + "";
-        String fileName = "studentVipPractice-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
-        ManagerDownload managerDownload = new ManagerDownload();
-        managerDownload.setType(ExportTypeEnum.STUDENT_VIP_PRACTICE);
-        managerDownload.setUserId(sysUser.getId());
-        managerDownload.setName(fileName);
-        managerDownload.setFileUrl("");
-        managerDownload.setCreateTime(nowDate);
-        managerDownload.setUpdateTime(nowDate);
-        managerDownloadDao.insert(managerDownload);
-        exportService.studentVipPractice(organId, managerDownload, tenantId);
-        HttpResponseResult<Object> succeed = succeed();
-        succeed.setMsg(fileName + "导出申请已提交,请到【报表中心-下载列表查看】");
-        return succeed;
-    }
-
 
     @ApiOperation(value = "乐团管理--乐团详情-导出学员列表")
     @RequestMapping("export/musicGroupStudent")
@@ -1330,10 +1217,10 @@ public class ExportController extends BaseController {
                     "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 ? \"可用\" : \"已使用\""
+                    ,"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 ? \"未生效\" : \"会员已过期\""};
+                    "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");
@@ -1362,7 +1249,6 @@ public class ExportController extends BaseController {
         queryInfo.setIsExport(1);
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        // PageInfo<CourseReviewDto> practiceGroupReviews = courseReviewService.findPracticeGroupReviews(queryInfo);
         PageInfo<CourseReviewDto> practiceGroupReviews = courseReviewService.getVipCourseReviews(queryInfo);
         if (practiceGroupReviews.getTotal() <= 0) {
             throw new BizException("没有可导出的记录");
@@ -1412,8 +1298,11 @@ public class ExportController extends BaseController {
                 }
             }
 
-            String[] header = {"分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"};
-            String[] body = {"organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName", "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "hasLiaison", "studentReview", "assignHomeworkStr", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"};
+            String[] header = {"分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏",
+                    "乐理", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"};
+            String[] body = {"organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName",
+                    "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song",
+                    "memo", "createTimeStr", "hasLiaison", "studentReview", "assignHomeworkStr", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"};
             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");
@@ -1476,8 +1365,10 @@ public class ExportController extends BaseController {
         }
 
         try {
-            String[] header = {"分部", "学生编号", "学生姓名", "网管课老师id", "网管课老师", "教务老师id", "教务老师", "有效期截止时间", "课程截止时间", "总课时", "剩余课时", "是否购买"};
-            String[] body = {"organName", "studentId", "studentName", "teacherIds", "teacherName", "eduTeacherIds", "eduTeacherName", "expireDate", "classEndDate", "totalClassTimes", "noStartClassTimes", "buyPractice.msg"};
+            String[] header = {"分部", "学生编号", "学生姓名", "网管课老师id", "网管课老师", "教务老师id", "教务老师",
+                    "有效期截止时间", "课程截止时间", "总课时", "剩余课时", "是否购买"};
+            String[] body = {"organName", "studentId", "studentName", "teacherIds", "teacherName", "eduTeacherIds",
+                    "eduTeacherName", "expireDate", "classEndDate", "totalClassTimes", "noStartClassTimes", "buyPractice.msg"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupExports);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1591,7 +1482,8 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
                     new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交训练", "提交训练时间", "是否评价", "是否有vip", "及时评价"},
-                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName", "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr"}, rows);
+                    new String[]{"createTime", "expireDate", "title", "teacherName", "organName",
+                            "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -1616,7 +1508,7 @@ public class ExportController extends BaseController {
     public void exercisesSituations(StudentExercisesSituationQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(queryInfo.getOrganIdList()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<StudentExercisesSituationDto> rows = studentExtracurricularExercisesSituationService.findStudentExtracurricularExercisesSituations(queryInfo).getRows();
         if (CollectionUtils.isEmpty(rows)) {
             throw new BizException("没有可导出的记录");
@@ -1624,8 +1516,11 @@ public class ExportController extends BaseController {
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"学员编号", "学员姓名", "所属分部", "乐团名称", "指导老师", "教务老师", "服务课程", "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "训练提交时间"},
-                    new String[]{"studentId", "studentName", "organName", "groupNames", "teacherName", "educationalTeacherName", "serveType == 'EXERCISE' ? '课外训练':courseIds", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",
+                    new String[]{"学员编号", "学员姓名", "所属分部", "乐团名称", "指导老师", "教务老师", "服务课程",
+                            "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "训练提交时间"},
+                    new String[]{"studentId", "studentName", "organName", "groupNames", "teacherName",
+                            "educationalTeacherName", "serveType == 'EXERCISE' ? '课外训练':courseIds",
+                            "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",
                             "exercisesMessageNum", "exercisesMessageTimelyNum", "existPracticeCourse", "existVipCourse", "lastSubmitTime"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1755,7 +1650,8 @@ public class ExportController extends BaseController {
 
             HSSFWorkbook workbook = POIUtil.exportExcel(
                     new String[]{"分部", "乐团名称", "学生", "学生编号", "指导老师", "指导老师id", "参与运营指标", "有线上VIP课", "参与免费网管课", "有付费网管课", "有乐团网管课"},
-                    new String[]{"organName", "groupNames", "studentName", "studentId", "teacherName", "teacherId", "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr", "musicNetWorkTimesStr"}, rows);
+                    new String[]{"organName", "groupNames", "studentName", "studentId", "teacherName", "teacherId",
+                            "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr", "musicNetWorkTimesStr"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             ouputStream = response.getOutputStream();
@@ -1778,7 +1674,6 @@ public class ExportController extends BaseController {
     @RequestMapping("export/vipCourseReviews")
     @PreAuthorize("@pcs.hasPermissions('export/vipCourseReviews')")
     public void vipCourseReviews(CourseReviewQueryInfo queryInfo, HttpServletResponse response) throws IOException {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         queryInfo.setIsExport(1);
         queryInfo.setPage(1);
@@ -1832,8 +1727,11 @@ public class ExportController extends BaseController {
                 }
             }
 
-            String[] header = {"分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置训练)", "是否布置训练", "是否提交训练", "教务老师", "教务评价"};
-            String[] body = {"organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr", "handHomeworkStr", "eduTeacherName", "courseReview"};
+            String[] header = {"分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理",
+                    "曲目", "评价备注", "回访日期(布置训练)", "是否布置训练", "是否提交训练", "教务老师", "教务评价"};
+            String[] body = {"organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial",
+                    "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr",
+                    "handHomeworkStr", "eduTeacherName", "courseReview"};
             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");
@@ -1868,21 +1766,22 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            for (DegreeRegistration row : pageList.getRows()) {
-                if (row.getGender().equals("1")) {
-                    row.setGender("男");
-                } else {
-                    row.setGender("女");
-                }
-                if (row.getStatus().equals(2)) {
-                    row.setStatusStr("已缴费");
-                } else {
-                    row.setStatusStr("未缴费");
-                }
-            }
+//            for (DegreeRegistration row : pageList.getRows()) {
+//                if (row.getGender().equals("1")) {
+//                    row.setGender("男");
+//                } else {
+//                    row.setGender("女");
+//                }
+//                if (row.getStatus().equals(2)) {
+//                    row.setStatusStr("已缴费");
+//                } else {
+//                    row.setStatusStr("未缴费");
+//                }
+//            }
 
             String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
-            String[] body = {"name", "gender", "idcard", "city", "school", "subject", "level", "theoryLevel", "theoryCert", "mobile", "money", "theoryMoney", "memo", "statusStr", "orderNo", "transNo", "createTime"};
+            String[] body = {"name", "gender == 1?'男':'女'", "idcard", "city", "school", "subject", "level", "theoryLevel",
+                    "theoryCert", "mobile", "money", "theoryMoney", "memo", "status == 2?'已缴费':'未缴费'", "orderNo", "transNo", "createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1939,125 +1838,7 @@ public class ExportController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "报名中缴费中乐团缴费情况导出")
-    @RequestMapping("export/musicGroupRegister")
-    @PreAuthorize("@pcs.hasPermissions('export/musicGroupRegister')")
-    public void musicGroupRegister(String organIds, HttpServletResponse response) throws IOException {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        organIds = organizationService.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin());
-        List<MusicGroupStatusEnum> musicGroupStatusList = new ArrayList<>();
-        musicGroupStatusList.add(MusicGroupStatusEnum.APPLY);
-        musicGroupStatusList.add(MusicGroupStatusEnum.PAY);
-
-        List<MusicGroupRegisterDto> musicGroupRegisters = musicGroupDao.getMusicGroupRegister(musicGroupStatusList, organIds, TenantContextHolder.getTenantId());
-
-        if (musicGroupRegisters.size() <= 0) {
-            throw new BizException("没有可导出的记录");
-        }
-        List<String> musicGroupIds = musicGroupRegisters.stream().map(MusicGroupRegisterDto::getMusicGroupId).collect(Collectors.toList());
-
-        List<RegisterSubjectDto> registerSubjects = musicGroupDao.getRegisterSubjectNum(musicGroupIds, null, 2);
-        List<MusicGroupRegisterDto> musicGroupRegisterOrders = musicGroupDao.getMusicGroupRegisterOrder(musicGroupIds);
-        List<MusicGroupRegisterDto> musicGroupRegisterTotalMoneys = musicGroupDao.getMusicGroupRegisterTotalMoney(musicGroupIds);
-
-        List<MusicGroupBuildLog> musicGroupAuditSuccess = musicGroupBuildLogDao.getMusicGroupAuditSuccess(musicGroupIds);
-
-        HashSet<Integer> added = new HashSet<>();
-        List<String> header = new ArrayList<>();
-        header.add("分部");
-        header.add("乐团名称");
-        header.add("乐团状态");
-        header.add("审核通过时间");
-        header.add("报名总数");
-        List<String> body = new ArrayList<>();
-        body.add("organName");
-        body.add("musicGroupName");
-        body.add("musicGroupStatus");
-        body.add("auditSuccessTime");
-        body.add("registerNum");
-        for (RegisterSubjectDto registerSubject : registerSubjects) {
-            if (!added.contains(registerSubject.getSubjectId())) {
-                added.add(registerSubject.getSubjectId());
-                header.add(registerSubject.getSubjectName());
-                body.add("subject" + registerSubject.getSubjectId());
-            }
-        }
-        header.add("团购数");
-        header.add("缴费总数");
-        header.add("回款总金额");
-
-        body.add("groupBuyMusicalNum");
-        body.add("registerPayNum");
-        body.add("totalMoney");
-
-
-        List<Map<String, Object>> data = new ArrayList<>();
-        for (MusicGroupRegisterDto musicGroupRegister : musicGroupRegisters) {
-            added.clear();
-            HashMap<String, Object> musicGroupRegisterMap = new HashMap<>();
-            int registerPayNum = 0;
-            musicGroupRegisterMap.put("organName", musicGroupRegister.getOrganName());
-            musicGroupRegisterMap.put("musicGroupName", musicGroupRegister.getMusicGroupName());
-            musicGroupRegisterMap.put("musicGroupStatus", musicGroupRegister.getMusicGroupStatus().getMsg());
-            musicGroupRegisterMap.put("registerNum", musicGroupRegister.getRegisterNum());
-            for (MusicGroupRegisterDto musicGroupRegisterOrder : musicGroupRegisterOrders) {
-                if (musicGroupRegisterOrder.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
-                    musicGroupRegister.setGroupBuyMusicalNum(musicGroupRegisterOrder.getGroupBuyMusicalNum());
-                }
-            }
-            for (MusicGroupRegisterDto musicGroupRegisterTotalMoney : musicGroupRegisterTotalMoneys) {
-                if (musicGroupRegisterTotalMoney.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
-                    musicGroupRegister.setTotalMoney(musicGroupRegisterTotalMoney.getTotalMoney());
-                }
-            }
-
-            for (RegisterSubjectDto registerSubject : registerSubjects) {
-                if (registerSubject.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
-                    added.add(registerSubject.getSubjectId());
-                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), registerSubject.getNum());
-                    registerPayNum += registerSubject.getNum();
-                }
-                if (!added.contains(registerSubject.getSubjectId())) {
-                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), 0);
-                }
-            }
-            for (MusicGroupBuildLog groupAuditSuccess : musicGroupAuditSuccess) {
-                if (!groupAuditSuccess.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) continue;
-                musicGroupRegisterMap.put("auditSuccessTime", groupAuditSuccess.getCreateTime());
-            }
-            musicGroupRegisterMap.put("groupBuyMusicalNum", musicGroupRegister.getGroupBuyMusicalNum());
-            musicGroupRegisterMap.put("registerPayNum", registerPayNum);
-            musicGroupRegisterMap.put("totalMoney", musicGroupRegister.getTotalMoney());
-            data.add(musicGroupRegisterMap);
-        }
-
-        OutputStream outputStream = response.getOutputStream();
-        try {
-            String[] headerStr = header.toArray(new String[header.size()]);
-            String[] bodyStr = body.toArray(new String[body.size()]);
-
-            HSSFWorkbook workbook = POIUtil.exportExcel(headerStr, bodyStr, data);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
-            outputStream = response.getOutputStream();
-            workbook.write(outputStream);
-            outputStream.flush();
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (outputStream != null) {
-                try {
-                    outputStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
-
-
-    @ApiOperation(value = "财务管理导出")
+/*    @ApiOperation(value = "财务管理导出")
     @RequestMapping("export/routeOrderList")
     @PreAuthorize("@pcs.hasPermissions('export/routeOrderList')")
     public HttpResponseResult routeOrderList(StudentPaymentOrderQueryInfo queryInfo) throws Exception {
@@ -2108,6 +1889,107 @@ public class ExportController extends BaseController {
         return succeed;
     }
 
+    @ApiOperation(value = "学员小课记录导出")
+    @RequestMapping("export/studentVipPractice")
+    @PreAuthorize("@pcs.hasPermissions('export/studentVipPractice')")
+    public HttpResponseResult exportStudentVipPractice(String organId) throws IOException {
+        Boolean hasCourse = courseScheduleStudentPaymentDao.hasCourse(organId, TenantContextHolder.getTenantId());
+        if (hasCourse == null || !hasCourse) {
+            return failed("没有可导出的数据");
+        }
+        Integer tenantId = TenantContextHolder.getTenantId();
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Date nowDate = new Date();
+        String no = idGeneratorService.generatorId("download") + "";
+        String fileName = "studentVipPractice-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
+        ManagerDownload managerDownload = new ManagerDownload();
+        managerDownload.setType(ExportTypeEnum.STUDENT_VIP_PRACTICE);
+        managerDownload.setUserId(sysUser.getId());
+        managerDownload.setName(fileName);
+        managerDownload.setFileUrl("");
+        managerDownload.setCreateTime(nowDate);
+        managerDownload.setUpdateTime(nowDate);
+        managerDownloadDao.insert(managerDownload);
+        exportService.studentVipPractice(organId, managerDownload, tenantId);
+        HttpResponseResult<Object> succeed = succeed();
+        succeed.setMsg(fileName + "导出申请已提交,请到【报表中心-下载列表查看】");
+        return succeed;
+    }
+
+    @ApiOperation(value = "订单列表导出")
+    @RequestMapping("export/orderList")
+    @PreAuthorize("@pcs.hasPermissions('export/orderList')")
+    public HttpResponseResult orderList(StudentPaymentOrderQueryInfo queryInfo) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
+        queryInfo.setPage(1);
+        queryInfo.setRows(50000);
+        queryInfo.setIsExport(true);
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        int count = studentPaymentOrderDao.queryCount(params);
+        if (count <= 0) {
+            return failed("没有可导出的数据");
+        }
+
+        if (count > 50000) {
+            return failed("数据集太大,不能导出.最大数据集不能超过50000");
+        }
+        Date nowDate = new Date();
+        String no = idGeneratorService.generatorId("download") + "";
+        String fileName = "orderList-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
+        ManagerDownload managerDownload = new ManagerDownload();
+        managerDownload.setType(ExportTypeEnum.ORDER);
+        managerDownload.setUserId(sysUser.getId());
+        managerDownload.setName(fileName);
+        managerDownload.setFileUrl("");
+        managerDownload.setCreateTime(nowDate);
+        managerDownload.setUpdateTime(nowDate);
+        managerDownloadDao.insert(managerDownload);
+        exportService.orderList(params, managerDownload, sysUser.getTenantId() <= 0);
+        HttpResponseResult<Object> succeed = succeed();
+        succeed.setMsg(fileName + "导出申请已提交,请到【报表中心-下载列表查看】");
+        return succeed;
+    }*/
+
+    @ApiOperation(value = "终课表列表导出")
+    @GetMapping("export/superFindCourseSchedules")
+    @PreAuthorize("@pcs.hasPermissions('export/superFindCourseSchedules')")
+    public HttpResponseResult superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        queryInfo.setIsExport(true);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganIdList(),sysUser.getIsSuperAdmin()));
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        int count = scheduleService.endCountCourseSchedules(params);
+        if (count <= 0) {
+            return failed("没有可导出的数据");
+        }
+        if (count > 50000) {
+            return failed("数据集太大,不能导出.最大数据集不能超过50000");
+        }
+        ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.COURSE_SCHEDULE,sysUser.getId());
+        exportService.superFindCourseSchedules(queryInfo, managerDownload);
+        HttpResponseResult<Object> succeed = succeed();
+        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
+        return succeed;
+    }
 
     @ApiOperation(value = "老师默认课酬导出")
     @RequestMapping("export/teacherDefaultSalary")
@@ -2153,94 +2035,6 @@ public class ExportController extends BaseController {
         }
     }
 
-
-    @ApiOperation(value = "乐团声部在读人数导出")
-    @RequestMapping("export/musicGroupNormalStudentNum")
-    @PreAuthorize("@pcs.hasPermissions('export/musicGroupNormalStudentNum')")
-    public void musicGroupNormalStudentNum(String organIds, HttpServletResponse response) throws IOException {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        organIds = organizationService.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin());
-
-        List<MusicGroupStatusEnum> musicGroupStatusList = new ArrayList<>();
-        musicGroupStatusList.add(MusicGroupStatusEnum.PAY);
-        musicGroupStatusList.add(MusicGroupStatusEnum.PREPARE);
-        musicGroupStatusList.add(MusicGroupStatusEnum.PROGRESS);
-        musicGroupStatusList.add(MusicGroupStatusEnum.PAUSE);
-        List<MusicGroupRegisterDto> musicGroupRegisters = musicGroupDao.getMusicGroupRegister(musicGroupStatusList, organIds, TenantContextHolder.getTenantId());
-
-        if (musicGroupRegisters.size() <= 0) {
-            throw new BizException("没有可导出的记录");
-        }
-        List<String> musicGroupIds = musicGroupRegisters.stream().map(MusicGroupRegisterDto::getMusicGroupId).collect(Collectors.toList());
-
-        List<RegisterSubjectDto> registerSubjects = musicGroupDao.getRegisterSubjectNum(musicGroupIds, StudentMusicGroupStatusEnum.NORMAL, null);
-
-        HashSet<Integer> added = new HashSet<>();
-        List<String> header = new ArrayList<>();
-        header.add("分部");
-        header.add("乐团名称");
-        header.add("乐团状态");
-        header.add("在读总人数");
-        List<String> body = new ArrayList<>();
-        body.add("organName");
-        body.add("musicGroupName");
-        body.add("musicGroupStatus");
-        body.add("normalNum");
-        for (RegisterSubjectDto registerSubject : registerSubjects) {
-            if (!added.contains(registerSubject.getSubjectId())) {
-                added.add(registerSubject.getSubjectId());
-                header.add(registerSubject.getSubjectName());
-                body.add("subject" + registerSubject.getSubjectId());
-            }
-        }
-
-        List<Map<String, Object>> data = new ArrayList<>();
-        for (MusicGroupRegisterDto musicGroupRegister : musicGroupRegisters) {
-            added.clear();
-            HashMap<String, Object> musicGroupRegisterMap = new HashMap<>();
-
-            musicGroupRegisterMap.put("organName", musicGroupRegister.getOrganName());
-            musicGroupRegisterMap.put("musicGroupName", musicGroupRegister.getMusicGroupName());
-            musicGroupRegisterMap.put("musicGroupStatus", musicGroupRegister.getMusicGroupStatus().getMsg());
-            musicGroupRegisterMap.put("normalNum", musicGroupRegister.getNormalNum());
-
-            for (RegisterSubjectDto registerSubject : registerSubjects) {
-                if (registerSubject.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
-                    added.add(registerSubject.getSubjectId());
-                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), registerSubject.getNum());
-                }
-                if (!added.contains(registerSubject.getSubjectId())) {
-                    musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), 0);
-                }
-            }
-            data.add(musicGroupRegisterMap);
-        }
-
-        OutputStream outputStream = response.getOutputStream();
-        try {
-            String[] headerStr = header.toArray(new String[header.size()]);
-            String[] bodyStr = body.toArray(new String[body.size()]);
-
-            HSSFWorkbook workbook = POIUtil.exportExcel(headerStr, bodyStr, data);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
-            outputStream = response.getOutputStream();
-            workbook.write(outputStream);
-            outputStream.flush();
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (outputStream != null) {
-                try {
-                    outputStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
-
     @ApiOperation(value = "回款统计")
     @RequestMapping("export/studentOrder")
     @PreAuthorize("@pcs.hasPermissions('export/studentOrder')")
@@ -2392,7 +2186,7 @@ public class ExportController extends BaseController {
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
         }
-        queryInfo.setOrganIds(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganIds(),sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         PageInfo<MusicArrearageStudentDto> result = musicGroupPaymentCalenderDetailService.queryArrearageStudents(queryInfo);
@@ -2402,7 +2196,8 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {"学员编号", "学员姓名", "所属分部", "合作单位", "所在乐团", "乐团主管", "声部", "性别", "家长姓名", "家长联系电话", "欠费金额"};
-            String[] body = {"userId", "studentName", "organName", "cooperationName", "musicGroupName", "eduTeacherName", "subjectName", "gender==0?'女':'男'", "parentName", "phone", "noPaymentAmount"};
+            String[] body = {"userId", "studentName", "organName", "cooperationName", "musicGroupName", "eduTeacherName",
+                    "subjectName", "gender==0?'女':'男'", "parentName", "phone", "noPaymentAmount"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2533,10 +2328,10 @@ public class ExportController extends BaseController {
         try {
             String[] header = {"分部", "基础技能班学员数量异常", "乐团巡查事项异常", "未在班级学员数", "欠费学员数",
                     "申请退团学员数", "预计课酬较低", "课程时间安排异常", "乐团巡查未计划", "乐团巡查任务未提交",
-                    "回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "会员过期学员数", "总计",};
+                    "回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "会员过期学员数", "总计"};
             String[] body = {"organName", "highClassStudentLessThanThreeNum", "musicPatrolItem", "noClassMusicGroupStudentInfo", "studentNotPayment",
                     "studentApplyForQuitMusicGroup", "teacherExpectSalaryBeLow", "courseTimeError", "inspectionItem", "inspectionItemPlan",
-                    "studentVisit", "teacherExceptionAttendance", "teacherNotAClass", "teacherServeError", "studentErrorLeave", "noMemberStudentNum", "total",};
+                    "studentVisit", "teacherExceptionAttendance", "teacherNotAClass", "teacherServeError", "studentErrorLeave", "noMemberStudentNum", "total"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2807,7 +2602,7 @@ public class ExportController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "分部云教练学员数据预览导出")
+    @ApiOperation(value = "分部云教练学员数据详情导出")
     @RequestMapping("export/cloudStudyStudentOverView")
     @PreAuthorize("@pcs.hasPermissions('export/cloudStudyStudentOverView')")
     public void cloudStudyStudentOverView(OrganCloudStudyStudentDataQueryInfo queryInfo,HttpServletResponse response) throws IOException {
@@ -2954,7 +2749,7 @@ public class ExportController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "分部云教练学员训练数据导出")
+    @ApiOperation(value = "云教练活动统计详情")
     @RequestMapping("export/countCloudTeacherActiveDetail")
     @PreAuthorize("@pcs.hasPermissions('export/countCloudTeacherActiveDetail')")
     public void countCloudTeacherActiveDetail(CloudTeacherActiveQueryInfo queryInfo,HttpServletResponse response) throws IOException {
@@ -3011,21 +2806,18 @@ public class ExportController extends BaseController {
         queryInfo.setRows(49999);
         PageInfo<MusicEnlightenmentQuestionnaire> practiceGroupReviews = musicEnlightenmentQuestionnaireService.queryPage(queryInfo);
         if (practiceGroupReviews.getTotal() <= 0) {
-            
-            
-            
-            
             return;
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            for (MusicEnlightenmentQuestionnaire row : practiceGroupReviews.getRows()) {
-                if(Objects.isNull(row.getSubjectName())){
-                    row.setSubjectName("无");
-                }
-            }
+//            for (MusicEnlightenmentQuestionnaire row : practiceGroupReviews.getRows()) {
+//                if(Objects.isNull(row.getSubjectName())){
+//                    row.setSubjectName("无");
+//                }
+//            }
             String[] header = {"学员姓名","联系电话","年级","班级","老师推荐专业","是否在学习某件乐器","目前所学乐器","报名参加管乐团家长会了解相关情况","备注"};
-            String[] body = {"userName","phone","currentGrade","currentClass","subjectName","musicalInstrumentsLearning?'是':'否'","musicalInstrumentsName","joinParentMeeting?'是':'否'","remark",};
+            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");
@@ -3054,16 +2846,14 @@ public class ExportController extends BaseController {
         queryInfo.setRows(49999);
         List<TeacherServeDto> list = studentExtracurricularExercisesSituationService.queryTeacherPerformanceIndicator(queryInfo);
         if (list.size() <= 0) {
-            
-            
-            
-            
             return;
         }
         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[] 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");

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

@@ -97,7 +97,7 @@ public class MusicGroupPaymentCalenderDetailController extends BaseController {
     @GetMapping("/queryArrearageStudents")
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/queryArrearageStudents')")
     public HttpResponseResult<PageInfo<MusicArrearageStudentDto>> queryArrearageStudents(ArrearageStudentsQueryInfo queryInfo){
-        queryInfo.setOrganIds(organizationService.getEmployeeOrgan(queryInfo.getOrganIds()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(musicGroupPaymentCalenderDetailService.queryArrearageStudents(queryInfo));
     }
 

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

@@ -52,14 +52,11 @@ public class StudentExtracurricularExercisesSituationController extends BaseCont
     @Autowired
     private OrganizationService organizationService;
 
-    @Autowired
-    private EmployeeService employeeService;
-
     @ApiOperation(value = "课外训练-教学")
     @GetMapping("/findStudentExtracurricularExercisesSituations")
     @PreAuthorize("@pcs.hasPermissions('exercisesSituation/findStudentExtracurricularExercisesSituations')")
     public HttpResponseResult findStudentExtracurricularExercisesSituations(StudentExercisesSituationQueryInfo queryInfo){
-        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(queryInfo.getOrganIdList()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(studentExtracurricularExercisesSituationService.findStudentExtracurricularExercisesSituations(queryInfo));
     }
 

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

@@ -5,6 +5,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.ActivityQueryDto;
+import com.ym.mec.biz.dal.dto.OrganDoubleEleven2021StatisDto;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
@@ -51,8 +52,8 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "分部双11活动统计")
     @GetMapping("/organDoubleEleven2021Statis")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/organDoubleEleven2021Statis')")
-    public HttpResponseResult organDoubleEleven2021Statis(String order, String sort,Integer organId){
-        return succeed(vipGroupActivityService.organDoubleEleven2021Statis(order,sort,organId));
+    public HttpResponseResult organDoubleEleven2021Statis(OrganDoubleEleven2021StatisDto queryInfo){
+        return succeed(vipGroupActivityService.organDoubleEleven2021Statis(queryInfo));
     }
 
     @ApiOperation(value = "分部2021双11活动学员列表")

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

@@ -162,8 +162,8 @@ public class ActivityController extends BaseController {
 
     @ApiOperation(value = "分部双11活动统计")
     @GetMapping("/organDoubleEleven2021Statis")
-    public HttpResponseResult organDoubleEleven2021Statis(String order,String sort,Integer organId){
-        return succeed(vipGroupActivityService.organDoubleEleven2021Statis(order,sort,organId));
+    public HttpResponseResult organDoubleEleven2021Statis(OrganDoubleEleven2021StatisDto queryInfo){
+        return succeed(vipGroupActivityService.organDoubleEleven2021Statis(queryInfo));
     }
 
     @ApiOperation(value = "双11活动统计")

+ 3 - 44
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentExtracurricularExercisesSituationController.java

@@ -2,26 +2,21 @@ package com.ym.mec.web.controller.education;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.TeacherServeDto;
-import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.*;
 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.tenant.TenantContextHolder;
 import com.ym.mec.util.date.DateUtil;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.DayOfWeek;
 import java.time.LocalDate;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -35,43 +30,21 @@ public class EduStudentExtracurricularExercisesSituationController extends BaseC
 
     @Autowired
     private StudentExtracurricularExercisesSituationService studentExtracurricularExercisesSituationService;
-
     @Autowired
     private SysUserFeignService sysUserFeignService;
-
     @Autowired
     private ExtracurricularExercisesMessageService extracurricularExercisesMessageService;
-
     @Autowired
     private StudentCourseHomeworkReplyService studentCourseHomeworkReplyService;
-
     @Autowired
     private StudentServeService studentServeService;
-
-    @Autowired
-    private EmployeeDao employeeDao;
-
     @Autowired
-    private EmployeeService employeeService;
+    private OrganizationService organizationService;
 
     @ApiOperation(value = "课外训练-教学")
     @GetMapping("/findStudentExtracurricularExercisesSituations")
     public HttpResponseResult findStudentExtracurricularExercisesSituations(StudentExercisesSituationQueryInfo queryInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        Employee employee = employeeDao.get(sysUser.getId());
-        if (StringUtils.isEmpty(queryInfo.getOrganIdList())) {
-            queryInfo.setOrganIdList(employee.getOrganIdList());
-        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
-            return failed("用户所在分部异常");
-        }else {
-            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-            if(!list.containsAll(Arrays.asList(queryInfo.getOrganIdList().split(",")))){
-                return failed("非法请求");
-            }
-        }
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(studentExtracurricularExercisesSituationService.findStudentExtracurricularExercisesSituations(queryInfo));
     }
 
@@ -84,21 +57,7 @@ public class EduStudentExtracurricularExercisesSituationController extends BaseC
     @ApiOperation(value = "教师服务指标明细")
     @GetMapping("/queryTeacherServeInfo")
     public HttpResponseResult queryTeacherServeInfo(TeacherServeQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        Employee employee = employeeService.get(sysUser.getId());
-        if (StringUtils.isBlank(queryInfo.getOrganId())) {
-            queryInfo.setOrganId(employee.getOrganIdList());
-        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
-            return failed("用户所在分部异常");
-        }else {
-            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
-                return failed("非法请求");
-            }
-        }
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeInfo(queryInfo));
     }
 

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

@@ -0,0 +1,259 @@
+[退费记录导出]
+headColumns = ["退费编号", "学员编号", "学员姓名","分部", "课程组编号", "课程组类型","退费金额","退费类型","退费时间","交易流水号", "打款时间"]
+fieldColumns = ["id", "userId","username", "organName", "groupId","groupType.desc","amount", "returnFeeType.msg", "createTime", "transNo","payTime"]
+
+[乐团列表导出]
+headColumns = ["分部", "乐团编号", "乐团名称","合作单位", "乐团状态","收费模式","收费类型","乐团主管","成团人数", "在读人数", "申请时间", "成团时间", "清单状态"]
+fieldColumns = ["organName", "id", "name","cooperationOrganName", "status.msg", "courseViewType.msg","chargeTypeName","educationalTeacherName", "teamTeacherName", "groupMemberNum","payNum","createTime","updateTime","hasVerifyMusicalList?'已确认':'未确认'"]
+
+[21年暑期考级活动统计页面详情导出]
+headColumns = ["分部", "合作单位", "乐团","学员编号", "学员姓名", "手机号","声部","所在班级","指导老师", "是否预约", "器乐等级", "乐理等级", "是否购买VIP","是否购买乐理课"]
+fieldColumns = ["organName", "cooperationOrganName", "musicGroupName","userId", "username", "phone","subjectName","currentClass", "realName", "isReserve == true ?'是':'否'","gradeLeave","theoryLevel","buyVipFlag == true ?'是':'否'","buyTheoryCourseFlag == true ?'是':'否'"]
+
+[2021双十一学员购买详情]
+headColumns = ["学员编号", "学员姓名","订单号", "交易金额","交易时间", "订单创建时间", "购买课程", "赠送会员"]
+fieldColumns = ["userId", "username", "orderNo","amount", "payTime", "createTime","type","giveMember==0?'否':'是'"]
+
+[分部2021双11活动统计导出]
+headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "乐理课成交金额", "乐理课成交人数", "赠送会员人数"]
+fieldColumns = ["organName", "totalBuyAmount", "totalBuyNum","avgBuyAmount", "vip1V120Amount", "vip1V120Num","vip1V140Amount", "vip1V140Num", "vip1V220Amount", "vip1V220Num","vip1V240Amount" ,"vip1V240Num","musicTheoryAmount","musicTheoryNum","giveMemberNum"]
+
+[学生个人账户余额导出]
+headColumns = ["分部","学员编号", "姓名", "电话", "声部","交易类型", "交易金额", "交易时间", "备注","可用余额"]
+fieldColumns = ["organName","userId", "username", "phone", "subjectName", "type.msg", "amount", "createTime", "comment","balance"]
+
+[学生个人课程余额导出]
+headColumns = ["分部", "学员编号", "姓名", "电话", "声部","交易类型", "交易金额", "交易时间", "备注","可用余额"]
+fieldColumns = ["organName", "userId", "username", "phone", "subjectName", "type.msg", "amount", "createTime", "comment","balance"]
+
+[班级列表导出]
+headColumns = ["课程组编号", "课程组名称", "分部名称", "班级名称","班级类型", "班级人数", "主教老师", "助教老师", "已上课时", "总课数"]
+fieldColumns = ["musicGroupId", "musicGroupName", "organName", "name", "type.msg", "studentNum == NUll?0:studentNum", "bishopTeacherName", "teachingTeacherName", "currentClassTimes", "totalClassTimes"]
+
+[商品列表导出]
+headColumns = ["商品编号", "货号", "品牌", "商品名称","是否组合商品", "商品类型", "商品分类", "具体型号", "内部库存", "税务库存", "库存类型", "市场价(元)","零售价(元)", "商品团购价(元)", "商品描述", "商品详情", "是否上下架"]
+fieldColumns = ["id", "sn", "brand", "name", "complementGoodsIdList == null || complementGoodsIdList == '' ? '否':'是'", "type.desc", "goodsCategoryName", "specification", "stockCount", "taxStockCount", "stockType.msg", "marketPrice", "discountPrice", "groupPurchasePrice", "brief", "desc", "status.msg"]
+
+[VIP活动导出]
+headColumns = ["分部名称", "活动编号", "活动名称", "活动内容", "适用课程类型","启用状态", "活动持续时间", "课程安排时间", "活动类型", "活动折扣", "线上课结算类型", "线上课结算公式","线下课结算类型", "线下课结算公式"]
+fieldColumns = ["organName", "id", "name", "description", "vipGroupCategoryIdList", "openFlag.msg", "time", "courseTime", "type", "disCount", "onlineSalaryType", "onlineSalarySettlement", "offlineSalaryType", "offlineSalarySettlement"]
+
+[学员考勤记录导出]
+headColumns = ["分部编号", "分部名称", "课程组类型", "课程组编号", "课程组名称", "学员姓名","学员编号", "课程编号", "课程名称", "上课日期", "上课开始时间", "上课结束时间","指导老师名称", "指导老师编号", "教务老师名称", "教务老师编号", "授课老师名称", "授课老师编号", "学员考勤状态"]
+fieldColumns = ["organId", "organName", "groupType.desc", "groupId", "groupName", "username", "userId", "courseScheduleId", "courseScheduleName", "classDate", "startClassTime", "endClassTime", "guideTeacherName", "guideTeacherId" , "educationalTeacherName", "educationalTeacherId", "actualTeacherName", "actualTeacherId", "studentAttendanceStatus.msg"]
+
+[缴费记录导出]
+headColumns = ["学员编号", "学员姓名", "学员声部", "学员状态", "手机号","缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间","会员金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"]
+fieldColumns = ["userId", "sysUser.username", "studentRegistration.subjectName", "studentRegistration.musicGroupStatus.msg", "sysUser.phone", "startPaymentDateMgpc", "deadlinePaymentDateMgpc", "openFlag.msg", "paymentStatus.desc", "payTime", "cloudAmount", "musicalAmount", "courseAmount", "accessoriesAmount", "maintenanceAmount", "activityAmount"]
+
+[业务管理--审核列表导出]
+headColumns = ["分部名称", "分部编号", "乐团编号", "乐团名称", "申请类型", "订单类型", "加课总时长(分钟)", "原现价(元)","申请价格(元)", "备注", "申请人", "状态", "申请时间"]
+fieldColumns = ["organName", "organId", "musicGroupId", "musicGroupName", "paymentType.desc", "payUserType.desc", "addCourseTotalTime", "courseCurrentPrice", "courseOriginalPrice", "memo", "operatorName", "auditStatus.desc", "createTime"]
+
+[导出教师考勤列表]
+headColumns = ["分部", "老师编号", "老师姓名", "工作性质", "课程编号", "课程名称", "上课日期","课程开始时间", "课程结束时间", "课程类型", "签到时间", "签到状态", "签退时间", "签退状态", "备注"]
+fieldColumns = ["organName", "teacherId", "teacherName", "jobNature.msg", "courseScheduleId", "courseScheduleName", "classDate", "startClassTime", "endClassTime", "courseScheduleType.msg", "signInTime", "signInStatus.msg", "signOutTime", "signOutStatus.msg", "remark"]
+
+[导出申述处理列表]
+headColumns = ["分部", "老师ID", "老师姓名", "课酬归属时间", "申诉提交时间", "状态","申述处理者"]
+fieldColumns = ["organName", "teacherId", "realName", "salarySettlementMonth", "createTime", "statusEnum.msg", "operatorRealName"]
+
+[网管课购买列表]
+headColumns = ["学员编号", "学员名称", "所属分部", "课程老师", "课程组老师", "购买网管课","免费课结束日期", "首次购买日期", "时间差"]
+fieldColumns = ["studentId", "studentName", "organName", "teacherName", "courseGroupTeacherName", "buyPractice.msg", "lastClassDate", "firstBuyTime", "intervalDay"]
+
+[导出对外订单列表]
+headColumns = ["交易流水号", "订单号", "订单日期", "交易类型", "应付金额", "实付金额", "用户姓名", "手机号码", "交易方式", "收款账户", "交易状态","备注", "交易方式"]
+fieldColumns = ["transNo", "orderNo", "createTime", "type.desc", "expectAmount", "actualAmount", "user.username", "user.phone", "paymentChannel", "merNos", "status.msg", "memo", "paymentChannel.desc"]
+
+[导出老师课酬]
+headColumns = ["课时编号", "老师编号", "老师姓名", "老师分部", "工作类别","课程分部", "课程组编号", "课程班名称", "乐团模式", "vip活动名称", "Vip课程类型", "阶梯奖励名称", "线上课/线下课", "线上课单价", "线下课单价","课程类别", "课时时长", "实际上课时长", "上课日期","上课时间", "教师签到状态", "教师签退状态", "教师签到时间", "教师签退时间", "考勤申诉处理状态", "处理意见","主辅", "上课地点", "应到学员", "学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因", "收入"]
+fieldColumns = ["courseScheduleId", "teacherId", "teacherName", "teacherOrganName", "jobType", "courseScheduleOrganName", "groupId", "groupName", "changeType", "vipActiveName", "vipCategoryName", "activeName", "teachMode", "onlineClassesUnitPrice", "offlineClassesUnitPrice", "courseScheduleType", "signCourseScheduleTime", "currentTime", "classDate", "courseScheduleStartTime", "signInStatus", "signOutStatus", "signInTime", "signOutTime", "complaintsStatus", "disposeContent", "teacherRole", "address", "studentNum", "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason", "courseIncome"]
+
+[导出老师结转奖励]
+headColumns = ["课程组编号", "课程组名称", "分部", "指导老师", "是否结转", "结转金额", "结转日期", "备注"]
+fieldColumns = ["musicGroupId", "courseGroupName", "organName", "teacherName", "settlementStatus.msg", "expectRewardAmount", "settlementDate", "memo"]
+
+[导出学员列表]
+headColumns = ["分部", "学员编号", "学员姓名", "性别", "家长姓名","家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)","所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用团练宝", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"]
+fieldColumns = ["organName", "userId", "username", "gender.description", "parentsName", "parentsPhone", "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 : '已失效'"]
+
+[导出陪练课列表]
+headColumns = ["课程组编号", "课程组名称", "课程组类型", "分部", "教务老师", "指导老师", "班级人数","当前课次", "总课次", "剩余课次", "开课时间", "结束时间", "课程组状态", "是否续费", "备注"]
+fieldColumns = ["id", "name", "type.msg", "organName", "educationalTeacherName", "teacherName", "studentNum", "currentClassTimes", "totalClassTimes", "subClassTimes", "coursesStartDate", "coursesExpireDate", "groupStatus.desc", "payStatus", "memo"]
+
+[导出VIP课管理]
+headColumns = ["VIP编号", "课程名称", "课程状态", "指导老师", "教务老师", "班级人数", "课程单价","活动方案", "当前课次", "总课次", "剩余课次", "月消耗", "上次课时间", "开课时间", "结束时间", "申请时间", "学生姓名", "课程形式", "备注"]
+fieldColumns = ["id", "name", "status.msg", "userName", "educationalTeacherName", "studentNum", "courseUnitPrice", "vipGroupActivityName", "currentClassTimes", "totalClassTimes", "totalClassTimes == null ? 0 : totalClassTimes - (currentClassTimes == null ? 0 : currentClassTimes)", "monthConsumeRate", "lastOverTime", "courseStartDate", "coursesExpireDate", "registrationStartTime", "userInfo", "vipGroupCategoryName", "stopReason"]
+
+[终课表列表导出]
+headColumns = ["分部名称", "乐团主管", "课程编号", "开始时间", "结束时间","班级名称", "班级声部", "课程名称", "课程类型", "教学模式","教学点", "课程状态", "指导老师", "学员编号", "是否点名", "是否有考勤申诉", "预计上课人数"]
+fieldColumns = ["organName", "educationTeacherName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name", "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg", "isComplaints", "studentNum"]
+
+[导出零星收费列表]
+headColumns = ["分部", "收费类型", "标题", "收费状态", "金额", "时间", "学生姓名", "订单类型", "创建人"]
+fieldColumns = ["organName", "chargeType.msg", "title", "openFlag == 0?'开启':'关闭'", "amount", "createTime", "userName", "userId == null?'公用':'个人'", "operatorName"]
+
+[导出乐器采购清单]
+headColumns = ["分部", "乐团", "商品类型", "商品名称", "型号", "数量"]
+fieldColumns = ["brief", "memo", "type.desc", "name", "specification", "sellCount"]
+
+[导出学员采购清单明细]
+headColumns = ["分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "团练宝金额", "乐保金额", "订单总价"]
+fieldColumns = ["organName", "musicGroupName", "userId", "username", "subjectName", "musicalName", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"]
+
+[学生详情列表导出]
+headColumns = ["学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业","实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买团练宝"]
+fieldColumns = ["studentName", "parentsName", "currentGrade", "currentClass", "gender.description", "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc", "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"]
+
+[分页导出教师薪酬列表]
+headColumns = ["用户编号", "用户名", "手机号", "课程类型", "实际薪水", "补助", "结算时间", "教师角色"]
+fieldColumns = ["userId", "username", "phone", "type.msg", "name", "actualSalary", "subsidy", "settlementTime", "teacherRole.msg"]
+
+[订单列表导出1]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额",    "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费",    "账户充值", "其它", "汇付手续费","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee",     "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId",     "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
+
+[订单列表导出2]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额",    "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费",    "账户充值", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee",     "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId",     "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
+
+[学员小课记录导出]
+headColumns = ["分部", "学员编号", "学生姓名", "课程余额", "声部", "VIP已结束课时数", "VIP未开始课时数", "已结束VIP上课老师编号", "已结束VIP上课老师","网管课已结束课时数", "网管课未开始课时数", "已结束网管课上课老师编号", "已结束网管课上课老师", "指导老师编号", "指导老师"]
+fieldColumns = ["organName","userId", "username","courseBalance", "subjectName", "vipOverNum", "vipNotStartNum", "vipOverTeacherId", "vipOverTeacherName" , "practiceOverNum", "practiceNotStartNum", "practiceOverTeacherId", "practiceOverTeacherName","teacherId","teacherName"]
+
+[乐团导出学员列表]
+headColumns = ["学员编号", "学员姓名", "性别", "联系电话","入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活","VIP/网管是否有课","关心包","加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"]
+fieldColumns = ["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 ? '未生效' : '会员已过期'"]
+
+[评论列表导出]
+headColumns = ["分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"]
+fieldColumns = ["organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName",  "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song",  "memo", "createTimeStr", "hasLiaison", "studentReview", "assignHomeworkStr", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"]
+
+[网管课管理导出]
+headColumns = ["分部", "学生编号", "学生姓名", "网管课老师id", "网管课老师", "教务老师id", "教务老师","有效期截止时间", "课程截止时间", "总课时", "剩余课时", "是否购买"]
+fieldColumns = ["organName", "studentId", "studentName", "teacherIds", "teacherName", "eduTeacherIds", "eduTeacherName", "expireDate", "classEndDate", "totalClassTimes", "noStartClassTimes", "buyPractice.msg"]
+
+[vip管理导出]
+headColumns = ["分部", "学生编号", "学生姓名", "指导老师id", "指导老师", "教务老师id", "教务老师", "课程开始时间", "课程截止时间", "上次课时间", "总课时", "剩余课时"]
+fieldColumns = ["organName", "studentId", "studentName", "teacherIds", "teacherName", "eduTeacherIds", "eduTeacherName", "classStartDate", "classEndDate", "lastClassDate", "totalClassTimes", "noStartClassTimes"]
+
+[学生课外训练记录导出]
+headColumns = ["布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交训练", "提交训练时间", "是否评价", "是否有vip", "及时评价"]
+fieldColumns = ["createTime", "expireDate", "title", "teacherName", "organName",          "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr"]
+
+[课外训练-教学导出]
+headColumns = ["学员编号", "学员姓名", "所属分部", "乐团名称", "指导老师", "教务老师", "服务课程",         "预期安排", "实际安排", "提交次数", "评价次数", "及时评价次数", "付费网管课", "VIP课", "训练提交时间"]
+fieldColumns = ["studentId", "studentName", "organName", "groupNames", "teacherName",          "educationalTeacherName", "serveType == 'EXERCISE' ? '课外训练':courseIds",          "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum",         "exercisesMessageNum", "exercisesMessageTimelyNum", "existPracticeCourse", "existVipCourse", "lastSubmitTime"]
+
+[教师课酬导出]
+headColumns = ["分部", "课程组类型", "课程编号", "时间", "课程名称", "老师编号", "老师姓名", "签到时间", "签退时间",        "学员缴费", "课酬类型", "应发课酬", "课酬扣款", "结算课酬", "状态", "备注", "扣款原因"]
+fieldColumns = ["organName", "groupType.desc", "courseScheduleId", "startClassTime", "courseName", "teacherId", "teacherName",         "signInStatusStr", "signOutStatusStr", "actualReceipts", "salaryType", "actualSalary", "reduceSalary", "finalSalary",         "confirmStatus.desc", "memo", "deductionReason"]
+
+[运营指标管理导出]
+headColumns = ["分部", "乐团名称", "学生", "学生编号", "指导老师", "指导老师id", "参与运营指标", "有线上VIP课", "参与免费网管课", "有付费网管课", "有乐团网管课"]
+fieldColumns = ["organName", "groupNames", "studentName", "studentId", "teacherName", "teacherId",          "operatingTagStr", "vipTimesStr", "freePracticeTimesStr", "buyPracticeTimesStr", "musicNetWorkTimesStr"]
+
+[vip评论列表导出]
+headColumns = ["分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置训练)", "是否布置训练", "是否提交训练", "教务老师", "教务评价"]
+fieldColumns = ["organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial",  "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr",  "handHomeworkStr", "eduTeacherName", "courseReview"]
+
+[考级报名导出]
+headColumns = ["姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"]
+fieldColumns = ["name", "gender == 1?'男':'女'", "idcard", "city", "school", "subject", "level", "theoryLevel",  "theoryCert", "mobile", "money", "theoryMoney", "memo", "status == 2?'已缴费':'未缴费'", "orderNo", "transNo", "createTime"]
+
+[合作单位导出]
+headColumns = ["分部", "单位编号", "单位名称", "是否启用","乐团主管","状态栏"]
+fieldColumns = ["organization.name", "id", "name", "isEnable == true ? '是':'否'", "realName", "isEnable == true ? '开启' : '未开启'"]
+
+[财务管理导出1]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId", "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
+
+[财务管理导出2]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount" , "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
+
+[老师默认课酬导出]
+headColumns = ["老师编号", "姓名", "分部", "工作类型", "在职状态", "老师状态", "1v1", "1v2", "1v3", "1v4", "1v5", "1v6", "1v7","网管课", "单技课2.0(主教)", "合奏课2.0(主教)", "综合课2.0(主教)", "集训单技课2.0(主教)", "集训合奏课2.0(主教)","基础技能课2.0(主教)", "课堂课(主教)", "单技课3.0(主教)", "合奏课3.0(主教)", "综合课3.0(主教)", "集训单技课3.0(主教)", "集训合奏课3.0(主教)","基础技能课3.0(主教)", "单技课2.0(助教)", "合奏课2.0(助教)", "综合课2.0(助教)", "集训单技课2.0(助教)", "集训合奏课2.0(助教)","基础技能课2.0(助教)", "课堂课(助教)", "单技课3.0(助教)", "合奏课3.0(助教)", "综合课3.0(助教)", "集训单技课3.0(助教)", "集训合奏课3.0(助教)","基础技能课3.0(助教)", "网络基础训练课1v3", "网络基础训练课1v4", "网络基础训练课1v5", "乐团网管课1v1"]
+fieldColumns = ["userId", "realName", "organName", "jobNature", "demissionStatus", "status", "vip1", "vip2", "vip3", "vip4", "vip5", "vip6", "vip7", "practiceSalary", "mainSingleSalary2", "mainMixSalary2", "mainComprehensiveSalary2", "mainTraningSigleSalary2", "mainTraningMixSalary2", "mainHighSalary2", "mainClassroomSalary2", "mainSingleSalary", "mainMixSalary", "mainComprehensiveSalary", "mainTraningSigleSalary", "mainTraningMixSalary", "mainHighSalary", "assistantSingleSalary2", "assistantMixSalary2", "assistantComprehensiveSalary2", "assistantTraningSigleSalary2", "assistantTraningMixSalary2", "assistantHighSalary2", "assistantClassroomSalary2", "assistantSingleSalary", "assistantMixSalary", "assistantComprehensiveSalary", "assistantTraningSigleSalary", "assistantTraningMixSalary", "assistantHighSalary", "highOnline3Salary", "highOnline4Salary", "highOnline5Salary", "musicNetwork1Salary"]
+
+[报名中缴费中乐团缴费情况导出]
+headColumns = ["分部","乐团名称","乐团状态","审核通过时间","报名总数","团购数","缴费总数","回款总金额"]
+fieldColumns = ["organName","musicGroupName","musicGroupStatus","auditSuccessTime","registerNum","groupBuyMusicalNum","registerPayNum","totalMoney"]
+
+[乐团声部在读人数导出]
+headColumns = ["分部","乐团名称","乐团状态","在读总人数"]
+fieldColumns = ["organName","musicGroupName","musicGroupStatus","normalNum"]
+
+[回款统计]
+headColumns = ["学员编号", "学员姓名", "指导老师", "教务老师", "订单日期", "交易类型", "实际金额"]
+fieldColumns = ["studentId", "studentName", "teacherName", "eduTeacherName", "createTime", "orderType.msg", "actualAmount"]
+
+[销售列表导出]
+headColumns = ["交易流水号", "订单号", "销售日期", "销售类型", "商品名称", "数量", "订单金额(元)", "应付金额(元)", "余额支付(元)","现金支付(元)", "优惠金额(元)", "销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部","所属学校", "教务老师", "确认收货", "状态"]
+fieldColumns = ["transNo", "orderNo", "sellTime", "type.desc", "goodsName", "num", "orderAmount", "expectAmount", "balanceAmount", "actualAmount", "couponRemitAmount", "sellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName", "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"]
+
+[欠费学员列表导出]
+headColumns = ["学员编号", "学员姓名", "所属分部", "合作单位", "所在乐团", "乐团主管", "声部", "性别", "家长姓名", "家长联系电话", "欠费金额"]
+fieldColumns = ["userId", "studentName", "organName", "cooperationName", "musicGroupName", "eduTeacherName", "subjectName", "gender==0?'女':'男'", "parentName", "phone", "noPaymentAmount"]
+
+[退团申请列表导出]
+headColumns = ["学员编号", "学员姓名", "所属乐团", "申请时间", "退团原因", "状态"]
+fieldColumns = ["userId", "user.username", "musicGroup.name", "createTime", "userComment", "status.getMsg()"]
+
+[服务指标明细导出]
+headColumns = ["分部", "老师编号", "老师姓名", "服务周期", "课后训练(节)", "课外训练(人)", "布置次数", "提交次数","训练布置", "训练点评", "训练提交率","提醒时间", "操作人"]
+fieldColumns = ["organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "exerciseNum", "actualExercisesNum", "exercisesReplyNum", "expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "submitRate", "remindDate", "operatorName"]
+
+[首页异常统计导出]
+headColumns = ["分部", "基础技能班学员数量异常", "乐团巡查事项异常", "未在班级学员数", "欠费学员数","申请退团学员数", "预计课酬较低", "课程时间安排异常", "乐团巡查未计划", "乐团巡查任务未提交","回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "会员过期学员数", "总计"]
+fieldColumns = ["organName", "highClassStudentLessThanThreeNum", "musicPatrolItem", "noClassMusicGroupStudentInfo", "studentNotPayment", "studentApplyForQuitMusicGroup", "teacherExpectSalaryBeLow", "courseTimeError", "inspectionItem", "inspectionItemPlan", "studentVisit", "teacherExceptionAttendance", "teacherNotAClass", "teacherServeError", "studentErrorLeave", "noMemberStudentNum", "total"]
+
+[运营预警导出]
+headColumns = ["月份", "分部", "老师", "专业", "乐团节数", "VIP结束", "网管节数","预计乐团课酬", "预计VIP课酬", "预计网管课酬", "预计课酬合计", "平均上课时长"]
+fieldColumns = ["monthStr", "organName", "realName", "subjectListStr", "musicCourseNum", "vipCourseNum", "practiceCourseNum", "expectMusicCourseSalary", "expectVipCourseSalary", "expectPracticeCourseSalary", "expectTotalSalary", "averageClassMinutes"]
+
+[首页历史异常统计导出]
+headColumns = ["日期", "分部", "乐团主管", "乐团巡查事项异常", "剩余乐团巡查事项异常", "乐团巡查任务未提交", "剩余乐团巡查任务未提交","课程考勤异常", "剩余课程考勤异常", "课程异常", "剩余课程异常"]
+fieldColumns = ["generateTime", "organName", "dealUserName", "musicPatrolItem", "musicPatrolItemSurplus", "inspectionItemPlan", "inspectionItemPlanSurplus", "teacherExceptionAttendance", "teacherExceptionAttendanceSurplus", "teacherNotAClass", "teacherNotAClassSurplus"]
+
+[老师列表导出]
+headColumns = ["老师编号", "老师名称", "所属分部", "老师状态", "专业技能", "联系电话", "工作类型","员工状态", "已开小课", "试听课安排", "开放网管课","转正日期","离职日期"]
+fieldColumns = ["id", "realName", "organName", "lockFlag == 0?'正常':lockFlag == 1?'冻结':'锁定'", "splitSubjectName", "phone", "jobNature.msg", "isProbationPeriod.msg", "vipNum", "demoNum", "isSupportExtraPracticeLesson?'是':'否'","formalStaffDate","demissionDate"]
+
+[人力资源导出]
+headColumns = ["编号", "姓名", "手机号", "微信","声部", "所在城市", "工作意向", "信息来源","下次沟通时间","入职时间","职位", "分部", "人员状态", "证件号码","年龄","性别","银行卡", "开户行", "紧急联系人", "紧急联系人关系","紧急联系人电话","最后一次操作时间","HRBP", "离职时间"]
+fieldColumns = ["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"]
+
+[分部下教师关联的会员数据导出]
+headColumns = ["老师编号", "老师姓名", "学员总数", "使用人数", "使用人数比", "付费学员数量", "会员占比"]
+fieldColumns = ["teacherId", "teacherName", "totalStudentNum", "cloudStudyUseStudentNum", "cloudStudyUseStudentDuty+'%'", "vipStudentNum", "vipStudentDuty+'%'"]
+
+[分部云教练学员数据预览导出]
+headColumns = ["排名", "分部", "学员总数", "目标人数", "活跃人数", "使用人数", "新增使用人数", "使用比例", "付费会员数", "付费会员占比"]
+fieldColumns = ["index","organName", "totalStudentNum", "targetNum", "cloudStudyLivelyStudentNum", "cloudStudyUseStudentNum", "newCloudStudyStudentNum", "cloudStudyUseStudentDuty+'%'", "vipStudentNum", "vipStudentDuty+'%'"]
+
+[分部云教练学员数据详情导出]
+headColumns = ["排名", "分部", "学员总数", "活跃人数", "活跃人数比", "当日使用人数", "当日新增使用人数", "使用人数占比", "付费会员数量","付费会员占比", "新增付费会员"]
+fieldColumns = ["index", "organName", "totalStudentNum", "cloudStudyLivelyStudentNum", "cloudStudyLivelyStudentDuty+'%'", "cloudStudyUseStudentNum", "newCloudStudyStudentNum", "cloudStudyUseStudentDuty+'%'", "vipStudentNum", "vipStudentDuty+'%'", "newMemberStudentNum"]
+
+[分部云教练学员训练数据导出]
+headColumns = ["学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "指导老师", "声部", "是否有小课","训练次数", "训练天数", "训练平均时长", "会员有效期", "是否服务", "是否运营", "是否团练宝活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"]
+fieldColumns = ["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",         "carePackage>0?carePackage>1?'已使用':'可用':'不可用'", "comeOnPackage>0?comeOnPackage>1?'已使用':'可用':'不可用'",         "notStartCourseNum", "notStartVipCourseNum", "notStartPracticeCourseNum"]
+
+[分部云教练活动统计数据导出]
+headColumns = ["分部", "购买人数", "购买金额", "目标金额", "人均购买金额", "目标人数", "目标达成率"]
+fieldColumns = ["organName", "buyNum", "buyAmount", "targetAmount", "avgBuyAmount",         "targetNum", "targetFinishScale"]
+
+[云教练活动统计详情]
+headColumns = ["学员编号", "学员", "合作单位", "乐团", "乐团模式", "声部", "年级", "指导老师", "购买套餐", "购买金额"]
+fieldColumns = ["userId", "username", "cooperationName", "musicGroupName", "chargeType",         "subjectName", "currentGradeNum", "teacherName", "remark", "amount"]
+
+[启蒙课问卷导出]
+headColumns = ["学员姓名","联系电话","年级","班级","老师推荐专业","是否在学习某件乐器","目前所学乐器","报名参加管乐团家长会了解相关情况","备注"]
+fieldColumns = ["userName","phone","currentGrade","currentClass","subjectName == null?'无':subjectName","musicalInstrumentsLearning?'是':'否'", "musicalInstrumentsName","joinParentMeeting?'是':'否'","remark"]
+
+[服务指标导出]
+headColumns = ["分部","老师编号","老师姓名","预计安排(人次)","实际安排(人次)","布置率(%)","提交人数","点评次数","点评率(%)","及时点评次数","及时点评率(%)"]
+fieldColumns = ["organName","teacherId","teacherName","expectExercisesNum","actualExercisesNum", "100 * actualExercisesNum / expectExercisesNum","exercisesReplyNum","exercisesMessageNum", "100 * exercisesMessageNum / exercisesReplyNum", "exercisesMessageTimelyNum","100 * exercisesMessageTimelyNum / exercisesReplyNum"]

Some files were not shown because too many files changed in this diff