|
@@ -1112,8 +1112,8 @@ public class ExportController extends BaseController {
|
|
|
return failed("数据集太大,不能导出.最大数据集不能超过50000");
|
|
|
}
|
|
|
Date nowDate = new Date();
|
|
|
- String no = idGeneratorService.generatorId("download") + "" ;
|
|
|
- String fileName = "orderList-"+no+"-" + DateUtil.getDate(nowDate) + ".xls" ;
|
|
|
+ String no = idGeneratorService.generatorId("download") + "";
|
|
|
+ String fileName = "orderList-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
|
|
|
ManagerDownload managerDownload = new ManagerDownload();
|
|
|
managerDownload.setUserId(sysUser.getId());
|
|
|
managerDownload.setName(fileName);
|
|
@@ -1121,7 +1121,7 @@ public class ExportController extends BaseController {
|
|
|
managerDownload.setCreateTime(nowDate);
|
|
|
managerDownload.setUpdateTime(nowDate);
|
|
|
managerDownloadDao.insert(managerDownload);
|
|
|
- exportService.orderList(params,managerDownload);
|
|
|
+ exportService.orderList(params, managerDownload);
|
|
|
return succeed("数据导出中,请到下载列表查看");
|
|
|
}
|
|
|
|
|
@@ -2016,7 +2016,7 @@ public class ExportController extends BaseController {
|
|
|
@ApiOperation(value = "财务管理导出")
|
|
|
@RequestMapping("export/routeOrderList")
|
|
|
@PreAuthorize("@pcs.hasPermissions('export/routeOrderList')")
|
|
|
- public void routeOrderList(StudentPaymentOrderQueryInfo queryInfo, HttpServletResponse response) throws IOException {
|
|
|
+ public HttpResponseResult routeOrderList(StudentPaymentOrderQueryInfo queryInfo) throws Exception {
|
|
|
SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
Employee employee = employeeDao.get(sysUser.getId());
|
|
|
if (StringUtils.isEmpty(queryInfo.getRoutingOrganId()) && queryInfo.getOrderType().equals("3")) {
|
|
@@ -2038,203 +2038,27 @@ public class ExportController extends BaseController {
|
|
|
queryInfo.setOrderType("3");
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
MapUtil.populateMap(params, queryInfo);
|
|
|
- List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
|
|
|
- if (studentPaymentOrderExportDtos.size() > 50000) {
|
|
|
- throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
|
|
|
- }
|
|
|
- OutputStream outputStream = response.getOutputStream();
|
|
|
- long i = 1;
|
|
|
- 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;
|
|
|
- if (row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")) {
|
|
|
- FeeFlagNumDto countFeeFlagNum = studentPaymentRouteOrderDao.getCountFeeFlagNum(row.getOrderNo());
|
|
|
- if (countFeeFlagNum.getTotalNum() > countFeeFlagNum.getYesNum() && row.getFeeFlag().equals("Y")) {
|
|
|
- transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
- if (countFeeFlagNum.getTotalNum().equals(countFeeFlagNum.getYesNum())) {
|
|
|
- transferFee = row.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
- }
|
|
|
- row.setTransferFee(transferFee);
|
|
|
-
|
|
|
- String goodsName = "";
|
|
|
- if (row.getOrderDetailList() != null) {
|
|
|
- for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
|
|
|
- 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(orderDetail.getPrice()));
|
|
|
- break;
|
|
|
- case MUSICAL:
|
|
|
- if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
|
|
|
- BigDecimal leaseFee = orderDetail.getPrice();
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- leaseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setLeaseFee(leaseFee);
|
|
|
- } else {
|
|
|
- row.setMusicalFee(orderDetail.getPrice());
|
|
|
- }
|
|
|
- break;
|
|
|
- case ACCESSORIES:
|
|
|
- case TEACHING:
|
|
|
- row.setTeachingFee(row.getTeachingFee().add(orderDetail.getPrice()));
|
|
|
- break;
|
|
|
- case OTHER:
|
|
|
- row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice()));
|
|
|
- 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());
|
|
|
- VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
|
|
|
- if (vipGroupInfo != null) {
|
|
|
- row.setSchoolName(vipGroupInfo.getSchoolName());
|
|
|
- row.setSubjectName(vipGroupInfo.getSubjectName());
|
|
|
- }
|
|
|
- } 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 {
|
|
|
- row.setOtherFee(row.getActualAmount());
|
|
|
- }
|
|
|
- }
|
|
|
- if (row.getChargeType() != null) {
|
|
|
- for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
|
|
|
- if (!chargeType.getCode().equals(row.getChargeType())) continue;
|
|
|
- row.setSporadicType(chargeType.getMsg());
|
|
|
- }
|
|
|
- }
|
|
|
- } 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());
|
|
|
- }
|
|
|
- } else {
|
|
|
- StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
|
|
|
- row.setMusicalFee(feeByType.getMusicalFee());
|
|
|
- row.setTeachingFee(feeByType.getTeachingFee());
|
|
|
- row.setRepairFee(feeByType.getRepairFee());
|
|
|
- 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.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
|
|
|
- } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
|
|
|
- row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
|
|
|
- } else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
|
|
|
- row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()));
|
|
|
- row.setTransferFee(BigDecimal.ZERO);
|
|
|
- }
|
|
|
- }
|
|
|
- //如果合作单位不存在取学员的第一个乐团的合作单位和教学点
|
|
|
- if (row.getCooperationOrganName() == null) {
|
|
|
- CooperationOrgan cooperationOrgan = musicGroupDao.findUserMusicGroupCooperationOrgan(row.getUserId());
|
|
|
- if (cooperationOrgan != null) {
|
|
|
- row.setCooperationOrganName(cooperationOrgan.getName());
|
|
|
- }
|
|
|
- }
|
|
|
- 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.setId(i);
|
|
|
- i++;
|
|
|
+
|
|
|
+ int count = studentPaymentRouteOrderDao.queryCount(params);
|
|
|
+ if (count <= 0) {
|
|
|
+ return failed("没有可导出的数据");
|
|
|
}
|
|
|
|
|
|
- try {
|
|
|
- String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分润余额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
|
|
|
- "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "备注"};
|
|
|
- String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
|
|
|
- "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
|
|
|
- HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
|
|
|
- response.setContentType("application/octet-stream");
|
|
|
- response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls"); // //收款账户
|
|
|
- response.flushBuffer();
|
|
|
- outputStream = response.getOutputStream();
|
|
|
- workbook.write(outputStream);
|
|
|
- outputStream.flush();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- if (outputStream != null) {
|
|
|
- try {
|
|
|
- outputStream.close();
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
+ if (count > 50000) {
|
|
|
+ return failed("数据集太大,不能导出.最大数据集不能超过50000");
|
|
|
}
|
|
|
+ Date nowDate = new Date();
|
|
|
+ String no = idGeneratorService.generatorId("download") + "";
|
|
|
+ String fileName = "routeOrderList-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
|
|
|
+ ManagerDownload managerDownload = new ManagerDownload();
|
|
|
+ managerDownload.setUserId(sysUser.getId());
|
|
|
+ managerDownload.setName(fileName);
|
|
|
+ managerDownload.setFileUrl("");
|
|
|
+ managerDownload.setCreateTime(nowDate);
|
|
|
+ managerDownload.setUpdateTime(nowDate);
|
|
|
+ managerDownloadDao.insert(managerDownload);
|
|
|
+ exportService.routeOrderList(params, managerDownload);
|
|
|
+ return succeed(fileName + "下载中,请到下载列表查看");
|
|
|
}
|
|
|
|
|
|
|