浏览代码

update 修改财务管理下载、订单下载的方式

周箭河 4 年之前
父节点
当前提交
ce670bfdb4

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -49,6 +49,10 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     private BigDecimal degreeFee = BigDecimal.ZERO;
     //其它费用
     private BigDecimal otherFee = BigDecimal.ZERO;
+    //乐保费用
+    private BigDecimal maintenanceFee = BigDecimal.ZERO;
+    //商品乐保
+    private BigDecimal maintenanceProductFee = BigDecimal.ZERO;
 
     private String organName;
     private String schoolName;
@@ -309,4 +313,20 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setServiceAmount(BigDecimal serviceAmount) {
         this.serviceAmount = serviceAmount;
     }
+
+    public BigDecimal getMaintenanceFee() {
+        return maintenanceFee;
+    }
+
+    public void setMaintenanceFee(BigDecimal maintenanceFee) {
+        this.maintenanceFee = maintenanceFee;
+    }
+
+    public BigDecimal getMaintenanceProductFee() {
+        return maintenanceProductFee;
+    }
+
+    public void setMaintenanceProductFee(BigDecimal maintenanceProductFee) {
+        this.maintenanceProductFee = maintenanceProductFee;
+    }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPaymentOrderQueryInfo.java

@@ -67,6 +67,8 @@ public class StudentPaymentOrderQueryInfo extends QueryInfo {
 
     private boolean isExport = false;
 
+    private String oldOrganId;
+
     public boolean getIsExport() {
         return isExport;
     }
@@ -226,4 +228,12 @@ public class StudentPaymentOrderQueryInfo extends QueryInfo {
     public void setNoneTqType(Integer noneTqType) {
         this.noneTqType = noneTqType;
     }
+
+    public String getOldOrganId() {
+        return oldOrganId;
+    }
+
+    public void setOldOrganId(String oldOrganId) {
+        this.oldOrganId = oldOrganId;
+    }
 }

+ 141 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -270,6 +270,7 @@ public class ExportServiceImpl implements ExportService {
     }
 
     @Override
+    @Async
     public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
         long i = 1;
@@ -334,11 +335,11 @@ public class ExportServiceImpl implements ExportService {
                         case OTHER:
                             row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice()));
                         case MAINTENANCE:
-                            BigDecimal repairFee = BigDecimal.ZERO;
+                            BigDecimal maintenanceFee = BigDecimal.ZERO;
                             if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
-                                repairFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
+                                maintenanceFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
                             }
-                            row.setRepairFee(repairFee);
+                            row.setMaintenanceFee(maintenanceFee);
                         default:
                             break;
                     }
@@ -406,7 +407,7 @@ public class ExportServiceImpl implements ExportService {
                 StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
                 row.setMusicalFee(feeByType.getMusicalFee());
                 row.setTeachingFee(feeByType.getTeachingFee());
-                row.setRepairFee(row.getRepairFee().add(feeByType.getRepairFee()));
+                row.setMaintenanceProductFee(feeByType.getRepairFee());
                 row.setOtherFee(feeByType.getOtherFee());
                 if (row.getGroupType().equals(GroupType.MUSIC)) {
                     StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
@@ -415,7 +416,7 @@ public class ExportServiceImpl implements ExportService {
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setCooperationOrganName(studentRegistration.getRemark());
                     }
-                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(row.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
+                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).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)) {
@@ -445,12 +446,144 @@ public class ExportServiceImpl implements ExportService {
             row.setPaymentChannel(paymentChannel);
             row.setId(i);
             i++;
+        }
+
+        Map<Long, List<StudentPaymentOrderExportDto>> orderMap = studentPaymentOrderExportDtos.stream().collect(Collectors.groupingBy(StudentPaymentOrder::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;
+            for (StudentPaymentOrderExportDto order : orders) {
+                Date endDate = DateUtil.stringToDate("2021-03-01", "yyyy-MM-dd");
+                if (order.getPayTime() == null || order.getPayTime().compareTo(endDate) < 0) {
+                    break;
+                }
+                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.setRepairFee(order.getMaintenanceProductFee());
+                    order.setLeaseFee(BigDecimal.ZERO);
+                    continue;
+                } else if (order.getSaleAmount().compareTo(BigDecimal.ZERO) == 0 && order.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) {
+                    order.setRepairFee(order.getRepairFee().add(order.getMaintenanceFee()));
+                    order.setMusicalFee(BigDecimal.ZERO);
+                    order.setTeachingFee(BigDecimal.ZERO);
+                    order.setOtherFee(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;
+
+                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);
+                    maintenanceFee = order.getMaintenanceFee().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);
+                }
 
-            //比例分配
-            if (row.getSaleAmount().compareTo(BigDecimal.ZERO) > 0 || row.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) {
+                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 {
+                            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);
+                    } else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
+                        repairFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(otherFee);
+                    } else if (order.getType().equals(OrderTypeEnum.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);
+                    maintenanceFee = order.getMaintenanceFee().subtract(routeMaintenanceFee);
+                    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);
+                }
 
+                routeMusicGroupCourseFee = routeMusicGroupCourseFee.add(musicGroupCourseFee);
+                routeVipCourseFee = routeVipCourseFee.add(vipCourseFee);
+                routePracticeCourseFee = routePracticeCourseFee.add(practiceCourseFee);
+                routeTheoryCourseFee = routeTheoryCourseFee.add(theoryCourseFee);
+                routeDegreeFee = routeDegreeFee.add(degreeFee);
+                routeRepairFee = routeRepairFee.add(repairFee);
+                routeMaintenanceFee = routeMaintenanceFee.add(maintenanceFee);
+                routeMaintenanceProductFee = routeMaintenanceProductFee.add(maintenanceProductFee);
+                routeLeaseFee = routeLeaseFee.add(leaseFee);
+                routeMusicalFee = routeMusicalFee.add(musicalFee);
+                routeTeachingFee = routeTeachingFee.add(teachingFee);
+                routeOtherFee = routeOtherFee.add(otherFee);
+
+                order.setMusicGroupCourseFee(musicGroupCourseFee);
+                order.setVipCourseFee(vipCourseFee);
+                order.setPracticeCourseFee(practiceCourseFee);
+                order.setTheoryCourseFee(theoryCourseFee);
+                order.setDegreeFee(degreeFee);
+                order.setRepairFee(repairFee.add(maintenanceFee).add(maintenanceProductFee).add(repairFee));
+                order.setMaintenanceFee(maintenanceFee);
+                order.setMaintenanceProductFee(maintenanceProductFee);
+                order.setLeaseFee(leaseFee);
+                order.setMusicalFee(musicalFee);
+                order.setTeachingFee(teachingFee);
+                order.setOtherFee(otherFee);
             }
-        }
+        });
+        String[] organIdArr = params.get("oldOrganId").toString().split(",");
+        List<String> organIds = Arrays.asList(organIdArr);
+        studentPaymentOrderExportDtos.removeIf(order -> !organIds.contains(order.getOrganId().toString()));
 
         String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath();
         File file = new File(basePath + "/" + managerDownload.getName());

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

@@ -2022,6 +2022,7 @@ public class ExportController extends BaseController {
         Employee employee = employeeDao.get(sysUser.getId());
         if (StringUtils.isEmpty(queryInfo.getRoutingOrganId()) && queryInfo.getOrderType().equals("3")) {
             queryInfo.setRoutingOrganId(employee.getOrganIdList());
+            queryInfo.setOldOrganId(employee.getOrganIdList());
         } else if (StringUtils.isEmpty(queryInfo.getOrganId())) {
             queryInfo.setOrganId(employee.getOrganIdList());
         }
@@ -2034,7 +2035,7 @@ public class ExportController extends BaseController {
             queryInfo.setUserIds(userIds);
         }
         queryInfo.setPage(1);
-        queryInfo.setRows(49999);
+        queryInfo.setRows(50000);
         queryInfo.setIsExport(true);
         queryInfo.setOrderType("3");
         Map<String, Object> params = new HashMap<String, Object>();
@@ -2048,6 +2049,8 @@ public class ExportController extends BaseController {
         if (count > 50000) {
             return failed("数据集太大,不能导出.最大数据集不能超过50000");
         }
+        queryInfo.setRoutingOrganId(null);
+
         Date nowDate = new Date();
         String no = idGeneratorService.generatorId("download") + "";
         String fileName = "routeOrderList-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";