瀏覽代碼

Merge branch 'master' into wrq_dev

wangrq 3 月之前
父節點
當前提交
2370d1dd9e
共有 100 個文件被更改,包括 3364 次插入 和 644 次删除
  1. 1 1
      authentication/src/main/resources/mapper/SysSystemMapper.xml
  2. 6 0
      commons/src/main/java/com/jzg/commons/entity/agreement/dispatch/dto/PtlAgreementDispatchAction.java
  3. 7 0
      commons/src/main/java/com/jzg/commons/entity/agreement/dispatch/dto/PtlAgreementDispatchAfterAction.java
  4. 7 0
      commons/src/main/java/com/jzg/commons/entity/agreement/po/PtlAgreementUrl.java
  5. 1 1
      commons/src/main/java/com/jzg/commons/entity/dto/AmountAuditEditParam.java
  6. 5 0
      commons/src/main/java/com/jzg/commons/entity/dto/FeeAuditParam.java
  7. 4 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java
  8. 7 0
      commons/src/main/java/com/jzg/commons/entity/po/EsmUserReferrer.java
  9. 7 0
      commons/src/main/java/com/jzg/commons/entity/po/OperatorTrajectory.java
  10. 8 4
      commons/src/main/java/com/jzg/commons/entity/po/PtlNewCarJudgeRules.java
  11. 6 1
      commons/src/main/java/com/jzg/commons/entity/po/SysActivityAward.java
  12. 6 0
      commons/src/main/java/com/jzg/commons/entity/po/SysActivityRecord.java
  13. 10 4
      commons/src/main/java/com/jzg/commons/entity/po/SysCommonFunction.java
  14. 6 0
      commons/src/main/java/com/jzg/commons/entity/po/SysDistributionAudit.java
  15. 7 0
      commons/src/main/java/com/jzg/commons/entity/po/SysMenu.java
  16. 7 0
      commons/src/main/java/com/jzg/commons/entity/po/SysMessageUser.java
  17. 6 0
      commons/src/main/java/com/jzg/commons/entity/po/SysSystemMenu.java
  18. 1 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java
  19. 8 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoFile.java
  20. 7 9
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoSalesman.java
  21. 8 0
      commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRights.java
  22. 7 4
      commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRightsPackage.java
  23. 7 0
      commons/src/main/java/com/jzg/commons/entity/scheme/po/InsBusinessInsurance.java
  24. 7 0
      commons/src/main/java/com/jzg/commons/entity/scheme/po/InsBusinessInsuranceOption.java
  25. 6 1
      commons/src/main/java/com/jzg/commons/entity/scheme/po/PtlSchemeInsurance.java
  26. 7 0
      commons/src/main/java/com/jzg/commons/entity/scheme/po/PtlSchemeInsuranceDrivingIntention.java
  27. 2 2
      commons/src/main/java/com/jzg/commons/mapper/OperatorTrajectoryMapper.java
  28. 8 1
      commons/src/main/java/com/jzg/commons/service/impl/OperatorTrajectoryServiceImpl.java
  29. 16 0
      commons/src/main/java/com/jzg/commons/util/DateTimeUtils.java
  30. 1 1
      consoleStatistics/src/main/resources/mapper/ReportUploadExcelTaskMapper.xml
  31. 1 2
      partner/src/main/java/com/jzg/controller/DistributionController.java
  32. 2 2
      partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java
  33. 6 1
      partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java
  34. 1 0
      partner/src/main/java/com/jzg/utils/DistributionUtils.java
  35. 4 4
      partner/src/main/resources/mapper/PartnerAttributeMapper.xml
  36. 1 1
      partner/src/main/resources/mapper/PartnerUserMapper.xml
  37. 1 1
      platform/src/main/java/com/jzg/mapper/SysRolePermsMapper.java
  38. 1 1
      platform/src/main/java/com/jzg/mapper/SysUserRoleMapper.java
  39. 7 1
      platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java
  40. 5 1
      platform/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java
  41. 122 124
      platform/src/main/resources/mapper/EsmInsCompanyMapper.xml
  42. 58 51
      platform/src/main/resources/mapper/InsCompanyClauseMapper.xml
  43. 21 19
      platform/src/main/resources/mapper/JyxConfigMapper.xml
  44. 33 33
      platform/src/main/resources/mapper/PtlAgreementAttributionMapper.xml
  45. 7 5
      platform/src/main/resources/mapper/PtlAgreementMapper.xml
  46. 10 9
      platform/src/main/resources/mapper/PtlAgreementUrlMapper.xml
  47. 32 18
      platform/src/main/resources/mapper/SysMenuMapper.xml
  48. 17 13
      platform/src/main/resources/mapper/SysRoleMapper.xml
  49. 16 13
      platform/src/main/resources/mapper/SysRolePermsMapper.xml
  50. 28 26
      platform/src/main/resources/mapper/SysSystemMapper.xml
  51. 54 50
      platform/src/main/resources/mapper/SysUserJzgInfoMapper.xml
  52. 27 26
      platform/src/main/resources/mapper/SysUserMapper.xml
  53. 10 8
      platform/src/main/resources/mapper/SysUserRoleMapper.xml
  54. 26 10
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerApplyApplicationRequestBuild.java
  55. 10 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java
  56. 5 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java
  57. 55 25
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java
  58. 533 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/InsuranceContractRequest.java
  59. 2 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerCalculatePremiumApplyResponse.java
  60. 1350 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/PureRiskPremiumQueryResponse.java
  61. 26 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java
  62. 12 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java
  63. 65 13
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/AuditVerificationAspect.java
  64. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderRightsMapper.java
  65. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderRightsPackageMapper.java
  66. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersCarUserInfoMapper.java
  67. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersKindMapper.java
  68. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersRiskMapper.java
  69. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsTaskImagesMapper.java
  70. 30 30
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  71. 9 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsPackageServiceImpl.java
  72. 8 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsServiceImpl.java
  73. 6 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarUserInfoServiceImpl.java
  74. 6 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersKindServiceImpl.java
  75. 6 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersRiskServiceImpl.java
  76. 7 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsTaskImagesServiceImpl.java
  77. 5 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml
  78. 2 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderRightsMapper.xml
  79. 2 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderRightsPackageMapper.xml
  80. 413 61
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/build/TaiShanCrawlerQuoteRequestVoBuild.java
  81. 7 7
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/entity/request/TaiShanCrawlerLoginRequest.java
  82. 49 3
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerRequestImpl.java
  83. 1 1
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java
  84. 1 1
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  85. 6 4
      tenant/organization/src/main/java/com/jzg/organization/entity/WechatCustomerService.java
  86. 6 0
      tenant/organization/src/main/java/com/jzg/organization/entity/WechatCustomerServiceDuty.java
  87. 10 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/InsPlyIncomeInvoiceLinkMapper.java
  88. 4 6
      tenant/organization/src/main/java/com/jzg/organization/mapper/InvAccountCardMapper.java
  89. 1 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostExternalMapper.java
  90. 2 2
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostExternalTypeMapper.java
  91. 2 2
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostRuleMapper.java
  92. 2 2
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostTypeMapper.java
  93. 2 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlSchemeInsuranceDrivingIntentionMapper.java
  94. 1 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserRoleMapper.java
  95. 3 3
      tenant/organization/src/main/java/com/jzg/organization/service/InvAccountCardService.java
  96. 8 1
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  97. 2 2
      tenant/organization/src/main/java/com/jzg/organization/service/SysAmountAuditingService.java
  98. 5 7
      tenant/organization/src/main/java/com/jzg/organization/service/impl/InvAccountCardServiceImpl.java
  99. 7 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostExternalTypeServiceImpl.java
  100. 7 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostRuleServiceImpl.java

+ 1 - 1
authentication/src/main/resources/mapper/SysSystemMapper.xml

@@ -42,6 +42,6 @@
                business_size,legal_name,create_by,
                create_time,update_by,update_time,
                is_delete
-        from sys_system where is_delete = 0
+        from sys_system
     </sql>
 </mapper>

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/dispatch/dto/PtlAgreementDispatchAction.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.agreement.dispatch.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -32,4 +34,8 @@ public class PtlAgreementDispatchAction implements Serializable {
     @TableField(exist = false)
     private String actionName;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 }

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/dispatch/dto/PtlAgreementDispatchAfterAction.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.agreement.dispatch.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -34,4 +36,9 @@ public class PtlAgreementDispatchAfterAction implements Serializable {
     @TableField(exist = false)
     private String actionName;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/po/PtlAgreementUrl.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.agreement.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jzg.commons.entity.agreement.vo.PtlAgreementUrlVo;
 import com.jzg.commons.util.idgen.IdGenerate;
@@ -40,6 +42,11 @@ public class PtlAgreementUrl {
     @TableField(exist = false)
     private String companyName;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
     public PtlAgreementUrl(PtlAgreementUrlVo ptlAgreementUrlVo) {
         this.id = IdGenerate.nextId();
         this.name = ptlAgreementUrlVo.getName();

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

@@ -21,5 +21,5 @@ public class AmountAuditEditParam {
     private String picId;
 
     @Schema(description = "付款账户id")
-    private String accountId;
+    private String cardId;
 }

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

@@ -4,11 +4,13 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.PageRequest;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Schema(description = "订单审核表分页查询dto")
 @Data
 public class FeeAuditParam extends PageRequest {
@@ -16,6 +18,9 @@ public class FeeAuditParam extends PageRequest {
     @Schema(description = "车牌号")
     private String licenseNo;
 
+    @Schema(description = "车架号")
+    private String vinNo;
+
     @Schema(description = "业务员类型1.前线人员 2:后线人员 3:合伙人 4:工作室管理员 5:团队 6:个代 7:电销 8 渠道")
     private String attrType;
 

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

@@ -36,6 +36,10 @@ public class FeeAuditVo extends BaseModel {
     @Schema(description = "车牌号")
     private String licenseNo;
 
+    @ExcelProperty("车架号")
+    @Schema(description = "车架号")
+    private String vinNo;
+
     @ExcelProperty("被保人姓名")
     @Schema(description = "被保人姓名")
     private String insurName;

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/po/EsmUserReferrer.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -30,6 +32,11 @@ public class EsmUserReferrer {
     @Schema(description = "推荐人机构id")
     private String referrerDeptId;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
     public EsmUserReferrer(SysUserJzgInfo sysUserJzgInfo, SysUserJzgInfo referrer) {
         this.id = sysUserJzgInfo.getId();
         this.referrerId = referrer.getId();

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/po/OperatorTrajectory.java

@@ -1,6 +1,8 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.jzg.commons.util.comparble.CompareResult;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -63,4 +65,9 @@ public class OperatorTrajectory{
     @Schema(description = "比较结果")
     private List<CompareResult> compareResultList;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 8 - 4
commons/src/main/java/com/jzg/commons/entity/po/PtlNewCarJudgeRules.java

@@ -1,11 +1,10 @@
 package com.jzg.commons.entity.po;
 
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.*;
 import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
@@ -38,4 +37,9 @@ public class PtlNewCarJudgeRules{
 
     private Date saveDate;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 6 - 1
commons/src/main/java/com/jzg/commons/entity/po/SysActivityAward.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -62,7 +64,10 @@ public class SysActivityAward implements Serializable {
     @TableField(exist = false)
     private String imageUrl;
 
-
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 
     public SysActivityAward(){
         this.id = IdGenerate.nextId();

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysActivityRecord.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -64,6 +66,10 @@ public class SysActivityRecord implements Serializable {
     @TableField(exist = false)
     private String deptName;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 
 
     public SysActivityRecord() {

+ 10 - 4
commons/src/main/java/com/jzg/commons/entity/po/SysCommonFunction.java

@@ -1,10 +1,11 @@
 package com.jzg.commons.entity.po;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.*;
+
 import java.io.Serializable;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 /**
@@ -38,6 +39,11 @@ public class SysCommonFunction implements Serializable {
     @TableField(value = "menu_id")
     private Long menuId;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysDistributionAudit.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -51,6 +53,10 @@ public class SysDistributionAudit {
     @Schema(description = "租户id")
     private String systemCode;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 
     public SysDistributionAudit(SysUserJzgInfo sysUserJzgInfo) {
         this.sysUserJzgInfoId = sysUserJzgInfo.getId();

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysMenu.java

@@ -1,8 +1,10 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -78,4 +80,9 @@ public class SysMenu {
     @Schema(description = "菜单类型 1 车险 2.控制台")
     private String sysType;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysMessageUser.java

@@ -2,6 +2,8 @@ package com.jzg.commons.entity.po;
 
 import java.io.Serializable;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -33,4 +35,9 @@ public class SysMessageUser implements Serializable {
     /** 是否已读 0.否 1.是 */
     @Schema(description = "是否已读 0.否 1.是")
     private Integer isRead;
+
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysSystemMenu.java

@@ -1,8 +1,10 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -23,4 +25,8 @@ public class SysSystemMenu {
     @Schema(description = "菜单名称")
     private String menuId;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 }

+ 1 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java

@@ -371,6 +371,7 @@ public class SysUserJzgInfo extends BaseModel implements Serializable {
         this.deptId = yqirInfo.getDeptId();
         this.typeAttr = yqirInfo.getTypeAttr();
         this.referrerId = yqirInfo.getId();
+        this.leaderId = yqirInfo.getLeaderId();
     }
 
     public SysUserJzgInfo(SysUser sysUser,SysUserJzgInfo inviterInfo) {

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoFile.java

@@ -1,9 +1,12 @@
 package com.jzg.commons.entity.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jzg.commons.util.idgen.IdGenerate;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.io.Serial;
@@ -39,6 +42,11 @@ public class SysUserJzgInfoFile implements Serializable {
     @TableField(value = "file_type")
     private String fileType;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
     public SysUserJzgInfoFile(String fileId, String userId, String fileName) {
         this.id = IdGenerate.nextId();
         this.fileId = fileId;

+ 7 - 9
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoSalesman.java

@@ -1,13 +1,13 @@
 package com.jzg.commons.entity.po;
 
-import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.v3.oas.annotations.media.Schema;
+import com.jzg.commons.core.base.BaseModel;
 import lombok.Data;
 
+import java.io.Serial;
+
 /**
  * @author quchen
  * @date 2025/6/20 10:46
@@ -15,7 +15,10 @@ import lombok.Data;
 
 @Data
 @TableName("sys_user_jzg_info_salesman")
-public class SysUserJzgInfoSalesman {
+public class SysUserJzgInfoSalesman extends BaseModel {
+
+    @Serial
+    private static final long serialVersionUID = 7281876348931805282L;
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     private String id;
 
@@ -25,11 +28,6 @@ public class SysUserJzgInfoSalesman {
 
     private int partnerStatus;
 
-    @ExcelIgnore
-    @Schema(description = "是否删除")
-    @TableLogic
-    private Integer isDelete;
-
     public SysUserJzgInfoSalesman(){
 
     }

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRights.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.rights.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -113,4 +115,10 @@ public class InsOrderRights {
 
     @Schema(description = "接收人手机号")
     private String receiverMobile;
+
+
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 }

+ 7 - 4
commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRightsPackage.java

@@ -1,9 +1,7 @@
 package com.jzg.commons.entity.rights.po;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -124,4 +122,9 @@ public class InsOrderRightsPackage {
     @Schema(description = "接收人手机号")
     private String receiverMobile;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/po/InsBusinessInsurance.java

@@ -1,5 +1,7 @@
 package com.jzg.commons.entity.scheme.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -26,4 +28,9 @@ public class InsBusinessInsurance {
     @Schema(description = "分组")
     private String grouping;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/po/InsBusinessInsuranceOption.java

@@ -1,5 +1,7 @@
 package com.jzg.commons.entity.scheme.po;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -20,4 +22,9 @@ public class InsBusinessInsuranceOption {
     @Schema(description = "排序")
     private String sort;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
+
 }

+ 6 - 1
commons/src/main/java/com/jzg/commons/entity/scheme/po/PtlSchemeInsurance.java

@@ -1,7 +1,9 @@
 package com.jzg.commons.entity.scheme.po;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -23,7 +25,10 @@ public class PtlSchemeInsurance {
     @Schema(description = "选项")
     private String optionId;
 
-
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 
 }
 

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/po/PtlSchemeInsuranceDrivingIntention.java

@@ -1,8 +1,10 @@
 package com.jzg.commons.entity.scheme.po;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -28,6 +30,11 @@ public class PtlSchemeInsuranceDrivingIntention {
     @TableField(exist = false)
     @Schema(description = "驾意险名称")
     private String productName;
+
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 }
 
 

+ 2 - 2
commons/src/main/java/com/jzg/commons/mapper/OperatorTrajectoryMapper.java

@@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface OperatorTrajectoryMapper extends BaseMapper<OperatorTrajectory>{
 
-    @Delete("delete from operator_trajectory where id = #{id} and system_code = #{systemCode}")
-    void deleteById(@Param("id") String id,@Param("systemCode") String systemCode);
+//    @Delete("delete from operator_trajectory where id = #{id} and system_code = #{systemCode}")
+//    void deleteById(@Param("id") String id,@Param("systemCode") String systemCode);
 }

+ 8 - 1
commons/src/main/java/com/jzg/commons/service/impl/OperatorTrajectoryServiceImpl.java

@@ -37,7 +37,14 @@ public class OperatorTrajectoryServiceImpl implements OperatorTrajectoryService
 
     @Override
     public void deleteById(String id,String systemCode) {
-        operatorTrajectoryMapper.deleteById(id,systemCode);
+//        operatorTrajectoryMapper.deleteById(id,systemCode);
+
+        // 定义查询条件
+        LambdaQueryWrapper<OperatorTrajectory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(OperatorTrajectory::getId, id)
+                .eq(OperatorTrajectory::getSystemCode, systemCode);
+        // 执行删除操作,返回受影响的行数
+        operatorTrajectoryMapper.delete(lambdaQueryWrapper);
     }
 
     @Override

+ 16 - 0
commons/src/main/java/com/jzg/commons/util/DateTimeUtils.java

@@ -1,5 +1,7 @@
 package com.jzg.commons.util;
 
+import cn.hutool.core.util.StrUtil;
+
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -8,6 +10,7 @@ import java.time.format.DateTimeParseException;
 public class DateTimeUtils {
 
     private static final String pattern = "yyyy-MM-dd HH:mm:ss";
+    private static final String patternYMD = "yyyyMMdd";
 
     // 标准日期格式
     private static final DateTimeFormatter DATE_FORMATTER =
@@ -92,4 +95,17 @@ public class DateTimeUtils {
     public static String getFormatTime(String format) {
         return LocalDateTime.now().format(DateTimeFormatter.ofPattern(format));
     }
+
+    /**
+     * 格式化localDate为yyyyMMdd格式
+     * @author lipf
+     * @date 2026/6/9 18:06
+     */
+    public static String fmtDate(LocalDate date) {
+        if(date == null){
+            return StrUtil.EMPTY;
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(patternYMD);
+        return formatter.format(date);
+    }
 }

+ 1 - 1
consoleStatistics/src/main/resources/mapper/ReportUploadExcelTaskMapper.xml

@@ -20,7 +20,7 @@
         from
         report_upload_excel_task
         <where>
-            and is_delete = 0
+            is_delete = 0
             <if test="vo.uploadUserId != null and vo.uploadUserId != ''">
                 AND upload_user_id = #{vo.uploadUserId}
             </if>

+ 1 - 2
partner/src/main/java/com/jzg/controller/DistributionController.java

@@ -23,8 +23,7 @@ public class DistributionController extends BaseController {
             log.info("入参:{}", JSONObject.toJSONString(vo));
             DistributionUtils.newSaveFeeInfo(vo.getInsOrders(), vo.getOrdersCosts(), vo.getLicenseNo());
         } catch (Exception e) {
-            e.printStackTrace();
-            log.error("合伙人分销明细数据生成失败:{}", e.getMessage());
+            log.error("合伙人分销明细数据生成失败:{}", e.getMessage(),e);
         }
         return HttpResult.ok();
     }

+ 2 - 2
partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java

@@ -36,8 +36,8 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     List<TeamOverviewVo> selectTeamOverview(@Param("params") AppHomeParams params);
 
 
-    @Delete("delete from partner_user where user_id=#{id}")
-    void deleteByUserId(String id);
+//    @Delete("delete from partner_user where user_id=#{id}")
+//    void deleteByUserId(String id);
 
     Object selectStatisticsMap(@Param("grade") String grade,@Param("params")AppHomeParams params);
 

+ 6 - 1
partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java

@@ -833,7 +833,12 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public void deleteByUserId(String id) {
-        baseMapper.deleteByUserId(id);
+//        baseMapper.deleteByUserId(id);
+        // 定义查询条件
+        LambdaQueryWrapper<PartnerUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PartnerUser::getUserId, id);
+        // 执行删除操作,返回受影响的行数
+        partnerUserMapper.delete(lambdaQueryWrapper);
     }
 
     @Override

+ 1 - 0
partner/src/main/java/com/jzg/utils/DistributionUtils.java

@@ -68,6 +68,7 @@ public class DistributionUtils {
         SysUserJzgInfo userInfoById = organizationClient.getPartUserInfoByMobile(insOrders.getRealQuoteUserId());
         if (Objects.isNull(userInfoById)){
             log.info("当前出单员不是合伙人用户:{}",insOrders.getRealQuoteUserId());
+            return;
         }
         String userId = userInfoById.getId();
         String userId3 = CalculateCommissionUtils.querySuperiorAndSubordinate(userId, GRADE_3);

+ 4 - 4
partner/src/main/resources/mapper/PartnerAttributeMapper.xml

@@ -53,7 +53,7 @@
         strategy,kh_days,fall_tick,fall_amount
         from partner_rule
         <where>
-            AND is_delete = 0
+            is_delete = 0
             <if test="grade != null">
                 AND grade = #{grade}
             </if>
@@ -67,7 +67,7 @@
         id,min,max,satisfy,rule_id,requirement,strategy,cycle,type,checked,fixed_days,task_days
         from partner_attribute
         <where>
-            AND is_delete = 0
+            is_delete = 0
             AND type = 1
             AND rule_id = #{id}
         </where>
@@ -79,7 +79,7 @@
         id,min,max,satisfy,rule_id,requirement,strategy,cycle,type,checked,fixed_days,task_days
         from partner_attribute
         <where>
-            AND is_delete = 0
+            is_delete = 0
             AND type = 3
             AND rule_id = #{id}
         </where>
@@ -91,7 +91,7 @@
         id,min,max,satisfy,rule_id,requirement,strategy,cycle,type,checked,fixed_days,task_days
         from partner_attribute
         <where>
-            AND is_delete = 0
+            is_delete = 0
             AND type = 2
             AND rule_id = #{id}
         </where>

+ 1 - 1
partner/src/main/resources/mapper/PartnerUserMapper.xml

@@ -67,7 +67,7 @@
         FROM
         partner_user
         <where>
-            AND is_delete = 0
+            is_delete = 0
             AND grade BETWEEN 1 AND 4
             <if test="queryVo.name != null and queryVo.name != ''">
                 and (name like concat('%', #{queryVo.name}, '%') or  mobile like concat('%', #{queryVo.name}, '%'))

+ 1 - 1
platform/src/main/java/com/jzg/mapper/SysRolePermsMapper.java

@@ -26,5 +26,5 @@ public interface SysRolePermsMapper extends BaseMapper<SysRolePerms> {
      * @author lipf
      * @date 2026/5/11 16:39
      */
-    void deleteByMenuId(String menuId);
+//    void deleteByMenuId(String menuId);
 }

+ 1 - 1
platform/src/main/java/com/jzg/mapper/SysUserRoleMapper.java

@@ -11,7 +11,7 @@ import java.util.List;
 public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
 
 
-    void deleteByUserId(@Param("userId") String userId);
+//    void deleteByUserId(@Param("userId") String userId);
 
     List<SysUserRole> selectByUserIdAndSysCodeOne(@Param("userId") String userId, @Param("systemCode") String systemCode);
 }

+ 7 - 1
platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.entity.dto.SysCommonFunctionDto;
 import com.jzg.commons.entity.po.SysMenu;
+import com.jzg.commons.entity.po.SysRolePerms;
 import com.jzg.commons.entity.po.SysSystemMenu;
 import com.jzg.commons.entity.po.SysUserRole;
 import com.jzg.commons.entity.vo.SystemMenuVo;
@@ -271,7 +272,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
     @Override
     public boolean deleteMenuById(String menuId) {
         log.info("根据序号删除对应的菜单信息:menuId=[{}]", menuId);
-        sysRolePermsMapper.deleteByMenuId(menuId);
+//        sysRolePermsMapper.deleteByMenuId(menuId);
+        // 定义查询条件
+        LambdaQueryWrapper<SysRolePerms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(SysRolePerms::getPermsId, menuId);
+        // 执行删除操作,返回受影响的行数
+        sysRolePermsMapper.delete(lambdaQueryWrapper);
         return this.removeById(menuId);
     }
 }

+ 5 - 1
platform/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java

@@ -198,7 +198,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
         this.updateById(user);
 
         // 删除当前用户与角色的关联信息
-        sysUserRoleMapper.deleteByUserId(user.getId());
+//        sysUserRoleMapper.deleteByUserId(user.getId());
+        LambdaQueryWrapper<SysUserRole> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(SysUserRole::getUserId, user.getId());
+        // 执行删除操作,返回受影响的行数
+        sysUserRoleMapper.delete(lambdaQueryWrapper);
 
         // 角色信息关联
         List<String> roleList = param.getRoleIdList();

+ 122 - 124
platform/src/main/resources/mapper/EsmInsCompanyMapper.xml

@@ -32,128 +32,130 @@
     <select id="getByLowerId80" resultType="java.lang.String">
         with recursive temp as (select id
                                 from esm_ins_company
-                                where id = #{companyId}
+                                where id = #{companyId} and is_delete = 0
                                 union all
                                 select t.id
                                 from esm_ins_company t
-                                         inner join temp t2 on t2.id = t.parent_id)
+                                         inner join temp t2 on t2.id = t.parent_id
+                                where t.is_delete = 0)
         select id
         from temp
     </select>
 
     <select id="getByLowerId57" resultType="java.lang.String">
         SELECT id
-        FROM (SELECT * FROM esm_ins_company ORDER BY parent_id, id) products_sorted,
+        FROM (SELECT * FROM esm_ins_company WHERE is_delete = 0 ORDER BY parent_id, id) products_sorted,
              (SELECT @pv := #{companyId}) initialisation
         WHERE find_in_set(parent_id, @pv)
-          AND length(
-                @pv := concat(@pv, ',', id))
+          AND length(@pv := concat(@pv, ',', id))
         UNION
         SELECT id
         FROM esm_ins_company
-        WHERE id = #{companyId}
+        WHERE id = #{companyId} and is_delete = 0
     </select>
 
     <select id="queryListByParentId" resultType="com.jzg.commons.entity.po.EsmInsCompany">
         select
-            a.name as "name",
-            a.id as "id"
-        from
-            esm_ins_company   a
+        a.name as "name",
+        a.id as "id"
+        from esm_ins_company a
         <where>
-            <if test="parentId  !=null  and  parentId  !=''">
-                a.parent_id=#{parentId}
+            a.is_delete = 0
+            <if test="parentId != null and parentId != ''">
+                and a.parent_id = #{parentId}
             </if>
         </where>
-
-
     </select>
+
     <select id="findOrderCompanyList" resultType="com.jzg.commons.entity.vo.EsmInsCompanyResVo">
         SELECT DISTINCT
-            ins.company_id AS id,
-            eic.name_simple AS NAME
-        FROM
-            ins_orders ins
-                LEFT JOIN esm_ins_company eic ON ins.company_id = eic.id
-        WHERE
-            IFNULL( ins.company_id, '' )!= ''
-	        AND IFNULL( eic.id, '' )!= ''
-        GROUP BY
-            ins.company_id
+        ins.company_id AS id,
+        eic.name_simple AS name
+        FROM ins_orders ins
+        LEFT JOIN esm_ins_company eic
+        ON ins.company_id = eic.id AND eic.is_delete = 0
+        <where>
+            ins.is_delete = 0
+            AND ins.company_id IS NOT NULL
+            AND ins.company_id != ''
+            AND eic.id IS NOT NULL
+            AND eic.id != ''
+        </where>
+        GROUP BY ins.company_id
     </select>
 
     <select id="getExternalAgreementCompanyList" resultType="com.jzg.commons.entity.vo.EsmInsCompanyResVo">
         SELECT DISTINCT
-            insurance_company_id AS id,
-            insurance_company AS NAME
-        FROM
-            ptl_agreement
+        pa.company_id AS id,
+        eic.name AS name
+        FROM ptl_agreement pa
+        LEFT JOIN esm_ins_company eic
+        ON pa.company_id = eic.id AND eic.is_delete = 0
         <where>
-            is_external = '1'
+            pa.is_external = '1' and pa.is_delete = 0
             <if test="name != null and name != ''">
-                and insurance_company like  concat('%',#{name},'%')
+                and eic.name like concat('%',#{name},'%')
             </if>
-
         </where>
-        GROUP BY
-            insurance_company_id,
-            insurance_company
+        GROUP BY pa.company_id
     </select>
+
     <select id="liveCompanyList" resultType="com.jzg.commons.entity.vo.EsmInsCompanyResVo">
         SELECT
-            eic.id,
-            eic.name,
-            eic.name_simple,
-            eic.remark
-        FROM
-            ptl_agreement pa
-                LEFT JOIN esm_ins_company eic ON pa.company_id = eic.id
-        where
-            pa.is_external = 0
-        GROUP BY
-            eic.id
+        eic.id,
+        eic.name,
+        eic.name_simple,
+        eic.remark
+        FROM ptl_agreement pa
+        LEFT JOIN esm_ins_company eic
+        ON pa.company_id = eic.id AND eic.is_delete = 0
+        <where>
+            pa.is_delete = 0
+            AND pa.is_external = 0
+            AND eic.id IS NOT NULL
+        </where>
+        GROUP BY eic.id
     </select>
-    <select id="findOrderPartnerCompanyList"
-            resultType="com.jzg.commons.entity.vo.EsmInsCompanyResVo">
+
+    <!-- 该sql不能使用,没有ins_area_company表 -->
+    <select id="findOrderPartnerCompanyList" resultType="com.jzg.commons.entity.vo.EsmInsCompanyResVo">
         SELECT DISTINCT
-            agree.partner_companies_id AS id,
-            company.name_simple AS NAME
-        FROM
-            ins_area_company iac
-                left join
-            ptl_agreement agree on iac.agreement_id= agree.id
-                left join
-            esm_ins_company company on agree.partner_companies_id= company.id
-        WHERE
-            IFNULL( agree.partner_companies_id, '' )!= ''
-        GROUP BY
-            agree.partner_companies_id,
-            company.name_simple
+        agree.partner_companies_id AS id,
+        company.name_simple AS name
+        FROM ins_area_company iac
+        LEFT JOIN ptl_agreement agree
+        ON iac.agreement_id = agree.id and agree.is_delete = 0
+        LEFT JOIN esm_ins_company company
+        ON agree.partner_companies_id = company.id AND company.is_delete = 0
+        <where>
+            iac.is_delete = 0
+            AND agree.partner_companies_id IS NOT NULL
+            AND agree.partner_companies_id != ''
+        </where>
+        GROUP BY agree.partner_companies_id, company.name_simple
     </select>
 
-
     <select id="leftList" resultType="com.jzg.commons.entity.vo.EsmInsCompanyResVo">
         SELECT
-            eic.id,
-            eic.name,
-            eic.name_simple,
-            eic.company_code,
-            eic.remark,
-            eic.parent_id,
-            eic.order_num,
-            eic.cn_name,
-            eic.type,
-            eic.logo
-        FROM
-            esm_ins_company eic
-        WHERE
-            1=1
-        <if test="name != null and name != ''">
-            and eic.name like  concat('%',#{name},'%')
-        </if>
+        eic.id,
+        eic.name,
+        eic.name_simple,
+        eic.company_code,
+        eic.remark,
+        eic.parent_id,
+        eic.order_num,
+        eic.cn_name,
+        eic.type,
+        eic.logo
+        FROM esm_ins_company eic
+        <where>
+            eic.is_delete = 0
+            <if test="name != null and name != ''">
+                and eic.name like concat('%',#{name},'%')
+            </if>
+        </where>
     </select>
 
-
     <resultMap id="EsmInsCompanyVo" type="com.jzg.commons.entity.vo.EsmInsCompanyVo">
         <id property="id" column="id" jdbcType="VARCHAR"/>
         <result property="code" column="code" jdbcType="VARCHAR"/>
@@ -181,72 +183,68 @@
 
     <select id="findTree" resultMap="EsmInsCompanyVo">
         SELECT
-            eic.id,
-            eic.code,
-            eic.name,
-            eic.name_simple,
-            eic.remark,
-            eic.company_code,
-            eic.parent_id,
-            eic.order_num,
-            eic.cn_name,
-            eic.type,
-            eic.logo,
-            suf.id logoFileId,
-            suf.file_name,
-            suf.file_type,
-            suf.bucket_name,
-            suf.etag
-        FROM
-            esm_ins_company eic
-        left join sys_upload_files suf on eic.logo = suf.id
-        WHERE
+        eic.id,
+        eic.code,
+        eic.name,
+        eic.name_simple,
+        eic.remark,
+        eic.company_code,
+        eic.parent_id,
+        eic.order_num,
+        eic.cn_name,
+        eic.type,
+        eic.logo,
+        suf.id logoFileId,
+        suf.file_name,
+        suf.file_type,
+        suf.bucket_name,
+        suf.etag
+        FROM esm_ins_company eic
+        LEFT JOIN sys_upload_files suf
+        ON eic.logo = suf.id AND suf.is_delete = 0
+        <where>
             eic.is_delete = 0
-        <if test="name != null and name != ''">
-            and eic.name like  concat('%',#{name},'%')
-        </if>
-        <if test="type != null and type != ''">
-            and eic.type = #{type}
-        </if>
+            <if test="name != null and name != ''">
+                and eic.name like concat('%',#{name},'%')
+            </if>
+            <if test="type != null and type != ''">
+                and eic.type = #{type}
+            </if>
+        </where>
     </select>
 
     <select id="getParentIds" resultType="String">
         WITH RECURSIVE t AS (
-            SELECT id
-            FROM esm_ins_company
-            WHERE id in
-        <foreach collection="companyIds"
-                 item="id"
-                 open="("
-                 close=")"
-                 separator=",">
+        SELECT id
+        FROM esm_ins_company
+        WHERE id in
+        <foreach collection="companyIds" item="id" open="(" close=")" separator=",">
             #{id}
         </foreach>
-            UNION ALL
-
-            SELECT c.id
-            FROM esm_ins_company c
-                     JOIN t ON c.parent_id = t.id
+        AND is_delete = 0
+        UNION ALL
+        SELECT c.id
+        FROM esm_ins_company c
+        JOIN t ON c.parent_id = t.id
+        WHERE c.is_delete = 0
         )
-        SELECT *
-        FROM t;
+        SELECT id FROM t;
     </select>
 
     <select id="getTopCompanyId" resultType="String">
         WITH RECURSIVE t AS (
             SELECT id, parent_id
             FROM esm_ins_company
-            WHERE id = ${companyId}
-
+            WHERE id = #{companyId} AND is_delete = 0
             UNION ALL
             SELECT c.id, c.parent_id
             FROM esm_ins_company c
                      INNER JOIN t pt ON c.id = pt.parent_id
+            WHERE c.is_delete = 0
         )
         SELECT id
         FROM t
         where parent_id = 0;
     </select>
 
-
-</mapper>
+</mapper>

+ 58 - 51
platform/src/main/resources/mapper/InsCompanyClauseMapper.xml

@@ -6,30 +6,32 @@
 
     <select id="getClausePage" resultType="com.jzg.commons.entity.vo.InsCompanyClauseVo">
         SELECT
-            eic.name_simple AS company_name,
-            eic.company_code AS company_code,
-            icc.*
+        eic.name_simple AS company_name,
+        eic.company_code AS company_code,
+        icc.*
         FROM
-            ins_company_clause icc
-            INNER JOIN esm_ins_company eic ON eic.id = icc.company_id
-        where
-            1=1
-          AND icc.is_delete = 0
-        <if test="param.companyId != null and param.companyId != ''">
-            AND company_id = #{param.companyId}
-        </if>
-        <if test="param.riskCode != null and param.riskCode != ''">
-            AND risk_code = #{param.riskCode}
-        </if>
-        <if test="param.clauseCode != null and param.clauseCode != ''">
-            AND clause_code LIKE CONCAT('%', #{param.clauseCode}, '%')
-        </if>
-        <if test="param.clauseName != null and param.clauseName != ''">
-            AND clause_name LIKE CONCAT('%', #{param.clauseName}, '%')
-        </if>
-        <if test="param.clauseContent != null and param.clauseContent != ''">
-            AND clause_content LIKE CONCAT('%', #{param.clauseContent}, '%')
-        </if>
+        ins_company_clause icc
+        INNER JOIN esm_ins_company eic
+        ON eic.id = icc.company_id
+        AND eic.is_delete = 0
+        <where>
+            AND icc.is_delete = 0
+            <if test="param.companyId != null and param.companyId != ''">
+                AND company_id = #{param.companyId}
+            </if>
+            <if test="param.riskCode != null and param.riskCode != ''">
+                AND risk_code = #{param.riskCode}
+            </if>
+            <if test="param.clauseCode != null and param.clauseCode != ''">
+                AND clause_code LIKE CONCAT('%', #{param.clauseCode}, '%')
+            </if>
+            <if test="param.clauseName != null and param.clauseName != ''">
+                AND clause_name LIKE CONCAT('%', #{param.clauseName}, '%')
+            </if>
+            <if test="param.clauseContent != null and param.clauseContent != ''">
+                AND clause_content LIKE CONCAT('%', #{param.clauseContent}, '%')
+            </if>
+        </where>
         order by icc.create_time desc
     </select>
 
@@ -40,37 +42,42 @@
         icc.*
         FROM
         ins_company_clause icc
-        INNER JOIN esm_ins_company eic ON eic.id = icc.company_id
-        where
-        1=1
-        AND icc.is_delete = 0
-        <if test="param.companyId != null and param.companyId != ''">
-            AND company_id = #{param.companyId}
-        </if>
-        <if test="param.riskCode != null and param.riskCode != ''">
-            AND risk_code = #{param.riskCode}
-        </if>
-        <if test="param.clauseCode != null and param.clauseCode != ''">
-            AND clause_code LIKE CONCAT('%', #{param.clauseCode}, '%')
-        </if>
-        <if test="param.clauseName != null and param.clauseName != ''">
-            AND clause_name LIKE CONCAT('%', #{param.clauseName}, '%')
-        </if>
-        <if test="param.clauseContent != null and param.clauseContent != ''">
-            AND clause_content LIKE CONCAT('%', #{param.clauseContent}, '%')
-        </if>
+        INNER JOIN esm_ins_company eic
+        ON eic.id = icc.company_id
+        AND eic.is_delete = 0
+        <where>
+            AND icc.is_delete = 0
+            <if test="param.companyId != null and param.companyId != ''">
+                AND company_id = #{param.companyId}
+            </if>
+            <if test="param.riskCode != null and param.riskCode != ''">
+                AND risk_code = #{param.riskCode}
+            </if>
+            <if test="param.clauseCode != null and param.clauseCode != ''">
+                AND clause_code LIKE CONCAT('%', #{param.clauseCode}, '%')
+            </if>
+            <if test="param.clauseName != null and param.clauseName != ''">
+                AND clause_name LIKE CONCAT('%', #{param.clauseName}, '%')
+            </if>
+            <if test="param.clauseContent != null and param.clauseContent != ''">
+                AND clause_content LIKE CONCAT('%', #{param.clauseContent}, '%')
+            </if>
+        </where>
     </select>
 
     <select id="getClause" resultType="com.jzg.commons.entity.vo.InsCompanyClauseVo">
         SELECT
-            eic.name_simple AS company_name,
-            eic.company_code AS company_code,
-            icc.*
+        eic.name_simple AS company_name,
+        eic.company_code AS company_code,
+        icc.*
         FROM
-            ins_company_clause icc
-            INNER JOIN esm_ins_company eic ON eic.id = icc.company_id
-        where
-            1=1
-          AND icc.id = #{id}
+        ins_company_clause icc
+        INNER JOIN esm_ins_company eic
+        ON eic.id = icc.company_id
+        AND eic.is_delete = 0
+        <where>
+            AND icc.is_delete = 0
+            AND icc.id = #{id}
+        </where>
     </select>
-</mapper>
+</mapper>

+ 21 - 19
platform/src/main/resources/mapper/JyxConfigMapper.xml

@@ -28,30 +28,30 @@
             <result column="blame_jyx_config_id" property="jyxConfigId"/>
         </collection>
         <collection property="settingList" ofType="com.jzg.commons.entity.po.jyxSetting">
-                <id column="setting_id" property="id"/>
-                <result column="seats" property="seats"/>
-                <result column="setting_coverage" property="coverage"/>
-                <result column="setting_premium" property="premium"/>
-                <result column="setting_system_code" property="systemCode"/>
-                <result column="setting_jyx_config_id" property="jyxConfigId"/>
+            <id column="setting_id" property="id"/>
+            <result column="seats" property="seats"/>
+            <result column="setting_coverage" property="coverage"/>
+            <result column="setting_premium" property="premium"/>
+            <result column="setting_system_code" property="systemCode"/>
+            <result column="setting_jyx_config_id" property="jyxConfigId"/>
         </collection>
     </resultMap>
 
 
     <sql id="params">
-       jc.`id`, jc.`product_type`,jc.`parent_id`, jc.`product_name`,jc.`alias`,jc.`company`, jc.`product_code`,jc.`connection_method`,jc.`premium_setting`, jc.`coverage` as jsCoverage, jc.`premium` as jsPremium, jc.`system_code`, jc.`is_delete` as isDelete
+        jc.`id`, jc.`product_type`,jc.`parent_id`, jc.`product_name`,jc.`alias`,jc.`company`, jc.`product_code`,jc.`connection_method`,jc.`premium_setting`, jc.`coverage` as jsCoverage, jc.`premium` as jsPremium, jc.`system_code`, jc.`is_delete` as isDelete
     </sql>
 
     <select id="jyxList" resultMap="jyxConfigVo">
         select
         <include refid="params"/> ,
-            jb.id as blame_id,jb.blame,jb.blame_code,jb.blame_coverage,jb.blame_premium,jb.system_code as blame_system_code,jb.jyx_config_id as blame_jyx_config_id,
-            js.id as setting_id,js.seats,js.coverage as setting_coverage,js.premium as setting_premium,js.system_code as setting_system_code,js.jyx_config_id as setting_jyx_config_id
-            from jyx_config jc
-            left join jyx_blame jb on jc.id = jb.jyx_config_id
-            left join jyx_setting js on jc.id = js.jyx_config_id
+        jb.id as blame_id,jb.blame,jb.blame_code,jb.blame_coverage,jb.blame_premium,jb.system_code as blame_system_code,jb.jyx_config_id as blame_jyx_config_id,
+        js.id as setting_id,js.seats,js.coverage as setting_coverage,js.premium as setting_premium,js.system_code as setting_system_code,js.jyx_config_id as setting_jyx_config_id
+        from jyx_config jc
+        left join jyx_blame jb on jc.id = jb.jyx_config_id AND jb.is_delete = 0
+        left join jyx_setting js on jc.id = js.jyx_config_id AND js.is_delete = 0
         <where>
-                jc.is_delete = 0
+            jc.is_delete = 0
             <if test="params != null and params != ''">
                 and (jc.product_name like concat('%',#{params},'%') or jc.alias like concat('%',#{params},'%'))
             </if>
@@ -78,9 +78,10 @@
         jb.id as blame_id,jb.blame,jb.blame_code,jb.blame_coverage,jb.blame_premium,jb.system_code as blame_system_code,jb.jyx_config_id as blame_jyx_config_id,
         js.id as setting_id,js.seats,js.coverage as setting_coverage,js.premium as setting_premium,js.system_code as setting_system_code,js.jyx_config_id as setting_jyx_config_id
         from jyx_config jc
-        left join jyx_blame jb on jc.id = jb.jyx_config_id
-        left join jyx_setting js on jc.id = js.jyx_config_id
+        left join jyx_blame jb on jc.id = jb.jyx_config_id AND jb.is_delete = 0
+        left join jyx_setting js on jc.id = js.jyx_config_id AND js.is_delete = 0
         <where>
+            jc.is_delete = 0
             <if test="ids != null and ids != ''">
                 and jc.id in
                 <foreach collection="ids" item="id" open="(" separator="," close=")">
@@ -99,9 +100,10 @@
         jb.id as blame_id,jb.blame,jb.blame_code,jb.blame_coverage,jb.blame_premium,jb.system_code as blame_system_code,jb.jyx_config_id as blame_jyx_config_id,
         js.id as setting_id,js.seats,js.coverage as setting_coverage,js.premium as setting_premium,js.system_code as setting_system_code,js.jyx_config_id as setting_jyx_config_id
         from jyx_config jc
-        left join jyx_blame jb on jc.id = jb.jyx_config_id
-        left join jyx_setting js on jc.id = js.jyx_config_id
+        left join jyx_blame jb on jc.id = jb.jyx_config_id AND jb.is_delete = 0
+        left join jyx_setting js on jc.id = js.jyx_config_id AND js.is_delete = 0
         <where>
+            jc.is_delete = 0
             <if test="ids != null and ids != ''">
                 and jc.id in
                 <foreach collection="ids" item="id" open="(" separator="," close=")">
@@ -120,8 +122,8 @@
         jb.id as blame_id,jb.blame,jb.blame_code,jb.blame_coverage,jb.blame_premium,jb.system_code as blame_system_code,jb.jyx_config_id as blame_jyx_config_id,
         js.id as setting_id,js.seats,js.coverage as setting_coverage,js.premium as setting_premium,js.system_code as setting_system_code,js.jyx_config_id as setting_jyx_config_id
         from jyx_config jc
-        left join jyx_blame jb on jc.id = jb.jyx_config_id
-        left join jyx_setting js on jc.id = js.jyx_config_id
+        left join jyx_blame jb on jc.id = jb.jyx_config_id AND jb.is_delete = 0
+        left join jyx_setting js on jc.id = js.jyx_config_id AND js.is_delete = 0
         <where>
             jc.is_delete = 0 and jc.parent_id = 0
             <if test="company != null and company != ''">

+ 33 - 33
platform/src/main/resources/mapper/PtlAgreementAttributionMapper.xml

@@ -28,29 +28,29 @@
         sd.name as deptName
         from
         ptl_agreement_attribution paa
-        left join ptl_agreement_url pau on paa.login_url = pau.id
-        left join sys_dept sd on paa.user_dept = sd.id
-        left join esm_ins_company eic on paa.ins_company_id = eic.id
-        where
-        1=1
-        and paa.is_delete = '0'
-        <if test="ptlAgreementAttributionQueryVo.username != null and ptlAgreementAttributionQueryVo.username != ''">
-            and (paa.username like concat('%',#{ptlAgreementAttributionQueryVo.username},'%')
-            or paa.user_abbr like concat('%',#{ptlAgreementAttributionQueryVo.username},'%')
-            or eic.name_simple like concat('%',#{ptlAgreementAttributionQueryVo.username},'%'))
-        </if>
-        <if test="ptlAgreementAttributionQueryVo.quoteStatus != null and ptlAgreementAttributionQueryVo.quoteStatus != ''">
-            and paa.quote_status = #{ptlAgreementAttributionQueryVo.quoteStatus}
-        </if>
-        <if test="ptlAgreementAttributionQueryVo.insCompanyId != null and ptlAgreementAttributionQueryVo.insCompanyId != ''">
-            and paa.ins_company_id = #{ptlAgreementAttributionQueryVo.insCompanyId}
-        </if>
-        <if test="ptlAgreementAttributionQueryVo.useStatus != null and ptlAgreementAttributionQueryVo.useStatus != ''">
-            and paa.use_status = #{ptlAgreementAttributionQueryVo.useStatus}
-        </if>
-        <if test="ptlAgreementAttributionQueryVo.userDept != null and ptlAgreementAttributionQueryVo.userDept != ''">
-            and paa.user_dept = #{ptlAgreementAttributionQueryVo.userDept}
-        </if>
+        left join ptl_agreement_url pau on paa.login_url = pau.id and pau.is_delete = '0'
+        left join sys_dept sd on paa.user_dept = sd.id and sd.is_delete = '0'
+        left join esm_ins_company eic on paa.ins_company_id = eic.id and eic.is_delete = '0'
+        <where>
+            and paa.is_delete = '0'
+            <if test="ptlAgreementAttributionQueryVo.username != null and ptlAgreementAttributionQueryVo.username != ''">
+                and (paa.username like concat('%',#{ptlAgreementAttributionQueryVo.username},'%')
+                or paa.user_abbr like concat('%',#{ptlAgreementAttributionQueryVo.username},'%')
+                or eic.name_simple like concat('%',#{ptlAgreementAttributionQueryVo.username},'%'))
+            </if>
+            <if test="ptlAgreementAttributionQueryVo.quoteStatus != null and ptlAgreementAttributionQueryVo.quoteStatus != ''">
+                and paa.quote_status = #{ptlAgreementAttributionQueryVo.quoteStatus}
+            </if>
+            <if test="ptlAgreementAttributionQueryVo.insCompanyId != null and ptlAgreementAttributionQueryVo.insCompanyId != ''">
+                and paa.ins_company_id = #{ptlAgreementAttributionQueryVo.insCompanyId}
+            </if>
+            <if test="ptlAgreementAttributionQueryVo.useStatus != null and ptlAgreementAttributionQueryVo.useStatus != ''">
+                and paa.use_status = #{ptlAgreementAttributionQueryVo.useStatus}
+            </if>
+            <if test="ptlAgreementAttributionQueryVo.userDept != null and ptlAgreementAttributionQueryVo.userDept != ''">
+                and paa.user_dept = #{ptlAgreementAttributionQueryVo.userDept}
+            </if>
+        </where>
         order by paa.create_time desc
     </select>
 
@@ -62,14 +62,14 @@
         eic.company_code as companyCode
         from
         ptl_agreement_attribution paa
-        left join ptl_agreement_url pau on paa.login_url = pau.id
-        left join sys_dept sd on paa.user_dept = sd.id
-        left join esm_ins_company eic on paa.ins_company_id = eic.id
-        where
-        1=1
-        and paa.is_delete = '0'
-        <if test="id != null and id != ''">
-            and paa.id = #{id}
-        </if>
+        left join ptl_agreement_url pau on paa.login_url = pau.id and pau.is_delete = '0'
+        left join sys_dept sd on paa.user_dept = sd.id and sd.is_delete = '0'
+        left join esm_ins_company eic on paa.ins_company_id = eic.id and eic.is_delete = '0'
+        <where>
+            and paa.is_delete = '0'
+            <if test="id != null and id != ''">
+                and paa.id = #{id}
+            </if>
+        </where>
     </select>
-</mapper>
+</mapper>

+ 7 - 5
platform/src/main/resources/mapper/PtlAgreementMapper.xml

@@ -10,18 +10,20 @@
         <foreach collection="companyIds" item="cid" open="(" separator="," close=")">
             #{cid}
         </foreach>
-
+        AND is_delete = 0
         UNION ALL
-
         SELECT c.id
         FROM esm_ins_company c
         JOIN company_tree ct ON c.parent_id = ct.id
+        WHERE c.is_delete = 0
         )
         SELECT pa.*
         FROM ptl_agreement_dept pad
-        JOIN ptl_agreement pa ON pad.agreement_id = pa.id
+        JOIN ptl_agreement pa ON pad.agreement_id = pa.id AND pa.is_delete = 0
         JOIN company_tree ct ON pa.company_id = ct.id
-        WHERE pa.is_delete = 0
-        AND pad.dept_id = #{deptId}
+        <where>
+            AND pad.is_delete = 0
+            AND pad.dept_id = #{deptId}
+        </where>
     </select>
 </mapper>

+ 10 - 9
platform/src/main/resources/mapper/PtlAgreementUrlMapper.xml

@@ -11,14 +11,15 @@
         eic.name as companyName
         from
         ptl_agreement_url pau
-        left join esm_ins_company eic on pau.company_id = eic.id
-        where
-        1=1
-        <if test="ptlAgreementUrlVo.companyId != null and ptlAgreementUrlVo.companyId != ''">
-            and pau.company_id = #{ptlAgreementUrlVo.companyId}
-        </if>
-        <if test="ptlAgreementUrlVo.name != null and ptlAgreementUrlVo.name != ''">
-            and pau.name like concat('%',#{ptlAgreementUrlVo.name},'%')
-        </if>
+        left join esm_ins_company eic on pau.company_id = eic.id and eic.is_delete = 0
+        <where>
+            pau.is_delete = 0
+            <if test="ptlAgreementUrlVo.companyId != null and ptlAgreementUrlVo.companyId != ''">
+                and pau.company_id = #{ptlAgreementUrlVo.companyId}
+            </if>
+            <if test="ptlAgreementUrlVo.name != null and ptlAgreementUrlVo.name != ''">
+                and pau.name like concat('%',#{ptlAgreementUrlVo.name},'%')
+            </if>
+        </where>
     </select>
 </mapper>

+ 32 - 18
platform/src/main/resources/mapper/SysMenuMapper.xml

@@ -4,23 +4,29 @@
     <select id="getSystemMenus" resultType="com.jzg.commons.entity.po.SysMenu">
         SELECT sm.*
         FROM sys_system_menu ssm
-                 LEFT JOIN sys_menu sm ON ssm.menu_id = sm.id
-        WHERE ssm.system_code = #{systemCode}
+        LEFT JOIN sys_menu sm ON ssm.menu_id = sm.id AND sm.is_delete = 0
+        <where>
+            ssm.is_delete = 0
+            AND ssm.system_code = #{systemCode}
+        </where>
     </select>
 
     <select id="getSystemMenusRecursion" resultType="com.jzg.commons.entity.po.SysMenu">
         WITH RECURSIVE company_tree AS (SELECT sm.*
                                         FROM sys_system_menu ssm
-                                                 LEFT JOIN sys_menu sm ON ssm.menu_id = sm.id
+                                                 LEFT JOIN sys_menu sm ON ssm.menu_id = sm.id AND sm.is_delete = 0
                                         WHERE ssm.system_code = #{systemCode}
+                                          AND ssm.is_delete = 0
 
                                         UNION ALL
 
                                         SELECT sm.*
                                         FROM sys_menu sm
-                                                 INNER JOIN company_tree mt ON sm.parent_id = mt.id)
+                                                 INNER JOIN company_tree mt ON sm.parent_id = mt.id
+                                        WHERE sm.is_delete = 0)
         SELECT *
         FROM company_tree
+        WHERE is_delete = 0
         ORDER BY parent_id, id;
 
     </select>
@@ -28,24 +34,32 @@
     <select id="getMenuByRoleId" resultType="com.jzg.commons.entity.po.SysMenu">
         SELECT sm.*
         FROM sys_role_perms srp
-        LEFT JOIN sys_menu sm ON srp.perms_id = sm.id
-        WHERE srp.role_id IN
-        <foreach collection="roleIds" item="roleId" open="(" separator="," close=")">
-            #{roleId}
-        </foreach>
+        LEFT JOIN sys_menu sm ON srp.perms_id = sm.id AND sm.is_delete = 0
+        <where>
+            srp.is_delete = 0
+            <if test="roleIds != null and roleIds.size > 0">
+                AND srp.role_id IN
+                <foreach collection="roleIds" item="roleId" open="(" separator="," close=")">
+                    #{roleId}
+                </foreach>
+            </if>
+        </where>
     </select>
 
     <select id="getCommonFunction" resultType="com.jzg.commons.entity.dto.SysCommonFunctionDto">
         select scf.id, scf.title, sm.name, scf.ican
         from sys_common_function scf
-                 left join sys_menu sm on scf.menu_id = sm.id
-        where sm.id in (select srp.perms_id
-                        from sys_role_perms srp
-                                 left join sys_user_role sur on sur.role_id = srp.role_id
-                                 left join sys_user_jzg_info suji on suji.user_id = sur.user_id
-                        where suji.user_id = #{userId}
-                          and suji.system_code = #{systemCode})
+        left join sys_menu sm on scf.menu_id = sm.id AND sm.is_delete = 0
+        <where>
+            scf.is_delete = 0
+            AND sm.id in (select srp.perms_id
+            from sys_role_perms srp
+            left join sys_user_role sur on sur.role_id = srp.role_id AND sur.is_delete = 0
+            left join sys_user_jzg_info suji on suji.user_id = sur.user_id AND suji.is_delete = 0
+            where suji.user_id = #{userId}
+            and suji.system_code = #{systemCode}
+            and srp.is_delete = 0)
+        </where>
     </select>
 
-
-</mapper>
+</mapper>

+ 17 - 13
platform/src/main/resources/mapper/SysRoleMapper.xml

@@ -21,18 +21,21 @@
 
     <select id="getAllRoleMenu" resultMap="RoleMenuMap">
         SELECT
-            ss.id,
-            ss.sys_code as systemCode,
-            ss.sys_name as systemName,
-            sr.id as roleId,
-            sr.name as roleName,
-            sr.remark,
-            srp.perms_id as permsId,
-            srp.perms
+        ss.id,
+        ss.sys_code as systemCode,
+        ss.sys_name as systemName,
+        sr.id as roleId,
+        sr.name as roleName,
+        sr.remark,
+        srp.perms_id as permsId,
+        srp.perms
         FROM
-            sys_system ss
-                LEFT JOIN sys_role sr ON sr.system_code = ss.sys_code
-                LEFT JOIN sys_role_perms srp ON sr.id = srp.role_id
+        sys_system ss
+        LEFT JOIN sys_role sr ON sr.system_code = ss.sys_code AND sr.is_delete = 0
+        LEFT JOIN sys_role_perms srp ON sr.id = srp.role_id AND srp.is_delete = 0
+        <where>
+            ss.is_delete = 0
+        </where>
     </select>
 
     <select id="queryByUserIds" resultType="com.jzg.commons.entity.po.SysUserRole">
@@ -40,8 +43,9 @@
         sur.role_id, sur.user_id,sr.name
         FROM
         sys_user_role sur
-        LEFT JOIN sys_role sr ON sur.role_id = sr.id
+        LEFT JOIN sys_role sr ON sur.role_id = sr.id AND sr.is_delete = 0
         <where>
+            sur.is_delete = 0
             <if test="idList != null and idList.size()" >
                 AND sur.user_id in
                 <foreach collection="idList" item="item" open="(" separator="," close=")">
@@ -50,4 +54,4 @@
             </if>
         </where>
     </select>
-</mapper>
+</mapper>

+ 16 - 13
platform/src/main/resources/mapper/SysRolePermsMapper.xml

@@ -3,31 +3,34 @@
 <mapper namespace="com.jzg.mapper.SysRolePermsMapper">
 
     <!--根据菜单序号删除菜单和角色的对应关系 2026年5月11日16:41:08 lipf -->
-    <delete id="deleteByMenuId">
+   <!-- <delete id="deleteByMenuId">
         delete  from sys_role_perms srp where srp.perms_id = #{menuId}
-    </delete>
+    </delete>-->
 
     <select id="getByRoleId" resultType="com.jzg.commons.entity.po.SysRolePerms">
         select id, role_id as roleId, perms_id as permsId, perms
         from sys_role_perms
         <where>
+            is_delete = 0
             <if test="id != null and id != ''">
-                role_id = #{id}
+                AND role_id = #{id}
             </if>
         </where>
     </select>
 
     <select id="getByRoleIdNew" resultType="com.jzg.commons.entity.po.SysRolePerms">
         SELECT
-            srp.id AS role_id,
-            sm.id AS perms_id,
-            sm.perms,
-            sm.type,
-            srp.half_checked
+        srp.id AS role_id,
+        sm.id AS perms_id,
+        sm.perms,
+        sm.type,
+        srp.half_checked
         FROM
-            sys_menu sm
-                LEFT JOIN sys_role_perms srp ON srp.perms_id = sm.id
-        WHERE
-            role_id = #{roleId}
+        sys_menu sm
+        LEFT JOIN sys_role_perms srp ON srp.perms_id = sm.id AND srp.is_delete = 0
+        <where>
+            sm.is_delete = 0
+            AND srp.role_id = #{roleId}
+        </where>
     </select>
-</mapper>
+</mapper>

+ 28 - 26
platform/src/main/resources/mapper/SysSystemMapper.xml

@@ -47,6 +47,7 @@
     <select id="queryPage" resultType="com.jzg.commons.entity.vo.SysSystemVo">
         <include refid="selectSystemVo"/>
         <where>
+            is_delete = 0
             <if test="sysSystemVo.provinceId != null and sysSystemVo.provinceId != ''">
                 and province_id = #{sysSystemVo.provinceId}
             </if>
@@ -72,6 +73,7 @@
     <select id="queryList" resultType="com.jzg.commons.entity.vo.SysSystemVo">
         <include refid="selectSystemVo"/>
         <where>
+            is_delete = 0
             <if test="sysSystemVo.searchValue != null and sysSystemVo.searchValue != ''">
                 AND (
                 sys_name LIKE concat('%', #{sysSystemVo.searchValue}, '%')
@@ -85,34 +87,34 @@
 
     <select id="getCompanyList" resultType="com.jzg.commons.entity.po.EsmInsCompany">
         SELECT
-            eic.id,
-            eic.code,
-            eic.company_code,
-            eic.name,
-            eic.parent_id,
-            eic.name_simple,
-            eic.remark,
-            eic.order_num,
-            eic.cn_name,
-            eic.type,
-            count(psi.id) as count,
-            suf.file_name as logo
+        eic.id,
+        eic.code,
+        eic.company_code,
+        eic.name,
+        eic.parent_id,
+        eic.name_simple,
+        eic.remark,
+        eic.order_num,
+        eic.cn_name,
+        eic.type,
+        count(psi.id) as count,
+        suf.file_name as logo
         FROM
-            esm_ins_company eic
-                left join sys_upload_files suf on eic.logo = suf.id
-                left join ptl_scheme ps on eic.id = ps.company_id
-                left join ptl_scheme_info psi on ps.id = psi.scheme_id
-        WHERE
+        esm_ins_company eic
+        left join sys_upload_files suf on eic.logo = suf.id and suf.is_delete = 0
+        left join ptl_scheme ps on eic.id = ps.company_id and ps.is_delete = 0
+        left join ptl_scheme_info psi on ps.id = psi.scheme_id and psi.is_delete = 0
+        <where>
             eic.parent_id = 0
-          AND
-            eic.is_delete = 0
-        <if test="companyIds != null and companyIds.size() > 0">
-            and eic.id in
-            <foreach collection="companyIds" item="item" index="index" open="(" separator="," close=")">
-                #{item}
-            </foreach>
-        </if>
+            AND eic.is_delete = 0
+            <if test="companyIds != null and companyIds.size() > 0">
+                and eic.id in
+                <foreach collection="companyIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
         group by eic.id
         order by count desc
     </select>
-</mapper>
+</mapper>

+ 54 - 50
platform/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -5,54 +5,54 @@
 <mapper namespace="com.jzg.mapper.SysUserJzgInfoMapper">
 
     <resultMap id="BaseResultMap" type="com.jzg.commons.entity.po.SysUserJzgInfo">
-            <id property="id" column="id" jdbcType="VARCHAR"/>
-            <result property="userId" column="user_id" jdbcType="VARCHAR"/>
-            <result property="systemCode" column="system_code" jdbcType="VARCHAR"/>
-            <result property="status" column="status" jdbcType="TINYINT"/>
-            <result property="deptId" column="dept_id" jdbcType="VARCHAR"/>
-            <result property="openId" column="open_id" jdbcType="VARCHAR"/>
-            <result property="alipay" column="alipay" jdbcType="VARCHAR"/>
-            <result property="approvalOpinion" column="approval_opinion" jdbcType="VARCHAR"/>
-            <result property="identity" column="identity" jdbcType="VARCHAR"/>
-            <result property="identityTimeStart" column="identity_time_start" jdbcType="VARCHAR"/>
-            <result property="identityTimeEnd" column="identity_time_end" jdbcType="VARCHAR"/>
-            <result property="logoutTime" column="logout_time" jdbcType="DATE"/>
-            <result property="headSculpture" column="head_sculpture" jdbcType="VARCHAR"/>
-            <result property="factorVerify" column="factor_verify" jdbcType="TINYINT"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
-            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
-            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
-            <result property="address" column="address" jdbcType="VARCHAR"/>
-            <result property="nations" column="nations" jdbcType="VARCHAR"/>
-            <result property="bankName" column="bank_name" jdbcType="VARCHAR"/>
-            <result property="bankCardId" column="bank_card_id" jdbcType="VARCHAR"/>
-            <result property="koseki" column="koseki" jdbcType="VARCHAR"/>
-            <result property="birthday" column="birthday" jdbcType="DATE"/>
-            <result property="maritalStatus" column="marital_status" jdbcType="VARCHAR"/>
-            <result property="politicsStatus" column="politics_status" jdbcType="VARCHAR"/>
-            <result property="health" column="health" jdbcType="VARCHAR"/>
-            <result property="postalCode" column="postal_code" jdbcType="VARCHAR"/>
-            <result property="bloodType" column="blood_type" jdbcType="VARCHAR"/>
-            <result property="education" column="education" jdbcType="VARCHAR"/>
-            <result property="school" column="school" jdbcType="VARCHAR"/>
-            <result property="graduationTime" column="graduation_time" jdbcType="DATE"/>
-            <result property="isComputer" column="is_computer" jdbcType="TINYINT"/>
-            <result property="formerEmployer" column="former_employer" jdbcType="VARCHAR"/>
-            <result property="entryTime" column="entry_time" jdbcType="DATE"/>
-            <result property="agentQualificationCode" column="agent_qualification_code" jdbcType="VARCHAR"/>
-            <result property="emergencyContactTel" column="emergency_contact_tel" jdbcType="VARCHAR"/>
-            <result property="emergencyContactName" column="emergency_contact_name" jdbcType="VARCHAR"/>
-            <result property="remark" column="remark" jdbcType="VARCHAR"/>
-            <result property="email" column="email" jdbcType="VARCHAR"/>
-            <result property="sex" column="sex" jdbcType="VARCHAR"/>
-            <result property="speciality" column="speciality" jdbcType="VARCHAR"/>
-            <result property="salary" column="salary" jdbcType="DECIMAL"/>
-            <result property="salaryLevel" column="salary_level" jdbcType="VARCHAR"/>
-            <result property="liveAddress" column="live_address" jdbcType="VARCHAR"/>
-            <result property="province" column="province" jdbcType="VARCHAR"/>
-            <result property="city" column="city" jdbcType="VARCHAR"/>
-            <result property="district" column="district" jdbcType="VARCHAR"/>
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="systemCode" column="system_code" jdbcType="VARCHAR"/>
+        <result property="status" column="status" jdbcType="TINYINT"/>
+        <result property="deptId" column="dept_id" jdbcType="VARCHAR"/>
+        <result property="openId" column="open_id" jdbcType="VARCHAR"/>
+        <result property="alipay" column="alipay" jdbcType="VARCHAR"/>
+        <result property="approvalOpinion" column="approval_opinion" jdbcType="VARCHAR"/>
+        <result property="identity" column="identity" jdbcType="VARCHAR"/>
+        <result property="identityTimeStart" column="identity_time_start" jdbcType="VARCHAR"/>
+        <result property="identityTimeEnd" column="identity_time_end" jdbcType="VARCHAR"/>
+        <result property="logoutTime" column="logout_time" jdbcType="DATE"/>
+        <result property="headSculpture" column="head_sculpture" jdbcType="VARCHAR"/>
+        <result property="factorVerify" column="factor_verify" jdbcType="TINYINT"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+        <result property="address" column="address" jdbcType="VARCHAR"/>
+        <result property="nations" column="nations" jdbcType="VARCHAR"/>
+        <result property="bankName" column="bank_name" jdbcType="VARCHAR"/>
+        <result property="bankCardId" column="bank_card_id" jdbcType="VARCHAR"/>
+        <result property="koseki" column="koseki" jdbcType="VARCHAR"/>
+        <result property="birthday" column="birthday" jdbcType="DATE"/>
+        <result property="maritalStatus" column="marital_status" jdbcType="VARCHAR"/>
+        <result property="politicsStatus" column="politics_status" jdbcType="VARCHAR"/>
+        <result property="health" column="health" jdbcType="VARCHAR"/>
+        <result property="postalCode" column="postal_code" jdbcType="VARCHAR"/>
+        <result property="bloodType" column="blood_type" jdbcType="VARCHAR"/>
+        <result property="education" column="education" jdbcType="VARCHAR"/>
+        <result property="school" column="school" jdbcType="VARCHAR"/>
+        <result property="graduationTime" column="graduation_time" jdbcType="DATE"/>
+        <result property="isComputer" column="is_computer" jdbcType="TINYINT"/>
+        <result property="formerEmployer" column="former_employer" jdbcType="VARCHAR"/>
+        <result property="entryTime" column="entry_time" jdbcType="DATE"/>
+        <result property="agentQualificationCode" column="agent_qualification_code" jdbcType="VARCHAR"/>
+        <result property="emergencyContactTel" column="emergency_contact_tel" jdbcType="VARCHAR"/>
+        <result property="emergencyContactName" column="emergency_contact_name" jdbcType="VARCHAR"/>
+        <result property="remark" column="remark" jdbcType="VARCHAR"/>
+        <result property="email" column="email" jdbcType="VARCHAR"/>
+        <result property="sex" column="sex" jdbcType="VARCHAR"/>
+        <result property="speciality" column="speciality" jdbcType="VARCHAR"/>
+        <result property="salary" column="salary" jdbcType="DECIMAL"/>
+        <result property="salaryLevel" column="salary_level" jdbcType="VARCHAR"/>
+        <result property="liveAddress" column="live_address" jdbcType="VARCHAR"/>
+        <result property="province" column="province" jdbcType="VARCHAR"/>
+        <result property="city" column="city" jdbcType="VARCHAR"/>
+        <result property="district" column="district" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -75,6 +75,10 @@
     </sql>
     <!-- 一个业务员可能存在于多个租户 lipf 2026年4月24日17:56:31  -->
     <select id="queryJzgInfoByUserId" resultMap="BaseResultMap">
-        select * from sys_user_jzg_info a where a.user_id  = #{userId,jdbcType=DECIMAL} and a.is_delete = 0
+        select * from sys_user_jzg_info a
+        <where>
+            a.user_id = #{userId,jdbcType=DECIMAL}
+            and a.is_delete = 0
+        </where>
     </select>
-</mapper>
+</mapper>

+ 27 - 26
platform/src/main/resources/mapper/SysUserMapper.xml

@@ -5,24 +5,24 @@
 <mapper namespace="com.jzg.mapper.SysUserMapper">
 
     <resultMap id="SysUserResult" type="com.jzg.commons.entity.po.SysUser">
-            <id property="id" column="id" jdbcType="VARCHAR"/>
-            <result property="username" column="username" jdbcType="VARCHAR"/>
-            <result property="password" column="password" jdbcType="VARCHAR"/>
-            <result property="salt" column="salt" jdbcType="VARCHAR"/>
-            <result property="mobile" column="mobile" jdbcType="VARCHAR"/>
-            <result property="accountStatus" column="account_status" jdbcType="TINYINT"/>
-            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
-            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
-            <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="username" column="username" jdbcType="VARCHAR"/>
+        <result property="password" column="password" jdbcType="VARCHAR"/>
+        <result property="salt" column="salt" jdbcType="VARCHAR"/>
+        <result property="mobile" column="mobile" jdbcType="VARCHAR"/>
+        <result property="accountStatus" column="account_status" jdbcType="TINYINT"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>
     </resultMap>
 
     <sql id="selectUserVo">
         SELECT id,username,password,
-        salt,mobile,account_status,
-        create_by,create_time,update_by,
-        update_time,is_delete
+               salt,mobile,account_status,
+               create_by,create_time,update_by,
+               update_time,is_delete
         FROM sys_user
     </sql>
     <select id="queryPage" resultType="com.jzg.commons.entity.vo.SysUserVo">
@@ -31,15 +31,15 @@
         sr.create_by,sr.create_time,sr.update_by,
         sr.update_time,sr.is_delete,si.is_enable as isEnable
         FROM sys_user sr
-        LEFT JOIN sys_user_plate_info si on sr.id = si.user_id
+        LEFT JOIN sys_user_plate_info si on sr.id = si.user_id AND si.is_delete = 0
         <where>
+            and sr.is_delete = 0 and si.system_code = 'PLATFORM'
             <if test="param.isEnable != null">
                 and si.is_enable = #{param.isEnable}
             </if>
             <if test="param.searchValue != null and param.searchValue != ''">
                 and ( sr.username = #{param.searchValue} or sr.mobile = #{param.searchValue} or sr.id = #{param.searchValue})
             </if>
-             and sr.is_delete = 0 and si.system_code = 'PLATFORM'
         </where>
         ORDER BY create_time DESC
     </select>
@@ -49,14 +49,15 @@
         *
         FROM
         sys_user su
-        LEFT JOIN sys_user_jzg_info suji ON su.id = suji.user_id
-        WHERE
-        1=1
-        <if test="param.id != null and param.id != ''">
-            AND su.id = #{param.id}
-        </if>
-        <if test="param.deptId != null and param.deptId != ''">
-            AND suji.dept_id = #{param.deptId}
-        </if>
+        LEFT JOIN sys_user_jzg_info suji ON su.id = suji.user_id AND suji.is_delete = 0
+        <where>
+            AND su.is_delete = 0
+            <if test="param.id != null and param.id != ''">
+                AND su.id = #{param.id}
+            </if>
+            <if test="param.deptId != null and param.deptId != ''">
+                AND suji.dept_id = #{param.deptId}
+            </if>
+        </where>
     </select>
-</mapper>
+</mapper>

+ 10 - 8
platform/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -3,19 +3,21 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jzg.mapper.SysUserRoleMapper">
-    <delete id="deleteByUserId">
+    <!--<delete id="deleteByUserId">
         delete from sys_user_role where user_id = #{userId}
-    </delete>
+    </delete>-->
 
     <select id="selectByUserIdAndSysCodeOne" resultType="com.jzg.commons.entity.po.SysUserRole">
         SELECT
-            ur.*
+        ur.*
         FROM
-            sys_user_role ur
-                LEFT JOIN sys_role r ON  r.id = ur.role_id
-        WHERE
+        sys_user_role ur
+        LEFT JOIN sys_role r ON r.id = ur.role_id AND r.is_delete = 0
+        <where>
             ur.is_delete = 0
-          AND ur.user_id = #{userId} AND r.system_code = #{systemCode}
+            AND ur.user_id = #{userId}
+            AND r.system_code = #{systemCode}
+        </where>
     </select>
 
-</mapper>
+</mapper>

+ 26 - 10
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerApplyApplicationRequestBuild.java

@@ -14,6 +14,7 @@ import com.jzg.quotation.ansheng.crawler.utils.PolicySpecialPromiseUtil;
 import com.jzg.quotation.commons.utils.TimeProcessing;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -36,6 +37,21 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
                 .collect(Collectors.toMap(x -> x.getPolicyBase().getPlanCode(), x -> x));
 
         // 拷贝报价请求数据
+        BigDecimal netAmount = crawlerCalculatePremiumApply.getContracts().stream()
+                .map(contract -> contract.getPolicyBase())
+                .filter(policyBase -> policyBase != null)
+                .map(policyBase -> policyBase.getTotalNetPremium())
+                .filter(totalNetPremium -> totalNetPremium != null)
+                .map(BigDecimal::valueOf)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal taxAmount = crawlerCalculatePremiumApply.getContracts().stream()
+                .map(contract -> contract.getPolicyBase())
+                .filter(policyBase -> policyBase != null)
+                .map(policyBase -> policyBase.getAddedValueTax())
+                .filter(totalNetPremium -> totalNetPremium != null)
+                .map(BigDecimal::valueOf)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        String vehicleAlias = crawlerCalculatePremiumApply.getContracts().get(0).getTargetList().get(0).getPolicyPricing().getVehicleAlias();
         crawlerCalculatePremiumApply.getContracts().forEach(requestContracts -> {
             AnShengCrawlerApplyApplicationRequest.ContractsDTO contractsDTO = new AnShengCrawlerApplyApplicationRequest.ContractsDTO();
             AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO responseContracts = responseMap.get(requestContracts.getPolicyBase()
@@ -55,8 +71,8 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
 
             AnShengCrawlerApplyApplicationRequest.ContractsDTO.BillInfoDetailDTO billInfoDetailDTO = buildBillInfoDetailDTO(insuranerName, personDTO.getMobileTelephone());
             contractsDTO.setBillInfoDetail(billInfoDetailDTO);
-            AnShengCrawlerApplyApplicationRequest.ContractsDTO.BrandAutoModelDTO brandAutoModelDTO = buildBrandAutoModelDTO(responseContracts.getVehicle());
-            //contractsDTO.setBrandAutoModel(brandAutoModelDTO);
+            AnShengCrawlerApplyApplicationRequest.ContractsDTO.BrandAutoModelDTO brandAutoModelDTO = buildBrandAutoModelDTO(responseContracts.getVehicle(),vehicleAlias);
+            contractsDTO.setBrandAutoModel(brandAutoModelDTO);
             contractsDTO.setSaleChannelSource(new AnShengCrawlerApplyApplicationRequest.ContractsDTO.SaleChannelSourceDTO(""));
             contractsDTO.setUnderwriteInfos(List.of(new AnShengCrawlerApplyApplicationRequest.ContractsDTO.UnderwriteInfosDTO("1", "")));
             AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyExtendDTO policyExtendDTO = buildPolicyExtend(insuranerName, personDTO.getMobileTelephone(),brand);
@@ -69,7 +85,7 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
                     .get(0), requestContracts.getTargetList().get(0));
             contractsDTO.setTargetList(List.of(targetListDTO));
 
-            AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyPaymentsDTO policyPaymentsDTO = buildPolicyPaymentsDTO(personDTO, responseContracts.getPolicyBase());
+            AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyPaymentsDTO policyPaymentsDTO = buildPolicyPaymentsDTO(personDTO, responseContracts.getPolicyBase(),netAmount,taxAmount);
             contractsDTO.setPolicyPayments(List.of(policyPaymentsDTO));
             // 人员信息
             contractsDTO.setPolicyPersons(requestContracts.getPolicyPersons());
@@ -401,7 +417,7 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
     }
 
     private static AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyPaymentsDTO buildPolicyPaymentsDTO(AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO.PolicyPersonsDTO.PersonnelInfoBaseDTO.PersonDTO personDTO,
-                                                                                                               AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO.PolicyBaseDTO policyBaseDTO) {
+                                                                                                               AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO.PolicyBaseDTO policyBaseDTO, BigDecimal netAmount,BigDecimal taxAmount ) {
         String insuranceBeginTime = policyBaseDTO.getInsuranceBeginTime();
         String beginDate = TimeProcessing.dateTimeToDate(insuranceBeginTime);
         String endDate = TimeProcessing.plusDays(beginDate, 10);
@@ -410,8 +426,8 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         policyPaymentsDTO.setPaymentPremiumTimes(1);
         policyPaymentsDTO.setBankAccountNo("");
         policyPaymentsDTO.setPrepaidPassword("");
-        policyPaymentsDTO.setNetAmount(policyBaseDTO.getTotalNetPremium());
-        policyPaymentsDTO.setTaxAmount(policyBaseDTO.getAddedValueTax());
+        policyPaymentsDTO.setNetAmount(taxAmount.doubleValue());
+        policyPaymentsDTO.setTaxAmount(taxAmount.doubleValue());
         policyPaymentsDTO.setPaymentEndDate(endDate);
         policyPaymentsDTO.setPaymentPersonCode(personDTO.getPersonnelName());
         policyPaymentsDTO.setPaymentPersonCertCode(personDTO.getCertificateNo());
@@ -496,14 +512,14 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         policyBaseDTO.setApplyPolicyNo("");
         policyBaseDTO.setAgentRatioDegree("");
         policyBaseDTO.setAppointAreaCode("");
-        policyBaseDTO.setKeyOverServer(responsePolicyBase.getKeyOverServer());
+        policyBaseDTO.setKeyOverServer(com.jzg.commons.util.StringUtils.isNotEmpty(responsePolicyBase.getKeyOverServer()) ?  responsePolicyBase.getKeyOverServer() : "");
         policyBaseDTO.setEPolicyPDFTime("1");
         policyBaseDTO.setRatioOTHERSum("");
         policyBaseDTO.setDisputedSettleMode("0");
         policyBaseDTO.setProfessionalNo("");
         policyBaseDTO.setPolicyScoreDecisionWay("2");
         policyBaseDTO.setShortTimeCoefficient(String.valueOf(requestPolicyBase.getShortTimeCoefficient()));
-        policyBaseDTO.setKeyOverServerSY("");
+        policyBaseDTO.setKeyOverServerSY(com.jzg.commons.util.StringUtils.isNotEmpty(responsePolicyBase.getKeyOverServerSY()) ?  responsePolicyBase.getKeyOverServerSY() : "");
         policyBaseDTO.setChargeRateId("");
         policyBaseDTO.setRatioTPSum("");
         policyBaseDTO.setTotalStandardPremium(responsePolicyBase.getTotalStandardPremium());
@@ -565,11 +581,11 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         return policyExtend;
     }
 
-    private static AnShengCrawlerApplyApplicationRequest.ContractsDTO.BrandAutoModelDTO buildBrandAutoModelDTO(AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO.VehicleDTO vehicle) {
+    private static AnShengCrawlerApplyApplicationRequest.ContractsDTO.BrandAutoModelDTO buildBrandAutoModelDTO(AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO.VehicleDTO vehicle,String vehicleAlias) {
         AnShengCrawlerApplyApplicationRequest.ContractsDTO.BrandAutoModelDTO brandAutoModelDTO = new AnShengCrawlerApplyApplicationRequest.ContractsDTO.BrandAutoModelDTO();
         brandAutoModelDTO.setModelDesc(vehicle.getDetailDesc());
         brandAutoModelDTO.setStandardName(vehicle.getStandardName());
-        brandAutoModelDTO.setVehicleAlias("");
+        brandAutoModelDTO.setVehicleAlias(vehicleAlias);
         return brandAutoModelDTO;
     }
 

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

@@ -3,6 +3,7 @@ package com.jzg.quotation.ansheng.crawler.component;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.ansheng.crawler.constant.enums.RequestUrl;
 import com.jzg.quotation.ansheng.crawler.entity.request.*;
@@ -333,4 +334,13 @@ public class AnShengCrawlerRequestComponent {
         return "";
     }
 
+    public PureRiskPremiumQueryResponse pureRiskPremiumQuery(InsuranceContractRequest insuranceContractRequest, HttpHeaders httpHeaders) {
+        return post(RequestUrl.PURERISK_PREMIUM_QUERY, insuranceContractRequest, PureRiskPremiumQueryResponse.class, httpHeaders);
+
+    }
+
+    public List<AnShengCrawlerSearchVehicleByVinResponse.DataDTO> searchVehicleByName(JSONObject jsonObject, HttpHeaders headers) {
+        ResponseEntity<AnShengCrawlerSearchVehicleByVinResponse> responseEntity = requestComponent.formData(RequestUrl.SEARCHVEHICLE_BY_NAME.getRequestUrl(anShengCrawlerProperties.getUrl()), jsonObject, AnShengCrawlerSearchVehicleByVinResponse.class, headers);
+        return responseEntity.getBody().getData();
+    }
 }

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

@@ -22,6 +22,7 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     INSURE_ADD("/portalapi/insure_add", "保险添加"),
     QUERY_AUTO_MATCH_PRICE_RATIO("portalapi/queryAutoMatchPriceRatio", ""),
     SEARCH_VEHICLE_BY_VIN("/portalapi/searchVehicleByVIN", "车架号查询"),
+    SEARCHVEHICLE_BY_NAME("/portalapi/searchVehicleByName", "车架号查询"),
     CALCULATE_PREMIUM_APPLY("/portalapi/calculatePremiumApply", "保费计算"),
     AUTORESETTIME("/portalapi/autoResetTime", "计算时间"),
     // 上传影像
@@ -38,6 +39,10 @@ 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", "风险与保费查询")
+
+
     ;
 
 

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

@@ -35,14 +35,13 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
     public AnShengCrawlerCalculatePremiumApplyMessage(QuoteVo quoteVo, AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO,
                                                       AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetailResponse, DepartmentPlanCode departmentPlanCode,
                                                       String checkVehicleCodeSecret) {
-        RiskInfoVo riskInfoVo = Optional.ofNullable(quoteVo.getCiRiskInfoVo())
-                .orElse(quoteVo.getBiRiskInfoVo());
+        RiskInfoVo riskInfoVo = Optional.ofNullable(quoteVo.getCiRiskInfoVo()).orElse(quoteVo.getBiRiskInfoVo());
 
         String customerNegotiatePrice = CustomerNegotiatePriceUtils.calculateTheDepreciationValue(departmentPlanCode.getCode(), quoteVo.getCarInfoVo()
                         .getEnergyTypeCode(),
                 dataDTO.getCustomerNegotiatePrice(), riskInfoVo.getStartDate(), quoteVo.getCarInfoVo()
                         .getRegisterDate());
-
+        String energyTypeCode = quoteVo.getCarInfoVo().getEnergyTypeCode();
         this.isTryCal = false;
         this.contracts = new ArrayList<>();
         if (!ObjectUtils.isEmpty(quoteVo.getCiRiskInfoVo())) {
@@ -53,7 +52,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
         }
         if (!ObjectUtils.isEmpty(quoteVo.getBiRiskInfoVo())) {
             ContractsDTO baseContracts = getBaseContracts(quoteVo.getBiRiskInfoVo(), quoteVo, dataDTO, customerNegotiatePrice, userDetailResponse, departmentPlanCode.getCode(), departmentPlanCode.getProductCode(), checkVehicleCodeSecret);
-            baseContracts.addBusinessInsurance(quoteVo.getKindInfoVo(),quoteVo);
+            baseContracts.addBusinessInsurance(quoteVo.getKindInfoVo(),quoteVo,energyTypeCode);
             baseContracts.addBiPolicyRatios();
             this.contracts.add(baseContracts);
         }
@@ -154,15 +153,49 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
             System.out.println(i);
         }
 
-        public void addBusinessInsurance(List<KindInfoVo> kindInfoVo, QuoteVo quoteVo) {
+        public void addBusinessInsurance(List<KindInfoVo> kindInfoVo, QuoteVo quoteVo,String energyTypeCode) {
             String seatCount = String.valueOf(Integer.parseInt(quoteVo.getCarInfoVo().getSeatCount()) - 1);
             for (KindInfoVo kind : kindInfoVo) {
                 PolicyCoveragesDTO dto = new PolicyCoveragesDTO(kind);
                 String code = dto.getDutyCode();
-                if (StringUtils.equalsAny(code, "APL", "APLDUOM")) dto.setSeats(seatCount);
+                if (StringUtils.equalsAny(code, "APL", "APLDUOM","NEAPL")) dto.setSeats(seatCount);
                 else if (StringUtils.equalsAny(code, "ADL", "NEADL")) dto.setSeats("1");
                 policyCoverages.add(dto);
             }
+            PolicyCoveragesDTO dto = new PolicyCoveragesDTO();
+            dto.setDutyCode(StringUtils.equals("0",energyTypeCode) ? "STORRS" : "NESTORR");
+            dto.setDutyChineseName(StringUtils.equals("0",energyTypeCode) ? "道路救援服务特约条款" : "道路救援服务特约条款(新能源车)");
+            dto.setInsuredAmount("0");
+            dto.setEquipmentInsureAmount("");
+            dto.setPremiumRate("");
+            dto.setDeductibleDiscount("");
+            dto.setTotalActualPremium("");
+            dto.setDeductionRate("0");
+            dto.setServiceNum("2");
+            dto.setIsTelpeson("1");
+            dto.setTelPhone("");
+            dto.setMileage("");
+            dto.setSetMeal("");
+            dto.setFireMultiple("");
+            dto.setAllAmount("");
+            dto.setRiskPremum("");
+            dto.setSeats("");
+            dto.setDeductible("");
+            dto.setTotalStandardPremium(0);
+            dto.setAddedValueTax(0);
+            dto.setTotalAgreePremium(0);
+            dto.setTotalNetPremium(0);
+            dto.setNewEquipmentList(Lists.newArrayList());
+            dto.setChargingPostDataList(Lists.newArrayList());
+            dto.setFullYearPremium("");
+            dto.setDieAmount("");
+            dto.setMedicalAmount("");
+            dto.setPropertyAmount("");
+            dto.setNoFaultDieAmount("");
+            dto.setNoFaultMedicalAmount("");
+            dto.setNoFaultPropertyAmount("");
+            dto.setBasePremium("");
+
         }
 
         public ContractsDTO(RiskInfoVo riskInfoVo, QuoteVo quoteVo, AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO,
@@ -178,7 +211,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
             this.saleBusinessSource = new SaleBusinessSourceDTO(userDetailResponse.getSaleAgentCode(), userDetailResponse.getSaleTeamCode());
             this.policyAttachments = new ArrayList<>();
             TargetListDTO targetListDTO = new TargetListDTO(dataDTO, quoteVo.getCarInfoVo(), quoteVo.getPolicyHolderInfo(), userDetailResponse.getDepartmentCode(), quoteVo.getOwnersInfo()
-                    .getName(), customerNegotiatePrice);
+                    .getName(), customerNegotiatePrice,!ObjectUtils.isEmpty(quoteVo.getBiRiskInfoVo()),productCode);
             targetListDTO.setCheckVehicleCodeSecret(checkVehicleCodeSecret);
             this.targetList = List.of(targetListDTO);
 
@@ -358,10 +391,10 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
             private String customerSource;
             @JsonProperty("totalNetPremium")
             @JSONField(name = "totalNetPremium")
-            private Integer totalNetPremium;
+            private Double totalNetPremium;
             @JsonProperty("addedValueTax")
             @JSONField(name = "addedValueTax")
-            private Integer addedValueTax;
+            private Double addedValueTax;
             @JsonProperty("relationPolicy")
             @JSONField(name = "relationPolicy")
             private String relationPolicy;
@@ -393,8 +426,8 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 this.renewType = "";
                 this.serviceNetCar = "";
                 this.customerSource = "";
-                this.totalNetPremium = 0;
-                this.addedValueTax = 0;
+                this.totalNetPremium = 0.0;
+                this.addedValueTax = 0.0;
                 this.relationPolicy = "";
             }
         }
@@ -766,7 +799,8 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
             @JSONField(name = "vehicleTax")
             private VehicleTaxDTO vehicleTax;
 
-            public TargetListDTO(AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO, CarInfoVo carInfoVo, CustomerInfoVo policyHolderInfo, String departmentCode, String personnelName, String customerNegotiatePrice) {
+            public TargetListDTO(AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO, CarInfoVo carInfoVo, CustomerInfoVo policyHolderInfo,
+                                 String departmentCode, String personnelName, String customerNegotiatePrice,boolean bi,String productCode) {
                 AnShengCrawlerSearchVehicleByVinResponse.DataDTO.BrandAutoModelDTO brandAutoModel = dataDTO.getBrandAutoModel();
                 this.linkId = "";
                 this.targetId = "";
@@ -805,7 +839,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 this.tradeNameAlien = "";
                 this.brandAlien = "";
                 this.deptNameAlien = "";
-                this.checkVehicleInfo = new CheckVehicleInfoDTO();
+                this.checkVehicleInfo = new CheckVehicleInfoDTO(carInfoVo);
                 this.departmentCode = departmentCode;
                 this.dbVehicleType = brandAutoModel.getInsuranceCode();
                 this.vehicleLicenceCode = carInfoVo.getLicenseNo();
@@ -884,7 +918,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 this.ownershipAttributeCode = "1";
                 this.beneficiaryList = new ArrayList<>();
                 this.checkVehicleCodeSecret = "";
-                this.policyPricing = new PolicyPricingDTO(dataDTO, carInfoVo);
+                this.policyPricing = new PolicyPricingDTO(dataDTO, carInfoVo,bi, productCode);
                 this.vehicleTax = new VehicleTaxDTO(policyHolderInfo);
             }
 
@@ -918,8 +952,8 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 @JSONField(name = "checkTime")
                 private String checkTime;
 
-                public CheckVehicleInfoDTO() {
-                    this.usageAttributeCode = "1";
+                public CheckVehicleInfoDTO(CarInfoVo carInfoVo) {
+                    this.usageAttributeCode = carInfoVo.getVehicleUseCode();
                     this.usageAttributeCodePM = "";
                     this.runRegionCode = "";
                     this.checkVehicleFlag = "";
@@ -1160,7 +1194,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 @JSONField(name = "customerSource")
                 private String customerSource;
 
-                public PolicyPricingDTO(AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO, CarInfoVo carInfoVo) {
+                public PolicyPricingDTO(AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO, CarInfoVo carInfoVo,boolean bi,String productCode) {
                     AnShengCrawlerSearchVehicleByVinResponse.DataDTO.BrandAutoModelDTO brandAutoModel = dataDTO.getBrandAutoModel();
                     this.usageAttributeCode = carInfoVo.getCarNatureCode();
                     this.usageAttributeCodePM = "";
@@ -1238,13 +1272,9 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                     this.ifModelRate = "0";
                     this.isMotorcade = "";
                     this.scoreRunId = "";
-                    if (carInfoVo.isTransfer()) {
-                        this.specialCarFlag = "1";
-                        this.transferDate = carInfoVo.getTransferDate();
-                    } else {
-                        this.specialCarFlag = "";
-                        this.transferDate = "";
-                    }
+                    boolean isSpecialCar = (carInfoVo.isTransfer() && "105002".equals(productCode)) || (carInfoVo.isTransferBi() && "109002".equals(productCode));
+                    this.specialCarFlag = isSpecialCar ? "1" : "";
+                    this.transferDate = isSpecialCar ? carInfoVo.getTransferDate() : "";
                     this.vehicleAlias = brandAutoModel.getVehicleAlias();
                 }
             }
@@ -1812,7 +1842,7 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                         this.certificateNo = customerInfoVo.getIdentifyNumber();
                         this.sexCode = customerInfoVo.getGender();
                         this.birthday = customerInfoVo.getBirthday() + " 00:00:00";
-                        this.personnelAge = String.valueOf(customerInfoVo.getAge() + 1);
+                        this.personnelAge = String.valueOf(customerInfoVo.getAge());
                         this.address = customerInfoVo.getAddr();
                         this.positionn = "";
                         this.mobileTelephone = customerInfoVo.getMobile();

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

@@ -0,0 +1,533 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+import com.alibaba.fastjson2.JSON;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 安盛保险合同请求实体
+ *
+ * @author xxxx
+ * @date 2025-xx-xx
+ */
+@Data
+public class InsuranceContractRequest {
+
+    /**
+     * 合同列表
+     */
+    private List<Contract> contracts;
+
+    /**
+     * 自动获取时间标识-是
+     */
+    private static final String AUTO_GET_TIME_FLAG_YES = "1";
+
+    /**
+     * 固定计划编码
+     */
+    private static final String FIXED_PLAN_CODE = "109";
+
+    /**
+     * 固定产品编码
+     */
+    private static final String FIXED_PRODUCT_CODE = "109002";
+
+    /**
+     * 构造函数:通过保费计算消息构建保险合同请求
+     *
+     * @param crawlerCalculatePremiumApply 保费计算申请消息
+     */
+    public InsuranceContractRequest(AnShengCrawlerCalculatePremiumApplyMessage crawlerCalculatePremiumApply) {
+        // 空值校验
+        Objects.requireNonNull(crawlerCalculatePremiumApply, "保费计算申请消息不能为空");
+        List<AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO> sourceContracts = crawlerCalculatePremiumApply.getContracts();
+        if (sourceContracts == null || sourceContracts.isEmpty()) {
+            this.contracts = Collections.emptyList();
+            return;
+        }
+
+        // 初始化集合
+        this.contracts = new ArrayList<>();
+        List<PolicyCoverage> policyCoverageList = new ArrayList<>();
+        List<PolicyRatio> policyRatioList = new ArrayList<>();
+
+        // 遍历源数据,收集保障和费率信息
+        for (AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO contractDTO : sourceContracts) {
+            if (contractDTO == null) {
+                continue;
+            }
+            // 安全转换集合
+            List<PolicyCoverage> coverages = convertList(contractDTO.getPolicyCoverages(), PolicyCoverage.class);
+            List<PolicyRatio> ratios = convertList(contractDTO.getPolicyRatios(), PolicyRatio.class);
+
+            policyCoverageList.addAll(coverages);
+            policyRatioList.addAll(ratios);
+        }
+
+        // 构建单个合同(取第一个源合同作为基础)
+        AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO firstContract = sourceContracts.get(0);
+        Contract targetContract = buildContract(firstContract, policyCoverageList, policyRatioList);
+        this.contracts.add(targetContract);
+    }
+
+    /**
+     * 构建合同对象
+     */
+    private Contract buildContract(AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO source,
+                                   List<PolicyCoverage> coverages,
+                                   List<PolicyRatio> ratios) {
+        Contract contract = new Contract();
+        // 基础属性赋值
+        contract.setAutoGetTimeFlag(AUTO_GET_TIME_FLAG_YES);
+        // 对象深度拷贝
+        contract.setPolicyExtend(convertObject(source.getPolicyExtend(), PolicyExtend.class));
+        contract.setAgentDefine(convertObject(source.getAgentDefine(), AgentDefine.class));
+        contract.setDepartmentDefine(convertObject(source.getDepartmentDefine(), DepartmentDefine.class));
+        contract.setSaleBusinessSource(convertObject(source.getSaleBusinessSource(), SaleBusinessSource.class));
+        // 集合拷贝
+        contract.setTargetList(convertList(source.getTargetList(), Target.class));
+        contract.setPolicyPersons(convertList(source.getPolicyPersons(), PolicyPerson.class));
+        // 赋值收集的保障和费率
+        contract.setPolicyCoverages(coverages);
+        contract.setPolicyRatios(ratios);
+
+        // 构建并设置保单基础信息
+        PolicyBase policyBase = convertObject(source.getPolicyBase(), PolicyBase.class);
+        if (policyBase != null) {
+            policyBase.setPlanCode(FIXED_PLAN_CODE);
+            policyBase.setProductCode(FIXED_PRODUCT_CODE);
+        }
+        contract.setPolicyBase(policyBase);
+
+        return contract;
+    }
+
+    /**
+     * 安全转换对象(避免空指针和类型转换异常)
+     */
+    private <T> T convertObject(Object source, Class<T> clazz) {
+        if (source == null) {
+            return null;
+        }
+        return JSON.toJavaObject(JSON.parseObject(JSON.toJSONString(source)), clazz);
+    }
+
+    /**
+     * 安全转换集合(解决原始代码泛型擦除问题)
+     */
+    private <T> List<T> convertList(List<?> sourceList, Class<T> clazz) {
+        if (sourceList == null || sourceList.isEmpty()) {
+            return new ArrayList<>();
+        }
+        return JSON.parseArray(JSON.toJSONString(sourceList), clazz);
+    }
+
+    // ==================== 内部静态类 ====================
+    @Data
+    public static class Contract {
+        private PolicyExtend policyExtend;
+        private AgentDefine agentDefine;
+        private String autoGetTimeFlag;
+        private PolicyBase policyBase;
+        private DepartmentDefine departmentDefine;
+        private SaleBusinessSource saleBusinessSource;
+        private List<Target> targetList;
+        private List<PolicyCoverage> policyCoverages;
+        private List<PolicyRatio> policyRatios;
+        private List<PolicyPerson> policyPersons;
+    }
+
+    @Data
+    public static class PolicyExtend {
+        private String eicRiskScore;
+        private String vehicleRiskType;
+    }
+
+    @Data
+    public static class AgentDefine {
+        private String agentCode;
+    }
+
+    @Data
+    public static class PolicyBase {
+        private String rescueCountRemark;
+        private String agentCode;
+        private String businessType;
+        private String businessTypeDetail;
+        private String insuranceBeginTime;
+        private String insuranceEndTime;
+        private String planCode;
+        private String productCode;
+        private String departmentCode;
+        private String targetType;
+        private BigDecimal shortTimeCoefficient;
+    }
+
+    @Data
+    public static class DepartmentDefine {
+        private String departmentCode;
+    }
+
+    @Data
+    public static class SaleBusinessSource {
+        private String saleAgentCode;
+    }
+
+    @Data
+    public static class Target {
+        private String linkId;
+        private String targetId;
+        private String ymIsbuyOrnot;
+        private String ymBirthDate;
+        private String ymElecBatteryType;
+        private String marketDate;
+        private String vehicleStyleUniqueId;
+        private String vehicleCertificateNo;
+        private String vehicleCertificateType;
+        private String vehiclePurchasePrice;
+        private String modelsListedYear;
+        private String platformId;
+        private String vehicleColor;
+        private String theftproofEquipmentCode;
+        private String isMortgage;
+        private String isSpecialInsuranceVehicle;
+        private String vehicleVer;
+        private String groupCode;
+        private String standardName;
+        private String tradeName;
+        private String tradeCode;
+        private String totalVehicleWeight;
+        private String seriesCode;
+        private String modelIdCode;
+        private String seats;
+        private String rbCode;
+        private String otherEnergyTypeDesc;
+        private String madeDate;
+        private String exhaustCapability;
+        private String noDamageYears;
+        private String specialVehicleFlag;
+        private String overseasVehicleFlag;
+        private String brand;
+        private String modelCodeAlien;
+        private String carNameAlien;
+        private String tradeNameAlien;
+        private String brandAlien;
+        private String deptNameAlien;
+        private CheckVehicleInfo checkVehicleInfo;
+        private String departmentCode;
+        private String dbVehicleType;
+        private String vehicleLicenceCode;
+        private String vehicleFrameNo;
+        private String engineNo;
+        private String firstRegisterDate;
+        private String firstRegisterDateStr;
+        private String vehicleCertificateDate;
+        private BigDecimal weigth;
+        private String totalMass;
+        private String priceType;
+        private BigDecimal purchasePrice;
+        private BigDecimal vehicleLossInsuredValue;
+        private String importFlag;
+        private String modelCode;
+        private String carName;
+        private String theftProof;
+        private String vehicleType;
+        private String pureRange;
+        private String vehicleClass;
+        private String vehicleStyle;
+        private String autoModelCode;
+        private String vehicleBrand;
+        private String brandChnName;
+        private String averageMile;
+        private String csTradeName;
+        private String csTradeCode;
+        private String brandCode;
+        private String series;
+        private String noticeType;
+        private String categoryName;
+        private String categoryCode;
+        private String configType;
+        private String partInfo;
+        private String powerType;
+        private String vehicleFgwCode;
+        private String vehicleFgwName;
+        private String vehicleModelType;
+        private String vehicleStyleDesc;
+        private String vehicleTypeName;
+        private String makeDate;
+        private String detailDesc;
+        private String vehicleCategory;
+        private String personnelName;
+        private String refitDesc;
+        private String basicRateCode;
+        private String deptName;
+        private String deptCode;
+        private String vehicleSeats;
+        private String fuelType;
+        private String autoModelChnName;
+        private String licenceTypeCode;
+        private String ecdemicVehicleFlag;
+        private String vehicleTonnages;
+        private String power;
+        private String maxDesignSpeed;
+        private String runCardCertificateDate;
+        private BigDecimal customerNegotiatePrice;
+        private BigDecimal originalCustomerNegotiatePrice;
+        private String fleetNo;
+        private String maker;
+        private String approvedCapacity;
+        private String ineffectualDate;
+        private String lastCheckDate;
+        private String rejectDate;
+        private String riskFlag;
+        private String targetType;
+        private String fleetRate;
+        private String usageAttributeCode;
+        private String usageAttributeCodePM;
+        private String ownershipAttributeCode;
+        private List<Object> beneficiaryList;
+        private String checkVehicleCodeSecret;
+        private PolicyPricing policyPricing;
+    }
+
+    @Data
+    public static class CheckVehicleInfo {
+        private String usageAttributeCode;
+        private String usageAttributeCodePM;
+        private String runRegionCode;
+        private String checkVehicleFlag;
+        private String uploadCheckVehicleInfo;
+        private String checkVehicleSituation;
+        private String vehicleChecker;
+        private String checkRecord;
+        private String checkTime;
+    }
+
+    @Data
+    public static class PolicyPricing {
+        private String useBasicDataCoverFlag;
+        private String usageAttributeCode;
+        private String usageAttributeCodePM;
+        private String ownershipAttributeCode;
+        private String nonclaimAdjust;
+        private String claimAdjustLevel;
+        private String lastyearStartDate;
+        private String lastyearEndDate;
+        private String partInfo;
+        private String isMortgage;
+        private String isSpecialInsuranceVehicle;
+        private String claimRecordBizScoreSize;
+        private String loanVehicleFlag;
+        private String injurySite;
+        private String transferFlag;
+        private String searchSequenceNo;
+        private String dbVehicleAutoModelChnName;
+        private String refitDesc;
+        private String lastYearIsTel;
+        private String reinsureFlag;
+        private String rateFloatFlag;
+        private String ratioFluctuateType;
+        private String repairFactory;
+        private BigDecimal dbVehicleWeigth;
+        private String riskScore;
+        private String riskScoreTwenty;
+        private String algrId;
+        private String riskScoreColor;
+        private String scoreReason;
+        private String scoreReasonLevel;
+        private String scoreReasonLevel2;
+        private String scoreReasonLevel3;
+        private String highRiskFlag;
+        private String effectReason;
+        private String dbVehicleVeiw;
+        private String lastYearCompanyId;
+        private String chargeRateFinal;
+        private String rateType;
+        private String priceRises;
+        private String underWriteRate;
+        private String autoRuleRatioOD;
+        private String autoRuleRatioTP;
+        private String autoRuleRatioTHEFT;
+        private String autoRuleRatioOTHER;
+        private String underwriteRuleRatioOD;
+        private String underwriteRuleRatioTP;
+        private String underwriteRuleRatioTHEFT;
+        private String underwriteRuleRatioOTHER;
+        private String tlType;
+        private Integer autoFloatRatioOD;
+        private String autoFloatRatioTp;
+        private String autoFloatRatioTheft;
+        private String autoFloatRatioOther;
+        private String appointAreaCode;
+        private String fdConfigId;
+        private String modelDiscount;
+        private Integer autoFloatHandingCost;
+        private String modelrate;
+        private String advicediscount;
+        private String dbVehicleBrand;
+        private String dbVehicleTypeName;
+        private String usageLicenceName;
+        private String vehicleTypeChiName;
+        private String autoFloatTargetRebate;
+        private String riskFlag;
+        private String dbExhaustCapability;
+        private String dbVehicleSeats;
+        private String dbVehicleTonnages;
+        private BigDecimal dbVehicleValue;
+        private String ifModelRate;
+        private String isMotorcade;
+        private String scoreRunId;
+        private String specialCarFlag;
+        private String transferDate;
+        private String vehicleAlias;
+    }
+
+    @Data
+    public static class PolicyCoverage {
+        private String dutyCode;
+        private String dutyChineseName;
+        private BigDecimal insuredAmount;
+        private String equipmentInsureAmount;
+        private String premiumRate;
+        private String deductibleDiscount;
+        private String totalActualPremium;
+        private Integer deductionRate;
+        private String serviceNum;
+        private String isTelpeson;
+        private String telPhone;
+        private String mileage;
+        private String setMeal;
+        private String fireMultiple;
+        private String allAmount;
+        private String riskPremum;
+        private String seats;
+        private String isShareSumDutyFlag;
+        private String deductible;
+        private BigDecimal totalStandardPremium;
+        private BigDecimal addedValueTax;
+        private BigDecimal totalAgreePremium;
+        private BigDecimal totalNetPremium;
+        private List<Object> newEquipmentList;
+        private List<Object> chargingPostDataList;
+        private String fullYearPremium;
+        private String dieAmount;
+        private String medicalAmount;
+        private String propertyAmount;
+        private String noFaultDieAmount;
+        private String noFaultMedicalAmount;
+        private String noFaultPropertyAmount;
+        private String basePremium;
+    }
+
+    @Data
+    public static class PolicyRatio {
+        private String linkId;
+        private String ratio;
+        private String discountValue;
+        private String dutyCode;
+        private String factorCode;
+        private String factorValue;
+        private BigDecimal ratioOd;
+        private BigDecimal ratioTp;
+        private BigDecimal ratioTheft;
+        private BigDecimal ratioOther;
+        private BigDecimal ratiototal;
+    }
+
+    @Data
+    public static class PolicyPerson {
+        private String personnelAttribute;
+        private String appliWithInsRelaship;
+        private String relationshipWithInsured;
+        private PersonnelInfoBase personnelInfoBase;
+    }
+
+    @Data
+    public static class PersonnelInfoBase {
+        private String personTypeDetailCode;
+        private String personTypeOverseas;
+        private String vipMark;
+        private Person person;
+    }
+
+    @Data
+    public static class Person {
+        private String issuedAt;
+        private String nation;
+        private String personnelName;
+        private Object personnelCode;
+        private String baseId;
+        private String certificateType;
+        private String certificateNo;
+        private String sexCode;
+        private String birthday;
+        private String personnelAge;
+        private String address;
+        private String positionn;
+        private String mobileTelephone;
+        private String email;
+        private String postcode;
+        private String effectedDate;
+        private String certType;
+        private String expiredDate;
+        private String isRuralOrUrban;
+        private String idCardAddress;
+        private String nationalityType;
+        private String workUnit;
+        private String homeAddressAfter;
+        private String certificateAddressAfter;
+        private String annualIncome;
+        private String other1Address;
+        private String other1ProvinceCode;
+        private String other1CityCode;
+        private String other1AreaCountyCode;
+        private String other2Address;
+        private String other2ProvinceCode;
+        private String other2CityCode;
+        private String other2AreaCountyCode;
+        private String certificateaddress;
+        private String certiProvinceCode;
+        private String certiCityCode;
+        private String certiAreaCode;
+        private String homeAddress;
+        private String homeProvinceCode;
+        private String homeCityCode;
+        private String homeAreaCountyCode;
+        private String homeAreaCode;
+        private String homeTelephone;
+        private String driverLicenseExpirationDate;
+        private String drivingExpirationDate;
+        private String certificateAddressId;
+        private String homeAddressId;
+        private String idCardAddressId;
+        private String other1AddressId;
+        private String other2AddressId;
+        private String emailId;
+        private String mobileTelephoneId;
+        private String homeTelephoneId;
+        private String officeTelephoneId;
+        private String amlId;
+        private String teleNoOwnerIsSelfFlag;
+        private String phoneOwnerCertiType;
+        private String phoneOwnerCertiNo;
+        private String phoneOwnerName;
+        private String idCardAccess;
+        private String longExpiredDate;
+        private String bankCode;
+        private String bankAccount;
+        private String department;
+        private String marriedStatu;
+        private String applyYears;
+        private String mobileTelephoneMarkBecause;
+        private String invalidateFlag;
+        private String fixedTelephoneMarkBecause;
+        private String driveLicenseType1;
+        private String bankAccountId;
+    }
+}

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

@@ -191,6 +191,8 @@ public class AnShengCrawlerCalculatePremiumApplyResponse  implements Serializabl
                 private String quoteTaskNo;
                 @JsonProperty("keyOverServer")
                 private String keyOverServer;
+                @JsonProperty("keyOverServerSY")
+                private String keyOverServerSY;
                 @JsonProperty("applyQueryCode")
                 private String applyQueryCode;
                 @JsonProperty("applyQueryPlatformID")

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

@@ -0,0 +1,1350 @@
+package com.jzg.quotation.ansheng.crawler.entity.response;
+
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class PureRiskPremiumQueryResponse implements Serializable, AnShengCrawlerBaseResponse{
+
+        private Integer code;
+        private String simpleMessage;
+        private String message;
+        private DataBean data;
+
+        @Data
+        public static class DataBean {
+            private Integer page;
+            private Integer pageSize;
+            private List<ContractsBean> contracts;
+            private Boolean virtualProduct;
+            private FirstContractBean firstContract;
+            private Boolean cal;
+            private Boolean tryCal;
+        }
+
+        @Data
+        public static class FirstContractBean {
+            private Integer page;
+            private Integer pageSize;
+            private PolicyBaseBean policyBase;
+            private List<TargetsBean> targets;
+            private List<PolicyPersonsBean> policyPersons;
+            private AgentDefineBean agentDefine;
+            private DepartmentDefineBean departmentDefine;
+            private SaleBusinessSourceBean saleBusinessSource;
+            private List<PolicyCoveragesBean> policyCoverages;
+            private List<PolicyRatiosBean> policyRatios;
+            private PolicyExtendBean policyExtend;
+            private Boolean flag;
+            private Boolean hasNon;
+            private String allAmountChangeFlag;
+            private String autoGetTimeFlag;
+            private Boolean noVehicleNo;
+            private Boolean noCarowner;
+            private List<?> riskInfo;
+            private Boolean releaseMark;
+            private String businessType;
+            private Boolean businessInsureCa;
+            private Boolean compulsoryInsureCa;
+            private InsuranerBean insuraner;
+            private String insuranceBeginTime;
+            private ApplicantBean applicant;
+            private String insuranceEndTime;
+            private String departmentCode;
+            private String planCode;
+            private ApplicantPersonBean applicantPerson;
+            private OwnerPersonBean ownerPerson;
+            private String internalDepartmentCode;
+            private InsuredPersonBean insuredPerson;
+            private Double vehicleAge;
+            private Boolean commerialFlag;
+            private VehicleBean vehicle;
+            private String usageAttributeCode;
+            private String productCode;
+            private Boolean haveCBDorODorCDA;
+            private Boolean cancelPolicy;
+            private Boolean returnPolicy;
+            private Boolean claimReturnBlackPolicy;
+            private VehicleOwnerBean vehicleOwner;
+            private String businessTypeDetail;
+            private Boolean returnOrCancelPolicy;
+            private String targetType;
+        }
+
+        @Data
+        public static class ContractsBean {
+            private Integer page;
+            private Integer pageSize;
+            private PolicyBaseBean policyBase;
+            private List<TargetsBean> targets;
+            private List<PolicyPersonsBean> policyPersons;
+            private AgentDefineBean agentDefine;
+            private DepartmentDefineBean departmentDefine;
+            private SaleBusinessSourceBean saleBusinessSource;
+            private List<PolicyCoveragesBean> policyCoverages;
+            private List<PolicyRatiosBean> policyRatios;
+            private PolicyExtendBean policyExtend;
+            private Boolean flag;
+            private Boolean hasNon;
+            private String allAmountChangeFlag;
+            private String autoGetTimeFlag;
+            private Boolean noVehicleNo;
+            private Boolean noCarowner;
+            private List<?> riskInfo;
+            private Boolean releaseMark;
+            private String businessType;
+            private Boolean businessInsureCa;
+            private Boolean compulsoryInsureCa;
+            private InsuranerBean insuraner;
+            private String insuranceBeginTime;
+            private ApplicantBean applicant;
+            private String insuranceEndTime;
+            private String departmentCode;
+            private String planCode;
+            private ApplicantPersonBean applicantPerson;
+            private OwnerPersonBean ownerPerson;
+            private String internalDepartmentCode;
+            private InsuredPersonBean insuredPerson;
+            private Double vehicleAge;
+            private Boolean commerialFlag;
+            private VehicleBean vehicle;
+            private String usageAttributeCode;
+            private String productCode;
+            private Boolean haveCBDorODorCDA;
+            private Boolean cancelPolicy;
+            private Boolean returnPolicy;
+            private Boolean claimReturnBlackPolicy;
+            private VehicleOwnerBean vehicleOwner;
+            private String businessTypeDetail;
+            private Boolean returnOrCancelPolicy;
+            private String targetType;
+        }
+
+        @Data
+        public static class PolicyBaseBean {
+            private Integer page;
+            private Integer pageSize;
+            private String planCode;
+            private String productCode;
+            private String departmentCode;
+            private Boolean includeSubDep;
+            private String insuranceBeginTime;
+            private String insuranceEndTime;
+            private String agentCode;
+            private String businessClass;
+            private Integer rateScale;
+            private Integer rateTwoScale;
+            private String businessType;
+            private String businessTypeDetail;
+            private String targetType;
+            private String shortTimeCoefficient;
+            private Integer claimRecordBizSize;
+            private Integer claimRecordSize;
+            private String rescueCountRemark;
+            private Integer allClaimAmountBiz;
+            private Integer allClaimAmount;
+            private Boolean illegalInsuredCertFlag;
+            private String immediateEffectFlag;
+            private Boolean isOverdue;
+            private Boolean applicantAgeFlag;
+            private Boolean insuranerAgeFlag;
+            private Boolean personnelAgeFlag;
+            private Boolean businessInsureFlag;
+            private Boolean compulsoryInsureFlag;
+            private String factorScale;
+            private Boolean shortTimeCoefficientShow;
+            private String minRatioMode;
+        }
+
+        @Data
+        public static class TargetsBean {
+            private Integer page;
+            private Integer pageSize;
+            private String targetType;
+            private String targetId;
+            private String vehicleVer;
+            private List<TargetCoveragesBean> targetCoverages;
+            private List<?> beneficiaryList;
+            private PolicyPricingBean policyPricing;
+            private String linkId;
+            private String vehicleLicenceCode;
+            private String vehicleFrameNo;
+            private String engineNo;
+            private String firstRegisterDate;
+            private String firstRegisterDateStr;
+            private String priceType;
+            private String purchasePrice;
+            private String importFlag;
+            private String vehicleType;
+            private String vehicleStyle;
+            private String autoModelCode;
+            private String vehicleBrand;
+            private Integer vehicleSeats;
+            private Integer originalVehicleSeats;
+            private String fuelType;
+            private String autoModelChnName;
+            private String licenceTypeCode;
+            private String ecdemicVehicleFlag;
+            private Double exhaustCapability;
+            private Double originalExhaustCapability;
+            private Integer vehicleTonnages;
+            private Integer originalVehicleTonnages;
+            private Integer power;
+            private String maxDesignSpeed;
+            private String ownershipAttributeCode;
+            private String vehicleCertificateType;
+            private Double customerNegotiatePrice;
+            private Double originalCustomerNegotiatePrice;
+            private String departmentCode;
+            private String vehicleStyleDesc;
+            private List<RtaVehilceListBean> rtaVehilceList;
+            private String modelCode;
+            private Double weigth;
+            private Double originalVehicleWeigth;
+            private String fleetNo;
+            private String fleetRate;
+            private String vehicleCertificateNo;
+            private String maker;
+            private String usageAttributeCode;
+            private String brandChnName;
+            private String carName;
+            private String categoryCode;
+            private String categoryName;
+            private String configType;
+            private String deptCode;
+            private String deptName;
+            private String modelIdCode;
+            private String noticeType;
+            private String partInfo;
+            private String powerType;
+            private String series;
+            private String seriesCode;
+            private String tradeCode;
+            private String tradeName;
+            private String vehicleFgwCode;
+            private String vehicleFgwName;
+            private Integer vehicleLossInsuredValue;
+            private String vehicleModelType;
+            private String vehicleTypeName;
+            private String makeDate;
+            private String detailDesc;
+            private String dbVehicleType;
+            private String ineffectualDate;
+            private String lastCheckDate;
+            private String rejectDate;
+            private String modelCodeAlien;
+            private String usageAttributeCodePM;
+            private String brand;
+            private String vehicleColor;
+            private String vehicleCategory;
+            private String brandCode;
+            private String basicRateCode;
+            private String madeDate;
+            private String specialVehicleFlag;
+            private String overseasVehicleFlag;
+            private String isMortgage;
+            private String modelsListedYear;
+            private String vehiclePurchasePrice;
+            private String groupCode;
+            private String refitDesc;
+            private String carNameAlien;
+            private String tradeNameAlien;
+            private String brandAlien;
+            private String deptNameAlien;
+            private CheckVehicleInfoBean checkVehicleInfo;
+            private String theftproofEquipmentCode;
+            private String newVehicleFlag;
+            private String vehicleClass;
+            private String standardName;
+            private BrandAutoModelBean brandAutoModel;
+            private String ymElecBatteryType;
+            private String rbCode;
+            private String pureRange;
+            private String otherEnergyTypeDesc;
+            private String vehicleStyleUniqueId;
+            private String checkVehicleCodeSecret;
+            private Boolean local;
+            private Integer targetTotalActualPremium;
+        }
+
+        @Data
+        public static class PolicyPersonsBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelAttribute;
+            private String relationshipWithInsured;
+            private String appliWithInsRelaship;
+            private PersonnelInfoBaseBean personnelInfoBase;
+            private Boolean owner;
+            private Boolean applicant;
+            private Boolean insuraner;
+            private Boolean person;
+            private Boolean group;
+        }
+
+        @Data
+        public static class AgentDefineBean {
+            private Integer page;
+            private Integer pageSize;
+            private String agentCode;
+        }
+
+        @Data
+        public static class DepartmentDefineBean {
+            private String createdBy;
+            private String createdDate;
+            private String updatedBy;
+            private String updatedDate;
+            private Integer page;
+            private Integer pageSize;
+            private String departmentCode;
+            private String internalDepartmentCode;
+            private String departmentChineseName;
+            private String departmentAbbrName;
+            private Integer departmentLevel;
+            private String foundDate;
+            private String chineseAddress;
+            private String postCode;
+            private String departmentEnglishName;
+            private String englishAddress;
+            private String telephone;
+            private String fax;
+            private String upperDepartmentCode;
+            private String linkManCode;
+            private String levelDepCode;
+            private String regulatoryDepartmentCode;
+            private String secondBranchCode;
+            private String thirdBranchCode;
+            private String needValidateFour;
+            private String pigeonholeDeptCode;
+            private String revenueRegisterNo;
+            private String standareasCode;
+            private String departmentPrintName;
+            private String agentRatioSetupRule;
+            private String validateAttachment;
+            private String noticeBill;
+            private String taxPayNo;
+            private Integer instalment;
+            private String reportBeforeRegister;
+            private String alarmMark;
+            private String vehicleReportTelephone;
+            private String vehicleLiscenceCodePrefix;
+            private String financeDepartmentCode;
+            private String claimAddress;
+            private String invoicePdf;
+            private String claimDealDepartmentCode;
+            private String platform;
+            private String reCancelPolicy;
+            private String isCanclePolicy;
+            private String isQueryBackcode;
+            private String isPutChangedPremium;
+            private String uploadHistoryPolicy;
+            private String genRestricFlag;
+            private String invoicePrint;
+            private String printStampTax;
+            private String endorseInvoicePrint;
+            private String checkCar;
+            private String createPolicyLabel;
+            private String needValidate;
+            private String factorRatio;
+            private String bussinessTax;
+            private String personnelTax;
+            private String isForsePrint;
+            private String premiumPaymentMode;
+            private String outerPaymentFlag;
+            private String hrDepartmentCode;
+            private Integer canReturnVehicletax;
+            private Integer modifyVehicletax;
+            private Integer paymentNoticPrint;
+            private String policyInvoiceRemarkPrint;
+            private Integer affiliatedCharacter;
+            private Integer splitPolicy;
+            private Integer validChargeAffirmControl;
+            private Integer specialPromisePay;
+            private Integer chequeInsureDeferredDays;
+            private String centralizedEvaluateFlag;
+            private String vehiclePriceType;
+            private Integer usePlatform;
+            private Integer platformDestin;
+            private Integer messageType;
+            private Integer platformRequestType;
+            private Integer coverageInsured;
+            private Integer coverageLimit;
+            private Integer validateApplyUnderwrite;
+            private String platformVehiclepriceType;
+            private Integer modifySpecialPromise;
+            private String enableStandardFactorratio;
+            private String fillupMoney;
+            private String ministerFund;
+            private String localHistoryPlatformDays;
+            private String hiddenCustomerPhone;
+            private String autoCardPrint;
+            private String insurancePeriodJoinTips;
+            private Integer telQualityRule;
+            private String runcardCertificateDate;
+            private String localPondPlatformDays;
+            private String localPondPlatformTimes;
+            private String canUsePlatformAtApply;
+            private String platformCacheQueryMode;
+            private String queryCacheFlag;
+            private String exeRuleType;
+            private String rateFactorDisplayControl;
+            private String eposFormat;
+            private String taxFieldConfig;
+            private String needValidateSecond;
+            private String lockedFactorRatio;
+            private String areaFlag;
+            private String ruleRemote;
+            private String printControl;
+            private String platformRequestCode;
+            private String usePlatformVersion;
+            private String checkRepeatApply;
+            private String checkRenewPolicy;
+            private String addressCheckModeScript;
+            private String factorCheckFlag;
+            private String factorMinRatioFlag;
+            private String riskScoreType;
+            private String riskScoreCheck;
+            private String riskScoreShow;
+            private String isAutoDrawback;
+            private String decisionScript;
+            private String invoicePrintAbbrName;
+            private String companyName;
+            private String companyCurtailName;
+            private String needValidateThird;
+            private String countryCode;
+            private String state;
+            private String city;
+            private String documentObsoleteNum;
+            private String taxAmount;
+            private String platformVinAddress;
+            private String ditchFactor;
+            private String queryCacheNewFlag;
+            private String myScoreBasicConfig;
+            private String endorseRateDate;
+            private String signCode;
+            private String epolicyStartDate;
+            private String epolicyCommonCode;
+            private String certificationChannelId;
+            private String duomControlSwitch;
+            private String platformAreaCode;
+            private Boolean registerDateFlag;
+            private String eInvoiceSwitchTrack;
+            private Boolean showPayAddAndDeleteBtn;
+            private Boolean showReparationsPremium;
+            private Boolean vehicleStateFlag;
+            private Boolean personCert;
+            private Boolean certDepartmentName;
+            private Boolean taxVehicleType;
+            private Boolean lastYearEndDateFlag;
+            private Boolean payNo;
+            private Boolean payFreeState;
+            private Boolean deductionDueCode;
+            private Boolean deductionDueType;
+            private Boolean deductionDueProportion;
+            private Boolean deduction;
+            private Boolean freeNo;
+            private Boolean defaultBillTypePaper;
+            private Boolean clearTaxFlag;
+            private Boolean fromTaxRegisterNo;
+            private Boolean vehicleTypeDiff;
+            private Boolean ncdDisplaySwitchFlag;
+            private Boolean manualInputFreeNoFlag;
+            private Boolean platfromTimeAutoChoose;
+            private Boolean configCertDepartment;
+            private String departmentCashFlag;
+            private Boolean steerCardVehicleTypeLockedByExhaustCapability;
+            private Boolean deptEndorseNotCalulateVehicletex;
+            private Boolean openPlatformVehicleTaxProcess;
+            private String levelDepCodeFirstLevel;
+            private Boolean needCustomerInfo;
+            private Boolean printOrderFlag;
+            private Boolean runCardCertificateAndFirstRegister;
+            private Boolean paymentTypeControl;
+            private Boolean newCarNeedApplyQuery;
+            private Boolean searchPlatformDriver;
+            private Boolean searchVehicleRTA;
+            private Boolean openAlienVehicle;
+            private Boolean disputedSettleMode;
+            private Boolean dispRiskError;
+            private Boolean idCardColletControl;
+            private Boolean goodDriver;
+            private String defaultBrandType;
+            private Boolean institutionCQ;
+            private Boolean vehicleSafetyInspection;
+            private Boolean bargainingByPlanform;
+            private Boolean dispRiskPricing;
+            private Boolean showModelDiscount;
+            private Boolean autoUnderwritingRuleFlag;
+            private Boolean taxBeginDateNoControl;
+            private Boolean showFloatCommision;
+            private Boolean showGroupClaimRatio;
+            private Boolean customerGroupLabelFlag;
+            private Boolean motorFullEndorse;
+            private Boolean policyFormat;
+            private Boolean checkReturnCode;
+            private Boolean floatCustomerNegotiatePrice;
+            private Boolean priceOfNewAndOldCarsHandle;
+            private Boolean customerPriceExceed;
+            private Boolean sysErrorCustomerPriceExceed;
+            private Boolean floatPriceSplit;
+            private Boolean premiumVehicle;
+            private Boolean queryNeedAccessControl;
+            private Boolean disputedSettleModeArbitrate;
+            private Boolean allowRepeatApplyPolicy;
+            private Boolean registerDate;
+            private Boolean viewDriver;
+            private Boolean nationalPlatformThirdQuarter22;
+            private Boolean detailsAddrFlag;
+            private Boolean breakRules;
+            private Boolean payTaxesChoose;
+            private Boolean nationwideSecondQuarterFlag;
+            private Boolean useBeijingNewVehicletaxPlanform;
+            private Boolean abstemiousCarTaxDerate;
+            private Boolean runCardCertificateDate;
+            private Boolean antiFraudJS;
+            private Boolean needCheckAddress;
+            private Boolean antiFraud;
+            private Boolean realNameCheckForEpos;
+            private Boolean autoUploadHistoryPolicy;
+            private Boolean oldPlanCodeEndorseUsePlatform;
+            private Boolean personnelNameDetails;
+            private String depCodeSubStrThree;
+            private Boolean vocationPriceCanModified;
+            private Boolean usePreciseService;
+            private Boolean axaApplyPolicyFormat;
+            private Boolean enableEndorseFind;
+            private Boolean agentBusiness;
+            private Boolean needCertCardValidityDate;
+            private Boolean runcardCertificateDateInput;
+            private Boolean showPersonnelInfoCheck;
+            private Boolean lockTaxBeginDate;
+            private String vehicleTaxStatusMode;
+            private Boolean epolicyNeedEmail;
+            private String taxPaymentBeginTimeChoose;
+            private Boolean policyAssociationQuotation;
+            private Boolean showPureRiskPremium;
+            private Boolean duomControlFlag;
+            private Boolean nationalPlatformThirdQuarter23;
+            private Boolean vinFromBasicOrPlatform;
+            private String PriceTypeDefault;
+            private Boolean beCoveredWithVehicle;
+            private String peccancyTimeValueMode;
+            private String businessChangePlatform;
+            private Boolean isBeijingNewProcessOfCollector;
+            private String steerCardVehicleType;
+            private String policyInfoSendPlatform;
+            private String trafficDataPlatform;
+            private String vehicleTaxCalculationWay;
+            private String areaVehicleTax;
+            private Boolean realNameIntercept;
+        }
+
+        @Data
+        public static class SaleBusinessSourceBean {
+            private Integer page;
+            private Integer pageSize;
+            private String saleAgentCode;
+        }
+
+        @Data
+        public static class PolicyCoveragesBean {
+            private Integer page;
+            private Integer pageSize;
+            private String fullYearPremium;
+            private String dutyCode;
+            private String dutyChineseName;
+            private Integer seats;
+            private Integer premiumRate;
+            private Integer deductionAmount;
+            private Integer deductible;
+            private Integer medicalAmount;
+            private Integer dieAmount;
+            private Integer propertyAmount;
+            private Integer noFaultMedicalAmount;
+            private Integer noFaultDieAmount;
+            private Integer noFaultPropertyAmount;
+            private Integer allAmount;
+            private Integer insuredAmount;
+            private Integer totalStandardPremium;
+            private Integer totalAgreePremium;
+            private Integer totalActualPremium;
+            private Integer totalNetPremium;
+            private Integer addedValueTax;
+            private Integer equipmentInsureAmount;
+            private List<?> newEquipmentList;
+            private Boolean newFlag;
+            private Boolean modifyFlag;
+            private Integer calculateEndorsePremium;
+            private Integer checkTotalNetPremium;
+            private Integer checkAddedValueTax;
+            private Boolean checked;
+            private Integer deductionRate;
+            private String serviceNum;
+            private String mileage;
+            private String setMeal;
+            private String isTelpeson;
+            private String telPhone;
+            private String refundFlag;
+            private List<?> chargingPostDataList;
+            private Integer coverageNum;
+            private String isShareSumDutyFlag;
+            private String priority;
+            private Integer ariExpense;
+            private Boolean coverageReturn;
+            private Boolean coverageCancel;
+            private Boolean claimCoverageReturn;
+            private Boolean coverageCancelOrReturn;
+        }
+
+        @Data
+        public static class PolicyRatiosBean {
+            private Integer page;
+            private Integer pageSize;
+            private String linkId;
+            private String dutyCode;
+            private String factorCode;
+            private String factorValue;
+            private Integer ratioOd;
+            private Integer ratioTp;
+            private Integer ratioTheft;
+            private Integer ratioOther;
+            private Integer ratiototal;
+            private Boolean viewFlag;
+            private RatioMapBean ratioMap;
+            private String labelName;
+            private Double averageRatio;
+
+            @Data
+            public static class RatioMapBean {
+            }
+        }
+
+        @Data
+        public static class PolicyExtendBean {
+            private Integer page;
+            private Integer pageSize;
+            private String vehicleRiskType;
+            private String eicRiskScore;
+        }
+
+        @Data
+        public static class InsuranerBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelAttribute;
+            private String relationshipWithInsured;
+            private String appliWithInsRelaship;
+            private PersonnelInfoBaseBean personnelInfoBase;
+            private Boolean owner;
+            private Boolean applicant;
+            private Boolean insuraner;
+            private Boolean person;
+            private Boolean group;
+        }
+
+        @Data
+        public static class ApplicantBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelAttribute;
+            private String relationshipWithInsured;
+            private String appliWithInsRelaship;
+            private PersonnelInfoBaseBean personnelInfoBase;
+            private Boolean owner;
+            private Boolean applicant;
+            private Boolean insuraner;
+            private Boolean person;
+            private Boolean group;
+        }
+
+        @Data
+        public static class ApplicantPersonBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelName;
+            private String certificateType;
+            private String certificateNo;
+            private String mobileTelephone;
+            private String homeAreaCode;
+            private String homeTelephone;
+            private String postcode;
+            private String email;
+            private String driverLicenseExpirationDate;
+            private String drivingExpirationDate;
+            private String address;
+            private String birthday;
+            private String certiCityCode;
+            private String certiProvinceCode;
+            private String certiAreaCode;
+            private String certificateaddress;
+            private String certificateAddressAfter;
+            private String department;
+            private String homeAddress;
+            private String homeAddressAfter;
+            private String homeAreaCountyCode;
+            private String homeCityCode;
+            private String homeProvinceCode;
+            private String invalidateFlag;
+            private String isRuralOrUrban;
+            private String personnelAge;
+            private String sexCode;
+            private String nation;
+            private String issuedAt;
+            private String effectedDate;
+            private String expiredDate;
+            private String baseId;
+            private String certType;
+            private String positionn;
+            private String phoneOwnerName;
+            private String phoneOwnerCertiNo;
+            private String phoneOwnerCertiType;
+            private String teleNoOwnerIsSelfFlag;
+            private String other1Address;
+            private String other1ProvinceCode;
+            private String other1CityCode;
+            private String other1AreaCountyCode;
+            private String other2Address;
+            private String other2ProvinceCode;
+            private String other2CityCode;
+            private String other2AreaCountyCode;
+            private String workUnit;
+            private String annualIncome;
+            private String nationalityType;
+            private String certificateAddressId;
+            private String homeAddressId;
+            private String idCardAddressId;
+            private String other1AddressId;
+            private String other2AddressId;
+            private String bankAccountId;
+            private String emailId;
+            private String mobileTelephoneId;
+            private String homeTelephoneId;
+            private String officeTelephoneId;
+            private String longExpiredDate;
+            private String fixedTelephoneMarkBecause;
+            private String driveLicenseType1;
+            private String idCardAccess;
+            private String idCardAddress;
+            private String bankCode;
+            private String bankAccount;
+            private String marriedStatu;
+            private String mobileTelephoneMarkBecause;
+            private String amlId;
+        }
+
+        @Data
+        public static class OwnerPersonBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelName;
+            private String certificateType;
+            private String certificateNo;
+            private String mobileTelephone;
+            private String homeAreaCode;
+            private String homeTelephone;
+            private String postcode;
+            private String email;
+            private String driverLicenseExpirationDate;
+            private String drivingExpirationDate;
+            private String address;
+            private String birthday;
+            private String certiCityCode;
+            private String certiProvinceCode;
+            private String certiAreaCode;
+            private String certificateaddress;
+            private String certificateAddressAfter;
+            private String department;
+            private String homeAddress;
+            private String homeAddressAfter;
+            private String homeAreaCountyCode;
+            private String homeCityCode;
+            private String homeProvinceCode;
+            private String invalidateFlag;
+            private String isRuralOrUrban;
+            private String personnelAge;
+            private String sexCode;
+            private String nation;
+            private String issuedAt;
+            private String effectedDate;
+            private String expiredDate;
+            private String baseId;
+            private String certType;
+            private String positionn;
+            private String phoneOwnerName;
+            private String phoneOwnerCertiNo;
+            private String phoneOwnerCertiType;
+            private String teleNoOwnerIsSelfFlag;
+            private String other1Address;
+            private String other1ProvinceCode;
+            private String other1CityCode;
+            private String other1AreaCountyCode;
+            private String other2Address;
+            private String other2ProvinceCode;
+            private String other2CityCode;
+            private String other2AreaCountyCode;
+            private String workUnit;
+            private String annualIncome;
+            private String nationalityType;
+            private String certificateAddressId;
+            private String homeAddressId;
+            private String idCardAddressId;
+            private String other1AddressId;
+            private String other2AddressId;
+            private String bankAccountId;
+            private String emailId;
+            private String mobileTelephoneId;
+            private String homeTelephoneId;
+            private String officeTelephoneId;
+            private String longExpiredDate;
+            private String fixedTelephoneMarkBecause;
+            private String driveLicenseType1;
+            private String idCardAccess;
+            private String idCardAddress;
+            private String bankCode;
+            private String bankAccount;
+            private String marriedStatu;
+            private String mobileTelephoneMarkBecause;
+            private String amlId;
+        }
+
+        @Data
+        public static class InsuredPersonBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelName;
+            private String certificateType;
+            private String certificateNo;
+            private String mobileTelephone;
+            private String homeAreaCode;
+            private String homeTelephone;
+            private String postcode;
+            private String email;
+            private String driverLicenseExpirationDate;
+            private String drivingExpirationDate;
+            private String address;
+            private String birthday;
+            private String certiCityCode;
+            private String certiProvinceCode;
+            private String certiAreaCode;
+            private String certificateaddress;
+            private String certificateAddressAfter;
+            private String department;
+            private String homeAddress;
+            private String homeAddressAfter;
+            private String homeAreaCountyCode;
+            private String homeCityCode;
+            private String homeProvinceCode;
+            private String invalidateFlag;
+            private String isRuralOrUrban;
+            private String personnelAge;
+            private String sexCode;
+            private String nation;
+            private String issuedAt;
+            private String effectedDate;
+            private String expiredDate;
+            private String baseId;
+            private String certType;
+            private String positionn;
+            private String phoneOwnerName;
+            private String phoneOwnerCertiNo;
+            private String phoneOwnerCertiType;
+            private String teleNoOwnerIsSelfFlag;
+            private String other1Address;
+            private String other1ProvinceCode;
+            private String other1CityCode;
+            private String other1AreaCountyCode;
+            private String other2Address;
+            private String other2ProvinceCode;
+            private String other2CityCode;
+            private String other2AreaCountyCode;
+            private String workUnit;
+            private String annualIncome;
+            private String nationalityType;
+            private String certificateAddressId;
+            private String homeAddressId;
+            private String idCardAddressId;
+            private String other1AddressId;
+            private String other2AddressId;
+            private String bankAccountId;
+            private String emailId;
+            private String mobileTelephoneId;
+            private String homeTelephoneId;
+            private String officeTelephoneId;
+            private String longExpiredDate;
+            private String fixedTelephoneMarkBecause;
+            private String driveLicenseType1;
+            private String idCardAccess;
+            private String idCardAddress;
+            private String bankCode;
+            private String bankAccount;
+            private String marriedStatu;
+            private String mobileTelephoneMarkBecause;
+            private String amlId;
+        }
+
+        @Data
+        public static class VehicleBean {
+            private Integer page;
+            private Integer pageSize;
+            private String targetType;
+            private String targetId;
+            private String vehicleVer;
+            private List<TargetCoveragesBean> targetCoverages;
+            private List<?> beneficiaryList;
+            private PolicyPricingBean policyPricing;
+            private String linkId;
+            private String vehicleLicenceCode;
+            private String vehicleFrameNo;
+            private String engineNo;
+            private String firstRegisterDate;
+            private String firstRegisterDateStr;
+            private String priceType;
+            private String purchasePrice;
+            private String importFlag;
+            private String vehicleType;
+            private String vehicleStyle;
+            private String autoModelCode;
+            private String vehicleBrand;
+            private Integer vehicleSeats;
+            private Integer originalVehicleSeats;
+            private String fuelType;
+            private String autoModelChnName;
+            private String licenceTypeCode;
+            private String ecdemicVehicleFlag;
+            private Double exhaustCapability;
+            private Double originalExhaustCapability;
+            private Integer vehicleTonnages;
+            private Integer originalVehicleTonnages;
+            private Integer power;
+            private String maxDesignSpeed;
+            private String ownershipAttributeCode;
+            private String vehicleCertificateType;
+            private Double customerNegotiatePrice;
+            private Double originalCustomerNegotiatePrice;
+            private String departmentCode;
+            private String vehicleStyleDesc;
+            private List<RtaVehilceListBean> rtaVehilceList;
+            private String modelCode;
+            private Double weigth;
+            private Double originalVehicleWeigth;
+            private String fleetNo;
+            private String fleetRate;
+            private String vehicleCertificateNo;
+            private String maker;
+            private String usageAttributeCode;
+            private String brandChnName;
+            private String carName;
+            private String categoryCode;
+            private String categoryName;
+            private String configType;
+            private String deptCode;
+            private String deptName;
+            private String modelIdCode;
+            private String noticeType;
+            private String partInfo;
+            private String powerType;
+            private String series;
+            private String seriesCode;
+            private String tradeCode;
+            private String tradeName;
+            private String vehicleFgwCode;
+            private String vehicleFgwName;
+            private Integer vehicleLossInsuredValue;
+            private String vehicleModelType;
+            private String vehicleTypeName;
+            private String makeDate;
+            private String detailDesc;
+            private String dbVehicleType;
+            private String ineffectualDate;
+            private String lastCheckDate;
+            private String rejectDate;
+            private String modelCodeAlien;
+            private String usageAttributeCodePM;
+            private String brand;
+            private String vehicleColor;
+            private String vehicleCategory;
+            private String brandCode;
+            private String basicRateCode;
+            private String madeDate;
+            private String specialVehicleFlag;
+            private String overseasVehicleFlag;
+            private String isMortgage;
+            private String modelsListedYear;
+            private String vehiclePurchasePrice;
+            private String groupCode;
+            private String refitDesc;
+            private String carNameAlien;
+            private String tradeNameAlien;
+            private String brandAlien;
+            private String deptNameAlien;
+            private CheckVehicleInfoBean checkVehicleInfo;
+            private String theftproofEquipmentCode;
+            private String newVehicleFlag;
+            private String vehicleClass;
+            private String standardName;
+            private BrandAutoModelBean brandAutoModel;
+            private String ymElecBatteryType;
+            private String rbCode;
+            private String pureRange;
+            private String otherEnergyTypeDesc;
+            private String vehicleStyleUniqueId;
+            private String checkVehicleCodeSecret;
+            private Boolean local;
+            private Integer targetTotalActualPremium;
+        }
+
+        @Data
+        public static class VehicleOwnerBean {
+            private Integer page;
+            private Integer pageSize;
+            private String personnelAttribute;
+            private String relationshipWithInsured;
+            private String appliWithInsRelaship;
+            private PersonnelInfoBaseBean personnelInfoBase;
+            private Boolean owner;
+            private Boolean applicant;
+            private Boolean insuraner;
+            private Boolean person;
+            private Boolean group;
+        }
+
+        @Data
+        public static class TargetCoveragesBean {
+            private Integer page;
+            private Integer pageSize;
+            private String fullYearPremium;
+            private String dutyCode;
+            private String dutyChineseName;
+            private Integer seats;
+            private Integer premiumRate;
+            private Integer deductionAmount;
+            private Integer deductible;
+            private Integer medicalAmount;
+            private Integer dieAmount;
+            private Integer propertyAmount;
+            private Integer noFaultMedicalAmount;
+            private Integer noFaultDieAmount;
+            private Integer noFaultPropertyAmount;
+            private Integer allAmount;
+            private Integer insuredAmount;
+            private Integer totalStandardPremium;
+            private Integer totalAgreePremium;
+            private Integer totalActualPremium;
+            private Integer totalNetPremium;
+            private Integer addedValueTax;
+            private Integer equipmentInsureAmount;
+            private List<?> newEquipmentList;
+            private Boolean newFlag;
+            private Boolean modifyFlag;
+            private Integer calculateEndorsePremium;
+            private Integer checkTotalNetPremium;
+            private Integer checkAddedValueTax;
+            private Boolean checked;
+            private Integer deductionRate;
+            private String serviceNum;
+            private String mileage;
+            private String setMeal;
+            private String isTelpeson;
+            private String telPhone;
+            private String refundFlag;
+            private List<?> chargingPostDataList;
+            private Integer coverageNum;
+            private String isShareSumDutyFlag;
+            private String priority;
+            private Integer ariExpense;
+            private Boolean coverageReturn;
+            private Boolean coverageCancel;
+            private Boolean claimCoverageReturn;
+            private Boolean coverageCancelOrReturn;
+        }
+
+        @Data
+        public static class PolicyPricingBean {
+            private Integer page;
+            private Integer pageSize;
+            private String usageAttributeCode;
+            private String ownershipAttributeCode;
+            private Integer dbVehicleValue;
+            private String isMotorcade;
+            private String loanVehicleFlag;
+            private String specialCarFlag;
+            private String appointAreaCode;
+            private List<VehiclePricesBean> vehiclePrices;
+            private Double autoRuleRatioOD;
+            private Double autoRuleRatioTP;
+            private Double autoRuleRatioTHEFT;
+            private Double autoRuleRatioOTHER;
+            private Integer autoFloatRatioOD;
+            private Integer autoFloatHandingCost;
+            private String ratioFluctuateType;
+            private String scoreRunId;
+            private String usageLicenceName;
+            private String vehicleTypeChiName;
+            private String dbVehicleVeiw;
+            private String dbVehicleAutoModelChnName;
+            private String dbVehicleBrand;
+            private String riskFlag;
+            private String vehicleAlias;
+            private String dbVehicleTypeName;
+            private String dbVehicleSeats;
+            private String dbExhaustCapability;
+            private String dbVehicleTonnages;
+            private String dbVehicleWeigth;
+            private String ifModelRate;
+            private String modelrate;
+            private String injurySite;
+            private String isSpecialInsuranceVehicle;
+            private String lastyearStartDate;
+            private String lastyearEndDate;
+            private String rateFloatFlag;
+            private String transferFlag;
+            private String highRiskFlag;
+            private String effectReason;
+            private String lastYearCompanyId;
+            private String lastYearIsTel;
+            private String repairFactory;
+            private String isMortgage;
+            private String riskScoreColor;
+            private String scoreReason;
+            private String scoreReasonLevel;
+            private String scoreReasonLevel2;
+            private String businessInOrOut;
+            private String rateType;
+            private String priceRises;
+            private String scoreReasonLevel3;
+            private Double ruleRatioOD;
+            private Double ruleRatioTP;
+            private Double ruleRatioTHEFT;
+            private Double ruleRatioOTHER;
+            private String reinsureFlag;
+            private String partInfo;
+            private String isReturnManyRbCode;
+            private String claimAdjustLevel;
+            private Integer comprehensiveScore;
+            private String fdConfigId;
+            private List<ElectronicCertInfoBean> electronicCertInfo;
+            private String useBasicDataCoverFlag;
+            private String lastyearEndDateFormat;
+            private String newColor;
+            private String lastyearStartDateFormat;
+
+            @Data
+            public static class ElectronicCertInfoBean {
+                private String name;
+            }
+
+            @Data
+            public static class VehiclePricesBean {
+                private Integer page;
+                private Integer pageSize;
+                private String brandChnName;
+                private String autoModelChnName;
+                private String purchasePrice;
+                private String remark;
+                private String vehSeries;
+                private String modelCode;
+                private String rbCode;
+                private String importFlag;
+                private String modelCodeHY;
+                private String tradeName;
+                private String brand;
+                private String series;
+                private String carName;
+                private String noticeType;
+                private String categoryName;
+                private String deptName;
+                private String vehicleStyleUniqueId;
+                private Integer limitVehicle;
+                private String importFlagChange;
+            }
+        }
+
+        @Data
+        public static class RtaVehilceListBean {
+            private Integer page;
+            private Integer pageSize;
+            private String autoModelChnName;
+            private Integer exhaustCapability;
+            private Integer vehicleTonnages;
+            private String modelCode;
+            private Integer weigth;
+            private String carName;
+            private String categoryCode;
+            private String categoryName;
+            private String configType;
+            private String deptCode;
+            private String deptName;
+            private String modelIdCode;
+            private String noticeType;
+            private String series;
+            private String seriesCode;
+            private String tradeCode;
+            private String tradeName;
+            private String brandCN;
+            private String brandEN;
+            private String brand;
+            private String salePrice;
+            private String rbCode;
+            private String vehicleStyleUniqueId;
+            private Boolean local;
+            private Integer targetTotalActualPremium;
+        }
+
+        @Data
+        public static class CheckVehicleInfoBean {
+            private Integer page;
+            private Integer pageSize;
+            private String checkVehicleSituation;
+            private String vehicleChecker;
+            private String checkRecord;
+            private String checkVehicleFlag;
+            private String uploadCheckVehicleInfo;
+        }
+
+        @Data
+        public static class BrandAutoModelBean {
+            private Integer page;
+            private Integer pageSize;
+            private String autoModelCode;
+            private String modelSelectName;
+            private String brandChnName;
+            private String autoModelChnName;
+            private String purchasePrice;
+            private String purchasePriceTax;
+            private String tons;
+            private String seats;
+            private String seatsString;
+            private String exhaustCapabilityString;
+            private String vehicleType;
+            private String firstSaleDateString;
+            private String remark;
+            private String transmissionType;
+            private String maker;
+            private String standardName;
+            private String flag;
+            private String brandCode;
+            private String familyCode;
+            private String curbWeightMin;
+            private String curbWeightMinString;
+            private String seatCom;
+            private String seatComString;
+            private String tonsString;
+            private String kindredPrice;
+            private String kindredPriceTax;
+            private String riskFlag;
+            private String vehicleAlias;
+            private String insuranceCode;
+            private String rbCode;
+            private String totalVehicleWeight;
+            private String vehicleClassCode;
+            private String vehicleClass;
+            private String tradePrice;
+            private String importFlag;
+            private String stopFlag;
+            private String powerType;
+            private String power;
+            private String vehicleFgwCode;
+            private String vehicleFgwName;
+            private Double exhaustCapability;
+            private String firstSaleDate;
+            private Integer limitVehicle;
+            private String importFlagChange;
+        }
+
+        @Data
+        public static class PersonnelInfoBaseBean {
+            private Integer page;
+            private Integer pageSize;
+            private String vipMark;
+            private String personTypeDetailCode;
+            private PersonBean person;
+            private String personTypeOverseas;
+            private String mobileTelephone;
+            private String certificateType;
+            private String certificateNo;
+            private String personnelName;
+            private String address;
+
+            @Data
+            public static class PersonBean {
+                private Integer page;
+                private Integer pageSize;
+                private String personnelName;
+                private String certificateType;
+                private String certificateNo;
+                private String mobileTelephone;
+                private String homeAreaCode;
+                private String homeTelephone;
+                private String postcode;
+                private String email;
+                private String driverLicenseExpirationDate;
+                private String drivingExpirationDate;
+                private String address;
+                private String birthday;
+                private String certiCityCode;
+                private String certiProvinceCode;
+                private String certiAreaCode;
+                private String certificateaddress;
+                private String certificateAddressAfter;
+                private String department;
+                private String homeAddress;
+                private String homeAddressAfter;
+                private String homeAreaCountyCode;
+                private String homeCityCode;
+                private String homeProvinceCode;
+                private String invalidateFlag;
+                private String isRuralOrUrban;
+                private String personnelAge;
+                private String sexCode;
+                private String nation;
+                private String issuedAt;
+                private String effectedDate;
+                private String expiredDate;
+                private String baseId;
+                private String certType;
+                private String positionn;
+                private String phoneOwnerName;
+                private String phoneOwnerCertiNo;
+                private String phoneOwnerCertiType;
+                private String teleNoOwnerIsSelfFlag;
+                private String other1Address;
+                private String other1ProvinceCode;
+                private String other1CityCode;
+                private String other1AreaCountyCode;
+                private String other2Address;
+                private String other2ProvinceCode;
+                private String other2CityCode;
+                private String other2AreaCountyCode;
+                private String workUnit;
+                private String annualIncome;
+                private String nationalityType;
+                private String certificateAddressId;
+                private String homeAddressId;
+                private String idCardAddressId;
+                private String other1AddressId;
+                private String other2AddressId;
+                private String bankAccountId;
+                private String emailId;
+                private String mobileTelephoneId;
+                private String homeTelephoneId;
+                private String officeTelephoneId;
+                private String longExpiredDate;
+                private String fixedTelephoneMarkBecause;
+                private String driveLicenseType1;
+                private String idCardAccess;
+                private String idCardAddress;
+                private String bankCode;
+                private String bankAccount;
+                private String marriedStatu;
+                private String mobileTelephoneMarkBecause;
+                private String amlId;
+            }
+        }
+
+ }

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

@@ -1,5 +1,6 @@
 package com.jzg.quotation.ansheng.crawler.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
@@ -104,11 +105,35 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         // 车架号查询
         AnShengCrawlerSearchVehicleByVinRequest anShengCrawlerSearchVehicleByVinRequest = new AnShengCrawlerSearchVehicleByVinRequest(quoteVo.getCarInfoVo(), userDetailResponse.getDepartmentCode(), userDetailResponse.getAgentCode(),userDetailResponse.getRealBusinessType());
         List<AnShengCrawlerSearchVehicleByVinResponse.DataDTO> dataDTOS = anShengCrawlerRequestComponent.searchVehicleByVin(anShengCrawlerSearchVehicleByVinRequest, httpHeaders);
+        if (CollectionUtil.isEmpty(dataDTOS)){
+            String energyTypeCode = quoteVo.getCarInfoVo().getEnergyTypeCode();
+            boolean b = StringUtils.equals("0", energyTypeCode) || StringUtils.equals("4", energyTypeCode) || StringUtils.equals("5", energyTypeCode);
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("planCode",b ? "109" : "113");
+            jsonObject.put("departmentCode",userDetailResponse.getDepartmentCode());
+            jsonObject.put("usageAttributeCode","1");
+            jsonObject.put("vehicleName",quoteVo.getCarInfoVo().getBrandName());
+            jsonObject.put("vehicleDBFlag","1");
+            dataDTOS = anShengCrawlerRequestComponent.searchVehicleByName(jsonObject, httpHeaders);
+        }
+        if (CollectionUtil.isEmpty(dataDTOS)){
+            throw new SystemException("车型库类型为空");
+        }
         AnShengCrawlerSearchVehicleByVinResponse.DataDTO dataDTO = CarModelsFilterUtils.to(dataDTOS, quoteVo.getCarInfoVo());
         // 报价
         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);
+        String modelCode = targetsBean.getRtaVehilceList().get(0).getModelCode();
+        String brandChnName = targetsBean.getBrandChnName();
+        for (AnShengCrawlerCalculatePremiumApplyMessage.ContractsDTO contract : crawlerCalculatePremiumApply.getContracts()) {
+            contract.getTargetList().get(0).setModelCode(modelCode);
+            contract.getTargetList().get(0).setCarName(brandChnName);
+        }
+        log.info("=============:{}", JSONObject.toJSONString(premiumQueryResponse));
         AnShengCrawlerCalculatePremiumApplyResponse calculatePremiumApply = anShengCrawlerRequestComponent.calculatePremiumApply(crawlerCalculatePremiumApply, httpHeaders);
         // 处理重复投保
         if (calculatePremiumApply.getMessage().contains("重复投保")) {
@@ -187,6 +212,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             contract.setPolicyAttachments(new ArrayList<>());
             contract.getPolicyBase().setFirstTrialTaskNo(simpleData.getFirstTrialTaskNo());
             contract.getTargetList().get(0).setVehicleTax(applicationRequest.getContracts().get(0).getTargetList().get(0).getVehicleTax());
+            contract.setPolicyAttachments(imagesInfo);
         });
         log.info("安盛核保参数:{}", JSONObject.toJSONString(applicationRequest));
         // 核保

+ 12 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java

@@ -195,6 +195,18 @@ public interface OrgClient {
     @GetMapping(value = "/agreementRules/getRuleInfo")
     HttpResult getRuleInfo(@RequestParam("ruleId") String ruleId);
 
+    /**
+     * 获取承保规则实体(含parentId)
+     */
+    @GetMapping(value = "/agreementRules/rulesGet")
+    HttpResult rulesGet(@RequestParam("ruleId") String ruleId);
+
+    /**
+     * 根据父ID查询子规则列表
+     */
+    @GetMapping(value = "/agreementRules/rulesListByParentId")
+    HttpResult rulesListByParentId(@RequestParam("parentId") String parentId);
+
     /**
      * 添加应收
      *

+ 65 - 13
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/AuditVerificationAspect.java

@@ -24,8 +24,10 @@ import org.aspectj.lang.annotation.Before;
 import org.springframework.stereotype.Component;
 
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Aspect
@@ -98,20 +100,47 @@ public class AuditVerificationAspect {
             PtlAgreementCost ptlAgreementCost = JSONObject.parseObject(JSONObject.toJSONString(httpResult.getData()),PtlAgreementCost.class);
             AssertionUtils.isFail(Objects.isNull(ptlAgreementCost),"费用查找失败");
             String coverRuleId = ptlAgreementCost.getCoverRuleId();
-            httpResult = orgClient.getRuleInfo(coverRuleId);
-            AssertionUtils.isFail(httpResult.getCode() == 500,"承保规则查找失败");
-            List<PtlAgreementUndwrtRulesAttrLink> attrLinks = JSONArray.parseArray(JSONObject.toJSONString(httpResult.getData()),PtlAgreementUndwrtRulesAttrLink.class);
+
+            // 查询承保规则实体,判断是否有parentId
+            HttpResult ruleResult = orgClient.rulesGet(coverRuleId);
+            AssertionUtils.isFail(ruleResult.getCode() == 500, "承保规则查找失败");
+            PtlAgreementUndwrtRules ruleEntity = JSONObject.parseObject(JSONObject.toJSONString(ruleResult.getData()), PtlAgreementUndwrtRules.class);
+
+            List<String> ruleIds = new ArrayList<>();
+            if (ruleEntity != null && ruleEntity.getParentId() != null && !ruleEntity.getParentId().isEmpty()) {
+                // 有parentId → 根据parentId查询所有子规则(多条)
+                HttpResult childRulesResult = orgClient.rulesListByParentId(ruleEntity.getParentId());
+                AssertionUtils.isFail(childRulesResult.getCode() == 500, "子规则查找失败");
+                List<PtlAgreementUndwrtRules> childRules = JSONArray.parseArray(JSONObject.toJSONString(childRulesResult.getData()), PtlAgreementUndwrtRules.class);
+                if (childRules != null) {
+                    ruleIds.addAll(childRules.stream().map(PtlAgreementUndwrtRules::getId).collect(Collectors.toList()));
+                }
+            } else {
+                // 无parentId → 使用当前规则
+                ruleIds.add(coverRuleId);
+            }
+
+            // 收集所有规则的属性关联(按规则分组)
+            List<List<PtlAgreementUndwrtRulesAttrLink>> ruleGroups = new ArrayList<>();
+            for (String ruleId : ruleIds) {
+                httpResult = orgClient.getRuleInfo(ruleId);
+                AssertionUtils.isFail(httpResult.getCode() == 500, "承保规则详情查找失败");
+                List<PtlAgreementUndwrtRulesAttrLink> ruleAttrLinks = JSONArray.parseArray(JSONObject.toJSONString(httpResult.getData()), PtlAgreementUndwrtRulesAttrLink.class);
+                if (ruleAttrLinks != null && !ruleAttrLinks.isEmpty()) {
+                    ruleGroups.add(ruleAttrLinks);
+                }
+            }
 
             StringBuilder logs = new StringBuilder();
 
             //先进行承保规则判断
-            verificationRules(attrLinks,logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
+            verificationRules(ruleGroups,logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
                     insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);
         }
     }
 
 
-    private void verificationRules(List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesNews, StringBuilder logs,
+    private void verificationRules(List<List<PtlAgreementUndwrtRulesAttrLink>> ruleGroups, StringBuilder logs,
                                      InsOrdersOther insOrdersOther, InsOrdersCarInfo insOrdersCarInfo,
                                      List<InsOrdersRisk> riskList, List<InsOrdersCarUserInfo> insOrdersCarUserInfos,
                                      List<InsOrdersKind> kindList, InsOrdersCosts insOrdersCosts,
@@ -129,15 +158,38 @@ public class AuditVerificationAspect {
                 riskList, insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, isNewCar);
 
         List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlNewAgreementClient.getUndwrtRulesDictList();
-        for (int i = 0; i < ruleAttrMappingVoList.size(); i++) {
-//            logs.append("触发承保规则:" + ruleAttrMappingVoList.get(i).getAttrCode() + "\n");
-            //判断是否匹配
-            if (!FactorMatch.judgementsUnderwrite(ptlAgreementUndwrtRulesNews, ruleAttrMappingVoList, undwrtRulesAttrList, logs, undwrtRulesDictList)) {
-                throw new SystemException(logs.toString());
-            }else{
-                //如果没有出现异常则清空匹配消息
-                logs.delete(0,logs.length());
+
+        // 多条规则间为OR关系:只要任一条规则匹配即通过
+        StringBuilder allErrorLogs = new StringBuilder();
+        boolean anyRuleMatched = false;
+
+        for (List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesNews : ruleGroups) {
+            if (ptlAgreementUndwrtRulesNews == null || ptlAgreementUndwrtRulesNews.isEmpty()) {
+                continue;
             }
+            boolean ruleMatched = true;
+            StringBuilder ruleLogs = new StringBuilder();
+
+            for (int i = 0; i < ruleAttrMappingVoList.size(); i++) {
+                //判断是否匹配
+                if (!FactorMatch.judgementsUnderwrite(ptlAgreementUndwrtRulesNews, ruleAttrMappingVoList, undwrtRulesAttrList, ruleLogs, undwrtRulesDictList)) {
+                    ruleMatched = false;
+                    break;
+                }else{
+                    //如果没有出现异常则清空匹配消息
+                    ruleLogs.delete(0,ruleLogs.length());
+                }
+            }
+
+            if (ruleMatched) {
+                anyRuleMatched = true;
+                break; // OR关系:任一条规则通过即可
+            }
+            allErrorLogs.append(ruleLogs);
+        }
+
+        if (!anyRuleMatched) {
+            throw new SystemException(allErrorLogs.toString());
         }
     }
 

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderRightsMapper.java

@@ -23,5 +23,5 @@ public interface InsOrderRightsMapper extends BaseMapper<InsOrderRights> {
      * @param orderNo
      * @return
      */
-    Integer deleteByOrderNo(@Param("orderNo") String orderNo);
+//    Integer deleteByOrderNo(@Param("orderNo") String orderNo);
 }

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrderRightsPackageMapper.java

@@ -17,5 +17,5 @@ public interface InsOrderRightsPackageMapper extends BaseMapper<InsOrderRightsPa
      * @param orderNo
      * @return
      */
-    Integer deleteByOrderNo(@Param("orderNo") String orderNo);
+//    Integer deleteByOrderNo(@Param("orderNo") String orderNo);
 }

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersCarUserInfoMapper.java

@@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface InsOrdersCarUserInfoMapper extends BaseMapper<InsOrdersCarUserInfo> {
 
-    @Delete("delete from ins_orders_car_user_info where order_no = #{orderNo}")
-    void deleteOrderNo(Long orderNo);
+//    @Delete("delete from ins_orders_car_user_info where order_no = #{orderNo}")
+//    void deleteOrderNo(Long orderNo);
 }

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersKindMapper.java

@@ -8,6 +8,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface InsOrdersKindMapper extends BaseMapper<InsOrdersKind> {
 
-    @Delete("delete from ins_orders_kind where order_no = #{orderNo}")
-    void deleteOrderNo(Long orderNo);
+//    @Delete("delete from ins_orders_kind where order_no = #{orderNo}")
+//    void deleteOrderNo(Long orderNo);
 }

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersRiskMapper.java

@@ -8,6 +8,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface InsOrdersRiskMapper extends BaseMapper<InsOrdersRisk> {
 
-    @Delete("delete from ins_orders_risk where order_no = #{orderNo}")
-    void deleteOrderNo(Long orderNo);
+//    @Delete("delete from ins_orders_risk where order_no = #{orderNo}")
+//    void deleteOrderNo(Long orderNo);
 }

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsTaskImagesMapper.java

@@ -15,6 +15,6 @@ public interface InsTaskImagesMapper extends BaseMapper<InsTaskImages> {
     InsTaskImagesVo selectByQuoteNo(String quoteNo);
 
 
-    @Delete("delete from ins_task_images where quote_no = #{quoteNo}")
-    void removeByQuoteNo(String quoteNo);
+//    @Delete("delete from ins_task_images where quote_no = #{quoteNo}")
+//    void removeByQuoteNo(String quoteNo);
 }

+ 30 - 30
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -428,14 +428,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         SysUserAccount userAccount = null;
         String jzgInfoId = null;
         if(param.getAuditStatus().equals(1)){
-            List<SysUserAccountChangeLog> incomeLogs = new ArrayList<>();
             StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.SUCCESS_AUDIT,audit.getAuditStatus()+"");
             audit.setAuditStatus(stateFailResult.getCurrentState());
 
             // 更新用户账户
             feeOrders = feeOrdersService.getById(param.getOrderNo());
             HttpResult<SysUser> sysUserResult = orgClient.getUserOnlyIdByMobile(orders.getRealQuoteUserId());
-            HttpResult<SysUserAccount> result = orgClient.accountGet(sysUserResult.getData().getId());
+            SysUser ywySysUser = sysUserResult.getData();
+            HttpResult<SysUserAccount> result = orgClient.accountGet(ywySysUser.getId());
             AssertionUtils.isFail(result.getCode() != 200,"获取用户账户失败!");
             userAccount = result.getData();
 
@@ -454,16 +454,24 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 userAccount.setUserId(sysUserResult.getData().getId());
                 userAccount.setSystemCode(systemCode);
             }
-            BigDecimal sumAmount = userAccount.getSumAmount();
-            BigDecimal amount = feeOrders.getTotalReceivablePremium();
+            BigDecimal sumAmountUnpaid = userAccount.getSumAmountUnpaid();
+            BigDecimal amount = feeOrders.getTotalPayablePremium();
+            userAccount.setSumAmount(BigDecimalUtil.add(amount,userAccount.getSumAmount()));
+            userAccount.setSumAmountUnpaid(BigDecimalUtil.add(amount, sumAmountUnpaid));
+            orgClient.saveOrUpdate(userAccount);
 
-            SysUserAccountChangeLog changeLog = new SysUserAccountChangeLog(systemCode, userId,jzgInfoId);
-            changeLog.setAmount(amount);
-            changeLog.setAmountBefore(sumAmount);
+            // 出口费用
+            SysUserAccountChangeLog exportChangeLog = new SysUserAccountChangeLog();
+            exportChangeLog.setRelatedOrderId(param.getOrderNo());
+            exportChangeLog.setUserId(userAccount.getUserId());
+            exportChangeLog.setUserName(ywySysUser.getUsername());
+            exportChangeLog.setAmount(feeOrders.getTotalPayablePremium());
+            exportChangeLog.setOperType(1);
+            exportChangeLog.setIsDelete(0);
+            exportChangeLog.setRemark("订单提成");
+            exportChangeLog.setAmountBefore(sumAmountUnpaid);
+            orgClient.addUserAccountChangeLog(exportChangeLog);
 
-            userAccount.setSumAmount(BigDecimalUtil.add(feeOrders.getTotalReceivablePremium(),userAccount.getSumAmount()));
-            userAccount.setSumAmountUnpaid(BigDecimalUtil.add(feeOrders.getTotalReceivablePremium(), userAccount.getSumAmount()));
-            orgClient.saveOrUpdate(userAccount);
             // 进入应收表
             List<String> orderNos = new ArrayList<>();
             orderNos.add(audit.getOrderNo());
@@ -495,9 +503,9 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
     /**
      * 分销逻辑处理 (抽取原来的方法)
-     *      根据分销逻辑更新业务员账户的金额信息
+     * 根据分销逻辑更新业务员账户的金额信息
      *
-     * @param feeOrders 订单费用
+     * @param feeOrders   订单费用
      * @param userAccount 业务员账户信息
      * @author lipf
      * @date 2026/6/6 10:49
@@ -652,12 +660,13 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
     /**
      * 生成收入明细日志
-     * @param orderNo       订单号
-     * @param feeOrders     费用
-     * @param userAccount   分账用户
-     * @param distributor1  1级分销人员
-     * @param distributor2  2级分销人员
-     * @param distributor3  3级分销人员
+     *
+     * @param orderNo      订单号
+     * @param feeOrders    费用
+     * @param userAccount  分账用户
+     * @param distributor1 1级分销人员
+     * @param distributor2 2级分销人员
+     * @param distributor3 3级分销人员
      * @return
      */
     private List<SysUserAccountChangeLog> builderIncomeLog(String orderNo,
@@ -669,23 +678,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         log.info("生成收入明细日志:feeOrders=[{}],userAccount=[{}],distributor1=[{}],distributor2=[{}],distributor3=[{}]",
                 JSONUtil.toJsonStr(feeOrders), JSONUtil.toJsonStr(userAccount), JSONUtil.toJsonStr(distributor1), JSONUtil.toJsonStr(distributor2), JSONUtil.toJsonStr(distributor3));
         List<SysUserAccountChangeLog> incomeLogs = new ArrayList<>();
-        // 出口费用
-        SysUserAccountChangeLog exportIncomeLog = new SysUserAccountChangeLog();
-        exportIncomeLog.setRelatedOrderId(orderNo);
-        exportIncomeLog.setUserId(userAccount.getUserId());
-        exportIncomeLog.setAmount(feeOrders.getJqExportPremium().add(feeOrders.getSyExportPremium()).add(feeOrders.getJyExportPremium()));
-        //exportIncomeLog.setProperty(1);
-        exportIncomeLog.setAmountBefore(userAccount.getSumAmount());
-        incomeLogs.add(exportIncomeLog);
-
         // 1级分销费
         if (feeOrders.getFirstDistributorId() != null && feeOrders.getFirstDistributionFee().compareTo(BigDecimal.ZERO) > 0) {
             SysUserAccountChangeLog distributor1IncomeLog = new SysUserAccountChangeLog();
             distributor1IncomeLog.setRelatedOrderId(orderNo);
             distributor1IncomeLog.setUserId(distributor1.getUserId());
             distributor1IncomeLog.setAmount(feeOrders.getFirstDistributionFee());
-            //distributor1IncomeLog.setProperty(2);
             distributor1IncomeLog.setAmountBefore(userAccount.getSumAmount());
+            //distributor1IncomeLog.setUserName(); TODO
             incomeLogs.add(distributor1IncomeLog);
         }
 
@@ -695,8 +695,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             distributor2IncomeLog.setRelatedOrderId(orderNo);
             distributor2IncomeLog.setUserId(distributor2.getUserId());
             distributor2IncomeLog.setAmount(feeOrders.getFirstDistributionFee());
-            //distributor2IncomeLog.setProperty(2);
             distributor2IncomeLog.setAmountBefore(userAccount.getSumAmount());
+            //distributor2IncomeLog.setUserName(); TODO
             incomeLogs.add(distributor2IncomeLog);
         }
 
@@ -706,8 +706,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             distributor3IncomeLog.setRelatedOrderId(orderNo);
             distributor3IncomeLog.setUserId(distributor3.getUserId());
             distributor3IncomeLog.setAmount(feeOrders.getFirstDistributionFee());
-            //distributor3IncomeLog.setProperty(2);
             distributor3IncomeLog.setAmountBefore(userAccount.getSumAmount());
+            //distributor3IncomeLog.setUserName(); TODO
             incomeLogs.add(distributor3IncomeLog);
         }
         return incomeLogs;

+ 9 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsPackageServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.service.impl;
 
 import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.rights.po.InsOrderRightsPackage;
 import com.jzg.commons.entity.rights.vo.InsOrderRightsPackageVo;
@@ -40,7 +41,14 @@ public class InsOrderRightsPackageServiceImpl extends ServiceImpl<InsOrderRights
 
     @Override
     public Integer deleteByOrderNo(String orderNo) {
-        return insOrderRightsPackageMapper.deleteByOrderNo(orderNo);
+//        return insOrderRightsPackageMapper.deleteByOrderNo(orderNo);
+        // 定义查询条件
+        LambdaQueryWrapper<InsOrderRightsPackage> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(InsOrderRightsPackage::getOrderId, orderNo)
+                .eq(InsOrderRightsPackage::getDelFlag, 0);
+
+        // 执行删除操作,返回受影响的行数
+        return insOrderRightsPackageMapper.delete(lambdaQueryWrapper);
     }
 
     /**

+ 8 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.service.impl;
 
 import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.rights.po.InsOrderRights;
 import com.jzg.commons.entity.rights.vo.InsOrderRightsVo;
@@ -38,7 +39,13 @@ public class InsOrderRightsServiceImpl extends ServiceImpl<InsOrderRightsMapper,
 
     @Override
     public Integer deleteByOrderNo(String orderNo) {
-        return insOrderRightsMapper.deleteByOrderNo(orderNo);
+//        return insOrderRightsMapper.deleteByOrderNo(orderNo);
+        // 定义查询条件
+        LambdaQueryWrapper<InsOrderRights> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(InsOrderRights::getOrderId, orderNo)
+                .eq(InsOrderRights::getDelFlag, 0);
+        // 执行删除操作,返回受影响的行数
+        return insOrderRightsMapper.delete(lambdaQueryWrapper);
     }
 
     /**

+ 6 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarUserInfoServiceImpl.java

@@ -29,7 +29,12 @@ public class InsOrdersCarUserInfoServiceImpl extends ServiceImpl<InsOrdersCarUse
 
     @Override
     public void deleteOrderNo(Long orderNo) {
-        baseMapper.deleteOrderNo(orderNo);
+        // 定义查询条件
+        LambdaQueryWrapper<InsOrdersCarUserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(InsOrdersCarUserInfo::getOrderNo, orderNo);
+        // 执行删除操作,返回受影响的行数
+        baseMapper.delete(lambdaQueryWrapper);
+//        baseMapper.deleteOrderNo(orderNo);
     }
 
     @Override

+ 6 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersKindServiceImpl.java

@@ -58,7 +58,12 @@ public class InsOrdersKindServiceImpl extends ServiceImpl<InsOrdersKindMapper, I
 
     @Override
     public void deleteOrderNo(Long orderNo) {
-        baseMapper.deleteOrderNo(orderNo);
+        // 定义查询条件
+        LambdaQueryWrapper<InsOrdersKind> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(InsOrdersKind::getOrderNo, orderNo);
+        // 执行删除操作,返回受影响的行数
+        baseMapper.delete(lambdaQueryWrapper);
+//        baseMapper.deleteOrderNo(orderNo);
     }
 
     @Override

+ 6 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersRiskServiceImpl.java

@@ -19,7 +19,12 @@ import java.util.Objects;
 public class InsOrdersRiskServiceImpl extends ServiceImpl<InsOrdersRiskMapper, InsOrdersRisk> implements InsOrdersRiskService {
     @Override
     public void deleteOrderNo(Long orderNo) {
-        baseMapper.deleteOrderNo(orderNo);
+//        baseMapper.deleteOrderNo(orderNo);
+        // 定义查询条件
+        LambdaQueryWrapper<InsOrdersRisk> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(InsOrdersRisk::getOrderNo, orderNo);
+        // 执行删除操作,返回受影响的行数
+        baseMapper.delete(lambdaQueryWrapper);
     }
 
     @Override

+ 7 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsTaskImagesServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.page.HttpResult;
@@ -77,7 +78,12 @@ public class  InsTaskImagesServiceImpl extends ServiceImpl<InsTaskImagesMapper,
 
     @Override
     public void removeByQuoteNo(String quoteNo) {
-        baseMapper.removeByQuoteNo(quoteNo);
+//        baseMapper.removeByQuoteNo(quoteNo);
+        // 定义查询条件
+        LambdaQueryWrapper<InsTaskImages> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(InsTaskImages::getQuoteNo, quoteNo);
+        // 执行删除操作,返回受影响的行数
+        baseMapper.delete(lambdaQueryWrapper);
     }
 
     @Override

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

@@ -66,7 +66,8 @@
         WHEN 1 THEN '是'
         ELSE ''
         END AS isProblem,
-        io.order_source
+        io.order_source,
+        ioci.vin_no
         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
@@ -80,6 +81,9 @@
         LEFT JOIN ins_orders_external_policy ioep on ioep.order_no = io.id AND ioep.is_delete=0
         <where>
             and ifa.is_delete=0 and ifa.system_code = #{param.systemCode}
+            <if test="param.vinNo != null and param.vinNo !=''">
+                and ioci.vin_no = #{param.vinNo}
+            </if>
             <if test="param.receiveUser != null and param.receiveUser != ''">
                 and ifa.receive_user = #{param.receiveUser}
             </if>

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

@@ -53,9 +53,9 @@
         order by create_time desc
     </select>
     <!-- 根据订单ID删除权益券 -->
-    <delete id="deleteByOrderNo" parameterType="string">
+   <!-- <delete id="deleteByOrderNo" parameterType="string">
         DELETE FROM ins_order_rights
         WHERE order_id = #{orderNo}
           and del_flag = 0
-    </delete>
+    </delete>-->
 </mapper>

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

@@ -46,9 +46,9 @@
         order by create_time desc
     </select>
     <!-- 根据订单ID删除权益券 -->
-    <delete id="deleteByOrderNo" parameterType="string">
+    <!--<delete id="deleteByOrderNo" parameterType="string">
         DELETE FROM ins_order_rights_package
         WHERE order_id = #{orderNo}
           and del_flag = 0
-    </delete>
+    </delete>-->
 </mapper>

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

@@ -41,7 +41,7 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
         request.setCompulsoryInsurance(toCompulsoryInsuranceDto(quoteVo,modelsDTO));
 
         // 商业险信息
-        request.setBusinessInsurance(toBusinessInsuranceDto(quoteVo, modelsDTO));
+        request.setBusinessInsurance(toBusinessInsuranceDto(quoteVo, modelsDTO, currentValue));
 
         // NPC 信息
         request.setProposalInfo(toProposalInfoDto(quoteVo, parameters,taiShanCrawlerDeptResponse,attributionInformationVo));
@@ -49,11 +49,6 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
         // 系数信息
         request.setCoefficientInfo(toCoefficientInfoDto(quoteVo));
 
-//        request.getProposalInfo().setSaleChannel("10"); // 个人代理人渠道  SaleChannel
-//        request.getProposalInfo().setSaleCode("581222");
-//        request.getProposalInfo().setSaleName("张堃");
-//        request.getProposalInfo().setSaleNo("140107199402270639");
-
         request.setHouseholdInsurance(new Object());
         request.setHouseholdBInsurance(new Object());
         request.setHouseholdCInsurance(new Object());
@@ -191,7 +186,7 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
         return proposalInfo;
     }
 
-    private static TaiShanCrawlerQuotationRequest.BusinessInsurance toBusinessInsuranceDto(QuoteVo quoteVo, TaiShanCrawlerCarResponse.CarModelInfo modelsDTO) {
+    private static TaiShanCrawlerQuotationRequest.BusinessInsurance toBusinessInsuranceDto(QuoteVo quoteVo, TaiShanCrawlerCarResponse.CarModelInfo modelsDTO, String currentValue) {
         TaiShanCrawlerQuotationRequest.BusinessInsurance businessInsurance = new TaiShanCrawlerQuotationRequest.BusinessInsurance();
         if(Objects.isNull(quoteVo.getBiRiskInfoVo())){
             businessInsurance.setItemKinds(new ArrayList<>());
@@ -200,7 +195,7 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
             return businessInsurance;
         }
         // 险别信息
-        businessInsurance.setItemKinds(toBusinessItemKindListDTOList(quoteVo,modelsDTO));
+        businessInsurance.setItemKinds(toBusinessItemKindListDTOList(quoteVo, modelsDTO, currentValue));
         RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
         businessInsurance.setProductInfo(toBusinessProductInfoDto(biRiskInfoVo));
         businessInsurance.setSpecialInfos(new ArrayList<>());
@@ -239,60 +234,404 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
 
     }
 
-    private static List<TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind> toBusinessItemKindListDTOList(QuoteVo quoteVo, TaiShanCrawlerCarResponse.CarModelInfo modelsDTO) {
-        List<KindInfoVo> kindInfoVo = quoteVo.getKindInfoVo();
+    private static List<TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind> toBusinessItemKindListDTOList(QuoteVo quoteVo, TaiShanCrawlerCarResponse.CarModelInfo modelsDTO, String actualValue) {
+        List<KindInfoVo> kindInfoVoList = quoteVo.getKindInfoVo();
         List<TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind> kindList = new ArrayList<>();
-        int index = 0;
-        for (KindInfoVo infoVo : kindInfoVo) {
-            TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind itemKind = new TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind();
-            itemKind.setDisabled(false);
-            itemKind.setNoDeductibleFlag(false);
-            itemKind.setKindCode(infoVo.getKindCode());
-            itemKind.setKindName(infoVo.getKindName());
-            itemKind.setKindSort(index);
-            itemKind.setMainRiskFlag("");
-            itemKind.setDeductibleFlag(false);
-            itemKind.setAmount(infoVo.getAmount());
-            itemKind.setRate("0.0");
-            itemKind.setBefPremium("0.0");//"0.0"
-            itemKind.setPremium("0.0");//"0.0"
-            itemKind.setDisCoef("0.0");//"0.0"
-            itemKind.setDeductible("");  // 免额档次
-            itemKind.setDuctDiscount("");
-            itemKind.setIndemLmtLvl("");
-            itemKind.setIndemLmt(infoVo.getAmount());
-            itemKind.setLiabDaysLmt("");
-            //itemKind.setPerAmt(infoVo.getUnitAmount());
-            itemKind.setPerAmt("");
-            itemKind.setGlassType("");
-            itemKind.setSpecialGlassFloat("");
-            itemKind.setVhlDamageFloat("");
-            itemKind.setCompenPerAmt("");
-            itemKind.setCompenPerDay("");
-            itemKind.setDeductibleRatio("");
-            itemKind.setBefAnnPrm("0.0");//"0.0"
-            itemKind.setPureRiskPremium("0.0");
-            itemKind.setBasePrm("0.0");//"0.0"
-            itemKind.setAfterPremiumYear("0.0");//"0.0"
-            itemKind.setCalcPrm("0.0");//"0.0"
-            itemKind.setResvNumberRoad("");
-            itemKind.setResvNumberDriver("");
-            itemKind.setAbsoluteDeductible("");
-            itemKind.setResvNumAutonomy("0.0");//"0.0"
-            itemKind.setAmtVar("0.0");
-            itemKind.setPrmVar("0.0");
-            itemKind.setRowId("");
-            itemKind.setAddCvrgFlag("");
-            itemKind.setCancelMrk("");
-            itemKind.setSeqNo("");
-            itemKind.setPkId("");
-            kindList.add(itemKind);
-            index ++;
+        int seatNumber = Integer.parseInt(modelsDTO.getNewSeatNumber());
+
+        for (KindInfoVo infoVo : kindInfoVoList) {
+            String kindCode = infoVo.getKindCode();
+            TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind itemKind;
+
+            // 获取对应险种的模板默认值(与Python insurance_Map对应)
+            switch (kindCode) {
+                // A: 机动车损失保险
+                case "A":
+                    itemKind = buildDefaultItemKind("030006", "机动车损失保险", 1);
+                    itemKind.setAmount(actualValue);
+                    itemKind.setDeductible("375001");
+                    break;
+
+                // B: 第三者责任保险
+                case "B":
+                    itemKind = buildDefaultItemKind("030018", "第三者责任险", 2);
+                    itemKind.setAmount(infoVo.getAmount());
+                    itemKind.setIndemLmt(infoVo.getAmount());
+                    itemKind.setIndemLmtLvl("306006018"); // 默认200万以上
+                    for (String[] limit : THIRD_LIMIT_AMT) {
+                        double cnameVal = extractNumberFromWan(limit[0]);
+                        if (cnameVal == Double.parseDouble(infoVo.getAmount())) {
+                            itemKind.setIndemLmtLvl(limit[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // D3: 车上人员责任险(驾驶人)
+                case "D3":
+                    itemKind = buildDefaultItemKind("030001", "车上人员责任险(驾驶人)", 3);
+                    itemKind.setAmount(Integer.parseInt(infoVo.getAmount()));
+                    itemKind.setLiabDaysLmt(1);
+                    // 匹配医保外医疗费用档次以获取indemLmtLvl(与Python一致)
+                    for (String[] med : MEDICAL_EXPENSES_OUTSIDE) {
+                        if (!"保额共享".equals(med[0]) && Float.parseFloat(med[0]) == Float.parseFloat(infoVo.getAmount())) {
+                            itemKind.setAmount(infoVo.getAmount());
+                            itemKind.setIndemLmt(actualValue);
+                            itemKind.setIndemLmtLvl(med[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // D4: 车上人员责任险(乘客)
+                case "D4":
+                    itemKind = buildDefaultItemKind("030009", "车上人员责任险(乘客)", 4);
+                    int d4Amount = Integer.parseInt(infoVo.getAmount());
+                    itemKind.setAmount(d4Amount * (seatNumber - 1));
+                    itemKind.setPerAmt(d4Amount);
+                    itemKind.setLiabDaysLmt(seatNumber - 1);
+                    for (String[] med : MEDICAL_EXPENSES_OUTSIDE) {
+                        if (!"保额共享".equals(med[0]) && Float.parseFloat(med[0]) == Float.parseFloat(infoVo.getAmount())) {
+                            itemKind.setIndemLmt(actualValue);
+                            itemKind.setIndemLmtLvl(med[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // L: 附加车身划痕损失险
+                case "L":
+                    itemKind = buildDefaultItemKind("032601", "附加车身划痕损失险", 1);
+                    itemKind.setAmount(infoVo.getAmount());
+                    itemKind.setIndemLmt(infoVo.getAmount());
+                    for (String[] scratch : CAR_SCRATCH_LEVELS) {
+                        if (Float.parseFloat(scratch[0]) == Float.parseFloat(infoVo.getAmount())) {
+                            itemKind.setIndemLmtLvl(scratch[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // BD: 附加法定节假日限额翻倍险
+                case "BD":
+                    itemKind = buildDefaultItemKind("033605", "附加法定节假日限额翻倍险", 8);
+                    itemKind.setAmount(infoVo.getAmount());
+                    itemKind.setIndemLmt(infoVo.getAmount());
+                    break;
+
+                // SY_FJ_YBW1: 附加医保外用药责任险(三者险)
+                case "SY_FJ_YBW1":
+                    itemKind = buildDefaultItemKind("033630", "附加医保外用药责任险(三者险)", 14);
+                    itemKind.setAmount("500000");
+                    itemKind.setIndemLmt("500000");
+                    itemKind.setIndemLmtLvl("390N27"); // 默认50万
+                    for (String[] med : MEDICAL_EXPENSES_OUTSIDE) {
+                        if (!"保额共享".equals(med[0]) && Float.parseFloat(med[0]) == Float.parseFloat(infoVo.getAmount())) {
+                            itemKind.setAmount(infoVo.getAmount());
+                            itemKind.setIndemLmt(infoVo.getAmount());
+                            itemKind.setIndemLmtLvl(med[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // SY_FJ_YBW3: 附加医保外用药责任险(司机)
+                case "SY_FJ_YBW3":
+                    itemKind = buildDefaultItemKind("033623", "附加医保外用药责任险(司机)", 15);
+                    itemKind.setAmount("500000");
+                    itemKind.setIndemLmt("500000");
+                    itemKind.setIndemLmtLvl("390N27"); // 默认50万
+                    for (String[] med : MEDICAL_EXPENSES_OUTSIDE) {
+                        if (!"保额共享".equals(med[0]) && Float.parseFloat(med[0]) == Float.parseFloat(infoVo.getAmount())) {
+                            itemKind.setIndemLmtLvl(med[1]);
+                            itemKind.setAmount(infoVo.getAmount());
+                            itemKind.setIndemLmt(infoVo.getAmount());
+                            break;
+                        }
+                    }
+                    break;
+
+                // SY_FJ_YBW2: 附加医保外用药责任险(乘客)
+                case "SY_FJ_YBW2":
+                    itemKind = buildDefaultItemKind("033624", "附加医保外用药责任险(乘客)", 16);
+                    itemKind.setAmount(500000 * (seatNumber - 1));
+                    itemKind.setIndemLmt("500000");
+                    itemKind.setLiabDaysLmt(seatNumber - 1);
+                    itemKind.setPerAmt("500000");
+                    itemKind.setIndemLmtLvl("390N27"); // 默认50万
+                    for (String[] med : MEDICAL_EXPENSES_OUTSIDE) {
+                        if (!"保额共享".equals(med[0]) && Float.parseFloat(med[0]) == Float.parseFloat(infoVo.getAmount())) {
+                            itemKind.setAmount(Integer.parseInt(infoVo.getAmount()) * (seatNumber - 1));
+                            itemKind.setIndemLmt(infoVo.getAmount());
+                            itemKind.setLiabDaysLmt(seatNumber - 1);
+                            itemKind.setPerAmt(infoVo.getAmount());
+                            itemKind.setIndemLmtLvl(med[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // TY1: 道路救援服务特约条款
+                case "TY1":
+                    itemKind = buildDefaultItemKind("033615", "道路救援服务特约条款", 13);
+                    for (String[] rescue : ROAD_RESCUE_SERVICES) {
+                        // 提取"X次"中的数字部分进行比较
+                        String rescueCount = rescue[0].replace("次", "");
+                        if (rescueCount.equals(infoVo.getAmount())) {
+                            itemKind.setResvNumberRoad(rescue[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // TY2: 车辆安全检测特约条款
+                case "TY2":
+                    itemKind = buildDefaultItemKind("033616", "车辆安全检测特约条款", 22);
+                    for (String[] safety : VEHICLE_SAFETY_CHECK) {
+                        // 提取"X次"中的数字部分进行比较
+                        String safetyCount = safety[0].replace("次", "");
+                        if (safetyCount.equals(infoVo.getAmount())) {
+                            itemKind.setResvNumberRoad(safety[1]);
+                            break;
+                        }
+                    }
+                    break;
+
+                // TY3: 代为驾驶服务特约条款
+                case "TY3":
+                    itemKind = buildDefaultItemKind("033617", "代为驾驶服务特约条款", 23);
+                    itemKind.setResvNumberDriver(infoVo.getAmount());
+                    break;
+
+                // TY4: 代为送检服务特约条款
+                case "TY4":
+                    itemKind = buildDefaultItemKind("033618", "代为送检服务特约条款", 24);
+                    itemKind.setResvNumberDriver(infoVo.getAmount());
+                    break;
+
+                // MJ1: 附加绝对免赔率特约险(车损险)
+                case "MJ1":
+                    itemKind = buildDefaultItemKind("033611", "附加绝对免赔率特约险(车损险)", 17);
+                    itemKind.setAbsoluteDeductible(resolveDeductibleCode(infoVo.getDeductibleRate()));
+                    break;
 
+                // MJ2: 附加绝对免赔率特约条款(三者险)
+                case "MJ2":
+                    itemKind = buildDefaultItemKind("033612", "附加绝对免赔率特约条款(三者险)", 18);
+                    itemKind.setAbsoluteDeductible(resolveDeductibleCode(infoVo.getDeductibleRate()));
+                    break;
+
+                // MJ3: 附加绝对免赔率特约险(司机)
+                case "MJ3":
+                    itemKind = buildDefaultItemKind("033613", "附加绝对免赔率特约险(司机)", 19);
+                    itemKind.setAbsoluteDeductible(resolveDeductibleCode(infoVo.getDeductibleRate()));
+                    break;
+
+                // MJ4: 附加绝对免赔率特约险(乘客)
+                case "MJ4":
+                    itemKind = buildDefaultItemKind("033614", "附加绝对免赔率特约险(乘客)", 20);
+                    itemKind.setAbsoluteDeductible(resolveDeductibleCode(infoVo.getDeductibleRate()));
+                    break;
+
+                default:
+                    // 未识别的险种,回退原有逻辑填充
+                    itemKind = fallbackBuildItemKind(infoVo, kindList.size());
+                    break;
+            }
+            kindList.add(itemKind);
         }
         return kindList;
     }
 
+    /**
+     * 按Python insurance_Map模板创建默认的ItemKind对象(仅设置通用默认值)
+     */
+    private static TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind buildDefaultItemKind(String kindCode, String kindName, int kindSort) {
+        TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind ik = new TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind();
+        ik.setDisabled(false);
+        ik.setNoDeductibleFlag(false);
+        ik.setKindName(kindName);
+        ik.setKindSort(kindSort);
+        ik.setMainRiskFlag("");
+        ik.setDeductibleFlag(false);
+        ik.setAmount(0);
+        ik.setRate("");
+        ik.setBefPremium(0);
+        ik.setPremium(0);
+        ik.setDisCoef(0);
+        ik.setDeductible("");
+        ik.setDuctDiscount("");
+        ik.setIndemLmtLvl("");
+        ik.setIndemLmt(0);
+        ik.setLiabDaysLmt("");
+        ik.setPerAmt("");
+        ik.setGlassType("");
+        ik.setSpecialGlassFloat("");
+        ik.setVhlDamageFloat("");
+        ik.setCompenPerAmt("");
+        ik.setCompenPerDay("");
+        ik.setKindCode(kindCode);
+        ik.setDeductibleRatio("");
+        ik.setBefAnnPrm(0);
+        ik.setPureRiskPremium(0);
+        ik.setBasePrm(0);
+        ik.setAfterPremiumYear(0);
+        ik.setCalcPrm("0");
+        ik.setResvNumberRoad("");
+        ik.setResvNumberDriver("");
+        ik.setAbsoluteDeductible("");
+        ik.setResvNumAutonomy("");
+        ik.setAmtVar("0.0");
+        ik.setPrmVar("0.0");
+        ik.setRowId("");
+        ik.setAddCvrgFlag("");
+        ik.setCancelMrk("");
+        ik.setSeqNo("");
+        ik.setPkId("");
+        return ik;
+    }
+
+    /**
+     * 未匹配到已知险种时的回退填充(保留旧逻辑兜底)
+     */
+    private static TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind fallbackBuildItemKind(KindInfoVo infoVo, int sortIndex) {
+        TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind itemKind = new TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind();
+        itemKind.setDisabled(false);
+        itemKind.setNoDeductibleFlag(false);
+        itemKind.setKindCode(infoVo.getKindCode());
+        itemKind.setKindName(infoVo.getKindName());
+        itemKind.setKindSort(sortIndex);
+        itemKind.setMainRiskFlag("");
+        itemKind.setDeductibleFlag(false);
+        itemKind.setAmount(infoVo.getAmount());
+        itemKind.setRate("0.0");
+        itemKind.setBefPremium("0.0");
+        itemKind.setPremium("0.0");
+        itemKind.setDisCoef("0.0");
+        itemKind.setDeductible("");
+        itemKind.setDuctDiscount("");
+        itemKind.setIndemLmtLvl("");
+        itemKind.setIndemLmt(infoVo.getAmount());
+        itemKind.setLiabDaysLmt("");
+        itemKind.setPerAmt("");
+        itemKind.setGlassType("");
+        itemKind.setSpecialGlassFloat("");
+        itemKind.setVhlDamageFloat("");
+        itemKind.setCompenPerAmt("");
+        itemKind.setCompenPerDay("");
+        itemKind.setDeductibleRatio("");
+        itemKind.setBefAnnPrm("0.0");
+        itemKind.setPureRiskPremium("0.0");
+        itemKind.setBasePrm("0.0");
+        itemKind.setAfterPremiumYear("0.0");
+        itemKind.setCalcPrm("0.0");
+        itemKind.setResvNumberRoad("");
+        itemKind.setResvNumberDriver("");
+        itemKind.setAbsoluteDeductible("");
+        itemKind.setResvNumAutonomy("0.0");
+        itemKind.setAmtVar("0.0");
+        itemKind.setPrmVar("0.0");
+        itemKind.setRowId("");
+        itemKind.setAddCvrgFlag("");
+        itemKind.setCancelMrk("");
+        itemKind.setSeqNo("");
+        itemKind.setPkId("");
+        return itemKind;
+    }
+
+    /**
+     * 从"XX万元"格式字符串中提取数字(与Python extract_number 一致)
+     */
+    private static double extractNumberFromWan(String text) {
+        if (text == null) return 0;
+        java.util.regex.Matcher m = java.util.regex.Pattern.compile("(\\d+\\.?\\d*)(?=万)").matcher(text);
+        return m.find() ? Double.parseDouble(m.group(1)) * 10000 : 0;
+    }
+
+    /**
+     * 根据免赔率字符串解析对应的绝对免赔率代码(与Python absolute_deductible 匹配一致)
+     */
+    private static String resolveDeductibleCode(String deductibleRateStr) {
+        if (deductibleRateStr == null || deductibleRateStr.isEmpty()) return "";
+        // 提取数字部分,例如"20%" -> "20%"
+        java.util.regex.Matcher m = java.util.regex.Pattern.compile("\\d+").matcher(deductibleRateStr);
+        if (m.find()) {
+            String percentKey = m.group() + "%";
+            return ABSOLUTE_DEDUCTIBLE_MAP.getOrDefault(percentKey, "");
+        }
+        return "";
+    }
+
+    // ==================== Python 档位静态常量(与 tsbxitem.py 保持一致) ====================
+
+    /** 【第三者责任险】限额档次 */
+    private static final List<String[]> THIRD_LIMIT_AMT = Arrays.asList(
+            new String[]{"10万元", "306006005"},
+            new String[]{"15万元", "306006010"},
+            new String[]{"20万元", "306006006"},
+            new String[]{"30万元", "306006007"},
+            new String[]{"50万元", "306006009"},
+            new String[]{"100万元", "306006014"},
+            new String[]{"150万元", "306006016"},
+            new String[]{"200万元", "306006017"},
+            new String[]{"200万以上", "306006018"}
+    );
+
+    /** 车身划痕损失险/附加自用充电桩损失保险 档次 */
+    private static final List<String[]> CAR_SCRATCH_LEVELS = Arrays.asList(
+            new String[]{"2000", "N03001001"},
+            new String[]{"5000", "N03001002"},
+            new String[]{"10000", "N03001003"},
+            new String[]{"20000", "N03001004"}
+    );
+
+    /** 道路救援服务次数 */
+    private static final List<String[]> ROAD_RESCUE_SERVICES = Arrays.asList(
+            new String[]{"2", "390005"},
+            new String[]{"7", "390001"},
+            new String[]{"12", "390002"},
+            new String[]{"17", "390003"},
+            new String[]{"22", "390004"}
+    );
+
+    /** 车辆安全检测特约条款 */
+    private static final List<String[]> VEHICLE_SAFETY_CHECK = Arrays.asList(
+            new String[]{"2", "390N01"},
+            new String[]{"5", "390N02"}
+    );
+
+    /** 附加医保外医疗费用责任险 档次 */
+    private static final List<String[]> MEDICAL_EXPENSES_OUTSIDE = Arrays.asList(
+            new String[]{"保额共享", "390N16"},
+            new String[]{"5000", "390N17"},
+            new String[]{"10000", "390N18"},
+            new String[]{"20000", "390N19"},
+            new String[]{"30000", "390N20"},
+            new String[]{"40000", "390N21"},
+            new String[]{"50000", "390N22"},
+            new String[]{"100000", "390N23"},
+            new String[]{"150000", "390N24"},
+            new String[]{"200000", "390N25"},
+            new String[]{"300000", "390N26"},
+            new String[]{"500000", "390N27"},
+            new String[]{"1000000", "390N28"},
+            new String[]{"1500000", "390N29"},
+            new String[]{"2000000", "390N30"},
+            new String[]{"3000000", "390N31"},
+            new String[]{"4000000", "390N32"},
+            new String[]{"5000000", "390N33"}
+    );
+
+    /** 绝对免赔率 */
+    private static final java.util.Map<String, String> ABSOLUTE_DEDUCTIBLE_MAP;
+    static {
+        ABSOLUTE_DEDUCTIBLE_MAP = new HashMap<>();
+        ABSOLUTE_DEDUCTIBLE_MAP.put("5%", "379001");
+        ABSOLUTE_DEDUCTIBLE_MAP.put("10%", "379002");
+        ABSOLUTE_DEDUCTIBLE_MAP.put("15%", "379003");
+        ABSOLUTE_DEDUCTIBLE_MAP.put("20%", "379004");
+    }
+
     public static TaiShanCrawlerQuotationRequest.CompulsoryInsurance toCompulsoryInsuranceDto(QuoteVo quoteVo, TaiShanCrawlerCarResponse.CarModelInfo modelsDTO) {
         TaiShanCrawlerQuotationRequest.CompulsoryInsurance compulsoryInsurance = new TaiShanCrawlerQuotationRequest.CompulsoryInsurance();
         if(Objects.isNull(quoteVo.getCiRiskInfoVo())){
@@ -515,14 +854,27 @@ public class TaiShanCrawlerQuoteRequestVoBuild {
         vehicleInfo.setIsAccurate("1");
         vehicleInfo.setIsFieldCar("0");
         vehicleInfo.setIsPlateNo("0");
-        vehicleInfo.setJqIsTransferCar("0");
-        vehicleInfo.setJqTransferDate("");
-        vehicleInfo.setSyIsTransferCar("0");
-        vehicleInfo.setSyTransferDate("");
+        // 交强险过户车处理
+        if (carInfoVo.isTransfer()) {
+            vehicleInfo.setJqIsTransferCar("1");
+            vehicleInfo.setJqTransferDate(carInfoVo.getIssueDate());
+            vehicleInfo.setJqSpecialMrk("1"); // 车辆所有权转移重新投保
+        } else {
+            vehicleInfo.setJqIsTransferCar("0");
+            vehicleInfo.setJqTransferDate("");
+            vehicleInfo.setJqSpecialMrk("");
+        }
+        // 商业险过户车处理
+        if (carInfoVo.isTransferBi()) {
+            vehicleInfo.setSyIsTransferCar("1");
+            vehicleInfo.setSyTransferDate(carInfoVo.getIssueDate());
+        } else {
+            vehicleInfo.setSyIsTransferCar("0");
+            vehicleInfo.setSyTransferDate("");
+        }
         vehicleInfo.setJqOrigReducCarShow("0");
         vehicleInfo.setJqPrintDisplacement("");
         vehicleInfo.setJqQryCde("");
-        vehicleInfo.setJqSpecialMrk("");
         vehicleInfo.setModelCde(modelsDTO.getCarModelCode());
         vehicleInfo.setModelIdCode("");
         vehicleInfo.setModelNme(modelsDTO.getCarModelName());

+ 7 - 7
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/entity/request/TaiShanCrawlerLoginRequest.java

@@ -30,13 +30,13 @@ public class TaiShanCrawlerLoginRequest implements Serializable {
     private String code;
 
     public TaiShanCrawlerLoginRequest(LoginBase loginBase, Map<String, Object> tokenMap){
-        String token = (String) tokenMap.get("token");
-        String secretKey = (String) tokenMap.get("secretKey");
-        String pointJson = (String) tokenMap.get("pointJson");
-        String aesRes = TaiShanCrawlerUtils.aesEncrypt(pointJson, secretKey);
-        StringBuffer aesSb = new StringBuffer();
-        aesSb.append(token + "---");
-        aesSb.append(aesRes);
+//        String token = (String) tokenMap.get("token");
+//        String secretKey = (String) tokenMap.get("secretKey");
+//        String pointJson = (String) tokenMap.get("pointJson");
+//        String aesRes = TaiShanCrawlerUtils.aesEncrypt(pointJson, secretKey);
+//        StringBuffer aesSb = new StringBuffer();
+//        aesSb.append(token + "---");
+//        aesSb.append(aesRes);
         //String captchaVerification = TaiShanCrawlerUtils.aesEncrypt(aesSb.toString(), secretKey);
         String captchaVerification = "";
         this.username = loginBase.getUsername();

+ 49 - 3
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerRequestImpl.java

@@ -172,6 +172,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
 
     private void resultCoverSave(QuoteVo quoteVo, TaiShanCrawlerQuotationRequest taiShanCrawlerQuotationRequest, TaiShanCrawlerQuotationResponse taiShanCrawlerQuotationResponse) {
 
+        // ========== 交强险信息处理 ==========
         TaiShanCrawlerQuotationRequest.CompulsoryInsurance.CarShipTax carShipTax = taiShanCrawlerQuotationRequest.getCompulsoryInsurance().getCarShipTax();
         TaiShanCrawlerQuotationResponse.ResultDTO.CompulsoryInsuranceDTO.CarShipTaxDTO carShipTaxRes = taiShanCrawlerQuotationResponse.getResult().getCompulsoryInsurance().getCarShipTax();
         carShipTax.setTotalTax(carShipTaxRes.getTotalTax());
@@ -208,10 +209,52 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         productInfo.setEffective(productInfoRes.getEffective());
         productInfo.setRiskAmount(productInfoRes.getRiskAmount());
 
+        // ========== 商业险信息处理 ==========
+        TaiShanCrawlerQuotationRequest.BusinessInsurance businessInsurance = taiShanCrawlerQuotationRequest.getBusinessInsurance();
+        TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO businessInsuranceRes = taiShanCrawlerQuotationResponse.getResult().getBusinessInsurance();
+        
+        if (businessInsurance != null && businessInsuranceRes != null) {
+            // 商业险险种信息覆盖
+            List<TaiShanCrawlerQuotationRequest.BusinessInsurance.ItemKind> biItemKinds = businessInsurance.getItemKinds();
+            List<TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind> biItemKindsRes = businessInsuranceRes.getItemKinds();
+            
+            if (biItemKinds != null && biItemKindsRes != null) {
+                Map<String, TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind> biResMap = biItemKindsRes.stream()
+                        .collect(Collectors.toMap(
+                                TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind::getKindCode,
+                                Function.identity(),
+                                (o1, o2) -> o1
+                        ));
+                
+                biItemKinds.forEach(itemKind -> {
+                    TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ItemKind res = biResMap.get(itemKind.getKindCode());
+                    if (res != null) {
+                        itemKind.setPremium(res.getPremium());
+                        itemKind.setBefPremium(res.getBefPremium());
+                        itemKind.setBefAnnPrm(res.getBefAnnPrm());
+                        itemKind.setBasePrm(res.getBasePrm());
+                    }
+                });
+            }
+            
+            // 商业险产品信息覆盖
+            TaiShanCrawlerQuotationRequest.BusinessInsurance.ProductInfo biProductInfo = businessInsurance.getProductInfo();
+            TaiShanCrawlerQuotationResponse.ResultDTO.BusinessInsuranceDTO.ProductInfoDTO biProductInfoRes = businessInsuranceRes.getProductInfo();
+            
+            if (biProductInfo != null && biProductInfoRes != null) {
+                biProductInfo.setPremium(biProductInfoRes.getPremium());
+                biProductInfo.setApId(biProductInfoRes.getApId());
+                biProductInfo.setEffective(biProductInfoRes.getEffective());
+                biProductInfo.setRiskAmount(biProductInfoRes.getRiskAmount());
+            }
+        }
+
+        // ========== 方案信息处理 ==========
         TaiShanCrawlerQuotationRequest.ProposalInfo proposalInfo = taiShanCrawlerQuotationRequest.getProposalInfo();
         TaiShanCrawlerQuotationResponse.ResultDTO.ProposalInfoDTO proposalInfoRes = taiShanCrawlerQuotationResponse.getResult().getProposalInfo();
         proposalInfo.setTotalPremium(proposalInfoRes.getTotalPremium());
 
+        // ========== 车辆信息处理 ==========
         TaiShanCrawlerQuotationRequest.VehicleInfo vehicleInfo = taiShanCrawlerQuotationRequest.getVehicleInfo();
         TaiShanCrawlerQuotationResponse.ResultDTO.VehicleInfoDTO vehicleInfoRes = taiShanCrawlerQuotationResponse.getResult().getVehicleInfo();
         vehicleInfo.setJqQryCde(vehicleInfoRes.getJqQryCde());
@@ -219,16 +262,19 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         vehicleInfo.setJqCResvTxt20(vehicleInfoRes.getJqCResvTxt20());
         vehicleInfo.setSyCResvTxt20(vehicleInfoRes.getSyCResvTxt20());
 
+        // ========== 系数信息处理 ==========
         RiskInfoVo ciRiskInfoVo = quoteVo.getCiRiskInfoVo();
         RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
         TaiShanCrawlerQuotationRequest.CoefficientInfo coefficientInfo = taiShanCrawlerQuotationRequest.getCoefficientInfo();
         TaiShanCrawlerQuotationResponse.ResultDTO.CoefficientInfoDTO coefficientInfoRes = taiShanCrawlerQuotationResponse.getResult().getCoefficientInfo();
-        if(Objects.nonNull(ciRiskInfoVo)){
+        
+        if(Objects.nonNull(ciRiskInfoVo) && coefficientInfoRes != null){
             coefficientInfo.setJqResvNum3(coefficientInfoRes.getJqResvNum3());
             coefficientInfo.setJqResvNum4(coefficientInfoRes.getJqResvNum4());
         }
-        if(Objects.nonNull(biRiskInfoVo)){
-
+        if(Objects.nonNull(biRiskInfoVo) && coefficientInfoRes != null){
+//            coefficientInfo.setSyResvNum3(coefficientInfoRes.getSyResvNum3());
+//            coefficientInfo.setSyResvNum4(coefficientInfoRes.getSyResvNum4());
         }
     }
 

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

@@ -198,7 +198,7 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
                 quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
             }
         }
-        if (!quotedPriceResponse.getHead().getReturnCode().equals("-1") ) {
+        if (!quotedPriceResponse.getHead().getReturnCode().equals("0") ) {
             // 商业险重复投保提示
             ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO contract =
                     quotedPriceResponse.getBussinessMain().getContract().stream()

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

@@ -520,7 +520,7 @@ public class ReceivableController {
             receivableQueryVo.setAgreementType("2");
         }
         if (StrUtil.isBlank(receivableQueryVo.getQueryType())){
-            receivableQueryVo.setQueryType("1");
+            receivableQueryVo.setQueryType("2");
         }
         receivableService.exportSuperviseExcel(receivableQueryVo);
     }

+ 6 - 4
tenant/organization/src/main/java/com/jzg/organization/entity/WechatCustomerService.java

@@ -1,9 +1,7 @@
 package com.jzg.organization.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -84,4 +82,8 @@ public class WechatCustomerService implements Serializable {
     @Schema(description = "更新时间")
     private LocalDateTime updateTime;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 }

+ 6 - 0
tenant/organization/src/main/java/com/jzg/organization/entity/WechatCustomerServiceDuty.java

@@ -1,7 +1,9 @@
 package com.jzg.organization.entity;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -64,5 +66,9 @@ public class WechatCustomerServiceDuty implements Serializable {
     @Schema(description = "值班客服id")
     private Long dutyCustomerServiceId;
 
+    @ExcelIgnore
+    @Schema(description = "是否删除")
+    @TableLogic
+    private Integer isDelete;
 
 }

+ 10 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/InsPlyIncomeInvoiceLinkMapper.java

@@ -5,8 +5,18 @@ import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceLink;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 
 @Mapper
 public interface InsPlyIncomeInvoiceLinkMapper extends BaseMapper<InsPlyIncomeInvoiceLink> {
 
+    /**
+     * 删除发票和订单的关联关系
+     *
+     * @author lipf
+     * @date 2026/5/29 14:29
+     */
+    @Update("UPDATE ins_ply_income_invoice_link SET is_delete = 1 WHERE invoice_id = #{invoiceId} AND is_delete = 0")
+    void deleteByInvoiceId(@Param("invoiceId") String invoiceId);
+
 }

+ 4 - 6
tenant/organization/src/main/java/com/jzg/organization/mapper/InvAccountCardMapper.java

@@ -7,8 +7,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.account.vo.AccountCardVo;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
-
 /**
 * @author dongxin
 * @description 针对表【inv_account_card(账户信息表)】的数据库操作Mapper
@@ -35,13 +33,13 @@ public interface InvAccountCardMapper extends BaseMapper<InvAccountCard> {
     /**
      * 查询业务员提现银行卡信息
      *
-     * @param systemCode 租户代码
-     * @param accountId 银行卡号
+     * @param systemCode    租户代码
+     * @param accountCardId 银行卡的序号
      * @author lipf
      * @date 2026/6/8 15:14
      */
-    List<InvAccountCard> queryByAccountId(@Param("accountId") String accountId,
-                                          @Param("systemCode") String systemCode);
+    InvAccountCard queryByAccountCardId(@Param("accountCardId") String accountCardId,
+                                        @Param("systemCode") String systemCode);
 
 }
 

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

@@ -26,5 +26,5 @@ public interface  PtlAgreementCostExternalMapper extends BaseMapper<PtlAgreement
 
     List<CostExternalListVo> selectByAgreementIdAll(CostExternalParam costExternalParam);
 
-    void deleteByIAgreementId(CostExternalEnd costExternalEnd);
+//    void deleteByIAgreementId(CostExternalEnd costExternalEnd);
 }

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

@@ -10,6 +10,6 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface PtlAgreementCostExternalTypeMapper extends BaseMapper<PtlAgreementCostExternalType> {
 
-    @Delete("delete from ptl_agreement_cost_external_type where ptl_agreement_cost_external_id = #{id}")
-    void deletePtlAgreementCostExternalId(@Param("id") Long id);
+//    @Delete("delete from ptl_agreement_cost_external_type where ptl_agreement_cost_external_id = #{id}")
+//    void deletePtlAgreementCostExternalId(@Param("id") Long id);
 }

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

@@ -8,6 +8,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface PtlAgreementCostRuleMapper extends BaseMapper<PtlAgreementCostRule> {
 
-    @Delete("delete from ptl_agreement_cost_rule where ptl_agreement_cost_id = #{id}")
-    void deleteByPtlAgreementCostId(String id);
+//    @Delete("delete from ptl_agreement_cost_rule where ptl_agreement_cost_id = #{id}")
+//    void deleteByPtlAgreementCostId(String id);
 }

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

@@ -13,8 +13,8 @@ import java.util.List;
 @Mapper
 public interface PtlAgreementCostTypeMapper extends BaseMapper<PtlAgreementCostType> {
 
-    @Delete("DELETE FROM ptl_agreement_cost_type WHERE ptl_agreement_cost_id = #{id}")
-    void deleteByPtlAgreementCostId(String id);
+//    @Delete("DELETE FROM ptl_agreement_cost_type WHERE ptl_agreement_cost_id = #{id}")
+//    void deleteByPtlAgreementCostId(String id);
 
     List<PtlAgreementCostTypeVo> queryByCostId(String costId);
 }

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.scheme.po.PtlSchemeInsurance;
 import com.jzg.commons.entity.scheme.po.PtlSchemeInsuranceDrivingIntention;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -11,5 +12,5 @@ import java.util.List;
 public interface PtlSchemeInsuranceDrivingIntentionMapper extends BaseMapper<PtlSchemeInsuranceDrivingIntention> {
 
 
-    public List<PtlSchemeInsuranceDrivingIntention> getSchemeDrivingIntention(String schemeInfoId);
+    public List<PtlSchemeInsuranceDrivingIntention> getSchemeDrivingIntention(@Param("schemeId") String schemeInfoId);
 }

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

@@ -21,5 +21,5 @@ public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
      * @param userId
      * @return
      */
-    boolean deleteByUserId(@Param("userId") String userId,@Param("roleIds") List<String> roleIds);
+//    boolean deleteByUserId(@Param("userId") String userId,@Param("roleIds") List<String> roleIds);
 }

+ 3 - 3
tenant/organization/src/main/java/com/jzg/organization/service/InvAccountCardService.java

@@ -8,8 +8,6 @@ import com.jzg.commons.entity.account.po.InvAccountCard;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.entity.account.vo.AccountCardVo;
 
-import java.util.List;
-
 /**
 * @author dongxin
 * @description 针对表【inv_account_card(账户信息表)】的数据库操作Service
@@ -61,8 +59,10 @@ public interface InvAccountCardService extends IService<InvAccountCard> {
     /**
      * 根据银行卡账号查询银行卡信息
      *
+     * @param systemCode    租户代码
+     * @param accountCardId 付款账号的id
      * @author lipf
      * @date 2026/6/8 15:12
      */
-    List<InvAccountCard> queryByAccountId(String accountId, String systemCode);
+    InvAccountCard queryByAccountCardId(String accountCardId, String systemCode);
 }

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

@@ -329,7 +329,14 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     HttpResult<List<InsPlyIncome>> queryIncomeDatas(IncomeDataVO incomeDataVO);
 
-    Boolean deleteInvoiceById(String id);
+    /**
+     * 删除发票信息(便于重新开票)
+     *
+     * @param invoiceId 发票序号
+     * @author lipf
+     * @date 2026/6/9 9:13
+     */
+    Boolean deleteInvoiceById(String invoiceId);
 
     /**
      * 查询订单绑定的发票信息

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

@@ -12,7 +12,7 @@ import java.math.BigDecimal;
 /**
 * @author dongxin
 * @description 针对表【sys_amount_auditing(提现申请表)】的数据库操作Service
-* @createDate 2025-07-11 11:05:25
+* @date 2025-07-11 11:05:25
 */
 public interface SysAmountAuditingService extends IService<SysAmountAuditing> {
 
@@ -97,7 +97,7 @@ public interface SysAmountAuditingService extends IService<SysAmountAuditing> {
     /**
      * 导出业务员收入支出明显
      * param ywyIOParam 导出条件, 包含开始日期,结束日期
-     * @return
+     * @return 要导出文件在minio上面的地址
      */
     String exportYwyIORecs(YwyIOParam ywyIOParam);
 

+ 5 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/InvAccountCardServiceImpl.java

@@ -19,8 +19,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 /**
 * @author dongxin
 * @description 针对表【inv_account_card(账户信息表)】的数据库操作Service实现
@@ -80,15 +78,15 @@ public class InvAccountCardServiceImpl extends ServiceImpl<InvAccountCardMapper,
     /**
      * 根据银行卡账号查询银行卡信息
      *
-     * @param accountId  租户银行卡的账号
-     * @param systemCode 租户代码
+     * @param accountCardId 租户银行卡的账号
+     * @param systemCode    租户代码
      * @author lipf
      * @date 2026/6/8 15:12
      */
     @Override
-    public List<InvAccountCard> queryByAccountId(String accountId, String systemCode) {
-        log.info("根据企业账号查询业务的付款账户信息。 accountId=[{}], systemCode=[{}]", accountId, systemCode);
-        return baseMapper.queryByAccountId(accountId, systemCode);
+    public InvAccountCard queryByAccountCardId(String accountCardId, String systemCode) {
+        log.info("根据企业账号查询业务的付款账户信息。 accountId=[{}], systemCode=[{}]", accountCardId, systemCode);
+        return baseMapper.queryByAccountCardId(accountCardId, systemCode);
     }
 }
 

+ 7 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostExternalTypeServiceImpl.java

@@ -11,6 +11,12 @@ import org.springframework.stereotype.Service;
 public class PtlAgreementCostExternalTypeServiceImpl extends ServiceImpl<PtlAgreementCostExternalTypeMapper, PtlAgreementCostExternalType> implements PtlAgreementCostExternalTypeService {
     @Override
     public void deleteByPtlAgreementCostExternalId(Long id) {
-        baseMapper.deletePtlAgreementCostExternalId(id);
+//        baseMapper.deletePtlAgreementCostExternalId(id);
+        // 定义查询条件
+        LambdaQueryWrapper<PtlAgreementCostExternalType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementCostExternalType::getPtlAgreementCostExternalId, id);
+
+        // 执行删除操作,返回受影响的行数
+        baseMapper.delete(lambdaQueryWrapper);
     }
 }

+ 7 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostRuleServiceImpl.java

@@ -19,7 +19,13 @@ public class PtlAgreementCostRuleServiceImpl extends ServiceImpl<PtlAgreementCos
 
     @Override
     public void saveOrUpdateCostRule(List<PtlAgreementCostRule> ruleConditions, String id) {
-        baseMapper.deleteByPtlAgreementCostId(id);
+//        baseMapper.deleteByPtlAgreementCostId(id);
+        // 定义查询条件
+        LambdaQueryWrapper<PtlAgreementCostRule> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementCostRule::getPtlAgreementCostId, id);
+        // 执行删除操作,返回受影响的行数
+        baseMapper.delete(lambdaQueryWrapper);
+
         for (PtlAgreementCostRule ptlAgreementCostRule : ruleConditions) {
             ptlAgreementCostRule.setPtlAgreementCostId(id);
         }

部分文件因文件數量過多而無法顯示