瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 5 年之前
父節點
當前提交
2e700de348

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
@@ -41,4 +42,6 @@ public interface StudentPaymentRouteOrderDao extends BaseDAO<Long, StudentPaymen
                                    @Param("paymentChannelEnumList") List<PaymentChannelEnum> paymentChannelEnumList,
                                    @Param("startTime") Date startTime
     );
+
+    List<StudentPaymentOrderExportDto> ExportQueryPage(Map<String, Object> params);
 }

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

@@ -39,6 +39,15 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
 
     private List<Goods> goodsList;
 
+    //收款账户
+    private String routeMerNo;
+
+    //分润金额
+    private BigDecimal routeAmount;
+
+    //分润余额
+    private BigDecimal routeBalance;
+
     public BigDecimal getSporadicAmount() {
         return sporadicAmount;
     }
@@ -150,4 +159,28 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setCooperationOrganName(String cooperationOrganName) {
         this.cooperationOrganName = cooperationOrganName;
     }
+
+    public String getRouteMerNo() {
+        return routeMerNo;
+    }
+
+    public void setRouteMerNo(String routeMerNo) {
+        this.routeMerNo = routeMerNo;
+    }
+
+    public BigDecimal getRouteAmount() {
+        return routeAmount;
+    }
+
+    public void setRouteAmount(BigDecimal routeAmount) {
+        this.routeAmount = routeAmount;
+    }
+
+    public BigDecimal getRouteBalance() {
+        return routeBalance;
+    }
+
+    public void setRouteBalance(BigDecimal routeBalance) {
+        this.routeBalance = routeBalance;
+    }
 }

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -454,6 +454,9 @@
         <result column="organ_name" property="organName"/>
         <result column="username_" property="user.username"/>
         <result column="charge_type_" property="chargeType"/>
+        <result column="routeMerNo" property="routeMerNo" />
+        <result column="routeAmount" property="routeAmount" />
+        <result column="routeBalance" property="routeBalance" />
         <collection property="orderDetailList" ofType="com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail">
             <result column="detail_id_" property="id"/>
             <result column="detail_type_" property="type"/>

+ 18 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -185,4 +185,22 @@
         </if>
     </select>
 
+    <select id="ExportQueryPage" resultMap="com.ym.mec.biz.dal.dao.StudentPaymentOrderDao.orderAndDetail"
+            parameterType="map">
+        SELECT spo.*,u.username_,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
+        detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
+        sci.charge_type_,g.id_ goods_id, g.name_ goods_name,o.name_ organ_name,spro.route_amount_
+        routeAmount,spro.route_balance_amount_ routeBalance,
+        spro.mer_no_ routeMerNo
+        FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spro.order_no_ = spo.order_no_
+        LEFT JOIN sys_user u on spo.user_id_ = u.id_
+        LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
+        LEFT JOIN organization o on spro.route_organ_id_ = o.id_
+        LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
+        LEFT JOIN goods g on FIND_IN_SET(g.id_,spod.goods_id_list_)
+        <include refid="queryPaymentOrder"/>
+        ORDER BY spo.id_ ASC
+    </select>
+
 </mapper>

+ 170 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -92,6 +92,8 @@ public class ExportController extends BaseController {
 
     @Autowired
     private CooperationOrganService cooperationOrganService;
+    @Autowired
+    private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
 
     @ApiOperation(value = "导出教师考勤列表")
     @PostMapping("export/queryTeacherAttendances")
@@ -1798,4 +1800,172 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+
+    @ApiOperation(value = "财务管理导出")
+    @RequestMapping("export/routeOrderList")
+    @PreAuthorize("@pcs.hasPermissions('export/routeOrderList')")
+    public void routeOrderList(StudentPaymentOrderQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getRoutingOrganId()) && queryInfo.getOrderType().equals("3")) {
+                queryInfo.setRoutingOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            }
+        }
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        queryInfo.setIsExport(true);
+        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 (queryInfo.getOrderType().equals("1")) {
+                BigDecimal comAmount = row.getComAmount() == null ? BigDecimal.ZERO : row.getComAmount();
+                row.setActualAmount(comAmount);
+            } else if (queryInfo.getOrderType().equals("2")) {
+                BigDecimal perAmount = row.getPerAmount() == null ? BigDecimal.ZERO : row.getPerAmount();
+                row.setActualAmount(perAmount);
+            }
+            if (row.getActualAmount() == null) {
+                row.setActualAmount(BigDecimal.ZERO);
+            }
+            if (row.getBalancePaymentAmount() == null) {
+                row.setBalancePaymentAmount(BigDecimal.ZERO);
+            }
+            BigDecimal transferFee = (row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP);
+            row.setTransferFee(transferFee);
+            BigDecimal musicalFee = BigDecimal.ZERO;
+            BigDecimal teachingFee = BigDecimal.ZERO;
+            BigDecimal courseFee = BigDecimal.ZERO;
+            BigDecimal leaseFee = BigDecimal.ZERO;
+            String goodsName = "";
+            if (row.getOrderDetailList() != null) {
+                for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
+                    if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
+                        if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                            leaseFee = orderDetail.getPrice();
+                        } else {
+                            musicalFee = orderDetail.getPrice();
+                        }
+                    } else if (orderDetail.getType().equals(OrderDetailTypeEnum.COURSE)) {
+                        courseFee = courseFee.add(orderDetail.getPrice());
+                    } else if (orderDetail.getType().equals(OrderDetailTypeEnum.ACCESSORIES) || orderDetail.getType().equals(OrderDetailTypeEnum.TEACHING) || orderDetail.getType().equals(OrderDetailTypeEnum.OTHER)) {
+                        teachingFee = teachingFee.add(orderDetail.getPrice());
+                    }
+                }
+            }
+            if (row.getGoodsList() != null) {
+                goodsName = row.getGoodsList().stream().map(Goods::getName).collect(Collectors.joining("|"));
+            }
+            row.setCourseFee(courseFee);
+            row.setMusicalFee(musicalFee);
+            row.setTeachingFee(teachingFee);
+            row.setLeaseFee(leaseFee);
+            row.setMemo(goodsName);
+            //专业
+            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());
+                }
+            } else if (row.getGroupType().equals(GroupType.VIP)) {
+                row.setCourseFee(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)) {
+                row.setSporadicAmount(row.getActualAmount());
+                row.setMusicalFee(BigDecimal.ZERO);
+                row.setTeachingFee(BigDecimal.ZERO);
+                if (row.getChargeType() != null) {
+
+                    if (row.getChargeType().equals(1)) {
+                        row.setSporadicType("考级");
+                    } else if (row.getChargeType().equals(2)) {
+                        row.setSporadicType("声部更改");
+                    } else if (row.getChargeType().equals(3)) {
+                        row.setSporadicType("乐器更换");
+                    } else if (row.getChargeType().equals(4)) {
+                        row.setSporadicType("配件销售");
+                    } else if (row.getChargeType().equals(5)) {
+                        row.setSporadicType("维修费");
+                    } else if (row.getChargeType().equals(6)) {
+                        row.setSporadicType("福袋活动");
+                    } else if (row.getChargeType().equals(7)) {
+                        row.setSporadicType("上门费");
+                    } else if (row.getChargeType().equals(9)) {
+                        row.setSporadicType("账户充值");
+                    } else if (row.getChargeType().equals(10)) {
+                        row.setSporadicType("乐保服务");
+                    } else if (row.getChargeType().equals(11)) {
+                        row.setSporadicType("其他");
+                    }
+                }
+                School userSchool = musicGroupDao.findUserSchool(row.getUserId());
+                if (userSchool != null) {
+                    row.setSchoolName(userSchool.getName());
+                }
+            } else if (row.getGroupType().equals(GroupType.PRACTICE)) {
+                row.setCourseFee(row.getActualAmount());
+                School userSchool = musicGroupDao.findUserSchool(row.getUserId());
+                if (userSchool != null) {
+                    row.setSchoolName(userSchool.getName());
+                }
+                PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
+                if (practiceGroup != null) {
+                    row.setSubjectName(practiceGroup.getSubjectName());
+                }
+            }
+            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++;
+        }
+
+        try {
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付","分润账户","分润金额","分润余额","到账时间",
+                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount","routeMerNo","routeAmount","routeBalance", "payTime", "musicGroupId",
+                    "groupType.desc", "courseFee", "remitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "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();
+                }
+            }
+        }
+    }
 }