Kaynağa Gözat

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260518' into dev_jzg_lipf_v20260518

jiakai 3 ay önce
ebeveyn
işleme
8264d6c2e3
73 değiştirilmiş dosya ile 1577 ekleme ve 98 silme
  1. 5 0
      commons/src/main/java/com/jzg/commons/entity/account/dto/AccountAddParam.java
  2. 6 0
      commons/src/main/java/com/jzg/commons/entity/account/dto/AccountCardAddParam.java
  3. 6 0
      commons/src/main/java/com/jzg/commons/entity/account/dto/AccountCardEditParam.java
  4. 4 0
      commons/src/main/java/com/jzg/commons/entity/account/dto/AccountCardParam.java
  5. 6 0
      commons/src/main/java/com/jzg/commons/entity/account/dto/AccountEditParam.java
  6. 4 0
      commons/src/main/java/com/jzg/commons/entity/account/dto/AccountParam.java
  7. 4 1
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java
  8. 2 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableQueryVo.java
  9. 3 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java
  10. 3 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementReportQueryVo.java
  11. 203 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java
  12. 4 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCostRule.java
  13. 3 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlNewCarJudgeRules.java
  14. 3 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java
  15. 2 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersEnd.java
  16. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java
  17. 37 0
      commons/src/main/java/com/jzg/commons/entity/vo/AmountAuditVo.java
  18. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java
  19. 2 0
      commons/src/main/java/com/jzg/commons/entity/vo/InsOrdersOtherInfoVo.java
  20. 4 0
      commons/src/main/java/com/jzg/commons/entity/vo/NewCarQuery.java
  21. 191 0
      commons/src/main/java/com/jzg/commons/util/UserContextUtil.java
  22. 149 0
      gateway/src/main/java/com/jzg/filter/AuthGlobalFilter.java
  23. 39 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java
  24. 11 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java
  25. 5 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/po/AnShengCrawlerOrder.java
  26. 1 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java
  27. 19 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/BdTokenResp.java
  28. 27 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/DownloadTokenResult.java
  29. 14 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/DragSliderResp.java
  30. 20 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/LoginResp.java
  31. 24 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/FileDownloadResp.java
  32. 124 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/InsuranceResponse.java
  33. 4 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerLoginService.java
  34. 1 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerOrderService.java
  35. 3 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerQuoteProcessService.java
  36. 112 6
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerLoginServiceImpl.java
  37. 2 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerOrderServiceImpl.java
  38. 8 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerQuoteProcessServiceImpl.java
  39. 74 23
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java
  40. 83 3
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/utils/CustomerNegotiatePriceUtils.java
  41. 14 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  42. 1 1
      tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java
  43. 6 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/FactorMatch.java
  44. 38 19
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java
  45. 2 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  46. 0 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  47. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java
  48. 21 16
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java
  49. 5 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  50. 89 0
      tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml
  51. 3 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml
  52. 2 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  53. 2 2
      tenant/insurance/quotation-taikang/pom.xml
  54. 1 1
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/build/TaiShanCrawlerQuoteRequestVoBuild.java
  55. 6 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java
  56. 19 5
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java
  57. 3 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AccountCardController.java
  58. 4 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AccountController.java
  59. 12 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AmountAuditingController.java
  60. 8 0
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  61. 2 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/NewCarJudgeRulesMapper.java
  62. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysAmountAuditingService.java
  63. 17 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/NewCarJudgeRulesServiceImpl.java
  64. 22 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  65. 21 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java
  66. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  67. 0 3
      tenant/organization/src/main/resources/application.yml
  68. 1 0
      tenant/organization/src/main/resources/mapper/InvAccountCardMapper.xml
  69. 2 0
      tenant/organization/src/main/resources/mapper/InvAccountMapper.xml
  70. 1 0
      tenant/organization/src/main/resources/mapper/NewCarJudgeRulesMapper.xml
  71. 14 0
      tenant/organization/src/main/resources/mapper/PtlAgreementCostMapper.xml
  72. 18 0
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml
  73. 9 2
      tenant/organization/src/main/resources/mapper/SysAmountAuditingMapper.xml

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/account/dto/AccountAddParam.java

@@ -65,4 +65,9 @@ public class AccountAddParam {
     private String invoicingAmount;
 
 
+    /**
+     * 租户代码
+     * */
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/account/dto/AccountCardAddParam.java

@@ -163,4 +163,10 @@ public class AccountCardAddParam {
      */
     @Schema(description = "对公单日限额剩余")
     private String pubDayLinesExcess;
+
+    /**
+     * 租户代码
+     */
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/account/dto/AccountCardEditParam.java

@@ -165,4 +165,10 @@ public class AccountCardEditParam {
      */
     @Schema(description = "对公单日限额剩余")
     private String pubDayLinesExcess;
+
+    /**
+     * 租户代码
+     */
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/account/dto/AccountCardParam.java

@@ -24,4 +24,8 @@ public class AccountCardParam extends PageRequest {
     @Schema(description = "银行卡号")
     private String bankCardNum;
 
+    /** 租户代码 */
+    @Schema(description = "租户代码")
+    private String systemCode;
+
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/account/dto/AccountEditParam.java

@@ -67,4 +67,10 @@ public class AccountEditParam {
      */
     @Schema(description = "开票额度")
     private String invoicingAmount;
+
+    /**
+     * 租户代码
+     * */
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/account/dto/AccountParam.java

@@ -17,4 +17,8 @@ public class AccountParam  extends PageRequest {
      */
     @Schema(description = "企业类型(0内部企业 1外部企业)")
     private Integer outerFlag;
+
+    /** 租户代码 */
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 4 - 1
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java

@@ -54,5 +54,8 @@ public class InvoiceRecordQueryVo extends PageRequest {
      */
     private String companyNameSimple;
 
-
+    /**
+     * 租户代码
+     */
+    private String systemCode;
 }

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableQueryVo.java

@@ -113,5 +113,7 @@ public class ReceivableQueryVo extends PageRequest {
     @Schema(description = "业务员类型 团队/渠道/电销/个代 5:团队 6:个代 7:渠道 8 :电销")
     private String typeAttr;
 
+    @Schema(description = "租户代码")
+    private String systemCode;
 
 }

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

@@ -70,4 +70,7 @@ public class SettlementQueryVo extends PageRequest {
 
     @Schema(description = "协议类型 1-平台协议 2-私有协议")
     private String agreementType;
+
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementReportQueryVo.java

@@ -51,4 +51,7 @@ public class SettlementReportQueryVo extends PageRequest {
 
     @Schema(description = "开票状态 0-未开票 1-已开票")
     private String invoiceStatus;
+
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 203 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.orders.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.BaseModel;
@@ -24,11 +25,13 @@ public class FeeAuditVo extends BaseModel {
     @Schema(description = "保险公司")
     private String companyName;
 
+    @ExcelIgnore
     @Schema(description = "保险公司ID")
     private String companyId;
     /**
      * 保险公司名称及父级的名称,例如
      */
+    @ExcelIgnore
     @Schema(description = "保险公司名称及父级的名称")
     private String companyALlName;
 
@@ -141,12 +144,212 @@ public class FeeAuditVo extends BaseModel {
     @Schema(description = "权益金额")
     private BigDecimal equityAmount;
 
+    @ExcelIgnore
     @Schema(description = "是否是疑问单")
     private int problem;
 
+    @ExcelProperty("设置为疑问单的原因")
     @Schema(description = "设置为疑问单的原因")
     private String problemReason;
 
+    @ExcelProperty("设为疑问单的时间")
     @Schema(description = "设为疑问单的时间")
     private String problemTime;
+
+
+    @ExcelProperty("总保费")
+    @Schema(description = "总保费")
+    private BigDecimal totalPremium;
+
+    @ExcelProperty("交强险应收费用")
+    @Schema(description = "交强险应收费用")
+    private BigDecimal jqReceivablePremium;
+
+    @ExcelProperty("商业险应收费用")
+    @Schema(description = "商业险应收费用")
+    private BigDecimal syReceivablePremium;
+
+    @ExcelProperty("驾意险应收费用")
+    @Schema(description = "驾意险应收费用")
+    private BigDecimal jyReceivablePremium;
+
+    @ExcelProperty("总应收费用")
+    @Schema(description = "总应收费用")
+    private BigDecimal totalReceivablePremium;
+
+    @ExcelProperty("交强险应付费用")
+    @Schema(description = "交强险应付费用")
+    private BigDecimal jqPayablePremium;
+
+    @ExcelProperty("商业险应付费用")
+    @Schema(description = "商业险应付费用")
+    private BigDecimal syPayablePremium;
+
+    @ExcelProperty("驾意险应付费用")
+    @Schema(description = "驾意险应付费用")
+    private BigDecimal jyPayablePremium;
+
+    @ExcelProperty("总应付费用")
+    @Schema(description = "总应付费用")
+    private BigDecimal totalPayablePremium;
+
+    @ExcelProperty("交强险手续费费用")
+    @Schema(description = "交强险手续费费用")
+    private BigDecimal jqCommissionPremium;
+
+    @ExcelProperty("商业险手续费费用")
+    @Schema(description = "商业险手续费费用")
+    private BigDecimal syCommissionPremium;
+
+    @ExcelProperty("驾意险手续费费用")
+    @Schema(description = "驾意险手续费费用")
+    private BigDecimal jyCommissionPremium;
+
+    @ExcelProperty("交强险跟单费费用")
+    @Schema(description = "交强险跟单费费用")
+    private BigDecimal jqFollowPremium;
+
+    @ExcelProperty("商业险跟单费费用")
+    @Schema(description = "商业险跟单费费用")
+    private BigDecimal syFollowPremium;
+
+    @ExcelProperty("驾意险跟单费费用")
+    @Schema(description = "驾意险跟单费费用")
+    private BigDecimal jyFollowPremium;
+
+    @ExcelProperty("交强险加投费费用")
+    @Schema(description = "交强险加投费费用")
+    private BigDecimal jqAdditionalPremium;
+
+    @ExcelProperty("商业险加投费费用")
+    @Schema(description = "商业险加投费费用")
+    private BigDecimal syAdditionalPremium;
+
+    @ExcelProperty("驾意险加投费费用")
+    @Schema(description = "驾意险加投费费用")
+    private BigDecimal jyAdditionalPremium;
+
+    @ExcelProperty("交强留点费用")
+    @Schema(description = "交强留点费用")
+    private BigDecimal jqKeepPointPremium;
+
+    @ExcelProperty("商业留点费用")
+    @Schema(description = "商业留点费用")
+    private BigDecimal syKeepPointPremium;
+
+    @ExcelProperty("驾意留点费用")
+    @Schema(description = "驾意留点费用")
+    private BigDecimal jyKeepPointPremium;
+
+    @ExcelProperty("交强入口比例")
+    @Schema(description = "交强入口比例")
+    private BigDecimal jqInletRatio;
+
+    @ExcelProperty("商业入口比例")
+    @Schema(description = "商业入口比例")
+    private BigDecimal syInletRatio;
+
+    @ExcelProperty("驾意入口比例")
+    @Schema(description = "驾意入口比例")
+    private BigDecimal jyInletRatio;
+
+    @ExcelProperty("交强手续费比例")
+    @Schema(description = "交强手续费比例")
+    private BigDecimal jqCommissionRatio;
+
+    @ExcelProperty("商业手续费比例")
+    @Schema(description = "商业手续费比例")
+    private BigDecimal syCommissionRatio;
+
+    @ExcelProperty("驾意手续费比例")
+    @Schema(description = "驾意手续费比例")
+    private BigDecimal jyCommissionRatio;
+
+    @ExcelProperty("交强跟单比例")
+    @Schema(description = "交强跟单比例")
+    private BigDecimal jqFollowRatio;
+
+    @ExcelProperty("商业跟单比例")
+    @Schema(description = "商业跟单比例")
+    private BigDecimal syFollowRatio;
+
+    @ExcelProperty("驾意跟单比例")
+    @Schema(description = "驾意跟单比例")
+    private BigDecimal jyFollowRatio;
+
+    @ExcelProperty("交强加投比例")
+    @Schema(description = "交强加投比例")
+    private BigDecimal jqAdditionalRatio;
+
+    @ExcelProperty("商业加投比例")
+    @Schema(description = "商业加投比例")
+    private BigDecimal syAdditionalRatio;
+
+    @ExcelProperty("驾意加投比例")
+    @Schema(description = "驾意加投比例")
+    private BigDecimal jyAdditionalRatio;
+
+    @ExcelProperty("交强留点比例")
+    @Schema(description = "交强留点比例")
+    private BigDecimal jqKeepPointRatio;
+
+    @ExcelProperty("商业留点比例")
+    @Schema(description = "商业留点比例")
+    private BigDecimal syKeepPointRatio;
+
+    @ExcelProperty("驾意留点比例")
+    @Schema(description = "驾意留点比例")
+    private BigDecimal jyKeepPointRatio;
+
+    @ExcelProperty("交强出口比例")
+    @Schema(description = "交强出口比例")
+    private BigDecimal jqExportRatio;
+
+    @ExcelProperty("商业出口比例")
+    @Schema(description = "商业出口比例")
+    private BigDecimal syExportRatio;
+
+    @ExcelProperty("驾意出口比例")
+    @Schema(description = "驾意出口比例")
+    private BigDecimal jyExportRatio;
+
+    @ExcelProperty("交强出口费用")
+    @Schema(description = "交强出口费用")
+    private BigDecimal jqExportPremium;
+
+    @ExcelProperty("商业出口费用")
+    @Schema(description = "商业出口费用")
+    private BigDecimal syExportPremium;
+
+    @ExcelProperty("驾意出口费用")
+    @Schema(description = "驾意出口费用")
+    private BigDecimal jyExportPremium;
+
+    @ExcelProperty("交强出口留点比例")
+    @Schema(description = "交强出口留点比例")
+    private BigDecimal jqExportKeepPointRatio;
+
+    @ExcelProperty("商业出口留点比例")
+    @Schema(description = "商业出口留点比例")
+    private BigDecimal syExportKeepPointRatio;
+
+    @ExcelProperty("驾意出口留点比例")
+    @Schema(description = "驾意出口留点比例")
+    private BigDecimal jyExportKeepPointRatio;
+
+    @ExcelProperty("交强出口留点费用")
+    @Schema(description = "交强出口留点费用")
+    private BigDecimal jqExportKeepPointPremium;
+
+    @ExcelProperty("商业出口留点费用")
+    @Schema(description = "商业出口留点费用")
+    private BigDecimal syExportKeepPointPremium;
+
+    @ExcelProperty("驾意出口留点费用")
+    @Schema(description = "驾意出口留点费用")
+    private BigDecimal jyExportKeepPointPremium;
+
+    @ExcelProperty("权益相关:可用金额<可用金额=出口费用➖出口人留点费用>")
+    @Schema(description = "权益相关:可用金额<可用金额=出口费用➖出口人留点费用>")
+    private BigDecimal availableAmount;
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCostRule.java

@@ -8,11 +8,15 @@ import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.io.Serial;
+
 @Data
 @Schema(description = "协议费用管理规则")
 @TableName("ptl_agreement_cost_rule")
 public class PtlAgreementCostRule extends BaseModel {
 
+    @Serial
+    private static final long serialVersionUID = 6453347371073301817L;
     @TableId(type = IdType.ASSIGN_ID)
     private String id;
 

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlNewCarJudgeRules.java

@@ -24,6 +24,9 @@ public class PtlNewCarJudgeRules{
 
     private String companyId;
 
+    @Schema(description = "租户代码")
+    private String systemCode;
+
     @TableField(exist = false)
     private String companyName;
 

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java

@@ -37,4 +37,7 @@ public class InsOrdersAdd extends QuoteVo {
     @Schema(description = "保单信息")
     private InsOrdersExternalPolicy insOrdersExternalPolicy;
 
+    @Schema(description = "租户代码")
+    private String systemCode;
+
 }

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersEnd.java

@@ -35,4 +35,6 @@ public class InsOrdersEnd extends QuoteVo {
     @Schema(description = "保单信息")
     private InsOrdersExternalPolicy insOrdersExternalPolicy;
 
+    @Schema(description = "租户代码")
+    private String systemCode;
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java

@@ -5,6 +5,7 @@ import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.io.Serial;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
@@ -12,6 +13,8 @@ import java.time.LocalDateTime;
 @Data
 public class AgreementVo extends BaseModel {
 
+    @Serial
+    private static final long serialVersionUID = -7102028681863699045L;
     /** 主键 */
     @Schema(description = "主键")
     private String id;

+ 37 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AmountAuditVo.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -11,12 +12,35 @@ import lombok.EqualsAndHashCode;
 import java.io.Serial;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 @EqualsAndHashCode(callSuper = true)
 @Schema(description = "提现申请表VO")
 @Data
 public class AmountAuditVo  extends BaseModel {
 
+    @ExcelIgnore
+    @Schema(description = "主键")
+    private int auditingStatus;
+
+    @ExcelProperty("付款状态")
+    @Schema(description = "付款状态")
+    private String auditingStatusName;
+
+    @ExcelIgnore
+    private static Map<String,String> auditingStatusMap= new HashMap<>();
+    static {
+        auditingStatusMap.put("0","待付款");
+        auditingStatusMap.put("1","已付款");
+        auditingStatusMap.put("2","拒绝付款");
+
+    }
+    public String getAuditingStatusName() {
+        return auditingStatusMap.getOrDefault(Objects.toString(this.auditingStatus),this.auditingStatus+"");
+    }
+
     @Serial
     private static final long serialVersionUID = 4658187667789639800L;
     @ExcelProperty("主键")
@@ -107,17 +131,30 @@ public class AmountAuditVo  extends BaseModel {
     @Schema(description = "驳回人")
     private String rejectPerson;
 
+    @ExcelIgnore
     @Schema(description = "提现人")
     private String withdrawalRequester;
 
+    @ExcelProperty("提现时间")
     @Schema(description = "提现时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime withdrawalRequestTime;
 
+    @ExcelProperty("审核时间")
     @Schema(description = "审核时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime auditingTime;
 
     @Schema(description = "凭证号")
+    @ExcelProperty("凭证号")
     private String voucherId;
+
+    @Schema(description = "付款账号简称")
+    @ExcelProperty("付款账号简称")
+    private String payAccountName;
+
+    @Schema(description = "付款账号的银行卡")
+    @ExcelProperty("付款账号的银行卡")
+    private String payAccountBankNo;
+
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java

@@ -161,6 +161,9 @@ public class InsFeeOrdersVo {
     @Schema(description = "权益相关:剩余金额<可用金额-已使用金额>")
     private BigDecimal remainingAmount;
 
+    @Schema(description = "租户代码")
+    private String systemCode;
+
     public InsFeeOrdersVo(InsFeeOrders insFeeOrders) {
         this.orderNo = insFeeOrders.getOrderNo();
         this.agreementId = insFeeOrders.getAgreementId();

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InsOrdersOtherInfoVo.java

@@ -1,6 +1,8 @@
 package com.jzg.commons.entity.vo;
 
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/vo/NewCarQuery.java

@@ -13,4 +13,8 @@ public class NewCarQuery extends PageRequest {
     @Schema
     private String companyId;
 
+    /**
+     * 租户编码
+     */
+    private String systemCode;
 }

+ 191 - 0
commons/src/main/java/com/jzg/commons/util/UserContextUtil.java

@@ -0,0 +1,191 @@
+package com.jzg.commons.util;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 用户上下文工具类 —— 从网关透传的请求头中读取用户信息
+ * <p>
+ * 网关层 {@code AuthGlobalFilter} 在 Token 校验通过后,
+ * 会将用户信息注入到以下请求头中,下游微服务可直接读取,无需重复查询 Redis:
+ * <ul>
+ *   <li>{@code X-User-Id} —— 用户ID</li>
+ *   <li>{@code X-Username} —— 用户名/手机号</li>
+ *   <li>{@code X-User-Name} —— 姓名</li>
+ *   <li>{@code X-System-Code} —— 登录系统编码</li>
+ *   <li>{@code X-Dept-Id} —— 部门ID</li>
+ *   <li>{@code X-Work-Number} —— 工号</li>
+ *   <li>{@code X-Province} —— 省份</li>
+ *   <li>{@code X-Auths} —— 权限列表(JSON数组)</li>
+ *   <li>{@code X-Data-Scope} —— 数据权限(JSON对象)</li>
+ *   <li>{@code X-Head-Sculpture} —— 头像URL</li>
+ * </ul>
+ * </p>
+ *
+ * @author lipf
+ * @date 2026/6/16
+ */
+public class UserContextUtil {
+
+    private UserContextUtil() {
+        // 工具类,禁止实例化
+    }
+
+    /**
+     * 获取当前 HTTP 请求(可能为 null,非 Web 上下文时)
+     */
+    private static HttpServletRequest getRequest() {
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        if (attributes == null) {
+            return null;
+        }
+        return attributes.getRequest();
+    }
+
+    /**
+     * 从请求头获取用户ID
+     *
+     * @return 用户ID,未获取到时返回空字符串
+     */
+    public static String getUserId() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-User-Id");
+    }
+
+    /**
+     * 从请求头获取用户名
+     *
+     * @return 用户名,未获取到时返回空字符串
+     */
+    public static String getUsername() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-Username");
+    }
+
+    /**
+     * 从请求头获取姓名
+     *
+     * @return 姓名,未获取到时返回空字符串
+     */
+    public static String getUserName() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-User-Name");
+    }
+
+    /**
+     * 从请求头获取系统编码
+     *
+     * @return 系统编码,未获取到时返回空字符串
+     */
+    public static String getSystemCode() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-System-Code");
+    }
+
+    /**
+     * 从请求头获取部门ID
+     *
+     * @return 部门ID,未获取到时返回空字符串
+     */
+    public static String getDeptId() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-Dept-Id");
+    }
+
+    /**
+     * 从请求头获取工号
+     *
+     * @return 工号,未获取到时返回空字符串
+     */
+    public static String getWorkNumber() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-Work-Number");
+    }
+
+    /**
+     * 从请求头获取省份
+     *
+     * @return 省份,未获取到时返回空字符串
+     */
+    public static String getProvince() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-Province");
+    }
+
+    /**
+     * 从请求头获取头像URL
+     *
+     * @return 头像URL,未获取到时返回空字符串
+     */
+    public static String getHeadSculpture() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "";
+        return headerOrEmpty(request, "X-Head-Sculpture");
+    }
+
+    /**
+     * 从请求头获取用户权限列表
+     *
+     * @return 权限标识列表,未获取到时返回空列表
+     */
+    public static List<String> getPerms() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return new ArrayList<>();
+
+        String authsJson = headerOrEmpty(request, "X-Auths");
+        if (authsJson.isEmpty()) return new ArrayList<>();
+
+        List<String> perms = new ArrayList<>();
+        try {
+            JSONArray auths = JSONArray.parseArray(authsJson);
+            for (int i = 0; i < auths.size(); i++) {
+                JSONObject auth = auths.getJSONObject(i);
+                String perm = auth.getString("perms");
+                if (perm != null) {
+                    perms.add(perm);
+                }
+            }
+        } catch (Exception e) {
+            // 解析失败,返回空列表
+        }
+        return perms;
+    }
+
+    /**
+     * 从请求头获取数据权限
+     *
+     * @return 数据权限 JSON 字符串,未获取到时返回 "{}"
+     */
+    public static String getDataScope() {
+        HttpServletRequest request = getRequest();
+        if (request == null) return "{}";
+        return headerOrEmpty(request, "X-Data-Scope");
+    }
+
+    /**
+     * 判断用户信息是否来自网关透传(即请求头中是否存在 X-User-Id)
+     *
+     * @return true 表示本次请求已经过网关鉴权
+     */
+    public static boolean isFromGateway() {
+        return !getUserId().isEmpty();
+    }
+
+    private static String headerOrEmpty(HttpServletRequest request, String name) {
+        String value = request.getHeader(name);
+        return value != null ? value : "";
+    }
+}

+ 149 - 0
gateway/src/main/java/com/jzg/filter/AuthGlobalFilter.java

@@ -0,0 +1,149 @@
+package com.jzg.filter;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 全局鉴权过滤器 —— 网关层统一认证入口
+ * <p>
+ * 所有请求在网关入口处校验 Token 有效性。
+ * 白名单直接放行;其他路径校验 Authorization 头中的 Token 是否在 Redis 中存在。
+ * 校验通过后原样透传请求,不修改任何请求头。
+ * </p>
+ *
+ * @author wh
+ * @date 2026/6/16
+ */
+@Component
+@Order(Ordered.HIGHEST_PRECEDENCE + 10)
+@Slf4j
+public class AuthGlobalFilter implements GlobalFilter {
+
+    @Autowired
+    private RedissonClient redissonClient;
+
+    /**
+     * 无需鉴权的白名单路径(前缀匹配)
+     */
+    private static final List<String> WHITELIST = new ArrayList<>();
+
+    static {
+        // Swagger / API 文档
+        WHITELIST.add("/swagger-ui/");
+        WHITELIST.add("/v3/api-docs");
+        WHITELIST.add("/swagger-resources/");
+        WHITELIST.add("/webjars/");
+        WHITELIST.add("/favicon.ico");
+
+        // 登录 & 注册(网页端)
+        WHITELIST.add("/auth/login");
+        WHITELIST.add("/auth/captchaById");
+        WHITELIST.add("/auth/register");
+        WHITELIST.add("/auth/sendSmsCode");
+        WHITELIST.add("/auth/forgotPassword");
+        WHITELIST.add("/auth/publicKeyExchange");
+
+        // APP 登录
+        WHITELIST.add("/appAuth/smsCodeLogin");
+        WHITELIST.add("/appAuth/appLogin");
+        WHITELIST.add("/appAuth/partnerAppLogin");
+
+        // 短信
+        WHITELIST.add("/send/sendSmsCode");
+        WHITELIST.add("/sendSmsCode");
+        WHITELIST.add("/appLogin");
+        WHITELIST.add("/smsCodeLogin");
+
+        // 其他公开接口
+        WHITELIST.add("/system/sysListAccountLinking");
+        WHITELIST.add("/supplementOrder/getOrderDetail");
+        WHITELIST.add("/dict/get");
+
+        // 本地生活
+        WHITELIST.add("/signIn/updateSignCompleteRuleIn");
+    }
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+        String path = exchange.getRequest().getURI().getPath();
+
+        // 1. 白名单路径直接放行
+        if (isWhitelisted(path)) {
+            return chain.filter(exchange);
+        }
+
+        // 2. 获取 Authorization 头
+        HttpHeaders headers = exchange.getRequest().getHeaders();
+        String authorization = headers.getFirst("Authorization");
+        if (authorization == null || authorization.isEmpty()) {
+            authorization = headers.getFirst("authorization");
+        }
+
+        // 3. Token 不存在 → 401
+        if (authorization == null || authorization.isEmpty()) {
+            log.warn("【网关鉴权】缺少 Authorization 头。path=[{}]", path);
+            return unauthorized(exchange, "未提供认证令牌");
+        }
+
+        // 4. 校验 Token 在 Redis 中是否存在
+        try {
+            Object bucketValue = redissonClient.getBucket(authorization).get();
+            if (bucketValue == null) {
+                log.warn("【网关鉴权】Token 无效或已过期。path=[{}]", path);
+                return unauthorized(exchange, "认证令牌无效或已过期");
+            }
+        } catch (Exception e) {
+            log.error("【网关鉴权】Redis 查询异常。path=[{}]", path, e);
+            return unauthorized(exchange, "认证服务异常");
+        }
+
+        // 5. Token 有效,原样透传请求(不修改任何请求头)
+        log.debug("【网关鉴权】认证通过。path=[{}]", path);
+        return chain.filter(exchange);
+    }
+
+    /**
+     * 判断路径是否在白名单中(前缀匹配)
+     */
+    private boolean isWhitelisted(String path) {
+        for (String pattern : WHITELIST) {
+            if (path.startsWith(pattern)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 返回 401 未授权响应
+     */
+    private Mono<Void> unauthorized(ServerWebExchange exchange, String message) {
+        exchange.getResponse().setStatusCode(HttpStatus.OK);
+        exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON);
+
+        JSONObject body = new JSONObject();
+        body.put("code", 401);
+        body.put("msg", message);
+
+        byte[] bytes = body.toJSONString().getBytes(StandardCharsets.UTF_8);
+        DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes);
+        return exchange.getResponse().writeWith(Mono.just(buffer));
+    }
+}

+ 39 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java

@@ -334,6 +334,17 @@ public class AnShengCrawlerRequestComponent {
         return "";
     }
 
+
+    public InsuranceResponse newGsOrder(MultiValueMap<String, String> urlParams,String token) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("loginToken",token);
+        headers.add("User-Agent","Mozilla/5.0 (Linux; Android 5.1.1; VOG-AL00 Build/LMY48Z; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.100 Mobile Safari/537.36");
+
+        ResponseEntity<InsuranceResponse> response = requestComponent.post(requestComponent.buildUrl(RequestUrl.NEW_ORDER.getRequestUrl(anShengCrawlerProperties.getUrl()),urlParams),null, InsuranceResponse.class, headers);
+        return response.getBody();
+    }
+
+
     public PureRiskPremiumQueryResponse pureRiskPremiumQuery(InsuranceContractRequest insuranceContractRequest, HttpHeaders httpHeaders) {
         return post(RequestUrl.PURERISK_PREMIUM_QUERY, insuranceContractRequest, PureRiskPremiumQueryResponse.class, httpHeaders);
 
@@ -343,4 +354,32 @@ public class AnShengCrawlerRequestComponent {
         ResponseEntity<AnShengCrawlerSearchVehicleByVinResponse> responseEntity = requestComponent.formData(RequestUrl.SEARCHVEHICLE_BY_NAME.getRequestUrl(anShengCrawlerProperties.getUrl()), jsonObject, AnShengCrawlerSearchVehicleByVinResponse.class, headers);
         return responseEntity.getBody().getData();
     }
+
+    public String pdfUrl(JSONObject jsonData,String token) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("loginToken",token);
+        headers.add("User-Agent","Mozilla/5.0 (Linux; Android 5.1.1; VOG-AL00 Build/LMY48Z; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.100 Mobile Safari/537.36");
+        MultiValueMap<String, String> urlParams = new LinkedMultiValueMap<>();
+        urlParams.add("method", "query");
+        ResponseEntity<FileDownloadResp> response = requestComponent.post(requestComponent.buildUrl(RequestUrl.PDF_URL.getRequestUrl(anShengCrawlerProperties.getUrl()),urlParams),jsonData, FileDownloadResp.class, headers);
+        return response.getBody().getData();
+    }
+
+
+    public LoginResp downloadToken(MultiValueMap<String, String> formData,MultiValueMap<String, String> urlParams,HttpHeaders headers){
+        ResponseEntity<LoginResp> form = requestComponent.form(requestComponent.buildUrl(RequestUrl.NEW_GS_LOGIN.getRequestUrl(anShengCrawlerProperties.getUrl()), urlParams), formData, LoginResp.class, headers);
+        return form.getBody();
+    }
+
+
+    public BdTokenResp bdResp(MultiValueMap<String, String> formData,MultiValueMap<String, String> urlParams,HttpHeaders headers){
+        ResponseEntity<BdTokenResp> form = requestComponent.form(requestComponent.buildUrl(RequestUrl.NEW_GS_LOGIN.getRequestUrl(anShengCrawlerProperties.getUrl()), urlParams), formData, BdTokenResp.class, headers);
+        return form.getBody();
+    }
+
+    public DragSliderResp huaKuai(MultiValueMap<String, String> formData,HttpHeaders headers) {
+        DragSliderResp dragSliderResp = requestComponent.get(RequestUrl.NEW_GS_LOGIN.getRequestUrl(anShengCrawlerProperties.getUrl()), formData, "获取滑块验证码", DragSliderResp.class, headers);
+        log.info("滑块码:{}",JSONObject.toJSONString(dragSliderResp));
+        return dragSliderResp;
+    }
 }

+ 11 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java

@@ -40,7 +40,17 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     QUERY_PRINT_PDF("/printportalapi/printportal/queryPrintpdf.do", "保单下载"),
     DOWNLOAD_PDF("/printportalapi/printportal/downloadPdf.do?policyNo=%s&policyType=6&channel=print&systemName=tpaic-ec&userName=tpaic-ec", "非车保单下载"),
     //   风险与保费查询
-    PURERISK_PREMIUM_QUERY("/portalapi/pureRiskPremiumQuery", "风险与保费查询")
+    PURERISK_PREMIUM_QUERY("/portalapi/pureRiskPremiumQuery", "风险与保费查询"),
+
+
+    //   获取PDF地址
+    PDF_URL("/astmobile/pdf.do", "获取PDF地址"),
+
+    //   获取订单
+    NEW_ORDER("/astmobile/newgsOrder.do", "获取订单"),
+
+    //   新归属登录
+    NEW_GS_LOGIN("/astmobile/newgsLogin.do", "归属登录")
 
 
     ;

+ 5 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/po/AnShengCrawlerOrder.java

@@ -23,6 +23,11 @@ public class AnShengCrawlerOrder {
     @Id
     private String id;
 
+    /**
+     * 车牌号
+     */
+    private String licenseNo;
+
     /**
      * 保险公司订单号
      */

+ 1 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java

@@ -40,7 +40,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
         String customerNegotiatePrice = CustomerNegotiatePriceUtils.calculateTheDepreciationValue(departmentPlanCode.getCode(), quoteVo.getCarInfoVo()
                         .getEnergyTypeCode(),
                 dataDTO.getCustomerNegotiatePrice(), riskInfoVo.getStartDate(), quoteVo.getCarInfoVo()
-                        .getRegisterDate());
+                        .getRegisterDate(),quoteVo.getCarInfoVo());
         String energyTypeCode = quoteVo.getCarInfoVo().getEnergyTypeCode();
         this.isTryCal = false;
         this.contracts = new ArrayList<>();

+ 19 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/BdTokenResp.java

@@ -0,0 +1,19 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+
+import lombok.Data;
+
+/**
+ * 根据agentCode获取bdToken响应
+ */
+@Data
+public class BdTokenResp {
+    private String msg;
+    private Integer code;
+    private BdTokenData data;
+
+    @Data
+    public static class BdTokenData {
+        private String token;
+    }
+}

+ 27 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/DownloadTokenResult.java

@@ -0,0 +1,27 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+
+import lombok.Data;
+
+/**
+ * 登录最终返回结果
+ */
+@Data
+public class DownloadTokenResult {
+    /**
+     * 状态码 200成功 400失败
+     */
+    private Integer code;
+    /**
+     * 提示信息
+     */
+    private String message;
+    /**
+     * 登录token
+     */
+    private String token;
+    /**
+     * 业务bdToken
+     */
+    private String bdToken;
+}

+ 14 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/DragSliderResp.java

@@ -0,0 +1,14 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+
+import lombok.Data;
+
+/**
+ * 获取滑块验证码响应
+ */
+@Data
+public class DragSliderResp {
+    private String data;
+    private String msg;
+    private Integer code;
+}

+ 20 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/LoginResp.java

@@ -0,0 +1,20 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+
+import lombok.Data;
+
+/**
+ * 账号密码登录响应
+ */
+@Data
+public class LoginResp {
+    private String token;
+    private String msg;
+    private Integer code;
+    private LoginData data;
+
+    @Data
+    public static class LoginData {
+        private String agentCode;
+    }
+}

+ 24 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/FileDownloadResp.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.ansheng.crawler.entity.response;
+
+
+import lombok.Data;
+
+@Data
+public class FileDownloadResp {
+
+    /**
+     * 响应码
+     */
+    private String code;
+
+    /**
+     * 响应信息
+     */
+    private String msg;
+
+    /**
+     * 文件下载地址
+     */
+    private String data;
+
+}

+ 124 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/InsuranceResponse.java

@@ -0,0 +1,124 @@
+package com.jzg.quotation.ansheng.crawler.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InsuranceResponse {
+
+    /** 响应码 0000=成功 */
+    private String code;
+    /** 响应信息 */
+    private String msg;
+    /** 保单数据列表 */
+    private List<InsurancePolicy> data;
+
+
+    /**
+     * 车辆保险保单明细
+     */
+    @Data
+    public static class InsurancePolicy {
+
+        /** 被保险人姓名 */
+        @JsonProperty("insuredName")
+        private String insuredName;
+
+        /** 申请时间 */
+        @JsonProperty("applyDate")
+        private String applyDate;
+
+        /** 车牌号码 */
+        @JsonProperty("vehicleLicenceCode")
+        private String vehicleLicenceCode;
+
+        /** 证件号码 */
+        @JsonProperty("certiCode")
+        private String certiCode;
+
+        /** 产品名称 */
+        @JsonProperty("productName")
+        private String productName;
+
+        /** 订单状态 */
+        @JsonProperty("orderStatus")
+        private String orderStatus;
+
+        /** 投保单号 */
+        @JsonProperty("applyPolicyNo")
+        private String applyPolicyNo;
+
+        /** 保单号 */
+        @JsonProperty("policyNo")
+        private String policyNo;
+
+        /** 实际总保费 */
+        @JsonProperty("totalActualPremium")
+        private String totalActualPremium;
+
+        /** 关联保单号 */
+        @JsonProperty("policyWithNo")
+        private String policyWithNo;
+
+        /** 保单类型 */
+        @JsonProperty("policyTpe")
+        private String policyTpe;
+
+        /** 临时号牌类型 */
+        @JsonProperty("temporaryType")
+        private String temporaryType;
+
+        /** 临时号牌 */
+        @JsonProperty("temporaryNo")
+        private String temporaryNo;
+
+        /** 临时标识ID */
+        @JsonProperty("temporaryId")
+        private String temporaryId;
+
+        /** 整数部分 */
+        @JsonProperty("integralPortion")
+        private String integralPortion;
+
+        /** 是否生效 */
+        @JsonProperty("isEffective")
+        private String isEffective;
+
+        /** 代理人编码 */
+        @JsonProperty("agentCode")
+        private String agentCode;
+
+        /** 关联ID */
+        @JsonProperty("relationId")
+        private String relationId;
+
+        /** 代理人名称 */
+        @JsonProperty("agentName")
+        private String agentName;
+
+        /** 保单状态 */
+        @JsonProperty("policyStates")
+        private String policyStates;
+
+        /** 使用属性编码 */
+        @JsonProperty("usageAttributeCode")
+        private String usageAttributeCode;
+
+        /** 所有权属性编码 */
+        @JsonProperty("ownershipAttributeCode")
+        private String ownershipAttributeCode;
+
+        /** 签名串 */
+        @JsonProperty("sign")
+        private String sign;
+
+        /** 扩展签名串 */
+        @JsonProperty("signExt")
+        private String signExt;
+    }
+
+
+}

+ 4 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerLoginService.java

@@ -1,6 +1,6 @@
 package com.jzg.quotation.ansheng.crawler.service;
 
-import org.springframework.http.HttpHeaders;
+import com.jzg.quotation.ansheng.crawler.entity.request.DownloadTokenResult;
 
 public interface AnShengCrawlerLoginService {
 
@@ -12,4 +12,7 @@ public interface AnShengCrawlerLoginService {
      */
     String login(String userName, String password);
 
+
+    DownloadTokenResult getObtainDownloadToken(String username, String password);
+
 }

+ 1 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerOrderService.java

@@ -16,7 +16,7 @@ public interface AnShengCrawlerOrderService {
      * 保存订单号
      * @param id 订单号
      */
-    void saveRecordingTime(String id);
+    void saveRecordingTime(String id,String licenseNo);
 
     /**
      * 保存订单

+ 3 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerQuoteProcessService.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.ansheng.crawler.service;
 
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
+import com.jzg.quotation.ansheng.crawler.entity.request.DownloadTokenResult;
 import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerGetUserDetailResponse;
 import org.springframework.http.HttpHeaders;
 
@@ -24,4 +25,6 @@ public interface AnShengCrawlerQuoteProcessService {
     AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO getUserDetailResponse(String agreementId, HttpHeaders headers);
 
 
+    DownloadTokenResult obtainDownloadToken(AttributionInformationVo attributionInformationVo);
+
 }

+ 112 - 6
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerLoginServiceImpl.java

@@ -5,20 +5,18 @@ import com.jzg.commons.entity.quote.vo.identify.SliderCaptchaVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.ansheng.crawler.component.AnShengCrawlerCacheComponent;
 import com.jzg.quotation.ansheng.crawler.component.AnShengCrawlerRequestComponent;
-import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerCheckLoginRequest;
-import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerCheckVerificationRequest;
-import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerVerifyRequest;
+import com.jzg.quotation.ansheng.crawler.entity.request.*;
 import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerVerifyResponse;
 import com.jzg.quotation.ansheng.crawler.service.AnShengCrawlerLoginService;
 import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
-import com.jzg.quotation.commons.utils.CookieParseUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 
 import java.util.List;
-import java.util.Map;
 
 @Service
 @RequiredArgsConstructor
@@ -67,4 +65,112 @@ public class AnShengCrawlerLoginServiceImpl implements AnShengCrawlerLoginServic
         throw new SystemException("登录失败,请重新登录");
     }
 
+    @Override
+    public DownloadTokenResult getObtainDownloadToken(String username, String password) {
+        // 构建请求头
+        HttpHeaders headers = buildCommonHeaders();
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+
+        // URL参数
+        MultiValueMap<String, String> urlParams = new LinkedMultiValueMap<>();
+        urlParams.add("method", "login");
+
+        // 表单参数
+        MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
+        formData.add("account", username);
+        formData.add("password", password);
+        formData.add("phone", "");
+        formData.add("agentCode", "");
+        formData.add("verificationCode", "");
+        formData.add("authenticationType", "1");
+        // 拼接滑块码
+        String dragCode = getHuaKuai();
+        formData.add("dragSliderCode", dragCode != null ? dragCode : "");
+        // 发起POST表单请求,使用项目已有的form请求方法
+        LoginResp loginResp = anShengCrawlerRequestComponent.downloadToken( formData, urlParams,headers);
+        if (loginResp == null) {
+            DownloadTokenResult result = new DownloadTokenResult();
+            result.setCode(400);
+            result.setMessage("登录响应为空");
+            return result;
+        }
+
+        // 判断登录是否成功
+        if ("成功".equals(loginResp.getMsg())) {
+            String token = loginResp.getToken();
+            String agentCode = loginResp.getData() != null ? loginResp.getData().getAgentCode() : "";
+
+            // 3. 二次请求:根据agentCode获取bdToken
+            HttpHeaders secondHeaders = new HttpHeaders();
+            secondHeaders.add("loginToken", token);
+            secondHeaders.add("User-Agent", buildUserAgent());
+
+            MultiValueMap<String, String> secondUrlParams = new LinkedMultiValueMap<>();
+            secondUrlParams.add("method", "getUserByAgentCode");
+
+            MultiValueMap<String, String> secondForm = new LinkedMultiValueMap<>();
+            secondForm.add("agentCode", agentCode);
+            secondForm.add("agentPersonCode", "");
+            String bdToken = "";
+            BdTokenResp bdResp = anShengCrawlerRequestComponent.bdResp(secondForm, secondUrlParams, headers);
+            if (bdResp != null && bdResp.getData() != null) {
+                bdToken = bdResp.getData().getToken();
+            }
+
+            // 组装成功返回
+            DownloadTokenResult success = new DownloadTokenResult();
+            success.setCode(200);
+            success.setMessage(loginResp.getMsg());
+            success.setToken(token);
+            success.setBdToken(bdToken);
+            return success;
+        } else {
+            // 登录失败
+            DownloadTokenResult fail = new DownloadTokenResult();
+            fail.setCode(400);
+            fail.setMessage(loginResp.getMsg());
+            return fail;
+        }
+    }
+
+
+
+    /**
+     * 1. GET 请求 获取滑块验证码 dragSliderCode
+     */
+    public String getHuaKuai() {
+        HttpHeaders headers = buildCommonHeaders();
+        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+        params.add("method", "getDragSliderCode");
+        DragSliderResp dragSliderResp = anShengCrawlerRequestComponent.huaKuai(params, headers);
+        return dragSliderResp.getData();
+    }
+
+
+    /**
+     * 构建公共请求头(复刻Python headers)
+     */
+    private HttpHeaders buildCommonHeaders() {
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Host", "apps.axa.cn");
+        headers.add("Pragma", "no-cache");
+        headers.add("Cache-Control", "no-cache");
+        headers.add("Accept", "application/json, text/plain, */*");
+        headers.add("Origin", "https://apps.axa.cn");
+        headers.add("loginToken", "");
+        headers.add("User-Agent", buildUserAgent());
+        headers.add("Referer", "https://apps.axa.cn/astmobilefront/index.html");
+        headers.add("Accept-Language", "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7");
+        headers.add("X-Requested-With", "com.axa.ast");
+        return headers;
+    }
+
+    private String buildUserAgent() {
+        return "Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/72.0.3626.121 Mobile Safari/537.36";
+    }
+
+
+
+
+
 }

+ 2 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerOrderServiceImpl.java

@@ -20,9 +20,10 @@ public class  AnShengCrawlerOrderServiceImpl implements AnShengCrawlerOrderServi
     }
 
     @Override
-    public void saveRecordingTime(String id){
+    public void saveRecordingTime(String id,String licenseNo){
         AnShengCrawlerOrder anShengCrawlerOrder = new AnShengCrawlerOrder();
         anShengCrawlerOrder.setId(id);
+        anShengCrawlerOrder.setLicenseNo(licenseNo);
         anShengCrawlerOrder.setRecordingTime(TimeProcessing.nowDateTime());
         anShengCrawlerOrderRepository.save(anShengCrawlerOrder);
     }

+ 8 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerQuoteProcessServiceImpl.java

@@ -5,6 +5,7 @@ import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.ansheng.crawler.component.AnShengCrawlerCacheComponent;
 import com.jzg.quotation.ansheng.crawler.component.AnShengCrawlerRequestComponent;
+import com.jzg.quotation.ansheng.crawler.entity.request.DownloadTokenResult;
 import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerGetUserDetailResponse;
 import com.jzg.quotation.ansheng.crawler.service.AnShengCrawlerLoginService;
 import com.jzg.quotation.ansheng.crawler.service.AnShengCrawlerQuoteProcessService;
@@ -55,4 +56,11 @@ public class AnShengCrawlerQuoteProcessServiceImpl implements AnShengCrawlerQuot
         }, AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO.class, Duration.ofHours(AnShengCrawlerCacheComponent.AGENT_DEFINE_TIME));
     }
 
+    @Override
+    public DownloadTokenResult obtainDownloadToken(AttributionInformationVo attributionInformationVo) {
+        String username = attributionInformationVo.getUsername();
+        String password = attributionInformationVo.getPassword();
+        return anShengCrawlerLoginService.getObtainDownloadToken(username, password);
+    }
+
 }

+ 74 - 23
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java

@@ -33,7 +33,12 @@ import com.jzg.quotation.commons.utils.TimeProcessing;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpHeaders;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.time.Year;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -136,7 +141,6 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         // 报价
         AnShengCrawlerCalculatePremiumApplyMessage crawlerCalculatePremiumApply = new AnShengCrawlerCalculatePremiumApplyMessage(quoteVo, dataDTO, userDetailResponse, departmentPlanCode, checkVehicleCodeSecretGenerate);
         log.info("安盛报价参数:{}", JSONObject.toJSONString(crawlerCalculatePremiumApply));
-
         InsuranceContractRequest insuranceContractRequest = new  InsuranceContractRequest(crawlerCalculatePremiumApply);
         PureRiskPremiumQueryResponse premiumQueryResponse = anShengCrawlerRequestComponent.pureRiskPremiumQuery(insuranceContractRequest, httpHeaders);
         PureRiskPremiumQueryResponse.TargetsBean targetsBean = premiumQueryResponse.getData().getContracts().get(0).getTargets().get(0);
@@ -176,7 +180,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             // 缓存数据
             anShengCrawlerCacheComponent.cacheQuoteRequest(ordersNo, autoSpecialPromiseRequest);
         }
-        anShengCrawlerOrderService.saveRecordingTime(ordersNo);
+        anShengCrawlerOrderService.saveRecordingTime(ordersNo,quoteVo.getCarInfoVo().getLicenseNo());
         // 构造返回参数
         return AnShengCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(ordersNo, quoteVo, calculatePremiumApply);
     }
@@ -382,33 +386,80 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
     @Override
     public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
         DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
-
-        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(downloadPolicyVo.getOrder().getAttributionInformationVo());
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
+        DownloadTokenResult obtainDownloadToken = anShengCrawlerQuoteProcessService.obtainDownloadToken(downloadPolicyVo.getOrder().getAttributionInformationVo());
+        // 缓存token,避免重复调用
+        String loginToken = obtainDownloadToken.getToken();
+        String bdToken = obtainDownloadToken.getBdToken();
+
+        MultiValueMap<String, String> urlParams = new LinkedMultiValueMap<>();
+        urlParams.add("method", "queryAll");
+        urlParams.add("loginToken", loginToken);
+        urlParams.add("orderStatus", "2");
+        //车牌
+        urlParams.add("searchValue", URLEncoder.encode(anShengCrawlerOrder.getLicenseNo(), StandardCharsets.UTF_8));
+        InsuranceResponse insuranceResponse = anShengCrawlerRequestComponent.newGsOrder(urlParams, loginToken);
+        if (!StringUtils.equals("成功", insuranceResponse.getMsg()) || CollectionUtil.isEmpty(insuranceResponse.getData())) {
+            throw new SystemException("暂无找到该车保单信息");
+        }
+        String currentYear = String.valueOf(Year.now().getValue());
+        for (InsuranceResponse.InsurancePolicy policy : insuranceResponse.getData()) {
+            if (policy == null) {
+                continue;
+            }
+            String applyDate = policy.getApplyDate();
 
-        // 交强保单和标志
-        Optional.ofNullable(anShengCrawlerOrder.getCiPolicyNo()).ifPresent(policyNo -> {
-            AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCi = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "6");
-            downloadPolicyResultVo.setJqUrl(anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCi, httpHeaders));
-
-            AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCiBz = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "2");
-            downloadPolicyResultVo.setJqFlagUrl(anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCiBz, httpHeaders));
-        });
-        // 商业保单和标志
-        Optional.ofNullable(anShengCrawlerOrder.getBiPolicyNo()).ifPresent(policyNo -> {
-            AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCi = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "6");
-            downloadPolicyResultVo.setSyUrl(anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCi, httpHeaders));
-        });
+            String productName = policy.getProductName();
+            String policyNo = policy.getPolicyNo();
+            String signExt = policy.getSignExt();
 
-        // 非车保单和标志
-        anShengCrawlerOrder.getNiInfos().forEach(niInfo -> {
-            Optional.ofNullable(niInfo.getNiPolicyNumber()).ifPresent(policyNo -> {
-                anShengCrawlerRequestComponent.downloadPdf(policyNo, httpHeaders);
-            });
-        });
+            String applyYear = "";
+            if (applyDate != null && applyDate.length() >= 4) {
+                applyYear = applyDate.substring(0, 4);
+            }
+            // 机动车辆交强险
+            if ("机动车辆交强险".equals(productName)) {
+                JSONObject mainJson = buildPdfJson(policyNo, "2", signExt, bdToken);
+                downloadPolicyResultVo.setJqUrl(anShengCrawlerRequestComponent.pdfUrl(mainJson, loginToken));
+                JSONObject flagJson = buildPdfJson(policyNo, "4", signExt, bdToken);
+                downloadPolicyResultVo.setJqFlagUrl(anShengCrawlerRequestComponent.pdfUrl(flagJson, loginToken));
+            }
+            // 机动车辆综合险保险
+            if ("机动车辆综合险保险".equals(productName)) {
+                JSONObject syJson = buildPdfJson(policyNo, "2", signExt, bdToken);
+                downloadPolicyResultVo.setSyUrl(anShengCrawlerRequestComponent.pdfUrl(syJson, loginToken));
+            }
+            // 其他险种且为当年投保
+            if (!"机动车辆综合险保险".equals(productName) && !"机动车辆交强险".equals(productName) && currentYear.equals(applyYear)) {
+                JSONObject otherJson = buildPdfJson(policyNo, "5", signExt, bdToken);
+                downloadPolicyResultVo.setJyUrl(anShengCrawlerRequestComponent.pdfUrl(otherJson, loginToken));
+            }
+        }
         return downloadPolicyResultVo;
     }
 
+
+    /**
+     * 通用构建PDF请求JSON
+     */
+    private JSONObject buildPdfJson(String policyNo, String printType, String signExt, String bdToken) {
+        return JSONObject.of(
+                "head", JSONObject.of(
+                        "requestType", "V113",
+                        "account", "",
+                        "password", "",
+                        "token", bdToken
+                ),
+                "requestInfo", JSONObject.of(
+                        "basePart", JSONObject.of(
+                                "policyNo", policyNo,
+                                "printType", printType,
+                                "sign", signExt
+                        )
+                )
+        );
+    }
+
     @Override
     public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
         // 获取订单信息

+ 83 - 3
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/utils/CustomerNegotiatePriceUtils.java

@@ -1,6 +1,8 @@
 package com.jzg.quotation.ansheng.crawler.utils;
 
+import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.ansheng.crawler.constant.enums.DepartmentPlanCode;
 import com.jzg.quotation.commons.utils.TimeProcessing;
 
@@ -20,11 +22,89 @@ public final class CustomerNegotiatePriceUtils {
                                                        String energyType,
                                                        String carPrice,
                                                        String warrantyTime,
-                                                       String registerDateTime) {
-        BigDecimal bigDecimal = calculateType(planCode, energyType, carPrice);
-        return calculateTheDepreciationValue(new BigDecimal(carPrice), TimeProcessing.dateTimeToDate(warrantyTime), registerDateTime, bigDecimal);
+                                                       String registerDateTime,
+                                                       CarInfoVo carInfoVo) {
+        BigDecimal bigDeqcimal = calculateType(planCode, energyType, carPrice);
+        BigDecimal v = calcMonthDepreciationNew(carInfoVo, Double.valueOf(carPrice), planCode);
+
+        return calculateTheDepreciationValue(new BigDecimal(carPrice), TimeProcessing.dateTimeToDate(warrantyTime), registerDateTime,v);
+    }
+
+    public static BigDecimal calcMonthDepreciationNew(CarInfoVo carInfoVo,Double newCarPrice,String planCode) {
+        String completeKerbMass = carInfoVo.getCompleteKerbMass();
+        String curbWeightStr  = String.valueOf((completeKerbMass == null || completeKerbMass.isEmpty()) ?  BigDecimal.ZERO : new BigDecimal(completeKerbMass).divide(new BigDecimal("1000")));
+        double t = 0.0;
+        String codeItemsName = carInfoVo.getCarKindCode();
+        String nature = carInfoVo.getCarNatureCode();
+        String seatStr = carInfoVo.getSeatCount();
+        if ("1".equals(nature)) {
+            // 非营业车辆
+            if ("1".equals(codeItemsName)) {
+                // 客车
+                double seatComs = 0;
+                if (seatStr != null && !seatStr.isEmpty()) {
+                    seatComs = Double.parseDouble(seatStr);
+                }
+                if (seatComs <= 9) {
+                    if ("113".equals(planCode)) {
+                        if ("0".equals(StringUtils.equals("109",planCode))) {
+                            // 新能源
+                            if (newCarPrice <= 100000) {
+                                t = 0.82;
+                            } else if (newCarPrice <= 200000) {
+                                t = 0.77;
+                            } else if (newCarPrice <= 300000) {
+                                t = 0.72;
+                            } else {
+                                t = 0.68;
+                            }
+                        } else {
+                            // 非新能源
+                            t = 0.63;
+                        }
+                    } else {
+                        t = 0.6;
+                    }
+                } else {
+                    // 座位>9
+                    t = 0.9;
+                }
+            } else if ("2".equals(codeItemsName)) {
+                t = 0.9;
+            } else if ("54".equals(codeItemsName)) {
+                t = 0.9;
+            } else if ("21".equals(codeItemsName)) {
+                t = 1.1;
+            }
+
+            // t为0默认0.9
+            if (t == 0) {
+                t = 0.9;
+            }
+        } else {
+            // 营业车辆 nature=2
+            if ("21".equals(codeItemsName)) {
+                t = 1.4;
+            } else if ("10".equals(codeItemsName)) {
+                t = 1.1;
+            } else if ("54".equals(codeItemsName)) {
+                t = 1.1;
+            } else if ("2".equals(codeItemsName)) {
+                if (curbWeightStr != null && !curbWeightStr.isEmpty()) {
+                    double curbWeight = Double.parseDouble(curbWeightStr);
+                    if (curbWeight <= 1.8) {
+                        t = 1.1;
+                    }
+                }
+            }
+            if (t == 0) {
+                t = 0.9;
+            }
+        }
+        return new BigDecimal(t).divide(new BigDecimal("100"));
     }
 
+
     private static BigDecimal calculateType(String planCode, String energyType, String carPrice) {
         BigDecimal type = BigDecimal.ZERO;
 

+ 14 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java

@@ -8,6 +8,7 @@ import com.jzg.quotation.commons.config.WebClientConfig;
 import com.jzg.quotation.commons.entity.CookiesRequest;
 import com.jzg.quotation.commons.utils.InsuranceLog;
 import com.jzg.quotation.commons.utils.RequestObjectConversion;
+import io.netty.handler.timeout.ReadTimeoutException;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.ParameterizedTypeReference;
@@ -33,6 +34,9 @@ import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
 import java.util.Map;
 import java.util.Optional;
+import java.time.Duration;
+import java.util.Map;
+import java.util.Optional;
 import java.util.function.Consumer;
 import java.util.regex.Pattern;
 
@@ -396,6 +400,16 @@ public class RequestComponent {
                     .body(BodyInserters.fromValue(body))
                     .retrieve()
                     .toEntity(String.class)
+                    .timeout(Duration.ofSeconds(60))
+                    .onErrorMap(ReadTimeoutException.class, ex ->
+                            new WebClientResponseException(
+                                    504,
+                                    "第三方接口读取超时:" + url,
+                                    HttpHeaders.EMPTY,
+                                    null,
+                                    null
+                            )
+                    )
                     .block();
             if (rawResponse == null) {
                 throw new WebClientResponseException(

+ 1 - 1
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java

@@ -1755,7 +1755,7 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
         RenBaoNewCrawlerConfigureParameters parameters = ConfigureParametersConversion
                 .conversionEntity(RenBaoNewCrawlerConfigureParameters.class, attributionInfo.getConfigInfo());
 
-        String jwt = requestComponent.getJwtToken(parameters.getCarChecker());
+        String jwt = attributionInfo.getPassword();
         RMap<String, Object> authorization = getTokenService.getAuthorization(
                 attributionInfo.getUsername(),
                 jwt,

+ 6 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/FactorMatch.java

@@ -141,6 +141,7 @@ public class FactorMatch {
     public static boolean judgementsUnderwrite(List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementCostRuleList, List<RuleAttrMappingVo> ruleAttrMappingVoList,
                                      List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList, StringBuilder logs, List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList) {
         boolean useFlag = true;
+        boolean groupUseFlag = false;
         for (PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink : ptlAgreementCostRuleList) {
             //查找规则中的 传值属性
             RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream()
@@ -183,6 +184,10 @@ public class FactorMatch {
                 log.info("承保规则校验-传入值为null: attrCode={}, useFlag=false", ptlAgreementProductCostsAttrLink.getAttrCode());
             }
 
+            if(useFlag){
+                groupUseFlag = useFlag;
+            }
+
             if (!useFlag) {
                 log.info("承保规则校验-条件命中! attrCode={}, 传入值={}, 规则min={}, max={}, operator={}",
                         ptlAgreementProductCostsAttrLink.getAttrCode(), ruleAttrMappingVo.getValue(),
@@ -221,12 +226,10 @@ public class FactorMatch {
                 if (CollUtil.isNotEmpty(collect)) {
                     logs.append("<span style=\"color:red;\">规则匹配失败:" + collect.get(0).getAttrName() + "</span>\n");
                 }
-
-                return false;
             }
         }
         log.info("承保规则校验-所有条件均未命中, 规则组通过, useFlag={}", useFlag);
-        return useFlag;
+        return groupUseFlag;
     }
 
 

+ 38 - 19
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -15,6 +15,7 @@ import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.vo.*;
+import com.jzg.commons.util.BigDecimalUtil;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.summary.aop.FactorMatch;
 import com.jzg.quotation.summary.client.PtlNewAgreementClient;
@@ -84,7 +85,7 @@ public class QuoteVerificationAspect {
             // 获取订单险种信息
             List<InsOrdersKind> kindList = insOrdersKindService.list(new LambdaQueryWrapper<InsOrdersKind>().eq(InsOrdersKind::getOrderNo, insOrders.getId()));
             // 获取订单驾意险信息
-            InsOrdersAccidentalDriving insOrdersAccidentalDriving = insOrdersAccidentalDrivingService.getById(insOrders.getId());
+            InsOrdersAccidentalDriving insOrdersAccidentalDriving = insOrdersAccidentalDrivingService.getByOrderId(insOrders.getId());
             // 获取订单其他信息
             InsOrdersOther insOrdersOther = insOrdersOtherService.getById(insOrders.getId());
             // 获取协议信息
@@ -230,6 +231,7 @@ public class QuoteVerificationAspect {
         insFeeOrders.setJyPremium(insOrdersCosts.getJyPremium());
         insFeeOrders.setTotalPremium(insOrdersCosts.getSumPremium());
         // 获取协议是平台协议还是私有协议 1 平台协议 2 私有协议
+        AgreementVo agreement = agreementInfoVo.getAgreement();
         String agreementType = agreementInfoVo.getAgreement().getAgreementType();
         BigDecimal jqEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
         BigDecimal syEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
@@ -249,32 +251,36 @@ public class QuoteVerificationAspect {
         BigDecimal syFollowRatio = calculateFollowRatio(syCostType, syEntranceFeeRatio);
         BigDecimal jyFollowRatio = calculateFollowRatio(jyCostType, jyEntranceFeeRatio);
 
-        // 5. 根据协议类型确定税率因子(平台协议为1,私有协议为1/1.06)
-        BigDecimal taxFactor = "1".equals(agreementType)
-                ? BigDecimal.ONE
-                : new BigDecimal("1").divide(new BigDecimal("1.06"), 10, RoundingMode.HALF_EVEN);
+        // modify by lipf ,2026年6月17日15:30:54 是否除以1.06,不再根据平台协议还是私有协议进行判断,而是根据协议的是否含税来进行判断
+        String withTax = agreement.getWithTax();
+        BigDecimal taxFactor = new BigDecimal("1");
+        if ("0".equals(withTax)) {
+            // 不含税:保费 / 1.06
+            taxFactor =  new BigDecimal("1.06");
+        }
+
 
         // 6. 统一处理各险种的费用计算(应收、应付、各类费用)
         processInsuranceType(
                 insOrdersCosts.getJqPremium(), jqCostType, jqEntranceFeeRatio, jqFollowRatio, taxFactor,
                 insFeeOrders,
                 InsFeeOrders::setJqReceivablePremium, InsFeeOrders::setJqPayablePremium,
-                InsFeeOrders::setJqCommissionPremium, InsFeeOrders::setJqFollowPremium, InsFeeOrders::setJqAdditionalPremium
-        );
+                InsFeeOrders::setJqCommissionPremium, InsFeeOrders::setJqFollowPremium, InsFeeOrders::setJqAdditionalPremium,
+                InsFeeOrders::setJqKeepPointRatio,InsFeeOrders::setJqKeepPointPremium);
 
         processInsuranceType(
                 insOrdersCosts.getSyPremium(), syCostType, syEntranceFeeRatio, syFollowRatio, taxFactor,
                 insFeeOrders,
                 InsFeeOrders::setSyReceivablePremium, InsFeeOrders::setSyPayablePremium,
-                InsFeeOrders::setSyCommissionPremium, InsFeeOrders::setSyFollowPremium, InsFeeOrders::setSyAdditionalPremium
-        );
+                InsFeeOrders::setSyCommissionPremium, InsFeeOrders::setSyFollowPremium, InsFeeOrders::setSyAdditionalPremium,
+                InsFeeOrders::setSyKeepPointRatio,InsFeeOrders::setSyKeepPointPremium);
 
         processInsuranceType(
                 insOrdersCosts.getJyPremium(), jyCostType, jyEntranceFeeRatio, jyFollowRatio, taxFactor,
                 insFeeOrders,
                 InsFeeOrders::setJyReceivablePremium, InsFeeOrders::setJyPayablePremium,
-                InsFeeOrders::setJyCommissionPremium, InsFeeOrders::setJyFollowPremium, InsFeeOrders::setJyAdditionalPremium
-        );
+                InsFeeOrders::setJyCommissionPremium, InsFeeOrders::setJyFollowPremium, InsFeeOrders::setJyAdditionalPremium,
+                InsFeeOrders::setJyKeepPointRatio,InsFeeOrders::setJyKeepPointPremium);
 
 
         // 7. 计算总应收、总应付、保存费用比例 入库
@@ -332,6 +338,8 @@ public class QuoteVerificationAspect {
      * @param setCommission   手续费setter
      * @param setFollow       跟单费setter
      * @param setAdditional   加投费setter
+     * @param keepPointRate 留点比例
+     * @param keepPointPremium 留点费用
      */
     private void processInsuranceType(
             BigDecimal premium,
@@ -344,7 +352,9 @@ public class QuoteVerificationAspect {
             BiConsumer<InsFeeOrders, BigDecimal> setPayable,
             BiConsumer<InsFeeOrders, BigDecimal> setCommission,
             BiConsumer<InsFeeOrders, BigDecimal> setFollow,
-            BiConsumer<InsFeeOrders, BigDecimal> setAdditional
+            BiConsumer<InsFeeOrders, BigDecimal> setAdditional,
+            BiConsumer<InsFeeOrders, BigDecimal> keepPointRate,
+            BiConsumer<InsFeeOrders, BigDecimal> keepPointPremium
     ) {
         // 若险种配置为空,默认应收应付为0
         if (costType == null || premium == null) {
@@ -358,7 +368,7 @@ public class QuoteVerificationAspect {
         BigDecimal addThrowPercent = convertPercent(costType.getAddThrow());
         BigDecimal exportPercent = convertPercent(costType.getExport());
 
-        // 计算应收金额(保费 * 税率因子 * (入口比例 + 加投比例 + 跟单比例))
+        // 计算应收金额
         BigDecimal taxablePremium = premium.multiply(taxFactor);
 
         // 计算应付金额(保费 * 出口比例,保留2位小数)
@@ -370,14 +380,23 @@ public class QuoteVerificationAspect {
         BigDecimal follow = taxablePremium.multiply(followRatio).setScale(5, RoundingMode.HALF_EVEN);
         setCommission.accept(insFeeOrders, commission);
         setFollow.accept(insFeeOrders, commission);
-        setAdditional.accept(insFeeOrders, taxablePremium.multiply(addThrowPercent).setScale(5, RoundingMode.HALF_EVEN));
+        // modify by lipf, 2026年6月16日15:35:09  加投比例,不需要根据平台/私有进行1.06的计算
 
-        BigDecimal receivable = taxablePremium.add(commission)
-                .add(follow)
-//                .add(taxablePremium.multiply(addThrowPercent))
-//                .add(taxablePremium.multiply(followRatio))
-                .setScale(5, RoundingMode.HALF_EVEN);
+        BigDecimal addAmount = premium.multiply(addThrowPercent).setScale(5, RoundingMode.HALF_EVEN);
+        setAdditional.accept(insFeeOrders,addAmount);
+
+        BigDecimal receivable = BigDecimalUtil.add(commission,follow);
+        receivable = receivable.setScale(5, RoundingMode.HALF_EVEN);
         setReceivable.accept(insFeeOrders, receivable);
+
+        // 设置留点比例 入口比例+加投比例-出口比例
+        BigDecimal keepPointRateCal  = BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.multiply(inletPercent,taxFactor),addThrowPercent),exportPercent)
+                .setScale(5,RoundingMode.HALF_EVEN);
+        keepPointRate.accept(insFeeOrders, keepPointRateCal);
+        // 设置留点比例和留点费用
+        BigDecimal keepPointAmount  = BigDecimalUtil.subtract(BigDecimalUtil.add(receivable,addAmount),payable)
+                .setScale(5,RoundingMode.HALF_EVEN);
+        keepPointPremium.accept(insFeeOrders,keepPointAmount);
     }
 
     /**

+ 2 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -69,6 +69,7 @@ public class InsOrdersController extends BaseController {
     @Operation(summary = "录入订单新增")
     @PostMapping("saveOrders")
     public HttpResult saveOrUpdate(@RequestBody InsOrdersAdd ordersAdd) {
+        ordersAdd.setSystemCode(getSystemCode());
         return insOrdersService.saveOrders(ordersAdd);
     }
 
@@ -76,6 +77,7 @@ public class InsOrdersController extends BaseController {
     @Operation(summary = "录入订单修改")
     @PostMapping("updateOrders")
     public HttpResult updateOrders(@RequestBody InsOrdersEnd ordersEnd) {
+        ordersEnd.setSystemCode(getSystemCode());
         return insOrdersService.updateOrders(ordersEnd);
     }
 

+ 0 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -286,7 +286,6 @@ public class UnifyOrderManager {
             if (CollUtil.isNotEmpty(quoteVo.getKindInfoVo())) {
                 QuoteInfoConverter.converterKindInfoVo(quoteVo.getKindInfoVo(), quoteKindMappingMap.get(QuoteRuleCategory.KIND.getCode()), quoteVo.getCarInfoVo());
             }
-            log.info("报价后数据");
             log.info("调用保险公司的api进行报价:报价参数: quoteVO=[{}]", JSONUtil.toJsonStr(quoteVo));
             quoteResultsVo = quoteService.quote(quoteVo);
             log.info("调用保险公司的api进行报价:报价结果: quoteResultsVo=[{}]", JSONUtil.toJsonStr(quoteResultsVo));

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java

@@ -25,6 +25,12 @@ public interface InsFeeOrdersService extends IService<InsFeeOrders> {
 
     HttpResult updateAvailableAmount(String orderNo,BigDecimal availableAmount);
 
+    /**
+     * 订单审核时调整费用
+     *
+     * @author jiakai
+     * @date 2026/6/17 11:08
+     */
     CostCalculateRespVO computedCostInfo(PtlAgreementCostRatioVo param);
 
     /**

+ 21 - 16
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java

@@ -69,8 +69,15 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         return baseController.getUserSystemCode();
     }
 
+    /**
+     * 订单审核时调整费用
+     *
+     * @author jiakai
+     * @date 2026/6/17 11:08
+     */
     @Override
     public CostCalculateRespVO computedCostInfo(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
+        log.info("订单审核时调整费用: ptlAgreementCostRatioVo=[{}]", JSONUtil.toJsonStr(ptlAgreementCostRatioVo));
         // 常量定义 保留小数5位
         InsFeeOrders insFeeOrders = getInsFeeOrders(ptlAgreementCostRatioVo);
         // 拼接返回值
@@ -93,8 +100,6 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     private InsFeeOrders getInsFeeOrders(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
         // 常量定义 保留小数5位
         final int SCALE = 5;
-        final BigDecimal TAX_RATE = new BigDecimal("1.06");
-
         // 获取订单信息
         InsOrders insOrders = insOrdersService.getById(ptlAgreementCostRatioVo.getOrderNo());
         // 获取订单费用信息
@@ -113,27 +118,26 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         BigDecimal jyPremium = insOrdersCosts.getJyPremium() == null ? BigDecimal.ZERO : insOrdersCosts.getJyPremium();
 
         // 更新对象中的比例字段
-        copyRatio(ptlAgreementCostRatioVo, insFeeOrders, withTax);
+        BigDecimal taxRate = copyRatio(ptlAgreementCostRatioVo, insFeeOrders, withTax);
 
         // 核心:规则重新计算所有费用
         // 1. 交强险
-        calculatePremiumByRule(insFeeOrders,
-                "jq", jqPremium,
+        calculatePremiumByRule(insFeeOrders, "jq", jqPremium,
                 insFeeOrders.getJqCommissionRatio(), insFeeOrders.getJqInletRatio(), insFeeOrders.getJqFollowRatio(),
                 insFeeOrders.getJqAdditionalRatio(), insFeeOrders.getJqKeepPointRatio(), insFeeOrders.getJqExportRatio(), insFeeOrders.getJqExportKeepPointRatio(),
-                withTax, TAX_RATE, SCALE);
+                withTax, taxRate, SCALE);
 
         // 2. 商业险
         calculatePremiumByRule(insFeeOrders, "sy", syPremium,
                 insFeeOrders.getSyCommissionRatio(), insFeeOrders.getSyInletRatio(), insFeeOrders.getSyFollowRatio(),
                 insFeeOrders.getSyAdditionalRatio(), insFeeOrders.getSyKeepPointRatio(), insFeeOrders.getSyExportRatio(), insFeeOrders.getSyExportKeepPointRatio(),
-                withTax, TAX_RATE, SCALE);
+                withTax, taxRate, SCALE);
 
         // 3. 驾乘险
         calculatePremiumByRule(insFeeOrders, "jy", jyPremium,
                 insFeeOrders.getJyCommissionRatio(), insFeeOrders.getJyInletRatio(), insFeeOrders.getJyFollowRatio(),
                 insFeeOrders.getJyAdditionalRatio(), insFeeOrders.getJyKeepPointRatio(), insFeeOrders.getJyExportRatio(), insFeeOrders.getJyExportKeepPointRatio(),
-                withTax, TAX_RATE, SCALE);
+                withTax, taxRate, SCALE);
 
         // 重新统计总应收、总应付
         BigDecimal totalPayable = insFeeOrders.getJqPayablePremium().add(insFeeOrders.getSyPayablePremium()).add(insFeeOrders.getJyPayablePremium());
@@ -176,7 +180,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         // 出口直接乘
         BigDecimal export = premium.multiply(exportRatio).setScale(scale, RoundingMode.HALF_EVEN);
         BigDecimal exportKeepPoint = premium.multiply(exportKeepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
-        // 留点比例直接乘
+        // 留点比例直接乘, modify by lipf ,留点比例在infFeeOrder中计算得到。这里直接使用 2026年6月16日17:32:09
         BigDecimal keepPoint = premium.multiply(keepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
 
         // 赋值到实体(自动匹配 jq / sy / jy)
@@ -289,11 +293,11 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     }
 
     // 保存比例
-    private void copyRatio(PtlAgreementCostRatioVo ptlAgreementCostRatioVo, InsFeeOrders insFeeOrders, Integer withTax) {
-        BigDecimal bigDecimal = new BigDecimal("1");
+    private BigDecimal copyRatio(PtlAgreementCostRatioVo ptlAgreementCostRatioVo, InsFeeOrders insFeeOrders, Integer withTax) {
+        BigDecimal taxFactor = new BigDecimal("1");
         if (withTax == 0) {
             // 不含税:保费 / 1.06
-            bigDecimal =  new BigDecimal("1.06");
+            taxFactor =  new BigDecimal("1.06");
         }
         // 手续费比例
         BigDecimal jqCommissionRatio = covertPercent(ptlAgreementCostRatioVo.getJqCommissionRatio());
@@ -309,7 +313,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         insFeeOrders.setJqInletRatio(jqInletRatio);
         insFeeOrders.setSyInletRatio(syInletRatio);
         insFeeOrders.setJyInletRatio(jyInletRatio);
-        // 跟单比例
+        // 跟单比例 
         BigDecimal jqFollowRatio = jqInletRatio.subtract(jqCommissionRatio);
         BigDecimal syFollowRatio = syInletRatio.subtract(syCommissionRatio);
         BigDecimal jyFollowRatio = jyInletRatio.subtract(jyCommissionRatio);
@@ -331,9 +335,9 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         insFeeOrders.setSyExportRatio(syExportRatio);
         insFeeOrders.setJyExportRatio(jyExportRatio);
         // 需求:入口 + 加投 - 出口 = 留点
-        BigDecimal jqKeepPointRatio = (jqInletRatio.divide(bigDecimal, 5, RoundingMode.HALF_EVEN)).add(jqAdditionalRatio).subtract(jqExportRatio);
-        BigDecimal syKeepPointRatio = (syInletRatio.divide(bigDecimal, 5, RoundingMode.HALF_EVEN)).add(syAdditionalRatio).subtract(syExportRatio);
-        BigDecimal jyKeepPointRatio = (jyInletRatio.divide(bigDecimal, 5, RoundingMode.HALF_EVEN)).add(jyAdditionalRatio).subtract(jyExportRatio);
+        BigDecimal jqKeepPointRatio = (jqInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jqAdditionalRatio).subtract(jqExportRatio);
+        BigDecimal syKeepPointRatio = (syInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(syAdditionalRatio).subtract(syExportRatio);
+        BigDecimal jyKeepPointRatio = (jyInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jyAdditionalRatio).subtract(jyExportRatio);
         // 留点比例
         insFeeOrders.setJqKeepPointRatio(jqKeepPointRatio);
         insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);
@@ -342,6 +346,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         insFeeOrders.setJqExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getJqExportKeepPointRatio()));
         insFeeOrders.setSyExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getSyExportKeepPointRatio()));
         insFeeOrders.setJyExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getJyExportKeepPointRatio()));
+        return taxFactor;
     }
 
 

+ 5 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -183,7 +183,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrders.setProductName(ProductsType.getProductNameByCode(ordersAdd.getProductId()));
             insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode());
             insOrders.setEntryStatus(3);
-
+            insOrders.setSystemCode(ordersAdd.getSystemCode());
             // 插入订单信息,如果插入失败,则返回错误信息
             int insertResult = insOrdersMapper.insert(insOrders);
             if (insertResult <= 0) {
@@ -231,7 +231,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersPolicyService.save(policy);
 
             //  保存订单费用
-            updateOrSaveFeeOrder(ordersAdd.getFeeOrdersVo(), quoteNo);
+            updateOrSaveFeeOrder(ordersAdd.getFeeOrdersVo(), quoteNo, ordersAdd.getSystemCode());
 
             // 保险种类信息
             List<KindInfoVo> kindInfoVo = ordersAdd.getKindInfoVo();
@@ -294,12 +294,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
 
     //  更新订单费用信息
-    public void updateOrSaveFeeOrder(InsFeeOrdersVo feeOrdersVo, String quoteNo) {
+    public void updateOrSaveFeeOrder(InsFeeOrdersVo feeOrdersVo, String quoteNo, String systemCode) {
         if (StringUtils.isEmpty(feeOrdersVo.getAgreementId())) {
             feeOrdersVo.setAgreementId(null);
         }
         InsFeeOrders feeOrders = BeanUtil.copyProperties(feeOrdersVo, InsFeeOrders.class);
         feeOrders.setOrderNo(quoteNo);
+        feeOrders.setSystemCode(systemCode);
         insFeeOrdersMapper.insertOrUpdate(feeOrders);
     }
 
@@ -349,7 +350,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
 
             //更新订单费用
-            updateOrSaveFeeOrder(ordersEnd.getFeeOrdersVo(), quoteNo);
+            updateOrSaveFeeOrder(ordersEnd.getFeeOrdersVo(), quoteNo, ordersEnd.getSystemCode());
 
             // 税费信息
             VehicleAndVesselTaxVo vehicleAndVesselTax = ordersEnd.getVehicleAndVesselTaxVo();

+ 89 - 0
tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml

@@ -27,6 +27,95 @@ spring:
       password: 123456  # 如果没有密码,可删除此行
       database: 0
 
+#多租户配置
+tenant:
+  enable: true
+  column: system_code
+  filterTables:
+  ignoreTables:
+    - sys_system
+    - sys_role_perms
+    - sys_area
+    - sys_dict
+    - sys_dict_type
+    - sys_user
+    - sys_user_jzg_info
+    - sys_user_jzg_info_bank_card
+    - sys_user_role
+    - sys_user_jzg_info_file
+    - sys_organization_user_link
+    - sys_upload_files
+    - sys_config
+    - sys_activity
+    - sys_activity_award
+    - sys_activity_dept
+    - sys_activity_record
+    - sys_poster_org
+    - sys_message_template
+    - sys_message_user
+    - sys_notice_user
+    - ptl_scheme_info
+    - ptl_scheme_insurance
+    - ptl_scheme_insurance_driving_intention
+    - ins_business_insurance_option
+    - ins_business_insurance
+    - ptl_agreement_attribution
+    - ptl_agreement_dept
+    - ptl_agreement_undwrt_rules_attr
+    - ptl_agreement_undwrt_rules_dict_labal
+    - ptl_area_license
+    - ptl_agreement_undwrt_rules
+    - ptl_agreement_undwrt_rules_attr_link
+    - ptl_scheme_rules_attr_link
+    - esm_ins_company
+    - qr_barcode_config
+    - jyx_config
+    - jyx_setting
+    - sys_user_jzg_app
+    - sys_dept
+    - sys_user_jzg_info_salesman
+    - dept_tree
+    - dept_path
+    - ptl_agreement_cost_type
+    #- ins_orders
+    - ins_fee_orders
+    - ins_orders_costs
+    - ins_orders_car_info
+    - ins_orders_policy
+    - ins_orders_pdf_url
+    - ins_orders_accidental_driving
+    - ins_orders_clause
+    - ins_orders_tax
+    - ins_task_images
+    - ins_orders_qrcode
+    - ins_order_rights
+    - ins_order_rights_package
+    - ins_orders_kind
+    - sys_relation_person
+    - ins_ply_income_invoice_link
+    - ins_orders_risk
+    - ins_orders_car_user_info
+    - ins_order_adjust
+    - ins_ply_income_invoice
+    - ins_ply_income_invoice_settlement
+    - esm_user_referrer
+    - ins_ply_income_invoice_settlement_file
+    - wechat_customer_service
+    - wechat_customer_service_duty
+    - wechat_customer_service_recording
+    - ins_fee_audit
+    - sys_user_jzg_info_bank_card_record
+    - ptl_agreement_dispatch_rules_attr_link
+    - ptl_agreement_dispatch_action
+    - sys_app_manage
+    - sys_version
+    - ptl_agreement_dispatch_rules_attr_link
+    - ptl_agreement_dispatch_action
+    - ptl_new_car_judge_rules
+    - ptl_new_car_judge_rules
+    - ins_orders_external_policy
+    - t
+
 
 #百度图片识别API
 baidu:

+ 3 - 1
tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml

@@ -199,7 +199,8 @@
         ioc.jq_premium as jqPremium, ioc.sy_premium as syPremium, ioc.jy_premium as jyPremium,
         ioc.sum_premium as sumPremium,sd.name as deptName,ifa.create_time as createTime,
         ifa.create_by as createBy,io.pay_time as payTime, ifa.audit_time as auditTime,
-        ifa.audit_user as auditUser, ifa.refuse
+        ifa.audit_user as auditUser, ifa.refuse,
+        ifo.*
         FROM ins_fee_audit ifa
         LEFT JOIN ins_orders io on ifa.order_no = io.id AND io.is_delete=0
         LEFT JOIN ins_orders_car_info ioci on io.id = ioci.order_no AND ioci.is_delete=0
@@ -212,6 +213,7 @@
         LEFT JOIN sys_user sua on sua.id = pa.custodian_id AND sua.is_delete=0
         LEFT JOIN ins_orders_costs ioc on ioc.order_no = io.id AND ioc.is_delete=0
         LEFT JOIN ins_orders_external_policy ioep on ioep.order_no = io.id AND ioep.is_delete=0
+        LEFT JOIN ins_fee_orders ifo on ifo.order_no  = ifa.order_no  and ifo.is_delete = 0
         <where>
             and ifa.is_delete=0
             <if test="param.receiveUser != null and param.receiveUser != ''">

+ 2 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -120,6 +120,7 @@
         <id property="orderNo" column="order_no" jdbcType="VARCHAR"/>
         <result property="jqScore" column="jq_score" jdbcType="VARCHAR"/>
         <result property="score" column="score" jdbcType="VARCHAR"/>
+        <result property="scoreJson" column="score_json" jdbcType="VARCHAR"     typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
         <result property="syScore" column="sy_score" jdbcType="VARCHAR"/>
         <result property="lossRation" column="loss_ration" jdbcType="VARCHAR"/>
         <result property="jqLossRation" column="jq_loss_ration" jdbcType="VARCHAR"/>
@@ -723,6 +724,7 @@
     <select id="selectOrdersOtherByOrderNo" resultMap="InsOrdersOtherMap">
         SELECT ot.order_no,
         ot.score,
+        ot.score_json,
         ot.jq_score,
         ot.sy_score,
         ot.loss_ration,

+ 2 - 2
tenant/insurance/quotation-taikang/pom.xml

@@ -50,8 +50,8 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
-                    <source>14</source>
-                    <target>14</target>
+                    <source>15</source>
+                    <target>15</target>
                 </configuration>
             </plugin>
         </plugins>

+ 1 - 1
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/build/TaiShanCrawlerQuoteRequestVoBuild.java

@@ -256,7 +256,7 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
 
             // 跳过保额为空的险种,避免数值解析时空指针异常
             if (infoVo.getAmount() == null) {
-                log.warn("泰山报价-跳过保额为空的险种: platformKindCode={}, kindCode={}", kindCode, infoVo.getKindCode());
+                log.info("泰山报价-跳过保额为空的险种: platformKindCode={}, kindCode={}", kindCode, infoVo.getKindCode());
                 continue;
             }
 

+ 6 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java

@@ -10,6 +10,7 @@ import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.quotation.zhongmei.crawler.entity.Response.ZmCrawlerQuotedPriceResponse;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
@@ -121,6 +122,11 @@ public final class ZmCrawlerQuoteResultVoBuild {
             });
             quoteResultsVo.getCosts().setNiPremium(String.valueOf(niPremium));
         }
+        BigDecimal jqPremium = quoteResultsVo.getCosts().getCiPremium() == null || quoteResultsVo.getCosts().getCiPremium().isEmpty() ? new BigDecimal("0.00") : new BigDecimal(quoteResultsVo.getCosts().getCiPremium());
+        BigDecimal syPremium = quoteResultsVo.getCosts().getBiPremium() == null || quoteResultsVo.getCosts().getBiPremium().isEmpty() ? new BigDecimal("0.00") : new BigDecimal(quoteResultsVo.getCosts().getBiPremium());
+        BigDecimal niPremium = quoteResultsVo.getCosts().getNiPremium() == null || quoteResultsVo.getCosts().getNiPremium().isEmpty() ? new BigDecimal("0.00") : new BigDecimal(quoteResultsVo.getCosts().getNiPremium());
+        BigDecimal vVTax = quoteResultsVo.getCosts().getVvTax() == null || quoteResultsVo.getCosts().getVvTax().isEmpty() ? new BigDecimal("0.00") : new BigDecimal(quoteResultsVo.getCosts().getVvTax());
+        quoteResultsVo.getCosts().setSumPremium(String.valueOf(jqPremium.add(syPremium).add(niPremium).add(vVTax)));
     }
 
     public static QuoteResultsVo.ScoreVo buildScore(ZmCrawlerQuotedPriceResponse quotedPriceResponse) {

+ 19 - 5
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java

@@ -300,17 +300,31 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
     }
 
     private static final Pattern DUPLICATE_START_TIME_PATTERN = Pattern.compile("起保日期:(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})");
+    private static final Pattern DUPLICATE_END_TIME_PATTERN_SY = Pattern.compile("终保日期:(\\d{4}-\\d{2}-\\d{2})");
     private String extractDuplicateStartTime(String answer) {
-        Matcher matcher = DUPLICATE_START_TIME_PATTERN.matcher(answer);
-        if (matcher.find()) {
+        // 优先匹配终保日期
+        Matcher matcherEndTime = DUPLICATE_END_TIME_PATTERN_SY.matcher(answer);
+        if (matcherEndTime.find()) {
             // 取出匹配到的时间
-            String timeStr = matcher.group(1);
+            String timeStr = matcherEndTime.group(1) + " 00:00:00";
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
             LocalDateTime dateTime;
             LocalDateTime localDateTime = LocalDateTime.parse(timeStr, formatter);
-            LocalDateTime afterAdd = localDateTime.plusYears(1);
-            return afterAdd.format(formatter);
+            return localDateTime.format(formatter);
+        } else {
+            // 匹配不到终保日期去匹配起保日期
+            Matcher matcher = DUPLICATE_START_TIME_PATTERN.matcher(answer);
+            if (matcher.find()) {
+                // 取出匹配到的时间
+                String timeStr = matcher.group(1);
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+                LocalDateTime dateTime;
+                LocalDateTime localDateTime = LocalDateTime.parse(timeStr, formatter);
+                LocalDateTime afterAdd = localDateTime.plusYears(1);
+                return afterAdd.format(formatter);
+            }
         }
         return null;
     }

+ 3 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AccountCardController.java

@@ -38,6 +38,7 @@ public class AccountCardController extends BaseController {
     @PostMapping("/cardList")
     @Operation(summary = "账户列表分页")
     public HttpResult<Page<AccountCardVo>> cardList(@RequestBody AccountCardParam param){
+        param.setSystemCode(getSystemCode());
         Page<AccountCardVo> result = accountCardService.queryPage(param);
         return HttpResult.ok(result);
     }
@@ -69,6 +70,7 @@ public class AccountCardController extends BaseController {
         if(endDate.isBefore(startDate) || startDate.isEqual(endDate)){
             AssertionUtils.isFail(false,"生效时间不能大于失效时间!");
         }
+        param.setSystemCode(getSystemCode());
         accountCardService.cardAdd(param);
         return HttpResult.ok("新增成功");
     }
@@ -89,6 +91,7 @@ public class AccountCardController extends BaseController {
         if(endDate.isBefore(startDate) || startDate.isEqual(endDate)){
             AssertionUtils.isFail(false,"生效时间不能大于失效时间!");
         }
+        param.setSystemCode(getSystemCode());
         accountCardService.cardEdit(param);
         return HttpResult.ok("修改成功");
     }

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AccountController.java

@@ -29,6 +29,7 @@ public class AccountController extends BaseController {
     @PostMapping("/accountPage")
     @Operation(summary = "企业管理列表分页")
     public HttpResult<Page<AccountVo>> accountPage(@RequestBody AccountParam param){
+        param.setSystemCode(getSystemCode());
         Page<AccountVo> result = accountService.queryPage(param);
         return HttpResult.ok(result);
     }
@@ -40,6 +41,7 @@ public class AccountController extends BaseController {
     @PostMapping("/accountList")
     @Operation(summary = "企业管理列表")
     public HttpResult accountList(@RequestBody AccountParam param){
+        param.setSystemCode(getSystemCode());
         List<AccountVo> result = accountService.queryList(param);
         return HttpResult.ok(result);
     }
@@ -65,6 +67,7 @@ public class AccountController extends BaseController {
     @Operation(summary = "来往企业添加")
     @PostMapping("/accountAdd")
     public HttpResult<String> accountAdd(@Validated @RequestBody AccountAddParam param) {
+        param.setSystemCode(getSystemCode());
         accountService.cardAdd(param);
         return HttpResult.ok("新增成功");
     }
@@ -77,6 +80,7 @@ public class AccountController extends BaseController {
     @Operation(summary = "来往企业修改")
     @PostMapping("/accountEdit")
     public HttpResult accountEdit(@Validated @RequestBody AccountEditParam param) {
+        param.setSystemCode(getSystemCode());
         accountService.accountEdit(param);
         return HttpResult.ok("修改成功");
     }

+ 12 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AmountAuditingController.java

@@ -119,6 +119,18 @@ public class AmountAuditingController extends BaseController {
         return HttpResult.ok(amountAuditVoPage);
     }
 
+    /**
+     * 导出我的付款(待付款/已付款/拒绝付款)
+     *
+     * @author lipf
+     * @date 2026/6/17 9:35
+     */
+    @PostMapping("/exportMyPayment")
+    @Operation(summary = "导出我的付款(待付款/已付款/拒绝付款)")
+    public HttpResult<String> exportMyPayment(@RequestBody AmountAuditParam param) {
+        return HttpResult.ok(sysAmountAuditingService.exportMyPayment(param));
+    }
+
     /**
      * 导出业务员收支明细
      *

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -91,6 +91,7 @@ public class ReceivableController {
         if (StrUtil.isBlank(receivableQueryVo.getAgreementType())){
             receivableQueryVo.setAgreementType("2");
         }
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         HttpResult<Page<InsPlyIncome>> ok = HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
         Page<InsPlyIncome> data = ok.getData();
         List<InsPlyIncomeOrder> receivablePageIds = receivableService.getReceivablePageIds(receivableQueryVo);
@@ -107,6 +108,7 @@ public class ReceivableController {
         if (StrUtil.isBlank(receivableQueryVo.getAgreementType())){
             receivableQueryVo.setAgreementType("2");
         }
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         HttpResult<Page<InsPlyIncome>> ok = HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
         Page<InsPlyIncome> data = ok.getData();
         if (null == data || CollUtil.isEmpty(data.getRecords())){
@@ -167,6 +169,7 @@ public class ReceivableController {
             receivableQueryVo.setAgreementType("2");
         }
         //return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         HttpResult<Page<InsPlyIncome>> ok = HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
         Page<InsPlyIncome> data = ok.getData();
         List<InsPlyIncomeOrder> receivablePageIds = receivableService.getReceivablePageIds(receivableQueryVo);
@@ -182,6 +185,7 @@ public class ReceivableController {
         if (StrUtil.isBlank(receivableQueryVo.getAgreementType())) {
             receivableQueryVo.setAgreementType("2");
         }
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         HttpResult<Page<InsPlyIncome>> ok = HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
         Page<InsPlyIncome> data = ok.getData();
         if (null == data || CollUtil.isEmpty(data.getRecords())){
@@ -197,6 +201,7 @@ public class ReceivableController {
     public HttpResult<InsPlyIncomeVO> getJyCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("3");
         receivableQueryVo.setAgreementType("2");
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         HttpResult<Page<InsPlyIncome>> ok = HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
         Page<InsPlyIncome> data = ok.getData();
         List<InsPlyIncomeOrder> receivablePageIds = receivableService.getReceivablePageIds(receivableQueryVo);
@@ -208,6 +213,7 @@ public class ReceivableController {
     public HttpResult<InsPlyIncomeVO> getJyOtherReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("2");
         receivableQueryVo.setAgreementType("2");
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         HttpResult<Page<InsPlyIncome>> ok = HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
         Page<InsPlyIncome> data = ok.getData();
         List<InsPlyIncomeOrder> receivablePageIds = receivableService.getReceivablePageIds(receivableQueryVo);
@@ -432,6 +438,7 @@ public class ReceivableController {
         if (StrUtil.isBlank(receivableQueryVo.getAgreementType())){
             receivableQueryVo.setAgreementType("1");
         }
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         Page<InsPlyIncome> data = receivableService.getPlatFormReceivableList(receivableQueryVo);
         List<InsPlyIncomeOrder> receivablePageIds = receivableService.getReceivablePageIds(receivableQueryVo);
         //满足条件的的总的应收
@@ -458,6 +465,7 @@ public class ReceivableController {
         if (StrUtil.isBlank(receivableQueryVo.getAgreementType())){
             receivableQueryVo.setAgreementType("1");
         }
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         Page<InsPlyIncome> data = receivableService.getPlatFormReceivableList(receivableQueryVo);
         if (null == data || CollUtil.isEmpty(data.getRecords())){
             return HttpResult.ok(BigDecimal.ZERO);

+ 2 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/NewCarJudgeRulesMapper.java

@@ -6,8 +6,9 @@ import com.jzg.commons.entity.po.PtlAgreementCostRule;
 import com.jzg.commons.entity.po.PtlNewCarJudgeRules;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 @Mapper
 public interface NewCarJudgeRulesMapper extends BaseMapper<PtlNewCarJudgeRules> {
-    public Page<PtlNewCarJudgeRules> getNewCarList(Page page);
+    public Page<PtlNewCarJudgeRules> getNewCarList(Page page,  @Param("systemCode") String systemCode);
 }

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysAmountAuditingService.java

@@ -101,4 +101,12 @@ public interface SysAmountAuditingService extends IService<SysAmountAuditing> {
      */
     String exportYwyIORecs(YwyIOParam ywyIOParam);
 
+    /**
+     * 导出我的付款列表
+     *
+     * @param param 导出参数
+     * @author lipf
+     * @date 2026/6/17 9:19
+     */
+    String exportMyPayment(AmountAuditParam param);
 }

+ 17 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/NewCarJudgeRulesServiceImpl.java

@@ -23,12 +23,16 @@ import com.jzg.organization.mapper.SysUploadFilesMapper;
 import com.jzg.organization.mapper.SysUserMapper;
 import com.jzg.organization.service.*;
 import com.thoughtworks.xstream.mapper.LambdaMapper;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -40,8 +44,12 @@ import static java.util.Objects.nonNull;
 
 
 @Service
+@RequiredArgsConstructor
 public class NewCarJudgeRulesServiceImpl extends ServiceImpl<NewCarJudgeRulesMapper, PtlNewCarJudgeRules>
     implements NewCarJudgeRulesService {
+
+    private final BaseController baseController;
+
     /**
      * 根据保险公司查询新旧车规则
      * @param companyId
@@ -107,7 +115,15 @@ public class NewCarJudgeRulesServiceImpl extends ServiceImpl<NewCarJudgeRulesMap
 //                        .eq(nonNull(newCarQuery.getCompanyId()),
 //                                PtlNewCarJudgeRules::getCompanyId,
 //                                newCarQuery.getCompanyId()));
-        Page<PtlNewCarJudgeRules> newCarList = baseMapper.getNewCarList(newCarQuery.getPage());
+        String systemCode = "";
+        //如果是APP登录的话 则传递SystemCode的头部字段
+        if (baseController.getUserSystemCode().equals("APP")) {
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+            systemCode = request.getHeader("system_code");
+        } else {
+            systemCode = baseController.getUserSystemCode();
+        }
+        Page<PtlNewCarJudgeRules> newCarList = baseMapper.getNewCarList(newCarQuery.getPage(), systemCode);
         return newCarList;
     }
 

+ 22 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -591,6 +591,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
     @Override
     public List<InsPlyIncome> getReceivableList(ReceivableQueryVo receivableQueryVo) {
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         // modify by lipf, 和查询调用同一个查询mapper,并且将分页参数进行调整 2026年6月9日10:03:13
         receivableQueryVo.setPages(1);
         receivableQueryVo.setSize(Integer.MAX_VALUE);
@@ -2664,6 +2665,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         if("30".equals(invoiceRecordQueryVo.getSettlementStatus())){
             invoiceRecordQueryVo.setSettlementStatus(null);
         }
+        invoiceRecordQueryVo.setSystemCode(baseController.getSystemCode());
         Page<InvoiceRecordResult> invoiceRecordList = baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
         List<InvoiceRecordResult> records = invoiceRecordList.getRecords();
         if(CollUtil.isNotEmpty(records)){
@@ -2757,6 +2759,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportSuperviseJyExcel(ReceivableQueryVo receivableQueryVo) throws IOException {
         verifyUploadPath();
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         List<ExportSuperviseJyExcelDto> exportSuperviseJyExcelDtos = baseMapper.getSuperviseJyExcelDtos(receivableQueryVo);
         exportSuperviseJyExcelDtos.forEach(dto -> {
             switch (dto.getEntryStatus()) {
@@ -2779,6 +2782,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("查询结算手续费结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         // 设置空条件
         setNoneCondition(settlementQueryVo);
+        // 设置租户
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.superviseSettlementExcelDtos(page, settlementQueryVo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
@@ -2796,6 +2801,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("查询平台结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         // 设置空条件
         setNoneCondition(settlementQueryVo);
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.platformSettlementExcelDtos(page, settlementQueryVo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
@@ -2813,6 +2819,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("查询平台结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         // 设置空条件
         setNoneCondition(settlementQueryVo);
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.followSettlementExcelDtos(page, settlementQueryVo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
@@ -2884,6 +2891,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportSuperviseSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.superviseSettlementExcelDtos(page, settlementQueryVo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
@@ -2900,6 +2908,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportPlatformSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.platformSettlementExcelDtos(page, settlementQueryVo);
         // 补充、转换列表的数据
         supplementaryListData(exportSuperviseSettlementExcelDtos);
@@ -2931,6 +2940,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     public String exportPlatFormReceivable(ReceivableQueryVo receivableQueryVo) {
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         List<InsPlyIncome> receivableList = baseMapper.getReceivableList(receivableQueryVo);
 
         // 调用动态导出
@@ -2944,6 +2954,7 @@ 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());
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
         exportSuperviseSettlementDetailExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -2969,6 +2980,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportSuperviseSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
         exportSuperviseSettlementDetailExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -2995,6 +3007,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportSuperviseSettlementDetailJyExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementDetailJyExcelDto> exportSuperviseSettlementDetailJyExcelDtos = baseMapper.getSuperviseSettlementDetailJyExcelDtos(page, settlementQueryVo);
         exportSuperviseSettlementDetailJyExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -3018,6 +3031,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportOtherExcel(ReceivableQueryVo receivableQueryVo) throws IOException {
         verifyUploadPath();
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         // modify by lipf, 2026年6月9日11:57:39 调用和查询相同的接口,保证数据一致性
         //List<ExportOtherExcelDto> exportOtherExcelDtos = baseMapper.getOtherExcelDtos(receivableQueryVo);
         receivableQueryVo.setSize(Integer.MAX_VALUE);
@@ -3048,6 +3062,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportOtherJyExcel(ReceivableQueryVo receivableQueryVo) throws IOException {
         verifyUploadPath();
+        receivableQueryVo.setSystemCode(baseController.getSystemCode());
         List<ExportOtherJyExcelDto> exportOtherJyExcelDtos = baseMapper.getOtherJyExcelDtos(receivableQueryVo);
         exportOtherJyExcelDtos.forEach(dto -> {
             switch (dto.getEntryStatus()) {
@@ -3061,6 +3076,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
     @Override
     public Page<ExportOtherSettlementExcelDto> exportOtherSettlement(Page page, SettlementQueryVo settlementQueryVo) {
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportOtherSettlementExcelDto> exportOtherSettlementExcelDtos = baseMapper.getOtherSettlementExcelDtos(page, settlementQueryVo);
         exportOtherSettlementExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -3088,6 +3104,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportOtherSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportOtherSettlementExcelDto> exportOtherSettlementExcelDtos = baseMapper.getOtherSettlementExcelDtos(page, settlementQueryVo);
         exportOtherSettlementExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -3108,6 +3125,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
     @Override
     public Page<ExportOtherSettlementDetailExcelDto> otherSettlementDetail(Page page, SettlementQueryVo settlementQueryVo) {
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportOtherSettlementDetailExcelDto> otherSettlementDetail = baseMapper.getOtherSettlementDetailExcelDtos(page, settlementQueryVo);
         otherSettlementDetail.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -3130,6 +3148,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportOtherSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportOtherSettlementDetailExcelDto> exportOtherSettlementDetailExcelDtos = baseMapper.getOtherSettlementDetailExcelDtos(page, settlementQueryVo);
         exportOtherSettlementDetailExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -3157,6 +3176,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public void exportOtherSettlementDetailJyExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
         verifyUploadPath();
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportOtherSettlementDetailJyExcelDto> exportOtherSettlementDetailJyExcelDtos = baseMapper.getOtherSettlementDetailJyExcelDtos(page, settlementQueryVo);
         exportOtherSettlementDetailJyExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -3488,6 +3508,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public Page<ReceiverSettlementReportDto> receiverSettlementReport(Page page, SettlementReportQueryVo settlementReportQueryVo) {
         log.info("平台协议应收-结算报表-对接人结算报表查询。 settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
+        settlementReportQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ReceiverSettlementReportDto> receiverSettlementReport = baseMapper.getReceiverSettlementReport(page, settlementReportQueryVo);
         List<ReceiverSettlementReportDto> records = receiverSettlementReport.getRecords();
         if(CollUtil.isNotEmpty(records)) {
@@ -3513,6 +3534,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
     @Override
     public void exportReceiverSettlementReportExcel(Page page, SettlementReportQueryVo settlementReportQueryVo) {
+        settlementReportQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ReceiverSettlementReportDto> receiverSettlementReport = baseMapper.getReceiverSettlementReport(page, settlementReportQueryVo);
         List<ReceiverSettlementReportDto> receiverSettlementReportDtos = receiverSettlementReport.getRecords();
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ReceiverSettlementReportDto.class, receiverSettlementReportDtos, "对接人结算报表");

+ 21 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java

@@ -439,6 +439,27 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         );
     }
 
+    /**
+     * 导出我的付款列表
+     *
+     * @param param 导出参数
+     * @author lipf
+     * @date 2026/6/17 9:19
+     */
+    @Override
+    public String exportMyPayment(AmountAuditParam param) {
+        log.info("导出我的付款的tab页面的数据.param=[{}]",JSONUtil.toJsonStr(param));
+        Page<AmountAuditVo> amountAuditVoPage = this.myPayment(param);
+        List<AmountAuditVo> records = amountAuditVoPage.getRecords();
+        log.info("导出我的付款的tab页面的数据.param=[{}].导出数据[{}]条",JSONUtil.toJsonStr(param), CollUtil.size(records));
+        // 调用动态导出
+        return exportBaseService.upLoadFile(
+                AmountAuditVo.class,
+                records,
+                "我的付款-导出-" + Instant.now()
+        );
+    }
+
     /**
      * 导出业务员收入支出明显
      *

+ 2 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -217,6 +217,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 jzgInfoId = userInfoJzgInfo.getId();
             }
             log.info("查看成员下的业务员信息:成员的序号:jzgInfoId=[{}]", jzgInfoId);
+            // modify by lipf 查询成员下业务员的时候,不进行分页
+            page.setSize(Long.MAX_VALUE);
             userInfoList = sysUserJzgInfoMapper.queryYwy(page, sysUserInfoListVo, systemCode, jzgInfoId
             );
         }else if("1".equals(sysUserInfoListVo.getIsMember())){

+ 0 - 3
tenant/organization/src/main/resources/application.yml

@@ -84,9 +84,6 @@ tenant:
     - ins_ply_income_invoice_link
     - ins_orders_risk
     - ins_orders_car_user_info
-    - ins_ply_income
-    - ins_ply_income_invoice
-    - ins_ply_income_invoice_settlement
     - esm_user_referrer
     - ins_ply_income_invoice_settlement_file
     - wechat_customer_service

+ 1 - 0
tenant/organization/src/main/resources/mapper/InvAccountCardMapper.xml

@@ -54,6 +54,7 @@
         LEFT JOIN inv_account ia on ia.id = iac.account_id AND ia.is_delete = 0
         <where>
             iac.is_delete = 0
+            and iac.system_code = #{param.systemCode}
             <if test="param.accountName != null and param.accountName != ''">
                 and ia.account_name like CONCAT('%',#{param.accountName}, '%')
             </if>

+ 2 - 0
tenant/organization/src/main/resources/mapper/InvAccountMapper.xml

@@ -38,6 +38,7 @@
         FROM inv_account ia
         <where>
             ia.is_delete = 0
+            and ia.system_code = #{param.systemCode}
             <if test="param.outerFlag != null ">
                 and ia.outer_flag = #{param.outerFlag}
             </if>
@@ -53,6 +54,7 @@
         FROM inv_account ia
         <where>
             ia.is_delete = 0
+            and ia.system_code = #{param.systemCode}
             <if test="param.outerFlag != null ">
                 and ia.outer_flag = #{param.outerFlag}
             </if>

+ 1 - 0
tenant/organization/src/main/resources/mapper/NewCarJudgeRulesMapper.xml

@@ -12,6 +12,7 @@
         <where>
             pncjr.is_delete = 0
         </where>
+        and pncjr.system_code = #{systemCode}
     </select>
 
 </mapper>

+ 14 - 0
tenant/organization/src/main/resources/mapper/PtlAgreementCostMapper.xml

@@ -297,6 +297,20 @@
             tr.is_delete = 0
             AND tr.ptl_agreement_cost_id = #{costId}
         </where>
+
+        GROUP BY tr.id,
+        tr.ptl_agreement_cost_id,
+        tr.rules_id,
+        tr.attr_id,
+        tr.attr_code,
+        tr.min,
+        tr.max,
+        tr.operator,
+        tr.batch,
+        a.attr_name,
+        a.attr_type,
+        a.attr_group,
+        a.dict_id
     </select>
 
     <select id="selectCostType" resultMap="costType">

+ 18 - 0
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -229,6 +229,9 @@
         (COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0)) AS superviseCostsPremiums,
         -- 3. 总应收跟单费 (修复了括号位置错误,并为最后一个字段补充了默认值 0)
         (COALESCE(ipi.jq_other_costs_premiums, 0) + COALESCE(ipi.sy_other_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0)) AS otherCostsPremiums,
+        ipi.jq_supervise_costs_premiums,
+        ipi.sy_supervise_costs_premiums,
+        ipi.jy_supervise_costs_premiums,
         io.product_name,
         iocui.name AS insuredPerson,
         ipi.jq_premium,
@@ -290,6 +293,7 @@
     </select>
     <select id="getReceivablePage" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
         <include refid="query"/>
+        and ipi.system_code = #{receivableQueryVo.systemCode}
         <if test="receivableQueryVo.invoiceId != null and receivableQueryVo.invoiceId != ''" >
             AND ipi.id  in (
             select ipiil.income_id  from ins_ply_income_invoice_link ipiil where ipiil.invoice_id  = #{receivableQueryVo.invoiceId} and ipiil.is_delete = 0
@@ -404,6 +408,7 @@
         <where>
             ipi.is_delete  = 0
             AND ipi.settlement_status = '0'
+            AND ipi.system_code = #{receivableQueryVo.systemCode}
             <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
                 AND ipi.supervise_settlement = 0
             </if>
@@ -480,6 +485,7 @@
         LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
         <where>
             ipi.is_delete = 0
+            AND ipi.system_code = #{receivableQueryVo.systemCode}
             AND NOT EXISTS ( SELECT 1 FROM ins_ply_income_invoice_link ipil WHERE ipil.income_id = ipi.id AND ipil.is_delete = 0 )
             <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
                 AND ipi.supervise_settlement = 0
@@ -547,6 +553,7 @@
         left join ptl_agreement agree on io.agreement_id = agree.id AND agree.is_delete = 0
         <where>
             ipiis.is_delete = 0
+            AND ipiis.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -628,6 +635,7 @@
         LEFT JOIN ptl_agreement agree ON io.agreement_id = agree.id AND agree.is_delete = 0
         <where>
             ipiis.is_delete = 0
+            AND ipiis.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -695,6 +703,7 @@
         LEFT JOIN esm_ins_company eic ON ipii.company_id = eic.id  AND eic.is_delete = 0
         <where>
             ipiis.is_delete = 0
+            AND ipiis.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -774,6 +783,7 @@
         LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
         <where>
             ipii.is_delete = 0
+            AND ipii.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
                 AND ipiis.id = #{settlementQueryVo.settlementId}
             </if>
@@ -839,6 +849,7 @@
         LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
         <where>
             ipii.is_delete = 0
+            AND ipii.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -903,6 +914,7 @@
         LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
         <where>
             ipi.is_delete = 0
+            AND ipi.system_code = #{receivableQueryVo.systemCode}
             <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
                 AND ipi.supervise_settlement = 0
             </if>
@@ -959,6 +971,7 @@
         LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
         <where>
             ipi.is_delete = 0
+            AND ipi.system_code = #{receivableQueryVo.systemCode}
             <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
                 AND ipi.supervise_settlement = 0
             </if>
@@ -1009,6 +1022,7 @@
         LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
         <where>
             ipiis.is_delete = 0
+            AND ipiis.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -1059,6 +1073,7 @@
         LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
         <where>
             ipii.is_delete = 0
+            AND ipii.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -1121,6 +1136,7 @@
         LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
         <where>
             ipii.is_delete = 0
+            AND ipii.system_code = #{settlementQueryVo.systemCode}
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
@@ -1266,6 +1282,7 @@
         LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
         <where>
             ipii.is_delete = 0
+            AND ipii.system_code = #{invoiceRecordQueryVo.systemCode}
             <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
                 AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
             </if>
@@ -1583,6 +1600,7 @@
         <where>
             ipi.is_delete = 0
             AND ipi.agreement_type = '1'
+            AND ipi.system_code = #{settlementReportQueryVo.systemCode}
             <if test="settlementReportQueryVo.companyId != null and settlementReportQueryVo.companyId != ''">
                 AND ipi.company_id = #{settlementReportQueryVo.companyId}
             </if>

+ 9 - 2
tenant/organization/src/main/resources/mapper/SysAmountAuditingMapper.xml

@@ -47,7 +47,10 @@
         sujim.name as managerName,sum.mobile as managerMobile,saa.create_time as createTime,
         saa.amount, saa.balance_amount as balanceAmount,saa.account_name AS accountName,
         saa.bank_card_num as bankCardNum, saa.bank_name as bankName, saa.bank_num as bankNum, suji.id as userJzgInfoId,
-        saa.payment_time as paymentTime, saa.reject_reason as rejectReason, saa.reject_time as rejectTime, saa.reject_person as rejectPerson
+        saa.payment_time as paymentTime, saa.reject_reason as rejectReason, saa.reject_time as rejectTime, saa.reject_person as rejectPerson,
+        saa.account_id, saa.auditing_status,
+        (select iac.card_name  from inv_account_card iac where iac.id = saa.account_id) as pay_account_name,
+        (select iac.bank_card_num   from inv_account_card iac where iac.id =  saa.account_id ) as pay_account_bank_no
         FROM sys_amount_auditing saa
         LEFT JOIN sys_user_jzg_info suji on saa.user_id = suji.user_id AND suji.is_delete = 0
         LEFT JOIN sys_user su on su.id = saa.user_id AND su.is_delete = 0
@@ -164,7 +167,11 @@
         saa.bank_num AS bankNum,
         saa.user_id,
         saa.system_code,
-        saa.auditing_time
+        saa.auditing_time,
+        saa.reject_reason, saa.reject_time, saa.reject_person,
+        saa.account_id, saa.auditing_status,
+        (select iac.card_name  from inv_account_card iac where iac.id = saa.account_id) as pay_account_name,
+        (select iac.bank_card_num   from inv_account_card iac where iac.id =  saa.account_id ) as pay_account_bank_no
         FROM sys_amount_auditing saa
         LEFT JOIN sys_user_jzg_info suji on saa.user_id = suji.user_id AND suji.is_delete = 0
         LEFT JOIN sys_user su on su.id = saa.user_id AND su.is_delete = 0