|
@@ -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)) {
|
|
@@ -2326,7 +2306,7 @@ public class ExportServiceImpl implements ExportService {
|
|
|
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);
|
|
@@ -2382,6 +2362,211 @@ 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){
|
|
@@ -2516,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())));
|
|
@@ -2533,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())));
|
|
@@ -2544,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()) {
|
|
@@ -2566,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);
|
|
@@ -2617,9 +2800,6 @@ public class ExportServiceImpl implements ExportService {
|
|
|
|
|
|
public void setServiceFee(StudentPaymentOrderExportDto basicOrder, StudentPaymentOrderDetail orderDetail,
|
|
|
Map<Integer, String> userFirstVipMap){
|
|
|
- //如果订单有余额,那么按比例排除掉订单详情中的余额,多的部分放在最后一条记录中
|
|
|
- //比例 = 订单详情金额/订单总金额
|
|
|
- //实际支付金额 = 订单详情金额 * 比例 保留两位小数,其余舍掉,如果是最后一笔订单详情,将剩余的金额直接赋值
|
|
|
Optional.ofNullable(orderDetailTypeServiceConsumerMap.get(orderDetail.getType())).ifPresent(consumer -> consumer.accept(basicOrder, orderDetail));
|
|
|
if (orderDetail.getType() == OrderDetailTypeEnum.VIP && basicOrder.getTypeDesc() == null) {
|
|
|
//学员没有历史VIP课程则导出为【VIP课新增】
|
|
@@ -2691,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());
|
|
@@ -2709,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());
|
|
@@ -2738,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()));
|