Преглед изворни кода

1.协议费用修改
2.地区车牌
3.非车险录入
4.紫金财险报价

wks пре 3 година
родитељ
комит
847004904c
100 измењених фајлова са 4483 додато и 497 уклоњено
  1. 16 0
      src/main/java/com/ydtech/config/properties/ZjApiConfigurationProperties.java
  2. 0 1
      src/main/java/com/ydtech/config/properties/ZmApiConfigurationProperties.java
  3. 4 3
      src/main/java/com/ydtech/constants/enums/dict/agreement/AgreementType.java
  4. 4 3
      src/main/java/com/ydtech/constants/enums/dict/agreement/FeeType.java
  5. 4 3
      src/main/java/com/ydtech/constants/enums/dict/agreement/MatchType.java
  6. 4 3
      src/main/java/com/ydtech/constants/enums/dict/agreement/MoneyType.java
  7. 28 0
      src/main/java/com/ydtech/constants/enums/dict/agreement/ProductsType.java
  8. 12 13
      src/main/java/com/ydtech/constants/enums/dict/agreement/SupplierTypeEnum.java
  9. 53 0
      src/main/java/com/ydtech/constants/enums/dict/products/NonCarInsuranceCode.java
  10. 1 1
      src/main/java/com/ydtech/modules/inv/service/impl/InvInsExternalBillsDetailsServiceImpl.java
  11. 8 3
      src/main/java/com/ydtech/modules/order/components/InsCrawlerOrderComponents.java
  12. 1 1
      src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java
  13. 1 1
      src/main/java/com/ydtech/modules/order/components/RenewalComponents.java
  14. 0 1
      src/main/java/com/ydtech/modules/order/components/ZhongmeiRequestApiComponents.java
  15. 121 0
      src/main/java/com/ydtech/modules/order/components/ZijinRequestApiComponents.java
  16. 59 0
      src/main/java/com/ydtech/modules/order/controller/ZijinOrderApiController.java
  17. 2 2
      src/main/java/com/ydtech/modules/order/entity/TaxArrears.java
  18. 19 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/DateTimeConstants.java
  19. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/DownLoadDocumentEnum.java
  20. 35 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/FileTypeEnum.java
  21. 46 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/MotorVehicleInsuranceEnum.java
  22. 28 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/RequestUrl.java
  23. 31 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/ResultEnum.java
  24. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/RiskCodeEnum.java
  25. 620 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/CalculatePremiumRequest.java
  26. 92 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/ModelQueryRequest.java
  27. 57 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/QueryActualValueRequest.java
  28. 49 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/SubmitVerifyRequest.java
  29. 65 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/UploadFileRequest.java
  30. 47 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/UploadImageInfoListRequest.java
  31. 29 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/request/ZbfAggregatePayRequest.java
  32. 19 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/BaseResponse.java
  33. 707 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/CalculatePremiumResponse.java
  34. 309 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/ModelQueryResponse.java
  35. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/QueryActualValueResponse.java
  36. 66 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/SubmitVerifyResponse.java
  37. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/UploadFileResponse.java
  38. 22 0
      src/main/java/com/ydtech/modules/order/entity/api/zj/response/ZbfAggregatePayResponse.java
  39. 0 1
      src/main/java/com/ydtech/modules/order/entity/api/zm/BaseRequest.java
  40. 9 7
      src/main/java/com/ydtech/modules/order/entity/api/zm/constants/enums/DocumentTypeEnum.java
  41. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/zm/request/SubmitRequest.java
  42. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/zm/response/QuotedPriceResponse.java
  43. 2 0
      src/main/java/com/ydtech/modules/order/entity/api/zm/response/SubmitResponse.java
  44. 4 2
      src/main/java/com/ydtech/modules/order/entity/config/YaConfigureParameters.java
  45. 16 0
      src/main/java/com/ydtech/modules/order/entity/config/ZjConfigureParameters.java
  46. 6 0
      src/main/java/com/ydtech/modules/order/entity/config/ZmConfigureParameters.java
  47. 1 1
      src/main/java/com/ydtech/modules/order/entity/vo/BaseQuoteVo.java
  48. 0 2
      src/main/java/com/ydtech/modules/order/service/YongAnOrderService.java
  49. 16 0
      src/main/java/com/ydtech/modules/order/service/ZijinOrderApiService.java
  50. 0 1
      src/main/java/com/ydtech/modules/order/service/impl/CarModelServiceImpl.java
  51. 1 1
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  52. 4 4
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  53. 3 20
      src/main/java/com/ydtech/modules/order/service/impl/YongAnOrderServiceImpl.java
  54. 3 5
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java
  55. 7 8
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderServiceImpl.java
  56. 260 0
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  57. 7 13
      src/main/java/com/ydtech/modules/order/utils/AESUtilsWithDataBase.java
  58. 105 0
      src/main/java/com/ydtech/modules/order/utils/InsuranceTimeProcessing.java
  59. 10 3
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java
  60. 35 0
      src/main/java/com/ydtech/modules/protocol/controller/PtlAreaLicenseController.java
  61. 63 0
      src/main/java/com/ydtech/modules/protocol/controller/PtlNonCarInsuranceProductController.java
  62. 0 36
      src/main/java/com/ydtech/modules/protocol/controller/PtlProductController.java
  63. 18 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementNonCarProductCostsMapper.java
  64. 0 1
      src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementProductCostsMapper.java
  65. 17 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlAreaLicenseMapper.java
  66. 18 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarInsuranceProductMapper.java
  67. 0 9
      src/main/java/com/ydtech/modules/protocol/dao/PtlProductMapper.java
  68. 0 33
      src/main/java/com/ydtech/modules/protocol/entity/dto/PltAgreementSchemeQueryDto.java
  69. 14 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PltAgreementSchemeSaveDto.java
  70. 6 2
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementCostsFactorSaveDto.java
  71. 0 52
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsBaseDto.java
  72. 0 32
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsQueryDto.java
  73. 175 8
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsSaveDto.java
  74. 0 1
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementUnderwritingRulesSaveDto.java
  75. 0 1
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  76. 83 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementNonCarProductCosts.java
  77. 382 37
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementProductCosts.java
  78. 96 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAreaLicense.java
  79. 1 1
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlCrawlerApi.java
  80. 72 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarInsuranceProduct.java
  81. 0 76
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlProduct.java
  82. 45 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementNonCarProductCostsSaveVo.java
  83. 6 6
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementQueryVo.java
  84. 3 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementSaveVo.java
  85. 13 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductPageVo.java
  86. 37 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductSaveVo.java
  87. 0 31
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlProductVo.java
  88. 3 3
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementAttributionService.java
  89. 40 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementNonCarProductCostsService.java
  90. 15 2
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementProductCostsService.java
  91. 9 3
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  92. 23 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAreaLicenseService.java
  93. 4 4
      src/main/java/com/ydtech/modules/protocol/service/PtlCrawlerApiService.java
  94. 73 0
      src/main/java/com/ydtech/modules/protocol/service/PtlNonCarInsuranceProductService.java
  95. 0 19
      src/main/java/com/ydtech/modules/protocol/service/PtlProductService.java
  96. 0 1
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementAttributionServiceImpl.java
  97. 54 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementNonCarProductCostsServiceImpl.java
  98. 38 21
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementProductCostsServiceImpl.java
  99. 24 12
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  100. 1 1
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementUnderwritingRulesServiceImpl.java

+ 16 - 0
src/main/java/com/ydtech/config/properties/ZjApiConfigurationProperties.java

@@ -0,0 +1,16 @@
+package com.ydtech.config.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "zj.api")
+public class ZjApiConfigurationProperties {
+
+    private String url;
+
+    private String downLoadDocument;
+
+}

+ 0 - 1
src/main/java/com/ydtech/config/properties/ZmApiConfigurationProperties.java

@@ -1,6 +1,5 @@
 package com.ydtech.config.properties;
 
-import com.ydtech.modules.order.entity.api.zm.BaseRequestHead;
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;

+ 4 - 3
src/main/java/com/ydtech/constants/enums/dict/agreement/AgreementType.java

@@ -14,12 +14,13 @@ public enum AgreementType  implements IBaseEnum {
     AT2("2", "私有协议-自行结算", 2, 0),
     AT3("3", "网销协议-自行结算", 3, 0);
 
+    // 编号
     private final String code;
-
+    // 说明
     private final String desc;
-    //排序
+    // 排序
     private final Integer sort;
-    //状态  0 启用  1 不启用
+    // 状态  0 启用  1 不启用
     private final Integer status;
 
 }

+ 4 - 3
src/main/java/com/ydtech/constants/enums/dict/agreement/FeeType.java

@@ -14,11 +14,12 @@ public enum FeeType implements IBaseEnum {
     FT2("2", "固定费率", 2, 0),
     FT3("3", "因子费率", 3, 0);
 
+    // 编号
     private final String code;
-
+    // 说明
     private final String desc;
-    //排序
+    // 排序
     private final Integer sort;
-    //状态  0 启用  1 不启用
+    // 状态  0 启用  1 不启用
     private final Integer status;
 }

+ 4 - 3
src/main/java/com/ydtech/constants/enums/dict/agreement/MatchType.java

@@ -14,12 +14,13 @@ public enum MatchType implements IBaseEnum {
     MT1("1", "出单日期", 1, 0),
     MT2("2", "投保日期", 2, 0);
 
+    // 编号
     private final String code;
-
+    // 说明
     private final String desc;
-    //排序
+    // 排序
     private final Integer sort;
-    //状态  0 启用  1 不启用
+    // 状态  0 启用  1 不启用
     private final Integer status;
 
 }

+ 4 - 3
src/main/java/com/ydtech/constants/enums/dict/agreement/MoneyType.java

@@ -15,12 +15,13 @@ public enum MoneyType implements IBaseEnum {
     MT2("2", "发放到佣金账户", 2, 0),
     MT3("3", "发放到掌柜币账户", 3, 0);
 
+    // 编号
     private final String code;
-
+    // 说明
     private final String desc;
-    //排序
+    // 排序
     private final Integer sort;
-    //状态  0 启用  1 不启用
+    // 状态  0 启用  1 不启用
     private final Integer status;
 
 

+ 28 - 0
src/main/java/com/ydtech/constants/enums/dict/agreement/ProductsType.java

@@ -0,0 +1,28 @@
+package com.ydtech.constants.enums.dict.agreement;
+
+import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "productsType", desc = "产品代码")
+public enum ProductsType implements IBaseEnum {
+
+    PT_0330("0330", "单交", 1, 0),
+    PT_034001("034001", "单商", 2, 0),
+    PT_034002("034002", "单三", 3, 0),
+    PT_0330034002("0330034002", "交三", 4, 0),
+    PT_0330034001("0330034001", "交商", 5, 0);
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+    // 排序
+    private final Integer sort;
+    // 状态  0 启用  1 不启用
+    private final Integer status;
+
+}

+ 12 - 13
src/main/java/com/ydtech/constants/enums/dict/agreement/SupplierTypeEnum.java

@@ -17,18 +17,17 @@ import lombok.Getter;
 @DictEnum(key = "supplierTypeEnum", desc = "供应商类型")
 public enum SupplierTypeEnum implements IBaseEnum {
 
-    AS0("0", "渠道",1,0),
-    AS1("1", "财险",2,0),
-    AS2("2", "寿险",3,0),
-    ;
-
-    private String code;
-    private String desc;
-    //排序
-    private Integer sort;
-    //状态  0 启用  1 不启用
-    private Integer status;
-
-
+    AS0("0", "渠道", 1, 0),
+    AS1("1", "财险", 2, 0),
+    AS2("2", "寿险", 3, 0);
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+    // 排序
+    private final Integer sort;
+    // 状态  0 启用  1 不启用
+    private final Integer status;
 
 }

+ 53 - 0
src/main/java/com/ydtech/constants/enums/dict/products/NonCarInsuranceCode.java

@@ -0,0 +1,53 @@
+package com.ydtech.constants.enums.dict.products;
+
+
+import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 非车险险类代码
+ * @author: wenks
+ * @date: 2023/8/11 10:13
+ **/
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "nonCarInsuranceCode", desc = "非车险险类代码")
+public enum NonCarInsuranceCode implements IBaseEnum {
+
+    NC_01("01", "企业财产保险", 0, 0),
+    NC_02("02", "货物运输险", 1, 0),
+    NC_03("03", "汽车险", 2, 0),
+    NC_04("04", "责任保险", 3, 0),
+    NC_05("05", "保证险", 4, 0),
+    NC_06("06", "意外伤害险", 5, 0),
+    NC_07("07", "特殊风险", 6, 0),
+    NC_08("08", "家庭财产保险", 7, 0),
+    NC_09("09", "工程险", 8, 0),
+    NC_10("10", "综合险", 9, 0),
+    NC_11("11", "运输工具险", 10, 0),
+    NC_12("12", "健康险", 11, 0),
+    NC_13("13", "理财险", 12, 0),
+    NC_14("14", "未覆盖险", 13, 0),
+    NC_15("15", "组合险", 14, 0),
+    NC_16("16", "工程险B", 15, 0),
+    NC_17("17", "工程险C", 16, 0),
+    NC_18("18", "能源类", 17, 0),
+    NC_19("19", "船舶险", 18, 0),
+    NC_20("20", "延保险", 19, 0),
+    NC_21("21", "信用保险", 20, 0),
+    NC_22("22", "种植险", 21, 0),
+    NC_23("23", "养殖险", 22, 0),
+    NC_99("99", "其他", 23, 0);
+
+    private final String code;
+
+    private final String desc;
+    //排序
+    private final Integer sort;
+    //状态  0 启用  1 不启用
+    private final Integer status;
+
+
+}

+ 1 - 1
src/main/java/com/ydtech/modules/inv/service/impl/InvInsExternalBillsDetailsServiceImpl.java

@@ -101,7 +101,7 @@ public class InvInsExternalBillsDetailsServiceImpl extends ServiceImpl<InvInsExt
                 List<PtlAgreementProductCosts> costList = ptlAgreementProductCostsService.selectByCompanyId(iieb.getInsCompanyId(),filedList);
 
                 costList.stream().forEach(cost ->{
-                    costMap.put(cost.getProductName(),cost.getCostsProportion());
+//                    costMap.put(cost.getProductName(),cost.getCostsProportion());
                 });
             }catch (Exception e){
                 log.error("保司导入,获取费用失败!");

+ 8 - 3
src/main/java/com/ydtech/modules/order/components/InsCrawlerOrderComponents.java

@@ -21,8 +21,7 @@ public class InsCrawlerOrderComponents {
         this.restTemplate = restTemplate;
     }
 
-    public <T, B> B post(String url, String message, @Nullable T requestBody, Class<B> responseType) {
-        HttpHeaders httpHeaders = new HttpHeaders();
+    public <T, B> B post(String url, String message, @Nullable T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
         HttpEntity<T> yaQuoteInfoVoHttpEntity = new HttpEntity<>(requestBody, httpHeaders);
 
@@ -42,7 +41,13 @@ public class InsCrawlerOrderComponents {
 
     public <T, B> B request(String url, String companyName, String apiType, T requestBody, Class<B> responseType) {
         String message = companyName + apiType;
-        return this.post(url, message, requestBody, responseType);
+        return this.post(url, message, requestBody, responseType, new HttpHeaders());
+    }
+
+    public <T, B> B request(String url, String companyName, String apiType, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
+        String message = companyName + apiType;
+        return this.post(url, message, requestBody, responseType, httpHeaders);
     }
 
 }
+

+ 1 - 1
src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java

@@ -79,7 +79,7 @@ public class InsOrdersComponents {
     public void getQuoteRules(String orderNo, String agreementId) {
         String s = redisTemplate.opsForValue().get(RedisConstant.QUOTE_RULES_KEY + orderNo);
         JSONObject jsonObject = JSON.parseObject(s);
-//        ptlAgreementUnderwritingRulesService.ruleComparison(jsonObject, agreementId, 0);
+        ptlAgreementUnderwritingRulesService.ruleComparison(jsonObject, agreementId, 0);
     }
 
 }

+ 1 - 1
src/main/java/com/ydtech/modules/order/components/RenewalComponents.java

@@ -27,7 +27,7 @@ public class RenewalComponents {
      * @return QuoteRespVo
      */
     public YaQuoteInfoVo renewal(InsRenewal insRenewal, RenewalRequest renewalRequest) {
-        return insCrawlerOrderComponents.post(insRenewal.getUrl(), "续保", renewalRequest, YaQuoteInfoVo.class);
+        return insCrawlerOrderComponents.request(insRenewal.getUrl(), insRenewal.getNamesimple(), "续保", renewalRequest, YaQuoteInfoVo.class);
     }
 
 }

+ 0 - 1
src/main/java/com/ydtech/modules/order/components/ZhongmeiRequestApiComponents.java

@@ -7,7 +7,6 @@ import com.ydtech.modules.order.entity.api.zm.BaseRequest;
 import com.ydtech.modules.order.entity.api.zm.BaseResponse;
 import com.ydtech.modules.order.entity.api.zm.request.*;
 import com.ydtech.modules.order.entity.api.zm.response.*;
-import com.ydtech.modules.order.utils.AESUtilsWithDataBase;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;

+ 121 - 0
src/main/java/com/ydtech/modules/order/components/ZijinRequestApiComponents.java

@@ -0,0 +1,121 @@
+package com.ydtech.modules.order.components;
+
+
+import com.ydtech.config.properties.ZjApiConfigurationProperties;
+import com.ydtech.modules.order.entity.api.zj.constants.enums.RequestUrl;
+import com.ydtech.modules.order.entity.api.zj.constants.enums.ResultEnum;
+import com.ydtech.modules.order.entity.api.zj.request.*;
+import com.ydtech.modules.order.entity.api.zj.response.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @description: 资金财险请求
+ * @author: wenks
+ * @date: 2023/8/9 16:57
+ **/
+@Slf4j
+@Component
+public class ZijinRequestApiComponents {
+
+    private final InsCrawlerOrderComponents insCrawlerOrderComponents;
+
+    private final ZjApiConfigurationProperties zjApiConfigurationProperties;
+
+
+    public ZijinRequestApiComponents(InsCrawlerOrderComponents insCrawlerOrderComponents, ZjApiConfigurationProperties zjApiConfigurationProperties) {
+        this.insCrawlerOrderComponents = insCrawlerOrderComponents;
+        this.zjApiConfigurationProperties = zjApiConfigurationProperties;
+    }
+
+    public <T, B extends BaseResponse> B request(RequestUrl requestUrl, T requestBody, Class<B> responseType) {
+        String url = zjApiConfigurationProperties.getUrl() + requestUrl.getUri();
+        B b = insCrawlerOrderComponents.request(url, "紫金财险", requestUrl.getDesc(), requestBody, responseType);
+        ResultEnum.verify(b.getRtnCode());
+        return b;
+    }
+
+    /**
+     * 车型查询
+     *
+     * @param modelQueryRequest 紫金财险 车型查询 入参实体
+     * @return 出参实体
+     */
+    public ModelQueryResponse modelQuery(ModelQueryRequest modelQueryRequest) {
+        return request(RequestUrl.MODELS_QUERY, modelQueryRequest, ModelQueryResponse.class);
+    }
+
+    /**
+     * 获取车辆实际价值
+     *
+     * @param queryActualValueRequest 紫金财险 获取车辆实际价值 入参实体
+     * @return 出参实体
+     */
+    public QueryActualValueResponse queryActualValue(QueryActualValueRequest queryActualValueRequest) {
+        return request(RequestUrl.QUERY_ACTUAL_VALUE, queryActualValueRequest, QueryActualValueResponse.class);
+    }
+
+    /**
+     * 保费计算
+     *
+     * @param calculatePremiumRequest 紫金财险 保费计算 入参实体
+     * @return 出参实体
+     */
+    public CalculatePremiumResponse calculatePremium(CalculatePremiumRequest calculatePremiumRequest) {
+        return request(RequestUrl.CALCULATE_PREMIUM, calculatePremiumRequest, CalculatePremiumResponse.class);
+    }
+
+    /**
+     * 文件上传
+     *
+     * @param uploadFileRequest 紫金财险 文件上传 入参实体
+     * @return 出参实体
+     */
+    public UploadFileResponse uploadFile(UploadFileRequest uploadFileRequest) {
+        return request(RequestUrl.UPLOAD_FILE, uploadFileRequest, UploadFileResponse.class);
+    }
+
+    /**
+     * 文件信息与订单关联
+     *
+     * @param uploadImageInfoListRequest 紫金财险 文件信息与订单关联 入参实体
+     * @return 出参实体
+     */
+    public BaseResponse uploadImageInfoList(UploadImageInfoListRequest uploadImageInfoListRequest) {
+        return request(RequestUrl.UPLOAD_IMAGE_INFO_LIST, uploadImageInfoListRequest, BaseResponse.class);
+    }
+
+    /**
+     * 提交核保
+     *
+     * @param submitVerifyRequest 紫金财险 提交核保 入参实体
+     * @return 出参实体
+     */
+    public SubmitVerifyResponse submitVerify(SubmitVerifyRequest submitVerifyRequest) {
+        return request(RequestUrl.SUBMIT_VERIFY, submitVerifyRequest, SubmitVerifyResponse.class);
+    }
+
+    /**
+     * 聚合支付服务
+     *
+     * @param zbfAggregatePayRequest 紫金财险 聚合支付服务 入参实体
+     * @return 出参实体
+     */
+    public ZbfAggregatePayResponse zbfAggregatePay(ZbfAggregatePayRequest zbfAggregatePayRequest) {
+        return request(RequestUrl.ZBF_AGGREGATE_PAY, zbfAggregatePayRequest, ZbfAggregatePayResponse.class);
+    }
+
+    /**
+     * 生成电子保单下载
+     *
+     * @param busNo      保单号
+     * @param busType    证件号
+     * @param identifyNo 单证类型 1-交强险,2-保险标志,3-商业险,4-非车险,5-批单
+     * @return 电子保单连接
+     */
+    public String getDownLoadDocumentUrl(String busNo, String busType, String identifyNo) {
+        String uri = String.format("?busNo=%s&busType=%s&identifyNo=%s", busNo, busType, identifyNo);
+        String downLoadDocument = zjApiConfigurationProperties.getDownLoadDocument();
+        return downLoadDocument + uri;
+    }
+}

+ 59 - 0
src/main/java/com/ydtech/modules/order/controller/ZijinOrderApiController.java

@@ -0,0 +1,59 @@
+package com.ydtech.modules.order.controller;
+
+
+import com.ydtech.aop.request.RequestSingleParam;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
+import com.ydtech.modules.order.service.ZijinOrderApiService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "紫金财险 Api")
+@RestController
+@RequestMapping("/order/zijin")
+public class ZijinOrderApiController {
+
+    private final InsOrdersComponents insOrdersComponents;
+
+    private final ZijinOrderApiService zijinOrderApiService;
+
+    public ZijinOrderApiController(InsOrdersComponents insOrdersComponents, ZijinOrderApiService zijinOrderApiService) {
+        this.insOrdersComponents = insOrdersComponents;
+        this.zijinOrderApiService = zijinOrderApiService;
+    }
+
+    @PostMapping("/quote")
+    @ApiOperation("报价")
+    public HttpResult<QuoteRespVo> quote(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
+        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
+        return this.zijinOrderApiService.quote(quoteInfo, quoteVo);
+    }
+
+    @PostMapping(value = "/audit")
+    @ApiOperation(value = "提交核保")
+    public HttpResult<Object> audit(@RequestSingleParam(value = "companyId") String companyId) {
+        return this.zijinOrderApiService.audit(companyId);
+    }
+
+    @PostMapping(value = "/submitImage")
+    @ApiOperation(value = "提交影像信息")
+    public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) {
+        return this.zijinOrderApiService.submitImage(companyId);
+    }
+
+    @PostMapping("/getPolicyPrint")
+    @ApiOperation(value = "电子保单")
+    public HttpResult<String> getPolicyPrint(@RequestBody PolicyPrintVo policyPrintVo) {
+        return this.zijinOrderApiService.getPolicyPrint(policyPrintVo);
+    }
+
+}

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/TaxArrears.java

@@ -29,12 +29,12 @@ public class TaxArrears {
     private double lateFee;
 
     public TaxArrears(CrawlerQuoteResponse.TaxArrearsDto taxArrearsDto) {
-        this.years = taxArrearsDto.getStartDay() +"-" + taxArrearsDto.getEndDay() ;
+        this.years = taxArrearsDto.getStartDay() + "-" + taxArrearsDto.getEndDay();
         this.taxDefault = taxArrearsDto.getLateFee();
         this.lateFee = taxArrearsDto.getAllLateFee();
     }
 
-    public static List<TaxArrears> toTaxArrears(List<CrawlerQuoteResponse.TaxArrearsDto> taxArrearsDtoList){
+    public static List<TaxArrears> toTaxArrears(List<CrawlerQuoteResponse.TaxArrearsDto> taxArrearsDtoList) {
         return taxArrearsDtoList.stream().map(TaxArrears::new).collect(Collectors.toList());
     }
 

+ 19 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/DateTimeConstants.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.order.entity.api.zj.constants;
+
+/**
+ * @description: 紫金财险
+ * @author: wenks
+ * @date: 2023/8/10 16:10
+ **/
+public class DateTimeConstants {
+
+    private DateTimeConstants() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static final String START_HOUR = "00";
+
+    public static final String END_HOUR = "24";
+
+    public static final String MINUTE = "00";
+}

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/DownLoadDocumentEnum.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.zj.constants.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 紫金财险 电子保单下载
+ * @author: wenks
+ * @date: 2023/8/10 15:35
+ **/
+@AllArgsConstructor
+@Getter
+public enum DownLoadDocumentEnum {
+
+    DD_1("1", "交强险"),
+    DD_2("2", "保险标志"),
+    DD_3("3", "商业险"),
+    DD_4("4", "非车险"),
+    DD_5("5", "批单");
+
+    private final String code;
+
+    private final String busType;
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/FileTypeEnum.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.order.entity.api.zj.constants.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum FileTypeEnum {
+
+    FT_1("1", "验车照片", new String[]{"C05"}),
+    FT_2("2", "其他车辆证件", new String[]{}),
+    FT_3("3", "其他客户证件", new String[]{}),
+    FT_4("4", "车辆购置证明", new String[]{}),
+    FT_5("5", "过户证明", new String[]{}),
+    FT_6("6", "退保证明", new String[]{}),
+    FT_7("7", "单证", new String[]{}),
+    FT_8("8", "申请书", new String[]{}),
+    FT_9("9", "其他", new String[]{}),
+    FT_19("19", "实名缴费证明", new String[]{}),
+    FT_51("51", "银行卡", new String[]{}),
+    FT_52("52", "驾驶证", new String[]{"C01"}),
+    FT_53("53", "身份证", new String[]{"C02", "C03", "C04"}),
+    FT_54("54", "增值税发票", new String[]{}),
+    FT_55("55", "车辆合格证", new String[]{}),
+    FT_56("56", "行驶证", new String[]{}),
+    FT_41("41", "充电桩影像资料", new String[]{}),
+    FT_42("42", "是否为新能源证明材料", new String[]{});
+
+    private final String code;
+
+    private final String name;
+
+    private final String[] imagesType;
+
+}

+ 46 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/MotorVehicleInsuranceEnum.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.order.entity.api.zj.constants.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum MotorVehicleInsuranceEnum {
+
+    MVI_BZ("BZ", "机动车交通事故责任强制保险", ""),
+    MVI_A("A", "机动车损失保险", " 商业险主险, 保额同车辆实际价值"),
+    MVI_C4("C4", "附加车轮单独损失险", "A附加险,1000元、2000元、3000元、5000元、10000元"),
+    MVI_L("L", "车身划痕损失险", "A附加险,2000元、5000元、10000元或20000元"),
+    MVI_Q5("Q5", "修理期间费用补偿险", "A附加险,赔偿天数*日责任限额"),
+    MVI_X("X", "新增加设备损失保险", "A附加险"),
+    MVI_X2("X2", "附加发动机进水损坏除外特约条款", "A附加险"),
+    MVI_FA("FA", "附加绝对免赔率特约险(机动车损失保险)", "A附加险,5%、10%、15%、20%"),
+    MVI_B("B", "机动车第三者责任保险", "商业险主险,10万、15万、20万、30万、50万、100万,超过100万的校验“保额/限额”必须为50万的整数倍"),
+    MVI_D2("D2", "附加车上货物责任险", "B附加险"),
+    MVI_B2("B2", "机动车第三者责任保险法定节假日限额翻倍险", "B附加险, 与三者险保额/限额一致"),
+    MVI_R1("R1", "附加精神损害抚慰金责任险(机动车第三者责任保险)", "B附加险,12位整数、两位小数"),
+    MVI_S1("S1", "附加医保外用药责任险(机动车第三者责任保险)", "B附加险"),
+    MVI_FB("FB", "附加绝对免赔率特约险(机动车第三者责任保险)", "B附加险,5%、10%、15%、20%"),
+    MVI_D3("D3", "车上人员责任保险(司机)", " 商业险主险"),
+    MVI_R2("R2", "附加精神损害抚慰金责任险(机动车车上人员责任保险(司机))", "D3附加险,12位整数、两位小数"),
+    MVI_S2("S2", "附加医保外用药责任险(机动车车上人员责任保险(司机))", " D3附加险"),
+    MVI_FD3("FD3", "附加绝对免赔率特约险(机动车车上人员责任保险(司机))", " D3附加险,5%、10%、15%、20"),
+    MVI_D4("D4", "车上人员责任保险(乘客)", " 商业险主险"),
+    MVI_R3("R3", "附加精神损害抚慰金责任险(机动车车上人员责任保险(乘客))", " D4附加险,12位整数、两位小数"),
+    MVI_S3("S3", "附加医保外用药责任险(机动车车上人员责任保险(乘客))", " D4附加险"),
+    MVI_FD4("FD4", "附加绝对免赔率特约险(机动车车上人员责任保险(乘客))", " D4附加险,5%、10%、15%、20"),
+    MVI_T1("T1", "道路救援服务特约条款", "必须大于0, 且在(2、7、12、17、22)之内"),
+    MVI_T2("T2", "车辆安全检测特约条款", "必须大于0"),
+    MVI_T3("T3", "代为驾驶服务特约条款", "必须大于0"),
+    MVI_T4("T4", "代为送检服务特约条款", "必须大于0");
+
+    public static final String SIGN = "MVI";
+
+    private final String code;
+
+    private final String name;
+
+    private final String desc;
+
+
+}

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/RequestUrl.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.api.zj.constants.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 紫金财险请求路径拼接参数
+ * @author: wenks
+ * @date: 2023/8/9 16:44
+ **/
+@Getter
+@AllArgsConstructor
+public enum RequestUrl {
+
+    MODELS_QUERY("modelQuery", "车型查询"),
+    QUERY_ACTUAL_VALUE("queryActualValue", "获取车辆实际价值"),
+    CALCULATE_PREMIUM("calculatePremium", "保费计算"),
+    SUBMIT_VERIFY("submitVerify", "提交核保"),
+    UPLOAD_FILE("uploadFile", "文件上传"),
+    UPLOAD_IMAGE_INFO_LIST("uploadImageInfoList", "文件信息与订单关联"),
+    ZBF_AGGREGATE_PAY("zbfAggregatePay", "ZBF_AGGREGATE_PAY"),
+    DOWN_LOAD_DOCUMENT("downLoadDocument", "第三方电子保单下载接口");
+
+    private final String uri;
+
+    private final String desc;
+
+}

+ 31 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/ResultEnum.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.order.entity.api.zj.constants.enums;
+
+
+import com.ydtech.exception.SystemException;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 接口返回代码
+ * @author: wenks
+ * @date: 2023/8/10 17:39
+ **/
+@AllArgsConstructor
+@Getter
+public enum ResultEnum {
+
+    R_0000("0000", "成功"),
+    R_9999("9999", "系统异常");
+
+    private final String code;
+
+    private final String desc;
+
+    public static void verify(String rtnCode) {
+        if (!R_0000.getCode().equals(rtnCode)) {
+            throw new SystemException(rtnCode);
+        }
+    }
+
+
+}

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/RiskCodeEnum.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.zj.constants.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 险种代码
+ * @author: wenks
+ * @date: 2023/8/11 20:08
+ **/
+@Getter
+@AllArgsConstructor
+public enum RiskCodeEnum {
+
+
+    RC_0590("0590", "交强险"),
+
+    RC_050A("050A", "商业险");
+
+    private final String code;
+
+    private final String desc;
+
+
+}

+ 620 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/CalculatePremiumRequest.java

@@ -0,0 +1,620 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.IdcardUtil;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.ins.model.vo.RiskInfoVo;
+import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
+import com.ydtech.modules.order.entity.api.zj.constants.DateTimeConstants;
+import com.ydtech.modules.order.entity.api.zj.constants.enums.MotorVehicleInsuranceEnum;
+import com.ydtech.modules.order.entity.api.zj.constants.enums.RiskCodeEnum;
+import com.ydtech.modules.order.entity.api.zj.response.ModelQueryResponse;
+import com.ydtech.modules.order.entity.api.zm.constants.TimeConstants;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.utils.InsuranceTimeProcessing;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 保费计算 入参实体
+ * @author: wenks
+ * @date: 2023/8/9 9:00
+ **/
+@NoArgsConstructor
+@Data
+public class CalculatePremiumRequest implements Serializable {
+
+    private static final long serialVersionUID = 1125540330363235262L;
+    /**
+     * 基本信息
+     */
+    @JsonProperty("baseInfo")
+    private BaseInfoDTO baseInfo;
+    /**
+     * 车主信息
+     */
+    @JsonProperty("carOwnerInfo")
+    private CarOwnerInfoDTO carOwnerInfo;
+    /**
+     * 投被保人信息
+     */
+    @JsonProperty("insuredList")
+    private List<InsuredListDTO> insuredList;
+    /**
+     * 险别信息
+     */
+    @JsonProperty("itemKindList")
+    private List<ItemKindListDTO> itemKindList;
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+    /**
+     * 订单号
+     */
+    @JsonProperty("orderNo")
+    private String orderNo;
+    /**
+     * 订单来源/渠道代码
+     */
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+    /**
+     * 投保地区省代码
+     */
+    @JsonProperty("proposalAreaCode")
+    private String proposalAreaCode;
+    /**
+     * 投保地区市代码
+     */
+    @JsonProperty("proposalCityCode")
+    private String proposalCityCode;
+    /**
+     * 车船税信息
+     */
+    @JsonProperty("taxRelifInfo")
+    private TaxRelifInfoDTO taxRelifInfo;
+    /**
+     * 车辆信息
+     */
+    @JsonProperty("vehicleInfo")
+    private VehicleInfoDTO vehicleInfo;
+
+
+    public CalculatePremiumRequest(BaseQuoteInfoVo quoteInfoVo, ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO, String actualValue) {
+        // 基本信息
+        this.baseInfo = new BaseInfoDTO(quoteInfoVo.getRiskList());
+        // 车主信息
+        this.carOwnerInfo = new CarOwnerInfoDTO(quoteInfoVo.getOwnerInfo());
+        // 投被保人信息
+        this.insuredList = InsuredListDTO.toInsuredListDTOList(quoteInfoVo.getPolicyHolderInfo(), quoteInfoVo.getInsuredPersonInfo());
+        // 险别信息
+        this.itemKindList = ItemKindListDTO.toItemKindListDTOList(quoteInfoVo.getKindList(), Integer.parseInt(quoteInfoVo.getCarInfo().getSeatCount()));
+        // 交强险
+        if ("1".equals(this.baseInfo.calculateFlag)) {
+            itemKindList.add(ItemKindListDTO.getCompulsoryInsurance());
+        }
+        // 车辆信息
+        this.vehicleInfo = new VehicleInfoDTO(quoteInfoVo.getCarInfo(), vehicleModelInfosDTO, actualValue);
+    }
+
+    /**
+     * 基本信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class BaseInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = -1913236191334012218L;
+        /**
+         * 关联单标识(0关联单;1单商业;2单交强)
+         */
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+        /**
+         * 商业险终保时间
+         */
+        @JsonProperty("endDate")
+        private String endDate;
+        /**
+         * 交强险终保时间
+         */
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+        /**
+         * 商业险终保小时
+         */
+        @JsonProperty("endHour")
+        private String endHour;
+        /**
+         * 交强险终保小时
+         */
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+        /**
+         * 商业险终保分钟
+         */
+        @JsonProperty("endMinute")
+        private String endMinute;
+        /**
+         * 交强险终保分钟
+         */
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+        /**
+         * 商业险起保时间
+         */
+        @JsonProperty("startDate")
+        private String startDate;
+        /**
+         * 交强险起保时间
+         */
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+        /**
+         * 商业险起保小时
+         */
+        @JsonProperty("startHour")
+        private String startHour;
+        /**
+         * 交强险起保小时
+         */
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+        /**
+         * 商业险起保分钟
+         */
+        @JsonProperty("startMinute")
+        private String startMinute;
+        /**
+         * 交强险起保分钟
+         */
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+
+        private void setStrengthTime(String startDate) {
+            if (startDate.contains(TimeConstants.START_TIME)) {
+                InsuranceTimeProcessing.UntimelyInsurancePeriod untimely = InsuranceTimeProcessing.untimely(startDate);
+                this.endDate = untimely.getEndDate();
+                this.endHour = DateTimeConstants.END_HOUR;
+                this.endMinute = DateTimeConstants.MINUTE;
+                this.startDate = untimely.getStartDate();
+                this.startHour = DateTimeConstants.START_HOUR;
+                this.startMinute = DateTimeConstants.MINUTE;
+            } else {
+                // 及时
+                InsuranceTimeProcessing.TimelyInsurancePeriod timely = InsuranceTimeProcessing.timely(startDate);
+                this.endDate = timely.getEndDate();
+                this.endHour = timely.getEndHour();
+                this.endMinute = timely.getEndMinute();
+                this.startDate = timely.getStartDate();
+                this.startHour = timely.getStartHour();
+                this.startMinute = timely.getStartMinute();
+            }
+        }
+
+        private void setCommerceTime(String startDate) {
+            if (startDate.contains(TimeConstants.START_TIME)) {
+                InsuranceTimeProcessing.UntimelyInsurancePeriod untimely = InsuranceTimeProcessing.untimely(startDate);
+                this.endDateCI = untimely.getEndDate();
+                this.endHourCI = DateTimeConstants.END_HOUR;
+                this.endMinuteCI = DateTimeConstants.MINUTE;
+                this.startDateCI = untimely.getStartDate();
+                this.startHourCI = DateTimeConstants.START_HOUR;
+                this.startMinuteCI = DateTimeConstants.MINUTE;
+            } else {
+                // 及时
+                InsuranceTimeProcessing.TimelyInsurancePeriod timely = InsuranceTimeProcessing.timely(startDate);
+                this.endDateCI = timely.getEndDate();
+                this.endHourCI = timely.getEndHour();
+                this.endMinuteCI = timely.getEndMinute();
+                this.startDateCI = timely.getStartDate();
+                this.startHourCI = timely.getStartHour();
+                this.startMinuteCI = timely.getStartMinute();
+            }
+        }
+
+        public BaseInfoDTO(List<RiskInfoVo> riskInfoVoList) {
+            if (riskInfoVoList.size() == 1) {
+                if (InsuranceRisk.BUSINESS.getCode().equals(riskInfoVoList.get(0).getRiskCode())) {
+                    this.calculateFlag = "1";
+                } else {
+                    this.calculateFlag = "2";
+                }
+            } else {
+                this.calculateFlag = "0";
+            }
+
+            for (RiskInfoVo riskInfoVo : riskInfoVoList) {
+                if (InsuranceRisk.BUSINESS.getCode().equals(riskInfoVo.getRiskCode())) {
+                    setCommerceTime(riskInfoVo.getStartDate());
+                } else {
+                    setStrengthTime(riskInfoVo.getStartDate());
+                }
+            }
+
+
+        }
+
+    }
+
+    /**
+     * 车主信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class CarOwnerInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = -8965327536734916799L;
+        /**
+         * 车主姓名
+         */
+        @JsonProperty("carOwner")
+        private String carOwner;
+        /**
+         * 车主手机号
+         */
+        @JsonProperty("mobile")
+        private String mobile;
+        /**
+         * 车主地址
+         */
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+        /**
+         * 车主证件号码
+         */
+        @JsonProperty("ownerIdentifyNumber")
+        private String ownerIdentifyNumber;
+        /**
+         * 车主证件类型
+         * 11	工商注册号码
+         * 99	其他
+         * 01	居民身份证
+         * 02	护照
+         * 03	军人证
+         * 10	组织机构代码
+         */
+        @JsonProperty("ownerIdentifyType")
+        private String ownerIdentifyType;
+        /**
+         * 车主性质 1-个人 2-机关 3-企业
+         */
+        @JsonProperty("vehicleOwnerNature")
+        private String vehicleOwnerNature;
+
+        public CarOwnerInfoDTO(CustomerInfoVo customerInfoVo) {
+            this.carOwner = customerInfoVo.getName();
+            this.mobile = customerInfoVo.getMobile();
+            this.ownerAddress = customerInfoVo.getAddr();
+            this.ownerIdentifyNumber = customerInfoVo.getIdentifyNumber();
+            this.ownerIdentifyType = "01";
+            this.vehicleOwnerNature = "1";
+        }
+
+    }
+
+    /**
+     * 车船税信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class TaxRelifInfoDTO implements Serializable {
+        private static final long serialVersionUID = 3760117003983918836L;
+        /**
+         * 车船税标志
+         * 1-正常交税;
+         * 2-免税;
+         * 3-减税;
+         * 4-完税
+         * (北京地区:
+         * 01-已完税;
+         * 02-免税;
+         * 03-未缴税;
+         * 04-已申报未入库;
+         * 05-不在征收范围)
+         */
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag = "1";
+    }
+
+    /**
+     * 车辆信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class VehicleInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = -5247561590478281769L;
+        /**
+         * 车辆实际价值
+         */
+        @JsonProperty("actualValue")
+        private String actualValue;
+        /**
+         * 是否过户车辆 1是0否
+         */
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+        /**
+         * 发动机号
+         */
+        @JsonProperty("engineNo")
+        private String engineNo;
+        /**
+         * 车辆初始登记日期
+         */
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+        /**
+         * 号牌底色
+         * 01	蓝
+         * 02	黑
+         * 03	白
+         * 04	黄
+         * 05	白蓝
+         * 06	渐变绿
+         * 07	黄绿双拼
+         * 99	其他
+         */
+        @JsonProperty("licenseColorCode")
+        private String licenseColorCode;
+        /**
+         * 号牌种类代码
+         */
+        @JsonProperty("licenseKindCode")
+        private String licenseKindCode;
+        /**
+         * 车牌号
+         */
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+        /**
+         * 车型代码
+         */
+        @JsonProperty("modelCode")
+        private String modelCode;
+        /**
+         * 未上牌车辆标志
+         */
+        @JsonProperty("noLicenseFlag")
+        private String noLicenseFlag;
+        /**
+         * 新车购置价
+         */
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+        /**
+         * 座位数
+         */
+        @JsonProperty("seatCount")
+        private String seatCount;
+        /**
+         * 车辆使用性质代码
+         * 84	非营业机关
+         * 85	家庭自用
+         * 83	非营业企业
+         * 9A	营业出租租赁
+         * 9B	营业城市公交
+         * 9C	营业公路客运
+         * 9D	营业货运
+         * 82	非营业货运
+         */
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+        /**
+         * 车辆ID
+         */
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+        /**
+         * 车架号/VIN码
+         */
+        @JsonProperty("vinNo")
+        private String vinNo;
+
+        public VehicleInfoDTO(CarInfoVo carInfo, ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO, String actualValue) {
+            this.actualValue = actualValue;
+            if (carInfo.isTransferFlag()) {
+                this.chgOwnerFlag = "1";
+            } else {
+                this.chgOwnerFlag = "0";
+            }
+            this.engineNo = carInfo.getEngineNo();
+            this.enrollDate = carInfo.getRegisterDate();
+            this.licenseColorCode = "01";
+            this.licenseKindCode = "02";
+            this.licenseNo = carInfo.getLicenseNo();
+            this.modelCode = vehicleModelInfosDTO.getModelCode();
+            this.noLicenseFlag = "1";
+            this.purchasePrice = vehicleModelInfosDTO.getPurchasePrice();
+            this.seatCount = carInfo.getSeatCount();
+            this.useNatureCode = "85";
+            this.vehicleId = vehicleModelInfosDTO.getVehicleId();
+
+            this.vinNo = carInfo.getVinNo();
+        }
+    }
+
+    /**
+     * 投被保人信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class InsuredListDTO implements Serializable {
+
+        private static final long serialVersionUID = -3707826282312519677L;
+
+        /**
+         * 地址
+         */
+        @JsonProperty("address")
+        private String address;
+        /**
+         * 证件号码
+         */
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        /**
+         * 证件类型
+         */
+        @JsonProperty("identifyType")
+        private String identifyType;
+        /**
+         * 关系人标志 1被保险人 /2投保人
+         */
+        @JsonProperty("insuredFlag")
+        private String insuredFlag;
+        /**
+         * 客户中文名称
+         */
+        @JsonProperty("insuredName")
+        private String insuredName;
+        /**
+         * 客户性质 3 自然人/4 法人
+         */
+        @JsonProperty("insuredNature")
+        private String insuredNature;
+        /**
+         * 客户类型 1个人/ 2单位
+         */
+        @JsonProperty("insuredType")
+        private String insuredType;
+        /**
+         * 长久居住地
+         */
+        @JsonProperty("longAddress")
+        private String longAddress;
+        /**
+         * 手机
+         */
+        @JsonProperty("mobile")
+        private String mobile;
+        /**
+         * 客户性别 1-男性;2-女性;9-未说明
+         */
+        @JsonProperty("sex")
+        private String sex;
+        /**
+         * 证件有效期止期
+         */
+        @JsonProperty("validDate")
+        private String validDate;
+
+        public InsuredListDTO(CustomerInfoVo policyHolderInfo, String insuredFlag) {
+            this.address = policyHolderInfo.getAddr();
+            this.identifyNumber = policyHolderInfo.getIdentifyNumber();
+            this.identifyType = "01";
+            this.insuredFlag = insuredFlag;
+            this.insuredName = policyHolderInfo.getName();
+            this.insuredNature = "3";
+            this.insuredType = "1";
+            this.longAddress = policyHolderInfo.getAddr();
+            this.mobile = policyHolderInfo.getMobile();
+            int gender = IdcardUtil.getGenderByIdCard(policyHolderInfo.getIdentifyNumber());
+            this.sex = gender == 1 ? "1" : "2";
+            this.validDate = policyHolderInfo.getIdentifyValidEndDate();
+        }
+
+        public static List<InsuredListDTO> toInsuredListDTOList(CustomerInfoVo policyHolderInfo, CustomerInfoVo insuredPersonInfo) {
+            List<InsuredListDTO> insuredListDTOS = new ArrayList<>();
+            InsuredListDTO policyHolder = new InsuredListDTO(policyHolderInfo, "2");
+            InsuredListDTO insuredPerson = new InsuredListDTO(insuredPersonInfo, "1");
+            insuredListDTOS.add(policyHolder);
+            insuredListDTOS.add(insuredPerson);
+            return insuredListDTOS;
+        }
+
+    }
+
+    /**
+     * 险别信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindListDTO implements Serializable {
+
+        private static final long serialVersionUID = 4902982173042827018L;
+        /**
+         * 险别代码
+         */
+        @JsonProperty("kindCode")
+        private String kindCode;
+        /**
+         * 险别名称
+         */
+        @JsonProperty("kindName")
+        private String kindName;
+        /**
+         * 险种代码
+         */
+        @JsonProperty("riskCode")
+        private String riskCode;
+        /**
+         * 保额
+         */
+        @JsonProperty("amount")
+        private String amount;
+
+        /**
+         * 座位数/天数
+         */
+        @JsonProperty("quantity")
+        private String quantity;
+
+        /**
+         * 免赔率 绝对免赔率险必录 5,10,15,20(单位%)
+         */
+        @JsonProperty("quantity")
+        private String deductibleRate;
+
+
+        public static ItemKindListDTO getCompulsoryInsurance() {
+            ItemKindListDTO insuredListDTO = new ItemKindListDTO();
+            insuredListDTO.setKindCode(MotorVehicleInsuranceEnum.MVI_BZ.getCode());
+            insuredListDTO.setKindName(MotorVehicleInsuranceEnum.MVI_BZ.getName());
+            insuredListDTO.setRiskCode(RiskCodeEnum.RC_0590.getCode());
+            return insuredListDTO;
+        }
+
+        public static List<ItemKindListDTO> toItemKindListDTOList(List<KindInfoVo> kindList, int quantity) {
+            List<ItemKindListDTO> list = new ArrayList<>();
+            for (KindInfoVo kindInfoVo : kindList) {
+                String code = kindInfoVo.getKindCode();
+                ItemKindListDTO itemKindListDTO = new ItemKindListDTO();
+                int i = ArrayUtil.indexOf(InsuranceTypeCorrespondence.getJinZhangGuiType(), code);
+                String s = InsuranceTypeCorrespondence.getZjConnectInsuranceType()[i];
+                MotorVehicleInsuranceEnum contractEnum = Enum.valueOf(MotorVehicleInsuranceEnum.class, "MVI_" + s);
+                itemKindListDTO.kindCode = contractEnum.getCode();
+                itemKindListDTO.kindName = contractEnum.getDesc();
+                itemKindListDTO.riskCode = "";
+                // 司机
+                if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getDriver(), code) >= 0) {
+                    itemKindListDTO.quantity = String.valueOf(1);
+                }
+                // 乘客
+                if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getPassenger(), code) >= 0) {
+                    itemKindListDTO.quantity = String.valueOf(quantity);
+                    itemKindListDTO.amount = String.valueOf((int) kindInfoVo.getUnitAmount() * quantity);
+                }
+                // 绝对免赔
+                if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getAbsoluteDeductible(), code) >= 0) {
+                    itemKindListDTO.deductibleRate = kindInfoVo.getDeductibleRate();
+                }
+                list.add(itemKindListDTO);
+            }
+            return list;
+        }
+    }
+
+
+}

+ 92 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/ModelQueryRequest.java

@@ -0,0 +1,92 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 车型查询 入参实体
+ * @author: wenks
+ * @date: 2023/8/8 17:18
+ **/
+@NoArgsConstructor
+@Data
+public class ModelQueryRequest implements Serializable {
+
+    private static final long serialVersionUID = -3339746068465364453L;
+
+    /**
+     * 车辆型号 brandName、vinNo传,可不传
+     */
+    @JsonProperty("brandName")
+    private String brandName;
+
+    /**
+     * 购车发票日期
+     */
+    @JsonProperty("certificateDate")
+    private String certificateDate;
+
+    /**
+     * 发动机号
+     */
+    @JsonProperty("engineNo")
+    private Long engineNo;
+
+    /**
+     * 初次登记日期
+     */
+    @JsonProperty("enrollDate")
+    private String enrollDate;
+
+    /**
+     * 号牌种类
+     */
+    @JsonProperty("licenseKindCode")
+    private String licenseKindCode;
+
+    /**
+     * 车牌号码
+     */
+    @JsonProperty("licenseNo")
+    private String licenseNo;
+
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+
+    /**
+     * 订单来源/渠道代码
+     */
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+
+    /**
+     * 投保地区省代码
+     */
+    @JsonProperty("proposalAreaCode")
+    private Integer proposalAreaCode;
+
+    /**
+     * 投保地区市代码
+     */
+    @JsonProperty("proposalCityCode")
+    private Integer proposalCityCode;
+
+    /**
+     * 车辆识别代码
+     */
+    @JsonProperty("vinNo")
+    private String vinNo;
+
+    /**
+     * 车型代码
+     */
+    @JsonProperty("modelCode")
+    private String modelCode;
+}

+ 57 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/QueryActualValueRequest.java

@@ -0,0 +1,57 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 获取车辆实际价值 入参实体
+ * @author: wenks
+ * @date: 2023/8/10 18:15
+ **/
+@NoArgsConstructor
+@Data
+public class QueryActualValueRequest implements Serializable {
+
+    private static final long serialVersionUID = -5756388174195345456L;
+
+    @JsonProperty("carKindCode")
+    private String carKindCode;
+
+    @JsonProperty("certificateDate")
+    private String certificateDate;
+
+    @JsonProperty("enrollDate")
+    private String enrollDate;
+
+    @JsonProperty("purchasePrice")
+    private String purchasePrice;
+
+    @JsonProperty("seatCount")
+    private String seatCount;
+
+    @JsonProperty("startDate")
+    private String startDate;
+
+    @JsonProperty("tonCount")
+    private String tonCount;
+
+    @JsonProperty("useNatureCode")
+    private String useNatureCode;
+
+
+    public QueryActualValueRequest(String enrollDate, String purchasePrice, String seatCount, String startDate) {
+        this.carKindCode = "A0";
+//        this.certificateDate = certificateDate;
+        this.enrollDate = enrollDate;
+        this.purchasePrice = purchasePrice;
+        this.seatCount = seatCount;
+        this.startDate = startDate;
+//        this.tonCount = tonCount;
+        this.useNatureCode = "85";
+    }
+}

+ 49 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/SubmitVerifyRequest.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 提交核保参数 入参实体
+ * @author: wenks
+ * @date: 2023/8/10 17:44
+ **/
+@NoArgsConstructor
+@Data
+public class SubmitVerifyRequest implements Serializable {
+
+    private static final long serialVersionUID = -3869558441838942494L;
+
+    @JsonProperty("engageList")
+    private List<EngageListDTO> engageList;
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+    public SubmitVerifyRequest(String orderId) {
+        this.orderId = orderId;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class EngageListDTO implements Serializable {
+
+        private static final long serialVersionUID = -2637644323393860328L;
+
+        @JsonProperty("clauseCode")
+        private String clauseCode;
+
+        @JsonProperty("clauseName")
+        private String clauseName;
+
+        @JsonProperty("clauses")
+        private String clauses;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+    }
+}

+ 65 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/UploadFileRequest.java

@@ -0,0 +1,65 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.order.entity.api.zj.constants.enums.FileTypeEnum;
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 文件上传 入参实体
+ * @author: wenks
+ * @date: 2023/8/10 16:05
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class UploadFileRequest implements Serializable {
+
+    private static final long serialVersionUID = 1504466430832856055L;
+
+    @JsonProperty("fileBase64")
+    private String fileBase64;
+
+    @JsonProperty("fileName")
+    private String fileName;
+
+    @JsonProperty("fileType")
+    private String fileType;
+
+
+    public UploadFileRequest(InsTaskImagesBase64 insTaskImagesBase64) {
+        String name = insTaskImagesBase64.getFileName();
+        String suffix = name.substring(name.lastIndexOf("."));
+        switch (insTaskImagesBase64.getImageType()) {
+            case "C01":
+                this.fileName = "车辆影像" + suffix;
+                this.fileType = FileTypeEnum.FT_52.getCode();
+                break;
+            case "C02":
+                this.fileName = "车主身份证" + suffix;
+                this.fileType = FileTypeEnum.FT_53.getCode();
+                break;
+            case "C03":
+                this.fileName = "投保人身份证" + suffix;
+                this.fileType = FileTypeEnum.FT_53.getCode();
+                break;
+            case "C04":
+                this.fileName = "被保人身份证" + suffix;
+                this.fileType = FileTypeEnum.FT_53.getCode();
+                break;
+            case "C05":
+                this.fileName = "验车照" + suffix;
+                this.fileType = FileTypeEnum.FT_1.getCode();
+                break;
+            default:
+                throw new SystemException("没有此类型");
+        }
+        this.fileBase64 = insTaskImagesBase64.getBase64String();
+    }
+}

+ 47 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/UploadImageInfoListRequest.java

@@ -0,0 +1,47 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class UploadImageInfoListRequest implements Serializable {
+
+    private static final long serialVersionUID = 5189448987075578164L;
+
+    @JsonProperty("itemFileDataList")
+    private List<ItemFileDataListDTO> itemFileDataList;
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemFileDataListDTO implements Serializable {
+
+        private static final long serialVersionUID = -8088228995799949015L;
+
+        @JsonProperty("fileId")
+        private String fileId;
+
+        @JsonProperty("fileName")
+        private String fileName;
+
+        @JsonProperty("fileType")
+        private String fileType;
+
+        public ItemFileDataListDTO(UploadFileRequest uploadImageRequest, String fileId) {
+            this.fileId = fileId;
+            this.fileName = uploadImageRequest.getFileName();
+            this.fileType = uploadImageRequest.getFileType();
+        }
+    }
+}

+ 29 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/request/ZbfAggregatePayRequest.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.order.entity.api.zj.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class ZbfAggregatePayRequest implements Serializable {
+
+    private static final long serialVersionUID = -1236367204218496536L;
+
+    @JsonProperty("amount")
+    private Integer amount;
+    @JsonProperty("bankCode")
+    private String bankCode;
+    @JsonProperty("channelCode")
+    private String channelCode;
+    @JsonProperty("eBankType")
+    private String eBankType;
+    @JsonProperty("orderNo")
+    private String orderNo;
+    @JsonProperty("reverseFlag")
+    private Integer reverseFlag;
+    @JsonProperty("zbfMethodCode")
+    private String zbfMethodCode;
+}

+ 19 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/BaseResponse.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 156387291623978802L;
+
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+
+}

+ 707 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/CalculatePremiumResponse.java

@@ -0,0 +1,707 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 紫金财险 保费计算 出参实体
+ */
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class CalculatePremiumResponse extends BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 3670586533495064198L;
+
+    @JsonProperty("basePart")
+    private BasePartDTO basePart;
+
+    @JsonProperty("carInfoList")
+    private List<CarInfoListDTO> carInfoList;
+
+    @JsonProperty("carShipTax")
+    private CarShipTaxDTO carShipTax;
+
+    @JsonProperty("channelAndUwRate")
+    private ChannelAndUwRateDTO channelAndUwRate;
+
+    @JsonProperty("ciProfitDetailData")
+    private CiProfitDetailDataDTO ciProfitDetailData;
+
+    @JsonProperty("demandPrecisionScoreDataList")
+    private List<DemandPrecisionScoreDataListDTO> demandPrecisionScoreDataList;
+
+    @JsonProperty("feeRateInfoList")
+    private List<FeeRateInfoListDTO> feeRateInfoList;
+
+    @JsonProperty("hisClaimList")
+    private List<HisClaimListDTO> hisClaimList;
+
+    @JsonProperty("illegalInfoList")
+    private List<IllegalInfoListDTO> illegalInfoList;
+
+    @JsonProperty("itemKindList")
+    private List<ItemKindListDTO> itemKindList;
+
+    @JsonProperty("lastYearPolicyInfo")
+    private LastYearPolicyInfoDTO lastYearPolicyInfo;
+
+    @JsonProperty("planList")
+    private List<PlanListDTO> planList;
+
+    @JsonProperty("priceInfoList")
+    private List<PriceInfoListDTO> priceInfoList;
+
+
+    @JsonProperty("success")
+    private Boolean success;
+
+
+    @NoArgsConstructor
+    @Data
+    public static class BasePartDTO implements Serializable {
+
+        private static final long serialVersionUID = 4315673340895809849L;
+
+        @JsonProperty("comCode")
+        private String comCode;
+
+        @JsonProperty("demandNo")
+        private String demandNo;
+
+        @JsonProperty("demandNoCI")
+        private String demandNoCI;
+
+        @JsonProperty("discount")
+        private String discount;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+
+        @JsonProperty("endHour")
+        private String endHour;
+
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+
+        @JsonProperty("endMinute")
+        private String endMinute;
+
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+
+        @JsonProperty("isDjq")
+        private String isDjq;
+
+        @JsonProperty("jyenergytips")
+        private String jyenergytips;
+
+        @JsonProperty("lcRate")
+        private String lcRate;
+
+        @JsonProperty("maxScale")
+        private String maxScale;
+
+        @JsonProperty("minScale")
+        private String minScale;
+
+        @JsonProperty("proConfirmEndDate")
+        private String proConfirmEndDate;
+
+        @JsonProperty("proConfirmEndDateCI")
+        private String proConfirmEndDateCI;
+
+        @JsonProperty("proposalCheckNo")
+        private String proposalCheckNo;
+
+        @JsonProperty("question")
+        private String question;
+
+        @JsonProperty("questionCI")
+        private String questionCI;
+
+        @JsonProperty("reinsureMessage")
+        private String reinsureMessage;
+
+        @JsonProperty("renewalFlag")
+        private String renewalFlag;
+
+        @JsonProperty("renewalFlagCI")
+        private String renewalFlagCI;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+
+        @JsonProperty("startHour")
+        private String startHour;
+
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+
+        @JsonProperty("startMinute")
+        private String startMinute;
+
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+
+        @JsonProperty("sumAmount")
+        private Integer sumAmount;
+
+        @JsonProperty("sumPremium")
+        private Double sumPremium;
+
+        @JsonProperty("xbFlag")
+        private String xbFlag;
+
+        @JsonProperty("xbFlagCI")
+        private String xbFlagCI;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CarShipTaxDTO implements Serializable {
+
+        private static final long serialVersionUID = 2441423559261848150L;
+
+        @JsonProperty("completeKerbMass")
+        private String completeKerbMass;
+
+        @JsonProperty("extendChar1")
+        private String extendChar1;
+
+        @JsonProperty("extendChar2")
+        private String extendChar2;
+
+        @JsonProperty("freeRateText")
+        private String freeRateText;
+
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        @JsonProperty("lastCIPaymentTime")
+        private String lastCIPaymentTime;
+
+        @JsonProperty("lateFee")
+        private String lateFee;
+
+        @JsonProperty("leviedDate")
+        private String leviedDate;
+
+        @JsonProperty("paidFreeCertificate")
+        private String paidFreeCertificate;
+
+        @JsonProperty("payEndDate")
+        private String payEndDate;
+
+        @JsonProperty("payLastYear")
+        private String payLastYear;
+
+        @JsonProperty("payStartDate")
+        private String payStartDate;
+
+        @JsonProperty("payerCode")
+        private String payerCode;
+
+        @JsonProperty("previousPay")
+        private String previousPay;
+
+        @JsonProperty("relifReason")
+        private String relifReason;
+
+        @JsonProperty("sumPayTax")
+        private String sumPayTax;
+
+        @JsonProperty("taxActual")
+        private String taxActual;
+
+        @JsonProperty("taxComCode")
+        private String taxComCode;
+
+        @JsonProperty("taxComName")
+        private String taxComName;
+
+        @JsonProperty("taxRelief")
+        private String taxRelief;
+
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+
+        @JsonProperty("taxRelifFlagCN")
+        private String taxRelifFlagCN;
+
+        @JsonProperty("taxUnit")
+        private String taxUnit;
+
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+
+        @JsonProperty("taxpayerName")
+        private String taxpayerName;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class ChannelAndUwRateDTO implements Serializable {
+
+        private static final long serialVersionUID = -2327231056620769434L;
+
+        @JsonProperty("chanMax")
+        private String chanMax;
+
+        @JsonProperty("chanMin")
+        private String chanMin;
+
+        @JsonProperty("uwMax")
+        private String uwMax;
+
+        @JsonProperty("uwMin")
+        private String uwMin;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CiProfitDetailDataDTO implements Serializable {
+
+        private static final long serialVersionUID = -2547100532408066407L;
+
+        @JsonProperty("claimAdjustLevel")
+        private String claimAdjustLevel;
+
+        @JsonProperty("claimAdjustReason")
+        private String claimAdjustReason;
+
+        @JsonProperty("claimTimes")
+        private String claimTimes;
+
+        @JsonProperty("insureYears")
+        private String insureYears;
+
+        @JsonProperty("insurerArea")
+        private String insurerArea;
+
+        @JsonProperty("loyaltyAdjust")
+        private String loyaltyAdjust;
+
+        @JsonProperty("noClaimAdjustReason")
+        private String noClaimAdjustReason;
+
+        @JsonProperty("noPeccancyRecordReason")
+        private String noPeccancyRecordReason;
+
+        @JsonProperty("nonclaimAdjuct")
+        private String nonclaimAdjuct;
+
+        @JsonProperty("safeAdjust")
+        private String safeAdjust;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class LastYearPolicyInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = 3129080952032001128L;
+
+        @JsonProperty("lastBiliDate")
+        private String lastBiliDate;
+
+        @JsonProperty("lastBiliDateCI")
+        private String lastBiliDateCI;
+
+        @JsonProperty("lastEndDate")
+        private String lastEndDate;
+
+        @JsonProperty("lastEndDateCI")
+        private String lastEndDateCI;
+
+        @JsonProperty("lastStartDate")
+        private String lastStartDate;
+
+        @JsonProperty("lastStartDateCI")
+        private String lastStartDateCI;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CarInfoListDTO implements Serializable {
+
+        private static final long serialVersionUID = -6263980208513359416L;
+
+        @JsonProperty("carName")
+        private String carName;
+
+        @JsonProperty("modelIdCode")
+        private String modelIdCode;
+
+        @JsonProperty("noticeType")
+        private String noticeType;
+
+        @JsonProperty("pureRiskPremium")
+        private String pureRiskPremium;
+
+        @JsonProperty("vehicleBrand")
+        private String vehicleBrand;
+
+        @JsonProperty("vehicleCode")
+        private String vehicleCode;
+
+        @JsonProperty("vehicleFamily")
+        private String vehicleFamily;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class DemandPrecisionScoreDataListDTO implements Serializable {
+
+        private static final long serialVersionUID = -2887437007692604495L;
+
+        @JsonProperty("score")
+        private String score;
+
+        @JsonProperty("scoreCode")
+        private String scoreCode;
+
+        @JsonProperty("serialno")
+        private String serialno;
+
+        @JsonProperty("updateTime")
+        private String updateTime;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class FeeRateInfoListDTO implements Serializable {
+
+        private static final long serialVersionUID = 2607693926127582629L;
+
+        @JsonProperty("commissionRate1")
+        private String commissionRate1;
+
+        @JsonProperty("commissionRate2")
+        private String commissionRate2;
+
+        @JsonProperty("dataType")
+        private String dataType;
+
+        @JsonProperty("performanceRate1")
+        private String performanceRate1;
+
+        @JsonProperty("performanceRate2")
+        private String performanceRate2;
+
+        @JsonProperty("salesSupportRate1")
+        private String salesSupportRate1;
+
+        @JsonProperty("salesSupportRate2")
+        private String salesSupportRate2;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class HisClaimListDTO implements Serializable {
+
+        private static final long serialVersionUID = 5409751294073355672L;
+
+        @JsonProperty("accidentDeath")
+        private String accidentDeath;
+
+        @JsonProperty("areaCode")
+        private String areaCode;
+
+        @JsonProperty("claimType")
+        private String claimType;
+
+        @JsonProperty("endCaseTime")
+        private String endCaseTime;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
+        @JsonProperty("insurerArea")
+        private String insurerArea;
+
+        @JsonProperty("kindCode")
+        private String kindCode;
+
+        @JsonProperty("lossFee")
+        private String lossFee;
+
+        @JsonProperty("lossTime")
+        private String lossTime;
+
+        @JsonProperty("payCompany")
+        private String payCompany;
+
+        @JsonProperty("policyNo")
+        private String policyNo;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class IllegalInfoListDTO implements Serializable {
+
+        private static final long serialVersionUID = -6998796848106863700L;
+
+        @JsonProperty("administrationArea")
+        private String administrationArea;
+
+        @JsonProperty("decisionCode")
+        private String decisionCode;
+
+        @JsonProperty("lossAction")
+        private String lossAction;
+
+        @JsonProperty("lossTime")
+        private String lossTime;
+
+        @JsonProperty("peccancySort")
+        private String peccancySort;
+
+        @JsonProperty("remark")
+        private String remark;
+
+        @JsonProperty("violationCode")
+        private String violationCode;
+
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindListDTO implements Serializable {
+
+        private static final long serialVersionUID = 620821382003397248L;
+
+        @JsonProperty("amount")
+        private String amount;
+
+        @JsonProperty("basePremium")
+        private String basePremium;
+
+        @JsonProperty("benchMarkPremium")
+        private String benchMarkPremium;
+
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+
+        @JsonProperty("discount")
+        private String discount;
+
+        @JsonProperty("kindCode")
+        private String kindCode;
+
+        @JsonProperty("kindName")
+        private String kindName;
+
+        @JsonProperty("modeCode")
+        private String modeCode;
+
+        @JsonProperty("modeName")
+        private String modeName;
+
+        @JsonProperty("premium")
+        private String premium;
+
+        @JsonProperty("premium2")
+        private String premium2;
+
+        @JsonProperty("quantity")
+        private String quantity;
+
+        @JsonProperty("rate")
+        private String rate;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+
+        @JsonProperty("unitAmount")
+        private String unitAmount;
+
+        @JsonProperty("value")
+        private String value;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class PlanListDTO implements Serializable {
+
+        private static final long serialVersionUID = -7671350730483249404L;
+
+        @JsonProperty("currency")
+        private String currency;
+
+        @JsonProperty("planDate")
+        private String planDate;
+
+        @JsonProperty("planFee")
+        private String planFee;
+
+        @JsonProperty("planStartDate")
+        private String planStartDate;
+
+        @JsonProperty("planText")
+        private String planText;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("serialNo")
+        private String serialNo;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class PriceInfoListDTO implements Serializable {
+
+        private static final long serialVersionUID = 3855195412906065458L;
+
+        @JsonProperty("actPremSal")
+        private String actPremSal;
+
+        @JsonProperty("certiNo")
+        private String certiNo;
+
+        @JsonProperty("chanRel")
+        private String chanRel;
+
+        @JsonProperty("compulsoryThreeTranche")
+        private String compulsoryThreeTranche;
+
+        @JsonProperty("compulsoryTranche")
+        private String compulsoryTranche;
+
+        @JsonProperty("configCHD")
+        private String configCHD;
+
+        @JsonProperty("endorsePrem")
+        private String endorsePrem;
+
+        @JsonProperty("generateDate")
+        private String generateDate;
+
+        @JsonProperty("hbCode")
+        private String hbCode;
+
+        @JsonProperty("hbScore")
+        private String hbScore;
+
+        @JsonProperty("jYChanrel")
+        private String jYChanrel;
+
+        @JsonProperty("jYUwrel")
+        private String jYUwrel;
+
+        @JsonProperty("level2Branch")
+        private String level2Branch;
+
+        @JsonProperty("lrRecom")
+        private String lrRecom;
+
+        @JsonProperty("lrRecomAdjust")
+        private String lrRecomAdjust;
+
+        @JsonProperty("markRecomAmt")
+        private String markRecomAmt;
+
+        @JsonProperty("markRecomAmtCom")
+        private String markRecomAmtCom;
+
+        @JsonProperty("markRecomAmtSal")
+        private String markRecomAmtSal;
+
+        @JsonProperty("markRecomRatio")
+        private String markRecomRatio;
+
+        @JsonProperty("markRecomRatioCom")
+        private String markRecomRatioCom;
+
+        @JsonProperty("markRecomRatioSal")
+        private String markRecomRatioSal;
+
+        @JsonProperty("policyYear")
+        private String policyYear;
+
+        @JsonProperty("premRecomAll")
+        private String premRecomAll;
+
+        @JsonProperty("premRecomCom")
+        private String premRecomCom;
+
+        @JsonProperty("pricingId")
+        private String pricingId;
+
+        @JsonProperty("reserved1")
+        private String reserved1;
+
+        @JsonProperty("reserved2")
+        private String reserved2;
+
+        @JsonProperty("resultCode")
+        private String resultCode;
+
+        @JsonProperty("resultMsg")
+        private String resultMsg;
+
+        @JsonProperty("revPredScore")
+        private String revPredScore;
+
+        @JsonProperty("revPredScoreAdjust")
+        private String revPredScoreAdjust;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("serialNo")
+        private String serialNo;
+
+        @JsonProperty("threeTranche")
+        private String threeTranche;
+
+        @JsonProperty("tjCode")
+        private String tjCode;
+
+        @JsonProperty("tjScore")
+        private String tjScore;
+
+        @JsonProperty("totalTranche")
+        private String totalTranche;
+
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+
+        @JsonProperty("uwRel")
+        private String uwRel;
+
+        @JsonProperty("vehicleDamageTranche")
+        private String vehicleDamageTranche;
+
+        @JsonProperty("zjNatrnk")
+        private Integer zjNatrnk;
+
+        @JsonProperty("zjPrornk")
+        private Integer zjPrornk;
+
+        @JsonProperty("zjRate")
+        private Integer zjRate;
+
+        @JsonProperty("zjStatus")
+        private String zjStatus;
+    }
+}

+ 309 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/ModelQueryResponse.java

@@ -0,0 +1,309 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 车型查询 出参实体
+ * @author: wenks
+ * @date: 2023/8/8 17:20
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ModelQueryResponse extends BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 345873689646517032L;
+    /**
+     *
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+    /**
+     *
+     */
+    @JsonProperty("orderNo")
+    private String orderNo;
+    /**
+     *
+     */
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+    /**
+     *
+     */
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+    /**
+     *
+     */
+    @JsonProperty("success")
+    private Boolean success;
+    /**
+     *
+     */
+    @JsonProperty("vehicleModelInfos")
+    private List<VehicleModelInfosDTO> vehicleModelInfos;
+
+    @NoArgsConstructor
+    @Data
+    public static class VehicleModelInfosDTO implements Serializable {
+
+        private static final long serialVersionUID = -7781619063783117252L;
+        /**
+         * 安全气囊数
+         */
+        @JsonProperty("airBagNum")
+        private String airBagNum;
+        /**
+         *
+         */
+        @JsonProperty("aliasName")
+        private String aliasName;
+        /**
+         * 车辆品牌
+         */
+        @JsonProperty("brand")
+        private String brand;
+        /**
+         * 品牌编码
+         */
+        @JsonProperty("brandCode")
+        private String brandCode;
+        /**
+         * 车辆种类
+         */
+        @JsonProperty("carKind")
+        private String carKind;
+        /**
+         * 车系
+         */
+        @JsonProperty("carSeriesName")
+        private String carSeriesName;
+        /**
+         *
+         */
+        @JsonProperty("carStyle")
+        private String carStyle;
+        /**
+         *
+         */
+        @JsonProperty("carYear")
+        private String carYear;
+        /**
+         *
+         */
+        @JsonProperty("companyCode")
+        private String companyCode;
+        /**
+         *
+         */
+        @JsonProperty("completeKerbmassMax")
+        private String completeKerbmassMax;
+        /**
+         *
+         */
+        @JsonProperty("completeKerbmassMin")
+        private String completeKerbmassMin;
+        /**
+         *
+         */
+        @JsonProperty("exhaustCapacity")
+        private String exhaustCapacity;
+        /**
+         *
+         */
+        @JsonProperty("factory")
+        private String factory;
+        /**
+         *
+         */
+        @JsonProperty("familyCode")
+        private String familyCode;
+        /**
+         *
+         */
+        @JsonProperty("fullWeight")
+        private String fullWeight;
+        /**
+         *
+         */
+        @JsonProperty("gearboxType")
+        private String gearboxType;
+        /**
+         *
+         */
+        @JsonProperty("groupCode")
+        private String groupCode;
+        /**
+         *
+         */
+        @JsonProperty("groupName")
+        private String groupName;
+        /**
+         *
+         */
+        @JsonProperty("hfCode")
+        private String hfCode;
+        /**
+         *
+         */
+        @JsonProperty("hfName")
+        private String hfName;
+        /**
+         *
+         */
+        @JsonProperty("importFlag")
+        private String importFlag;
+        /**
+         *
+         */
+        @JsonProperty("jqxClassName")
+        private String jqxClassName;
+        /**
+         *
+         */
+        @JsonProperty("marketYear")
+        private String marketYear;
+        /**
+         *
+         */
+        @JsonProperty("modelCode")
+        private String modelCode;
+        /**
+         *
+         */
+        @JsonProperty("modelDesc")
+        private String modelDesc;
+        /**
+         *
+         */
+        @JsonProperty("modelName")
+        private String modelName;
+        /**
+         *
+         */
+        @JsonProperty("newVehicleClass")
+        private String newVehicleClass;
+        /**
+         *
+         */
+        @JsonProperty("newVehicleClassCode")
+        private String newVehicleClassCode;
+        /**
+         *
+         */
+        @JsonProperty("platModelName")
+        private String platModelName;
+        /**
+         *
+         */
+        @JsonProperty("platPublicMode")
+        private String platPublicMode;
+        /**
+         *
+         */
+        @JsonProperty("platVehicleCode")
+        private String platVehicleCode;
+        /**
+         *
+         */
+        @JsonProperty("power")
+        private String power;
+        /**
+         *
+         */
+        @JsonProperty("powerType")
+        private String powerType;
+        /**
+         *
+         */
+        @JsonProperty("powerTypeCode")
+        private String powerTypeCode;
+        /**
+         *
+         */
+        @JsonProperty("productStatus")
+        private String productStatus;
+        /**
+         *
+         */
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+        /**
+         *
+         */
+        @JsonProperty("purchasePriceTax")
+        private String purchasePriceTax;
+        /**
+         *
+         */
+        @JsonProperty("remark")
+        private String remark;
+        /**
+         *
+         */
+        @JsonProperty("riskFlag")
+        private String riskFlag;
+        /**
+         *
+         */
+        @JsonProperty("riskType")
+        private String riskType;
+        /**
+         *
+         */
+        @JsonProperty("seatCount")
+        private String seatCount;
+        /**
+         *
+         */
+        @JsonProperty("standardName")
+        private String standardName;
+        /**
+         *
+         */
+        @JsonProperty("syxClassId")
+        private String syxClassId;
+        /**
+         *
+         */
+        @JsonProperty("syxClassName")
+        private String syxClassName;
+        /**
+         *
+         */
+        @JsonProperty("theftProof")
+        private String theftProof;
+        /**
+         *
+         */
+        @JsonProperty("transmissionType")
+        private String transmissionType;
+        /**
+         *
+         */
+        @JsonProperty("vehicleClassCode")
+        private String vehicleClassCode;
+        /**
+         *
+         */
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+        /**
+         *
+         */
+        @JsonProperty("vehicleWeight")
+        private String vehicleWeight;
+        /**
+         *
+         */
+        @JsonProperty("vinNo")
+        private String vinNo;
+    }
+}

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/QueryActualValueResponse.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 紫金财险 获取车辆实际价值 出参实体
+ * @author: wenks
+ * @date: 2023/8/10 18:18
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QueryActualValueResponse extends BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 6486322620466578970L;
+
+    @JsonProperty("actualValue")
+    private String actualValue;
+}

+ 66 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/SubmitVerifyResponse.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 紫金财险 提交核保参数 出参实体
+ * @author: wenks
+ * @date: 2023/8/10 17:44
+ **/
+@NoArgsConstructor
+@Data
+public class SubmitVerifyResponse extends BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 4550731902520538322L;
+
+    @JsonProperty("orderId")
+    private String orderId;
+    @JsonProperty("orderNo")
+    private String orderNo;
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+    @JsonProperty("submitVerifyInfo")
+    private SubmitVerifyInfoDTO submitVerifyInfo;
+
+    @NoArgsConstructor
+    @Data
+    public static class SubmitVerifyInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = -4848981127371692499L;
+
+        @JsonProperty("endMinute")
+        private String endMinute;
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+        /**
+         * 商业险保单号
+         */
+        @JsonProperty("policyNo")
+        private String policyNo;
+        /**
+         * 交强险保单号
+         */
+        @JsonProperty("policyNoCI")
+        private String policyNoCI;
+        /**
+         * 商业险投保单号
+         */
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        /**
+         * 交强险投保单号
+         */
+        @JsonProperty("proposalNoCI")
+        private String proposalNoCI;
+        @JsonProperty("startMinute")
+        private String startMinute;
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+    }
+}

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/UploadFileResponse.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 文件上传 出参参实体
+ * @author: wenks
+ * @date: 2023/8/10 16:06
+ **/
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class UploadFileResponse extends BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = -2724925954843577468L;
+
+    @JsonProperty("fileId")
+    private String fileId;
+
+}

+ 22 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/ZbfAggregatePayResponse.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.order.entity.api.zj.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ZbfAggregatePayResponse extends BaseResponse implements Serializable {
+
+    private static final long serialVersionUID = -6548320053020484412L;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("payUrl")
+    private String payUrl;
+}

+ 0 - 1
src/main/java/com/ydtech/modules/order/entity/api/zm/BaseRequest.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.order.entity.api.zm;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
 import lombok.Data;
 
 import java.io.Serializable;

+ 9 - 7
src/main/java/com/ydtech/modules/order/entity/api/zm/constants/enums/DocumentTypeEnum.java

@@ -7,17 +7,19 @@ import lombok.Getter;
 /**
  * @author wenks
  * @version 0.0.2
- * @description TODO
+ * @description 中煤财险保单下载编号
  * @date 2023/4/24 18:31
  */
 @AllArgsConstructor
 @Getter
 public enum DocumentTypeEnum {
 
-    DZ_AJ("DZ_AJ", "标志"),
-    DZ_AE("DZ_AE", "保单"),
-    EP("EP", "意外险保单"),
-    HP("HP", "家财险保单");
+    DZ_AJ("1", "DZ_AJ", "标志"),
+    DZ_AE("2", "DZ_AE", "保单"),
+    EP("3", "EP", "意外险保单"),
+    HP("4", "HP", "家财险保单");
+
+    private final String number;
 
     private final String code;
 
@@ -33,9 +35,9 @@ public enum DocumentTypeEnum {
                 return EP.getCode();
             case "4":
                 return HP.getCode();
+            default:
+                throw new SystemException("没有此类型");
         }
-
-        throw new SystemException("类型选择错误");
     }
 
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/zm/request/SubmitRequest.java

@@ -23,7 +23,7 @@ public class SubmitRequest extends BaseRequest {
     private static final long serialVersionUID = 180600971227499971L;
 
     @JsonProperty("businessNo")
-    private String orderNo;
+    private String businessNo;
     @JsonProperty("VIN")
     private String vin;
     @JsonProperty("checkCode")

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/zm/response/QuotedPriceResponse.java

@@ -24,7 +24,7 @@ public class QuotedPriceResponse extends BaseResponse {
     @JsonProperty("bizPremium")
     private BizPremiumDTO bizPremium;
     @JsonProperty("businessNo")
-    private String orderNo;
+    private String businessNo;
     @JsonProperty("forcePrimium")
     private ForcePrimiumDTO forcePrimium;
     @JsonProperty("insuranceScheme")

+ 2 - 0
src/main/java/com/ydtech/modules/order/entity/api/zm/response/SubmitResponse.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.entity.api.zm.response;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.modules.order.entity.api.zm.BaseResponse;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 /**
@@ -11,6 +12,7 @@ import lombok.NoArgsConstructor;
  * @description 核保响应参数
  * @date 2023/4/24 10:54
  */
+@EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @Data
 public class SubmitResponse extends BaseResponse {

+ 4 - 2
src/main/java/com/ydtech/modules/order/entity/config/YaConfigureParameters.java

@@ -3,8 +3,10 @@ package com.ydtech.modules.order.entity.config;
 import lombok.Data;
 
 /**
- * 永安Api配置类
- */
+ * @description: 永安Api配置
+ * @author: wenks
+ * @date: 2023/8/11 19:14
+ **/
 @Data
 public class YaConfigureParameters implements ConfigureParameters {
 

+ 16 - 0
src/main/java/com/ydtech/modules/order/entity/config/ZjConfigureParameters.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.entity.config;
+
+
+import lombok.Data;
+
+
+/**
+ * @description: 紫金api配置
+ * @author: wenks
+ * @date: 2023/8/11 19:14
+ **/
+@Data
+public class ZjConfigureParameters implements ConfigureParameters {
+
+
+}

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/config/ZmConfigureParameters.java

@@ -2,6 +2,12 @@ package com.ydtech.modules.order.entity.config;
 
 import lombok.Data;
 
+
+/**
+ * @description: 中煤api 配置
+ * @author: wenks
+ * @date: 2023/8/11 19:13
+ **/
 @Data
 public class ZmConfigureParameters implements ConfigureParameters {
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/vo/BaseQuoteVo.java

@@ -14,7 +14,7 @@ public class BaseQuoteVo<T> {
     @ApiModelProperty("保险公司编号")
     private String companyId;
 
-    @ApiModelProperty(value = "协议id",required = true)
+    @ApiModelProperty(value = "协议id", required = true)
     private String agreementId;
 
     @ApiModelProperty("扩展实体")

+ 0 - 2
src/main/java/com/ydtech/modules/order/service/YongAnOrderService.java

@@ -1,10 +1,8 @@
 package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.order.entity.vo.ya.YaPayUrlVo;
 
-import java.util.List;
 import java.util.Map;
 
 public interface YongAnOrderService extends BaseOrderService<Object> {

+ 16 - 0
src/main/java/com/ydtech/modules/order/service/ZijinOrderApiService.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.service;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
+
+public interface ZijinOrderApiService extends BaseOrderService<AccidentalDrivingVo> {
+
+    /**
+     * 获取电子保单
+     *
+     * @param policyPrintVo
+     * @return
+     */
+    HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo);
+}

+ 0 - 1
src/main/java/com/ydtech/modules/order/service/impl/CarModelServiceImpl.java

@@ -8,7 +8,6 @@ import com.ydtech.modules.order.service.YongAnOrderService;
 import com.ydtech.modules.order.service.ZhongMeiOrderService;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -21,7 +21,7 @@ import org.springframework.util.ObjectUtils;
 public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper, InsAreaCompany>
         implements InsAreaCompanyService {
 
-    private  InsOrdersService insOrdersService;
+    private InsOrdersService insOrdersService;
 
     @Autowired
     public void setInsOrdersService(InsOrdersService insOrdersService) {

+ 4 - 4
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -88,7 +88,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public void updateByOrderStatus(String orderNo, String orderStatus) {
-        if ("4".equals(orderStatus)) {
+        if (InsOrderStatus.S_4.getCode().equals(orderStatus)) {
             return;
         }
         InsOrders insOrders = getById(orderNo);
@@ -224,9 +224,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     public InsOrders revise(String orderNo) {
         InsOrders insOrders = getById(orderNo);
         List<InsAreaCompany> insAreaCompanyList =
-                insAreaCompanyService.query()
-                        .eq("orderno", orderNo)
-                        .orderByDesc("createtime")
+                insAreaCompanyService.lambdaQuery()
+                        .eq(InsAreaCompany::getInsOrderNo, orderNo)
+                        .orderByDesc(InsAreaCompany::getCreatetime)
                         .list();
         insOrders.setInsAreaCompanyList(insAreaCompanyList);
         return insOrders;

+ 3 - 20
src/main/java/com/ydtech/modules/order/service/impl/YongAnOrderServiceImpl.java

@@ -31,7 +31,6 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.HMAC256Uitil;
 import com.ydtech.utils.HttpXmlUtil;
-import com.ydtech.utils.idgen.IdGenerate;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -332,7 +331,7 @@ public class YongAnOrderServiceImpl implements YongAnOrderService {
             QuoteRespVo quoteRespVo = getQuoteRespVo(orderNo, carDTO, responseBodyC2);
             quoteRespVo.setExtendInfo(yaExtendInfoDto);
             //8 生成订单
-            return responseOrder(quoteInfoVo.getOrderNo(), quoteRespVo, requestData, responseDataC2, jq_falg, esmInsCompany, agreementId, ptlAgreementAttribution.getApiType());
+            return responseOrder(quoteRespVo, requestData, responseDataC2, ptlAgreementAttribution);
         } catch (SystemException e) {
             return HttpResult.error(e.getMessage());
         } catch (Exception e) {
@@ -1091,31 +1090,15 @@ public class YongAnOrderServiceImpl implements YongAnOrderService {
         return b1.add(b2).doubleValue();
     }
 
-    private HttpResult<QuoteRespVo> responseOrder(String orderNo, QuoteRespVo quoteRespVo, RequestData requestData, ResponseDataC2 responseDataC2, boolean jq_falg, EsmInsCompany esmInsCompany, String agreementId, Integer apiType) {
+    private HttpResult<QuoteRespVo> responseOrder(QuoteRespVo quoteRespVo, RequestData requestData, ResponseDataC2 responseDataC2, PtlAgreementAttribution ptlAgreementAttribution) {
         //保存订单信息
 
         if (responseDataC2.getResponseHead().getStatus() != null && responseDataC2.getResponseHead().getStatus().equals("0")) {
-            InsAreaCompany insAreaCompany = new InsAreaCompany();
-            insAreaCompany.setId(IdGenerate.nextId());
-            insAreaCompany.setOrderno(orderNo);
-            // 协议id
-            insAreaCompany.setAgreementId(agreementId);
-            insAreaCompany.setApiType(apiType);
+            InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
             //报价成功更新险种信息
-            ResponseBodyC2 responseBody = responseDataC2.getResponseBody();
-            insAreaCompany.setKindinfo(JSON.parseArray(JSON.toJSONString(quoteRespVo.getKindList())));
-            insAreaCompany.setRiskinfo(JSON.parseArray(JSON.toJSONString(quoteRespVo.getRiskList())));
-            insAreaCompany.setJqpremium(BigDecimal.valueOf(jq_falg ? responseBody.getCiPremium() : 0));
-            insAreaCompany.setSypremium(BigDecimal.valueOf(responseBody.getBiPremium()));
-            insAreaCompany.setTaxamount(BigDecimal.valueOf(jq_falg ? responseBody.getCarTax().getSumPayment() : 0));
-            insAreaCompany.setSumpremium(BigDecimal.valueOf(quoteRespVo.getSumPermium()));
-            insAreaCompany.setOrderstatus(InsOrderStatus.S_0.getCode()); // 1
             insAreaCompany.setReqtxt(JSON.parseObject(JSON.toJSONString(requestData)));
             insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(responseDataC2)));
-            insAreaCompany.setInscompany(esmInsCompany.getId());
-            insAreaCompany.setInscompany(esmInsCompany.getNamesimple());
             insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(quoteRespVo.getTaxArrears())));
-
             insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
             quoteRespVo.setCompanyId(insAreaCompany.getId());
 

+ 3 - 5
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -162,7 +162,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         QuotedPriceResponse quotedPriceResponse = zhongmeiRequestApiComponents.quotedPrice(quotedPriceRequest, QuotedPriceResponse.class);
         QuoteRespVo quoteRespVo = getQuoteRespVo(quotedPriceResponse, quoteInfo);
         // 3. 第一次提交核保 并且获取投保单号
-        SubmitResponse response = submitForUnderwriting(quotedPriceResponse.getOrderNo(), carInfo.getFrameNo(), quoteInfo.getPolicyHolderInfo(), zmConfigureParameters);
+        SubmitResponse response = submitForUnderwriting(quotedPriceResponse.getBusinessNo(), carInfo.getFrameNo(), quoteInfo.getPolicyHolderInfo(), zmConfigureParameters);
 
         // 4. 将错误的核保信息存入redis
         if (StringUtils.isEmpty(response.getProposalNo())) {
@@ -341,7 +341,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
      */
     public SubmitResponse submitForUnderwriting(String orderNo, String frameNo, CustomerInfoVo customerInfoVo, ZmConfigureParameters zmConfigureParameters) {
         SubmitRequest submitRequest = new SubmitRequest();
-        submitRequest.setOrderNo(orderNo);
+        submitRequest.setBusinessNo(orderNo);
         submitRequest.setVin(frameNo);
         SubmitRequest.DeliveryInfoDTO deliveryInfoDTO = new SubmitRequest.DeliveryInfoDTO(customerInfoVo.getName(), customerInfoVo.getMobile(),
                 // 省
@@ -413,8 +413,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
     public HttpResult<QuoteRespVo> responseOrder(QuotedPriceResponse quotedPriceResponse, QuoteRespVo quoteRespVo, SubmitResponse submitResponse, PtlAgreementAttribution ptlAgreementAttribution) {
         //保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
-        insAreaCompany.setId(quotedPriceResponse.getOrderNo());
-
+        insAreaCompany.setId(quotedPriceResponse.getBusinessNo());
         // 协议id
         insAreaCompany.setJqapplyno(submitResponse.getForceProposalNo());
         insAreaCompany.setSyapplyno(submitResponse.getBizProposalNo());
@@ -425,7 +424,6 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
 
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
-
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         quoteRespVo.setTaxArrears(taxArrearsList);
         return HttpResult.ok(quotedPriceResponse.getHead().getReturnMessage(), quoteRespVo);

+ 7 - 8
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.ydtech.components.ZhongmeiRequestComponents;
 import com.ydtech.components.queue.ZmQuoteConsumer;
 import com.ydtech.constants.enums.InsOrderStatus;
@@ -123,14 +122,14 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
         List<InsTaskImage> insTaskImages = insTaskImageService.selectByTaskId(insOrders.getQuoteno());
         EsmInsAttribution esmInsAttribution = esmInsAttributionService.getById(insAreaCompany.getAttributionId());
 
-        if (!insTaskImages.isEmpty()) {
-            InsZmUploadImageVo insZmUploadImageVo = new InsZmUploadImageVo(insAreaCompany.getInsOrderNo(), esmInsAttribution.getUsername(), insTaskImages);
-            zhongmeiRequestComponents.submitImage(insZmUploadImageVo, new ParameterizedTypeReference<Response<Object>>() {
-            });
-            return HttpResult.ok("成功");
-        }
+        if (insTaskImages.isEmpty()) {
+            throw new SystemException("没有上传成功的影像");
 
-        throw new SystemException("没有上传成功的影像");
+        }
+        InsZmUploadImageVo insZmUploadImageVo = new InsZmUploadImageVo(insAreaCompany.getInsOrderNo(), esmInsAttribution.getUsername(), insTaskImages);
+        zhongmeiRequestComponents.submitImage(insZmUploadImageVo, new ParameterizedTypeReference<Response<Object>>() {
+        });
+        return HttpResult.ok("成功");
     }
 
 

+ 260 - 0
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -0,0 +1,260 @@
+package com.ydtech.modules.order.service.impl;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.ydtech.constants.enums.InsOrderStatus;
+import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.ins.model.vo.*;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.ZijinRequestApiComponents;
+import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.zj.request.*;
+import com.ydtech.modules.order.entity.api.zj.response.*;
+import com.ydtech.modules.order.entity.config.ZjConfigureParameters;
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
+import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.order.service.InsTaskImagesService;
+import com.ydtech.modules.order.service.ZijinOrderApiService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.utils.CalculateUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Service
+public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
+
+    private final ZijinRequestApiComponents zijinRequestApiComponents;
+
+    private final InsAreaCompanyService insAreaCompanyService;
+
+    private final InsOrdersService insOrdersService;
+
+    private final InsTaskImagesService insTaskImagesService;
+
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+
+    private final ConfigureParametersComponents configureParametersComponents;
+
+
+    public ZijinOrderApiServiceImpl(ZijinRequestApiComponents zijinRequestApiComponents, InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService, InsTaskImagesService insTaskImagesService, PtlAgreementAttributionService ptlAgreementAttributionService, ConfigureParametersComponents configureParametersComponents) {
+        this.zijinRequestApiComponents = zijinRequestApiComponents;
+        this.insAreaCompanyService = insAreaCompanyService;
+        this.insOrdersService = insOrdersService;
+        this.insTaskImagesService = insTaskImagesService;
+        this.ptlAgreementAttributionService = ptlAgreementAttributionService;
+        this.configureParametersComponents = configureParametersComponents;
+    }
+
+
+    @Override
+    public HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
+        // 1. 协议id获取配置实体
+        String agreementId = quoteVo.getAgreementId();
+        // 1.1 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
+        ZjConfigureParameters zjConfigureParameters = new ZjConfigureParameters();
+        configureParametersComponents.toEntity(zjConfigureParameters, ptlAgreementAttribution);
+
+        // 2. 查询车型
+        ModelQueryRequest modelQueryRequest = new ModelQueryRequest();
+        ModelQueryResponse modelQueryResponse = zijinRequestApiComponents.modelQuery(modelQueryRequest);
+        ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO = modelQueryResponse.getVehicleModelInfos().get(0);
+        // 2.1 过滤车型
+
+
+        // 3. 计算车辆实际价值
+        String purchasePrice = vehicleModelInfosDTO.getPurchasePrice();
+        String seatCount = vehicleModelInfosDTO.getSeatCount();
+        CarInfoVo carInfo = quoteInfoVo.getCarInfo();
+        String startDate;
+        // 4. 计算起保日期
+        List<RiskInfoVo> riskList = quoteInfoVo.getRiskList();
+
+        if (riskList.size() == 1 && InsuranceRisk.TRAFFIC.getDesc().equals(riskList.get(0).getRiskCode())) {
+            startDate = riskList.get(0).getStartDate();
+        } else {
+            startDate = Objects.requireNonNull(riskList.stream().filter(x -> InsuranceRisk.BUSINESS.getDesc().equals(x.getRiskCode())).findFirst().orElse(null)).getStartDate();
+        }
+
+        QueryActualValueRequest queryActualValueRequest = new QueryActualValueRequest(carInfo.getRegisterDate(), purchasePrice, seatCount, startDate);
+        QueryActualValueResponse queryActualValueResponse = zijinRequestApiComponents.queryActualValue(queryActualValueRequest);
+        // 4. 报价
+        CalculatePremiumRequest calculatePremiumRequest = new CalculatePremiumRequest(quoteInfoVo, vehicleModelInfosDTO, queryActualValueResponse.getActualValue());
+        CalculatePremiumResponse calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest);
+        QuoteRespVo quoteRespVo = getQuoteRespVo(calculatePremiumResponse, quoteInfoVo);
+        return responseOrder(calculatePremiumResponse, quoteRespVo, ptlAgreementAttribution);
+    }
+
+    @Override
+    public HttpResult<Object> audit(String companyId) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        SubmitVerifyRequest submitVerifyRequest = new SubmitVerifyRequest(insAreaCompany.getInsOrderNo());
+        // 提交核保
+        SubmitVerifyResponse submitVerifyResponse = zijinRequestApiComponents.submitVerify(submitVerifyRequest);
+        SubmitVerifyResponse.SubmitVerifyInfoDTO submitVerifyInfo = submitVerifyResponse.getSubmitVerifyInfo();
+
+        // 保单号
+        insAreaCompany.setJqpolicyno(submitVerifyInfo.getPolicyNoCI());
+        insAreaCompany.setSypolicyno(submitVerifyInfo.getPolicyNo());
+        // 投保单号
+        insAreaCompany.setJqapplyno(submitVerifyInfo.getProposalNoCI());
+        insAreaCompany.setSyapplyno(submitVerifyInfo.getProposalNo());
+        insAreaCompany.setOrderstatus(InsOrderStatus.S_2.getCode());
+
+        // 聚合支付服务
+        ZbfAggregatePayRequest zbfAggregatePayRequest = new ZbfAggregatePayRequest();
+        ZbfAggregatePayResponse zbfAggregatePayResponse = zijinRequestApiComponents.zbfAggregatePay(zbfAggregatePayRequest);
+        insAreaCompany.setPaymentLink(zbfAggregatePayResponse.getPayUrl());
+        insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+        return HttpResult.ok("核保成功");
+    }
+
+    @Override
+    public HttpResult<Object> submitImage(String companyId) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+        List<InsTaskImagesBase64> insTaskImagesBase64s = insTaskImagesService.findByOrderNo(insOrders.getOrderno());
+        if (insTaskImagesBase64s.isEmpty()) {
+            throw new SystemException("请检查影像是否上传了");
+        }
+        // 封装文件订单
+        List<UploadImageInfoListRequest.ItemFileDataListDTO> itemFileDataListDTOS = new ArrayList<>();
+
+        for (InsTaskImagesBase64 insTaskImagesBase64 : insTaskImagesBase64s) {
+            UploadFileRequest uploadImageRequest = new UploadFileRequest(insTaskImagesBase64);
+            // 文件上传
+            UploadFileResponse uploadFileResponse = zijinRequestApiComponents.uploadFile(uploadImageRequest);
+            // 文件信息与订单关联 itemFileDataList
+            UploadImageInfoListRequest.ItemFileDataListDTO itemFileDataListDTO = new UploadImageInfoListRequest.ItemFileDataListDTO(uploadImageRequest, uploadFileResponse.getFileId());
+            itemFileDataListDTOS.add(itemFileDataListDTO);
+        }
+
+        // 文件信息与订单关联
+        UploadImageInfoListRequest uploadImageInfoListRequest = new UploadImageInfoListRequest(itemFileDataListDTOS, insAreaCompany.getInsOrderNo());
+        BaseResponse baseResponse = zijinRequestApiComponents.uploadImageInfoList(uploadImageInfoListRequest);
+
+        return HttpResult.ok(baseResponse.getRtnMsg());
+    }
+
+    @Override
+    public HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(policyPrintVo.getCompanyId());
+        if (!InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())) {
+            throw new SystemException("此订单还未承包");
+        }
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+        // 车主信息
+        JSONObject ownerInfo = insOrders.getOwnerinfo();
+        CustomerInfoVo customerInfoVo = ownerInfo.toJavaObject(CustomerInfoVo.class);
+        String busNo;
+        String busType;
+        String identifyNo = customerInfoVo.getIdentifyNumber();
+        if (InsuranceRisk.TRAFFIC.getCode().equals(policyPrintVo.getRiskCode())) {
+            busNo = insAreaCompany.getJqpolicyno();
+            if ("1".equals(policyPrintVo.getType())) {
+                busType = "2";
+            } else {
+                busType = "1";
+            }
+        } else {
+            busNo = insAreaCompany.getSypolicyno();
+            busType = "3";
+        }
+        String url = zijinRequestApiComponents.getDownLoadDocumentUrl(busNo, busType, identifyNo);
+        return HttpResult.ok("生成成功", url);
+    }
+
+    public QuoteRespVo getQuoteRespVo(CalculatePremiumResponse calculatePremiumResponse, BaseQuoteInfoVo yaQuoteInfoVo) {
+        double jqPremium = 0;
+        double syPremium = 0;
+        double sumPayTax = 0;
+        List<CalculatePremiumResponse.PlanListDTO> planList = calculatePremiumResponse.getPlanList();
+        QuoteRespVo quoteRespVo = new QuoteRespVo();
+        quoteRespVo.setCompanyId(quoteRespVo.getCompanyId());
+
+        for (CalculatePremiumResponse.PlanListDTO planListDTO : planList) {
+            switch (planListDTO.getRiskCode()) {
+                case "0590":
+                    jqPremium = Double.parseDouble(planListDTO.getPlanFee());
+                    break;
+                case "050A":
+                    syPremium = Double.parseDouble(planListDTO.getPlanFee());
+                    break;
+                case "CSTax":
+                    sumPayTax = Double.parseDouble(planListDTO.getPlanFee()); //车船税;
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        List<QuoteKindRespVo> kindList1 = new ArrayList<>();
+        List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
+        // 主险信息
+        List<QuoteRiskRespVo> riskList1 = QuoteRiskRespVo.toQuoteRiskRespVoList(riskList, jqPremium, syPremium);
+
+        QuoteKindRespVo kind;
+
+        List<CalculatePremiumResponse.ItemKindListDTO> itemKindList = calculatePremiumResponse.getItemKindList();
+
+        List<KindInfoVo> kindList = yaQuoteInfoVo.getKindList();
+        for (KindInfoVo kindInfoVo : kindList) {
+            kind = new QuoteKindRespVo();
+            kind.setKindCode(kindInfoVo.getKindCode());
+            kind.setKindName(kindInfoVo.getKindName());
+            kind.setAmount(kindInfoVo.getAmount());
+            int i = ArrayUtil.indexOf(InsuranceTypeCorrespondence.getJinZhangGuiType(), kindInfoVo.getKindCode());
+
+            CalculatePremiumResponse.ItemKindListDTO itemKindListDTO = itemKindList.stream().filter(
+                            a -> a.getKindCode().equals(InsuranceTypeCorrespondence.getZmConnectInsuranceType()[i]))
+                    .collect(Collectors.toList()).get(0);
+
+            kind.setCoveragePremium(Double.parseDouble(itemKindListDTO.getBasePremium()));
+            kind.setUnitAmount(kindInfoVo.getUnitAmount());
+            if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {
+                kind.setDeductibleRate(Double.parseDouble(kindInfoVo.getDeductibleRate()));
+            }
+            kindList1.add(kind);
+        }
+
+        quoteRespVo.setRiskList(riskList1);
+        quoteRespVo.setKindList(kindList1);
+        quoteRespVo.setJqPremium(jqPremium);
+        quoteRespVo.setSyPremium(syPremium);
+        quoteRespVo.setCiSumPermium(CalculateUtils.add(jqPremium, sumPayTax));//交强险和车船税合计
+        quoteRespVo.setSumPermium(CalculateUtils.add(jqPremium, syPremium, sumPayTax));//保费合计
+        quoteRespVo.setTotalAdjustRate(0);
+//        String zmScore = quotedPriceResponse.getPlatMain().getZmScore();
+//        quoteRespVo.setILogPreUdwMess(zmScore);//评分
+        quoteRespVo.setOrderno(yaQuoteInfoVo.getOrderNo()); //订单号
+        return quoteRespVo;
+    }
+
+    public HttpResult<QuoteRespVo> responseOrder(CalculatePremiumResponse calculatePremiumResponse, QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
+        //保存订单信息
+        InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
+        // 协议id
+        insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(calculatePremiumResponse)));
+        insAreaCompany.setOrderstatus(InsOrderStatus.S_0.getCode());
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+        return HttpResult.ok("", quoteRespVo);
+    }
+
+}

+ 7 - 13
src/main/java/com/ydtech/modules/order/utils/AESUtilsWithDataBase.java

@@ -3,16 +3,9 @@ package com.ydtech.modules.order.utils;
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 import java.net.URLDecoder;
-public class AESUtilsWithDataBase {
-
 
-    public static void main(String[] args) throws Exception {
-        String json ="{\"head\":{\"transCode\":\"ModelsQuery\",\"transType\":\"Req\",\"token\":\"THIRDSCOuloft2020052818346904zmCCSC\",\"source\":\"323\"},\"modelName\":\"东风DXK6470AS1F多用途乘用车\",\"brand\":\"东风\",\"modelCode\":\"\"}";
+public class AESUtilsWithDataBase {
 
-        String encrypt = encryptECBPK5Hex(json);
-        System.out.println("加密后:"+encrypt);
-        System.out.println("解密后:"+ decryptECBPK5Hex(encrypt));
-    }
 
     private static final String ECB_PKCS5_PADDING = "AES/ECB/PKCS5Padding";
 
@@ -22,13 +15,14 @@ public class AESUtilsWithDataBase {
 
     // 秘钥
     private static final String sessionKey = "1237891234567589";
+
     /**
      * AES 加密操作  ECBPK5Hex
      *
      * @param content 待加密内容
      * @return 返回Base64转码后的加密数据
      */
-    public static String encryptECBPK5Hex(String content)  {
+    public static String encryptECBPK5Hex(String content) {
         byte[] result = null;
         if (content == null || "".equals(content)) {
             return content;
@@ -44,7 +38,7 @@ public class AESUtilsWithDataBase {
              * 3. 补码方式(包含nopadding/PKCS5Padding等等)
              * 依据这三个参数可以创建很多种加密方式
              */
-            synchronized(Cipher.class) {
+            synchronized (Cipher.class) {
                 Cipher cipher = Cipher.getInstance(ECB_PKCS5_PADDING);//"AES/ECB/PKCS5Padding";
                 cipher.init(Cipher.ENCRYPT_MODE, skeySpec);// 初始化为加密模式的密码器
                 result = cipher.doFinal(byteContent);// 加密
@@ -77,12 +71,12 @@ public class AESUtilsWithDataBase {
                 result = cipher.doFinal(hexToByte(content));
             }
             returnStr = new String(result, CODE_TYPE);
-        }catch (Exception ex) {
+        } catch (Exception ex) {
         }
         return returnStr;
     }
 
-    public static String byteToHex(byte[] bytes){
+    public static String byteToHex(byte[] bytes) {
         String strHex = "";
         StringBuilder sb = new StringBuilder("");
         for (int n = 0; n < bytes.length; n++) {
@@ -101,7 +95,7 @@ public class AESUtilsWithDataBase {
             m = i * 2 + 1;
             n = m + 1;
             int intVal = Integer.decode("0x" + hex.substring(i * 2, m) + hex.substring(m, n));
-            ret[i] = Byte.valueOf((byte)intVal);
+            ret[i] = (byte) intVal;
         }
         return ret;
     }

+ 105 - 0
src/main/java/com/ydtech/modules/order/utils/InsuranceTimeProcessing.java

@@ -0,0 +1,105 @@
+package com.ydtech.modules.order.utils;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @description: 投保时间处理
+ * @author: wenks
+ * @date: 2023/8/10 8:36
+ **/
+public class InsuranceTimeProcessing {
+
+    public static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+    private InsuranceTimeProcessing() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static UntimelyInsurancePeriod untimely(String startDate) {
+        LocalDate localDate = LocalDate.parse(startDate, formatter);
+        LocalDate nextYears = localDate.plusYears(1);
+        LocalDate expiry = nextYears.minusDays(1);
+        return new UntimelyInsurancePeriod(localDate.toString(), expiry.toString());
+    }
+
+    public static TimelyInsurancePeriod timely(String startDate) {
+        LocalDateTime parse = LocalDateTime.parse(startDate, formatter);
+        String format = parse.plusYears(1).format(formatter);
+        return new TimelyInsurancePeriod(parse.toString(), format);
+    }
+
+    /**
+     * 获取日期 yyyy-MM-dd
+     *
+     * @param dateTime 格式 yyyy-MM-dd HH:mm:ss
+     * @return yyyy-MM-dd
+     */
+    public static String getDate(String dateTime) {
+        return dateTime.substring(0, 10);
+    }
+
+
+    /**
+     * 获取小时
+     *
+     * @param dateTime 格式 yyyy-MM-dd HH:mm:ss
+     * @return HH
+     */
+    public static String getHour(String dateTime) {
+        return dateTime.substring(11, 13);
+    }
+
+    /**
+     * 获取分钟
+     *
+     * @param dateTime 格式 yyyy-MM-dd HH:mm:ss
+     * @return mm
+     */
+    public static String getMinute(String dateTime) {
+        return dateTime.substring(14, 16);
+    }
+
+    @AllArgsConstructor
+    @Data
+    public static class UntimelyInsurancePeriod {
+
+        private String startDate;
+
+        private String endDate;
+
+    }
+
+    @AllArgsConstructor
+    @Data
+    public static class TimelyInsurancePeriod {
+
+        private String startDate;
+
+        private String startHour;
+
+        private String startMinute;
+
+        private String endDate;
+
+        private String endHour;
+
+        private String endMinute;
+
+        public TimelyInsurancePeriod(String startDateTime, String endDateTime) {
+            this.startDate = getDate(startDateTime);
+            this.startHour = getHour(startDateTime);
+            this.startMinute = getMinute(startDateTime);
+            this.endDate = getDate(endDateTime);
+            this.endHour = getHour(startDateTime);
+            this.endMinute = getMinute(endDateTime);
+        }
+    }
+
+
+}

+ 10 - 3
src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java

@@ -4,17 +4,15 @@ package com.ydtech.modules.protocol.controller;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.modules.order.service.InsCrawlerOrderService;
-import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementAuditVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementQueryVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
-import com.ydtech.modules.protocol.utils.AssertionUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -27,6 +25,9 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 public class PtlAgreementController extends BaseController {
 
+    @Value("${agreement.shutdown}")
+    private boolean shutdown;
+
     private final PtlAgreementService ptlAgreementService;
 
 
@@ -73,4 +74,10 @@ public class PtlAgreementController extends BaseController {
         return ptlAgreementService.auditAgreement(agreementId, ptlAgreementAuditVo);
     }
 
+    @GetMapping("/shutdown")
+    @ApiOperation("关闭")
+    public HttpResult<Boolean> shutdown() {
+        return HttpResult.ok("", shutdown);
+    }
+
 }

+ 35 - 0
src/main/java/com/ydtech/modules/protocol/controller/PtlAreaLicenseController.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.protocol.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "地区车牌")
+@RequestMapping("/plt/areaLicense")
+@RestController
+public class PtlAreaLicenseController {
+
+    private final PtlAreaLicenseService ptlAreaLicenseService;
+
+    public PtlAreaLicenseController(PtlAreaLicenseService ptlAreaLicenseService) {
+        this.ptlAreaLicenseService = ptlAreaLicenseService;
+    }
+
+    @GetMapping("/getAreaLicense")
+    @ApiOperation("查询地区车牌")
+    public HttpResult<List<PtlAreaLicense>> getAreaLicense(@RequestParam(required = false) String parentNumber) {
+        List<PtlAreaLicense> ptlAreaLicenses = ptlAreaLicenseService.getByParentNumber(parentNumber);
+        return HttpResult.ok(ptlAreaLicenses);
+    }
+
+
+}

+ 63 - 0
src/main/java/com/ydtech/modules/protocol/controller/PtlNonCarInsuranceProductController.java

@@ -0,0 +1,63 @@
+package com.ydtech.modules.protocol.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductPageVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductSaveVo;
+import com.ydtech.modules.protocol.service.PtlNonCarInsuranceProductService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Api(tags = "非车险 产品管理")
+@RestController
+@RequestMapping("/ptl/nonCar/product")
+public class PtlNonCarInsuranceProductController {
+
+    private final PtlNonCarInsuranceProductService ptlNonCarInsuranceProductService;
+
+    public PtlNonCarInsuranceProductController(PtlNonCarInsuranceProductService ptlNonCarInsuranceProductService) {
+        this.ptlNonCarInsuranceProductService = ptlNonCarInsuranceProductService;
+    }
+
+    @PostMapping("/page")
+    @ApiOperation("分页查询协议")
+    public HttpResult<PageResult<PtlNonCarInsuranceProduct>> page(@RequestBody PtlNonCarInsuranceProductPageVo ptlNonCarInsuranceProductPageVo) {
+        return ptlNonCarInsuranceProductService.pageNonCarInsuranceProduct(ptlNonCarInsuranceProductPageVo);
+    }
+
+    @PostMapping
+    @ApiOperation("添加非车险产品")
+    public HttpResult<Object> save(@RequestBody PtlNonCarInsuranceProductSaveVo nonCarInsuranceProduct) {
+        return ptlNonCarInsuranceProductService.saveNonCarInsuranceProduct(nonCarInsuranceProduct);
+    }
+
+    @PutMapping("/{productId}")
+    @ApiOperation("修改非车险产品")
+    public HttpResult<Object> revise(@PathVariable String productId, @RequestBody PtlNonCarInsuranceProductSaveVo nonCarInsuranceProduct) {
+        return ptlNonCarInsuranceProductService.reviseNonCarInsuranceProduct(productId, nonCarInsuranceProduct);
+    }
+
+    @GetMapping("/{productId}")
+    @ApiOperation("通过非车险产品id查询所有信息")
+    public HttpResult<PtlNonCarInsuranceProduct> getByAgreementId(@PathVariable String productId) {
+        return HttpResult.ok(ptlNonCarInsuranceProductService.getByProductId(productId));
+    }
+
+    @DeleteMapping("/{productId}")
+    @ApiOperation("删除非车险产品")
+    public HttpResult<Object> delete(@PathVariable String productId) {
+        return ptlNonCarInsuranceProductService.deleteByProductId(productId);
+    }
+
+    @GetMapping("/getByCompanyId/{companyId}")
+    @ApiOperation("通过保险公司编号查询非车险")
+    public HttpResult<List<PtlNonCarInsuranceProduct>> getByCompanyId(@PathVariable String companyId) {
+        return ptlNonCarInsuranceProductService.getByCompanyId(companyId);
+    }
+
+}

+ 0 - 36
src/main/java/com/ydtech/modules/protocol/controller/PtlProductController.java

@@ -1,36 +0,0 @@
-package com.ydtech.modules.protocol.controller;
-
-
-import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.modules.protocol.entity.vo.PtlProductVo;
-import com.ydtech.modules.protocol.service.PtlProductService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "产品管理")
-@RestController
-@RequestMapping("/ptl/product")
-public class PtlProductController extends BaseController {
-
-    private final PtlProductService ptlProductService;
-
-
-    public PtlProductController(PtlProductService ptlProductService) {
-        this.ptlProductService = ptlProductService;
-    }
-
-    @GetMapping("/getCodeAndName")
-    @ApiOperation("获取编号和名称")
-    public HttpResult<List<PtlProductVo>> getCodeAndName() {
-        return ptlProductService.getCodeAndName();
-    }
-
-}
-
-

+ 18 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementNonCarProductCostsMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.protocol.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementNonCarProductCosts;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_agreement_non_car_product_costs(协议非车险产品费用)】的数据库操作Mapper
+ * @createDate 2023-08-15 15:01:26
+ * @Entity generator.domain.PtlAgreementNonCarProductCosts
+ */
+public interface PtlAgreementNonCarProductCostsMapper extends BaseMapper<PtlAgreementNonCarProductCosts> {
+
+}
+
+
+
+

+ 0 - 1
src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementProductCostsMapper.java

@@ -11,7 +11,6 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
  * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts
  */
 public interface PtlAgreementProductCostsMapper extends BaseMapper<PtlAgreementProductCosts> {
-
 }
 
 

+ 17 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlAreaLicenseMapper.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.protocol.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_area_license】的数据库操作Mapper
+ * @createDate 2023-08-15 18:26:58
+ * @Entity generator.domain.PtlAreaLicense
+ */
+public interface PtlAreaLicenseMapper extends BaseMapper<PtlAreaLicense> {
+}
+
+
+
+

+ 18 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlNonCarInsuranceProductMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.protocol.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_non_car_insurance_product(非车产品)】的数据库操作Mapper
+ * @createDate 2023-08-11 15:50:20
+ * @Entity generator.domain.PtlNonCarInsuranceProduct
+ */
+public interface PtlNonCarInsuranceProductMapper extends BaseMapper<PtlNonCarInsuranceProduct> {
+
+}
+
+
+
+

+ 0 - 9
src/main/java/com/ydtech/modules/protocol/dao/PtlProductMapper.java

@@ -1,9 +0,0 @@
-package com.ydtech.modules.protocol.dao;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ydtech.modules.protocol.entity.po.PtlProduct;
-
-
-public interface PtlProductMapper extends BaseMapper<PtlProduct> {
-
-}

+ 0 - 33
src/main/java/com/ydtech/modules/protocol/entity/dto/PltAgreementSchemeQueryDto.java

@@ -1,33 +0,0 @@
-package com.ydtech.modules.protocol.entity.dto;
-
-import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-@Data
-@ApiModel("产品费用方案")
-@NoArgsConstructor
-@AllArgsConstructor
-public class PltAgreementSchemeQueryDto {
-
-    @ApiModelProperty("产品id")
-    private String productId;
-
-    @ApiModelProperty("产品名称")
-    private String name;
-
-    @ApiModelProperty("方案")
-    private List<PtlAgreementProductCostsQueryDto> productCosts;
-
-    public PltAgreementSchemeQueryDto(List<PtlAgreementProductCosts> productCostsList) {
-        PtlAgreementProductCosts ptlAgreementProductCosts = productCostsList.get(0);
-        this.productId = ptlAgreementProductCosts.getProductId();
-        this.name = ptlAgreementProductCosts.getProductName();
-        this.productCosts = PtlAgreementProductCostsQueryDto.toPtlAgreementProductCostsSaveDto(productCostsList);
-    }
-}

+ 14 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PltAgreementSchemeSaveDto.java

@@ -1,13 +1,19 @@
 package com.ydtech.modules.protocol.entity.dto;
 
 
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.List;
 
+
+@NoArgsConstructor
+@AllArgsConstructor
 @Data
 @ApiModel("产品费用方案")
 public class PltAgreementSchemeSaveDto implements Serializable {
@@ -23,4 +29,12 @@ public class PltAgreementSchemeSaveDto implements Serializable {
     @ApiModelProperty("方案")
     private List<PtlAgreementProductCostsSaveDto> productCosts;
 
+
+    public PltAgreementSchemeSaveDto(List<PtlAgreementProductCosts> productCostsList) {
+        PtlAgreementProductCosts ptlAgreementProductCosts = productCostsList.get(0);
+        this.productId = ptlAgreementProductCosts.getProductId();
+        this.name = ptlAgreementProductCosts.getProductName();
+        this.productCosts = PtlAgreementProductCostsSaveDto.toPtlAgreementProductCostsSaveDto(productCostsList);
+    }
+
 }

+ 6 - 2
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementCostsFactorSaveDto.java

@@ -11,8 +11,13 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+/**
+ * @description: 承保规则 拒保因子
+ * @author: wenks
+ * @date: 2023/8/11 14:30
+ **/
 @Data
-@ApiModel("费用因子")
+@ApiModel("因子")
 public class PtlAgreementCostsFactorSaveDto {
 
     @ApiModelProperty("因子类型")
@@ -21,7 +26,6 @@ public class PtlAgreementCostsFactorSaveDto {
     @ApiModelProperty("费用因子")
     private List<Map<String, PtlFactorDto>> factor;
 
-
     /**
      * jsonArray 转 Map<String, PtlFactorDto>  过滤 无用数据
      *

+ 0 - 52
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsBaseDto.java

@@ -1,52 +0,0 @@
-package com.ydtech.modules.protocol.entity.dto;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class PtlAgreementProductCostsBaseDto implements Serializable {
-
-    private static final long serialVersionUID = -5498885293330192384L;
-
-    @ApiModelProperty("费用描述")
-    private String costsDescription;
-
-    @ApiModelProperty("费用比例")
-    private String costsProportion;
-
-    @ApiModelProperty("费用级别")
-    private String costsLevel;
-
-    @ApiModelProperty("费用起期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private LocalDateTime costsStartDate;
-
-    @ApiModelProperty("费用止期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private LocalDateTime costsEndDate;
-
-    @ApiModelProperty("溢出保费")
-    private String spilloverPremiums;
-
-    @ApiModelProperty("溢出比例")
-    private String spilloverProportion;
-
-    public PtlAgreementProductCostsBaseDto(PtlAgreementProductCosts ptlAgreementProductCostsSave) {
-        this.costsDescription = ptlAgreementProductCostsSave.getCostsDescription();
-        this.costsProportion = ptlAgreementProductCostsSave.getCostsProportion();
-        this.costsLevel = ptlAgreementProductCostsSave.getCostsLevel();
-        this.costsStartDate = ptlAgreementProductCostsSave.getCostsStartDate();
-        this.costsEndDate = ptlAgreementProductCostsSave.getCostsEndDate();
-        this.spilloverPremiums = ptlAgreementProductCostsSave.getSpilloverPremiums();
-        this.spilloverProportion = ptlAgreementProductCostsSave.getSpilloverProportion();
-    }
-}

+ 0 - 32
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsQueryDto.java

@@ -1,32 +0,0 @@
-package com.ydtech.modules.protocol.entity.dto;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class PtlAgreementProductCostsQueryDto extends PtlAgreementProductCostsBaseDto {
-
-    @ApiModelProperty("费用")
-    private JSONArray factor;
-
-    private static final long serialVersionUID = 4477089467778369001L;
-
-    public static List<PtlAgreementProductCostsQueryDto> toPtlAgreementProductCostsSaveDto(List<PtlAgreementProductCosts> ptlAgreementProductCostsSave) {
-        return ptlAgreementProductCostsSave.stream().map(PtlAgreementProductCostsQueryDto::new)
-                .collect(Collectors.toList());
-    }
-
-    public PtlAgreementProductCostsQueryDto(PtlAgreementProductCosts ptlAgreementProductCostsSave) {
-        super(ptlAgreementProductCostsSave);
-        this.factor = JSON.parseArray(ptlAgreementProductCostsSave.getCostsFactor());
-    }
-
-}

+ 175 - 8
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsSaveDto.java

@@ -1,30 +1,197 @@
 package com.ydtech.modules.protocol.entity.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 
-@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
 @Data
 @ApiModel("协议费用Dto")
-public class PtlAgreementProductCostsSaveDto extends PtlAgreementProductCostsBaseDto {
+public class PtlAgreementProductCostsSaveDto implements Serializable {
 
     private static final long serialVersionUID = 6664608977040180685L;
 
-    @ApiModelProperty("费用")
-    private List<PtlAgreementCostsFactorSaveDto> factor;
+    @ApiModelProperty("费用描述(交强)")
+    private String jqCostsDescription;
+
+    @ApiModelProperty("费用起期(交强)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime jqCostsStartDate;
+
+    @ApiModelProperty("费用止期(交强)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime jqCostsEndDate;
+
+    @ApiModelProperty("溢出保费(交强)")
+    private String jqSpilloverPremiums;
+
+    @ApiModelProperty("溢出比例(交强)")
+    private String jqSpilloverProportion;
+
+    @ApiModelProperty("新车费用比例(交强)")
+    private String jqNewCarCostsProportion;
+
+    @ApiModelProperty("旧车费用比例(交强)")
+    private String jqOldCarCostsProportion;
+
+    @ApiModelProperty("总费用比例(交强)")
+    private String jqCostsProportion;
+
+    @ApiModelProperty("费用级别(交强)")
+    private String jqCostsLevel;
+
+    @ApiModelProperty("新车其他费用比例(交强)")
+    private String jqNewCarOtherCostsProportion;
+
+    @ApiModelProperty("旧车其他费用比例(交强)")
+    private String jqOldCarOtherCostsProportion;
+
+    @ApiModelProperty("费用起期(商业)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime syCostsStartDate;
+
+    @ApiModelProperty("费用止期(商业)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime syCostsEndDate;
+
+    @ApiModelProperty("溢出保费(商业)")
+    private String sySpilloverPremiums;
+
+    @ApiModelProperty("溢出比例(商业)")
+    private String sySpilloverProportion;
+
+    @ApiModelProperty("新车费用比例(商业)")
+    private String syNewCarCostsProportion;
+
+    @ApiModelProperty("旧车费用比例(商业)")
+    private String syOldCarCostsProportion;
+
+    @ApiModelProperty("总费用比例(商业)")
+    private String syCostsProportion;
+
+    @ApiModelProperty("费用级别(商业)")
+    private String syCostsLevel;
+
+    @ApiModelProperty("新车其他费用比例(商业)")
+    private String syNewCarOtherCostsProportion;
+
+    @ApiModelProperty("旧车其他费用比例(商业)")
+    private String syOldCarOtherCostsProportion;
+
+    @ApiModelProperty("过户车(0 否 1 是 )")
+    private Integer transfer;
+
+    @ApiModelProperty("新旧车(0 否 1 是 )")
+    private Integer oldAndNew;
+
+    @ApiModelProperty("新能源(0 否 1 是 )")
+    private Integer newEnergy;
+
+    @ApiModelProperty("续保车(0 否 1 是 )")
+    private Integer renewal;
+
+    @ApiModelProperty("车辆大类")
+    private String vehicleCategory;
+
+    @ApiModelProperty("使用性质")
+    private String natureOfUse;
+
+    @ApiModelProperty("客车座位数(最小)")
+    private Integer minSeats;
+
+    @ApiModelProperty("客车座位数(最大)")
+    private Integer maxSeats;
+
+    @ApiModelProperty("货车吨位数(最小)")
+    private Integer minTruckTonnage;
+
+    @ApiModelProperty("货车吨位数(最大)")
+    private Integer maxTruckTonnage;
+
+    @ApiModelProperty("新车购置价(最小)")
+    private Integer minPurchasePrice;
+
+    @ApiModelProperty("新车购置价(最大)")
+    private Integer maxPurchasePrice;
+
+    @ApiModelProperty("核定载质量(最小)")
+    private Integer minApprovedLoadCapacity;
+
+    @ApiModelProperty("核定载质量(最大)")
+    private Integer maxApprovedLoadCapacity;
+
+    @ApiModelProperty("交强险保费(最小)")
+    private Integer minCompulsoryInsurancePremium;
+
+    @ApiModelProperty("交强险保费(最大)")
+    private Integer maxCompulsoryInsurancePremium;
+
+    @ApiModelProperty("车船税金额(最小)")
+    private Integer minTaxAmount;
+
+    @ApiModelProperty("车船税金额(最大)")
+    private Integer maxTaxAmount;
+
+    @ApiModelProperty("三者险保额(最小)")
+    private Integer minTheThreePremium;
+
+    @ApiModelProperty("三者险保额(最大)")
+    private Integer maxTheThreePremium;
+
+    @ApiModelProperty("随车产品保费(最小)")
+    private Integer minOnboardProductsPremium;
+
+    @ApiModelProperty("随车产品保费(最大)")
+    private Integer maxOnboardProductsPremium;
+
+    @ApiModelProperty("商业险折扣(最小)")
+    private Integer minCommercialInsuranceDiscount;
+
+    @ApiModelProperty("商业险折扣(最大)")
+    private Integer maxCommercialInsuranceDiscount;
+
+    @ApiModelProperty("交强险折扣(最小)")
+    private Integer minCompulsoryInsuranceDiscount;
+
+    @ApiModelProperty("交强险折扣(最大)")
+    private Integer maxCompulsoryInsuranceDiscount;
+
+    @ApiModelProperty("保司评分(最小)")
+    private Integer minScore;
+
+    @ApiModelProperty("保司评分(最大)")
+    private Integer maxScore;
+
+    @ApiModelProperty("预期赔付率(最小)")
+    private Integer minLossRation;
+
+    @ApiModelProperty("预期赔付率(最大)")
+    private Integer maxLossRation;
+
+    @ApiModelProperty("车牌号")
+    private String licenseNumber;
 
     public static List<PtlAgreementProductCosts> toPtlAgreementProductCosts(String agreementId, List<PltAgreementSchemeSaveDto> scheme) {
-        return scheme.stream().map(x -> PtlAgreementProductCosts.toPtlAgreementProductCostsList(agreementId, x.getProductId(), x.getName(), x.getProductCosts()))
-                .flatMap(Collection::stream)
-                .collect(Collectors.toList());
+        return scheme.stream().map(x -> PtlAgreementProductCosts.toPtlAgreementProductCostsList(agreementId, x.getProductId(), x.getName(), x.getProductCosts())).flatMap(Collection::stream).collect(Collectors.toList());
     }
 
+    public static List<PtlAgreementProductCostsSaveDto> toPtlAgreementProductCostsSaveDto(List<PtlAgreementProductCosts> productCosts) {
+        return productCosts.stream().map(PtlAgreementProductCostsSaveDto::new).collect(Collectors.toList());
+    }
 
+    public PtlAgreementProductCostsSaveDto(PtlAgreementProductCosts ptlAgreementProductCosts) {
+        BeanUtils.copyProperties(ptlAgreementProductCosts, this);
+    }
 }

+ 0 - 1
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementUnderwritingRulesSaveDto.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.protocol.entity.dto;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementUnderwritingRules;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 0 - 1
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.StringUtils;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;

+ 83 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementNonCarProductCosts.java

@@ -0,0 +1,83 @@
+package com.ydtech.modules.protocol.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.ydtech.modules.protocol.entity.vo.PtlAgreementNonCarProductCostsSaveVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 协议非车险产品费用
+ *
+ * @TableName ptl_agreement_non_car_product_costs
+ */
+@TableName(value = "ptl_agreement_non_car_product_costs")
+@Data
+public class PtlAgreementNonCarProductCosts implements Serializable {
+    /**
+     * 主键/自增
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 协议id
+     */
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    /**
+     * 产品id
+     */
+    @TableField(value = "product_id")
+    private String productId;
+
+    /**
+     * 产品名称
+     */
+    @TableField(value = "product_name")
+    private String productName;
+
+    /**
+     * 费用描述
+     */
+    @TableField(value = "costs_description")
+    private String costsDescription;
+
+    /**
+     * 费用起期
+     */
+    @TableField(value = "costs_start_date")
+    private LocalDateTime costsStartDate;
+
+    /**
+     * 费用止期
+     */
+    @TableField(value = "costs_end_date")
+    private LocalDateTime costsEndDate;
+
+    /**
+     * 总费用比例
+     */
+    @TableField(value = "costs_proportion")
+    private String costsProportion;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    public PtlAgreementNonCarProductCosts(String agreementId, PtlAgreementNonCarProductCostsSaveVo nonCarProductCostsSaveVo) {
+        this.agreementId = agreementId;
+        this.productId = nonCarProductCostsSaveVo.getProductId();
+        this.productName = nonCarProductCostsSaveVo.getProductName();
+        this.costsDescription = nonCarProductCostsSaveVo.getCostsDescription();
+        this.costsStartDate = nonCarProductCostsSaveVo.getCostsStartDate();
+        this.costsEndDate = nonCarProductCostsSaveVo.getCostsEndDate();
+        this.costsProportion = nonCarProductCostsSaveVo.getCostsProportion();
+
+    }
+
+}

+ 382 - 37
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementProductCosts.java

@@ -1,6 +1,5 @@
 package com.ydtech.modules.protocol.entity.po;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -9,10 +8,13 @@ import com.ydtech.modules.protocol.entity.dto.PtlAgreementProductCostsSaveDto;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -50,56 +52,334 @@ public class PtlAgreementProductCosts implements Serializable {
     private String productName;
 
     /**
-     * 费用因子
+     * 费用描述(交强)
      */
-    @TableField(value = "costs_factor")
-    private String costsFactor;
+    @TableField(value = "jq_costs_description")
+    private String jqCostsDescription;
 
     /**
-     * 费用描述
+     * 费用起期(交强)
      */
-    @TableField(value = "costs_description")
-    private String costsDescription;
+    @TableField(value = "jq_costs_start_date")
+    private LocalDateTime jqCostsStartDate;
 
     /**
-     * 费用比例
+     * 费用止期(交强)
      */
-    @TableField(value = "costs_proportion")
-    private String costsProportion;
+    @TableField(value = "jq_costs_end_date")
+    private LocalDateTime jqCostsEndDate;
 
     /**
-     * 费用级别
+     * 溢出保费(交强)
      */
-    @TableField(value = "costs_level")
-    private String costsLevel;
+    @TableField(value = "jq_spillover_premiums")
+    private String jqSpilloverPremiums;
 
     /**
-     * 费用起期
+     * 溢出比例(交强)
      */
-    @TableField(value = "costs_start_date")
-    private LocalDateTime costsStartDate;
+    @TableField(value = "jq_spillover_proportion")
+    private String jqSpilloverProportion;
 
     /**
-     * 费用止期
+     * 新车费用比例(交强)
      */
-    @TableField(value = "costs_end_date")
-    private LocalDateTime costsEndDate;
+    @TableField(value = "jq_new_car_costs_proportion")
+    private String jqNewCarCostsProportion;
 
     /**
-     * 溢出保费
+     * 旧车费用比例(交强)
      */
-    @TableField(value = "spillover_premiums")
-    private String spilloverPremiums;
+    @TableField(value = "jq_old_car_costs_proportion")
+    private String jqOldCarCostsProportion;
 
     /**
-     * 溢出比例
+     * 总费用比例(交强)
      */
-    @TableField(value = "spillover_proportion")
-    private String spilloverProportion;
+    @TableField(value = "jq_costs_proportion")
+    private String jqCostsProportion;
+
+    /**
+     * 费用级别(交强)
+     */
+    @TableField(value = "jq_costs_level")
+    private String jqCostsLevel;
+
+    /**
+     * 新车其他费用比例(交强)
+     */
+    @TableField(value = "jq_new_car_other_costs_proportion")
+    private String jqNewCarOtherCostsProportion;
+
+    /**
+     * 旧车其他费用比例(交强)
+     */
+    @TableField(value = "jq_old_car_other_costs_proportion")
+    private String jqOldCarOtherCostsProportion;
+
+    /**
+     * 费用起期(商业)
+     */
+    @TableField(value = "sy_costs_start_date")
+    private LocalDateTime syCostsStartDate;
+
+    /**
+     * 费用止期(商业)
+     */
+    @TableField(value = "sy_costs_end_date")
+    private LocalDateTime syCostsEndDate;
+
+    /**
+     * 溢出保费(商业)
+     */
+    @TableField(value = "sy_spillover_premiums")
+    private String sySpilloverPremiums;
+
+    /**
+     * 溢出比例(商业)
+     */
+    @TableField(value = "sy_spillover_proportion")
+    private String sySpilloverProportion;
+
+    /**
+     * 新车费用比例(商业)
+     */
+    @TableField(value = "sy_new_car_costs_proportion")
+    private String syNewCarCostsProportion;
+
+    /**
+     * 旧车费用比例(商业)
+     */
+    @TableField(value = "sy_old_car_costs_proportion")
+    private String syOldCarCostsProportion;
+
+    /**
+     * 总费用比例(商业)
+     */
+    @TableField(value = "sy_costs_proportion")
+    private String syCostsProportion;
+
+    /**
+     * 费用级别(商业)
+     */
+    @TableField(value = "sy_costs_level")
+    private String syCostsLevel;
+
+    /**
+     * 新车其他费用比例(商业)
+     */
+    @TableField(value = "sy_new_car_other_costs_proportion")
+    private String syNewCarOtherCostsProportion;
+
+    /**
+     * 旧车其他费用比例(商业)
+     */
+    @TableField(value = "sy_old_car_other_costs_proportion")
+    private String syOldCarOtherCostsProportion;
+
+    /**
+     * 过户车(0 否 1 是 )
+     */
+    @TableField(value = "transfer")
+    private Integer transfer;
+
+    /**
+     * 新旧车(0 否 1 是 )
+     */
+    @TableField(value = "old_and_new")
+    private Integer oldAndNew;
+
+    /**
+     * 过户车(0 否 1 是 )
+     */
+    @TableField(value = "new_energy")
+    private Integer newEnergy;
+
+    /**
+     * 续保车(0 否 1 是 )
+     */
+    @TableField(value = "renewal")
+    private Integer renewal;
+
+    /**
+     * 车辆大类
+     */
+    @TableField(value = "vehicle_category")
+    private String vehicleCategory;
+
+    /**
+     * 使用性质
+     */
+    @TableField(value = "nature_of_use")
+    private String natureOfUse;
+
+    /**
+     * 客车座位数(最小)
+     */
+    @TableField(value = "min_seats")
+    private Integer minSeats;
+
+    /**
+     * 客车座位数(最大)
+     */
+    @TableField(value = "max_seats")
+    private Integer maxSeats;
+
+    /**
+     * 货车吨位数(最小)
+     */
+    @TableField(value = "min_truck_tonnage")
+    private Integer minTruckTonnage;
+
+    /**
+     * 货车吨位数(最大)
+     */
+    @TableField(value = "max_truck_tonnage")
+    private Integer maxTruckTonnage;
+
+    /**
+     * 新车购置价(最小)
+     */
+    @TableField(value = "min_purchase_price")
+    private Integer minPurchasePrice;
+
+    /**
+     * 新车购置价(最大)
+     */
+    @TableField(value = "max_purchase_price")
+    private Integer maxPurchasePrice;
+
+    /**
+     * 核定载质量(最小)
+     */
+    @TableField(value = "min_approved_load_capacity")
+    private Integer minApprovedLoadCapacity;
+
+    /**
+     * 核定载质量(最大)
+     */
+    @TableField(value = "max_approved_load_capacity")
+    private Integer maxApprovedLoadCapacity;
+
+    /**
+     * 交强险保费(最小)
+     */
+    @TableField(value = "min_compulsory_insurance_premium")
+    private Integer minCompulsoryInsurancePremium;
+
+    /**
+     * 交强险保费(最大)
+     */
+    @TableField(value = "max_compulsory_insurance_premium")
+    private Integer maxCompulsoryInsurancePremium;
+
+    /**
+     * 车船税金额(最小)
+     */
+    @TableField(value = "min_tax_amount")
+    private Integer minTaxAmount;
+
+    /**
+     * 车船税金额(最大)
+     */
+    @TableField(value = "max_tax_amount")
+    private Integer maxTaxAmount;
+
+    /**
+     * 三者险保额(最小)
+     */
+    @TableField(value = "min_the_three_premium")
+    private Integer minTheThreePremium;
+
+    /**
+     * 三者险保额(最大)
+     */
+    @TableField(value = "max_the_three_premium")
+    private Integer maxTheThreePremium;
+
+    /**
+     * 随车产品保费(最小)
+     */
+    @TableField(value = "min_onboard_products_premium")
+    private Integer minOnboardProductsPremium;
+
+    /**
+     * 随车产品保费(最大)
+     */
+    @TableField(value = "max_onboard_products_premium")
+    private Integer maxOnboardProductsPremium;
+
+    /**
+     * 商业险折扣(最小)
+     */
+    @TableField(value = "min_commercial_insurance_discount")
+    private Integer minCommercialInsuranceDiscount;
+
+    /**
+     * 商业险折扣(最大)
+     */
+    @TableField(value = "max_commercial_insurance_discount")
+    private Integer maxCommercialInsuranceDiscount;
+
+    /**
+     * 交强险折扣(最小)
+     */
+    @TableField(value = "min_compulsory_insurance_discount")
+    private Integer minCompulsoryInsuranceDiscount;
+
+    /**
+     * 交强险折扣(最大)
+     */
+    @TableField(value = "max_compulsory_insurance_discount")
+    private Integer maxCompulsoryInsuranceDiscount;
+
+    /**
+     * 保司评分(最小)
+     */
+    @TableField(value = "min_score")
+    private Integer minScore;
+
+    /**
+     * 保司评分(最大)
+     */
+    @TableField(value = "max_score")
+    private Integer maxScore;
+
+    /**
+     * 预期赔付率(最小)
+     */
+    @TableField(value = "min_loss_ration")
+    private Integer minLossRation;
+
+    /**
+     * 预期赔付率(最大)
+     */
+    @TableField(value = "max_loss_ration")
+    private Integer maxLossRation;
+
+    /**
+     * 车牌号
+     */
+    @TableField(value = "license_number")
+    private String licenseNumber;
+
+    /**
+     * 0 不是 1 是
+     */
+    @TableField(value = "history")
+    private Integer history;
+
+    /**
+     * 成为历史记录的时间
+     */
+    @TableField(value = "history_time")
+    private LocalDateTime historyTime;
+
 
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+
     /**
      * @param agreementId                         协议id
      * @param productId                           产品id
@@ -108,24 +388,89 @@ public class PtlAgreementProductCosts implements Serializable {
      * @return List<PtlAgreementProductCosts>
      */
     public static List<PtlAgreementProductCosts> toPtlAgreementProductCostsList(String agreementId, String productId, String productName, List<PtlAgreementProductCostsSaveDto> ptlAgreementProductCostsSaveDtoList) {
-        return ptlAgreementProductCostsSaveDtoList.stream().map(
-                ptlAgreementProductCostsSaveDto ->
-                        new PtlAgreementProductCosts(agreementId, productId, productName, ptlAgreementProductCostsSaveDto)
-        ).collect(Collectors.toList());
+        return ptlAgreementProductCostsSaveDtoList.stream().map(ptlAgreementProductCostsSaveDto -> new PtlAgreementProductCosts(agreementId, productId, productName, ptlAgreementProductCostsSaveDto)).collect(Collectors.toList());
     }
 
     public PtlAgreementProductCosts(String agreementId, String productId, String productName, PtlAgreementProductCostsSaveDto ptlAgreementProductCostsSaveDto) {
         this.agreementId = agreementId;
         this.productId = productId;
         this.productName = productName;
-        this.costsFactor = JSON.toJSONString(ptlAgreementProductCostsSaveDto.getFactor());
-        this.costsDescription = ptlAgreementProductCostsSaveDto.getCostsDescription();
-        this.costsProportion = ptlAgreementProductCostsSaveDto.getCostsProportion();
-        this.costsLevel = ptlAgreementProductCostsSaveDto.getCostsLevel();
-        this.costsStartDate = ptlAgreementProductCostsSaveDto.getCostsStartDate();
-        this.costsEndDate = ptlAgreementProductCostsSaveDto.getCostsEndDate();
-        this.spilloverPremiums = ptlAgreementProductCostsSaveDto.getSpilloverPremiums();
-        this.spilloverProportion = ptlAgreementProductCostsSaveDto.getSpilloverProportion();
+        BeanUtils.copyProperties(ptlAgreementProductCostsSaveDto, this);
+    }
+
+
+    public static int getObjectHashCode(Object o, int result) {
+        return 31 * result + (o != null ? o.hashCode() : 0);
+    }
+
+    public int getHashCode() {
+        int result = 0;
+        result = getObjectHashCode(this.agreementId, result);
+        result = getObjectHashCode(this.productId, result);
+        result = getObjectHashCode(this.productName, result);
+        result = getObjectHashCode(this.jqCostsDescription, result);
+        result = getObjectHashCode(this.jqCostsStartDate, result);
+        result = getObjectHashCode(this.jqCostsEndDate, result);
+        result = getObjectHashCode(this.jqSpilloverPremiums, result);
+        result = getObjectHashCode(this.jqSpilloverProportion, result);
+        result = getObjectHashCode(this.jqNewCarCostsProportion, result);
+        result = getObjectHashCode(this.jqOldCarCostsProportion, result);
+        result = getObjectHashCode(this.jqCostsProportion, result);
+        result = getObjectHashCode(this.jqCostsLevel, result);
+        result = getObjectHashCode(this.jqNewCarOtherCostsProportion, result);
+        result = getObjectHashCode(this.jqOldCarOtherCostsProportion, result);
+        result = getObjectHashCode(this.syCostsStartDate, result);
+        result = getObjectHashCode(this.syCostsEndDate, result);
+        result = getObjectHashCode(this.sySpilloverPremiums, result);
+        result = getObjectHashCode(this.sySpilloverProportion, result);
+        result = getObjectHashCode(this.syNewCarCostsProportion, result);
+        result = getObjectHashCode(this.syOldCarCostsProportion, result);
+        result = getObjectHashCode(this.syCostsProportion, result);
+        result = getObjectHashCode(this.syCostsLevel, result);
+        result = getObjectHashCode(this.syNewCarOtherCostsProportion, result);
+        result = getObjectHashCode(this.syOldCarOtherCostsProportion, result);
+        result = getObjectHashCode(this.transfer, result);
+        result = getObjectHashCode(this.oldAndNew, result);
+        result = getObjectHashCode(this.newEnergy, result);
+        result = getObjectHashCode(this.renewal, result);
+        result = getObjectHashCode(this.vehicleCategory, result);
+        result = getObjectHashCode(this.natureOfUse, result);
+        result = getObjectHashCode(this.minSeats, result);
+        result = getObjectHashCode(this.maxSeats, result);
+        result = getObjectHashCode(this.minTruckTonnage, result);
+        result = getObjectHashCode(this.maxTruckTonnage, result);
+        result = getObjectHashCode(this.minPurchasePrice, result);
+        result = getObjectHashCode(this.maxPurchasePrice, result);
+        result = getObjectHashCode(this.minApprovedLoadCapacity, result);
+        result = getObjectHashCode(this.maxApprovedLoadCapacity, result);
+        result = getObjectHashCode(this.minCompulsoryInsurancePremium, result);
+        result = getObjectHashCode(this.maxCompulsoryInsurancePremium, result);
+        result = getObjectHashCode(this.minTaxAmount, result);
+        result = getObjectHashCode(this.maxTaxAmount, result);
+        result = getObjectHashCode(this.minTheThreePremium, result);
+        result = getObjectHashCode(this.maxTheThreePremium, result);
+        result = getObjectHashCode(this.minOnboardProductsPremium, result);
+        result = getObjectHashCode(this.maxOnboardProductsPremium, result);
+        result = getObjectHashCode(this.minCommercialInsuranceDiscount, result);
+        result = getObjectHashCode(this.maxCommercialInsuranceDiscount, result);
+        result = getObjectHashCode(this.minCompulsoryInsuranceDiscount, result);
+        result = getObjectHashCode(this.maxCompulsoryInsuranceDiscount, result);
+        result = getObjectHashCode(this.minScore, result);
+        result = getObjectHashCode(this.maxScore, result);
+        result = getObjectHashCode(this.minLossRation, result);
+        result = getObjectHashCode(this.maxLossRation, result);
+        result = getObjectHashCode(this.licenseNumber, result);
+        return result;
+    }
+
+
+    public static Map<Integer, PtlAgreementProductCosts> getIntegerMap(List<PtlAgreementProductCosts> ptlAgreementProductCosts) {
+        Map<Integer, PtlAgreementProductCosts> map = new HashMap<>();
+        ptlAgreementProductCosts.forEach(x -> {
+            int hashCode = x.getHashCode();
+            map.put(hashCode, x);
+        });
+        return map;
     }
 
 }

+ 96 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAreaLicense.java

@@ -0,0 +1,96 @@
+package com.ydtech.modules.protocol.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 lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @TableName ptl_area_license
+ */
+@TableName(value = "ptl_area_license")
+@Data
+public class PtlAreaLicense implements Serializable {
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 车牌
+     */
+    @TableField(value = "license")
+    private String license;
+
+    /**
+     * 地区编号
+     */
+    @TableField(value = "area_number")
+    private String areaNumber;
+
+    /**
+     * 地区名称
+     */
+    @TableField(value = "area_name")
+    private String areaName;
+
+    /**
+     * 父级id
+     */
+    @TableField(value = "parent_number")
+    private String parentNumber;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        PtlAreaLicense other = (PtlAreaLicense) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+                && (this.getLicense() == null ? other.getLicense() == null : this.getLicense().equals(other.getLicense()))
+                && (this.getAreaNumber() == null ? other.getAreaNumber() == null : this.getAreaNumber().equals(other.getAreaNumber()))
+                && (this.getAreaName() == null ? other.getAreaName() == null : this.getAreaName().equals(other.getAreaName()))
+                && (this.getParentNumber() == null ? other.getParentNumber() == null : this.getParentNumber().equals(other.getParentNumber()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getLicense() == null) ? 0 : getLicense().hashCode());
+        result = prime * result + ((getAreaNumber() == null) ? 0 : getAreaNumber().hashCode());
+        result = prime * result + ((getAreaName() == null) ? 0 : getAreaName().hashCode());
+        result = prime * result + ((getParentNumber() == null) ? 0 : getParentNumber().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", license=").append(license);
+        sb.append(", areaNumber=").append(areaNumber);
+        sb.append(", areaName=").append(areaName);
+        sb.append(", parentNumber=").append(parentNumber);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 1 - 1
src/main/java/com/ydtech/modules/protocol/entity/po/PtlCrawlerApi.java

@@ -58,7 +58,7 @@ public class PtlCrawlerApi implements Serializable {
     private static final long serialVersionUID = 1L;
 
 
-    public static List<PtlCrawlerApi> toPtlCrawlerApiList(String  templateId, List<PtlCrawlerApiSaveVo> ptlCrawlerApiSaveVoList) {
+    public static List<PtlCrawlerApi> toPtlCrawlerApiList(String templateId, List<PtlCrawlerApiSaveVo> ptlCrawlerApiSaveVoList) {
         return ptlCrawlerApiSaveVoList.stream().map(a -> new PtlCrawlerApi(templateId, a)).collect(Collectors.toList());
     }
 

+ 72 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlNonCarInsuranceProduct.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.protocol.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 lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 非车产品
+ *
+ * @TableName ptl_non_car_insurance_product
+ */
+@Data
+@TableName(value = "ptl_non_car_insurance_product")
+public class PtlNonCarInsuranceProduct implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 产品代码
+     */
+    @TableField(value = "product_code")
+    private String productCode;
+
+    /**
+     * 产品名称
+     */
+    @TableField(value = "product_name")
+    private String productName;
+
+    /**
+     * 归属保司
+     */
+    @TableField(value = "company_id")
+    private String companyId;
+
+    /**
+     * 是否有效(0有效 1 无效)
+     */
+    @TableField(value = "is_effective")
+    private String isEffective;
+
+    /**
+     * 归属险类
+     */
+
+    @TableField(value = "insurance_code")
+    private String insuranceCode;
+
+    /**
+     * 保司代码(保险公司非车产品代码)
+     */
+    @TableField(value = "non_car_insurance_code")
+    private String nonCarInsuranceCode;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "remark")
+    private String remark;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 0 - 76
src/main/java/com/ydtech/modules/protocol/entity/po/PtlProduct.java

@@ -1,76 +0,0 @@
-package com.ydtech.modules.protocol.entity.po;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-@TableName(value = "esm_product")
-public class PtlProduct implements Serializable {
-
-    private static final long serialVersionUID = 4994740158025000549L;
-
-    /**
-     * 编号
-     */
-    private String id;
-
-    /**
-     * 名称
-     */
-    private String name;
-
-    /**
-     * 父编号
-     */
-    private String parentId;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 排序
-     */
-    private Integer orderNum;
-
-    /**
-     * 创建人
-     */
-    private String createBy;
-
-    /**
-     * 创建时间
-     */
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    /**
-     * 更新人
-     */
-    private String lastUpdateBy;
-
-    /**
-     * 更新时间
-     */
-    @JsonFormat(locale = "zm", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date lastUpdateTime;
-
-    /**
-     * 是否删除 -1: 已删除   0:正常
-     */
-    private Integer delFlag;
-
-    /**
-     * 是否启用  0:启用  1:不启用
-     */
-    private Integer isvalid;
-
-}
-
-
-

+ 45 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementNonCarProductCostsSaveVo.java

@@ -0,0 +1,45 @@
+package com.ydtech.modules.protocol.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementNonCarProductCosts;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@ApiModel("非车险费用")
+@Data
+public class PtlAgreementNonCarProductCostsSaveVo implements Serializable {
+
+    private static final long serialVersionUID = 2193985211902459722L;
+
+
+    @ApiModelProperty("产品id")
+    private String productId;
+
+    @ApiModelProperty("产品名称")
+    private String productName;
+
+    @ApiModelProperty("费用描述")
+    private String costsDescription;
+
+    @ApiModelProperty("费用起期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime costsStartDate;
+
+    @ApiModelProperty("费用止期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime costsEndDate;
+
+    @ApiModelProperty("总费用比例")
+    private String costsProportion;
+
+    public static List<PtlAgreementNonCarProductCosts> toPtlAgreementNonCarProductCosts(String agreementId, List<PtlAgreementNonCarProductCostsSaveVo> nonCarProductCosts) {
+        return nonCarProductCosts.stream().map(x -> new PtlAgreementNonCarProductCosts(agreementId, x)).collect(Collectors.toList());
+    }
+}

+ 6 - 6
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementQueryVo.java

@@ -1,10 +1,7 @@
 package com.ydtech.modules.protocol.entity.vo;
 
-import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeQueryDto;
-import com.ydtech.modules.protocol.entity.po.PtlAgreement;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementDept;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementUnderwritingRules;
+import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeSaveDto;
+import com.ydtech.modules.protocol.entity.po.*;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -21,7 +18,10 @@ public class PtlAgreementQueryVo {
     private PtlAgreement agreement;
 
     @ApiModelProperty("产品方案")
-    private List<PltAgreementSchemeQueryDto> scheme;
+    private List<PltAgreementSchemeSaveDto> scheme;
+
+    @ApiModelProperty
+    private List<PtlAgreementNonCarProductCosts> nonCarProductCosts;
 
     @ApiModelProperty("承包规则")
     private List<PtlAgreementUnderwritingRules> underwritingRules;

+ 3 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementSaveVo.java

@@ -21,6 +21,9 @@ public class PtlAgreementSaveVo {
     @ApiModelProperty("产品方案")
     private List<PltAgreementSchemeSaveDto> scheme;
 
+    @ApiModelProperty("非车险产品")
+    private List<PtlAgreementNonCarProductCostsSaveVo> nonCarProductCosts;
+
     @ApiModelProperty("承包规则")
     private List<PtlAgreementUnderwritingRulesSaveDto> underwritingRules;
 

+ 13 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductPageVo.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.protocol.entity.vo;
+
+import com.ydtech.core.page.BasePageVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PtlNonCarInsuranceProductPageVo extends BasePageVO {
+
+    private static final long serialVersionUID = 3554127776347994742L;
+
+}

+ 37 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlNonCarInsuranceProductSaveVo.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.protocol.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 非车产品保存实体
+ * @author: wenks
+ * @date: 2023/8/11 15:58
+ **/
+@Data
+public class PtlNonCarInsuranceProductSaveVo implements Serializable {
+
+    private static final long serialVersionUID = -8486743099182982780L;
+
+    @ApiModelProperty("产品名称")
+    private String productName;
+
+    @ApiModelProperty("归属保司")
+    private String companyId;
+
+    @ApiModelProperty("是否有效(0有效 1 无效)")
+    private String isEffective;
+
+    @ApiModelProperty("归属险类")
+    private String insuranceCode;
+
+    @ApiModelProperty("保司代码(保险公司非车产品代码)")
+    private String nonCarInsuranceCode;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 0 - 31
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlProductVo.java

@@ -1,31 +0,0 @@
-package com.ydtech.modules.protocol.entity.vo;
-
-import com.ydtech.modules.protocol.entity.po.PtlProduct;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@ApiModel("产品")
-@Data
-@AllArgsConstructor
-public class PtlProductVo {
-
-    @ApiModelProperty("编号")
-    private String id;
-
-    @ApiModelProperty("名称")
-    private String name;
-
-    public static List<PtlProductVo> toPtlProductVoList(List<PtlProduct> esProducts) {
-        return esProducts.stream().map(PtlProductVo::toPtlProductVo).collect(Collectors.toList());
-    }
-
-    public static PtlProductVo toPtlProductVo(PtlProduct esProducts) {
-        return new PtlProductVo(esProducts.getId(), esProducts.getName());
-    }
-
-}

+ 3 - 3
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementAttributionService.java

@@ -18,9 +18,9 @@ public interface PtlAgreementAttributionService extends IService<PtlAgreementAtt
     /**
      * 添加协议归属信息
      *
-     * @param agreementId        协议id
-     * @param insuranceCompanyId 保险公司id
-     * @param attribution        协议归属信息
+     * @param agreementId   协议id
+     * @param esmInsCompany 保险公司实体
+     * @param attribution   协议归属信息
      */
     void saveAttribution(String agreementId, EsmInsCompany esmInsCompany, PtlAgreementAttributionDto attribution);
 

+ 40 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementNonCarProductCostsService.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementNonCarProductCosts;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementNonCarProductCostsSaveVo;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_agreement_non_car_product_costs(协议非车险产品费用)】的数据库操作Service
+ * @createDate 2023-08-15 15:01:26
+ */
+public interface PtlAgreementNonCarProductCostsService extends IService<PtlAgreementNonCarProductCosts> {
+
+    /**
+     * 批量提添加非车险产品费用
+     *
+     * @param agreementId        协议id
+     * @param nonCarProductCosts 非车险产品
+     */
+    void saveBatchNonCarProductCosts(String agreementId, List<PtlAgreementNonCarProductCostsSaveVo> nonCarProductCosts);
+
+    /**
+     * 根据协议id删除非车险产品费用
+     *
+     * @param agreementId 协议id
+     */
+    void deleteByAgreementId(String agreementId);
+
+    /**
+     * 通过协议id获取非车险产品
+     *
+     * @param agreementId 协议id
+     * @return PtlAgreementNonCarProductCosts
+     */
+    List<PtlAgreementNonCarProductCosts> getByAgreementId(String agreementId);
+
+
+}

+ 15 - 2
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementProductCostsService.java

@@ -1,7 +1,7 @@
 package com.ydtech.modules.protocol.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeQueryDto;
 import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeSaveDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 
@@ -26,7 +26,7 @@ public interface PtlAgreementProductCostsService extends IService<PtlAgreementPr
      *
      * @param agreementId 协议id
      */
-    List<PltAgreementSchemeQueryDto> getByAgreementId(String agreementId);
+    List<PltAgreementSchemeSaveDto> getByAgreementId(String agreementId);
 
     /**
      * 批量提添加产品费用
@@ -44,4 +44,17 @@ public interface PtlAgreementProductCostsService extends IService<PtlAgreementPr
      */
     List<PtlAgreementProductCosts> selectByCompanyId(String companyId, List<String> filedList);
 
+    /**
+     * 通过 协议id 构造查询条件
+     *
+     * @param agreementId 协议id
+     * @return LambdaQueryWrapper<PtlAgreementProductCosts>
+     */
+    default LambdaQueryWrapper<PtlAgreementProductCosts> getByAgreementIdWrapper(String agreementId) {
+        LambdaQueryWrapper<PtlAgreementProductCosts> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreementProductCosts::getAgreementId, agreementId);
+        wrapper.eq(PtlAgreementProductCosts::getHistory, 0);
+        return wrapper;
+    }
+
 }

+ 9 - 3
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java

@@ -90,12 +90,17 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
     void saveAssociationInformation(String agreementId, EsmInsCompany insuranceCompanyId, PtlAgreementSaveVo agreement);
 
     /**
-     * 删除关联信息  产品费用 承保规则 账号信息 授权部门
+     * 删除关联信息  产品费用 删除非车险产品费用 承保规则 账号信息 授权部门
      *
      * @param agreementId 协议id
      */
     void deleteAssociationInformation(String agreementId);
 
+    /**
+     * 删除关联信息 删除非车险产品费用  承保规则 账号信息 授权部门
+     */
+    void deleteAssociationInformationExcludeCosts(String agreementId);
+
     /**
      * 审核协议
      *
@@ -107,9 +112,10 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 校验登录
-     * @param ptlAgreement 协议信息
+     *
+     * @param ptlAgreement     协议信息
      * @param agreementSaveDto 协议添加实体
-     * @param attribution 协议归属添加实体
+     * @param attribution      协议归属添加实体
      */
     EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto, PtlAgreementAttributionDto attribution);
 

+ 23 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlAreaLicenseService.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_area_license】的数据库操作Service
+ * @createDate 2023-08-15 18:26:58
+ */
+public interface PtlAreaLicenseService extends IService<PtlAreaLicense> {
+
+    /**
+     * 通过父级编号查询地区车牌
+     *
+     * @param parentNumber 父级编号
+     * @return PtlAreaLicense
+     */
+    List<PtlAreaLicense> getByParentNumber(String parentNumber);
+
+}

+ 4 - 4
src/main/java/com/ydtech/modules/protocol/service/PtlCrawlerApiService.java

@@ -18,7 +18,7 @@ public interface PtlCrawlerApiService extends IService<PtlCrawlerApi> {
      *
      * @param agreementId       协议id
      * @param ptlCrawlerApiType 请求的业务类型
-     * @return
+     * @return String
      */
     String getApiUrl(String agreementId, PtlCrawlerApiType ptlCrawlerApiType);
 
@@ -27,7 +27,7 @@ public interface PtlCrawlerApiService extends IService<PtlCrawlerApi> {
      *
      * @param templateId        模版id
      * @param ptlCrawlerApiType 业务类型
-     * @return
+     * @return String
      */
     String getByTemplateId(String templateId, PtlCrawlerApiType ptlCrawlerApiType);
 
@@ -35,8 +35,8 @@ public interface PtlCrawlerApiService extends IService<PtlCrawlerApi> {
     /**
      * 通过模版id获取请求
      *
-     * @param templateId        模版id
-     * @return
+     * @param templateId 模版id
+     * @return PtlCrawlerApi
      */
     List<PtlCrawlerApi> getByTemplateIdList(String templateId);
 

+ 73 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlNonCarInsuranceProductService.java

@@ -0,0 +1,73 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductPageVo;
+import com.ydtech.modules.protocol.entity.vo.PtlNonCarInsuranceProductSaveVo;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_non_car_insurance_product(非车产品)】的数据库操作Service
+ * @createDate 2023-08-11 15:50:20
+ */
+public interface PtlNonCarInsuranceProductService extends IService<PtlNonCarInsuranceProduct> {
+
+    /**
+     * 添加非车产品
+     *
+     * @param nonCarInsuranceProduct 非车产品保存实体
+     * @return HttpResult
+     */
+    HttpResult<Object> saveNonCarInsuranceProduct(PtlNonCarInsuranceProductSaveVo nonCarInsuranceProduct);
+
+    /**
+     * 修改非车险产品
+     *
+     * @param productId              非车产品id
+     * @param nonCarInsuranceProduct 非车产品保存实体
+     * @return HttpResult
+     */
+    HttpResult<Object> reviseNonCarInsuranceProduct(String productId, PtlNonCarInsuranceProductSaveVo nonCarInsuranceProduct);
+
+    /**
+     * 通过非车险产品id查询所有信息
+     *
+     * @param productId 非车产品id
+     * @return PtlNonCarInsuranceProduct
+     */
+    default PtlNonCarInsuranceProduct getByProductId(String productId) {
+        PtlNonCarInsuranceProduct nonCarInsuranceProduct = getById(productId);
+        AssertionUtils.isEmpty(nonCarInsuranceProduct, "没有此非车产品");
+        return nonCarInsuranceProduct;
+    }
+
+    /**
+     * 删除非车险产品
+     *
+     * @param productId 非车产品id
+     * @return HttpResult
+     */
+    HttpResult<Object> deleteByProductId(String productId);
+
+    /**
+     * 分页查询
+     *
+     * @param ptlNonCarInsuranceProductPageVo 非车险产品查询实体
+     * @return HttpResult<PageResult < PtlNonCarInsuranceProduct>>
+     */
+    HttpResult<PageResult<PtlNonCarInsuranceProduct>> pageNonCarInsuranceProduct(PtlNonCarInsuranceProductPageVo ptlNonCarInsuranceProductPageVo);
+
+    /**
+     * 通过保险公司编号查询非车险
+     *
+     * @param companyId 保险公司编号
+     * @return List<PtlNonCarInsuranceProduct>
+     */
+    HttpResult<List<PtlNonCarInsuranceProduct>> getByCompanyId(String companyId);
+
+}

+ 0 - 19
src/main/java/com/ydtech/modules/protocol/service/PtlProductService.java

@@ -1,19 +0,0 @@
-package com.ydtech.modules.protocol.service;
-
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.protocol.entity.po.PtlProduct;
-import com.ydtech.modules.protocol.entity.vo.PtlProductVo;
-
-import java.util.List;
-
-public interface PtlProductService extends IService<PtlProduct> {
-
-
-    HttpResult<List<PtlProductVo>> getCodeAndName();
-
-}
-
-
-

+ 0 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementAttributionServiceImpl.java

@@ -3,7 +3,6 @@ package com.ydtech.modules.protocol.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.protocol.dao.PtlAgreementAttributionMapper;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;

+ 54 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementNonCarProductCostsServiceImpl.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.protocol.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.dao.PtlAgreementNonCarProductCostsMapper;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementNonCarProductCosts;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementNonCarProductCostsSaveVo;
+import com.ydtech.modules.protocol.service.PtlAgreementNonCarProductCostsService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【ptl_agreement_non_car_product_costs(协议非车险产品费用)】的数据库操作Service实现
+ * @createDate 2023-08-15 15:01:26
+ */
+@Service
+public class PtlAgreementNonCarProductCostsServiceImpl extends ServiceImpl<PtlAgreementNonCarProductCostsMapper, PtlAgreementNonCarProductCosts>
+        implements PtlAgreementNonCarProductCostsService {
+
+
+    @Override
+    @Transactional
+    public void saveBatchNonCarProductCosts(String agreementId, List<PtlAgreementNonCarProductCostsSaveVo> nonCarProductCosts) {
+        if (nonCarProductCosts != null && !nonCarProductCosts.isEmpty()) {
+            List<PtlAgreementNonCarProductCosts> ptlAgreementNonCarProductCostsList = PtlAgreementNonCarProductCostsSaveVo.toPtlAgreementNonCarProductCosts(agreementId, nonCarProductCosts);
+            boolean b = saveBatch(ptlAgreementNonCarProductCostsList);
+            AssertionUtils.isSucceed(b, "批量添加非车险产品费用失败");
+        }
+    }
+
+    @Override
+    public void deleteByAgreementId(String agreementId) {
+        LambdaQueryWrapper<PtlAgreementNonCarProductCosts> costsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        costsLambdaQueryWrapper.eq(PtlAgreementNonCarProductCosts::getAgreementId, agreementId);
+        baseMapper.delete(costsLambdaQueryWrapper);
+    }
+
+    @Override
+    public List<PtlAgreementNonCarProductCosts> getByAgreementId(String agreementId) {
+        LambdaQueryWrapper<PtlAgreementNonCarProductCosts> costsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        costsLambdaQueryWrapper.eq(PtlAgreementNonCarProductCosts::getAgreementId, agreementId);
+        return list(costsLambdaQueryWrapper);
+    }
+
+
+}
+
+
+
+

+ 38 - 21
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementProductCostsServiceImpl.java

@@ -1,10 +1,8 @@
 package com.ydtech.modules.protocol.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.protocol.dao.PtlAgreementProductCostsMapper;
-import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeQueryDto;
 import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeSaveDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementProductCostsSaveDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
@@ -13,9 +11,13 @@ import com.ydtech.modules.protocol.service.PtlAgreementProductCostsService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -35,56 +37,71 @@ public class PtlAgreementProductCostsServiceImpl extends ServiceImpl<PtlAgreemen
 
     @Override
     public void deleteByAgreementId(String agreementId) {
-        LambdaQueryWrapper<PtlAgreementProductCosts> costsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        costsLambdaQueryWrapper.eq(PtlAgreementProductCosts::getAgreementId, agreementId);
-        baseMapper.delete(costsLambdaQueryWrapper);
+        baseMapper.delete(getByAgreementIdWrapper(agreementId));
     }
 
     @Override
-    public List<PltAgreementSchemeQueryDto> getByAgreementId(String agreementId) {
-        LambdaQueryWrapper<PtlAgreementProductCosts> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(PtlAgreementProductCosts::getAgreementId, agreementId);
-        List<PtlAgreementProductCosts> ptlAgreementProductCosts = baseMapper.selectList(wrapper);
+    public List<PltAgreementSchemeSaveDto> getByAgreementId(String agreementId) {
+        List<PtlAgreementProductCosts> ptlAgreementProductCosts = baseMapper.selectList(getByAgreementIdWrapper(agreementId));
         List<String> productIdList = ptlAgreementProductCosts.stream()
                 .map(PtlAgreementProductCosts::getProductId).distinct().collect(Collectors.toList());
 
-        List<PltAgreementSchemeQueryDto> productCostsSave = new ArrayList<>();
+        List<PltAgreementSchemeSaveDto> productCostsSave = new ArrayList<>();
         productIdList.forEach(productId -> {
                     List<PtlAgreementProductCosts> productCostsList = ptlAgreementProductCosts.stream().filter(x -> x.getProductId().equals(productId)).collect(Collectors.toList());
-                    PltAgreementSchemeQueryDto pltAgreementSchemeQueryDto = new PltAgreementSchemeQueryDto(productCostsList);
+                    PltAgreementSchemeSaveDto pltAgreementSchemeQueryDto = new PltAgreementSchemeSaveDto(productCostsList);
                     productCostsSave.add(pltAgreementSchemeQueryDto);
                 }
         );
         return productCostsSave;
     }
 
-
     @Override
     @Transactional
     public void saveBatchProductCosts(String agreementId, List<PltAgreementSchemeSaveDto> scheme) {
         if (scheme != null && !scheme.isEmpty()) {
+            List<PtlAgreementProductCosts> list = list(getByAgreementIdWrapper(agreementId));
+
             List<PtlAgreementProductCosts> ptlAgreementProductCostsList = PtlAgreementProductCostsSaveDto.toPtlAgreementProductCosts(agreementId, scheme);
-            boolean b = saveBatch(ptlAgreementProductCostsList);
-            AssertionUtils.isSucceed(b, "批量添加产品费用失败");
+            // 修改历史时间
+            if (!ptlAgreementProductCostsList.isEmpty()) {
+                Map<Integer, PtlAgreementProductCosts> map = PtlAgreementProductCosts.getIntegerMap(ptlAgreementProductCostsList);
+                LocalDateTime now = LocalDateTime.now();
+                //
+                List<PtlAgreementProductCosts> ptlAgreementProductCosts = list.stream()
+                        .filter(x -> ObjectUtils.isEmpty(map.get(x.getHashCode())))
+                        .map(x -> {
+                            x.setHistory(1);
+                            x.setHistoryTime(now);
+                            return x;
+                        })
+                        .collect(Collectors.toList());
+                updateBatchById(ptlAgreementProductCosts);
+
+                Map<Integer, PtlAgreementProductCosts> map1 = PtlAgreementProductCosts.getIntegerMap(list);
+                List<PtlAgreementProductCosts> agreementProductCosts = ptlAgreementProductCostsList.stream()
+                        .filter(x -> ObjectUtils.isEmpty(map1.get(x.getHashCode())))
+                        .collect(Collectors.toList());
+                saveBatch(agreementProductCosts);
+
+            } else {
+                boolean b = saveBatch(ptlAgreementProductCostsList);
+                AssertionUtils.isSucceed(b, "批量添加产品费用失败");
+            }
         }
-
     }
 
 
     @Override
     public List<PtlAgreementProductCosts> selectByCompanyId(String companyId, List<String> filedList) {
         String agreementId = ptlAgreementAttributionService.selectByCompanyId(companyId, filedList);
-        LambdaQueryWrapper<PtlAgreementProductCosts> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(PtlAgreementProductCosts::getAgreementId, agreementId);
-        List<PtlAgreementProductCosts> ptlAgreementProductCosts = baseMapper.selectList(wrapper);
+        List<PtlAgreementProductCosts> ptlAgreementProductCosts = baseMapper.selectList(getByAgreementIdWrapper(agreementId));
         if (ptlAgreementProductCosts.isEmpty()) {
             throw new SystemException("未查询到费用配置");
         }
         return ptlAgreementProductCosts;
     }
 
-}
-
-
 
 
+}

+ 24 - 12
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -13,10 +13,7 @@ import com.ydtech.modules.order.service.InsCrawlerOrderService;
 import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import com.ydtech.modules.protocol.entity.dto.*;
-import com.ydtech.modules.protocol.entity.po.PtlAgreement;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementDept;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementUnderwritingRules;
+import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementAuditVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementQueryVo;
@@ -59,12 +56,15 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     private PtlAgreementService proxyObject;
 
-    public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService, PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService, PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService, EsmInsCompanyService esmInsCompanyService) {
+    private final PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService;
+
+    public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService, PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService, PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService, EsmInsCompanyService esmInsCompanyService, PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService) {
         this.ptlAgreementProductCostsService = ptlAgreementProductCostsService;
         this.ptlAgreementUnderwritingRulesService = ptlAgreementUnderwritingRulesService;
         this.ptlAgreementAttributionService = ptlAgreementAttributionService;
         this.ptlAgreementDeptService = ptlAgreementDeptService;
         this.esmInsCompanyService = esmInsCompanyService;
+        this.ptlAgreementNonCarProductCostsService = ptlAgreementNonCarProductCostsService;
     }
 
     @Autowired
@@ -118,7 +118,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreement.setCreator(userName);
         ptlAgreement.setCreateTime(LocalDateTime.now());
         save(ptlAgreement);
-        // 产品费用
+        // 提交 产品费用 承保规则 账号信息 授权部门
         proxyObject.saveAssociationInformation(ptlAgreement.getId(), esmInsCompany, agreement);
         return HttpResult.ok("添加成功");
     }
@@ -148,14 +148,16 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
         PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
         // 获取产品费用
-        List<PltAgreementSchemeQueryDto> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(agreementId);
+        List<PltAgreementSchemeSaveDto> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(agreementId);
+        // 获取非车险产品费用
+        List<PtlAgreementNonCarProductCosts> nonCarProductCosts = ptlAgreementNonCarProductCostsService.getByAgreementId(agreementId);
         // 获取承保规则
         List<PtlAgreementUnderwritingRules> underwritingRules = ptlAgreementUnderwritingRulesService.getByAgreementId(agreementId);
         //  账号信息查询
         PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
         // 授权查询
         List<PtlAgreementDept> deptList = ptlAgreementDeptService.getByAgreementId(agreementId);
-        PtlAgreementQueryVo ptlAgreementQueryVo = new PtlAgreementQueryVo(ptlAgreement, schemeQueryDto, underwritingRules, ptlAgreementAttribution, deptList);
+        PtlAgreementQueryVo ptlAgreementQueryVo = new PtlAgreementQueryVo(ptlAgreement, schemeQueryDto, nonCarProductCosts, underwritingRules, ptlAgreementAttribution, deptList);
         return HttpResult.ok(ptlAgreementQueryVo);
     }
 
@@ -186,21 +188,23 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         boolean b = updateById(ptlAgreement);
         AssertionUtils.isSucceed(b, "协议信息修改失败");
         // 关联表都是先删除后添加
-        proxyObject.deleteAssociationInformation(agreementId);
-
+        proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
+        // 提交 产品费用 承保规则 账号信息 授权部门
         proxyObject.saveAssociationInformation(agreementId, esmInsCompany, agreement);
         return HttpResult.ok("修改成功");
     }
 
     @Override
-    public void saveAssociationInformation(String agreementId,  EsmInsCompany esmInsCompany, PtlAgreementSaveVo agreement) {
+    public void saveAssociationInformation(String agreementId, EsmInsCompany esmInsCompany, PtlAgreementSaveVo agreement) {
         // 产品费用
         ptlAgreementProductCostsService.saveBatchProductCosts(agreementId, agreement.getScheme());
+        // 非车险产品费用
+        ptlAgreementNonCarProductCostsService.saveBatchNonCarProductCosts(agreementId, agreement.getNonCarProductCosts());
         // 承包规则
         ptlAgreementUnderwritingRulesService.saveBatchUnderwritingRules(agreementId, agreement.getUnderwritingRules());
         // 账号添加
         PtlAgreementAttributionDto attribution = agreement.getAttribution();
-        if(StringUtils.isNotEmpty(attribution.getTemplateId())){
+        if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
             ptlAgreementAttributionService.saveAttribution(agreementId, esmInsCompany, agreement.getAttribution());
         }
         // 部门授权
@@ -212,6 +216,14 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     public void deleteAssociationInformation(String agreementId) {
         // 删除产品费用
         ptlAgreementProductCostsService.deleteByAgreementId(agreementId);
+        // 删除关联信息 删除非车险产品费用  承保规则 账号信息 授权部门
+        proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
+    }
+
+    @Override
+    public void deleteAssociationInformationExcludeCosts(String agreementId) {
+        // 删除非车险产品费用
+        ptlAgreementNonCarProductCostsService.deleteByAgreementId(agreementId);
         // 删除承保规则
         ptlAgreementUnderwritingRulesService.deleteByAgreementId(agreementId);
         // 删除账号信息

+ 1 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementUnderwritingRulesServiceImpl.java

@@ -114,7 +114,7 @@ public class PtlAgreementUnderwritingRulesServiceImpl extends ServiceImpl<PtlAgr
             Integer minValue = ptlFactorDto.getMinValue();
             Integer maxValue = ptlFactorDto.getMaxValue();
             // 参数最大值最小值校验
-            if (!ObjectUtils.isEmpty(minValue) &&!ObjectUtils.isEmpty(maxValue)) {
+            if (!ObjectUtils.isEmpty(minValue) && !ObjectUtils.isEmpty(maxValue)) {
                 if (minValue != 0 || maxValue != 0) {
                     assert o instanceof Integer;
                     AssertionUtils.isSucceed(minValue <= (Integer) o && (Integer) o <= maxValue, String.format("%s 应该在 %d 和 %d 范围内 ", ptlFactorDto.getName(), minValue, maxValue));

Неке датотеке нису приказане због велике количине промена