Просмотр исходного кода

缺失功能:
数据报表 11.1的财务数据-订单审核接口开发

jiakai 2 месяцев назад
Родитель
Сommit
48a5ec32e9

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

@@ -0,0 +1,39 @@
+package com.jzg.commons.entity.report.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 费用审核汇总统计结果VO:按保险公司分组统计各审核状态数量及平均审核时长
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(description = "费用审核汇总统计结果VO")
+public class FeeAuditSummaryVo {
+
+    @Schema(description = "保险公司ID")
+    private String companyId;
+
+    @Schema(description = "保险公司名称")
+    private String companyName;
+
+    @Schema(description = "待审核条数")
+    private Long pendingReviewNum;
+
+    @Schema(description = "已审核条数")
+    private Long approvedNum;
+
+    @Schema(description = "审核不通过条数")
+    private Long rejectedNum;
+
+    @Schema(description = "疑问订单条数")
+    private Long problemOrderNum;
+
+    @Schema(description = "平均审核时长(秒)")
+    private Long avgAuditDuration;
+}

+ 26 - 0
commons/src/main/java/com/jzg/commons/entity/report/vo/FeeAuditSummaryParam.java

@@ -0,0 +1,26 @@
+package com.jzg.commons.entity.report.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+/**
+ * 费用审核汇总统计请求参数
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Schema(description = "费用审核汇总统计请求参数")
+public class FeeAuditSummaryParam extends PageRequest {
+
+    @Schema(description = "审核开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate auditTimeStart;
+
+    @Schema(description = "审核结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate auditTimeEnd;
+}

+ 26 - 5
consoleStatistics/src/main/java/com/jzg/console/controller/ReportFinanceDataManageController.java

@@ -3,6 +3,8 @@ package com.jzg.console.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.report.dto.FeeAuditSummaryVo;
+import com.jzg.commons.entity.report.vo.FeeAuditSummaryParam;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 import com.jzg.console.service.*;
 import io.swagger.v3.oas.annotations.Operation;
@@ -45,6 +47,10 @@ public class ReportFinanceDataManageController extends BaseController {
     @Autowired
     private ReportPersonCheckDataService reportPersonCheckDataService;
 
+    //费用审核汇总统计
+    @Autowired
+    private ReportFeeAuditSummaryService reportFeeAuditSummaryService;
+
 
 
     /**
@@ -154,8 +160,8 @@ public class ReportFinanceDataManageController extends BaseController {
     @PostMapping(value = "/receivableDataDetailPageList")
     public HttpResult<?> receivableDataDetailPageList(@RequestBody ReportSearchCommonVo reportSearchCommonVo) {
         try{
-            List<?> list = reportReceivableDataService.getDetailListByParams(reportSearchCommonVo);
-            return HttpResult.ok(list);
+            IPage<?> pageList = reportReceivableDataService.getPageDetailListByParams(reportSearchCommonVo);
+            return HttpResult.ok(pageList);
         }catch (Exception e){
             return HttpResult.error(e.getMessage());
         }
@@ -187,8 +193,8 @@ public class ReportFinanceDataManageController extends BaseController {
     @PostMapping(value = "/meetDataPageList")
     public HttpResult<?> meetDataPageList(@RequestBody ReportSearchCommonVo reportSearchCommonVo) {
         try{
-            List<?> list = reportMeetDataService.getListByParams(reportSearchCommonVo);
-            return HttpResult.ok(list);
+            IPage<?> pageList = reportMeetDataService.getPageListByParams(reportSearchCommonVo);
+            return HttpResult.ok(pageList);
         }catch (Exception e){
             return HttpResult.error(e.getMessage());
         }
@@ -213,7 +219,7 @@ public class ReportFinanceDataManageController extends BaseController {
      *  @version
      *  @author: hxl
      *  @Date: 2025/9/22 17:11
-     *  @Description:  业务数据-对接人-明细查询
+     *  @Description:  财务数据-应付-明细查询
      */
     @Operation(summary = "财务数据-应付-明细查询", description = "财务数据-应付-明细查询")
     @PostMapping(value = "/meetDataDetailPageList")
@@ -340,4 +346,19 @@ public class ReportFinanceDataManageController extends BaseController {
         }
     }
 
+    /**
+     * 费用审核汇总统计:按保险公司分组统计待审核、已审核、审核不通过、疑问订单数量及平均审核时长
+     * @author: jk
+     */
+    @Operation(summary = "费用审核-汇总统计列表", description = "费用审核-汇总统计列表")
+    @PostMapping(value = "/feeAuditSummaryPageList")
+    public HttpResult<IPage<FeeAuditSummaryVo>> feeAuditSummaryPageList(@RequestBody FeeAuditSummaryParam param) {
+        try {
+            IPage<FeeAuditSummaryVo> pageList = reportFeeAuditSummaryService.getFeeAuditSummaryPage(param);
+            return HttpResult.ok(pageList);
+        } catch (Exception e) {
+            return HttpResult.error(e.getMessage());
+        }
+    }
+
 }

+ 18 - 0
consoleStatistics/src/main/java/com/jzg/console/mapper/ReportFeeAuditSummaryMapper.java

@@ -0,0 +1,18 @@
+package com.jzg.console.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.report.dto.FeeAuditSummaryVo;
+import com.jzg.commons.entity.report.vo.FeeAuditSummaryParam;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 费用审核汇总统计 Mapper
+ */
+public interface ReportFeeAuditSummaryMapper {
+
+    /**
+     * 按保险公司分组统计费用审核汇总数据
+     */
+    IPage<FeeAuditSummaryVo> getFeeAuditSummaryPage(Page<FeeAuditSummaryVo> page, @Param("param") FeeAuditSummaryParam param);
+}

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

@@ -0,0 +1,16 @@
+package com.jzg.console.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.jzg.commons.entity.report.dto.FeeAuditSummaryVo;
+import com.jzg.commons.entity.report.vo.FeeAuditSummaryParam;
+
+/**
+ * 费用审核汇总统计 Service
+ */
+public interface ReportFeeAuditSummaryService {
+
+    /**
+     * 按保险公司分组统计费用审核汇总(逻辑分页)
+     */
+    IPage<FeeAuditSummaryVo> getFeeAuditSummaryPage(FeeAuditSummaryParam param);
+}

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

@@ -0,0 +1,28 @@
+package com.jzg.console.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.report.dto.FeeAuditSummaryVo;
+import com.jzg.commons.entity.report.vo.FeeAuditSummaryParam;
+import com.jzg.console.mapper.ReportFeeAuditSummaryMapper;
+import com.jzg.console.service.ReportFeeAuditSummaryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 费用审核汇总统计 Service 实现
+ */
+@Service
+public class ReportFeeAuditSummaryServiceImpl implements ReportFeeAuditSummaryService {
+
+    @Autowired
+    private ReportFeeAuditSummaryMapper reportFeeAuditSummaryMapper;
+
+    @Override
+    public IPage<FeeAuditSummaryVo> getFeeAuditSummaryPage(FeeAuditSummaryParam param) {
+        // 创建分页对象
+        Page<FeeAuditSummaryVo> page = new Page<>(param.getPages(), param.getSize());
+        // 执行分组统计查询(逻辑分页:先查出全部再在内存中分页)
+        return reportFeeAuditSummaryMapper.getFeeAuditSummaryPage(page, param);
+    }
+}

+ 35 - 0
consoleStatistics/src/main/resources/mapper/ReportFeeAuditSummaryMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jzg.console.mapper.ReportFeeAuditSummaryMapper">
+
+    <!-- 按保险公司分组统计费用审核汇总数据 -->
+    <select id="getFeeAuditSummaryPage" resultType="com.jzg.commons.entity.report.dto.FeeAuditSummaryVo">
+        SELECT
+            io.company_id AS companyId,
+            io.company_name AS companyName,
+            -- 待审核:audit_status = 0 AND is_problem = 0
+            COUNT(CASE WHEN ifa.audit_status = 0 AND (ifa.is_problem IS NULL OR ifa.is_problem = 0) THEN 1 END) AS pendingReviewNum,
+            -- 已审核:audit_status = 1 AND (is_problem IS NULL OR is_problem = 0)
+            COUNT(CASE WHEN ifa.audit_status = 1 AND (ifa.is_problem IS NULL OR ifa.is_problem = 0) THEN 1 END) AS approvedNum,
+            -- 审核不通过:audit_status = 2 AND (is_problem IS NULL OR is_problem = 0)
+            COUNT(CASE WHEN ifa.audit_status = 2 AND (ifa.is_problem IS NULL OR ifa.is_problem = 0) THEN 1 END) AS rejectedNum,
+            -- 疑问订单:is_problem = 1
+            COUNT(CASE WHEN ifa.is_problem = 1 THEN 1 END) AS problemOrderNum,
+            -- 平均审核时长(秒):audit_time - receive_time
+            COALESCE(ROUND(AVG(TIMESTAMPDIFF(SECOND, ifa.receive_time, ifa.audit_time)), 0), 0) AS avgAuditDuration
+        FROM ins_fee_audit ifa
+        LEFT JOIN ins_orders io ON ifa.order_no = io.id AND io.is_delete = 0
+        <where>
+            ifa.is_delete = 0
+            <if test="param.auditTimeStart != null">
+                AND (ifa.audit_time &gt;= #{param.auditTimeStart} OR ifa.audit_time IS NULL)
+            </if>
+            <if test="param.auditTimeEnd != null">
+                AND (ifa.audit_time &lt;= #{param.auditTimeEnd} OR ifa.audit_time IS NULL)
+            </if>
+        </where>
+        GROUP BY io.company_id, io.company_name
+        ORDER BY approvedNum DESC, pendingReviewNum DESC
+    </select>
+
+</mapper>