| 
					
				 | 
			
			
				@@ -28,7 +28,6 @@ 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.snaker.engine.entity.Order; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.boot.system.ApplicationHome; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -98,7 +97,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysUserService sysUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private OrganizationService organizationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -207,10 +206,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public List<String> getExportFields(ExportEnum exportEnum) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(sysUser == null || sysUser.getId() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("请登录"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(exportEnum == ExportEnum.ORDER_LIST1 || exportEnum == ExportEnum.ORDER_LIST2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(sysUser.getTenantId() <= 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 exportEnum = ExportEnum.ORDER_LIST1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -941,7 +937,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public List studentOrder(Map<String, Object> info){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String organIds = getParam(info,"organIds",String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date date = DateUtil.stringToDate(getParam(info,"date",String.class),DateUtil.ISO_EXPANDED_DATE_FORMAT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date startTime = DateUtil.getFirstDayOfMonth(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date EndTime = DateUtil.getLastSecondWithDay(DateUtil.getLastDayOfMonth(date)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1057,10 +1053,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public List exportIndexErrData(Map<String, Object> info){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String organId = getParam(info,"organId",String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         IndexErrorType errorType = getParam(info,"errorType",IndexErrorType.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (sysUser == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("用户信息获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         organId = organizationService.getEmployeeOrgan(sysUser.getId(), organId, sysUser.getIsSuperAdmin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<IndexErrorDataExportDto> result = indexService.exportIndexErrData(organId, errorType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isEmpty(result)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1128,7 +1121,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void musicGroupNormalStudentNum(HttpServletResponse response, ExportDto exportDto) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String organIds = getParam(exportDto.getQueryInfo(),"organIds",String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         organIds = organizationService.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<MusicGroupStatusEnum> musicGroupStatusList = new ArrayList<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1271,7 +1264,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void musicGroupRegister(HttpServletResponse response, ExportDto exportDto) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String organIds = getParam(exportDto.getQueryInfo(),"organIds",String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         organIds = organizationService.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<MusicGroupStatusEnum> musicGroupStatusList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicGroupStatusList.add(MusicGroupStatusEnum.APPLY); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1370,10 +1363,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult routeOrderList(Map<String, Object> info,List<String> headColumns){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info),StudentPaymentOrderQueryInfo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (sysUser == null || sysUser.getId() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return BaseController.failed(HttpStatus.FORBIDDEN, "请登录"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         queryInfo.setRoutingOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getRoutingOrganId(),sysUser.getIsSuperAdmin())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.isNotBlank(queryInfo.getSearch())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1393,9 +1383,8 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (count > 50000) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        queryInfo.setRoutingOrganId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ROUTE_ORDER,sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return this.asyncExport(() -> this.routeOrderList1(params, managerDownload, headColumns), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return this.asyncExport(() -> this.routeOrderList(params, managerDownload, headColumns), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 managerDownload.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1408,8 +1397,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return BaseController.failed("没有可导出的数据"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Integer tenantId = TenantContextHolder.getTenantId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_PRACTICE,sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_PRACTICE,sysUserService.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.asyncExport(() -> this.studentVipPractice(organId, managerDownload, tenantId,headColumns), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 managerDownload.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1423,8 +1411,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (hasCourse == null || !hasCourse) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return BaseController.failed("没有可导出的数据"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_COURSE_INFO,sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_COURSE_INFO,sysUserService.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId,"VIP", managerDownload,headColumns,ExportEnum.STUDENT_VIP_COURSE_INFO), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 managerDownload.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1432,7 +1419,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //vip学员课程管理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info, List<String> headColumns){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1449,8 +1436,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (hasCourse == null || !hasCourse) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return BaseController.failed("没有可导出的数据"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_MUSIC_THEORY_COURSE_INFO,sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_MUSIC_THEORY_COURSE_INFO,sysUserService.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId,"THEORY", managerDownload,headColumns,ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 managerDownload.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1459,10 +1445,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult orderList(Map<String, Object> info,List<String> headColumns){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info),StudentPaymentOrderQueryInfo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(sysUser == null || sysUser.getId() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return BaseController.failed(HttpStatus.FORBIDDEN, "请登录"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.isNotBlank(queryInfo.getSearch())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1490,10 +1473,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult orderListSum(Map<String, Object> info,List<String> headColumns){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info),StudentPaymentOrderQueryInfo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(sysUser == null || sysUser.getId() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return BaseController.failed(HttpStatus.FORBIDDEN, "请登录"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUser sysUser = sysUserService.getUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.isNotBlank(queryInfo.getSearch())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2237,7 +2217,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return subtract; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void routeOrderList1(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取分润订单(不包含订单详情)(纯余额支付不处理) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage1(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isEmpty(studentPaymentOrderExportDtos)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2289,20 +2269,29 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取合作单位第一个乐团 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             firstMusicMap = MapUtil.convertMybatisMap(cooperationOrganDao.findFirstMusic()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> studentIds = studentPaymentOrderExportDtos.stream().map(e -> e.getUserId()).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取学员第一个课程组编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> userFirstVipMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.findUserFirstVipMap("VIP",studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取学员最近加入的一个乐团编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> userLastMusicIdMap = MapUtil.convertMybatisMap(studentRegistrationDao.getLastMusicGroupId(studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> userLastMusicNameMap = MapUtil.convertMybatisMap(studentRegistrationDao.getLastMusicGroupName(studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> userFirstVipMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> userLastMusicIdMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> userLastMusicNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> studentNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> userFirstPracticeMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(studentPaymentOrderExportDtos.stream().anyMatch(e->e.getUserId() != null)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Integer> studentIds = studentPaymentOrderExportDtos.stream().filter(e->e.getUserId() != null).map(e -> e.getUserId()).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取学员第一个网管课课程组编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userFirstPracticeMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.findUserFirstVipMap("PRACTICE",studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取学员第一个课程组编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userFirstVipMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.findUserFirstVipMap("VIP",studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取学员最近加入的一个乐团编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userLastMusicIdMap = MapUtil.convertMybatisMap(studentRegistrationDao.getLastMusicGroupId(studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userLastMusicNameMap = MapUtil.convertMybatisMap(studentRegistrationDao.getLastMusicGroupName(studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取学员名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentNameMap = studentService.getMap("sys_user", "id_", "username_", studentIds, tenantId, Integer.class, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<String> musicGroupIds = studentPaymentOrderExportDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, String> musicGroupNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(musicGroupIds != null && musicGroupIds.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取学员名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> studentNameMap = studentService.getMap("sys_user", "id_", "username_", studentIds, tenantId, Integer.class, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //用于计算手续费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, FeeFlagNumDto> feeFlagMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(studentPaymentOrderExportDtos.stream().anyMatch(e->Objects.equals(e.getPaymentChannel(),"ADAPAY"))){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2311,16 +2300,13 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             feeFlagMap = feeFlagNumDtos.stream().collect(Collectors.toMap(FeeFlagNumDto::getOrderNo, Function.identity())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (StudentPaymentOrderExportDto basicOrder : studentPaymentOrderExportDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(basicOrder.getRouteAmount().compareTo(BigDecimal.ZERO) == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             basicOrder.getUser().setUsername(studentNameMap.get(basicOrder.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //填充业务数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //计算手续费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.calcPlatformFee(basicOrder,serviceChargeMap,orderCountMap,tenantConfig,feeFlagMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取乐团信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.initMusicGroupInfo(basicOrder,musicGroupNameMap,firstMusicMap,userLastMusicIdMap,userLastMusicNameMap,calenderCooperationMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //备注信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //填充备注信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (basicOrder.getGoodsList() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 String goodsName = basicOrder.getGoodsList().stream().map(Goods::getName).collect(Collectors.joining("|")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 basicOrder.setMemo(goodsName); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2335,25 +2321,9 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //根据订单类型初始化业务数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Optional.ofNullable(groupTypeConsumerMap1.get(basicOrder.getType())).ifPresent(consumer -> consumer.accept(basicOrder)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Optional.ofNullable(groupTypeConsumerMap1.get(basicOrder.getGroupType())).ifPresent(consumer -> consumer.accept(basicOrder)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.setSubTypeDesc(basicOrder,userFirstVipMap,userFirstPracticeMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(basicOrder.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(basicOrder.getGroupType() == GroupType.VIP){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //学员没有历史VIP课程则导出为【VIP课新增】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //学员有历史VIP课程到导出为【VIP课续费] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(Objects.equals(userFirstVipMap.get(basicOrder.getUserId()),basicOrder.getMusicGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }else if(basicOrder.getGroupType().equals(GroupType.SUBJECT_CHANGE)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }else if(basicOrder.getGroupType().equals(GroupType.REPAIR)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.REPAIR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String paymentChannel = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (basicOrder.getPaymentChannel() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else if (basicOrder.getPaymentChannel().equals("YQPAY")) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2364,6 +2334,9 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 paymentChannel = "余额"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             basicOrder.setPaymentChannel(paymentChannel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(basicOrder.getRouteAmount().compareTo(BigDecimal.ZERO) == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //如果有订单详情 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<StudentPaymentOrderDetail> detailList = orderDetailMap.get(basicOrder.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!CollectionUtils.isEmpty(detailList)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2389,6 +2362,237 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         exportManagerDownload(workbook,managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //新增声部课老师,学员有在读乐团,导出该学员所在声部班班级老师,无声部班则为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseNameDto> normalClassTeacher = courseScheduleStudentPaymentDao.queryClassTeacher(studentIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<BaseNameDto>> normalClassTeacherMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(normalClassTeacher != null && normalClassTeacher.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                normalClassTeacherMap = normalClassTeacher.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取最近一节未开始vip课课程组老师编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseNameDto> vipFirstNotStartTeacher = courseScheduleStudentPaymentDao.queryFirstNotStartTeacher(studentIds,"VIP"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<BaseNameDto>> vipFirstNotStartTeacherMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(vipFirstNotStartTeacher != null && vipFirstNotStartTeacher.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                vipFirstNotStartTeacherMap = vipFirstNotStartTeacher.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取最近一节未开始网管课课课程组老师编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseNameDto> practiceFirstNotStartTeacher = courseScheduleStudentPaymentDao.queryFirstNotStartTeacher(studentIds,"PRACTICE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<BaseNameDto>> practiceFirstNotStartTeacherMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(practiceFirstNotStartTeacher != null && practiceFirstNotStartTeacher.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                practiceFirstNotStartTeacherMap = practiceFirstNotStartTeacher.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取学员最后一节已结束的vip课课程组的老师以及编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseNameDto> vipBaseNameDtos = courseScheduleStudentPaymentDao.queryLastOverTeacher(studentIds,"VIP"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<BaseNameDto>> vipBaseNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(vipBaseNameDtos != null && vipBaseNameDtos.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                vipBaseNameMap = vipBaseNameDtos.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取学员最后一节已结束的网管课课程组的老师以及编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseNameDto> practiceBaseNameDtos = courseScheduleStudentPaymentDao.queryLastOverTeacher(studentIds,"PRACTICE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Integer, List<BaseNameDto>> practiceBaseNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(practiceBaseNameDtos != null && practiceBaseNameDtos.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                practiceBaseNameMap = practiceBaseNameDtos.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (StudentVipPracticeExportDto studentVipPracticeExportDto : studentVipPracticeExportDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<BaseNameDto> baseNameDtos = vipBaseNameMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(baseNameDtos != null && baseNameDtos.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BaseNameDto baseNameDto = baseNameDtos.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setVipOverTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setVipOverTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<BaseNameDto> baseNameDtos1 = practiceBaseNameMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(baseNameDtos1 != null && baseNameDtos1.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BaseNameDto baseNameDto = baseNameDtos1.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setPracticeOverTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setPracticeOverTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<BaseNameDto> baseNameDtos2 = normalClassTeacherMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(baseNameDtos2 != null && baseNameDtos2.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BaseNameDto baseNameDto = baseNameDtos2.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setNormalClassTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setNormalClassTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<BaseNameDto> baseNameDtos3 = vipFirstNotStartTeacherMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(baseNameDtos3 != null && baseNameDtos3.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BaseNameDto baseNameDto = baseNameDtos3.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setVipNotStartTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setVipNotStartTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<BaseNameDto> baseNameDtos4 = practiceFirstNotStartTeacherMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(baseNameDtos4 != null && baseNameDtos4.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BaseNameDto baseNameDto = baseNameDtos4.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setPracticeNotStartTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentVipPracticeExportDto.setPracticeNotStartTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFWorkbook workbook = getHSSFWorkbook(studentVipPracticeExportDtos,headColumns,ExportEnum.STUDENT_VIP_PRACTICE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exportManagerDownload(workbook,managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ExportVipStudentCourseManageDto> rows = courseScheduleStudentPaymentDao.queryVipStudentCourseManage(organId,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exportManagerDownload(getHSSFWorkbook(rows,headColumns,exportEnum),managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void exportStudentSmallClassStatisticsSum(StudentStatisticsQueryInfo queryInfo, ManagerDownload managerDownload){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<StudentStatisticsDto> rows = studentStatisticsService.queryStatisticsPage(queryInfo).getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<MusicGroupCourseScheduleDto> rows = classGroupService.queryMusicGroupCourseScheduleDetail(queryInfo).getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        File file = new File(basePath + "/" + managerDownload.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OutputStream ouputStream = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileOutputStream fileOutputStream = new FileOutputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            workbook.write(fileOutputStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fileOutputStream.getFD().sync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fileOutputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String folder = "download/" + UploadUtil.getFileFloder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, folder, file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //把记录插入下载表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            managerDownload.setFileUrl(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            managerDownload.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            managerDownloadDao.update(managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ouputStream != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ouputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void exportMusicGroupCourseList(ManagerDownload managerDownload, ExportUserAccountQueryInfo queryInfo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<MusicGroupExportDto> rows = musicGroupDao.exportMusicGroupCourseList(queryInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setSubTypeDesc(StudentPaymentOrderExportDto basicOrder,Map<Integer,String> userFirstVipMap,Map<Integer,String> userFirstPracticeMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(basicOrder.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(basicOrder.getGroupType() == GroupType.VIP){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //学员没有历史VIP课程则导出为【VIP课新增】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //学员有历史VIP课程到导出为【VIP课续费] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.equals(userFirstVipMap.get(basicOrder.getUserId()),basicOrder.getMusicGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else if(basicOrder.getGroupType() == GroupType.PRACTICE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(Objects.equals(userFirstPracticeMap.get(basicOrder.getUserId()),basicOrder.getMusicGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_PRACTICE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_PRACTICE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else if(basicOrder.getGroupType().equals(GroupType.SUBJECT_CHANGE)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else if(basicOrder.getGroupType().equals(GroupType.REPAIR)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.REPAIR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //按订单详情计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void calcOrderDetail(StudentPaymentOrderExportDto basicOrder,List<StudentPaymentOrderDetail> detailList,Map<Integer, String> userFirstVipMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //排除金额为0的订单详情 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2396,15 +2600,31 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(CollectionUtils.isEmpty(detailList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(basicOrder.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //如果是指定内部账户,并且分润金额和内部库存金额一致,那么直接判定为云教练收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (basicOrder.getRouteMerNo().equals(goodsSellReceiptMerNo) && detailList.stream(). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    anyMatch(e -> StringUtils.equals(e.getIncomeItem(), "CLOUD_TEACHER") && e.getIncome().compareTo(BigDecimal.ZERO) > 0)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal income = detailList.stream().filter(e -> StringUtils.equals(e.getIncomeItem(), "CLOUD_TEACHER") && e.getIncome().compareTo(BigDecimal.ZERO) > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .map(e -> e.getIncome()).reduce(BigDecimal.ZERO, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(income.compareTo(basicOrder.getServiceAmount()) == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    basicOrder.setCloudTeacherFee(income); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<StudentPaymentOrderDetail> details = detailList.stream().filter(e -> e.getPrice().compareTo(e.getIncome()) > 0).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(CollectionUtils.isEmpty(details)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //订单详情去除余额部分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calculateOrderDetailActualAmount(basicOrder.getExpectAmount(),basicOrder.getBalancePaymentAmount(),detailList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        calculateOrderDetailActualAmount(basicOrder.getExpectAmount(),basicOrder.getBalancePaymentAmount(),details); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(basicOrder.getServiceAmount().compareTo(BigDecimal.ZERO) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //计算服务收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            detailList.stream().forEach(e->this.setServiceFee(basicOrder,e,userFirstVipMap)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            details.stream().forEach(e->this.setServiceFee(basicOrder,e,userFirstVipMap)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(basicOrder.getSaleAmount().compareTo(BigDecimal.ZERO) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //计算销售收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            detailList.stream().forEach(e->this.setSaleFee(basicOrder,e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            details.stream().forEach(e->this.setSaleFee(basicOrder,e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2481,8 +2701,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //用于金额计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Map<GroupType,Consumer<StudentPaymentOrderExportDto>> groupTypeConsumerMap = new HashMap<>(GroupType.values().length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @PostConstruct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void initGroupTypeConsumerMap(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public @PostConstruct void initGroupTypeConsumerMap(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         groupTypeConsumerMap.put(GroupType.ACTIVITY,(orderDto)->orderDto.setVipCourseFee(orderDto.getVipCourseFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         groupTypeConsumerMap.put(GroupType.VIP,(orderDto)->orderDto.setVipCourseFee(orderDto.getVipCourseFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         groupTypeConsumerMap.put(GroupType.MEMBER,(orderDto)->orderDto.setCloudTeacherFee(orderDto.getCloudTeacherFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2498,8 +2717,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //用于金额计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Map<Integer,Consumer<StudentPaymentOrderExportDto>> chargeTypeConsumerMap = new HashMap<>(SporadicChargeTypeEnum.values().length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @PostConstruct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void initChargeTypeConsumerMap(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public @PostConstruct void initChargeTypeConsumerMap(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         chargeTypeConsumerMap.put(SporadicChargeTypeEnum.LEVEL.getCode(),(orderDto)->orderDto.setDegreeFee(orderDto.getDegreeFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         chargeTypeConsumerMap.put(SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode(),(orderDto)->orderDto.setPracticeCourseFee(orderDto.getPracticeCourseFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         chargeTypeConsumerMap.put(SporadicChargeTypeEnum.MUSIC_UPKEEP.getCode(),(orderDto)->orderDto.setMaintenanceFee(orderDto.getMaintenanceFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2509,6 +2727,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         chargeTypeConsumerMap.put(SporadicChargeTypeEnum.CLOUD_TEACHER_BUY.getCode(),(orderDto)->orderDto.setCloudTeacherFee(orderDto.getCloudTeacherFee().add(orderDto.getActualAmount()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void setSaleFee(StudentPaymentOrderExportDto basicOrder){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal actualAmount = basicOrder.getActualAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch (basicOrder.getGroupType()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2531,8 +2750,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Map<OrderDetailTypeEnum,BiConsumer<StudentPaymentOrderExportDto,StudentPaymentOrderDetail>> orderDetailTypeServiceConsumerMap = new HashMap<>(OrderDetailTypeEnum.values().length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @PostConstruct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void initOrderDetailTypeServiceConsumerMap() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public @PostConstruct void initOrderDetailTypeServiceConsumerMap() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BiConsumer<StudentPaymentOrderExportDto,StudentPaymentOrderDetail> con1 = (orderDto, detail) -> orderDto.setMusicGroupCourseFee(orderDto.getMusicGroupCourseFee().add(detail.getPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.COURSE, con1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.CLASSROOM, con1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2582,22 +2800,14 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void setServiceFee(StudentPaymentOrderExportDto basicOrder, StudentPaymentOrderDetail orderDetail, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               Map<Integer, String> userFirstVipMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //分润订单可能多个,必须是指定账户。如果是内部库存转化部分收入为云教练收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(basicOrder.getRouteMerNo().equals(goodsSellReceiptMerNo) && orderDetail.getIncome().compareTo(BigDecimal.ZERO) > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            basicOrder.setCloudTeacherFee(basicOrder.getCloudTeacherFee().add(orderDetail.getIncome())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //如果订单有余额,那么按比例排除掉订单详情中的余额,多的部分放在最后一条记录中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //比例 = 订单详情金额/订单总金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //实际支付金额 = 订单详情金额 * 比例 保留两位小数,其余舍掉,如果是最后一笔订单详情,将剩余的金额直接赋值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Optional.ofNullable(orderDetailTypeServiceConsumerMap.get(orderDetail.getType())).ifPresent(consumer -> consumer.accept(basicOrder, orderDetail)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (orderDetail.getType() == OrderDetailTypeEnum.VIP && basicOrder.getTypeDesc() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //学员没有历史VIP课程则导出为【VIP课新增】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //学员有历史VIP课程到导出为【VIP课续费】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (Objects.equals(userFirstVipMap.get(basicOrder.getUserId()), basicOrder.getMusicGroupId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Optional.ofNullable(orderDetailTypeServiceConsumerMap.get(orderDetail.getType())).ifPresent(consumer -> consumer.accept(basicOrder, orderDetail)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (orderDetail.getType() == OrderDetailTypeEnum.VIP && basicOrder.getTypeDesc() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //学员没有历史VIP课程则导出为【VIP课新增】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //学员有历史VIP课程到导出为【VIP课续费】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.equals(userFirstVipMap.get(basicOrder.getUserId()), basicOrder.getMusicGroupId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                basicOrder.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2661,7 +2871,6 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (transferFee == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     transferFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 currentFee = row.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BigDecimal totalFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 FeeFlagNumDto countFeeFlagNum = feeFlagMap.get(row.getOrderNo()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2679,7 +2888,7 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //获取乐团信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void initMusicGroupInfo(StudentPaymentOrderExportDto row,Map<String, String> musicGroupNameMap,Map<Integer, String> firstMusicMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,Map<Integer, String> userLastMusicIdMap,Map<Integer, String> userLastMusicNameMap,Map<Long, Integer> calenderCooperationMap ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ,Map<Integer, String> userLastMusicIdMap,Map<Integer, String> userLastMusicNameMap,Map<Long, Integer> calenderCooperationMap ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long calenderId = row.getCalenderId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(calenderId != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             row.setFeeMusicGroupId(row.getMusicGroupId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2708,760 +2917,6 @@ public class ExportServiceImpl implements ExportService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    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() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .filter(e -> OUTORDER.equals(e.getType())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .filter(e -> e.getMusicGroupId() != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .map(e -> Integer.valueOf(e.getMusicGroupId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .distinct() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (cooperationOrganIds.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<CooperationOrgan> cooperationOrgans = cooperationOrganDao.getCooperationOrganByIds(cooperationOrganIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            cooperationOrganMap = cooperationOrgans.stream().collect(Collectors.toMap(CooperationOrgan::getId, CooperationOrgan::getName)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取机构费率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Integer tenantId = (Integer) params.get("tenantId"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TenantConfig tenantConfig = tenantConfigService.queryByTenantId(tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取缴费项目编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Long> calenderIds = studentPaymentOrderExportDtos.stream().map(e -> e.getCalenderId()).filter(e -> e != null).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Long, Integer> calenderCooperationMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> firstMusicMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(calenderIds != null && calenderIds.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取缴费项目关联的合作单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            calenderCooperationMap = musicGroupPaymentCalenderService.findCooperationByIds(calenderIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取合作单位第一个乐团 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            firstMusicMap = MapUtil.convertMybatisMap(cooperationOrganDao.findFirstMusic()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> studentIds = studentPaymentOrderExportDtos.stream().map(e -> e.getUserId()).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取学员第一个课程组编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> userFirstVipMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.findUserFirstVipMap("VIP",studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取学员最近加入的一个乐团编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> userLastMusicIdMap = MapUtil.convertMybatisMap(studentRegistrationDao.getLastMusicGroupId(studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> userLastMusicNameMap = MapUtil.convertMybatisMap(studentRegistrationDao.getLastMusicGroupName(studentIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<String> musicGroupIds = studentPaymentOrderExportDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, String> musicGroupNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(musicGroupIds != null && musicGroupIds.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String,BigDecimal> serviceChargeMap = new HashMap<String, BigDecimal>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String,Integer> orderCountMap = new HashMap<String, Integer>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getActualAmount() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setActualAmount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getBalancePaymentAmount() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setBalancePaymentAmount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getRouteAmount() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setRouteAmount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getMemo() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setMemo(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal transferFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal currentFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal totalFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                FeeFlagNumDto countFeeFlagNum = studentPaymentRouteOrderDao.getCountFeeFlagNum(row.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Integer times = orderCountMap.get(row.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (times == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					times = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					++times; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            	orderCountMap.put(row.getOrderNo(), times); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            	currentFee = row.getServiceFee(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            	//兼容2022年之前的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (currentFee == null || (currentFee.floatValue() == 0 && row.getCreateTime().before(DateUtil.stringToDate("2022-01-01 00:00:00")))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					transferFee = serviceChargeMap.get(row.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (transferFee == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						transferFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					currentFee = row.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					totalFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (totalFee.subtract(transferFee.add(currentFee)).doubleValue() < 0 || times == countFeeFlagNum.getTotalNum()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						currentFee = totalFee.subtract(transferFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						serviceChargeMap.put(row.getOrderNo(), totalFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						serviceChargeMap.put(row.getOrderNo(), transferFee.add(currentFee)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            row.setTransferFee(currentFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            row.setPlatformFee(row.getActualAmount().multiply(tenantConfig.getChargeRate()).divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long calenderId = row.getCalenderId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(calenderId != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setFeeMusicGroupId(row.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setFeeMusicGroupName(musicGroupNameMap.get(row.getMusicGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                OrderTypeEnum orderTypeEnum = row.getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(orderTypeEnum == OrderTypeEnum.APPLY || orderTypeEnum == OrderTypeEnum.ADD_STUDENT){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Integer cooperationId = calenderCooperationMap.get(calenderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(cooperationId != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String firstMusicId = firstMusicMap.get(cooperationId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(StringUtils.isEmpty(firstMusicId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if(Objects.equals(firstMusicId,row.getMusicGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.ADD_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setFeeMusicGroupId(userLastMusicIdMap.get(row.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setFeeMusicGroupName(userLastMusicNameMap.get(row.getUserId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String goodsName = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getOrderDetailList() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BigDecimal price = getActualAmount(orderDetail.getPrice(), row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    switch (orderDetail.getType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case COURSE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case CLASSROOM: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case SINGLE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case MIX: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case COMPREHENSIVE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case ENLIGHTENMENT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case TRAINING_SINGLE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case TRAINING_MIX: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case MUSIC_NETWORK: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case HIGH: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case HIGH_ONLINE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case HIGH_ONLINE_COURSE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(price)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case MUSICAL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	//扣除内部库存的商品销售收入统计在云教练中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        		row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                row.setLeaseFee(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                row.setMusicalFee(price.subtract(orderDetail.getIncome())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case ACCESSORIES: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case TEACHING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        		row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setTeachingFee(row.getTeachingFee().add(price.subtract(orderDetail.getIncome()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case OTHER: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        		row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setOtherFee(row.getOtherFee().add(price.subtract(orderDetail.getIncome()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case MAINTENANCE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setMaintenanceFee(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case CLOUD_TEACHER: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case CLOUD_TEACHER_PLUS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    		row.setCloudTeacherFee(row.getCloudTeacherFee().add(price)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case DEGREE_REGISTRATION: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setDegreeFee(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case VIP: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setVipCourseFee(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if(row.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                //学员没有历史VIP课程则导出为【VIP课新增】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                //学员有历史VIP课程到导出为【VIP课续费] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if(Objects.equals(userFirstVipMap.get(row.getUserId()),row.getMusicGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case THEORY_COURSE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setTheoryCourseFee(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        case REPAIR: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setRepairFee(price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getGoodsList() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                goodsName = row.getGoodsList().stream().map(Goods::getName).collect(Collectors.joining("|")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (StringUtils.isNotBlank(goodsName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setMemo(goodsName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //专业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getGroupType().equals(GroupType.VIP)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setVipCourseFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(StringUtils.isNotEmpty(row.getMusicGroupId()) && row.getClassGroupId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (vipGroupInfo != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setSchoolName(vipGroupInfo.getSchoolName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setSubjectName(vipGroupInfo.getSubjectName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setEduTeacher(vipGroupInfo.getEducationalTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(row.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //学员没有历史VIP课程则导出为【VIP课新增】 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //学员有历史VIP课程到导出为【VIP课续费] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(Objects.equals(userFirstVipMap.get(row.getUserId()),row.getMusicGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RENEW_VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if(row.getGroupType().equals(GroupType.ACTIVITY)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setVipCourseFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else if (row.getGroupType().equals(GroupType.SPORADIC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //考级报名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (row.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    String[] feeTypes = row.getMemo().split(";"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    List<String> feeTypeList = Arrays.asList(feeTypes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (String feeTypeStr : feeTypeList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        int index = feeTypeStr.lastIndexOf(":"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (index < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        BigDecimal typeFee = new BigDecimal(feeTypeStr.substring(index + 1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            typeFee = typeFee.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (feeTypeStr.contains("VIP")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setVipCourseFee(typeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else if (feeTypeStr.contains("网管课")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setPracticeCourseFee(typeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else if (feeTypeStr.contains("乐理课")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            row.setTheoryCourseFee(typeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setDegreeFee(row.getActualAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (row.getChargeType() != null && SporadicChargeTypeEnum.LEVEL.getCode().equals(row.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setDegreeFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode().equals(row.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setPracticeCourseFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.MUSIC_UPKEEP.getCode().equals(row.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setMaintenanceFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.VISITING_FEE.getCode().equals(row.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setVisitFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (row.getChargeType() != null && (SporadicChargeTypeEnum.RECHARGE.getCode().equals(row.getChargeType()) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            SporadicChargeTypeEnum.HIGH_ONLINE_ACTIVITY.getCode().equals(row.getChargeType()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setRechargeFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.CLOUD_TEACHER_BUY.getCode().equals(row.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setCloudTeacherFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setOtherFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (row.getChargeType() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (!chargeType.getCode().equals(row.getChargeType())) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setSporadicType(chargeType.getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(row.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (row.getGroupType().equals(GroupType.PRACTICE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setPracticeCourseFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (practiceGroup != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setSubjectName(practiceGroup.getSubjectName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setEduTeacher(practiceGroup.getEduTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (row.getGroupType().equals(GroupType.MEMBER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setCloudTeacherFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(row.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (row.getGroupType().equals(GroupType.REPLACEMENT)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setMusicalFee(row.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ReplacementInstrumentActivityStatDto info = replacementInstrumentActivityDao.getInfo(Integer.parseInt(row.getMusicGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (info != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setSubjectName(info.getSubjectName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setCooperationOrganName(info.getCooperationOrganName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setMemo(info.getBrand() + "(" + info.getSpecification() + ")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    CooperationOrgan cooperationOrganEduTeacher = musicGroupDao.findCooperationOrganEduTeacher(info.getCooperationOrganId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (cooperationOrganEduTeacher != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setEduTeacher(cooperationOrganEduTeacher.getLinkman()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //兼容历史数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(row.getCreateTime().before(DateUtil.stringToDate("2022-06-15 00:00:00"))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	                BigDecimal childRepairFee = sellOrderDao.getChildRepair(row.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	                row.setMusicalFee(feeByType.getMusicalFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	                row.setTeachingFee(feeByType.getTeachingFee().subtract(childRepairFee)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	                row.setMaintenanceProductFee(feeByType.getRepairFee().add(childRepairFee)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	                row.setOtherFee(feeByType.getOtherFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (row.getGroupType().equals(GroupType.MUSIC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (studentRegistration != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setSubjectName(studentRegistration.getSubjectName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setSchoolName(studentRegistration.getSchoolName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setCooperationOrganName(studentRegistration.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setEduTeacher(studentRegistration.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()).subtract(row.getCloudTeacherFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else if (row.getType().equals(OrderTypeEnum.REPAIR)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(row.getRepairFee().compareTo(BigDecimal.ZERO) == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setRepairFee(row.getActualAmount().subtract(row.getTeachingFee()).subtract(row.getTranslatedIncome())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else if (row.getType().equals(OUTORDER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setTransferFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setPlatformFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(row.getTypeDesc() == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(row.getGroupType().equals(GroupType.SUBJECT_CHANGE)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else if(row.getGroupType().equals(GroupType.REPAIR)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.REPAIR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //如果合作单位不存在取学员的第一个乐团的合作单位和教学点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getCooperationOrganName() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CooperationOrgan cooperationOrgan = studentService.getStudentEduTeacher(row.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (cooperationOrgan != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setCooperationOrganName(cooperationOrgan.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setEduTeacher(cooperationOrgan.getLinkman() != null ? cooperationOrgan.getLinkman() : row.getEduTeacher()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getType().equals(OUTORDER) && row.getMusicGroupId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (cooperationOrganMap.containsKey(Integer.valueOf(row.getMusicGroupId()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    row.setCooperationOrganName(cooperationOrganMap.get(Integer.valueOf(row.getMusicGroupId()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    CooperationOrgan cooperationOrganEduTeacher = musicGroupDao.findCooperationOrganEduTeacher(Integer.valueOf(row.getMusicGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (cooperationOrganEduTeacher != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        row.setEduTeacher(cooperationOrganEduTeacher.getLinkman()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                row.setMusicGroupId(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String paymentChannel = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (row.getPaymentChannel() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (row.getPaymentChannel().equals("YQPAY")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                paymentChannel = "双乾"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (row.getPaymentChannel().equals("ADAPAY")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                paymentChannel = "汇付"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (row.getPaymentChannel().equals("BALANCE")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                paymentChannel = "余额"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            row.setPaymentChannel(paymentChannel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            row.setOrderAmount(row.getExpectAmount().add(row.getCouponRemitFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//查询商品收款账户配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String goodsSellReceiptMerNo = sysConfigDao.findConfigValue("goodsSellReceiptMerNo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Long, List<StudentPaymentOrderExportDto>> orderMap = studentPaymentOrderExportDtos.stream().collect(Collectors.groupingBy(StudentPaymentOrderExportDto::getId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderMap.forEach((orderId, orders) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int j = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeMusicGroupCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeVipCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routePracticeCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeTheoryCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeDegreeFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeRepairFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeMaintenanceFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeMaintenanceProductFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeLeaseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeMusicalFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeTeachingFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeOtherFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeCloudTeacherFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal routeRechargeFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (StudentPaymentOrderExportDto order : orders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Date endDate = DateUtil.stringToDate("2021-04-01", "yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (order.getPayTime() == null || order.getPayTime().compareTo(endDate) < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //如果有转化的销售服务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(StringUtils.equals(order.getRouteMerNo(), goodsSellReceiptMerNo) && order.getTranslatedIncome().compareTo(order.getRouteAmount()) == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	order.setMusicGroupCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setVipCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setPracticeCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setTheoryCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setDegreeFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setMaintenanceFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setCloudTeacherFee(order.getTranslatedIncome()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setRepairFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setMusicalFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setTeachingFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setOtherFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setLeaseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (order.getSaleAmount().compareTo(BigDecimal.ZERO) > 0 && order.getServiceAmount().compareTo(BigDecimal.ZERO) == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setMusicGroupCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setVipCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setPracticeCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setTheoryCourseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setDegreeFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setMaintenanceFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setCloudTeacherFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setRepairFee(order.getRepairFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setMaintenanceProductFee(order.getMaintenanceProductFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else if (order.getSaleAmount().compareTo(BigDecimal.ZERO) == 0 && order.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setRepairFee(order.getRepairFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setMaintenanceProductFee(order.getMaintenanceProductFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setCloudTeacherFee(order.getCloudTeacherFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setMaintenanceFee(order.getMaintenanceFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setMusicalFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setTeachingFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                    order.setOtherFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    order.setLeaseFee(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal musicGroupCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal vipCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal practiceCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal theoryCourseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal degreeFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal repairFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal maintenanceFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal maintenanceProductFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal leaseFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal musicalFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal teachingFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal otherFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal cloudTeacherFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal rechargeFee = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (order.getActualAmount() != null && order.getActualAmount().compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    musicGroupCourseFee = order.getMusicGroupCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    vipCourseFee = order.getVipCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    practiceCourseFee = order.getPracticeCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    theoryCourseFee = order.getTheoryCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    degreeFee = order.getDegreeFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    repairFee = order.getRepairFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    maintenanceProductFee = order.getMaintenanceProductFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    leaseFee = order.getLeaseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    musicalFee = order.getMusicalFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    teachingFee = order.getTeachingFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    otherFee = order.getOtherFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    maintenanceFee = order.getMaintenanceFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cloudTeacherFee = order.getCloudTeacherFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (order.getGroupType().equals(GroupType.VIP)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    vipCourseFee = order.getRouteAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else if (order.getGroupType().equals(GroupType.SPORADIC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //考级报名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (order.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        degreeFee = order.getRouteAmount().subtract(vipCourseFee).subtract(practiceCourseFee).subtract(theoryCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (order.getChargeType() != null && SporadicChargeTypeEnum.LEVEL.getCode().equals(order.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            degreeFee = order.getRouteAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else if (order.getChargeType() != null && SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode().equals(order.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            practiceCourseFee = order.getRouteAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else if (order.getChargeType() != null && SporadicChargeTypeEnum.RECHARGE.getCode().equals(order.getChargeType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            rechargeFee = order.getRouteAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            otherFee = order.getRouteAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else if (order.getGroupType().equals(GroupType.PRACTICE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    practiceCourseFee = order.getRouteAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (order.getGroupType().equals(GroupType.MUSIC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        musicGroupCourseFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(maintenanceFee).subtract(maintenanceProductFee).subtract(otherFee).subtract(leaseFee).subtract(cloudTeacherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (order.getType().equals(OrderTypeEnum.REPAIR)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        repairFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(otherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else if (order.getType().equals(OUTORDER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        musicGroupCourseFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(maintenanceProductFee).subtract(otherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (j == orders.size()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    musicGroupCourseFee = order.getMusicGroupCourseFee().subtract(routeMusicGroupCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    vipCourseFee = order.getVipCourseFee().subtract(routeVipCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    practiceCourseFee = order.getPracticeCourseFee().subtract(routePracticeCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    theoryCourseFee = order.getTheoryCourseFee().subtract(routeTheoryCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    degreeFee = order.getDegreeFee().subtract(routeDegreeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    repairFee = order.getRepairFee().subtract(routeRepairFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    maintenanceProductFee = order.getMaintenanceProductFee().subtract(routeMaintenanceProductFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    leaseFee = order.getLeaseFee().subtract(routeLeaseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    musicalFee = order.getMusicalFee().subtract(routeMusicalFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    teachingFee = order.getTeachingFee().subtract(routeTeachingFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    otherFee = order.getOtherFee().subtract(routeOtherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    rechargeFee = order.getRechargeFee().subtract(routeRechargeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    maintenanceFee = order.getMaintenanceFee().subtract(routeMaintenanceFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cloudTeacherFee = order.getCloudTeacherFee().subtract(routeCloudTeacherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                j++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeMusicGroupCourseFee = routeMusicGroupCourseFee.add(musicGroupCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeVipCourseFee = routeVipCourseFee.add(vipCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routePracticeCourseFee = routePracticeCourseFee.add(practiceCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeTheoryCourseFee = routeTheoryCourseFee.add(theoryCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeDegreeFee = routeDegreeFee.add(degreeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeRepairFee = routeRepairFee.add(repairFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeMaintenanceProductFee = routeMaintenanceProductFee.add(maintenanceProductFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeLeaseFee = routeLeaseFee.add(leaseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeMusicalFee = routeMusicalFee.add(musicalFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeTeachingFee = routeTeachingFee.add(teachingFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeOtherFee = routeOtherFee.add(otherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeRechargeFee = routeRechargeFee.add(rechargeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeMaintenanceFee = routeMaintenanceFee.add(maintenanceFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                routeCloudTeacherFee = routeCloudTeacherFee.add(cloudTeacherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setMusicGroupCourseFee(musicGroupCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setVipCourseFee(vipCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setPracticeCourseFee(practiceCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setTheoryCourseFee(theoryCourseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setDegreeFee(degreeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setRepairFee(repairFee.add(maintenanceProductFee)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setMaintenanceProductFee(maintenanceProductFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setLeaseFee(leaseFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setMusicalFee(musicalFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setTeachingFee(teachingFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setOtherFee(otherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setRechargeFee(rechargeFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setMaintenanceFee(maintenanceFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                order.setCloudTeacherFee(cloudTeacherFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(params.get("oldOrganId") != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String[] organIdArr = params.get("oldOrganId").toString().split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<String> organIds = Arrays.asList(organIdArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            studentPaymentOrderExportDtos.removeIf(order -> !organIds.contains(order.getOrganId().toString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos,headColumns,ExportEnum.ROUTE_ORDER_LIST1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        exportManagerDownload(workbook,managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //新增声部课老师,学员有在读乐团,导出该学员所在声部班班级老师,无声部班则为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<BaseNameDto> normalClassTeacher = courseScheduleStudentPaymentDao.queryClassTeacher(studentIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<Integer, List<BaseNameDto>> normalClassTeacherMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(normalClassTeacher != null && normalClassTeacher.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                normalClassTeacherMap = normalClassTeacher.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取最近一节未开始vip课课程组老师编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<BaseNameDto> vipFirstNotStartTeacher = courseScheduleStudentPaymentDao.queryFirstNotStartTeacher(studentIds,"VIP"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<Integer, List<BaseNameDto>> vipFirstNotStartTeacherMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(vipFirstNotStartTeacher != null && vipFirstNotStartTeacher.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                vipFirstNotStartTeacherMap = vipFirstNotStartTeacher.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取最近一节未开始网管课课课程组老师编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<BaseNameDto> practiceFirstNotStartTeacher = courseScheduleStudentPaymentDao.queryFirstNotStartTeacher(studentIds,"PRACTICE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<Integer, List<BaseNameDto>> practiceFirstNotStartTeacherMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(practiceFirstNotStartTeacher != null && practiceFirstNotStartTeacher.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                practiceFirstNotStartTeacherMap = practiceFirstNotStartTeacher.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取学员最后一节已结束的vip课课程组的老师以及编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<BaseNameDto> vipBaseNameDtos = courseScheduleStudentPaymentDao.queryLastOverTeacher(studentIds,"VIP"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<Integer, List<BaseNameDto>> vipBaseNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(vipBaseNameDtos != null && vipBaseNameDtos.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                vipBaseNameMap = vipBaseNameDtos.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取学员最后一节已结束的网管课课程组的老师以及编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<BaseNameDto> practiceBaseNameDtos = courseScheduleStudentPaymentDao.queryLastOverTeacher(studentIds,"PRACTICE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<Integer, List<BaseNameDto>> practiceBaseNameMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(practiceBaseNameDtos != null && practiceBaseNameDtos.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                practiceBaseNameMap = practiceBaseNameDtos.stream().collect(Collectors.groupingBy(BaseNameDto::getUserId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (StudentVipPracticeExportDto studentVipPracticeExportDto : studentVipPracticeExportDtos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<BaseNameDto> baseNameDtos = vipBaseNameMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(baseNameDtos != null && baseNameDtos.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BaseNameDto baseNameDto = baseNameDtos.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setVipOverTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setVipOverTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<BaseNameDto> baseNameDtos1 = practiceBaseNameMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(baseNameDtos1 != null && baseNameDtos1.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BaseNameDto baseNameDto = baseNameDtos1.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setPracticeOverTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setPracticeOverTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<BaseNameDto> baseNameDtos2 = normalClassTeacherMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(baseNameDtos2 != null && baseNameDtos2.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BaseNameDto baseNameDto = baseNameDtos2.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setNormalClassTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setNormalClassTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<BaseNameDto> baseNameDtos3 = vipFirstNotStartTeacherMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(baseNameDtos3 != null && baseNameDtos3.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BaseNameDto baseNameDto = baseNameDtos3.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setVipNotStartTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setVipNotStartTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                List<BaseNameDto> baseNameDtos4 = practiceFirstNotStartTeacherMap.get(studentVipPracticeExportDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(baseNameDtos4 != null && baseNameDtos4.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BaseNameDto baseNameDto = baseNameDtos4.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setPracticeNotStartTeacherId(baseNameDto.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentVipPracticeExportDto.setPracticeNotStartTeacherName(baseNameDto.getTeacherName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HSSFWorkbook workbook = getHSSFWorkbook(studentVipPracticeExportDtos,headColumns,ExportEnum.STUDENT_VIP_PRACTICE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        exportManagerDownload(workbook,managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ExportVipStudentCourseManageDto> rows = courseScheduleStudentPaymentDao.queryVipStudentCourseManage(organId,tenantId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        exportManagerDownload(getHSSFWorkbook(rows,headColumns,exportEnum),managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void exportStudentSmallClassStatisticsSum(StudentStatisticsQueryInfo queryInfo, ManagerDownload managerDownload){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<StudentStatisticsDto> rows = studentStatisticsService.queryStatisticsPage(queryInfo).getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<MusicGroupCourseScheduleDto> rows = classGroupService.queryMusicGroupCourseScheduleDetail(queryInfo).getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        File file = new File(basePath + "/" + managerDownload.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        OutputStream ouputStream = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            FileOutputStream fileOutputStream = new FileOutputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            workbook.write(fileOutputStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fileOutputStream.getFD().sync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fileOutputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String folder = "download/" + UploadUtil.getFileFloder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, folder, file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //把记录插入下载表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            managerDownload.setFileUrl(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            managerDownload.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            managerDownloadDao.update(managerDownload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (ouputStream != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ouputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void exportMusicGroupCourseList(ManagerDownload managerDownload, ExportUserAccountQueryInfo queryInfo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<MusicGroupExportDto> rows = musicGroupDao.exportMusicGroupCourseList(queryInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void accept(StudentPaymentOrderExportDto orderDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (orderDto.getType() == OrderTypeEnum.DEGREE_REGISTRATION) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderDto.setDegreeFee(orderDto.getDegreeFee().add(orderDto.getActualAmount())); 
			 |