|  | @@ -26,7 +26,6 @@ import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.excel.POIUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.ini.IniFileUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.upload.UploadUtil;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
	
		
			
				|  | @@ -39,9 +38,7 @@ import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.annotation.PostConstruct;
 | 
	
		
			
				|  |  |  import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  import java.io.*;
 | 
	
		
			
				|  |  | -import java.lang.reflect.InvocationTargetException;
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  import java.util.concurrent.CompletableFuture;
 | 
	
	
		
			
				|  | @@ -52,6 +49,7 @@ import java.util.function.Function;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import static com.ym.mec.biz.dal.enums.OrderTypeEnum.OUTORDER;
 | 
	
		
			
				|  |  | +import static com.ym.mec.common.controller.BaseController.succeed;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class ExportServiceImpl implements ExportService {
 | 
	
	
		
			
				|  | @@ -107,8 +105,6 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private PracticeGroupService practiceGroupService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private CourseScheduleService scheduleService;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  |      private SporadicChargeInfoService sporadicChargeInfoService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private CourseReviewService courseReviewService;
 | 
	
	
		
			
				|  | @@ -178,6 +174,7 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      private SysUserCashAccountLogService sysUserCashAccountLogService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private StudentStatisticsService studentStatisticsService;
 | 
	
		
			
				|  |  | +    private static final ExecutorService exportExecutorService = Executors.newFixedThreadPool(10);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Value("${spring.profiles.active:dev}")
 | 
	
		
			
				|  |  |      private String profiles;
 | 
	
	
		
			
				|  | @@ -1393,17 +1390,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  //        queryInfo.setRoutingOrganId(null);
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ROUTE_ORDER,sysUser.getId());
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.routeOrderList(params, managerDownload, headColumns);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }, executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.routeOrderList(params, managerDownload, headColumns),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //学员小课记录导出
 | 
	
	
		
			
				|  | @@ -1417,17 +1405,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          Integer tenantId = TenantContextHolder.getTenantId();
 | 
	
		
			
				|  |  |          SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_PRACTICE,sysUser.getId());
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.studentVipPractice(organId, managerDownload, tenantId,headColumns);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        },executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.studentVipPractice(organId, managerDownload, tenantId,headColumns),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //学员小课记录导出
 | 
	
	
		
			
				|  | @@ -1441,17 +1420,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_COURSE_INFO,sysUser.getId());
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.queryStudentCourseInfo(organId, tenantId,"VIP", managerDownload,headColumns,ExportEnum.STUDENT_VIP_COURSE_INFO);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        },executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId,"VIP", managerDownload,headColumns,ExportEnum.STUDENT_VIP_COURSE_INFO),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //vip学员课程管理
 | 
	
	
		
			
				|  | @@ -1461,17 +1431,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          String organId = organizationService.getEmployeeOrgan(sysUser.getId(),getParam(info, "organId", String.class),sysUser.getIsSuperAdmin());
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.VIP_STUDENT_COURSE_MANAGE,sysUser.getId());
 | 
	
		
			
				|  |  |          Integer tenantId = TenantContextHolder.getTenantId();
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.queryVipStudentCourseManage(organId, tenantId,managerDownload,headColumns,ExportEnum.VIP_STUDENT_COURSE_MANAGE);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        },executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.queryVipStudentCourseManage(organId, tenantId,managerDownload,headColumns,ExportEnum.VIP_STUDENT_COURSE_MANAGE),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //学员小课记录导出
 | 
	
	
		
			
				|  | @@ -1485,17 +1446,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_MUSIC_THEORY_COURSE_INFO,sysUser.getId());
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.queryStudentCourseInfo(organId, tenantId,"THEORY", managerDownload,headColumns,ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        },executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId,"THEORY", managerDownload,headColumns,ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //订单列表导出
 | 
	
	
		
			
				|  | @@ -1525,17 +1477,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |              return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ORDER,sysUser.getId());
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.orderList(params, managerDownload, headColumns);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        },executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.orderList(params, managerDownload, headColumns),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //订单列表导出
 | 
	
	
		
			
				|  | @@ -1565,17 +1508,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |              return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ORDER_LIST_SUM,sysUser.getId());
 | 
	
		
			
				|  |  | -        ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  | -        CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -            try {
 | 
	
		
			
				|  |  | -                this.orderListSum(params, managerDownload, headColumns);
 | 
	
		
			
				|  |  | -            } catch (Exception e) {
 | 
	
		
			
				|  |  | -                e.printStackTrace();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        },executor);
 | 
	
		
			
				|  |  | -        HttpResponseResult<Object> succeed = BaseController.succeed();
 | 
	
		
			
				|  |  | -        succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | -        return succeed;
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.orderListSum(params, managerDownload, headColumns),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //保存下载记录
 | 
	
	
		
			
				|  | @@ -1601,7 +1535,7 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void orderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns) throws Exception {
 | 
	
		
			
				|  |  | +    public void orderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns){
 | 
	
		
			
				|  |  |          List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
 | 
	
		
			
				|  |  |          long i = 1;
 | 
	
		
			
				|  |  |          Map<Integer, String> cooperationOrganMap = new HashMap<>();
 | 
	
	
		
			
				|  | @@ -2043,7 +1977,7 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void orderListSum(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns) throws Exception{
 | 
	
		
			
				|  |  | +    public void orderListSum(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns){
 | 
	
		
			
				|  |  |          List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
 | 
	
		
			
				|  |  |          //获取机构费率
 | 
	
		
			
				|  |  |          Integer tenantId = (Integer) params.get("tenantId");
 | 
	
	
		
			
				|  | @@ -2309,7 +2243,7 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns) throws Exception {
 | 
	
		
			
				|  |  | +    public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns){
 | 
	
		
			
				|  |  |          List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
 | 
	
		
			
				|  |  |          Map<Integer, String> cooperationOrganMap = new HashMap<>();
 | 
	
		
			
				|  |  |          List<Integer> cooperationOrganIds = studentPaymentOrderExportDtos.stream()
 | 
	
	
		
			
				|  | @@ -2873,21 +2807,25 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) throws Exception{
 | 
	
		
			
				|  |  | -        List<CourseScheduleEndDto> rows = courseScheduleService.endFindCourseSchedules(queryInfo).getRows();
 | 
	
		
			
				|  |  | -        for (CourseScheduleEndDto row : rows) {
 | 
	
		
			
				|  |  | -            row.setIsComplaints(StringUtils.equals(row.getIsComplaints(), "1") ? "有" : "无");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "乐团主管", "课程编号", "开始时间", "结束时间",
 | 
	
		
			
				|  |  | -                "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
 | 
	
		
			
				|  |  | -                "教学点", "课程状态", "指导老师", "学员编号", "是否点名", "是否有考勤申诉", "预计上课人数","合作单位"}, new String[]{
 | 
	
		
			
				|  |  | -                "organName", "educationTeacherName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
 | 
	
		
			
				|  |  | -                "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg", "isComplaints", "studentNum","cooperationOrgan"}, rows);
 | 
	
		
			
				|  |  | -        exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +    public void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload){
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            List<CourseScheduleEndDto> rows = courseScheduleService.endFindCourseSchedules(queryInfo).getRows();
 | 
	
		
			
				|  |  | +            for (CourseScheduleEndDto row : rows) {
 | 
	
		
			
				|  |  | +                row.setIsComplaints(StringUtils.equals(row.getIsComplaints(), "1") ? "有" : "无");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "乐团主管", "课程编号", "开始时间", "结束时间",
 | 
	
		
			
				|  |  | +                    "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
 | 
	
		
			
				|  |  | +                    "教学点", "课程状态", "指导老师", "学员编号", "是否点名", "是否有考勤申诉", "预计上课人数","合作单位"}, new String[]{
 | 
	
		
			
				|  |  | +                    "organName", "educationTeacherName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
 | 
	
		
			
				|  |  | +                    "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg", "isComplaints", "studentNum","cooperationOrgan"}, rows);
 | 
	
		
			
				|  |  | +            exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        }catch (Exception e){
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId,List<String> headColumns) throws Exception{
 | 
	
		
			
				|  |  | +    public void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId,List<String> headColumns){
 | 
	
		
			
				|  |  |          List<StudentVipPracticeExportDto> studentVipPracticeExportDtos = courseScheduleStudentPaymentDao.exportStudentVipPractice(organId, tenantId);
 | 
	
		
			
				|  |  |          if(studentVipPracticeExportDtos != null && studentVipPracticeExportDtos.size() > 0){
 | 
	
		
			
				|  |  |              List<Integer> studentIds = studentVipPracticeExportDtos.stream().map(e -> e.getUserId()).distinct().collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -2959,63 +2897,74 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void queryStudentCourseInfo(String organId, Integer tenantId, String groupType, ManagerDownload managerDownload, List<String> headColumns,ExportEnum exportEnum) throws Exception {
 | 
	
		
			
				|  |  | +    public void queryStudentCourseInfo(String organId, Integer tenantId, String groupType, ManagerDownload managerDownload, List<String> headColumns,ExportEnum exportEnum){
 | 
	
		
			
				|  |  |          List<ExportStudentCourseInfoDto> rows = courseScheduleStudentPaymentDao.queryStudentCourseInfo(organId,tenantId,groupType);
 | 
	
		
			
				|  |  |          HSSFWorkbook workbook = getHSSFWorkbook(rows,headColumns,exportEnum);
 | 
	
		
			
				|  |  |          exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) throws Exception{
 | 
	
		
			
				|  |  | +    public void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum){
 | 
	
		
			
				|  |  |          List<ExportVipStudentCourseManageDto> rows = courseScheduleStudentPaymentDao.queryVipStudentCourseManage(organId,tenantId);
 | 
	
		
			
				|  |  | -        HSSFWorkbook workbook = getHSSFWorkbook(rows,headColumns,exportEnum);
 | 
	
		
			
				|  |  | -        exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        exportManagerDownload(getHSSFWorkbook(rows,headColumns,exportEnum),managerDownload);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void exportStudentSmallClassStatisticsSum(StudentStatisticsQueryInfo queryInfo, ManagerDownload managerDownload) throws Exception{
 | 
	
		
			
				|  |  | +    public void exportStudentSmallClassStatisticsSum(StudentStatisticsQueryInfo queryInfo, ManagerDownload managerDownload){
 | 
	
		
			
				|  |  |          List<StudentStatisticsDto> rows = studentStatisticsService.queryStatisticsPage(queryInfo).getRows();
 | 
	
		
			
				|  |  | -        HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学生姓名", "学员编号","联系电话", "声部", "学校", "年级", "学员状态", "未排课时", "总课时", "已完成课时",
 | 
	
		
			
				|  |  | -                        "剩余课时","预收金额","第一次课时间","最近上课时间","指导老师编号","指导老师","乐团主管编号","乐团主管","声部课老师编号","声部课老师","近30天课耗","回访次数",
 | 
	
		
			
				|  |  | -                        "回访状态","原因","回访日期"},
 | 
	
		
			
				|  |  | -                new String[]{"studentBasicInfo.organName", "studentBasicInfo.userName", "studentBasicInfo.userId",
 | 
	
		
			
				|  |  | -                        "studentBasicInfo.phone","studentBasicInfo.subjectName", "studentBasicInfo.cooperationOrganName", "studentBasicInfo.grade",
 | 
	
		
			
				|  |  | -                        "studentBasicInfo.studentStatus",
 | 
	
		
			
				|  |  | -                        "noScheduleNum","totalCourseNum", "overCourseNum", "subCourseNum","preCourseFee","firstCourseTime","lastCourseTime","teacherId","teacherName","musicDirectorId","musicDirectorName",
 | 
	
		
			
				|  |  | -                        "studentBasicInfo.subjectTeacherId","studentBasicInfo.subjectTeacherName","latelyCourseConsumer","visitNum",
 | 
	
		
			
				|  |  | -                        "lastVisitStatus == null?'':lastVisitStatus == 'LOST' ? '流失':lastVisitStatus == 'THINKING' ? '考虑中':" +
 | 
	
		
			
				|  |  | -                                "lastVisitStatus == 'PENDING_PAYMENT' ? '确认缴费待缴费':lastVisitStatus == 'PAUSE' ? '暂停':lastVisitStatus == 'OTHER' ? '其他':''"
 | 
	
		
			
				|  |  | -                        ,"visitReason","lastVisitTime"}, rows);
 | 
	
		
			
				|  |  | -        exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学生姓名", "学员编号","联系电话", "声部", "学校", "年级", "学员状态", "未排课时", "总课时", "已完成课时",
 | 
	
		
			
				|  |  | +                            "剩余课时","预收金额","第一次课时间","最近上课时间","指导老师编号","指导老师","乐团主管编号","乐团主管","声部课老师编号","声部课老师","近30天课耗","回访次数",
 | 
	
		
			
				|  |  | +                            "回访状态","原因","回访日期"},
 | 
	
		
			
				|  |  | +                    new String[]{"studentBasicInfo.organName", "studentBasicInfo.userName", "studentBasicInfo.userId",
 | 
	
		
			
				|  |  | +                            "studentBasicInfo.phone","studentBasicInfo.subjectName", "studentBasicInfo.cooperationOrganName", "studentBasicInfo.grade",
 | 
	
		
			
				|  |  | +                            "studentBasicInfo.studentStatus",
 | 
	
		
			
				|  |  | +                            "noScheduleNum","totalCourseNum", "overCourseNum", "subCourseNum","preCourseFee","firstCourseTime","lastCourseTime","teacherId","teacherName","musicDirectorId","musicDirectorName",
 | 
	
		
			
				|  |  | +                            "studentBasicInfo.subjectTeacherId","studentBasicInfo.subjectTeacherName","latelyCourseConsumer","visitNum",
 | 
	
		
			
				|  |  | +                            "lastVisitStatus == null?'':lastVisitStatus == 'LOST' ? '流失':lastVisitStatus == 'THINKING' ? '考虑中':" +
 | 
	
		
			
				|  |  | +                                    "lastVisitStatus == 'PENDING_PAYMENT' ? '确认缴费待缴费':lastVisitStatus == 'PAUSE' ? '暂停':lastVisitStatus == 'OTHER' ? '其他':''"
 | 
	
		
			
				|  |  | +                            ,"visitReason","lastVisitTime"}, rows);
 | 
	
		
			
				|  |  | +            exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        }catch (Exception e){
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void exportMusicGroupCourseScheduleDetail(queryMusicGroupCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) throws Exception{
 | 
	
		
			
				|  |  | +    public void exportMusicGroupCourseScheduleDetail(queryMusicGroupCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) {
 | 
	
		
			
				|  |  |          List<MusicGroupCourseScheduleDto> rows = classGroupService.queryMusicGroupCourseScheduleDetail(queryInfo).getRows();
 | 
	
		
			
				|  |  | -        HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程编号", "课程开始时间", "课程结束时间", "课程名称","课程类型", "课程状态", "老师签到", "老师签退", "指导老师",
 | 
	
		
			
				|  |  | -                        "出勤率", "达标率", "是否服务", "是否布置课后作业", "作业提交率", "结算状态", "是否点名", "备注"},
 | 
	
		
			
				|  |  | -                new String[]{"courseScheduleId", "classDate + ' ' + startClassTime", "classDate + ' ' + endClassTime",
 | 
	
		
			
				|  |  | -                        "courseScheduleName","courseScheduleType.msg", "courseScheduleStatus.msg", "signInStatus.msg",
 | 
	
		
			
				|  |  | -                        "signOutStatus.msg","masterTeacherName",
 | 
	
		
			
				|  |  | -                        "courseScheduleStatistics.attendanceRate","courseScheduleStatistics.standardRate",
 | 
	
		
			
				|  |  | -                        "courseScheduleStatistics.serviceFlag == false ? '否':'是'","courseScheduleStatistics.homeworkFlag == false ? '否':'是'","courseScheduleStatistics.homeworkCommitRate",
 | 
	
		
			
				|  |  | -                        "settlementTime == null?'未结算':'已结算'", "isCallNames.msg", "remark"}, rows);
 | 
	
		
			
				|  |  | -        exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程编号", "课程开始时间", "课程结束时间", "课程名称","课程类型", "课程状态", "老师签到", "老师签退", "指导老师",
 | 
	
		
			
				|  |  | +                            "出勤率", "达标率", "是否服务", "是否布置课后作业", "作业提交率", "结算状态", "是否点名", "备注"},
 | 
	
		
			
				|  |  | +                    new String[]{"courseScheduleId", "classDate + ' ' + startClassTime", "classDate + ' ' + endClassTime",
 | 
	
		
			
				|  |  | +                            "courseScheduleName","courseScheduleType.msg", "courseScheduleStatus.msg", "signInStatus.msg",
 | 
	
		
			
				|  |  | +                            "signOutStatus.msg","masterTeacherName",
 | 
	
		
			
				|  |  | +                            "courseScheduleStatistics.attendanceRate","courseScheduleStatistics.standardRate",
 | 
	
		
			
				|  |  | +                            "courseScheduleStatistics.serviceFlag == false ? '否':'是'","courseScheduleStatistics.homeworkFlag == false ? '否':'是'","courseScheduleStatistics.homeworkCommitRate",
 | 
	
		
			
				|  |  | +                            "settlementTime == null?'未结算':'已结算'", "isCallNames.msg", "remark"}, rows);
 | 
	
		
			
				|  |  | +            exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        }catch (Exception e){
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public HSSFWorkbook getHSSFWorkbook(List rows, List<String> headColumns, ExportEnum exportEnum) throws Exception{
 | 
	
		
			
				|  |  | -        Map<String, String> headMap = getExportMap(new ExportDto(exportEnum, headColumns));
 | 
	
		
			
				|  |  | -        String[] header = headMap.keySet().toArray(new String[headMap.keySet().size()]);
 | 
	
		
			
				|  |  | -        String[] body = headMap.values().toArray(new String[headMap.keySet().size()]);
 | 
	
		
			
				|  |  | -        return POIUtil.exportExcel(header, body, rows);
 | 
	
		
			
				|  |  | +    public HSSFWorkbook getHSSFWorkbook(List rows, List<String> headColumns, ExportEnum exportEnum){
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            Map<String, String> headMap = getExportMap(new ExportDto(exportEnum, headColumns));
 | 
	
		
			
				|  |  | +            String[] header = headMap.keySet().toArray(new String[headMap.keySet().size()]);
 | 
	
		
			
				|  |  | +            String[] body = headMap.values().toArray(new String[headMap.keySet().size()]);
 | 
	
		
			
				|  |  | +            return POIUtil.exportExcel(header, body, rows);
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            throw new BizException(e);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public void exportManagerDownload(HSSFWorkbook workbook, ManagerDownload managerDownload) throws FileNotFoundException {
 | 
	
		
			
				|  |  | +    public void exportManagerDownload(HSSFWorkbook workbook, ManagerDownload managerDownload){
 | 
	
		
			
				|  |  |          String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath();
 | 
	
		
			
				|  |  |          File file = new File(basePath + "/" + managerDownload.getName());
 | 
	
		
			
				|  |  | -        FileOutputStream fileOutputStream = new FileOutputStream(file);
 | 
	
		
			
				|  |  |          OutputStream ouputStream = null;
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | +            FileOutputStream fileOutputStream = new FileOutputStream(file);
 | 
	
		
			
				|  |  |              workbook.write(fileOutputStream);
 | 
	
		
			
				|  |  |              fileOutputStream.getFD().sync();
 | 
	
		
			
				|  |  |              fileOutputStream.close();
 | 
	
	
		
			
				|  | @@ -3040,13 +2989,25 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void exportMusicGroupCourseList(ManagerDownload managerDownload, ExportUserAccountQueryInfo queryInfo) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException, IOException {
 | 
	
		
			
				|  |  | +    public void exportMusicGroupCourseList(ManagerDownload managerDownload, ExportUserAccountQueryInfo queryInfo){
 | 
	
		
			
				|  |  |          List<MusicGroupExportDto> rows = musicGroupDao.exportMusicGroupCourseList(queryInfo);
 | 
	
		
			
				|  |  | -        HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称", "乐团主管","出勤率", "达标率", "作业提交率", "成团人数", "新增人数",
 | 
	
		
			
				|  |  | -                        "退团人数", "在读人数","流失率"},
 | 
	
		
			
				|  |  | -                new String[]{"organName", "musicGroupId", "musicGroupName",
 | 
	
		
			
				|  |  | -                        "eduName","attendanceRate", "standardRate", "homeworkCommitRate",
 | 
	
		
			
				|  |  | -                        "groupMemberNum","addStuNum","quitStuNum","normalNum","lostRate"}, rows);
 | 
	
		
			
				|  |  | -        exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称", "乐团主管","出勤率", "达标率", "作业提交率", "成团人数", "新增人数",
 | 
	
		
			
				|  |  | +                            "退团人数", "在读人数","流失率"},
 | 
	
		
			
				|  |  | +                    new String[]{"organName", "musicGroupId", "musicGroupName",
 | 
	
		
			
				|  |  | +                            "eduName","attendanceRate", "standardRate", "homeworkCommitRate",
 | 
	
		
			
				|  |  | +                            "groupMemberNum","addStuNum","quitStuNum","normalNum","lostRate"}, rows);
 | 
	
		
			
				|  |  | +            exportManagerDownload(workbook,managerDownload);
 | 
	
		
			
				|  |  | +        }catch (Exception e){
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public HttpResponseResult asyncExport(Runnable runnable,String excelName) {
 | 
	
		
			
				|  |  | +        CompletableFuture.runAsync(runnable,exportExecutorService);
 | 
	
		
			
				|  |  | +        HttpResponseResult<Object> succeed = succeed();
 | 
	
		
			
				|  |  | +        succeed.setMsg(excelName + "导出申请已提交,请到【报表中心-下载列表查看】");
 | 
	
		
			
				|  |  | +        return succeed;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |