Browse Source

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260622'

jiakai 1 week ago
parent
commit
95eddeb1eb

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java

@@ -4,6 +4,7 @@ import com.jzg.commons.core.base.PageRequest;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -88,4 +89,10 @@ public class InvoiceRecordQueryVo extends PageRequest {
      */
     @Schema(description = "签署月份")
     private String signMonth;
+
+    @Schema(description = "开票金额")
+    private BigDecimal receivableSupervisePremium;
+
+    @Schema(description = "开票金额(参数接收)")
+    private String amount;
 }

+ 21 - 1
commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableQueryVo.java

@@ -113,6 +113,9 @@ public class ReceivableQueryVo extends PageRequest {
     @Schema(description = "结算状态")
     private String settlementStatus;
 
+//    @Schema(description = "结算人(姓名/手机号)")
+//    private String settlementPerson;
+
     @Schema(description = "开票和结算状态")
     private String invoiceSettlementStatus;
 
@@ -125,6 +128,12 @@ public class ReceivableQueryVo extends PageRequest {
     @Schema(description = "租户代码")
     private String systemCode;
 
+    @Schema(description = "业务员姓名")
+    private String salesmanName;
+
+    @Schema(description = "业务员手机号")
+    private String salemanPhone;
+
     /**
      * 类型:1:手续费 2:跟单费 3:驾意手续费 4:驾意跟单费
      */
@@ -139,15 +148,26 @@ public class ReceivableQueryVo extends PageRequest {
     @Schema(description = "报价开始时间")
     private String reportTimeBegin;
 
+    // 后期调整成 quotationTimeBegin 字段
     @Schema(description = "报价结束时间")
     private String reportTimeEnd;
 
+    @Schema(description = "报价开始时间")
+    private String quotationTimeBegin;
+
+    @Schema(description = "报价结束时间")
+    private String quotationTimeEnd;
+
     @Schema(description = "保险机构")
     private String partnerCompanyId;
 
-    @Schema(description = "修改人")
+    @Schema(description = "应收修改人")
     private String updateBy;
 
+    @Schema(description = "投保人")
+    private String policyholder;
 
+    @Schema(description = "被保人")
+    private String insurName;
 
 }

+ 27 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java

@@ -100,4 +100,31 @@ public class SettlementQueryVo extends PageRequest {
 
     @Schema(description = "发票号")
     private String invoiceNo;
+
+    @Schema(description = "交强险保单号")
+    private String jqPolicyNo;
+    @Schema(description = "商业险保单号")
+    private String syPolicyNo;
+    @Schema(description = "驾意险保单号")
+    private String jyPolicyNo;
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
+
+    @Schema(description = "被保人")
+    private String insurName;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "签单时间-起")
+    private String signingTimeBegin;
+
+    @Schema(description = "签单时间-止")
+    private String signingTimeEnd;
+
+    @Schema(description = "签单时间(如退保、批加,下拉点选)")
+    private String orderStatus;
+
+
 }

+ 16 - 12
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -17,6 +17,7 @@ import com.jzg.commons.entity.orders.po.InsOrderAdjust;
 import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.DateTimeUtils;
 import com.jzg.organization.client.EsmInsCompanyClient;
 import com.jzg.organization.service.ReceivableService;
 import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
@@ -846,28 +847,31 @@ public class ReceivableController {
         Page page = vo.getPage();
         vo.setSettlementStartTime(vo.getStartTime());
         vo.setSettlementEndTime(vo.getEndTime());
-        if(StrUtil.isEmpty(vo.getSettlementEndTime()) && StrUtil.isEmpty(vo.getSettlementStartTime()) && StrUtil.isEmpty(vo.getReceivePaymentDateBegin()) && StrUtil.isEmpty(vo.getReceivePaymentDateEnd()))  {
+        if(StrUtil.isEmpty(vo.getSettlementEndTime()) && StrUtil.isEmpty(vo.getSettlementStartTime())
+                && StrUtil.isEmpty(vo.getReceivePaymentDateBegin()) && StrUtil.isEmpty(vo.getReceivePaymentDateEnd())
+                && StrUtil.isEmpty(vo.getSigningStartTime()) && StrUtil.isEmpty(vo.getSigningEndTime())
+        )  {
             return HttpResult.ok(receivableService.receiverSettlementReport(page,vo));
         }else{
             if(StrUtil.isNotEmpty(vo.getSettlementStartTime())){
-                LocalDateTime localDateTime = LocalDate.parse(vo.getSettlementStartTime()).atStartOfDay();
-                vo.setSettlementStartTime(DateUtil.formatLocalDateTime(localDateTime));
+                vo.setSettlementStartTime(DateTimeUtils.obtainStartTime(vo.getSettlementStartTime()));
             }
             if(StrUtil.isNotEmpty(vo.getSettlementEndTime())){
-                LocalDateTime localDateTime = LocalDate.parse(vo.getSettlementEndTime()).plusDays(1).atStartOfDay();
-                vo.setSettlementEndTime(DateUtil.formatLocalDateTime(localDateTime));
+                vo.setSettlementEndTime(DateTimeUtils.obtainNextDayStartTime(vo.getSettlementEndTime()));
             }
-
-
             if(StrUtil.isNotEmpty(vo.getReceivePaymentDateBegin())){
-                LocalDateTime localDateTime = LocalDate.parse(vo.getReceivePaymentDateBegin()).atStartOfDay();
-                vo.setReceivePaymentDateBegin(DateUtil.formatLocalDateTime(localDateTime));
+                vo.setReceivePaymentDateBegin(DateTimeUtils.obtainStartTime(vo.getReceivePaymentDateBegin()));
             }
             if(StrUtil.isNotEmpty(vo.getReceivePaymentDateEnd())){
-                LocalDateTime localDateTime = LocalDate.parse(vo.getReceivePaymentDateEnd()).plusDays(1).atStartOfDay();
-                vo.setReceivePaymentDateEnd(DateUtil.formatLocalDateTime(localDateTime));
+                vo.setReceivePaymentDateEnd(DateTimeUtils.obtainNextDayStartTime(vo.getReceivePaymentDateEnd()));
+            }
+            // 签单时间和王文琦沟通过了,先添加上,然后, 后期再想办法,看看能不能添加让其生效
+            if(StrUtil.isNotEmpty(vo.getSigningStartTime())){
+                vo.setSigningStartTime(DateTimeUtils.obtainStartTime(vo.getSigningStartTime()));
+            }
+            if(StrUtil.isNotEmpty(vo.getSigningEndTime())){
+                vo.setSigningEndTime(DateTimeUtils.obtainNextDayStartTime(vo.getSigningEndTime()));
             }
-
             vo.setStartTime(null);
             vo.setEndTime(null);
             // 备注一下: 对于结算时间不为空的时候,查询出来的结算状态都是已结算的数据

+ 111 - 61
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -305,23 +305,32 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 3. 将完整数据设置回分页对象并返回
      * </p>
      *
-     * @param receivableQueryVo 列表查询条件,包含订单号、保险公司ID、结算状态、时间范围等筛选条件,以及分页参数
+     * @param vo 列表查询条件,包含订单号、保险公司ID、结算状态、时间范围等筛选条件,以及分页参数
      * @return Page<InsPlyIncome> 返回分页后的应收订单列表,包含完整的订单信息及关联数据
      */
     @Override
-    public Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo) {
-        log.info("获取私有协议手续费应收列表。receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
-
-//        if(StrUtil.isNotEmpty(receivableQueryVo.getUpdateBy())){
-//            insFeeOrdersClient.getUserNameByMobile();
-//        }
+    public Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo vo) {
+        log.info("获取私有协议手续费应收列表。vo=[{}]", JSONUtil.toJsonStr(vo));
 
+        // 完善支付时间的查询条件
+        if(StrUtil.isNotEmpty(vo.getPayTimeBegin())){
+            vo.setPayTimeBegin(DateTimeUtils.obtainStartTime(vo.getPayTimeBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getPayTimeEnd())){
+            vo.setPayTimeEnd(DateTimeUtils.obtainNextDayStartTime(vo.getPayTimeEnd()));
+        }
+        if(StrUtil.isNotEmpty(vo.getSigningTimeStart())){
+            vo.setSigningTimeStart(DateTimeUtils.obtainStartTime(vo.getSigningTimeStart()));
+        }
+        if(StrUtil.isNotEmpty(vo.getSigningTimeEnd())){
+            vo.setSigningTimeEnd(DateTimeUtils.obtainNextDayStartTime(vo.getSigningTimeEnd()));
+        }
 
-        Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
+        Page<InsPlyIncome> page = baseMapper.getReceivablePage(vo.getPage(), vo);
         List<InsPlyIncome> records = page.getRecords();
         records = records.stream().filter(action->{
             // add by lipf 2026年7月3日09:55:17 只有私有的非车,才需要走下面的逻辑。 将非车保费为0的记录不显示
-            if(StrUtil.isEmpty(receivableQueryVo.getQueryType()) || !"3".equals(receivableQueryVo.getQueryType())){
+            if(StrUtil.isEmpty(vo.getQueryType()) || !"3".equals(vo.getQueryType())){
                 return true;
             }
             if(StrUtil.isEmpty(action.getJyPremium())){
@@ -330,7 +339,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             BigDecimal JyPremium = new BigDecimal(action.getJyPremium());
             return BigDecimal.ZERO.compareTo(JyPremium) != 0;
         }).toList();
-        records = this.fillOtherInfo(records,receivableQueryVo.getInvoiceType());
+        records = this.fillOtherInfo(records,vo.getInvoiceType());
         page.setRecords(records);
         return page;
     }
@@ -844,7 +853,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 5. 补充收入表中的其他费用应收数据(驾意险相关费用)
      * </p>
      *
-     * @param settlementReportQueryVo 结算报表查询条件对象,包含查询所需的过滤参数(如时间范围、公司ID等)
+     * @param vo 结算报表查询条件对象,包含查询所需的过滤参数(如时间范围、公司ID等)
      * @return List<FollowCompanyFeeVO> 返回跟单公司费用视图对象列表,每个对象包含:
      *         - partnerCompanyId: 合作公司ID
      *         - companyName: 合作公司名称
@@ -857,10 +866,17 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      *         - totalUnSettlementAmount: 未结算总金额
      */
     @Override
-    public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
-        log.info("私有协议-跟单结算记录-结算报表: settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
+    public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo vo) {
+        log.info("私有协议-跟单结算记录-结算报表: vo=[{}]", JSONUtil.toJsonStr(vo));
+
+        if(StrUtil.isNotEmpty(vo.getReceivePaymentDateBegin())){
+            vo.setReceivePaymentDateBegin(DateTimeUtils.obtainStartTime(vo.getReceivePaymentDateBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getReceivePaymentDateEnd())){
+            vo.setReceivePaymentDateEnd(DateTimeUtils.obtainNextDayStartTime(vo.getReceivePaymentDateEnd()));
+        }
         List<FollowCompanyFeeVO> resultList = new ArrayList<>();
-        String invoiceType = settlementReportQueryVo.getInvoiceType();
+        String invoiceType = vo.getInvoiceType();
 
         // 1. 获取保险公司全量Map
         Map<String, EsmInsCompany> companyMap = getAllInsCompanyMap();
@@ -869,17 +885,17 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
 
         // 处理公司ID,递归收集子公司ID
-        fillCompanyChildIds(settlementReportQueryVo, companyMap);
+        fillCompanyChildIds(vo, companyMap);
 
         // 2. 查询跟单主数据并聚合
-        List<FollowCompanyFeeVO> originalFollowList = insFeeFollowOrderMapper.selectFollowCompanySettlementReport(settlementReportQueryVo);
+        List<FollowCompanyFeeVO> originalFollowList = insFeeFollowOrderMapper.selectFollowCompanySettlementReport(vo);
         if (CollUtil.isNotEmpty(originalFollowList)) {
             List<FollowCompanyFeeVO> followAggVoList = aggregateFollowData(originalFollowList, companyMap);
             resultList.addAll(followAggVoList);
         }
 
         // 3. 查询补充应收收入数据并合并
-        fillOtherReceivableData(settlementReportQueryVo, resultList, companyMap, invoiceType);
+        fillOtherReceivableData(vo, resultList, companyMap, invoiceType);
 
         if (CollUtil.isEmpty(resultList)) {
             return resultList;
@@ -5113,17 +5129,32 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 3. 将完整数据设置回分页对象并返回
      * </p>
      *
-     * @param receivableQueryVo 列表查询条件,包含订单号、保险公司ID、结算状态、时间范围等筛选条件,以及分页参数
+     * @param vo 列表查询条件,包含订单号、保险公司ID、结算状态、时间范围等筛选条件,以及分页参数
      * @return Page<InsPlyIncome> 返回分页后的平台协议应收订单列表,包含完整的订单信息及关联数据
      */
     @Override
-    public Page<InsPlyIncome> getPlatFormReceivableList(ReceivableQueryVo receivableQueryVo) {
-        log.info("获取平台协议列表. receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
-        Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
+    public Page<InsPlyIncome> getPlatFormReceivableList(ReceivableQueryVo vo) {
+        log.info("获取平台协议列表. vo=[{}]", JSONUtil.toJsonStr(vo));
+
+        // 对支付时间进行增强适配, 在日期后面添加上时分秒
+        if(StrUtil.isNotEmpty(vo.getPayTimeBegin())){
+            vo.setPayTimeBegin(DateTimeUtils.obtainStartTime(vo.getPayTimeBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getPayTimeEnd())){
+            vo.setPayTimeEnd(DateTimeUtils.obtainNextDayStartTime(vo.getPayTimeEnd()));
+        }
+        // 对报价时间进行增强适配
+        if(StrUtil.isNotEmpty(vo.getQuotationTimeBegin())){
+            vo.setQuotationTimeBegin(DateTimeUtils.obtainStartTime(vo.getQuotationTimeBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getQuotationTimeEnd())){
+            vo.setQuotationTimeEnd(DateTimeUtils.obtainNextDayStartTime(vo.getQuotationTimeEnd()));
+        }
+        Page<InsPlyIncome> page = baseMapper.getReceivablePage(vo.getPage(), vo);
         List<InsPlyIncome> records = page.getRecords();
         records = this.fillOtherInfo(records,null);
         // 过滤业务来源
-        records = records.stream().filter(income -> StrUtil.isBlank(receivableQueryVo.getTypeAttr()) || receivableQueryVo.getTypeAttr().equals(income.getTypeAttr())).collect(Collectors.toList());
+        records = records.stream().filter(income -> StrUtil.isBlank(vo.getTypeAttr()) || vo.getTypeAttr().equals(income.getTypeAttr())).collect(Collectors.toList());
         page.setRecords(records);
         return page;
     }
@@ -5428,26 +5459,32 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     /**
      * 平台协议结算记录
      *
-     * @param settlementQueryVo 查询条件
+     * @param vo 查询条件
      * @return Page<ExportSuperviseSettlementExcelDto>
      */
     @Override
-    public Page<ExportSuperviseSettlementExcelDto> platformSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) {
-        log.info("查询平台结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
+    public Page<ExportSuperviseSettlementExcelDto> platformSettlementExcel(Page page, SettlementQueryVo vo) {
+        log.info("查询平台结算记录:vo=[{}]", JSONUtil.toJsonStr(vo));
 
-        if(StrUtil.isEmpty(settlementQueryVo.getSettlementDateStart())
-            && StrUtil.isEmpty(settlementQueryVo.getSettlementDateEnd())
-            && settlementQueryVo.getSettlementTime() != null &&
-                settlementQueryVo.getSettlementTime().length ==2){
-            DateUtil.parse(settlementQueryVo.getSettlementDateStart());
-            settlementQueryVo.setSettlementDateStart(DateUtil.format(LocalDate.parse(settlementQueryVo.getSettlementTime()[0], DateTimeFormatter.ISO_DATE).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
-            settlementQueryVo.setSettlementDateEnd(DateUtil.format(LocalDate.parse(settlementQueryVo.getSettlementTime()[1], DateTimeFormatter.ISO_DATE).plusDays(1).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
+        if(StrUtil.isEmpty(vo.getSettlementDateStart())
+            && StrUtil.isEmpty(vo.getSettlementDateEnd())
+            && vo.getSettlementTime() != null &&
+                vo.getSettlementTime().length ==2){
+            DateUtil.parse(vo.getSettlementDateStart());
+            vo.setSettlementDateStart(DateUtil.format(LocalDate.parse(vo.getSettlementTime()[0], DateTimeFormatter.ISO_DATE).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
+            vo.setSettlementDateEnd(DateUtil.format(LocalDate.parse(vo.getSettlementTime()[1], DateTimeFormatter.ISO_DATE).plusDays(1).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
+        }
+        // 完善回款时间 receivePaymentDateBegin
+        if(StrUtil.isNotEmpty(vo.getReceivePaymentDateBegin())){
+            vo.setReceivePaymentDateBegin(DateTimeUtils.obtainStartTime(vo.getReceivePaymentDateBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getReceivePaymentDateEnd())){
+            vo.setReceivePaymentDateEnd(DateTimeUtils.obtainNextDayStartTime(vo.getReceivePaymentDateEnd()));
         }
-
         // 设置空条件
-        setNoneCondition(settlementQueryVo);
-        settlementQueryVo.setSystemCode(baseController.getSystemCode());
-        Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.platformSettlementExcelDtos(page, settlementQueryVo);
+        setNoneCondition(vo);
+        vo.setSystemCode(baseController.getSystemCode());
+        Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.platformSettlementExcelDtos(page, vo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
         return exportSuperviseSettlementExcelDtos;
@@ -5456,16 +5493,24 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     /**
      * 跟单协议结算记录
      *
-     * @param settlementQueryVo 查询条件
+     * @param vo 查询条件
      * @return Page<ExportSuperviseSettlementExcelDto>
      */
     @Override
-    public Page<ExportSuperviseSettlementExcelDto> followSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) {
-        log.info("查询平台结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
+    public Page<ExportSuperviseSettlementExcelDto> followSettlementExcel(Page page, SettlementQueryVo vo) {
+        log.info("查询平台结算记录:vo=[{}]", JSONUtil.toJsonStr(vo));
         // 设置空条件
-        setNoneCondition(settlementQueryVo);
-        settlementQueryVo.setSystemCode(baseController.getSystemCode());
-        Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.followSettlementExcelDtos(page, settlementQueryVo);
+        setNoneCondition(vo);
+        if(StrUtil.isNotEmpty(vo.getReceivePaymentDateBegin())){
+            vo.setReceivePaymentDateBegin(DateTimeUtils.obtainStartTime(vo.getReceivePaymentDateBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getReceivePaymentDateEnd())){
+            vo.setReceivePaymentDateEnd(DateTimeUtils.obtainNextDayStartTime(vo.getReceivePaymentDateEnd()));
+        }
+
+
+        vo.setSystemCode(baseController.getSystemCode());
+        Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.followSettlementExcelDtos(page, vo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
         return exportSuperviseSettlementExcelDtos;
@@ -5636,7 +5681,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * </p>
      *
      * @param page 分页对象,包含页码、每页数量等分页参数
-     * @param settlementQueryVo 结算查询条件,包含订单号、保险公司ID、结算状态、时间范围等筛选条件,主要参数:
+     * @param vo 结算查询条件,包含订单号、保险公司ID、结算状态、时间范围等筛选条件,主要参数:
      *                          - invoiceTypes: 开票类型列表,用于区分平台协议和普通协议
      *                          - systemCode: 租户代码(方法内自动设置)
      * @return Page<ExportSuperviseSettlementDetailExcelDto> 返回分页后的手续费结算明细数据,每个对象包含:
@@ -5645,9 +5690,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      *         - 其他结算明细字段
      */
     @Override
-    public Page<ExportSuperviseSettlementDetailExcelDto> superviseSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) {
-        log.info("superviseSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
-        settlementQueryVo.setSystemCode(baseController.getSystemCode());
+    public Page<ExportSuperviseSettlementDetailExcelDto> superviseSettlementDetailExcel(Page page, SettlementQueryVo vo) {
+        log.info("superviseSettlementDetailExcel:vo=[{}]", JSONUtil.toJsonStr(vo));
+        vo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = null;
 
         // 1. 一次性获取保险公司全量Map,全局复用
@@ -5657,41 +5702,46 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
 
         // 查询当前公司下所有的子公司
-        if (StrUtil.isNotBlank(settlementQueryVo.getCompanyId())){
+        if (StrUtil.isNotBlank(vo.getCompanyId())){
             // 将全量数据按照 parentId 进行分组,key 是 parentId,value 是该 parentId 下的所有公司列表
             Map<String, List<EsmInsCompany>> parentGroupMap = companyMap.values().stream()
                     .filter(c -> c.getParentId() != null)
                     .collect(Collectors.groupingBy(EsmInsCompany::getParentId));
-            List<String> allChildIdspOtimized = getAllChildIdsOptimized(settlementQueryVo.getCompanyId(), parentGroupMap);
-            allChildIdspOtimized.add(settlementQueryVo.getCompanyId());
-            settlementQueryVo.setCompanyIdList(allChildIdspOtimized);
+            List<String> allChildIdspOtimized = getAllChildIdsOptimized(vo.getCompanyId(), parentGroupMap);
+            allChildIdspOtimized.add(vo.getCompanyId());
+            vo.setCompanyIdList(allChildIdspOtimized);
         }
-
-        if (settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6")) {
-            exportSuperviseSettlementDetailExcelDtos = baseMapper.getPlatFormSettlementDetailExcelDtos(page, settlementQueryVo);
+        if(StrUtil.isNotEmpty(vo.getSigningTimeBegin())){
+            vo.setSigningTimeBegin(DateTimeUtils.obtainStartTime(vo.getSigningTimeBegin()));
+        }
+        if(StrUtil.isNotEmpty(vo.getSigningTimeEnd())){
+            vo.setSigningTimeEnd(DateTimeUtils.obtainNextDayStartTime(vo.getSigningTimeEnd()));
+        }
+        if (vo.getInvoiceTypes().contains("5") && vo.getInvoiceTypes().contains("6")) {
+            exportSuperviseSettlementDetailExcelDtos = baseMapper.getPlatFormSettlementDetailExcelDtos(page, vo);
         }else{
-            exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
+            exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, vo);
         }
         if (CollUtil.isNotEmpty(exportSuperviseSettlementDetailExcelDtos.getRecords())){
             Map<String, InsPlyIncomeInvoiceSettlement> settlementMap = new HashMap<>();
-            if (!(settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6"))) {
+            if (!(vo.getInvoiceTypes().contains("5") && vo.getInvoiceTypes().contains("6"))) {
                 // 根据invoiceId关联查询ins_ply_income_invoice_settlement表
                 LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
                 insPlyIncomeInvoiceSettlementLambdaQueryWrapper.in(InsPlyIncomeInvoiceSettlement::getInvoiceId, exportSuperviseSettlementDetailExcelDtos.getRecords().stream().map(ExportSuperviseSettlementDetailExcelDto::getInvoiceId).toList());
                 insPlyIncomeInvoiceSettlementLambdaQueryWrapper.eq(InsPlyIncomeInvoiceSettlement::getIsDelete, 0);
-                if (StrUtil.isNotBlank(settlementQueryVo.getSettlementPerson())) {
+                if (StrUtil.isNotBlank(vo.getSettlementPerson())) {
                     // 结算人
-                    insPlyIncomeInvoiceSettlementLambdaQueryWrapper.eq(InsPlyIncomeInvoiceSettlement::getCreateBy, settlementQueryVo.getSettlementPerson());
+                    insPlyIncomeInvoiceSettlementLambdaQueryWrapper.eq(InsPlyIncomeInvoiceSettlement::getCreateBy, vo.getSettlementPerson());
                 }
-                if (StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeStart()) && StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeEnd())) {
+                if (StrUtil.isNotBlank(vo.getSettlementTimeStart()) && StrUtil.isNotBlank(vo.getSettlementTimeEnd())) {
                     // 结算时间
-                    insPlyIncomeInvoiceSettlementLambdaQueryWrapper.between(StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeStart()) && StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeEnd()),
-                            InsPlyIncomeInvoiceSettlement::getCreateTime, settlementQueryVo.getSettlementTimeStart(), settlementQueryVo.getSettlementTimeEnd());
+                    insPlyIncomeInvoiceSettlementLambdaQueryWrapper.between(StrUtil.isNotBlank(vo.getSettlementTimeStart()) && StrUtil.isNotBlank(vo.getSettlementTimeEnd()),
+                            InsPlyIncomeInvoiceSettlement::getCreateTime, vo.getSettlementTimeStart(), vo.getSettlementTimeEnd());
                 }
                 List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = insPlyIncomeInvoiceSettlementMapper.selectList(insPlyIncomeInvoiceSettlementLambdaQueryWrapper);
                 // 如果结算记录不为空,且结算人、结算时间不为空,则根据结算记录的invoiceId过滤列表
                 if (CollUtil.isNotEmpty(insPlyIncomeInvoiceSettlements)) {
-                    if (StrUtil.isNotBlank(settlementQueryVo.getSettlementPerson()) || (StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeStart()) && StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeEnd()))) {
+                    if (StrUtil.isNotBlank(vo.getSettlementPerson()) || (StrUtil.isNotBlank(vo.getSettlementTimeStart()) && StrUtil.isNotBlank(vo.getSettlementTimeEnd()))) {
                         List<String> invoiceList = insPlyIncomeInvoiceSettlements.stream().map(InsPlyIncomeInvoiceSettlement::getInvoiceId).toList();
                         // filter:lambda 返回 true 的元素留下,false 的剔除
                         exportSuperviseSettlementDetailExcelDtos.setRecords(exportSuperviseSettlementDetailExcelDtos.getRecords().stream().filter(detail -> invoiceList.contains(detail.getInvoiceId())).toList());

+ 102 - 61
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -356,12 +356,33 @@
     <select id="getReceivablePage" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
         <include refid="query"/>
         and ipi.system_code = #{receivableQueryVo.systemCode}
+        <if test="receivableQueryVo.policyholder != null and receivableQueryVo.policyholder != ''">
+            and  iocui.name = #{receivableQueryVo.policyholder}
+        </if>
+        <if test="receivableQueryVo.insurName != null and receivableQueryVo.insurName != ''">
+            and iocui2.name = #{receivableQueryVo.insurName}
+        </if>
+        <if test="receivableQueryVo.jqPolicyNo != null and receivableQueryVo.jqPolicyNo != '' ">
+            and iop.jq_policy_no  = #{receivableQueryVo.jqPolicyNo}
+        </if>
+        <if test="receivableQueryVo.syPolicyNo != null and receivableQueryVo.syPolicyNo != '' ">
+            and iop.sy_policy_no = #{receivableQueryVo.syPolicyNo}
+        </if>
+        <if test="receivableQueryVo.jyPolicyNo != null and receivableQueryVo.jyPolicyNo != '' ">
+            and iop.jy_policy_no = #{receivableQueryVo.jyPolicyNo}
+        </if>
+        <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
+            and ipi.agreement_id = #{receivableQueryVo.agreementId}
+        </if>
         <if test="receivableQueryVo.payTimeBegin != null and receivableQueryVo.payTimeEnd != null">
             and io.pay_time between #{receivableQueryVo.payTimeBegin} and #{receivableQueryVo.payTimeEnd}
         </if>
         <if test="receivableQueryVo.reportTimeBegin != null and receivableQueryVo.reportTimeEnd != null">
             and io.create_time between #{receivableQueryVo.reportTimeBegin} and #{receivableQueryVo.reportTimeEnd}
         </if>
+        <if test="receivableQueryVo.quotationTimeBegin != null and receivableQueryVo.quotationTimeEnd != null">
+            and io.create_time between #{receivableQueryVo.quotationTimeBegin} and #{receivableQueryVo.quotationTimeEnd}
+        </if>
         <if test="receivableQueryVo.updateBy != null and receivableQueryVo.updateBy !='' ">
             and ipi.update_by = #{receivableQueryVo.updateBy}
         </if>
@@ -382,6 +403,9 @@
             left join sys_user su on su.id = suji.user_id and su.is_delete = 0
             where sujis.type_attr =#{receivableQueryVo.typeAttr})
         </if>
+        <if test="receivableQueryVo.salemanPhone != null and receivableQueryVo.salemanPhone != ''">
+            and io.real_quote_user_id = #{receivableQueryVo.salemanPhone}
+        </if>
         <if test="receivableQueryVo.invoiceSettlementStatus != null and receivableQueryVo.invoiceSettlementStatus != ''">
             <!-- 当状态为1时,查询已开票的数据 -->
             <if test="receivableQueryVo.invoiceSettlementStatus != 2">
@@ -770,6 +794,9 @@
         <where>
             ipiis.is_delete = 0
             AND ipiis.system_code = #{settlementQueryVo.systemCode}
+            <if test="settlementQueryVo.receivePaymentDateBegin != null and settlementQueryVo.receivePaymentDateEnd != ''">
+                and  ipiis.receive_payment_date between #{settlementQueryVo.receivePaymentDateBegin} and #{settlementQueryVo.receivePaymentDateEnd}
+            </if>
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -827,6 +854,7 @@
         SELECT
         ipiis.id AS settlementId,
         GROUP_CONCAT(DISTINCT ipiis.invoice_id SEPARATOR ',') AS invoiceId,
+        GROUP_CONCAT(DISTINCT ipii.invoice_no SEPARATOR ',') AS invoiceNos,
         GROUP_CONCAT(DISTINCT ipii.company_id SEPARATOR ',') AS company_id,
         GROUP_CONCAT(DISTINCT eic.name SEPARATOR ',') AS company_name,
         GROUP_CONCAT(DISTINCT ipii.invoice_type SEPARATOR ',') AS invoice_type,
@@ -847,6 +875,12 @@
         <where>
             ipiis.is_delete = 0
             AND ipiis.system_code = #{settlementQueryVo.systemCode}
+            <if test="settlementQueryVo.invoiceNo != null and settlementQueryVo.invoiceNo != ''">
+                and ipii.invoice_no  = #{settlementQueryVo.invoiceNo}
+            </if>
+            <if test="settlementQueryVo.receivePaymentDateBegin != null and settlementQueryVo.receivePaymentDateEnd != null">
+                and ipiis.receive_payment_date between #{settlementQueryVo.receivePaymentDateBegin} and #{settlementQueryVo.receivePaymentDateEnd}
+            </if>
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -984,35 +1018,28 @@
 
 
     <select id="getSuperviseSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailExcelDto">
-        select ipi.contact_person, ipi.contact_person_phone,
-        io.company_name as companyName,
-        io.signing_time as signingTime,
-        ipii.id as invoiceId,
-        ipii.status as status,
-        ipi.license_no as licenseNo,
-        io.product_name as productName,
-        ipii.invoice_type as invoiceType,
-        ipii.invoice_party as invoiceParty,
-        ipii.tax_point as taxPoint,
-        (COALESCE(ipi.jq_supervise_costs_premiums,0)  + COALESCE(ipi.sy_supervise_costs_premiums,0)  + COALESCE(ipi.jy_supervise_costs_premiums,0) ) as receivableSuperviseCosts,
-        COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) as superviseCostPremiums4Car,
-        COALESCE(ipi.jy_supervise_costs_premiums, 0) as jy_supervise_costs_premiums,
-        ipi.jq_premium as jqPremium,
-        ipi.jq_supervise_costs_proportion as jqSuperviseCostsProportion,
-        ipi.jq_policy_no as jqPolicyNo,
-        ipi.sy_premium as syPremium,
-        ipi.sy_supervise_costs_proportion as sySuperviseCostsProportion,
-        ipi.sy_policy_no as syPolicyNo,
-        ipi.jy_premium as jyPremium,
-        ipi.jy_supervise_costs_proportion as jySuperviseCostsProportion,
-        ipi.jy_policy_no as jyPolicyNo,
-        ipi.tax_premium as taxPremium,
-        (SELECT U.USERNAME FROM sys_user U WHERE U.mobile = ipii.create_by) as invoicePerson,
-        ipii.invoice_time
+        SELECT ipii.invoice_no , iop.jq_policy_no ,iop.sy_policy_no , iop.jy_policy_no , io.id as order_no, ipi.contact_person, ipi.contact_person_phone, io.company_name AS companyName, io.signing_time AS signingTime, ipii.id AS invoiceId
+        , ipii.status AS status, ipi.license_no AS licenseNo, io.product_name AS productName, ipii.invoice_type AS invoiceType, ipii.invoice_party AS invoiceParty
+        , ipii.tax_point AS taxPoint
+        , COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0) AS receivableSuperviseCosts
+        , COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) AS superviseCostPremiums4Car
+        , COALESCE(ipi.jy_supervise_costs_premiums, 0) AS jy_supervise_costs_premiums, ipi.jq_premium AS jqPremium
+        , ipi.jq_supervise_costs_proportion AS jqSuperviseCostsProportion, ipi.jq_policy_no AS jqPolicyNo, ipi.sy_premium AS syPremium, ipi.sy_supervise_costs_proportion AS sySuperviseCostsProportion, ipi.sy_policy_no AS syPolicyNo
+        , ipi.jy_premium AS jyPremium, ipi.jy_supervise_costs_proportion AS jySuperviseCostsProportion, ipi.jy_policy_no AS jyPolicyNo, ipi.tax_premium AS taxPremium
+        , (  SELECT U.USERNAME FROM sys_user U WHERE U.mobile = ipii.create_by ) AS invoicePerson, ipii.invoice_time
         FROM ins_ply_income_invoice ipii
-        LEFT JOIN ins_ply_income_invoice_link ipil ON ipii.id = ipil.invoice_id AND ipil.is_delete = 0
-        LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id  AND ipi.is_delete = 0
-        LEFT JOIN ins_orders io  ON ipi.order_no = io.id  AND io.is_delete = 0
+        LEFT JOIN ins_ply_income_invoice_link ipil
+        ON ipii.id = ipil.invoice_id
+        AND ipil.is_delete = 0
+        LEFT JOIN ins_ply_income ipi
+        ON ipi.id = ipil.income_id
+        AND ipi.is_delete = 0
+        AND ipi.system_code = 'G111'
+        LEFT JOIN ins_orders io
+        ON ipi.order_no = io.id
+        AND io.is_delete = 0
+        left join ins_orders_policy iop
+        on io.id = iop.order_no and iop.is_delete = 0
         <where>
             ipii.is_delete = 0
             AND ipii.system_code = #{settlementQueryVo.systemCode}
@@ -1037,49 +1064,60 @@
             <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
                 AND ipi.agreement_type = #{settlementQueryVo.agreementType}
             </if>
+            <if test="settlementQueryVo.invoiceNo != null and settlementQueryVo.invoiceNo != ''">
+                and ipii.invoice_no  = #{settlementQueryVo.invoiceNo}
+            </if>
+            <if test="settlementQueryVo.jqPolicyNo != null and settlementQueryVo.jqPolicyNo != '' ">
+                and iop.jq_policy_no  = #{settlementQueryVo.jqPolicyNo}
+            </if>
+            <if test="settlementQueryVo.syPolicyNo != null and settlementQueryVo.syPolicyNo != ''">
+                and iop.sy_policy_no  = #{settlementQueryVo.syPolicyNo}
+            </if>
+            <if test="settlementQueryVo.jyPolicyNo != null and settlementQueryVo.jyPolicyNo != ''">
+                and iop.jy_policy_no = #{settlementQueryVo.jyPolicyNo}
+            </if>
         </where>
     </select>
     <select id="getPlatFormSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailExcelDto">
-        select ipi.contact_person, ipi.contact_person_phone,
-        ipiis.id as settlementId,
-        ipiis.invoice_id as invoiceId,
-        io.company_name as companyName,
-        io.signing_time as signingTime,
-        ipii.status as status,
-        ipi.license_no as licenseNo,
-        io.product_name as productName,
-        ipii.invoice_type as invoiceType,
-        ipii.invoice_party as invoiceParty,
-        ipii.tax_point as taxPoint,
-        COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jq_other_costs_premiums, 0) + COALESCE(ipi.sy_other_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0) AS receivableSuperviseCosts,
-        ipi.jq_premium as jqPremium,
-        ipi.jq_supervise_costs_proportion as jqSuperviseCostsProportion,
-        ipi.jq_other_costs_proportion,
-        ipi.jq_policy_no as jqPolicyNo,
-        ipi.sy_premium as syPremium,
-        ipi.sy_supervise_costs_proportion as sySuperviseCostsProportion,
-        ipi.sy_other_costs_proportion,
-        ipi.sy_policy_no as syPolicyNo,
-        ipi.jy_premium as jyPremium,
-        ipi.jy_supervise_costs_proportion as jySuperviseCostsProportion,
-        ipi.jy_other_costs_proportion,
-        ipi.jy_policy_no as jyPolicyNo,
-        ipi.tax_premium as taxPremium,
-        ipii.create_by as invoicePerson,
-        ipii.create_time as invoiceTime,
-        ipiis.create_by as settlementPerson,
-        ipiis.create_time as settlementTime,
-        (SELECT U.USERNAME FROM sys_user U WHERE U.mobile = ipii.create_by) as invoicePerson,
-        ipii.invoice_time
-        FROM
-        ins_ply_income_invoice ipii
+        SELECT ioci.license_no ,iocui.name as insurName, iop.jq_policy_no , iop.sy_policy_no , iop.jy_policy_no, ipi.contact_person, ipi.contact_person_phone, ipiis.id AS settlementId, ipiis.invoice_id AS invoiceId, io.company_name AS companyName
+        , io.signing_time AS signingTime, ipii.status AS status, ipi.license_no AS licenseNo, io.product_name AS productName, ipii.invoice_type AS invoiceType
+        , ipii.invoice_party AS invoiceParty, ipii.tax_point AS taxPoint
+        , COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jq_other_costs_premiums, 0) + COALESCE(ipi.sy_other_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0) AS receivableSuperviseCosts
+        , ipi.jq_premium AS jqPremium, ipi.jq_supervise_costs_proportion AS jqSuperviseCostsProportion, ipi.jq_other_costs_proportion, ipi.jq_policy_no AS jqPolicyNo, ipi.sy_premium AS syPremium
+        , ipi.sy_supervise_costs_proportion AS sySuperviseCostsProportion, ipi.sy_other_costs_proportion, ipi.sy_policy_no AS syPolicyNo, ipi.jy_premium AS jyPremium, ipi.jy_supervise_costs_proportion AS jySuperviseCostsProportion
+        , ipi.jy_other_costs_proportion, ipi.jy_policy_no AS jyPolicyNo, ipi.tax_premium AS taxPremium, ipii.create_by AS invoicePerson, ipii.create_time AS invoiceTime
+        , ipiis.create_by AS settlementPerson, ipiis.create_time AS settlementTime ,
+        (
+        SELECT U.USERNAME FROM sys_user U WHERE U.mobile = ipii.create_by) AS invoicePerson, ipii.invoice_time
+        FROM ins_ply_income_invoice ipii
         LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id AND ipiis.is_delete = 0
         LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
         LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
         LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
+        left join ins_orders_car_info ioci on ioci.order_no  = io.id and ioci.is_delete = 0
+        left join ins_orders_car_user_info iocui on iocui.order_no = io.id and iocui.is_delete = 0 and iocui.policy_person_type = 3
+        left join ins_orders_policy iop on io.id = iop.order_no and iop.is_delete = 0
         <where>
             ipii.is_delete = 0
             AND ipii.system_code = #{settlementQueryVo.systemCode}
+            <if test="settlementQueryVo.signingTimeBegin != null and settlementQueryVo.signingTimeEnd != null">
+                and io.signing_time between #{settlementQueryVo.signingTimeBegin} and #{settlementQueryVo.signingTimeEnd}
+            </if>
+            <if test="settlementQueryVo.licenseNo != null and settlementQueryVo.licenseNo != ''">
+                and ioci.license_no  = #{settlementQueryVo.licenseNo}
+            </if>
+            <if test="settlementQueryVo.insurName != null and settlementQueryVo.insurName != ''">
+                and iocui.name = #{settlementQueryVo.insurName}
+            </if>
+            <if test="settlementQueryVo.jqPolicyNo != null and settlementQueryVo.jqPolicyNo != '' ">
+                and iop.jq_policy_no = #{settlementQueryVo.jqPolicyNo}
+            </if>
+            <if test="settlementQueryVo.syPolicyNo != null and settlementQueryVo.syPolicyNo != ''">
+                and iop.sy_policy_no = #{settlementQueryVo.syPolicyNo}
+            </if>
+            <if test="settlementQueryVo.jyPolicyNo != null and settlementQueryVo.jyPolicyNo != ''">
+                and iop.jy_policy_no = #{settlementQueryVo.jyPolicyNo}
+            </if>
             <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
                 AND ipiis.id = #{settlementQueryVo.settlementId}
             </if>
@@ -1692,6 +1730,9 @@
         <where>
             ipii.is_delete = 0
             AND ipii.system_code = #{invoiceRecordQueryVo.systemCode}
+            <if test="invoiceRecordQueryVo.amount != null and invoiceRecordQueryVo.amount != ''">
+                and ipii.receivable_supervise_premium = #{invoiceRecordQueryVo.amount}
+            </if>
             <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
                 AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
             </if>