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

Merge remote-tracking branch 'origin/master'

wanghao 3 месяцев назад
Родитель
Сommit
daa5028745
29 измененных файлов с 540 добавлено и 175 удалено
  1. 9 0
      commons/src/main/java/com/jzg/commons/entity/finance/po/InsFeeFollowOrder.java
  2. 3 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/AddReceivableVo.java
  3. 9 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InsFeeFollowOrderVo.java
  4. 203 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java
  5. 4 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCostRule.java
  6. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java
  7. 37 0
      commons/src/main/java/com/jzg/commons/entity/vo/AmountAuditVo.java
  8. 4 0
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Response/HtCrawlerCarQueryResponse.java
  9. 52 20
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java
  10. 37 18
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java
  11. 0 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  12. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java
  13. 21 16
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java
  14. 2 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  15. 3 91
      tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml
  16. 3 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml
  17. 4 0
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java
  18. 1 8
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java
  19. 5 0
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java
  20. 12 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AmountAuditingController.java
  21. 1 0
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  22. 1 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java
  23. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  24. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysAmountAuditingService.java
  25. 75 16
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  26. 21 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java
  27. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  28. 4 0
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml
  29. 9 2
      tenant/organization/src/main/resources/mapper/SysAmountAuditingMapper.xml

+ 9 - 0
commons/src/main/java/com/jzg/commons/entity/finance/po/InsFeeFollowOrder.java

@@ -45,6 +45,15 @@ public class InsFeeFollowOrder extends BaseModel {
     @Schema(description = "本次开票金额")
     @Schema(description = "本次开票金额")
     private BigDecimal invoicedAmountTime;
     private BigDecimal invoicedAmountTime;
 
 
+    @Schema(description = "对账金额")
+    private BigDecimal reconciliationAmount;
+
+    @Schema(description = "虚增差额")
+    private BigDecimal falselyIncreasedDifference;
+
+    @Schema(description = "虚增原因")
+    private String falselyIncreasedReason;
+
     @Schema(description = "系统编码")
     @Schema(description = "系统编码")
     private String systemCode;
     private String systemCode;
 
 

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

@@ -22,4 +22,7 @@ public class AddReceivableVo {
     @Schema(description = "查询")
     @Schema(description = "查询")
     private String queryType;
     private String queryType;
 
 
+    @Schema(description = "租户代码")
+    private String systemCode;
+
 }
 }

+ 9 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InsFeeFollowOrderVo.java

@@ -47,6 +47,15 @@ public class InsFeeFollowOrderVo implements Serializable {
     @Schema(description = "未开票金额")
     @Schema(description = "未开票金额")
     private BigDecimal uninvoiced;
     private BigDecimal uninvoiced;
 
 
+    @Schema(description = "对账金额")
+    private BigDecimal reconciliationAmount;
+
+    @Schema(description = "虚增差额")
+    private BigDecimal falselyIncreasedDifference;
+
+    @Schema(description = "虚增原因")
+    private String falselyIncreasedReason;
+
     @Schema(description = "本次开票金额")
     @Schema(description = "本次开票金额")
     private BigDecimal invoicedAmountTime;
     private BigDecimal invoicedAmountTime;
 
 

+ 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;
 package com.jzg.commons.entity.orders.vo;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.BaseModel;
 import com.jzg.commons.core.base.BaseModel;
@@ -24,11 +25,13 @@ public class FeeAuditVo extends BaseModel {
     @Schema(description = "保险公司")
     @Schema(description = "保险公司")
     private String companyName;
     private String companyName;
 
 
+    @ExcelIgnore
     @Schema(description = "保险公司ID")
     @Schema(description = "保险公司ID")
     private String companyId;
     private String companyId;
     /**
     /**
      * 保险公司名称及父级的名称,例如
      * 保险公司名称及父级的名称,例如
      */
      */
+    @ExcelIgnore
     @Schema(description = "保险公司名称及父级的名称")
     @Schema(description = "保险公司名称及父级的名称")
     private String companyALlName;
     private String companyALlName;
 
 
@@ -141,12 +144,212 @@ public class FeeAuditVo extends BaseModel {
     @Schema(description = "权益金额")
     @Schema(description = "权益金额")
     private BigDecimal equityAmount;
     private BigDecimal equityAmount;
 
 
+    @ExcelIgnore
     @Schema(description = "是否是疑问单")
     @Schema(description = "是否是疑问单")
     private int problem;
     private int problem;
 
 
+    @ExcelProperty("设置为疑问单的原因")
     @Schema(description = "设置为疑问单的原因")
     @Schema(description = "设置为疑问单的原因")
     private String problemReason;
     private String problemReason;
 
 
+    @ExcelProperty("设为疑问单的时间")
     @Schema(description = "设为疑问单的时间")
     @Schema(description = "设为疑问单的时间")
     private String problemTime;
     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 io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.io.Serial;
+
 @Data
 @Data
 @Schema(description = "协议费用管理规则")
 @Schema(description = "协议费用管理规则")
 @TableName("ptl_agreement_cost_rule")
 @TableName("ptl_agreement_cost_rule")
 public class PtlAgreementCostRule extends BaseModel {
 public class PtlAgreementCostRule extends BaseModel {
 
 
+    @Serial
+    private static final long serialVersionUID = 6453347371073301817L;
     @TableId(type = IdType.ASSIGN_ID)
     @TableId(type = IdType.ASSIGN_ID)
     private String id;
     private String id;
 
 

+ 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 io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.io.Serial;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 
 
@@ -12,6 +13,8 @@ import java.time.LocalDateTime;
 @Data
 @Data
 public class AgreementVo extends BaseModel {
 public class AgreementVo extends BaseModel {
 
 
+    @Serial
+    private static final long serialVersionUID = -7102028681863699045L;
     /** 主键 */
     /** 主键 */
     @Schema(description = "主键")
     @Schema(description = "主键")
     private String id;
     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;
 package com.jzg.commons.entity.vo;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -11,12 +12,35 @@ import lombok.EqualsAndHashCode;
 import java.io.Serial;
 import java.io.Serial;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 
 @EqualsAndHashCode(callSuper = true)
 @EqualsAndHashCode(callSuper = true)
 @Schema(description = "提现申请表VO")
 @Schema(description = "提现申请表VO")
 @Data
 @Data
 public class AmountAuditVo  extends BaseModel {
 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
     @Serial
     private static final long serialVersionUID = 4658187667789639800L;
     private static final long serialVersionUID = 4658187667789639800L;
     @ExcelProperty("主键")
     @ExcelProperty("主键")
@@ -107,17 +131,30 @@ public class AmountAuditVo  extends BaseModel {
     @Schema(description = "驳回人")
     @Schema(description = "驳回人")
     private String rejectPerson;
     private String rejectPerson;
 
 
+    @ExcelIgnore
     @Schema(description = "提现人")
     @Schema(description = "提现人")
     private String withdrawalRequester;
     private String withdrawalRequester;
 
 
+    @ExcelProperty("提现时间")
     @Schema(description = "提现时间")
     @Schema(description = "提现时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime withdrawalRequestTime;
     private LocalDateTime withdrawalRequestTime;
 
 
+    @ExcelProperty("审核时间")
     @Schema(description = "审核时间")
     @Schema(description = "审核时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime auditingTime;
     private LocalDateTime auditingTime;
 
 
     @Schema(description = "凭证号")
     @Schema(description = "凭证号")
+    @ExcelProperty("凭证号")
     private String voucherId;
     private String voucherId;
+
+    @Schema(description = "付款账号简称")
+    @ExcelProperty("付款账号简称")
+    private String payAccountName;
+
+    @Schema(description = "付款账号的银行卡")
+    @ExcelProperty("付款账号的银行卡")
+    private String payAccountBankNo;
+
 }
 }

+ 4 - 0
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Response/HtCrawlerCarQueryResponse.java

@@ -1,8 +1,10 @@
 package com.jzg.quotation.huatai.crawler.entity.Response;
 package com.jzg.quotation.huatai.crawler.entity.Response;
 
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quotation.commons.filter.CarModelsFilter;
 import com.jzg.quotation.commons.filter.CarModelsFilter;
 import lombok.Data;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 
 import java.io.Serial;
 import java.io.Serial;
 import java.io.Serializable;
 import java.io.Serializable;
@@ -14,6 +16,8 @@ import java.util.List;
  * @date: 2025/4/15 10:03
  * @date: 2025/4/15 10:03
  **/
  **/
 @Data
 @Data
+@NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class HtCrawlerCarQueryResponse implements Serializable {
 public class HtCrawlerCarQueryResponse implements Serializable {
     @Serial
     @Serial
     private static final long serialVersionUID = -5451109570218394790L;
     private static final long serialVersionUID = -5451109570218394790L;

+ 52 - 20
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java

@@ -2,6 +2,8 @@ package com.jzg.quotation.huatai.crawler.service.Impl;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.jzg.commons.constants.ProductsType;
 import com.jzg.commons.constants.ProductsType;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
@@ -325,13 +327,35 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         //车辆查询
         //车辆查询
         HtCrawlerCarQueryResponse.DataDTO dataDTO = req.carQuery(
         HtCrawlerCarQueryResponse.DataDTO dataDTO = req.carQuery(
                 new HtCrawlerCarQueryRequest(car, modelcodexh), req.getHeaders1(), car);
                 new HtCrawlerCarQueryRequest(car, modelcodexh), req.getHeaders1(), car);
-        //过滤车型
+        //过滤车辆
         HtCrawlerCarQueryResponse.DataDTO.DataListDTO carDTO = CarModelsFilterUtils.to(dataDTO.getDatalist(), car);
         HtCrawlerCarQueryResponse.DataDTO.DataListDTO carDTO = CarModelsFilterUtils.to(dataDTO.getDatalist(), car);
         log.info("过滤后的车型carDTO: {}", JSONObject.toJSONString(carDTO));
         log.info("过滤后的车型carDTO: {}", JSONObject.toJSONString(carDTO));
         //保存车辆信息
         //保存车辆信息
         executeSaveCarQuery(carDTO, dataDTO, car, cookie);
         executeSaveCarQuery(carDTO, dataDTO, car, cookie);
         //车型查询
         //车型查询
-        executeCarModelCodexhQuery(carDTO, car, cookie, quotationNo);
+        String carData = executeCarModelCodexhQuery(carDTO, car, cookie, quotationNo);
+        // 核心:关闭「未知字段抛出异常」,优先级 > 类注解
+        MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        // 可选:兼容空字符串、大小写字段(对接第三方接口常用)
+        MAPPER.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
+        Map<String, Object> rootMap = MAPPER.readValue(carData, new TypeReference<Map<String, Object>>() {});
+        String datalistStr = (String) rootMap.get("datalist");
+        String datalist2Str = (String) rootMap.get("datalist2");
+        if (StringUtils.hasText(datalistStr) && StringUtils.hasText(datalist2Str)) {
+            List<HtCrawlerCarQueryResponse.DataDTO.DataListDTO> dataList = new ArrayList<>();
+            if (StringUtils.hasText(datalistStr)) {
+                dataList = MAPPER.readValue(datalistStr, new TypeReference<List<HtCrawlerCarQueryResponse.DataDTO.DataListDTO>>() {});
+            }
+            List<HtCrawlerCarQueryResponse.DataDTO.DataList2DTO> dataList2 = new ArrayList<>();
+            if (StringUtils.hasText(datalist2Str)) {
+                dataList2 = MAPPER.readValue(datalist2Str, new TypeReference<List<HtCrawlerCarQueryResponse.DataDTO.DataList2DTO>>() {});
+            }
+            dataDTO = new HtCrawlerCarQueryResponse.DataDTO();
+            dataDTO.setDatalist(dataList);
+            dataDTO.setDatalist2(dataList2);
+            //过滤车型
+            carDTO = CarModelsFilterUtils.to(dataDTO.getDatalist(), car);
+        }
         //额外请求
         //额外请求
         executeMessageCentreTimeBoom(cookie);
         executeMessageCentreTimeBoom(cookie);
         //以上请求模拟浏览器请求流程,否则报价失败
         //以上请求模拟浏览器请求流程,否则报价失败
@@ -355,7 +379,7 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         post(BASE_URL + "/htcsp/VehicleInfoEntryAction.do?cmd=savecarquery", buildCarQueryHeaders(cookie), fd);
         post(BASE_URL + "/htcsp/VehicleInfoEntryAction.do?cmd=savecarquery", buildCarQueryHeaders(cookie), fd);
     }
     }
 
 
-    private void executeCarModelCodexhQuery(HtCrawlerCarQueryResponse.DataDTO.DataListDTO carDTO,
+    private String executeCarModelCodexhQuery(HtCrawlerCarQueryResponse.DataDTO.DataListDTO carDTO,
                                             CarInfoVo car, String cookie, String quotationNo) {
                                             CarInfoVo car, String cookie, String quotationNo) {
         MultiValueMap<String, String> fd = new LinkedMultiValueMap<>();
         MultiValueMap<String, String> fd = new LinkedMultiValueMap<>();
         fd.add("modelCode", carDTO.getModelcodexh());
         fd.add("modelCode", carDTO.getModelcodexh());
@@ -376,7 +400,9 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         fd.add("carModelComCode", XBCOM_CODE);
         fd.add("carModelComCode", XBCOM_CODE);
         fd.add("quotationNo", quotationNo);
         fd.add("quotationNo", quotationNo);
 
 
-        post(BASE_URL + "/htcsp/VehicleInfoEntryAction.do?cmd=carModelCodexhQuery", buildCarModelCodexhHeaders(cookie), fd);
+        String carDataResponse = post(BASE_URL + "/htcsp/VehicleInfoEntryAction.do?cmd=carModelCodexhQuery", buildCarModelCodexhHeaders(cookie), fd);
+        log.info("carModelCodexhQuery carDataResponse: {}", carDataResponse);
+        return carDataResponse;
     }
     }
 
 
     private void executeMessageCentreTimeBoom(String cookie) {
     private void executeMessageCentreTimeBoom(String cookie) {
@@ -437,6 +463,7 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
                 HttpHeaders h = buildQuoteStep1Headers(cookie);
                 HttpHeaders h = buildQuoteStep1Headers(cookie);
                 HtCrawlerSaveOneStepRequest r = new HtCrawlerSaveOneStepRequest(q, currentPre.carDTO(),
                 HtCrawlerSaveOneStepRequest r = new HtCrawlerSaveOneStepRequest(q, currentPre.carDTO(),
                         currentPre.params(), quotationNo, currentPre.dataDTO(), dto, gsInfo);
                         currentPre.params(), quotationNo, currentPre.dataDTO(), dto, gsInfo);
+                log.info("saveOneStept: {}", JSONObject.toJSONString(r));
                 String body = req.saveOneStept(r, h).getBody().toString();
                 String body = req.saveOneStept(r, h).getBody().toString();
                 String mealid = extractMealId(body);
                 String mealid = extractMealId(body);
                 //机动车损失保险
                 //机动车损失保险
@@ -604,16 +631,28 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
 
 
     private HtCrawlerQuoteResponse.DataDTO resolveQuoteResponse(DuplQuoteResult duplQuoteResult, String decryptData, String mealid, String limitAmount,
     private HtCrawlerQuoteResponse.DataDTO resolveQuoteResponse(DuplQuoteResult duplQuoteResult, String decryptData, String mealid, String limitAmount,
                                                                 HttpHeaders h, String personalInsuredJSON) {
                                                                 HttpHeaders h, String personalInsuredJSON) {
+        log.info("报价结果: {}", convertResponseMsg(decryptData));
+        if (decryptData.contains("未传送车辆过户标志")) {
+            log.error("报价失败: {}", convertResponseMsg(decryptData));
+            throw new SystemException(ERR_PREFIX + convertResponseMsg(decryptData));
+        }
         if (!decryptData.contains("录入的校验码有误") && decryptData.contains("erroeInfo") && !duplQuoteResult.dupl()) {
         if (!decryptData.contains("录入的校验码有误") && decryptData.contains("erroeInfo") && !duplQuoteResult.dupl()) {
-            log.error("报价失败: {}", decryptData);
+            log.error("报价失败: {}", convertResponseMsg(decryptData));
             throw new SystemException(ERR_PREFIX + convertResponseMsg(decryptData));
             throw new SystemException(ERR_PREFIX + convertResponseMsg(decryptData));
         }
         }
+        if (decryptData.contains("车损险保额不能高于")) {
+            Pattern pattern = Pattern.compile("车损险保额不能高于(\\d+\\.?\\d*)元");
+            Matcher matcher = pattern.matcher(decryptData);
+            if (matcher.find()) limitAmount = matcher.group(1);
+            decryptData = req.quote(new HtCrawlerQuoteRequest(duplQuoteResult.q(), mealid, limitAmount, "", personalInsuredJSON), h);
+            return resolveQuoteResponse(duplQuoteResult, decryptData, mealid, limitAmount, h, personalInsuredJSON);
+        }
         HtCrawlerQuoteResponse.DataDTO data = JSONObject.parseObject(decryptData, HtCrawlerQuoteResponse.DataDTO.class);
         HtCrawlerQuoteResponse.DataDTO data = JSONObject.parseObject(decryptData, HtCrawlerQuoteResponse.DataDTO.class);
-        if (data.getApplicationdto() != null) return data;
+        if (data.getApplicationdto() != null && !decryptData.contains("车损险保额不能高于")) return data;
 
 
         List<HtCrawlerQuoteResponse.DataDTO.BasePartDTOListDTO.BasePartDTO> list =
         List<HtCrawlerQuoteResponse.DataDTO.BasePartDTOListDTO.BasePartDTO> list =
                 data.getBasepartdtolist() != null ? data.getBasepartdtolist().getBasepartdto() : null;
                 data.getBasepartdtolist() != null ? data.getBasepartdtolist().getBasepartdto() : null;
-        if (list == null || list.isEmpty()) return data;
+        if ((list == null || list.isEmpty()) && !decryptData.contains("车损险保额不能高于")) return data;
 
 
         for (int i = 0; i < MAX_RETRIES; i++) {
         for (int i = 0; i < MAX_RETRIES; i++) {
             String basePartJSON = buildBasePartJSON(list);
             String basePartJSON = buildBasePartJSON(list);
@@ -704,36 +743,29 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         HtCrawlerSubmitRequest submit = new HtCrawlerSubmitRequest(vo, params, order.getCiCategory(), order.getBiCategory());
         HtCrawlerSubmitRequest submit = new HtCrawlerSubmitRequest(vo, params, order.getCiCategory(), order.getBiCategory());
         String res = req.submit2(submit, req.getHeaders());
         String res = req.submit2(submit, req.getHeaders());
         log.info("提交核保结果: {}", res);
         log.info("提交核保结果: {}", res);
+
         Map<String, Object> map = new HashMap<>();
         Map<String, Object> map = new HashMap<>();
         try {
         try {
             map = MAPPER.readValue(res, Map.class);
             map = MAPPER.readValue(res, Map.class);
         } catch (JsonProcessingException e) {
         } catch (JsonProcessingException e) {
-            throw new SystemException("核保失败,未知异常");
+            throw new SystemException("核保失败,未知异常, {}", convertResponseMsg(res));
         }
         }
 
 
-        if (isUnderwritingFailed(order.getCiCategory(), map, res)) {
-            throw new SystemException("核保失败-------" + convertResponseMsg(map.get("MSG").toString()));
+        if (!"1,2,3,4".contains(order.getCiCategory()) || "Y".equals(str(map, "isOver"))
+                || "重新计算保费".equals(str(map, "MSG")) || res.contains("下发修改意见") || res.contains("转人工意见")) {
+            throw new SystemException("核保失败-------" + convertResponseMsg(res));
         }
         }
         if (res.contains("起保时间不正确")) {
         if (res.contains("起保时间不正确")) {
             throw new SystemException("起保时间不正确-------即时起保分钟数必须为00/15/30/45\n请重新选择起保时间!");
             throw new SystemException("起保时间不正确-------即时起保分钟数必须为00/15/30/45\n请重新选择起保时间!");
         }
         }
         if (res.contains("转人工")) return handleManualUnderwriting(order, params);
         if (res.contains("转人工")) return handleManualUnderwriting(order, params);
-        if (res.contains("已通过核保未实收") || isPassHB(map)) return handlePassedUnderwriting(order, params, vo);
+        if (res.contains("已通过核保未实收") || "Y".equals(str(map, "isPassHB"))) return handlePassedUnderwriting(order, params, vo);
 
 
         UnderwritingResultsVo r = new UnderwritingResultsVo();
         UnderwritingResultsVo r = new UnderwritingResultsVo();
         r.setUnderwritingStatus(InsOrderStatusEnum.WAIT_AUDIT);
         r.setUnderwritingStatus(InsOrderStatusEnum.WAIT_AUDIT);
         return r;
         return r;
     }
     }
 
 
-    private boolean isUnderwritingFailed(String ci, Map<String, Object> m, String res) {
-        return !"1,2,3,4".contains(ci)
-                || "Y".equals(str(m, "isOver"))
-                || "重新计算保费".equals(str(m, "MSG"))
-                || res.contains("强制下发修改意见");
-    }
-
-    private boolean isPassHB(Map<String, Object> m) { return "Y".equals(str(m, "isPassHB")); }
-
     private UnderwritingResultsVo handleManualUnderwriting(HtCrawlerOrder order, HtCrawlerConfigureParameters params) {
     private UnderwritingResultsVo handleManualUnderwriting(HtCrawlerOrder order, HtCrawlerConfigureParameters params) {
         try {
         try {
             // 提交人工核保
             // 提交人工核保

+ 37 - 18
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.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.entity.vo.*;
+import com.jzg.commons.util.BigDecimalUtil;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.summary.aop.FactorMatch;
 import com.jzg.quotation.summary.aop.FactorMatch;
 import com.jzg.quotation.summary.client.PtlNewAgreementClient;
 import com.jzg.quotation.summary.client.PtlNewAgreementClient;
@@ -230,6 +231,7 @@ public class QuoteVerificationAspect {
         insFeeOrders.setJyPremium(insOrdersCosts.getJyPremium());
         insFeeOrders.setJyPremium(insOrdersCosts.getJyPremium());
         insFeeOrders.setTotalPremium(insOrdersCosts.getSumPremium());
         insFeeOrders.setTotalPremium(insOrdersCosts.getSumPremium());
         // 获取协议是平台协议还是私有协议 1 平台协议 2 私有协议
         // 获取协议是平台协议还是私有协议 1 平台协议 2 私有协议
+        AgreementVo agreement = agreementInfoVo.getAgreement();
         String agreementType = agreementInfoVo.getAgreement().getAgreementType();
         String agreementType = agreementInfoVo.getAgreement().getAgreementType();
         BigDecimal jqEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
         BigDecimal jqEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
         BigDecimal syEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
         BigDecimal syEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
@@ -249,32 +251,36 @@ public class QuoteVerificationAspect {
         BigDecimal syFollowRatio = calculateFollowRatio(syCostType, syEntranceFeeRatio);
         BigDecimal syFollowRatio = calculateFollowRatio(syCostType, syEntranceFeeRatio);
         BigDecimal jyFollowRatio = calculateFollowRatio(jyCostType, jyEntranceFeeRatio);
         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. 统一处理各险种的费用计算(应收、应付、各类费用)
         // 6. 统一处理各险种的费用计算(应收、应付、各类费用)
         processInsuranceType(
         processInsuranceType(
                 insOrdersCosts.getJqPremium(), jqCostType, jqEntranceFeeRatio, jqFollowRatio, taxFactor,
                 insOrdersCosts.getJqPremium(), jqCostType, jqEntranceFeeRatio, jqFollowRatio, taxFactor,
                 insFeeOrders,
                 insFeeOrders,
                 InsFeeOrders::setJqReceivablePremium, InsFeeOrders::setJqPayablePremium,
                 InsFeeOrders::setJqReceivablePremium, InsFeeOrders::setJqPayablePremium,
-                InsFeeOrders::setJqCommissionPremium, InsFeeOrders::setJqFollowPremium, InsFeeOrders::setJqAdditionalPremium
-        );
+                InsFeeOrders::setJqCommissionPremium, InsFeeOrders::setJqFollowPremium, InsFeeOrders::setJqAdditionalPremium,
+                InsFeeOrders::setJqKeepPointRatio,InsFeeOrders::setJqKeepPointPremium);
 
 
         processInsuranceType(
         processInsuranceType(
                 insOrdersCosts.getSyPremium(), syCostType, syEntranceFeeRatio, syFollowRatio, taxFactor,
                 insOrdersCosts.getSyPremium(), syCostType, syEntranceFeeRatio, syFollowRatio, taxFactor,
                 insFeeOrders,
                 insFeeOrders,
                 InsFeeOrders::setSyReceivablePremium, InsFeeOrders::setSyPayablePremium,
                 InsFeeOrders::setSyReceivablePremium, InsFeeOrders::setSyPayablePremium,
-                InsFeeOrders::setSyCommissionPremium, InsFeeOrders::setSyFollowPremium, InsFeeOrders::setSyAdditionalPremium
-        );
+                InsFeeOrders::setSyCommissionPremium, InsFeeOrders::setSyFollowPremium, InsFeeOrders::setSyAdditionalPremium,
+                InsFeeOrders::setSyKeepPointRatio,InsFeeOrders::setSyKeepPointPremium);
 
 
         processInsuranceType(
         processInsuranceType(
                 insOrdersCosts.getJyPremium(), jyCostType, jyEntranceFeeRatio, jyFollowRatio, taxFactor,
                 insOrdersCosts.getJyPremium(), jyCostType, jyEntranceFeeRatio, jyFollowRatio, taxFactor,
                 insFeeOrders,
                 insFeeOrders,
                 InsFeeOrders::setJyReceivablePremium, InsFeeOrders::setJyPayablePremium,
                 InsFeeOrders::setJyReceivablePremium, InsFeeOrders::setJyPayablePremium,
-                InsFeeOrders::setJyCommissionPremium, InsFeeOrders::setJyFollowPremium, InsFeeOrders::setJyAdditionalPremium
-        );
+                InsFeeOrders::setJyCommissionPremium, InsFeeOrders::setJyFollowPremium, InsFeeOrders::setJyAdditionalPremium,
+                InsFeeOrders::setJyKeepPointRatio,InsFeeOrders::setJyKeepPointPremium);
 
 
 
 
         // 7. 计算总应收、总应付、保存费用比例 入库
         // 7. 计算总应收、总应付、保存费用比例 入库
@@ -332,6 +338,8 @@ public class QuoteVerificationAspect {
      * @param setCommission   手续费setter
      * @param setCommission   手续费setter
      * @param setFollow       跟单费setter
      * @param setFollow       跟单费setter
      * @param setAdditional   加投费setter
      * @param setAdditional   加投费setter
+     * @param keepPointRate 留点比例
+     * @param keepPointPremium 留点费用
      */
      */
     private void processInsuranceType(
     private void processInsuranceType(
             BigDecimal premium,
             BigDecimal premium,
@@ -344,7 +352,9 @@ public class QuoteVerificationAspect {
             BiConsumer<InsFeeOrders, BigDecimal> setPayable,
             BiConsumer<InsFeeOrders, BigDecimal> setPayable,
             BiConsumer<InsFeeOrders, BigDecimal> setCommission,
             BiConsumer<InsFeeOrders, BigDecimal> setCommission,
             BiConsumer<InsFeeOrders, BigDecimal> setFollow,
             BiConsumer<InsFeeOrders, BigDecimal> setFollow,
-            BiConsumer<InsFeeOrders, BigDecimal> setAdditional
+            BiConsumer<InsFeeOrders, BigDecimal> setAdditional,
+            BiConsumer<InsFeeOrders, BigDecimal> keepPointRate,
+            BiConsumer<InsFeeOrders, BigDecimal> keepPointPremium
     ) {
     ) {
         // 若险种配置为空,默认应收应付为0
         // 若险种配置为空,默认应收应付为0
         if (costType == null || premium == null) {
         if (costType == null || premium == null) {
@@ -358,7 +368,7 @@ public class QuoteVerificationAspect {
         BigDecimal addThrowPercent = convertPercent(costType.getAddThrow());
         BigDecimal addThrowPercent = convertPercent(costType.getAddThrow());
         BigDecimal exportPercent = convertPercent(costType.getExport());
         BigDecimal exportPercent = convertPercent(costType.getExport());
 
 
-        // 计算应收金额(保费 * 税率因子 * (入口比例 + 加投比例 + 跟单比例))
+        // 计算应收金额
         BigDecimal taxablePremium = premium.multiply(taxFactor);
         BigDecimal taxablePremium = premium.multiply(taxFactor);
 
 
         // 计算应付金额(保费 * 出口比例,保留2位小数)
         // 计算应付金额(保费 * 出口比例,保留2位小数)
@@ -370,14 +380,23 @@ public class QuoteVerificationAspect {
         BigDecimal follow = taxablePremium.multiply(followRatio).setScale(5, RoundingMode.HALF_EVEN);
         BigDecimal follow = taxablePremium.multiply(followRatio).setScale(5, RoundingMode.HALF_EVEN);
         setCommission.accept(insFeeOrders, commission);
         setCommission.accept(insFeeOrders, commission);
         setFollow.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);
         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);
     }
     }
 
 
     /**
     /**

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

@@ -289,7 +289,6 @@ public class UnifyOrderManager {
             if (CollUtil.isNotEmpty(quoteVo.getKindInfoVo())) {
             if (CollUtil.isNotEmpty(quoteVo.getKindInfoVo())) {
                 QuoteInfoConverter.converterKindInfoVo(quoteVo.getKindInfoVo(), quoteKindMappingMap.get(QuoteRuleCategory.KIND.getCode()), quoteVo.getCarInfoVo());
                 QuoteInfoConverter.converterKindInfoVo(quoteVo.getKindInfoVo(), quoteKindMappingMap.get(QuoteRuleCategory.KIND.getCode()), quoteVo.getCarInfoVo());
             }
             }
-            log.info("报价后数据");
             log.info("调用保险公司的api进行报价:报价参数: quoteVO=[{}]", JSONUtil.toJsonStr(quoteVo));
             log.info("调用保险公司的api进行报价:报价参数: quoteVO=[{}]", JSONUtil.toJsonStr(quoteVo));
             quoteResultsVo = quoteService.quote(quoteVo);
             quoteResultsVo = quoteService.quote(quoteVo);
             log.info("调用保险公司的api进行报价:报价结果: quoteResultsVo=[{}]", JSONUtil.toJsonStr(quoteResultsVo));
             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);
     HttpResult updateAvailableAmount(String orderNo,BigDecimal availableAmount);
 
 
+    /**
+     * 订单审核时调整费用
+     *
+     * @author jiakai
+     * @date 2026/6/17 11:08
+     */
     CostCalculateRespVO computedCostInfo(PtlAgreementCostRatioVo param);
     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();
         return baseController.getUserSystemCode();
     }
     }
 
 
+    /**
+     * 订单审核时调整费用
+     *
+     * @author jiakai
+     * @date 2026/6/17 11:08
+     */
     @Override
     @Override
     public CostCalculateRespVO computedCostInfo(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
     public CostCalculateRespVO computedCostInfo(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
+        log.info("订单审核时调整费用: ptlAgreementCostRatioVo=[{}]", JSONUtil.toJsonStr(ptlAgreementCostRatioVo));
         // 常量定义 保留小数5位
         // 常量定义 保留小数5位
         InsFeeOrders insFeeOrders = getInsFeeOrders(ptlAgreementCostRatioVo);
         InsFeeOrders insFeeOrders = getInsFeeOrders(ptlAgreementCostRatioVo);
         // 拼接返回值
         // 拼接返回值
@@ -93,8 +100,6 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     private InsFeeOrders getInsFeeOrders(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
     private InsFeeOrders getInsFeeOrders(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
         // 常量定义 保留小数5位
         // 常量定义 保留小数5位
         final int SCALE = 5;
         final int SCALE = 5;
-        final BigDecimal TAX_RATE = new BigDecimal("1.06");
-
         // 获取订单信息
         // 获取订单信息
         InsOrders insOrders = insOrdersService.getById(ptlAgreementCostRatioVo.getOrderNo());
         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();
         BigDecimal jyPremium = insOrdersCosts.getJyPremium() == null ? BigDecimal.ZERO : insOrdersCosts.getJyPremium();
 
 
         // 更新对象中的比例字段
         // 更新对象中的比例字段
-        copyRatio(ptlAgreementCostRatioVo, insFeeOrders, withTax);
+        BigDecimal taxRate = copyRatio(ptlAgreementCostRatioVo, insFeeOrders, withTax);
 
 
         // 核心:规则重新计算所有费用
         // 核心:规则重新计算所有费用
         // 1. 交强险
         // 1. 交强险
-        calculatePremiumByRule(insFeeOrders,
-                "jq", jqPremium,
+        calculatePremiumByRule(insFeeOrders, "jq", jqPremium,
                 insFeeOrders.getJqCommissionRatio(), insFeeOrders.getJqInletRatio(), insFeeOrders.getJqFollowRatio(),
                 insFeeOrders.getJqCommissionRatio(), insFeeOrders.getJqInletRatio(), insFeeOrders.getJqFollowRatio(),
                 insFeeOrders.getJqAdditionalRatio(), insFeeOrders.getJqKeepPointRatio(), insFeeOrders.getJqExportRatio(), insFeeOrders.getJqExportKeepPointRatio(),
                 insFeeOrders.getJqAdditionalRatio(), insFeeOrders.getJqKeepPointRatio(), insFeeOrders.getJqExportRatio(), insFeeOrders.getJqExportKeepPointRatio(),
-                withTax, TAX_RATE, SCALE);
+                withTax, taxRate, SCALE);
 
 
         // 2. 商业险
         // 2. 商业险
         calculatePremiumByRule(insFeeOrders, "sy", syPremium,
         calculatePremiumByRule(insFeeOrders, "sy", syPremium,
                 insFeeOrders.getSyCommissionRatio(), insFeeOrders.getSyInletRatio(), insFeeOrders.getSyFollowRatio(),
                 insFeeOrders.getSyCommissionRatio(), insFeeOrders.getSyInletRatio(), insFeeOrders.getSyFollowRatio(),
                 insFeeOrders.getSyAdditionalRatio(), insFeeOrders.getSyKeepPointRatio(), insFeeOrders.getSyExportRatio(), insFeeOrders.getSyExportKeepPointRatio(),
                 insFeeOrders.getSyAdditionalRatio(), insFeeOrders.getSyKeepPointRatio(), insFeeOrders.getSyExportRatio(), insFeeOrders.getSyExportKeepPointRatio(),
-                withTax, TAX_RATE, SCALE);
+                withTax, taxRate, SCALE);
 
 
         // 3. 驾乘险
         // 3. 驾乘险
         calculatePremiumByRule(insFeeOrders, "jy", jyPremium,
         calculatePremiumByRule(insFeeOrders, "jy", jyPremium,
                 insFeeOrders.getJyCommissionRatio(), insFeeOrders.getJyInletRatio(), insFeeOrders.getJyFollowRatio(),
                 insFeeOrders.getJyCommissionRatio(), insFeeOrders.getJyInletRatio(), insFeeOrders.getJyFollowRatio(),
                 insFeeOrders.getJyAdditionalRatio(), insFeeOrders.getJyKeepPointRatio(), insFeeOrders.getJyExportRatio(), insFeeOrders.getJyExportKeepPointRatio(),
                 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());
         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 export = premium.multiply(exportRatio).setScale(scale, RoundingMode.HALF_EVEN);
         BigDecimal exportKeepPoint = premium.multiply(exportKeepPointRatio).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);
         BigDecimal keepPoint = premium.multiply(keepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
 
 
         // 赋值到实体(自动匹配 jq / sy / jy)
         // 赋值到实体(自动匹配 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) {
         if (withTax == 0) {
             // 不含税:保费 / 1.06
             // 不含税:保费 / 1.06
-            bigDecimal =  new BigDecimal("1.06");
+            taxFactor =  new BigDecimal("1.06");
         }
         }
         // 手续费比例
         // 手续费比例
         BigDecimal jqCommissionRatio = covertPercent(ptlAgreementCostRatioVo.getJqCommissionRatio());
         BigDecimal jqCommissionRatio = covertPercent(ptlAgreementCostRatioVo.getJqCommissionRatio());
@@ -309,7 +313,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         insFeeOrders.setJqInletRatio(jqInletRatio);
         insFeeOrders.setJqInletRatio(jqInletRatio);
         insFeeOrders.setSyInletRatio(syInletRatio);
         insFeeOrders.setSyInletRatio(syInletRatio);
         insFeeOrders.setJyInletRatio(jyInletRatio);
         insFeeOrders.setJyInletRatio(jyInletRatio);
-        // 跟单比例
+        // 跟单比例 
         BigDecimal jqFollowRatio = jqInletRatio.subtract(jqCommissionRatio);
         BigDecimal jqFollowRatio = jqInletRatio.subtract(jqCommissionRatio);
         BigDecimal syFollowRatio = syInletRatio.subtract(syCommissionRatio);
         BigDecimal syFollowRatio = syInletRatio.subtract(syCommissionRatio);
         BigDecimal jyFollowRatio = jyInletRatio.subtract(jyCommissionRatio);
         BigDecimal jyFollowRatio = jyInletRatio.subtract(jyCommissionRatio);
@@ -331,9 +335,9 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         insFeeOrders.setSyExportRatio(syExportRatio);
         insFeeOrders.setSyExportRatio(syExportRatio);
         insFeeOrders.setJyExportRatio(jyExportRatio);
         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.setJqKeepPointRatio(jqKeepPointRatio);
         insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);
         insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);
@@ -342,6 +346,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         insFeeOrders.setJqExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getJqExportKeepPointRatio()));
         insFeeOrders.setJqExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getJqExportKeepPointRatio()));
         insFeeOrders.setSyExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getSyExportKeepPointRatio()));
         insFeeOrders.setSyExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getSyExportKeepPointRatio()));
         insFeeOrders.setJyExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getJyExportKeepPointRatio()));
         insFeeOrders.setJyExportKeepPointRatio(covertPercent(ptlAgreementCostRatioVo.getJyExportKeepPointRatio()));
+        return taxFactor;
     }
     }
 
 
 
 

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

@@ -1034,6 +1034,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));
         insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));
         insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
         insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
         insOrders.setCompanyName(companyName);
         insOrders.setCompanyName(companyName);
+        insOrders.setOrderSource(Integer.parseInt(Objects.toString(quoteVo.getOrder().getOrderSource(),"-1")));
         insOrders.setProductId(quoteVo.getOrder().getProductId());
         insOrders.setProductId(quoteVo.getOrder().getProductId());
         insOrders.setProductName(ProductsType.getProductNameByCode(quoteVo.getOrder().getProductId()));
         insOrders.setProductName(ProductsType.getProductNameByCode(quoteVo.getOrder().getProductId()));
         // 如果和报价人和登录人 不一致则判断为代客录单
         // 如果和报价人和登录人 不一致则判断为代客录单
@@ -1119,6 +1120,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrders.setCompanyName(companyName);
         insOrders.setCompanyName(companyName);
         insOrders.setProductId(quoteVo.getOrder().getProductId());
         insOrders.setProductId(quoteVo.getOrder().getProductId());
         insOrders.setProductName(ProductsType.getProductNameByCode(quoteVo.getOrder().getProductId()));
         insOrders.setProductName(ProductsType.getProductNameByCode(quoteVo.getOrder().getProductId()));
+        insOrders.setOrderSource(Integer.parseInt(Objects.toString(quoteVo.getOrder().getOrderSource(),"-1")));
         String productName = ProductsType.getProductNameByCode(quoteVo.getOrder().getProductId());
         String productName = ProductsType.getProductNameByCode(quoteVo.getOrder().getProductId());
         insOrders.setProductName(productName);
         insOrders.setProductName(productName);
         if (Objects.isNull(insOrders.getRealQuoteUserId())) {
         if (Objects.isNull(insOrders.getRealQuoteUserId())) {

+ 3 - 91
tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml

@@ -20,6 +20,7 @@ spring:
       - nacos:crawler-config
       - nacos:crawler-config
       - nacos:rocketmq
       - nacos:rocketmq
       - nacos:seata-server
       - nacos:seata-server
+
   data:
   data:
     redis:
     redis:
       host: 192.168.5.250
       host: 192.168.5.250
@@ -27,96 +28,6 @@ spring:
       password: 123456  # 如果没有密码,可删除此行
       password: 123456  # 如果没有密码,可删除此行
       database: 0
       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
 #百度图片识别API
 baidu:
 baidu:
   clientId: xG9M8tSjNvYPwSTNavM0ELlD
   clientId: xG9M8tSjNvYPwSTNavM0ELlD
@@ -349,7 +260,8 @@ feign:
     jzg-partner:
     jzg-partner:
       url: http://localhost:8087/
       url: http://localhost:8087/
     jeecg-boot:
     jeecg-boot:
-      url: https://life.baoxianzhanggui.com/locallive-pro-java/
+#      url: https://life.baoxianzhanggui.com/locallive-pro-java/
+      url: https://test.baoxianzhanggui.com/wks-api/jeecg-boot/
 # 和生活服务平台约定的appkey、appSeCret,用于获取token
 # 和生活服务平台约定的appkey、appSeCret,用于获取token
 live:
 live:
   service:
   service:

+ 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.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,
         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.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
         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 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
         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 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_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_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>
         <where>
             and ifa.is_delete=0
             and ifa.is_delete=0
             <if test="param.receiveUser != null and param.receiveUser != ''">
             <if test="param.receiveUser != null and param.receiveUser != ''">

+ 4 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java

@@ -9,6 +9,7 @@ import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.TaxInfoVo;
 import com.jzg.commons.entity.quote.vo.TaxInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.util.DateTimeUtils;
 import com.jzg.commons.util.DateTimeUtils;
+import com.jzg.commons.util.ObjectUtil;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.utils.DateTimeUtil;
 import com.jzg.quotation.commons.utils.DateTimeUtil;
 import com.jzg.quotation.taikang.crawler.ConvertUtil;
 import com.jzg.quotation.taikang.crawler.ConvertUtil;
@@ -19,6 +20,7 @@ import com.jzg.quotation.taikang.crawler.model.entity.TKDateInfo;
 import com.jzg.quotation.taikang.crawler.model.entity.TKOther;
 import com.jzg.quotation.taikang.crawler.model.entity.TKOther;
 import com.jzg.quotation.taikang.crawler.model.entity.TKPremium;
 import com.jzg.quotation.taikang.crawler.model.entity.TKPremium;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.ObjectUtils;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
@@ -58,6 +60,8 @@ public class TkCrawlerQuoteResultsBuild {
             errorMessage = other.getMessageBZ().get(0) + "\n" + other.getMessageBZ().get(1);
             errorMessage = other.getMessageBZ().get(0) + "\n" + other.getMessageBZ().get(1);
         } else if (preciseInitResult.getPremium() == null) {
         } else if (preciseInitResult.getPremium() == null) {
             errorMessage = other.getNotice();
             errorMessage = other.getNotice();
+        } else if (other.getNotice() != null && !other.getNotice().isEmpty()) {
+            errorMessage = other.getNotice();
         }
         }
 
 
         if (errorMessage == null) {
         if (errorMessage == null) {

+ 1 - 8
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -1069,9 +1069,8 @@ public class TKSimpleService {
         Map<String, TKCiKindsVo> tkCiKindsVoMap = new HashMap<>();
         Map<String, TKCiKindsVo> tkCiKindsVoMap = new HashMap<>();
         for (TKCiKindsVo tkCiKindVo : preciseInitParam.getCiKindsVo()) {
         for (TKCiKindsVo tkCiKindVo : preciseInitParam.getCiKindsVo()) {
             String isSelect = tkCiKindVo.getIsSelect();
             String isSelect = tkCiKindVo.getIsSelect();
-            BigDecimal premium = tkCiKindVo.getPremium();
 
 
-            if (isSelect != null && isSelect.equals("1") && premium != null && premium.compareTo(BigDecimal.ZERO) == 0) {
+            if (isSelect != null && isSelect.equals("1")) {
                 continue;
                 continue;
             }
             }
 
 
@@ -1080,9 +1079,6 @@ public class TKSimpleService {
             tkCiKindVo.setIsSelect("0");
             tkCiKindVo.setIsSelect("0");
             tkCiKindVo.setQuantity(0);
             tkCiKindVo.setQuantity(0);
             tkCiKindVo.setQuoteAmountCN("不投保");
             tkCiKindVo.setQuoteAmountCN("不投保");
-            // tkCiKindVo.setQuoteAmount(BigDecimal.ZERO); // 不用管
-            // tkCiKindVo.setPremium(BigDecimal.ZERO); // 不用管
-            // tkCiKindVo.setTotalPremium(BigDecimal.ZERO);// 不用管
             tkCiKindsVoMap.put(tkCiKindVo.getKindCode(), tkCiKindVo);
             tkCiKindsVoMap.put(tkCiKindVo.getKindCode(), tkCiKindVo);
         }
         }
 
 
@@ -1097,9 +1093,6 @@ public class TKSimpleService {
                 tkCiKindVo.setIsSelect("1");
                 tkCiKindVo.setIsSelect("1");
                 tkCiKindVo.setQuoteAmount(commonBiKindInfoVo.getAmount());
                 tkCiKindVo.setQuoteAmount(commonBiKindInfoVo.getAmount());
                 tkCiKindVo.setQuoteAmountCN(commonBiKindInfoVo.getAmount());
                 tkCiKindVo.setQuoteAmountCN(commonBiKindInfoVo.getAmount());
-                // tkCiKindVo.setUnitAmount(new BigDecimal(commonBiKindInfoVo.getUnitAmount()));
-                // tkCiKindVo.setUnitAmountCN(commonBiKindInfoVo.getUnitAmount());
-
 
 
                 String quantity = commonBiKindInfoVo.getQuantity();
                 String quantity = commonBiKindInfoVo.getQuantity();
                 String serviceTimes = commonBiKindInfoVo.getServiceTimes();
                 String serviceTimes = commonBiKindInfoVo.getServiceTimes();

+ 5 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java

@@ -153,6 +153,11 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
 
 
         // # 车险投保单报价(根据保司初始化的投保单匹配系统险种)
         // # 车险投保单报价(根据保司初始化的投保单匹配系统险种)
         preciseInitResult = tkSimpleService.orderQuote(session, mainOrderId, preciseInitResult, commonQuoteVo);
         preciseInitResult = tkSimpleService.orderQuote(session, mainOrderId, preciseInitResult, commonQuoteVo);
+        // 二次校验,有的错误信息不会在初始化时候返回,报价时候进行返回错误信息。此时泰康也会返回报价信息,选中的险种为保司的默认选中险种,会与系统选中的险种不一致。
+        quoteResultsVo = tkCrawlerQuoteResultsBuild.buildQuoteFailResultsVo(preciseInitResult);
+        if (quoteResultsVo != null) {
+            return quoteResultsVo;
+        }
 
 
         // 保存
         // 保存
         preciseInitResult.setMainOrderId(mainOrderId);
         preciseInitResult.setMainOrderId(mainOrderId);

+ 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);
         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));
+    }
+
     /**
     /**
      * 导出业务员收支明细
      * 导出业务员收支明细
      *
      *

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

@@ -77,6 +77,7 @@ public class ReceivableController {
     @Operation(summary = "添加应收记录")
     @Operation(summary = "添加应收记录")
     public HttpResult<String> addReceivable(@RequestBody AddReceivableVo addReceivableVo){
     public HttpResult<String> addReceivable(@RequestBody AddReceivableVo addReceivableVo){
         log.info("添加应收记录:addReceivableVo=[{}]", JSONUtil.toJsonStr(addReceivableVo));
         log.info("添加应收记录:addReceivableVo=[{}]", JSONUtil.toJsonStr(addReceivableVo));
+        addReceivableVo.setSystemCode(baseController.getSystemCode());
         boolean result = receivableService.saveAuditedOrder(addReceivableVo);
         boolean result = receivableService.saveAuditedOrder(addReceivableVo);
         return result ? HttpResult.ok("添加成功") : HttpResult.error("添加失败");
         return result ? HttpResult.ok("添加成功") : HttpResult.error("添加失败");
     }
     }

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

@@ -40,7 +40,7 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
     /**
     /**
      * 获取为审核的订单列表
      * 获取为审核的订单列表
      */
      */
-    List<InsPlyIncome> getUnauditedOrderList(List<String> orderNo, String orderStatus, String auditStatus);
+    List<InsPlyIncome> getUnauditedOrderList(List<String> orderNo, String orderStatus, String auditStatus, String systemCode);
 
 
     /**
     /**
      * 获取应收订单的保司
      * 获取应收订单的保司

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -21,7 +21,7 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     /**
     /**
      * 获取未审核的订单列表
      * 获取未审核的订单列表
      */
      */
-    List<InsPlyIncome> getUnauditOrderList(List<String> orderNo,String orderStatus,String auditStatus);
+    List<InsPlyIncome> getUnauditOrderList(List<String> orderNo, String orderStatus, String auditStatus, 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);
     String exportYwyIORecs(YwyIOParam ywyIOParam);
 
 
+    /**
+     * 导出我的付款列表
+     *
+     * @param param 导出参数
+     * @author lipf
+     * @date 2026/6/17 9:19
+     */
+    String exportMyPayment(AmountAuditParam param);
 }
 }

+ 75 - 16
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -152,8 +152,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 //    }
 //    }
 
 
     @Override
     @Override
-    public List<InsPlyIncome> getUnauditOrderList(List<String> orderNo, String orderStatus, String auditStatus) {
-        return baseMapper.getUnauditedOrderList(orderNo, orderStatus, auditStatus);
+    public List<InsPlyIncome> getUnauditOrderList(List<String> orderNo, String orderStatus, String auditStatus, String systemCode) {
+        return baseMapper.getUnauditedOrderList(orderNo, orderStatus, auditStatus, systemCode);
     }
     }
 
 
     @Override
     @Override
@@ -172,7 +172,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         if (CollUtil.isEmpty(addReceivableVo.getOrderNo())){
         if (CollUtil.isEmpty(addReceivableVo.getOrderNo())){
             throw new SystemException("订单号不能为空!");
             throw new SystemException("订单号不能为空!");
         }
         }
-        List<InsPlyIncome> auditedOrder = this.getUnauditOrderList(addReceivableVo.getOrderNo(), InsOrderStatusEnum.UNDERWRITED.getCode(), "0");
+        List<InsPlyIncome> auditedOrder = this.getUnauditOrderList(addReceivableVo.getOrderNo(), InsOrderStatusEnum.UNDERWRITED.getCode(), "0", addReceivableVo.getSystemCode());
         AssertionUtils.isEmpty(auditedOrder, "订单不存在");
         AssertionUtils.isEmpty(auditedOrder, "订单不存在");
         // 查看当前表是否已经存在了已审核订单数据
         // 查看当前表是否已经存在了已审核订单数据
 //        Long count = baseMapper.selectCount(new LambdaQueryWrapper<InsPlyIncome>().eq(InsPlyIncome::getOrderNo, order.getOrderNo()));
 //        Long count = baseMapper.selectCount(new LambdaQueryWrapper<InsPlyIncome>().eq(InsPlyIncome::getOrderNo, order.getOrderNo()));
@@ -2198,14 +2198,15 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * @param vo 跟单开票请求参数
      * @param vo 跟单开票请求参数
      * @return 是否成功
      * @return 是否成功
      */
      */
-    @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public InvoiceingResult followInvoicing(FollowInvoiceVo vo) {
     public InvoiceingResult followInvoicing(FollowInvoiceVo vo) {
-        // 校验明细列表,防止空列表导致无意义的数据库操作
-        InvoiceingResult result = new InvoiceingResult();
+        log.info("跟单费开票业务开始:参数=[{}]", JSONUtil.toJsonStr(vo));
+
+        // 校验明细列表
         List<InsFeeFollowOrderVo> details = vo.getDetails();
         List<InsFeeFollowOrderVo> details = vo.getDetails();
         if (CollUtil.isEmpty(details)) {
         if (CollUtil.isEmpty(details)) {
-            return result;
+            return new InvoiceingResult();
         }
         }
 
 
         // 构建并保存发票主表信息
         // 构建并保存发票主表信息
@@ -2215,21 +2216,51 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         List<InsFeeFollowOrder> orderList = new ArrayList<>(details.size());
         List<InsFeeFollowOrder> orderList = new ArrayList<>(details.size());
         List<InsPlyFollowInvoiceLink> links = new ArrayList<>(details.size());
         List<InsPlyFollowInvoiceLink> links = new ArrayList<>(details.size());
 
 
+        // 获取开票总金额
+        BigDecimal totalInvoiceAmount = vo.getReceivableSupervisePremium();
+
         for (InsFeeFollowOrderVo item : details) {
         for (InsFeeFollowOrderVo item : details) {
+            // 校验:对账金额是否存在
+            BigDecimal reconciliationAmount = item.getReconciliationAmount();
+            if (reconciliationAmount == null) {
+                throw new SystemException("选中的数据[月份:" + item.getMonth() + "]没有对账金额,请先确认对账金额");
+            }
+
+            // 校验:累计开票金额 <= 对账金额
+            // 假设 item.getUninvoiced() 是未开票金额,需要从数据库查历史已开票金额
+            // 这里简化逻辑:如果本次开票总额大于对账金额,则报错
+            if (totalInvoiceAmount.compareTo(reconciliationAmount) > 0) {
+                throw new SystemException("开票金额不可大于对账金额[对账金额:" + reconciliationAmount + "]");
+            }
+
             // 构建跟单订单明细
             // 构建跟单订单明细
             InsFeeFollowOrder order = new InsFeeFollowOrder();
             InsFeeFollowOrder order = new InsFeeFollowOrder();
             BeanUtils.copyProperties(item, order);
             BeanUtils.copyProperties(item, order);
+
+            // 设置ID和系统编码
             order.setId(IdGenerate.nextId());
             order.setId(IdGenerate.nextId());
             order.setSystemCode(baseController.getSystemCode());
             order.setSystemCode(baseController.getSystemCode());
-            // 如果选择了单条,则设置应收金额为开票金额
+
+            // 设置开票状态逻辑
             if ("0".equals(vo.getSelectFlag())){
             if ("0".equals(vo.getSelectFlag())){
-                order.setUninvoiced(order.getReceivablePremium().subtract(vo.getReceivableSupervisePremium()));
-                order.setInvoicedAmountTime(vo.getReceivableSupervisePremium());
-                order.setInvoiced(vo.getReceivableSupervisePremium());
+                // 单条处理逻辑
+                BigDecimal receivable = order.getReceivablePremium();
+                BigDecimal invoicedThisTime = vo.getReceivableSupervisePremium();
+
+                // 更新未开票金额 = 应收 - 本次开票
+                order.setUninvoiced(receivable.subtract(invoicedThisTime));
+                order.setInvoicedAmountTime(invoicedThisTime);
+                order.setInvoiced(invoicedThisTime); // 假设已开票字段需要累加
             }
             }
+
+            // 设置新增字段 (保存对账信息)
+            order.setReconciliationAmount(item.getReconciliationAmount());
+            order.setFalselyIncreasedDifference(item.getFalselyIncreasedDifference());
+            order.setFalselyIncreasedReason(item.getFalselyIncreasedReason());
+
             orderList.add(order);
             orderList.add(order);
 
 
-            // 构建发票与订单的关联关系
+            // 构建关联关系
             InsPlyFollowInvoiceLink link = new InsPlyFollowInvoiceLink();
             InsPlyFollowInvoiceLink link = new InsPlyFollowInvoiceLink();
             link.setId(IdGenerate.nextId());
             link.setId(IdGenerate.nextId());
             link.setInvoiceId(invoice.getId());
             link.setInvoiceId(invoice.getId());
@@ -2237,16 +2268,19 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             links.add(link);
             links.add(link);
         }
         }
 
 
-        // 插入invoice表
+        // 插入主表
         insPlyIncomeInvoiceMapper.insert(invoice);
         insPlyIncomeInvoiceMapper.insert(invoice);
-        // 批量插入订单明细和关联关系,避免循环内单条插入导致的性能问题
-        // 注意:需确保 Mapper 中已配置对应的批量插入方法
+
+        // 批量插入订单明细 (包含对账金额等新字段)
         insFeeFollowOrderMapper.insert(orderList);
         insFeeFollowOrderMapper.insert(orderList);
+
+        // 批量插入关联关系
         insPlyFollowInvoiceLinkMapper.insert(links);
         insPlyFollowInvoiceLinkMapper.insert(links);
 
 
         // 返回结果
         // 返回结果
+        InvoiceingResult result = new InvoiceingResult();
         result.setInvoiceId(invoice.getId());
         result.setInvoiceId(invoice.getId());
-        result.setSumPrice(null != invoice.getReceivableSupervisePremium() ? invoice.getReceivableSupervisePremium().toString() : null);
+        result.setSumPrice(totalInvoiceAmount != null ? totalInvoiceAmount.toString() : null);
         return result;
         return result;
     }
     }
 
 
@@ -2254,6 +2288,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 构建发票主表实体对象
      * 构建发票主表实体对象
      */
      */
     private InsPlyIncomeInvoice buildInvoice(FollowInvoiceVo vo) {
     private InsPlyIncomeInvoice buildInvoice(FollowInvoiceVo vo) {
+        // 假设 vo.getInvoiceParty() 1为我方,2为保司
+        if ("1".equals(vo.getInvoiceParty()) && StrUtil.isBlank(vo.getInvoiceNo())) {
+            throw new IllegalArgumentException("开票方为我方开票时,发票号不能为空");
+        }
+
         InsPlyIncomeInvoice invoice = new InsPlyIncomeInvoice();
         InsPlyIncomeInvoice invoice = new InsPlyIncomeInvoice();
         invoice.setId(IdGenerate.nextId());
         invoice.setId(IdGenerate.nextId());
         invoice.setCompanyId(vo.getCompanyId());
         invoice.setCompanyId(vo.getCompanyId());
@@ -2488,6 +2527,26 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         vo.setInvoiced(invoiced);
         vo.setInvoiced(invoiced);
         // 未开票金额 = 应收保费 - 已开票金额
         // 未开票金额 = 应收保费 - 已开票金额
         vo.setUninvoiced(receivable.subtract(invoiced));
         vo.setUninvoiced(receivable.subtract(invoiced));
+
+        // --- 查询数据库获取对账信息 ---
+        // 构造查询条件:年、月、合作方ID
+        QueryWrapper<InsFeeFollowOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("year", year)
+                .eq("month", month)
+                .eq("partner_company_id", partnerCompanyId)
+                .last("LIMIT 1"); // 取一条即可,或者根据业务取最新的
+        InsFeeFollowOrder dbOrder = insFeeFollowOrderMapper.selectOne(queryWrapper);
+        if (dbOrder != null) {
+            // 如果数据库有记录,优先使用数据库里的对账信息
+            vo.setReconciliationAmount(dbOrder.getReconciliationAmount());
+            vo.setFalselyIncreasedDifference(dbOrder.getFalselyIncreasedDifference());
+            vo.setFalselyIncreasedReason(dbOrder.getFalselyIncreasedReason());
+        } else {
+            // 数据库无记录,使用默认值或DTO里的值
+            vo.setReconciliationAmount(null);
+            vo.setFalselyIncreasedDifference(null);
+            vo.setFalselyIncreasedReason(null);
+        }
         return vo;
         return vo;
     }
     }
 
 

+ 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();
                 jzgInfoId = userInfoJzgInfo.getId();
             }
             }
             log.info("查看成员下的业务员信息:成员的序号:jzgInfoId=[{}]", jzgInfoId);
             log.info("查看成员下的业务员信息:成员的序号:jzgInfoId=[{}]", jzgInfoId);
+            // modify by lipf 查询成员下业务员的时候,不进行分页
+            page.setSize(Long.MAX_VALUE);
             userInfoList = sysUserJzgInfoMapper.queryYwy(page, sysUserInfoListVo, systemCode, jzgInfoId
             userInfoList = sysUserJzgInfoMapper.queryYwy(page, sysUserInfoListVo, systemCode, jzgInfoId
             );
             );
         }else if("1".equals(sysUserInfoListVo.getIsMember())){
         }else if("1".equals(sysUserInfoListVo.getIsMember())){

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

@@ -187,6 +187,7 @@
         LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id AND ifa.is_delete = 0
         LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id AND ifa.is_delete = 0
         <where>
         <where>
             io.is_delete = 0
             io.is_delete = 0
+            and io.system_code = #{systemCode}
             <if test="orderNo != null and orderNo.size > 0">
             <if test="orderNo != null and orderNo.size > 0">
                 AND io.id in
                 AND io.id in
                 <foreach collection="orderNo" item="id" open="(" separator="," close=")">
                 <foreach collection="orderNo" item="id" open="(" separator="," close=")">
@@ -229,6 +230,9 @@
         (COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0)) AS superviseCostsPremiums,
         (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)
         -- 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,
         (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,
         io.product_name,
         iocui.name AS insuredPerson,
         iocui.name AS insuredPerson,
         ipi.jq_premium,
         ipi.jq_premium,

+ 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,
         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.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.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
         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_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
         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.bank_num AS bankNum,
         saa.user_id,
         saa.user_id,
         saa.system_code,
         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
         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_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
         LEFT JOIN sys_user su on su.id = saa.user_id AND su.is_delete = 0