Bläddra i källkod

增加功能:
财务报表的序号11和12增加导出功能

jiakai 2 månader sedan
förälder
incheckning
25b6386a08

+ 9 - 0
commons/src/main/java/com/jzg/commons/entity/report/dto/FeeAuditSummaryVo.java

@@ -1,5 +1,7 @@
 package com.jzg.commons.entity.report.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -16,24 +18,31 @@ import lombok.NoArgsConstructor;
 @Schema(description = "费用审核汇总统计结果VO")
 public class FeeAuditSummaryVo {
 
+    @ExcelIgnore
     @Schema(description = "保险公司ID")
     private String companyId;
 
+    @ExcelProperty(value = "保险公司名称", index = 0)
     @Schema(description = "保险公司名称")
     private String companyName;
 
+    @ExcelProperty(value = "待审核条数", index = 1)
     @Schema(description = "待审核条数")
     private Long pendingReviewNum;
 
+    @ExcelProperty(value = "已审核条数", index = 2)
     @Schema(description = "已审核条数")
     private Long approvedNum;
 
+    @ExcelProperty(value = "审核不通过条数", index = 3)
     @Schema(description = "审核不通过条数")
     private Long rejectedNum;
 
+    @ExcelProperty(value = "疑问订单条数", index = 4)
     @Schema(description = "疑问订单条数")
     private Long problemOrderNum;
 
+    @ExcelProperty(value = "平均审核时长(秒)", index = 5)
     @Schema(description = "平均审核时长(秒)")
     private Long avgAuditDuration;
 }

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/report/dto/ReportReceivableDataDto.java

@@ -50,7 +50,7 @@ public class ReportReceivableDataDto {
     /**
      * 未开票
      */
-    @ExcelProperty(value = "应收", index = 3)
+    @ExcelProperty(value = "未开票", index = 2)
     @ColumnWidth(10)
     @Schema(description = "未开票")
     private BigDecimal uninvoicedMoney;

+ 43 - 0
consoleStatistics/src/main/java/com/jzg/console/controller/ReportFinanceDataManageController.java

@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -364,6 +365,16 @@ public class ReportFinanceDataManageController extends BaseController {
         }
     }
 
+    /**
+     * 费用审核汇总统计导出Excel
+     * @author: jk
+     */
+    @Operation(summary = "费用审核-汇总统计导出", description = "费用审核-汇总统计导出Excel")
+    @PostMapping(value = "/exportFeeAuditSummary")
+    public void exportFeeAuditSummary(@RequestBody FeeAuditSummaryParam param) {
+        reportFeeAuditSummaryService.exportFeeAuditSummary(param);
+    }
+
     /**
      * 费用审核明细列表:根据保险公司ID查询该公司的所有审核明细(不区分审核状态)
      * @author: jk
@@ -379,6 +390,16 @@ public class ReportFinanceDataManageController extends BaseController {
         }
     }
 
+    /**
+     * 费用审核明细列表导出Excel
+     * @author: jk
+     */
+    @Operation(summary = "费用审核-明细导出", description = "费用审核-明细导出Excel")
+    @PostMapping(value = "/exportFeeAuditDetail")
+    public void exportFeeAuditDetail(@RequestBody FeeAuditDetailParam param) {
+        reportFeeAuditSummaryService.exportFeeAuditDetail(param);
+    }
+
     /**
      * 财务数据-应收统计:按月份汇总查询应收数据
      * 查询选中年份的私有协议(车险+非车的手续费+跟单费)应收数据,按月份汇总
@@ -399,6 +420,17 @@ public class ReportFinanceDataManageController extends BaseController {
         }
     }
 
+    /**
+     * 财务数据-应收统计导出Excel
+     * @author: jk
+     */
+    @Operation(summary = "财务数据-应收统计导出", description = "财务数据-应收统计导出Excel(按月份汇总)")
+    @PostMapping(value = "/exportReceivableStatistics")
+    public void exportReceivableStatistics(@RequestBody ReportSearchCommonVo reportSearchCommonVo) {
+        String systemCode = getSystemCode();
+        reportReceivableDataService.exportReceivableStatistics(reportSearchCommonVo, systemCode);
+    }
+
     /**
      * 财务数据-应收统计明细:按保险公司分组查询应收数据
      * 查询选中年月的应收数据,按保险公司分组
@@ -418,4 +450,15 @@ public class ReportFinanceDataManageController extends BaseController {
         }
     }
 
+    /**
+     * 财务数据-应收统计明细导出Excel
+     * @author: jk
+     */
+    @Operation(summary = "财务数据-应收统计明细导出", description = "财务数据-应收统计明细导出Excel(按保险公司分组)")
+    @PostMapping(value = "/exportReceivableStatisticsDetail")
+    public void exportReceivableStatisticsDetail(@RequestBody ReportSearchCommonVo reportSearchCommonVo) {
+        String systemCode = getSystemCode();
+        reportReceivableDataService.exportReceivableStatisticsDetail(reportSearchCommonVo, systemCode);
+    }
+
 }

+ 10 - 0
consoleStatistics/src/main/java/com/jzg/console/service/ReportFeeAuditSummaryService.java

@@ -21,4 +21,14 @@ public interface ReportFeeAuditSummaryService {
      * 按保险公司查询费用审核明细列表(分页)
      */
     Page<FeeAuditVo> getFeeAuditDetailPage(FeeAuditDetailParam param);
+
+    /**
+     * 费用审核汇总统计导出Excel(复用分页方法,设置不分页参数)
+     */
+    void exportFeeAuditSummary(FeeAuditSummaryParam param);
+
+    /**
+     * 费用审核明细列表导出Excel(复用分页方法,设置不分页参数)
+     */
+    void exportFeeAuditDetail(FeeAuditDetailParam param);
 }

+ 14 - 0
consoleStatistics/src/main/java/com/jzg/console/service/ReportReceivableDataService.java

@@ -49,4 +49,18 @@ public interface ReportReceivableDataService extends  ReportBaseService{
      *  @return 按保险公司分组的应收明细数据列表
      */
     List<?> getReceivableStatisticsDetail(ReportSearchCommonVo reportSearchCommonVo, String systemCode);
+
+    /**
+     * 财务数据-应收统计导出Excel
+     * @param reportSearchCommonVo 查询参数
+     * @param systemCode 系统编码
+     */
+    void exportReceivableStatistics(ReportSearchCommonVo reportSearchCommonVo, String systemCode);
+
+    /**
+     * 财务数据-应收统计明细导出Excel
+     * @param reportSearchCommonVo 查询参数
+     * @param systemCode 系统编码
+     */
+    void exportReceivableStatisticsDetail(ReportSearchCommonVo reportSearchCommonVo, String systemCode);
 }

+ 20 - 0
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportFeeAuditSummaryServiceImpl.java

@@ -8,6 +8,8 @@ import com.jzg.commons.entity.report.dto.FeeAuditSummaryVo;
 import com.jzg.commons.entity.report.vo.FeeAuditDetailParam;
 import com.jzg.commons.entity.report.vo.FeeAuditSummaryParam;
 import com.jzg.commons.entity.orders.vo.FeeAuditVo;
+import com.jzg.commons.util.EasyExcelUtils;
+import com.jzg.commons.util.ServletUtils;
 import com.jzg.console.client.FeeAuditClient;
 import com.jzg.console.mapper.ReportFeeAuditSummaryMapper;
 import com.jzg.console.service.ReportFeeAuditSummaryService;
@@ -60,4 +62,22 @@ public class ReportFeeAuditSummaryServiceImpl implements ReportFeeAuditSummarySe
         // 返回空分页避免前端报错
         return new Page<>(param.getPages(), param.getSize());
     }
+
+    @Override
+    public void exportFeeAuditSummary(FeeAuditSummaryParam param) {
+        // 复用分页方法,设置不分页参数
+        param.setPages(1);
+        param.setSize(100000);
+        IPage<FeeAuditSummaryVo> page = getFeeAuditSummaryPage(param);
+        EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), FeeAuditSummaryVo.class, page.getRecords(), "费用审核汇总统计");
+    }
+
+    @Override
+    public void exportFeeAuditDetail(FeeAuditDetailParam param) {
+        // 复用分页方法,设置不分页参数
+        param.setPages(1);
+        param.setSize(Integer.MAX_VALUE);
+        Page<FeeAuditVo> page = getFeeAuditDetailPage(param);
+        EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), FeeAuditVo.class, page.getRecords(), "费用审核明细");
+    }
 }

+ 89 - 0
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportReceivableDataServiceImpl.java

@@ -3,8 +3,11 @@ package com.jzg.console.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.alibaba.excel.EasyExcel;
 import com.jzg.commons.entity.report.dto.*;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
+import com.jzg.commons.util.EasyExcelUtils;
+import com.jzg.commons.util.ServletUtils;
 import com.jzg.console.mapper.ReportReceivableDataMapper;
 import com.jzg.console.service.ReportReceivableDataService;
 import org.slf4j.Logger;
@@ -147,4 +150,90 @@ public class ReportReceivableDataServiceImpl extends ReportBaseServiceImpl imple
         }
         return reportReceivableDataMapper.getReceivableStatisticsDetail(reportSearchCommonVo, systemCode);
     }
+
+    @Override
+    public void exportReceivableStatistics(ReportSearchCommonVo reportSearchCommonVo, String systemCode) {
+        log.info("财务数据-应收统计导出Excel. reportSearchCommonVo=[{}], systemCode=[{}]", JSONUtil.toJsonStr(reportSearchCommonVo), systemCode);
+        List<ReportReceivableDataDto> dataList = reportReceivableDataMapper.getReceivableStatisticsByMonth(reportSearchCommonVo, systemCode);
+        EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ReportReceivableDataDto.class, dataList, "财务数据-应收统计");
+    }
+
+    @Override
+    public void exportReceivableStatisticsDetail(ReportSearchCommonVo reportSearchCommonVo, String systemCode) {
+        log.info("财务数据-应收统计明细导出Excel. reportSearchCommonVo=[{}], systemCode=[{}]", JSONUtil.toJsonStr(reportSearchCommonVo), systemCode);
+        List<ReportReceivableDetailDto> dataList = reportReceivableDataMapper.getReceivableStatisticsDetail(reportSearchCommonVo, systemCode);
+
+        // 构建表头
+        List<List<String>> head = java.util.Arrays.asList(
+            java.util.Arrays.asList("保险公司名称"),
+            java.util.Arrays.asList("应收-手续费金额"), java.util.Arrays.asList("应收-跟单费金额"),
+            java.util.Arrays.asList("应收-平台应收金额"), java.util.Arrays.asList("应收-合计金额"),
+            java.util.Arrays.asList("未开票-手续费金额"), java.util.Arrays.asList("未开票-跟单费金额"),
+            java.util.Arrays.asList("未开票-平台应收金额"), java.util.Arrays.asList("未开票-合计金额"),
+            java.util.Arrays.asList("已开票-手续费金额"), java.util.Arrays.asList("已开票-跟单费金额"),
+            java.util.Arrays.asList("已开票-平台应收金额"), java.util.Arrays.asList("已开票-合计金额"),
+            java.util.Arrays.asList("未结算-手续费金额"), java.util.Arrays.asList("未结算-跟单费金额"),
+            java.util.Arrays.asList("未结算-平台应收金额"), java.util.Arrays.asList("未结算-合计金额"),
+            java.util.Arrays.asList("已结算-手续费金额"), java.util.Arrays.asList("已结算-跟单费金额"),
+            java.util.Arrays.asList("已结算-平台应收金额"), java.util.Arrays.asList("已结算-合计金额")
+        );
+
+        // 构建数据行
+        List<List<Object>> rows = dataList.stream().map(dto -> {
+            List<Object> row = new java.util.ArrayList<>();
+            row.add(dto.getCompanyName());
+            if (dto.getReceivable() != null) {
+                row.add(dto.getReceivable().getCommissionFee());
+                row.add(dto.getReceivable().getFollowFee());
+                row.add(dto.getReceivable().getPlatformReceivable());
+                row.add(dto.getReceivable().getTotalAmount());
+            } else {
+                row.add(null); row.add(null); row.add(null); row.add(null);
+            }
+            if (dto.getUninvoiced() != null) {
+                row.add(dto.getUninvoiced().getCommissionFee());
+                row.add(dto.getUninvoiced().getFollowFee());
+                row.add(dto.getUninvoiced().getPlatformReceivable());
+                row.add(dto.getUninvoiced().getTotalAmount());
+            } else {
+                row.add(null); row.add(null); row.add(null); row.add(null);
+            }
+            if (dto.getInvoiced() != null) {
+                row.add(dto.getInvoiced().getCommissionFee());
+                row.add(dto.getInvoiced().getFollowFee());
+                row.add(dto.getInvoiced().getPlatformReceivable());
+                row.add(dto.getInvoiced().getTotalAmount());
+            } else {
+                row.add(null); row.add(null); row.add(null); row.add(null);
+            }
+            if (dto.getUnsettled() != null) {
+                row.add(dto.getUnsettled().getCommissionFee());
+                row.add(dto.getUnsettled().getFollowFee());
+                row.add(dto.getUnsettled().getPlatformReceivable());
+                row.add(dto.getUnsettled().getTotalAmount());
+            } else {
+                row.add(null); row.add(null); row.add(null); row.add(null);
+            }
+            if (dto.getSettled() != null) {
+                row.add(dto.getSettled().getCommissionFee());
+                row.add(dto.getSettled().getFollowFee());
+                row.add(dto.getSettled().getPlatformReceivable());
+                row.add(dto.getSettled().getTotalAmount());
+            } else {
+                row.add(null); row.add(null); row.add(null); row.add(null);
+            }
+            return row;
+        }).toList();
+
+        try {
+            jakarta.servlet.http.HttpServletResponse response = ServletUtils.getResponse();
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            String fileEName = java.net.URLEncoder.encode("财务数据-应收统计明细", "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileEName + ".xlsx");
+            EasyExcel.write(response.getOutputStream()).head(head).sheet("财务数据-应收统计明细").doWrite(rows);
+        } catch (java.io.IOException e) {
+            log.error("导出文件异常", e);
+        }
+    }
 }