785834757 1 سال پیش
والد
کامیت
492f4b6214
41فایلهای تغییر یافته به همراه972 افزوده شده و 579 حذف شده
  1. 1 1
      authentication/src/main/java/com/jzg/config/SecurityConfig.java
  2. 24 2
      authentication/src/main/resources/application-dev.yml
  3. 9 5
      authentication/src/main/resources/application.yml
  4. 4 1
      commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java
  5. 9 0
      commons/src/main/java/com/jzg/commons/constants/CompanyConstants.java
  6. 2 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java
  7. 2 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarInfo.java
  8. 2 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarUserInfo.java
  9. 3 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCosts.java
  10. 4 4
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersOther.java
  11. 30 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/TaxInfoVo.java
  12. 6 6
      commons/src/main/java/com/jzg/commons/exception/GlobalExceptionHandler.java
  13. 0 51
      commons/src/main/java/com/jzg/commons/util/SchemaAnnotationUtils.java
  14. 1 2
      commons/src/main/java/com/jzg/commons/util/comparble/CompatibleUtils.java
  15. 1 0
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  16. 4 4
      gateway/src/main/resources/application-test.yml
  17. 21 23
      platform/src/main/resources/application-dev.yml
  18. 2 2
      platform/src/main/resources/application-test.yml
  19. 8 1
      platform/src/main/resources/application.yml
  20. 0 3
      pom.xml
  21. 10 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/ProductsType.java
  22. 68 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteResultsVo.java
  23. 5 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/OrderBase.java
  24. 7 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/RecognitionRequest.java
  25. 7 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/RecognitionResponse.java
  26. 44 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/impl/VerificationCodeIdentification.java
  27. 2 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java
  28. 4 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  29. 49 20
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  30. 9 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java
  31. 7 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarUserInfoService.java
  32. 28 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  33. 59 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java
  34. 42 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarUserInfoServiceImpl.java
  35. 236 264
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  36. 16 0
      tenant/insurance/quotation-summary/src/main/resources/application.yaml
  37. 2 1
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKQuotationBaseServiceImpl.java
  38. 0 23
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/client/SysAreaClient.java
  39. 29 32
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/QuoteRequest.java
  40. 212 62
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java
  41. 3 43
      tenant/organization/src/main/resources/application-dev.yml

+ 1 - 1
authentication/src/main/java/com/jzg/config/SecurityConfig.java

@@ -77,7 +77,7 @@ public class SecurityConfig {
         http.csrf().disable();
         http.authorizeHttpRequests(auth -> auth
                         .requestMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**", "/favicon.ico",
-                                "/auth/login","/auth/captchaById","/auth/register","/sendSmsCode","/appLogin","/smsCodeLogin","/auth/publicKeyExchange","/appAuth/smsCodeLogin").permitAll()
+                                "/auth/login","/auth/captchaById","/auth/register","/sendSmsCode","/appLogin","/smsCodeLogin","/auth/publicKeyExchange","/appAuth/smsCodeLogin","/send/sendSmsCode").permitAll()
                         .anyRequest().authenticated()  // 其他接口需认证
                 )
 //                .formLogin((form) -> form

+ 24 - 2
authentication/src/main/resources/application-dev.yml

@@ -10,10 +10,10 @@ spring:
       password: nacos
       config:
         file-extension: yaml
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
         group: DEFAULT_GROUP
       discovery:
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
   config:
     import:
       - nacos:mysql
@@ -22,3 +22,25 @@ spring:
 config:
   sso: 0
 
+seata:
+  enabled: true
+  application-id: ${spring.application.name}
+  # 事务组的名称,对应service.vgroupMapping.default_tx_group=xxx中配置的default_tx_group
+  tx-service-group: default_tx_group
+  # 配置事务组与集群的对应关系
+  service:
+    vgroup-mapping:
+      # default_tx_group为事务组的名称,default为集群名称(与registry.conf中的一致)
+      default_tx_group: default
+    disable-global-transaction: false
+  registry:
+    type: nacos
+    nacos:
+      application: seata-server
+      server-addr: 192.168.0.250:8848
+      group: SEATA_GROUP
+      namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
+      username: nacos
+      password: nacos
+      # registry.conf中,配置cluster名称
+      cluster: default

+ 9 - 5
authentication/src/main/resources/application.yml

@@ -12,10 +12,14 @@ mybatis-plus:
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
+#tenant:
+#  enable: true
+#  column: system_code
+#  filterTables:
+#  ignoreTables:
+#    - sys_system
+
+
 data-scope:
   tables:
-    - sys_system
-    - sys_user
-    - sys_user_role
-    - sys_organization_user_link
-    - sys_area
+    - sys_organization_user_link

+ 4 - 1
commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java

@@ -77,7 +77,10 @@ import java.util.regex.Pattern;
 
     @Override
     public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) {
-
+        if(!shouldIgnoreTable(table.getName()))
+        {
+            return null;
+        }
         String currentUserDeptId = baseController.getUserDeptId();
         String userDataScope = baseController.getUserDataScope();
         String userSystemCode = baseController.getUserSystemCode();

+ 9 - 0
commons/src/main/java/com/jzg/commons/constants/CompanyConstants.java

@@ -83,4 +83,13 @@ public enum CompanyConstants {
     
     public final String companyCode;
     public final String companyName;
+
+    public static String getCompanyNameByCode(String companyCode) {
+        for (CompanyConstants companyConstant : CompanyConstants.values()) {
+            if (companyConstant.companyCode.equals(companyCode)) {
+                return companyConstant.companyName;
+            }
+        }
+        return null;
+    }
 }

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java

@@ -16,10 +16,10 @@ public class InsOrders extends BaseModel {
 
     @Schema(description = "订单ID")
     @TableId(value = "id", type = IdType.ASSIGN_ID)
-    private Long id;
+    private String id;
 
     @Schema(description = "报价订单号")
-    private Long quoteNo;
+    private String quoteNo;
 
     @Schema(description = "协议ID")
     private String agreementId;

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarInfo.java

@@ -13,10 +13,10 @@ import java.time.LocalDateTime;
 public class InsOrdersCarInfo extends BaseModel {
 
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "是否已上牌")
-    private int isRegistered;
+    private boolean isRegistered;
 
     @Schema(description = "车牌号")
     private String licenseNo;

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarUserInfo.java

@@ -15,10 +15,10 @@ import java.time.LocalDateTime;
 public class InsOrdersCarUserInfo extends BaseModel {
 
     @TableId(type = IdType.ASSIGN_ID)
-    private Long id;
+    private String id;
 
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "保单人员类型 1 车主 2 投保人 3 被保人")
     private Integer policyPersonType;

+ 3 - 2
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCosts.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.orders.po;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.data.annotation.Id;
@@ -10,9 +11,9 @@ import java.math.BigDecimal;
 @Schema(description = "保险订单保费信息")
 public class InsOrdersCosts {
 
-    @Id
+    @TableId
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "交强险保费")
     private BigDecimal jqPremium;

+ 4 - 4
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersOther.java

@@ -11,16 +11,16 @@ import java.math.BigDecimal;
 public class InsOrdersOther {
 
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "总评分")
-    private String scope;
+    private String score;
 
     @Schema(description = "交强评分")
-    private String jqScope;
+    private String jqScore;
 
     @Schema(description = "商业评分")
-    private String syScope;
+    private String syScore;
 
     @Schema(description = "总赔付率")
     private BigDecimal lossRation;

+ 30 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/TaxInfoVo.java

@@ -0,0 +1,30 @@
+package com.jzg.commons.entity.quote.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaxInfoVo {
+
+    /**
+     * 欠税年份
+     */
+    private String years;
+
+    /**
+     * 欠费
+     */
+    private double taxDefault;
+
+    /**
+     * 滞纳金
+     */
+    private double lateFee;
+
+
+
+
+}

+ 6 - 6
commons/src/main/java/com/jzg/commons/exception/GlobalExceptionHandler.java

@@ -79,12 +79,12 @@ public class GlobalExceptionHandler {
      * @param e 异常
      * @return
      */
-    @ExceptionHandler(value = Exception.class)
-    @ResponseBody
-    public HttpResult exceptionGet(Exception e) {
-        LOGGER.error("【系统异常】{}", e);
-        return HttpResult.error(500, "程序异常,请联系管理员");
-    }
+//    @ExceptionHandler(value = Exception.class)
+//    @ResponseBody
+//    public HttpResult exceptionGet(Exception e) {
+//        LOGGER.error("【系统异常】{}", e);
+//        return HttpResult.error(500, "程序异常,请联系管理员");
+//    }
 
 
 }

+ 0 - 51
commons/src/main/java/com/jzg/commons/util/SchemaAnnotationUtils.java

@@ -1,51 +0,0 @@
-package com.jzg.commons.util;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import java.lang.reflect.Field;
-
-public class SchemaAnnotationUtils {
-
-    /**
-     * 获取字段上的 @Schema 注解信息
-     *
-     * @param entity     实体类的 Class 对象
-     * @param fieldName 字段名
-     * @return 字段上的 @Schema 注解,如果不存在则返回 null
-     */
-    public static String getSchemaAnnotation(String entity, String fieldName) {
-        try {
-            Class<?> clazz = getClassByName(entity);
-            // 获取字段
-            Field field = clazz.getDeclaredField(fieldName);
-            // 获取字段上的 @Schema 注解
-            Schema schemaAnnotation = field.getAnnotation(Schema.class);
-            if (schemaAnnotation != null) {
-                return schemaAnnotation.description();
-            } else {
-                System.out.println("No @Schema annotation found for field: " + fieldName);
-            }
-            return null;
-        } catch (NoSuchFieldException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-
-    /**
-     * 通过类名获取 Class 对象
-     *
-     * @param className 类的全限定名(包括包名)
-     * @return 对应的 Class 对象,如果找不到则返回 null
-     */
-    private static Class<?> getClassByName(String className) {
-        try {
-            return Class.forName(className);
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-}

+ 1 - 2
commons/src/main/java/com/jzg/commons/util/comparble/CompatibleUtils.java

@@ -4,7 +4,6 @@ package com.jzg.commons.util.comparble;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.entity.po.OperatorTrajectory;
-import com.jzg.commons.util.SchemaAnnotationUtils;
 import com.jzg.commons.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import java.time.LocalDate;
@@ -80,7 +79,7 @@ public class CompatibleUtils {
 
                 if (StringUtils.isNotEmpty(newValue) && !Objects.equals(oldValue, newValue)) {
                     CompareResult compareResult = new CompareResult();
-                    compareResult.setName(SchemaAnnotationUtils.getSchemaAnnotation(entityName, key));
+//                    compareResult.setName(SchemaAnnotationUtils.getSchemaAnnotation(entityName, key));
                     compareResult.setFieldName(key);
                     compareResult.setFieldContent(newValue);
                     compareResult.setNewFieldContent(oldValue);

+ 1 - 0
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -13,6 +13,7 @@ public class CorsConfig {
     public CorsWebFilter corsWebFilter() {
         CorsConfiguration corsConfiguration = new CorsConfiguration();
         // 允许所有来源,你可以根据需要修改为具体的来源
+        corsConfiguration.addAllowedOrigin("http://localhost:8080");
         corsConfiguration.addAllowedOrigin("http://localhost:9000");
         corsConfiguration.addAllowedOrigin("http://127.0.0.1:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.149:9000");

+ 4 - 4
gateway/src/main/resources/application-test.yml

@@ -16,19 +16,19 @@ spring:
     gateway:
       routes:
         - id: auth_route
-          uri: lb://jzg-auth
+          uri: http://172.24.144.223:9081/
           predicates:
             - Path=/auth/**
 
         - id: platform_route
-          uri: lb://jzg-platform
+          uri: http://172.24.144.223:9083/
           predicates:
             - Path=/userRole/**,/system/**,/file/**,/user/**,/esmInsCompany/**,/jyxConfig/**,/qrBarcode/**,/sysDept/**,/manager/**,
 
         - id: tenant_route
-          uri: lb://jzg-organization
+          uri: http://172.24.144.223:9084/
           predicates:
-            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**,/message/**,/messageNotice/**,,/pltAgreement/**,/agreementRules/**,/poster/**
+            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**,/message/**,/messageNotice/**,,/pltAgreement/**,/agreementRules/**,/poster/**,/agreement/**,/ptl/areaLicense/**,/ptlAgreementCost/**,/scheme/**,/ptlAgreementCostExternal/**,/plt/areaLicense/**
 
 
 

+ 21 - 23
platform/src/main/resources/application-dev.yml

@@ -1,8 +1,6 @@
 server:
   port: 8083
 spring:
-  application:
-    name: jzg-platform
   cloud:
     nacos:
       server-addr: 192.168.0.250:8848
@@ -10,38 +8,38 @@ spring:
       password: nacos
       config:
         file-extension: yaml
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
         group: DEFAULT_GROUP
       discovery:
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
   config:
     import:
       - nacos:mysql
       - nacos:redisson
       - nacos:minio
-  servlet:
-    multipart:
-      max-file-size: 5MB
-      max-request-size: 5MB
+
 
 config:
   sso: 1
 
 
-#seata:
-#  application-id: platform-service
-#  tx-service-group: my_global_tx_group  # 事务服务组
-#  enable-auto-data-source-proxy: true  # 启用数据源代理
-#  service:
-#    vgroup-mapping:
-#      my_global_tx_group: default  # 事务组与 Seata Server 绑定
-#  store:
-#    mode: db  # 存储模式,可以是 db 或 file 等
-#    db:
-#      datasource:
-#        driver-class-name: com.mysql.cj.jdbc.Driver
-#        url: jdbc:mysql://39.98.239.48:3306/seata
-#        username: root
-#        password: '@RqGHG#KZ*C9ytkQ'
+seata:
+  tx:
+    service:
+      grouplist: 192.168.0.250:8091
+  application-id: platform-service
+  tx-service-group: my_global_tx_group  # 事务服务组
+  enable-auto-data-source-proxy: true  # 启用数据源代理
+  service:
+    vgroup-mapping:
+      my_global_tx_group: default  # 事务组与 Seata Server 绑定
+  store:
+    mode: db  # 存储模式,可以是 db 或 file 等
+    db:
+      datasource:
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        url: jdbc:mysql://39.98.239.48:3306/seata
+        username: root
+        password: '@RqGHG#KZ*C9ytkQ'
 
 

+ 2 - 2
platform/src/main/resources/application-test.yml

@@ -8,10 +8,10 @@ spring:
       password: nacos
       config:
         file-extension: yaml
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: bb8f915c-82b0-4f0d-9e9e-03aa629f2d45
         group: DEFAULT_GROUP
       discovery:
-        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
+        namespace: bb8f915c-82b0-4f0d-9e9e-03aa629f2d45
   config:
     import:
       - nacos:mysql

+ 8 - 1
platform/src/main/resources/application.yml

@@ -45,9 +45,11 @@ tenant:
     - ins_company_clause
     - ptl_agreement_attribution
     - ptl_agreement_url
-    - jyx_blame
     - jyx_config
+    - jyx_blame
     - jyx_setting
+    - sys_system_bus_perms_link
+    - sys_system_bus_perms
     - ptl_agreement_attribution_dept
     - operator_trajectory
   ignoreLoginNames:
@@ -65,3 +67,8 @@ data-scope:
     - ptl_agreement_url
     - ptl_ins_attribution_template
     - sys_config
+    - sys_role_perms
+    - sys_role_data_scope
+    - jyx_config
+    - jyx_setting
+    - jyx_blame

+ 0 - 3
pom.xml

@@ -266,9 +266,6 @@
             </goals>
             <configuration>
               <transformers>
-<!--                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">-->
-<!--                  <mainClass>com.example.MainClass</mainClass>-->
-<!--                </transformer>-->
                 <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   <resource>META-INF/spring.handlers</resource>
                 </transformer>

+ 10 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/ProductsType.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.commons.constant.enums.base;
 
+import com.jzg.commons.constants.CompanyConstants;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
@@ -23,5 +24,14 @@ public enum ProductsType {
     // 说明
     private final String desc;
 
+    public static String getProductNameByCode(String code) {
+        for (ProductsType productsType : ProductsType.values()) {
+            if (productsType.code.equals(code)) {
+                return productsType.desc;
+            }
+        }
+        return null;
+    }
+
 
 }

+ 68 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteResultsVo.java

@@ -4,6 +4,7 @@ package com.jzg.quotation.commons.entity.vo.aggregated;
 import com.jzg.commons.entity.quote.vo.ExpenseFactor;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
+import com.jzg.commons.entity.quote.vo.TaxInfoVo;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -41,6 +42,8 @@ public class QuoteResultsVo implements Serializable {
      * 商业险信息
      */
     private List<KindInfoVo> kindInfoVo;
+
+    private List<TaxInfoVo> taxVo;
     /**
      * 费用因子
      */
@@ -69,4 +72,69 @@ public class QuoteResultsVo implements Serializable {
      * 商业投保单号
      */
     private String biPolicyNumber;
+
+    /**
+     * 交强起保日期
+     */
+    private String ciStartDate;
+
+    /**
+     * 交强终保日期
+     */
+    private String ciEndDate;
+
+    /**
+     * 商业起保日期
+     */
+    private String biStartDate;
+
+    /**
+     * 商业终保日期
+     */
+    private String biEndDate;
+
+    /**
+     * 评分
+     */
+    private ScoreVo scoreVo = new ScoreVo();
+
+    /**
+     * 交强出现次数
+     */
+    private String ciClaims;
+
+    /**
+     * 商业出现次数
+     */
+    private String biClaims;
+
+    /**
+     * 警告消息
+     */
+    private List<String> warnMessageList;
+
+    @Data
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class ScoreVo {
+        /**
+         * 总评分
+         */
+        private String score;
+
+        /**
+         * 交强评分
+         */
+        private String jqScore;
+
+        /**
+         * 商业评分
+         */
+        private String syScore;
+
+        /**
+         * 太平绿黄红区间评分
+         */
+        private String tpColorScore;
+    }
 }

+ 5 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/OrderBase.java

@@ -24,6 +24,11 @@ public class OrderBase implements Serializable {
      */
     private String ordersNo;
 
+    /**
+     * 报价号 用于处理影像上传
+     */
+    private String quoteNo;
+
     /**
      * 保险公司代码
      */

+ 7 - 3
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/RecognitionRequest.java → tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/RecognitionRequest.java

@@ -1,13 +1,17 @@
-package com.jzg.quotation.yongcheng.api.entity.request;
+package com.jzg.quotation.commons.entity.vo.image;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.io.Serializable;
 
+
 /**
- * @description: 验证码识别请求
- */
+ * @description: 验证码识别请求参数
+ * @author: wenks
+ * @date: 2023/9/19 18:24
+ **/
+
 @Data
 public class RecognitionRequest implements Serializable {
 

+ 7 - 3
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/response/RecognitionResponse.java → tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/RecognitionResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quotation.yongcheng.api.entity.response;
+package com.jzg.quotation.commons.entity.vo.image;
 
 
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -8,9 +8,13 @@ import lombok.Setter;
 
 import java.io.Serializable;
 
+
 /**
- * 验证码识别响应参数
- */
+ * @description: 验证码识别响应参数
+ * @author: wenks
+ * @date: 2023/9/19 18:23
+ **/
+
 @Data
 public class RecognitionResponse implements Serializable {
 

+ 44 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/impl/VerificationCodeIdentification.java

@@ -0,0 +1,44 @@
+package com.jzg.quotation.commons.service.impl;
+
+
+import com.jzg.quotation.commons.entity.vo.image.RecognitionRequest;
+import com.jzg.quotation.commons.entity.vo.image.RecognitionResponse;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.web.reactive.function.client.WebClient;
+
+
+/**
+ * @description: 验证码识别
+ * @author: wenks
+ * @date: 2023/9/19 18:17
+ **/
+@Component
+public class VerificationCodeIdentification {
+
+//    private final InsCrawlerOrderComponents insCrawlerOrderComponents;
+    @Value("${image.identificationUrl}")
+    private String identificationUrl;
+
+//    public VerificationCodeIdentification(InsCrawlerOrderComponents insCrawlerOrderComponents) {
+//        this.insCrawlerOrderComponents = insCrawlerOrderComponents;
+//    }
+
+    public RecognitionResponse recognition(RecognitionRequest request) {
+        return sendRequest(identificationUrl, request);
+    }
+
+    public RecognitionResponse sendRequest(String identificationUrl, Object request) {
+        WebClient webClient = WebClient.create();
+        return webClient.post()
+                .uri(identificationUrl)
+                .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
+                .bodyValue(request)  // 设置请求体
+                .retrieve()  // 发起请求
+                .bodyToMono(RecognitionResponse.class)  // 解析响应
+                .block();  // 阻塞并等待响应(可以根据需要调整为非阻塞方式)
+    }
+
+}

+ 2 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java

@@ -15,18 +15,14 @@ import org.springframework.data.mongodb.repository.support.SimpleMongoRepository
 
 
 @ComponentScan(basePackages = {"com.jzg"})
-@MapperScan({"com.jzg.**.mapper", "com.jzg.commons.mapper"})
+@MapperScan({"com.jzg.quotation.summary.mapper", "com.jzg.commons.mapper"})
 @SpringBootApplication
 @EnableFeignClients(basePackages = "com.jzg.quotation.commons.client")
 @EnableConfigurationProperties(YcConfigurationProperties.class)
 @EnableMongoRepositories(
-        basePackages = "com.jzg.quotation.*.*.repository",
+        basePackages = "com.jzg.quotation.**.repository",
         repositoryBaseClass = SimpleMongoRepository.class // 强制同步模式
 )
-//@EnableMongoRepositories(
-//        basePackages = {"com.jzg.quotation.**.repository", "com.jzg.quote.**.repository"},
-//        repositoryBaseClass = SimpleMongoRepository.class // 强制同步模式
-//)
 public class SummaryQuotationApplication {
 
     public static void main(String[] args) {

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

@@ -30,14 +30,16 @@ public class InsOrdersController {
     @Operation(summary = "录入订单新增")
     @PostMapping("saveOrders")
     public HttpResult saveOrUpdate(@RequestBody InsOrdersAdd ordersAdd) {
-        return insOrdersService.saveOrders(ordersAdd);
+//        return insOrdersService.saveOrders(ordersAdd);
+        return HttpResult.ok();
     }
 
 
     @Operation(summary = "录入订单修改")
     @PostMapping("updateOrders")
     public HttpResult updateOrders(@RequestBody InsOrdersEnd ordersEnd) {
-        return insOrdersService.updateOrders(ordersEnd);
+//        return insOrdersService.updateOrders(ordersEnd);
+        return HttpResult.ok("修改成功");
     }
 
 

+ 49 - 20
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -1,18 +1,21 @@
 package com.jzg.quotation.summary.controller;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.service.QuotationApiBaseService;
 import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.summary.factory.CompanyFactory;
-import com.jzg.quotation.summary.service.InsOrdersService;
-import com.jzg.quotation.summary.service.SysQuoteConfigService;
-import com.jzg.quotation.summary.service.SysQuoteRedisService;
+import com.jzg.quotation.summary.service.*;
+import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/unify/order")
 @Tag(name = "统一订单报价管理")
@@ -45,29 +50,48 @@ public class UnifyOrderManager {
     @Autowired
     InsOrdersService insOrdersService;
 
+    @Autowired
+    InsOrdersCarInfoService insOrdersCarInfoService;
+
+    @Autowired
+    InsOrdersCarUserInfoService insOrdersCarUserInfoService;
+
     /**
      * 统一报价
      * @param quoteVo
      * @return
      */
+    @Operation(summary = "统一报价")
     @PostMapping("/quote")
     public HttpResult quote(@RequestBody QuoteVo quoteVo) throws JsonProcessingException {
-        //获取保司实体
-        QuotationApiBaseService quoteService = companyFactory.getQuoteService(
-                quoteVo.getOrder().getInsuranceCompanyCode(),
-                sysQuoteConfigService,sysQuoteRedisService,
-                platformClient,
-                baseController);
-        // 生成订单
-
-
-        // 报价
-        QuoteResultsVo quote = quoteService.quote(quoteVo);
-
-        // 报价后更新订单
-
-
-        return HttpResult.ok(quote);
+//        HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(quoteVo.getOrder().getInsuranceCompanyCode(), baseController.getToken());
+//        AssertionUtils.isFail(esmInsCompanyHttpResult.getCode() != 200,esmInsCompanyHttpResult.getMsg());
+//        quoteVo.getOrder().setInsuranceCompanyCode(esmInsCompanyHttpResult.getData().getCompanyCode());
+//        //获取保司实体
+//        QuotationApiBaseService quoteService = companyFactory.getQuoteService(
+//                quoteVo.getOrder().getInsuranceCompanyCode(),
+//                sysQuoteConfigService,sysQuoteRedisService,
+//                platformClient,
+//                baseController);
+//        // 生成订单
+//        String ordersNo = insOrdersService.generateOrders(quoteVo);
+//
+//
+//        // 报价
+//        QuoteResultsVo quoteResultsVo = quoteService.quote(quoteVo);
+//
+//        // 报价后更新订单
+        String ordersNo = "1906540114670559232";
+        String test = "{\"biPremium\":\"0.0\",\"ciEndDate\":\"2026-03-31 23:59:59\",\"ciPremium\":\"570.0\",\"ciRiskInfoVo\":{\"endDate\":\"2026-03-31 23:59:59\",\"instantFlag\":false,\"riskCode\":\"0507\",\"startDate\":\"2025-04-01 00:00:00\"},\"ciStartDate\":\"2025-04-01 00:00:00\",\"kindInfoVo\":[],\"niPremium\":\"0.0\",\"score\":\"单交-G\",\"taxVo\":[{\"lateFee\":0.0,\"taxDefault\":0.0,\"years\":\"2025-12-31 00:00:00\"}],\"vvTax\":\"150.0\",\"warnMessageList\":[]}";
+        QuoteResultsVo quoteResultsVo = JSONObject.parseObject(test, QuoteResultsVo.class);
+
+        insOrdersService.orderAfterUpdateQuote(ordersNo,quoteResultsVo);
+
+        System.out.printf(JSONObject.toJSONString(quoteResultsVo));
+
+
+
+        return HttpResult.ok(quoteResultsVo);
     }
 
     @PostMapping("/underwriting")
@@ -78,7 +102,12 @@ public class UnifyOrderManager {
                 sysQuoteConfigService,sysQuoteRedisService,
                 platformClient,
                 baseController);
-
+        InsOrders insOrders = insOrdersService.getById(underwritingVo.getOrder().getOrdersNo());
+        InsOrdersCarInfo insOrdersCarInfo = insOrdersCarInfoService.getByOrderId(insOrders.getId());
+        List<InsOrdersCarUserInfo> insOrdersCarUserInfos = insOrdersCarUserInfoService.getByOrderId(insOrders.getId());
+        underwritingVo.setInsOrders(insOrders);
+        underwritingVo.setInsOrdersCarInfo(insOrdersCarInfo);
+        underwritingVo.setInsOrdersCarUserInfoList(insOrdersCarUserInfos);
         quoteService.underwriting(underwritingVo);
         return HttpResult.ok();
     }

+ 9 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java

@@ -1,7 +1,16 @@
 package com.jzg.quotation.summary.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
+import com.jzg.commons.entity.quote.vo.CarInfoVo;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 public interface InsOrdersCarInfoService extends IService<InsOrdersCarInfo> {
+    InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter);
+
+    InsOrdersCarInfo getByOrderId(String orderId);
 }

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

@@ -1,10 +1,16 @@
 package com.jzg.quotation.summary.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
+import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
+
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 public interface InsOrdersCarUserInfoService extends IService<InsOrdersCarUserInfo> {
+    InsOrdersCarUserInfo createUserInfo(String orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter,Integer policyPersonType);
 
 
-    void deleteOrderNo(Long orderNo);
+    List<InsOrdersCarUserInfo> getByOrderId(String orderId);
 }

+ 28 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -5,15 +5,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.orders.po.InsOrders;
-import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+
+import java.lang.reflect.InvocationTargetException;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
-import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
+import com.jzg.quotation.yongcheng.api.entity.response.QuoteResponse;
 
 public interface InsOrdersService extends IService<InsOrders> {
 
 
-    HttpResult saveOrders(InsOrdersAdd ordersAdd);
+//    HttpResult saveOrders(InsOrdersAdd ordersAdd);
 
 
     IPage<OrdersListVo> pageList(InsOrdersParam insOrdersParam);
@@ -22,7 +27,26 @@ public interface InsOrdersService extends IService<InsOrders> {
     InsOrdersVo selectById(Long id);
 
 
-    HttpResult updateOrders(InsOrdersEnd ordersEnd);
+//    HttpResult updateOrders(InsOrdersAdd ordersAdd);
+
+    /**
+     * 根据报价参数生成订单  返回订单号
+     */
+
+    String generateOrders(QuoteVo quoteVo);
+
+    /**
+     * 保存报价的订单
+     * @return
+     */
+    boolean saveQuoteOrders(QuoteVo quoteVo) throws InvocationTargetException, IllegalAccessException;
+
+
+    /**
+     * 订单报价更新后处理
+     * @param quoteResponse
+     */
+    void orderAfterUpdateQuote(String ordersNo, QuoteResultsVo quoteResponse);
 
 
 

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

@@ -1,11 +1,70 @@
 package com.jzg.quotation.summary.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
+import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.quotation.summary.mapper.InsOrdersCarInfoMapper;
 import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+
 @Service
 public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMapper, InsOrdersCarInfo> implements InsOrdersCarInfoService {
+
+    @Override
+    public InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter) {
+        InsOrdersCarInfo info = new InsOrdersCarInfo();
+        info.setOrderNo(insOrders.getId());
+        info.setBrandName(carInfoVo.getBrandName());
+        info.setLicenseNo(carInfoVo.getLicenseNo());
+        info.setRegistered(Objects.isNull(carInfoVo.getLicenseNo()) && carInfoVo.getLicenseNo().isEmpty());
+        info.setVinNo(carInfoVo.getVinNo());
+        info.setEngineNo(carInfoVo.getEngineNo());
+        info.setCarYear(carInfoVo.getCarYear());
+        info.setDisplacement(carInfoVo.getDisplacement());
+        info.setSeatCount(Integer.parseInt(carInfoVo.getSeatCount()));
+        info.setCompleteKerbMass(new BigDecimal(carInfoVo.getCompleteKerbMass()));
+        if(Objects.nonNull(carInfoVo.getLimitLoad())) {
+            info.setLimitLoad(new BigDecimal(carInfoVo.getLimitLoad()));
+        }
+        info.setPowerScale(new BigDecimal(carInfoVo.getPowerScale()));
+        info.setPurchasePrice(new BigDecimal(carInfoVo.getPurchasePrice()));
+        info.setCarNatureCode(carInfoVo.getCarNatureCode());
+        info.setVehicleUseCode(carInfoVo.getVehicleUseCode());
+        info.setCarTypeCode(carInfoVo.getCarTypeCode());
+        info.setCarKindCode(carInfoVo.getCarKindCode());
+        info.setEnergyTypeCode(carInfoVo.getEnergyTypeCode());
+        info.setPropertyCode(carInfoVo.getPropertyCode());
+        info.setLicenseColorCode(carInfoVo.getLicenseColorCode());
+        info.setCarKindDetailIdCode(carInfoVo.getCarKindDetailIdCode());
+        info.setLicenseKindCode(carInfoVo.getLicenseKindCode());
+        info.setRegisterDate(LocalDate.parse(carInfoVo.getRegisterDate(), formatter).atStartOfDay());
+        info.setIssueDate(LocalDate.parse(carInfoVo.getIssueDate(),formatter).atStartOfDay());
+        info.setTransfer(carInfoVo.isTransfer() ? 1 : 0);
+        if (info.getTransfer() == 1) {
+            info.setTransferDate(LocalDate.parse(carInfoVo.getTransferDate(),formatter).atStartOfDay());
+        } else {
+            info.setTransferDate(null);
+        }
+        info.setTransferBi(carInfoVo.isTransfer() ? 1 : 0);
+        this.save(info);
+        return info;
+    }
+
+    @Override
+    public InsOrdersCarInfo getByOrderId(String orderId) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<InsOrdersCarInfo>()
+                .eq(InsOrdersCarInfo::getOrderNo, orderId));
+    }
 }

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

@@ -1,15 +1,55 @@
 package com.jzg.quotation.summary.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
+import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
+import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.summary.mapper.InsOrdersCarUserInfoMapper;
 import com.jzg.quotation.summary.service.InsOrdersCarUserInfoService;
+import net.sf.cglib.core.Local;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
 @Service
 public class InsOrdersCarUserInfoServiceImpl extends ServiceImpl<InsOrdersCarUserInfoMapper, InsOrdersCarUserInfo> implements InsOrdersCarUserInfoService {
     @Override
-    public void deleteOrderNo(Long orderNo) {
-        baseMapper.deleteOrderNo(orderNo);
+    public InsOrdersCarUserInfo createUserInfo(String orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter, Integer policyPersonType) {
+        InsOrdersCarUserInfo info = new InsOrdersCarUserInfo();
+        info.setId(IdGenerate.nextId());
+        info.setOrderNo(orderNo);
+        info.setPolicyPersonType(policyPersonType); // 车主
+        info.setPersonType(Integer.parseInt(customerInfoVo.getProperty()));
+        info.setName(customerInfoVo.getName());
+        info.setIdentifyNumber(customerInfoVo.getIdentifyNumber());
+//        info.setAge(Integer.parseInt(customerInfoVo.getAge()));
+//        info.setGender(customerInfoVo.getGender());
+        info.setAddr(customerInfoVo.getAddr());
+        info.setIdentifyValidDate(LocalDate.parse(customerInfoVo.getIdentifyValidDate(), formatter).atStartOfDay());
+        info.setIdentifyValidEndDate(LocalDate.parse(customerInfoVo.getIdentifyValidEndDate(), formatter).atStartOfDay());
+        info.setMobile(customerInfoVo.getMobile());
+        info.setEmail(customerInfoVo.getEmail());
+
+        if (customerInfoVo.getProperty().equals("1")) {
+            info.setCerType(1); // 个人
+        } else {
+            info.setCerType(2); // 法人
+            info.setProvinceCode(customerInfoVo.getProvinceCode());
+            info.setCityCode(customerInfoVo.getCityCode());
+            info.setCountyCode(customerInfoVo.getCountyCode());
+        }
+        return info;
     }
+
+    @Override
+    public List<InsOrdersCarUserInfo> getByOrderId(String orderId) {
+        return baseMapper.selectList(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getOrderNo, orderId));
+    }
+
+
 }

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

@@ -1,57 +1,65 @@
 package com.jzg.quotation.summary.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.constants.CompanyConstants;
+import com.jzg.commons.constants.InsuranceRisk;
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
-import com.jzg.commons.entity.dto.InsTaskImagesAdd;
 import com.jzg.commons.entity.orders.po.*;
-import com.jzg.commons.entity.po.InsTaskImages;
-import com.jzg.commons.entity.quote.vo.*;
 import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
-import com.jzg.commons.entity.vo.InsTaskImagesVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
-import com.jzg.commons.util.MinioUtils;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.idgen.IdGenerate;
+import com.jzg.quotation.commons.constant.enums.base.ProductsType;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
-import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
 import com.jzg.quotation.summary.service.*;
-import lombok.RequiredArgsConstructor;
+import org.apache.commons.beanutils.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
-@RequiredArgsConstructor
 @Service
 public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders> implements InsOrdersService {
 
-    private final InsOrdersMapper insOrdersMapper;
+    @Autowired
+    private InsOrdersMapper insOrdersMapper;
 
-    private final InsOrdersCarInfoService ordersCarInfoService;
+    @Autowired
+    private InsOrdersCarInfoService ordersCarInfoService;
 
-    private final InsOrdersCarUserInfoService ordersCarUserInfoService;
+    @Autowired
+    private InsOrdersCarUserInfoService ordersCarUserInfoService;
 
-    private final InsOrdersOtherService insOrdersOtherService;
+    @Autowired
+    private InsOrdersOtherService insOrdersOtherService;
 
-    private final InsOrdersKindService insOrdersKindService;
+    @Autowired
+    private InsOrdersKindService insOrdersKindService;
 
-    private final InsOrdersRiskService insOrdersRiskService;
+    @Autowired
+    private InsOrdersRiskService insOrdersRiskService;
 
-    private final InsOrdersTaxService insOrdersTaxService;
+    @Autowired
+    private InsOrdersTaxService insOrdersTaxService;
 
-    private final InsTaskImagesService insTaskImagesService;
-
-    private final InsOrdersExternalPolicyService policyService;
-
-    private final InsOrdersCostsService ordersCostsService;
+    @Autowired
+    private InsOrdersCostsService insOrdersCostsService;
 
     /**
      * 保存订单信息
@@ -59,201 +67,169 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      * @param ordersAdd 包含订单信息、车辆信息和用户信息的综合对象
      * @return 返回HTTP结果对象,表示保存操作的成功或失败
      */
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
+//        // 检查输入参数是否为空,如果为空则返回错误信息
+//        if (ordersAdd == null || ordersAdd.getInsOrders() == null || ordersAdd.getCarInfoVo() == null
+//                || ordersAdd.getCarUserInfoList() == null || ordersAdd.getInsOrdersOtherInfo() == null
+//                || ordersAdd.getInsuranceInfo() == null) {
+//            return HttpResult.error("参数不能为空");
+//        }
+//
+//        try {
+//            // 获取订单对象并设置引用编号
+//            InsOrders insOrders = ordersAdd.getInsOrders();
+//            Long quoteNo = SnowFlakeUtil.getSnowFlakeId();
+//            // 如果生成的引用编号为空,则返回错误信息
+//            if (quoteNo == null) {
+//                return HttpResult.error("生成引用编号失败");
+//            }
+//            insOrders.setQuoteNo(String.valueOf(quoteNo));
+//
+//            // 插入订单信息,如果插入失败,则返回错误信息
+//            int insertResult = insOrdersMapper.insert(insOrders);
+//            if (insertResult <= 0) {
+//                log.error("订单插入失败,订单信息: {}");
+//                return HttpResult.error("保存订单失败");
+//            }
+//
+//            // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
+//            InsOrdersCarInfo carInfoVo = ordersAdd.getCarInfoVo();
+//            carInfoVo.setOrderNo(String.valueOf(quoteNo));
+//            ordersCarInfoService.save(carInfoVo);
+//
+//            // 获取用户信息对象,并设置订单编号,然后保存用户信息
+//            List<InsOrdersCarUserInfo> carUserInfoList = ordersAdd.getCarUserInfoList();
+//            for (InsOrdersCarUserInfo carUserInfo : carUserInfoList) {
+//                carUserInfo.setOrderNo(String.valueOf(quoteNo));
+//            }
+//            ordersCarUserInfoService.saveBatch(carUserInfoList);
+//
+//            // 保险订单其他信息
+//            InsOrdersOtherInfoVo insOrdersOtherInfo = ordersAdd.getInsOrdersOtherInfo();
+////            insOrdersOther.setOrderNo(quoteNo);
+////            insOrdersOtherService.save(insOrdersOther);
+//
+//            // 保险信息
+//            InsuranceInfo insuranceInfo = ordersAdd.getInsuranceInfo();
+//            // 保险种类信息
+//            List<InsOrdersKind> insOrdersKindList = insuranceInfo.getInsOrdersKindList();
+//            for (InsOrdersKind insOrdersKind : insOrdersKindList) {
+//                insOrdersKind.setOrderNo(quoteNo);
+//            }
+//            insOrdersKindService.saveBatch(insOrdersKindList);
+//
+//            // 税费信息
+//            InsOrdersTax insOrdersTax = insuranceInfo.getInsOrdersTax();
+//            insOrdersTax.setOrderNo(quoteNo);
+//            insOrdersTaxService.save(insOrdersTax);
+//
+//            // 风险信息
+//            List<InsOrdersRisk> insOrdersRiskList = insuranceInfo.getInsOrdersRiskList();
+//            for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
+//                insOrdersRisk.setOrderNo(quoteNo);
+//            }
+//            insOrdersRiskService.saveBatch(insOrdersRiskList);
+//
+//            // 返回成功信息,表示订单、车辆和用户信息保存成功
+//            return HttpResult.ok("保存成功");
+//
+//        } catch (Exception e) {
+//            // 如果在保存过程中发生异常,则记录日志并抛出运行时异常
+//            log.error("保存订单时发生异常", e);
+//            throw new RuntimeException("保存订单失败,请检查输入数据", e);
+//        }
+//    }
+
+
+//    @Override
+//    public HttpResult updateOrders(InsOrdersAdd ordersAdd) {
+//
+//        return null;
+//    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
-        // 检查输入参数是否为空,如果为空则返回错误信息
-
-
-        try {
-            // 获取订单对象并设置引用编号
-            InsOrders insOrders = ordersAdd.getInsOrders();
-            Long quoteNo = SnowFlakeUtil.getSnowFlakeId();
-            // 如果生成的引用编号为空,则返回错误信息
-            if (quoteNo == null) {
-                return HttpResult.error("生成引用编号失败");
-            }
-            insOrders.setQuoteNo(quoteNo);
-            insOrders.setCompanyId(ordersAdd.getInsOrdersOtherInfo().getCompanyId());
-            insOrders.setCompanyName(ordersAdd.getInsOrdersOtherInfo().getCompanyName());
-            insOrders.setSigningTime(ordersAdd.getInsOrdersOtherInfo().getSigningTime());
-            insOrders.setIsTemporarily(ordersAdd.getIsTemporarily());
-            // 插入订单信息,如果插入失败,则返回错误信息
-            int insertResult = insOrdersMapper.insert(insOrders);
-            if (insertResult <= 0) {
-                log.error("订单插入失败,订单信息: {}");
-                return HttpResult.error("保存订单失败");
-            }
+    public boolean saveQuoteOrders(QuoteVo quoteVo) throws InvocationTargetException, IllegalAccessException {
+        InsOrders insOrders = new InsOrders();
+        insOrders.setId(IdGenerate.nextId());
+        insOrders.setQuoteNo(quoteVo.getOrder().getQuoteNo());
+        insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+        insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
+        insOrders.setProductId(quoteVo.getOrder().getProductsCode());
+//        insOrdersMapper.insert(insOrders);
 
-            // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
-            CarInfoVo carInfoVo = ordersAdd.getCarInfoVo();
-            InsOrdersCarInfo insOrdersCarInfo = BeanUtil.copyProperties(carInfoVo, InsOrdersCarInfo.class);
-            insOrdersCarInfo.setOrderNo(quoteNo);
-            ordersCarInfoService.save(insOrdersCarInfo);
-
-            // 获取用户信息对象,并设置订单编号,然后保存用户信息
-            List<InsOrdersCarUserInfo> userInfos = new ArrayList<>();
-            InsOrdersCarUserInfo ownersInfo = BeanUtil.copyProperties(ordersAdd.getOwnersInfo(), InsOrdersCarUserInfo.class);
-            ownersInfo.setPolicyPersonType(1);
-            ownersInfo.setOrderNo(quoteNo);
-            userInfos.add(ownersInfo);
-            InsOrdersCarUserInfo policyHolderInfo = BeanUtil.copyProperties(ordersAdd.getPolicyHolderInfo(), InsOrdersCarUserInfo.class);
-            policyHolderInfo.setOrderNo(quoteNo);
-            policyHolderInfo.setPolicyPersonType(2);
-            userInfos.add(policyHolderInfo);
-            InsOrdersCarUserInfo insuredPersonInfo = BeanUtil.copyProperties(ordersAdd.getInsuredPersonInfo(), InsOrdersCarUserInfo.class);
-            insuredPersonInfo.setOrderNo(quoteNo);
-            insuredPersonInfo.setPolicyPersonType(3);
-            userInfos.add(insuredPersonInfo);
-            ordersCarUserInfoService.saveBatch(userInfos);
-
-            // 保险订单其他信息
-            InsOrdersOtherInfoVo insOrdersOtherInfo = ordersAdd.getInsOrdersOtherInfo();
-
-            InsOrdersOther insOrdersOther = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersOther.class);
-
-            insOrdersOther.setOrderNo(quoteNo);
-            insOrdersOtherService.save(insOrdersOther);
-
-            InsOrdersCosts insOrdersCosts = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersCosts.class);
-            insOrdersCosts.setOrderNo(quoteNo);
-            ordersCostsService.save(insOrdersCosts);
-
-            // 保险种类信息
-            List<KindInfoVo> kindInfoVo = ordersAdd.getKindInfoVo();
-            List<InsOrdersKind> insOrdersKinds = BeanUtil.copyToList(kindInfoVo, InsOrdersKind.class);
-            for (InsOrdersKind insOrdersKind : insOrdersKinds) {
-                insOrdersKind.setOrderNo(quoteNo);
-            }
-            insOrdersKindService.saveBatch(insOrdersKinds);
-
-            // 税费信息
-            VehicleAndVesselTaxVo vehicleAndVesselTax = ordersAdd.getVehicleAndVesselTax();
-            InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
-            insOrdersTax.setOrderNo(quoteNo);
-            insOrdersTaxService.save(insOrdersTax);
-
-            // 交强险 险种信息
-            RiskInfoVo ciRiskInfoVo = ordersAdd.getCiRiskInfoVo();
-            InsOrdersRisk insuranceInfo = BeanUtil.copyProperties(ciRiskInfoVo, InsOrdersRisk.class);
-            insuranceInfo.setOrderNo(quoteNo);
-            insOrdersRiskService.save(insuranceInfo);
-            // 商业险 险种信息
-            InsOrdersRisk biRiskInfoVo = BeanUtil.copyProperties(ordersAdd.getBiRiskInfoVo(), InsOrdersRisk.class);
-            biRiskInfoVo.setOrderNo(quoteNo);
-            insOrdersRiskService.save(biRiskInfoVo);
-
-            InsTaskImagesAdd imagesAdds = ordersAdd.getImagesAdds();
-            if (ObjectUtil.isNotEmpty(imagesAdds)){
-                List<InsTaskImages> insTaskImages = BeanUtil.copyToList(imagesAdds.getImages(), InsTaskImages.class);
-                insTaskImages.forEach(image->{
-                    image.setQuoteNo(imagesAdds.getQuoteNo());
-                    insTaskImagesService.save(image);
-                });
-            }
+        InsOrdersCarInfo carInfo = new InsOrdersCarInfo();
+        BeanUtils.copyProperties(carInfo,quoteVo.getCarInfoVo());
+        carInfo.setOrderNo(insOrders.getId());
 
-            InsOrdersExternalPolicy ordersExternalPolicy = ordersAdd.getInsOrdersExternalPolicy();
-            ordersExternalPolicy.setOrderNo(String.valueOf(quoteNo));
-            policyService.save(ordersExternalPolicy);
+        InsOrdersCarUserInfo ownersInfo = new InsOrdersCarUserInfo();
+        BeanUtils.copyProperties(ownersInfo,quoteVo.getOwnersInfo());
 
+        InsOrdersCarUserInfo insuredPersonInfo = new InsOrdersCarUserInfo();
+        BeanUtils.copyProperties(insuredPersonInfo,quoteVo.getInsuredPersonInfo());
 
-            // 返回成功信息,表示订单、车辆和用户信息保存成功
-            return HttpResult.ok("保存成功");
+        InsOrdersCarUserInfo policyHolderInfo = new InsOrdersCarUserInfo();
+        BeanUtils.copyProperties(policyHolderInfo,quoteVo.getPolicyHolderInfo());
 
-        } catch (Exception e) {
-            // 如果在保存过程中发生异常,则记录日志并抛出运行时异常
-            log.error("保存订单时发生异常", e);
-            throw new RuntimeException("保存订单失败,请检查输入数据", e);
-        }
+        return true;
     }
 
-
     @Override
-    public HttpResult updateOrders(InsOrdersEnd ordersEnd) {
-        try {
-            // 获取订单对象并设置引用编号
-            InsOrders insOrders = ordersEnd.getInsOrders();
-            InsOrdersOtherInfoVo ordersOtherInfo = ordersEnd.getInsOrdersOtherInfo();
-            if (ObjectUtil.isNotEmpty(ordersOtherInfo)){
-                insOrders.setCompanyId(ordersOtherInfo.getCompanyId());
-                insOrders.setCompanyName(ordersOtherInfo.getCompanyName());
-                insOrders.setSigningTime(ordersOtherInfo.getSigningTime());
+    public void orderAfterUpdateQuote(String ordersNo,QuoteResultsVo quoteResponse) {
+
+        // 检测主订单是否存在
+        InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getId,ordersNo));
+        AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
+
+        // 更新起保终保时间
+        List<InsOrdersRisk> insOrdersRiskList = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, ordersNo));
+        if(Objects.nonNull(insOrdersRiskList) && !insOrdersRiskList.isEmpty()){
+            for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
+                if(insOrdersRisk.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())){
+                    insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getStartDate()));
+                    insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getEndDate()));
+                }
+                if(insOrdersRisk.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())){
+                    insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getStartDate()));
+                    insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getEndDate()));
+                }
             }
-            // 插入订单信息,如果插入失败,则返回错误信息
-            int insertResult = insOrdersMapper.updateById(insOrders);
-            if (insertResult <= 0) {
-                log.error("订单插入失败,订单信息: {}");
-                return HttpResult.error("修改订单失败");
-            }
-
-            // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
-            InsOrdersCarInfo insOrdersCarInfo = BeanUtil.copyProperties(ordersEnd.getCarInfoVo(), InsOrdersCarInfo.class);
-            ordersCarInfoService.update(insOrdersCarInfo,new LambdaUpdateWrapper<>(InsOrdersCarInfo.class).eq(InsOrdersCarInfo::getOrderNo,insOrders.getQuoteNo()));
-
-            // 获取用户信息对象,并设置订单编号,然后保存用户信息
-            List<InsOrdersCarUserInfo> userInfos = new ArrayList<>();
-            InsOrdersCarUserInfo ownersInfo = BeanUtil.copyProperties(ordersEnd.getOwnersInfo(), InsOrdersCarUserInfo.class);
-
-            userInfos.add(ownersInfo);
-            InsOrdersCarUserInfo policyHolderInfo = BeanUtil.copyProperties(ordersEnd.getPolicyHolderInfo(), InsOrdersCarUserInfo.class);
-
-            userInfos.add(policyHolderInfo);
-            InsOrdersCarUserInfo insuredPersonInfo = BeanUtil.copyProperties(ordersEnd.getInsuredPersonInfo(), InsOrdersCarUserInfo.class);
-
-            userInfos.add(insuredPersonInfo);
-            //
-            ordersCarUserInfoService.updateBatchById(userInfos);
-
-            // 保险订单其他信息
-            InsOrdersOtherInfoVo insOrdersOtherInfo = ordersEnd.getInsOrdersOtherInfo();
-
-            InsOrdersOther insOrdersOther = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersOther.class);
-
-            insOrdersOtherService.update(insOrdersOther,new LambdaUpdateWrapper<>(InsOrdersOther.class).eq(InsOrdersOther::getOrderNo,insOrders.getQuoteNo()));
-            // 保存其他信息
-            InsOrdersCosts insOrdersCosts = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersCosts.class);
-            insOrdersCosts.setOrderNo(insOrders.getQuoteNo());
-            ordersCostsService.update(insOrdersCosts,new LambdaUpdateWrapper<>(InsOrdersCosts.class).eq(InsOrdersCosts::getOrderNo,insOrders.getQuoteNo()));
-
-            // 保险种类信息
-            List<KindInfoVo> kindInfoVo = ordersEnd.getKindInfoVo();
-            List<InsOrdersKind> insOrdersKinds = BeanUtil.copyToList(kindInfoVo, InsOrdersKind.class);
-            insOrdersKindService.updateBatchById(insOrdersKinds);
-
-            // 税费信息
-            VehicleAndVesselTaxVo vehicleAndVesselTax = ordersEnd.getVehicleAndVesselTax();
-            InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
-            insOrdersTaxService.update(insOrdersTax,new LambdaUpdateWrapper<>(InsOrdersTax.class).eq(InsOrdersTax::getOrderNo,insOrders.getQuoteNo()));
-
-            // 交强险 险种信息
-            RiskInfoVo ciRiskInfoVo = ordersEnd.getCiRiskInfoVo();
-            InsOrdersRisk insuranceInfo = BeanUtil.copyProperties(ciRiskInfoVo, InsOrdersRisk.class);
-            insOrdersRiskService.update(insuranceInfo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,insOrders.getQuoteNo()));
-            // 商业险 险种信息
-            InsOrdersRisk biRiskInfoVo = BeanUtil.copyProperties(ordersEnd.getBiRiskInfoVo(), InsOrdersRisk.class);
-            insOrdersRiskService.update(biRiskInfoVo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,insOrders.getQuoteNo()));
-
-            InsTaskImagesAdd imagesAdds = ordersEnd.getImagesAdds();
-            if (ObjectUtil.isNotEmpty(imagesAdds)){
-                List<InsTaskImages> insTaskImages = BeanUtil.copyToList(imagesAdds.getImages(), InsTaskImages.class);
-                insTaskImages.forEach(image->{
-                    image.setQuoteNo(imagesAdds.getQuoteNo());
-                    insTaskImagesService.save(image);
-                });
-            }
-
-            InsOrdersExternalPolicy ordersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
-            policyService.update(ordersExternalPolicy,new LambdaUpdateWrapper<>(InsOrdersExternalPolicy.class).eq(InsOrdersExternalPolicy::getOrderNo,ordersExternalPolicy.getOrderNo()));
-
-
-            // 返回成功信息,表示订单、车辆和用户信息修改成功
-            return HttpResult.ok("修改成功");
-
-        } catch (Exception e) {
-            // 如果在保存过程中发生异常,则记录日志并抛出运行时异常
-            log.error("修改订单时发生异常", e);
-            throw new RuntimeException("修改订单失败,请检查输入数据", e);
         }
+        insOrdersRiskService.updateBatchById(insOrdersRiskList);
+
+        //更新费用
+        InsOrdersCosts ordersCosts = insOrdersCostsService.getOne(new LambdaQueryWrapper<InsOrdersCosts>()
+                .eq(InsOrdersCosts::getOrderNo,ordersNo));
+        if(Objects.isNull(ordersCosts)){
+            ordersCosts = new InsOrdersCosts();
+            ordersCosts.setOrderNo(ordersNo);
+            BigDecimal ciPremium = new BigDecimal(quoteResponse.getCiPremium());
+            BigDecimal biPremium = new BigDecimal(quoteResponse.getBiPremium());
+            BigDecimal niPremium = new BigDecimal(quoteResponse.getNiPremium());
+            BigDecimal vvTax = new BigDecimal(quoteResponse.getVvTax());
+
+            ordersCosts.setJqPremium(ciPremium);
+            ordersCosts.setSyPremium(biPremium);
+            ordersCosts.setJyPremium(niPremium);
+            ordersCosts.setTaxPremium(vvTax);
+            ordersCosts.setSumPremium(ciPremium.add(biPremium).add(niPremium).add(vvTax));
+        }
+        insOrdersCostsService.saveOrUpdate(ordersCosts);
+
+        //更新评分
+        InsOrdersOther ordersOther = insOrdersOtherService.getById(ordersNo);
+        if(Objects.isNull(ordersOther)){
+            ordersOther = new InsOrdersOther();
+            ordersOther.setOrderNo(ordersNo);
+            ordersOther.setScore(quoteResponse.getScoreVo().getScore());
+            ordersOther.setJqScore(quoteResponse.getScoreVo().getJqScore());
+            ordersOther.setSyScore(quoteResponse.getScoreVo().getSyScore());
+            ordersOther.setTpColorScore(quoteResponse.getScoreVo().getTpColorScore());
+        }
+        insOrdersOtherService.saveOrUpdate(ordersOther);
+
     }
 
 
@@ -265,68 +241,64 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public InsOrdersVo selectById(Long id) {
-        // 1. 查询订单信息
-        InsOrdersVo insOrdersVo = insOrdersMapper.selectById(id);
-        if (insOrdersVo == null) {
-            throw new IllegalArgumentException("查询结果为空,无法处理订单信息");
-        }
-        // 2. 处理车辆用户信息列表
-        if (CollectionUtil.isNotEmpty(insOrdersVo.getCarUserInfoList())) {
-            for (InsOrdersCarUserInfo carUserInfo : insOrdersVo.getCarUserInfoList()) {
-                // 使用映射逻辑处理用户信息
-                CustomerInfoVo customerInfoVo = mapCarUserInfoToCustomerInfo(carUserInfo);
-                setPolicyPersonInfo(insOrdersVo, carUserInfo.getPolicyPersonType(), customerInfoVo);
-            }
-            insOrdersVo.setCarUserInfoList(null);
-        }
-        InsTaskImagesVo imagesAdds = insOrdersVo.getImagesAdds();
-        if (ObjectUtil.isNotEmpty(imagesAdds)){
-            imagesAdds.getImages().forEach(image -> {
-                image.setPreviewUrl(MinioUtils.getPresignedObjectUrl(image.getBucketName(), image.getFileName()));
-            });
-        }
-        setInsOrdersExternalPolicy(insOrdersVo.getInsOrdersExternalPolicy());
-        return insOrdersVo;
+        return insOrdersMapper.selectById(id);
     }
 
 
-    public void setInsOrdersExternalPolicy(InsOrdersExternalPolicy ordersExternalPolicy) {
-        if (ObjectUtil.isNotEmpty(ordersExternalPolicy) && CollectionUtil.isNotEmpty(ordersExternalPolicy.getUploadFiles())){
-            ordersExternalPolicy.getUploadFiles().stream().forEach(sysUploadFiles -> {
-                sysUploadFiles.setDownloadUrl(MinioUtils.getPresignedObjectUrl(sysUploadFiles.getBucketName(), sysUploadFiles.getFileName()));
-            });
+    @Override
+    @Transactional
+    public String generateOrders(QuoteVo quoteVo) {
+        try {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String ordersNo = IdGenerate.nextId();
+            // 保存主订单信息
+            InsOrders insOrders = new InsOrders();
+            insOrders.setId(ordersNo);
+            insOrders.setQuoteNo(String.valueOf(SnowFlakeUtil.getSnowFlakeId()));
+            insOrders.setAgreementId(quoteVo.getOrder().getAgreementId());
+            insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // 订单状态 报价中
+            insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));
+            insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
+            String companyName = CompanyConstants.getCompanyNameByCode(quoteVo.getOrder().getInsuranceCompanyCode());
+            insOrders.setCompanyName(companyName);
+            insOrders.setProductId(quoteVo.getOrder().getProductsCode());
+            String productName = ProductsType.getProductNameByCode(quoteVo.getOrder().getProductsCode());
+            insOrders.setProductName(productName);
+            insOrdersMapper.insert(insOrders);
+
+            // 保存订单车辆信息
+            ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo(), formatter);
+
+            // 保存订单用户信息
+            List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = new ArrayList<>();
+            // 添加车主信息
+            insOrdersCarUserInfoList.add(ordersCarUserInfoService.createUserInfo(insOrders.getId(), quoteVo.getOwnersInfo(), formatter, 1));
+            // 添加投保人信息
+            insOrdersCarUserInfoList.add(ordersCarUserInfoService.createUserInfo(insOrders.getId(), quoteVo.getPolicyHolderInfo(), formatter, 2));
+            // 添加被保险人信息
+            insOrdersCarUserInfoList.add(ordersCarUserInfoService.createUserInfo(insOrders.getId(), quoteVo.getInsuredPersonInfo(), formatter, 3));
+            ordersCarUserInfoService.saveBatch(insOrdersCarUserInfoList);
+
+            // 保存订单费用信息 ins_orders_costs
+//        insOrdersCostsService.createCosts(insOrders);
+
+            // 保存订单险种信息 ins_orders_kind
+
+            // 保存订单其他信息 ins_orders_other
+
+            // 保存订单投保单号 保单号信息 ins_orders_policy
+
+            // 保存订单险种信息 ins_orders_risk
+
+            // 保存订单车船税税信息 ins_orders_tax
+
+            return ordersNo;
+
+        }catch (Exception e){
+            System.out.printf(e.getMessage());
+            return null;
         }
-    }
-
-    /**
-     * 将 InsOrdersCarUserInfo 转换为 CustomerInfoVo
-     */
-    private CustomerInfoVo mapCarUserInfoToCustomerInfo(InsOrdersCarUserInfo carUserInfo) {
-        return BeanUtil.copyProperties(carUserInfo, CustomerInfoVo.class);
-    }
 
-    /**
-     * 根据 policyPersonType 设置对应的用户信息
-     */
-    private void setPolicyPersonInfo(InsOrdersVo insOrdersVo, Integer policyPersonType, CustomerInfoVo customerInfoVo) {
-        if (ObjectUtil.isEmpty(policyPersonType)){
-            return;
-        }
-        switch (policyPersonType) {
-            case 1:
-                insOrdersVo.setOwnersInfo(customerInfoVo);
-                break;
-            case 2:
-                insOrdersVo.setPolicyHolderInfo(customerInfoVo);
-                break;
-            case 3:
-                insOrdersVo.setInsuredPersonInfo(customerInfoVo);
-                break;
-            default:
-                // 记录未知类型,避免逻辑遗漏
-                log.warn("未知的 policyPersonType: {}");
-                break;
-        }
     }
 
 

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

@@ -72,6 +72,22 @@ baidu:
   vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
   idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
 
+data-scope:
+  tables:
+    - sys_organization_user_link
+
+
+image:
+  # 验证码识别
+  identificationUrl: https://sxzgkj.baoxianzhanggui.com/zm/images/recognition
+
+
+
+yc:
+  api:
+    payCallBack: https://sxzgkj.baoxianzhanggui.com/web-api/api/yongCheng/callBack
+    url: http://39.98.214.159/yongcheng/
+
 yangguang:
   api:
     key: GVGFDsmWyvydKuCrtP

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

@@ -3,6 +3,7 @@ package com.jzg.quotation.taikang.crawler.service;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
+import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
@@ -162,7 +163,7 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
                 String premium = tKCiKindsVo.getPremium().toString(); // 保费
                 String deductibleRate = null; // 附加绝对免赔率
                 String serviceTimes = null; // 服务次数
-                KindInfoVo kindInfoVo = new KindInfoVo(kindCode, kindName, platformKindCode, platformKindName,
+                KindInfoVo kindInfoVo = new KindInfoVo(IdGenerate.nextId(),kindCode, kindName, platformKindCode, platformKindName,
                         amount, unitAmount, quantity, premium, deductibleRate, serviceTimes);
 
 

+ 0 - 23
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/client/SysAreaClient.java

@@ -1,23 +0,0 @@
-package com.jzg.quotation.yongcheng.api.client;
-
-import com.jzg.commons.core.page.HttpResult;
-import com.jzg.commons.entity.po.EsmInsCompany;
-import com.jzg.commons.entity.vo.PersonAreaVo;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-@FeignClient(name="jzg-org",url = "http://localhost:8083/")
-public interface SysAreaClient {
-
-
-    /**
-     * 根据id获取保险公司信息
-     * @param address
-     * @param idCard
-     * @return
-     */
-    @GetMapping("/area/queryByAddress")
-    public HttpResult<PersonAreaVo> queryByAddress(@RequestParam String address, @RequestParam String idCard);
-
-}

+ 29 - 32
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/QuoteRequest.java

@@ -19,6 +19,7 @@ import com.jzg.quotation.commons.utils.DateTimeUtil;
 import com.jzg.quotation.commons.utils.DateUtil;
 import com.jzg.quotation.yongcheng.api.entity.YcBuildData;
 import com.jzg.quotation.yongcheng.api.entity.dto.CarInsDateDto;
+import com.jzg.quotation.yongcheng.api.entity.response.ModelsQueryResponse;
 import com.jzg.quotation.yongcheng.api.properties.AuthorityDataXml;
 import com.jzg.quotation.yongcheng.api.properties.YcApiConfigurationProperties;
 import jakarta.validation.Valid;
@@ -670,7 +671,7 @@ public class QuoteRequest {
             private String CChdUbiData;
 
 
-            public static Vhl buildVhl(CarInfoVo carInfo, CustomerInfoVo ownerInfo,String cQryCdeJQ,String cQryCdeSY) {
+            public static Vhl buildVhl(CarInfoVo carInfo, CustomerInfoVo ownerInfo,ModelsQueryResponse.VehicleInfo coreModelsVo,String cQryCdeJQ,String cQryCdeSY) {
                 Vhl vhl = new Vhl();
 
                 //        //3 车辆信息
@@ -679,12 +680,12 @@ public class QuoteRequest {
 //        //2.2车主
 //        CustomerInfoVo ownerInfo = yaQuoteInfoVo.getOwnerInfo();
 
-                vhl.setCPlateModelCde(carInfo.getCarKindCode());
-                vhl.setCModelCde(carInfo.getBrandName());
+//                vhl.setCPlateModelCde(carInfo.getCarKindCode());
+                vhl.setCModelCde(coreModelsVo.getVehicleId());
                 vhl.setCRegOwner(ownerInfo.getName());
                 vhl.setCPlateNo(carInfo.getLicenseNo());
 //      <CModelNme>威志CA7150BUE5S轿车</CModelNme>
-                vhl.setCModelNme(carInfo.getBrandName());
+                vhl.setCModelNme(coreModelsVo.getVehicleName());
 
                 LocalDate lDate = LocalDate.parse(carInfo.getRegisterDate());
                 LocalDate newlDate = LocalDate.now();
@@ -711,8 +712,8 @@ public class QuoteRequest {
                 //305005001:未验 305005002:已验车 305005003:免验车 305005004:需验车
                 vhl.setCInspectionCde("305005003");
                 vhl.setCDevice8Mrk("0");
-                vhl.setNDisplacement(EnergyTypeCode.getEnergyTypeDesc(carInfo.getEnergyTypeCode()));
-                vhl.setNDefDisplacement(EnergyTypeCode.getEnergyTypeDesc(carInfo.getEnergyTypeCode()));
+                vhl.setNDisplacement(coreModelsVo.getVehicleDisplacement());
+                vhl.setNDefDisplacement(coreModelsVo.getVehicleDisplacement());
                 String fullType = "32773001";//默认燃油
                 if ("0".equals(carInfo.getEnergyTypeCode())) {
                     fullType = "32773001";  //燃油
@@ -902,9 +903,7 @@ public class QuoteRequest {
                     if (StringUtils.isEmpty(ownerInfo.getProvince()) || StringUtils.isEmpty(ownerInfo.getCity()) || StringUtils.isEmpty(ownerInfo.getCounty())) {
                         throw new SystemException("企业车省市区必填");
                     }
-                    this.setCProvince(ownerInfo.getProvince());
-                    this.setCCity(ownerInfo.getCity());
-                    this.setCCounty(ownerInfo.getCounty());
+
                     this.setCOwnerCls("0");
                 }else{
                     this.setTBirthday(IDCardUtils.GetBirthday(ownerInfo.getIdentifyNumber()));
@@ -913,10 +912,12 @@ public class QuoteRequest {
                     this.setDrvOwnerCertiCode(ownerInfo.getIdentifyNumber());
                     this.setCOwnerCls("1");
                 }
-                //this.setDrvOwnerCeritType("120001");
                 this.setCAreaCde("103132");
                 this.setCMobile(ownerInfo.getMobile());
                 this.setCWorkdptKind("900");
+                this.setCProvince(ownerInfo.getProvinceCode());
+                this.setCCity(ownerInfo.getCityCode());
+                this.setCCounty(ownerInfo.getCountyCode());
                 //地址  自建
                 this.setCWaddress(ownerInfo.getAddr());
             }
@@ -1092,10 +1093,10 @@ public class QuoteRequest {
         public static class CoverageListJQ {
 
 
-            @JsonProperty("CvrgJQ")
+            @JsonProperty("cvrgJQ")
             @JacksonXmlElementWrapper(useWrapping = false)
             @JacksonXmlProperty(localName = "CvrgJQ")
-            private List<CvrgJQ> CvrgJQ;
+            private List<CvrgJQ> cvrgJQ;
 
             @Data
             public static class CvrgJQ {
@@ -1257,7 +1258,7 @@ public class QuoteRequest {
             @JacksonXmlProperty(localName = "Exhaust")
             private String Exhaust;
 
-            public static Tax buildTax(CustomerInfoVo policyHolderInfo, CarInfoVo carInfo) {
+            public static Tax buildTax(CustomerInfoVo policyHolderInfo, CarInfoVo carInfo,ModelsQueryResponse.VehicleInfo coreModelsVo) {
                 Tax tax = new Tax();
                 tax.setTaxCurrentType("349002001");
                 tax.setVehicleCategory("K33");
@@ -1276,19 +1277,17 @@ public class QuoteRequest {
                     //纳税人识别号 =  投保人身份证号
                     tax.setTaxpayerNO(policyHolderInfo.getIdentifyNumber());
                 }
-//        tax.setIdType("120001");
+
                 tax.setCalculatedType("349003001");
                 tax.setVehecleTypeDetail("3490010013");
                 tax.setTaxpayerAddress(policyHolderInfo.getAddr());
                 tax.setVehicleQuality(extracted(carInfo.getCompleteKerbMass()));
                 //纳税人识别号 =  投保人身份证号
-//        tax.setTaxpayerNO(policyHolderInfo.getIdentifyNumber());
 
                 tax.setVehicleType("349001001");
-//        tax.setTaxpayerType("338001");
                 tax.setConruty("156");
                 tax.setTel(policyHolderInfo.getMobile());
-                tax.setExhaust(carInfo.getEnergyTypeCode());
+                tax.setExhaust(coreModelsVo.getVehicleDisplacement());
 
 
                 return tax;
@@ -1640,7 +1639,7 @@ public class QuoteRequest {
             @JacksonXmlProperty(localName = "CMassCarMrk")
             private String CMassCarMrk;
 
-            public Applicant(CustomerInfoVo ownerInfo, CustomerInfoVo policyHolderInfo) {
+            public Applicant(CustomerInfoVo ownerInfo, CustomerInfoVo policyHolderInfo,YcApiConfigurationProperties ycApiConfigurationProperties) {
 
                 //投保人类型: 0:法人 1:个人(中国籍) 2: 个人(非中国籍)
                 String property = policyHolderInfo.getProperty();
@@ -1654,9 +1653,6 @@ public class QuoteRequest {
                     if (StringUtils.isEmpty(ownerInfo.getProvince()) || StringUtils.isEmpty(ownerInfo.getCity()) || StringUtils.isEmpty(ownerInfo.getCounty())) {
                         throw new SystemException("企业车省市区必填");
                     }
-                    this.setCProvince(policyHolderInfo.getProvince());
-                    this.setCCity(policyHolderInfo.getCity());
-                    this.setCCounty(policyHolderInfo.getCounty());
                     //行业
                     this.setCTrdCde("201799");
 //            applicant.setCOccupation(policyHolderInfo.getScope());
@@ -1679,7 +1675,7 @@ public class QuoteRequest {
                     this.setCSex(IDCardUtils.GetYcSex(policyHolderInfo.getIdentifyNumber()));
                     this.setCCntrNme(policyHolderInfo.getName());
                     // 增加团车标志
-//                    applicant.setCMassCarMrk(ycConfigureParameters.getCCntrNme());
+                    this.setCMassCarMrk(ycApiConfigurationProperties.getCCntrNme());
                     name = policyHolderInfo.getName();
                     //投保人客户分类
                     this.setCClntMrk("1");
@@ -1688,7 +1684,9 @@ public class QuoteRequest {
                 this.setCResvTxt5("000");
                 this.setCMobile(policyHolderInfo.getMobile());
                 this.setCAreaCde("103132");
-
+                this.setCProvince(policyHolderInfo.getProvinceCode());
+                this.setCCity(policyHolderInfo.getCityCode());
+                this.setCCounty(policyHolderInfo.getCountyCode());
                 //投保人姓名
                 this.setCAppNme(name);
 
@@ -1961,9 +1959,6 @@ public class QuoteRequest {
                     if (StringUtils.isEmpty(ownerInfo.getProvince()) || StringUtils.isEmpty(ownerInfo.getCity()) || StringUtils.isEmpty(ownerInfo.getCounty())) {
                         throw new SystemException("企业车省市区必填");
                     }
-                    this.setCProvince(insuredPersonInfo.getProvince());
-                    this.setCCity(insuredPersonInfo.getCity());
-                    this.setCCounty(insuredPersonInfo.getCounty());
                     //经营范围
 //            insured.setCWorkCtt(insuredPersonInfo.getScope());
                     this.setNResvNum3(insuredPersonInfo.getRegisteredCapital());
@@ -1986,9 +1981,11 @@ public class QuoteRequest {
                 this.setCClntAddr(insuredPersonInfo.getAddr());
                 this.setCMobile(insuredPersonInfo.getMobile());
                 this.setCAreaCde("103132");
-
+                this.setCProvince(insuredPersonInfo.getProvinceCode());
+                this.setCCity(insuredPersonInfo.getCityCode());
+                this.setCCounty(insuredPersonInfo.getCountyCode());
                 this.setTCertfClsValiDate(insuredPersonInfo.getIdentifyValidEndDate());
-//        insured.setCCntrNme(insuredPersonInfo.getName());
+//                insured.setCCntrNme(insuredPersonInfo.getName());
                 this.setCRelCdes(ownerInfo.getName().equals(insuredPersonInfo.getName()) ? "601005" : "601008");
 
             }
@@ -2108,7 +2105,7 @@ public class QuoteRequest {
      * @date: 2023年02月08日 0008
      */
     public static QuoteRequest buildQuoteParam(QuoteVo quoteVo, YcApiConfigurationProperties ycApiConfigurationProperties,
-                                        List<AccidentalDrivingVo> adVo, String cQryCdeJQ, String cQryCdeSY, String negotiatedPrice) {
+                                               ModelsQueryResponse.VehicleInfo coreModelsVo, List<AccidentalDrivingVo> adVo, String cQryCdeJQ, String cQryCdeSY, String negotiatedPrice) {
 
         QuoteRequest m = new QuoteRequest();
         QuoteRequest.RequestLabel requestLabel = new QuoteRequest.RequestLabel();
@@ -2138,7 +2135,7 @@ public class QuoteRequest {
          * 车辆信息
          * 代码:vhl
          */
-        Condition.Vhl vhl = Condition.Vhl.buildVhl(carInfo, ownerInfo,cQryCdeJQ,cQryCdeSY);
+        Condition.Vhl vhl = Condition.Vhl.buildVhl(carInfo, ownerInfo,coreModelsVo,cQryCdeJQ,cQryCdeSY);
 
         String startTime = StringUtils.isNotEmpty(base.getTInsrncBgnTmJQ()) ? base.getTInsrncBgnTmJQ() : base.getTInsrncBgnTmSY();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -2218,7 +2215,7 @@ public class QuoteRequest {
          * 交强险车船税
          * 车船税tax
          */
-        condition.setTax(Condition.Tax.buildTax(policyHolderInfo, carInfo));
+        condition.setTax(Condition.Tax.buildTax(policyHolderInfo, carInfo,coreModelsVo));
 
         /**
          * 渠道及费用信息
@@ -2230,7 +2227,7 @@ public class QuoteRequest {
          * 投保人信息
          * 代码:applicant
          */
-        Condition.Applicant applicant = new Condition.Applicant(ownerInfo,policyHolderInfo);
+        Condition.Applicant applicant = new Condition.Applicant(ownerInfo,policyHolderInfo,ycApiConfigurationProperties);
         condition.setApplicant(applicant);
 
         /**

+ 212 - 62
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java

@@ -1,19 +1,23 @@
 package com.jzg.quotation.yongcheng.api.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ArrayUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.quote.vo.*;
 import com.jzg.commons.entity.vo.PersonAreaVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.client.OrgClient;
+import com.jzg.quotation.commons.constant.InsuranceTypeCorrespondence;
 import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
-import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
-import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
-import com.jzg.commons.entity.quote.vo.CarInfoVo;
-import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
+import com.jzg.quotation.commons.entity.vo.image.RecognitionRequest;
+import com.jzg.quotation.commons.entity.vo.image.RecognitionResponse;
+import com.jzg.quotation.commons.service.impl.VerificationCodeIdentification;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.commons.utils.DateTimeUtil;
 import com.jzg.quotation.commons.utils.DuplicateInsuranceUtil;
@@ -24,7 +28,6 @@ import com.jzg.quotation.yongcheng.api.entity.dto.CarInsDateDto;
 import com.jzg.quotation.yongcheng.api.entity.request.ModelsQueryRequest;
 import com.jzg.quotation.yongcheng.api.entity.request.PriceDiscountRatioRequest;
 import com.jzg.quotation.yongcheng.api.entity.request.QuoteRequest;
-import com.jzg.quotation.yongcheng.api.entity.request.RecognitionRequest;
 import com.jzg.quotation.yongcheng.api.entity.response.ModelsQueryResponse;
 import com.jzg.quotation.yongcheng.api.entity.response.PriceDiscountRatioResponse;
 import com.jzg.quotation.yongcheng.api.entity.response.QuoteResponse;
@@ -43,8 +46,12 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.jzg.quotation.yongcheng.api.constants.Constants.REDIS_YONGCHENG_QUERY_CODE_JQ;
+import static com.jzg.quotation.yongcheng.api.constants.Constants.REDIS_YONGCHENG_QUERY_CODE_SY;
+
 @Service
 public class YongChengApiRequestImpl implements YongChengApiRequest {
 
@@ -57,6 +64,9 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
     @Autowired
     private OrgClient orgClient;
 
+    @Autowired
+    private VerificationCodeIdentification verificationCodeIdentification;
+
     /**
      * 车型获取
      * @param ycConfigureParameters
@@ -143,9 +153,99 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
 
         //build参数
         List<String> requestInfoList = new ArrayList<>();
+        setUserAreaCode(quoteVo,orgClient);
+
         QuoteRequest quoteRequest = this.builderParams(configurationProperties, quoteVo, vehicleInfo, negotiatedPrice.toString());
         QuoteResponse quoteResponse = this.getResponse(quoteRequest,quoteVo, requestInfoList);
-        return null;
+
+
+        QuoteResultsVo quoteResultsVo = buildQuoteRespVo(order.getOrdersNo(), quoteResponse, quoteVo);
+
+        return quoteResultsVo;
+    }
+
+    public static QuoteResultsVo buildQuoteRespVo(String ordersNo, QuoteResponse rd, QuoteVo quoteVo) {
+
+        //交强保费 含税
+        double jqPremium = 0;
+        if (StringUtils.isNotEmpty(rd.getBase().getNBefTaxPrmJQ())) {
+            jqPremium = new BigDecimal(rd.getBase().getNBefTaxPrmJQ()).add(new BigDecimal(rd.getBase().getNAppTaxAmtJQ())).doubleValue();
+        }
+        //商业保费 含税
+        double syPremium = 0;
+        if (StringUtils.isNotEmpty(rd.getBase().getNBefTaxPrmSY())) {
+            syPremium = new BigDecimal(rd.getBase().getNBefTaxPrmSY()).add(new BigDecimal(rd.getBase().getNAppTaxAmtSY())).doubleValue();
+        }
+        double jyPremium = 0;
+
+        QuoteResultsVo quoteRespVo = new QuoteResultsVo();
+        quoteRespVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
+        quoteRespVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
+
+        List<KindInfoVo> kindList = buildQuoteKindList(rd);
+
+        quoteRespVo.setKindInfoVo(kindList);
+
+        //车船税
+        double sumTax = 0;
+        if (null != rd.getTax()) {
+            sumTax = Double.parseDouble(rd.getTax().getSumUpTax());
+        }
+        //意外险
+        if (null != rd.getProposal()) {
+            jyPremium = Double.parseDouble(rd.getProposal().getPremium());
+        }
+
+
+
+
+//        if (null != rd.getPrmCoef()) {
+//            quoteRespVo.setTotalAdjustRate(StringUtils.toDouble(rd.getPrmCoef().getNTotDisc()));
+//        }
+        quoteRespVo.getScoreVo().setScore(rd.getBase().getCWeRisk());//评分
+        quoteRespVo.setOrdersNo(ordersNo); //订单号
+        quoteRespVo.setCiPremium(String.valueOf(jqPremium));
+        quoteRespVo.setBiPremium(String.valueOf(syPremium));
+        quoteRespVo.setNiPremium(String.valueOf(jyPremium));
+        quoteRespVo.setVvTax(BigDecimal.valueOf(sumTax).toString());//车船税
+
+        //起保日期
+        quoteRespVo.setCiStartDate(rd.getBase().getTInsrncBgnTmJQ());
+        quoteRespVo.setCiEndDate(rd.getBase().getTInsrncEndTmJQ());
+
+        quoteRespVo.setBiStartDate(rd.getBase().getTInsrncBgnTmSY());
+        quoteRespVo.setBiEndDate(rd.getBase().getTInsrncEndTmSY());
+
+        // 交强出险次数
+        String ciClaims = Optional.ofNullable(rd.getBase()).map(QuoteResponse.BaseResponse::getAccidentNum).orElse(null);
+        quoteRespVo.setCiClaims(ciClaims);
+        // 商业出险次数
+        String biClaims = Optional.ofNullable(rd.getPrmCoef()).map(QuoteResponse.PrmCoefResponse::getNClaimTimes).orElse(null);
+        quoteRespVo.setBiClaims(biClaims);
+
+        //欠税信息
+        if (null != rd.getTax()) {
+            List<TaxInfoVo> taxArrearsList = new ArrayList<>();
+            TaxInfoVo taxArrear = new TaxInfoVo();
+
+            taxArrear.setYears(rd.getTax().getTaxEndDateCurrentYear());
+            taxArrear.setTaxDefault(Double.parseDouble(rd.getTax().getFormerTax()));
+            taxArrear.setLateFee(Double.parseDouble(rd.getTax().getLateFee()));
+            taxArrearsList.add(taxArrear);
+            quoteRespVo.setTaxVo(taxArrearsList);
+        }
+
+        //平台返回信息
+        if (null != rd.getTfiWarnList()) {
+            //排空
+            List<QuoteResponse.TfiWarnListResponse.TfiWarnData> tfiWarnData =
+                    rd.getTfiWarnList().getTfiWarnData().stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotEmpty(item.getWarnMessage())).collect(Collectors.toList());
+            List<String> warnMessageList = new ArrayList<>();
+            tfiWarnData.forEach(a -> warnMessageList.add(a.getWarnMessage()));
+            quoteRespVo.setWarnMessageList(warnMessageList);
+        }
+
+        return quoteRespVo;
     }
 
     private QuoteResponse getResponse(QuoteRequest quoteRequest, QuoteVo quoteVo, List<String> requestInfoList) throws JsonProcessingException {
@@ -153,28 +253,28 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
         //存储 报价返回的查询码  交强和商业
         if (quoteResponse.getVhl() != null) {
             if (quoteResponse.getVhl().getCQryCdeJQ() != null) {
-//                redisTemplate.opsForValue().set(REDIS_YONGCHENG_QUERY_CODE_JQ + yaQuoteInfoVo.getUserId() + yaQuoteInfoVo.getCarInfo().getVinNo() + yaQuoteInfoVo.getCarInfo().getLicenseNo(), rr.getVhl().getCQryCdeJQ(), REDIS_YONGCHENG_QUERY_CODE_EXPIRE, TimeUnit.DAYS);
+                redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).set(quoteResponse.getVhl().getCQryCdeJQ(), 7, TimeUnit.DAYS);
             }
             if (quoteResponse.getVhl().getCQryCdeSY() != null) {
-//                redisTemplate.opsForValue().set(REDIS_YONGCHENG_QUERY_CODE_SY + yaQuoteInfoVo.getUserId() + yaQuoteInfoVo.getCarInfo().getVinNo() + yaQuoteInfoVo.getCarInfo().getLicenseNo(), rr.getVhl().getCQryCdeSY(), REDIS_YONGCHENG_QUERY_CODE_EXPIRE, TimeUnit.DAYS);
+                redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).set(quoteResponse.getVhl().getCQryCdeSY(), 7, TimeUnit.DAYS);
             }
         }
 
         //重新设置 请求的查询码
         //读取缓存的查询码
         String cQryCdeJQ = "",cQryCdeSY = "";
-        if(Objects.nonNull(redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getOrder().getOrdersNo() + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get())){
-            cQryCdeJQ = redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getOrder().getOrdersNo() + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get().toString();
+        if(Objects.nonNull(redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get())){
+            cQryCdeJQ = redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get().toString();
         }
-        if(Objects.nonNull(redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getOrder().getOrdersNo() + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get())){
-            cQryCdeSY = redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getOrder().getOrdersNo() + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get().toString();
+        if(Objects.nonNull(redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get())){
+            cQryCdeSY = redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getCarInfoVo().getVinNo() + quoteVo.getCarInfoVo().getLicenseNo()).get().toString();
         }
         //交强
-        quoteResponse.getVhl().setCCheckCodeJQ("");
-        quoteResponse.getVhl().setCQryCdeJQ(cQryCdeJQ);
+        quoteRequest.getRequestLabel().getCondition().getVhl().setCCheckCodeJQ("");
+        quoteRequest.getRequestLabel().getCondition().getVhl().setCQryCdeJQ(cQryCdeJQ);
         //商业
-        quoteResponse.getVhl().setCCheckCodeSY("");
-        quoteResponse.getVhl().setCQryCdeSY(cQryCdeSY);
+        quoteRequest.getRequestLabel().getCondition().getVhl().setCCheckCodeSY("");
+        quoteRequest.getRequestLabel().getCondition().getVhl().setCQryCdeSY(cQryCdeSY);
 
         if ("009999".equals(quoteResponse.getHead().getErrorCode()) &&
                 (quoteResponse.getHead().getErrorMessage().contains("车主") ||
@@ -208,13 +308,6 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
             String sy = commerceRepetitionInsure(quoteResponse, quoteRequest, requestInfoList, appSYFlag);
 
             if (!jq.isEmpty() || !sy.isEmpty()) {
-//                InsuranceLog.infoLog(InsuranceEnum.AICS.getPinyin(), "\n\n---------> {} - 重复投保处理", vinNo);
-//                SysQuoteRecord sysQuoteRecord = new SysQuoteRecord(yaQuoteInfoVo.getUserid(),companyId,yaQuoteInfoVo.getCarInfo().getLicenseNo(),
-//                        QuoteNumberConstant.QuoteAction.DATE_DEAL.getCode().toString(),QuoteNumberConstant.QuoteResult.FAIL.getCode().toString());
-//                sysQuoteRecords.add(sysQuoteRecord);
-//                if(maxQuoteNum <= 0){
-//                    return rr;
-//                }
                 return this.getResponse(quoteRequest,quoteVo, requestInfoList);
             }
 
@@ -225,44 +318,101 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
         //2、转保处理
         boo = reinsurance(quoteResponse, quoteRequest);
         if (!boo) {
-//            InsuranceLog.infoLog(InsuranceEnum.AICS.getPinyin(), "\n\n---------> {} - 转保处理", vinNo);
-//            SysQuoteRecord sysQuoteRecord = new SysQuoteRecord(yaQuoteInfoVo.getUserid(),companyId,yaQuoteInfoVo.getCarInfo().getLicenseNo(),
-//                    QuoteNumberConstant.QuoteAction.TRANSFER_INSRUANCE.getCode().toString(),QuoteNumberConstant.QuoteResult.FAIL.getCode().toString());
-//            sysQuoteRecords.add(sysQuoteRecord);
-//            if(maxQuoteNum <= 0){
-//                return rr;
-//            }
             return this.getResponse(quoteRequest,quoteVo, requestInfoList);
         }
 
         //3、商业险日期处理
         boo = biRepetitionInsure(quoteResponse, quoteRequest, requestInfoList);
         if (!boo) {
-//            InsuranceLog.infoLog(InsuranceEnum.AICS.getPinyin(), "\n\n---------> {} - 商业险日期处理", vinNo);
-//            SysQuoteRecord sysQuoteRecord = new SysQuoteRecord(yaQuoteInfoVo.getUserid(),companyId,yaQuoteInfoVo.getCarInfo().getLicenseNo(),
-//                    QuoteNumberConstant.QuoteAction.DATE_DEAL.getCode().toString(),QuoteNumberConstant.QuoteResult.FAIL.getCode().toString());
-//            sysQuoteRecords.add(sysQuoteRecord);
-//            if(maxQuoteNum <= 0){
-//                return rr;
-//            }
             return this.getResponse(quoteRequest,quoteVo, requestInfoList);
         }
 
         // 转保验证码
         boo = reinsuranceCodeError(quoteResponse, quoteRequest);
         if (!boo) {
-//            InsuranceLog.infoLog(InsuranceEnum.AICS.getPinyin(), "\n\n---------> {} - 转保处理", vinNo);
-//            SysQuoteRecord sysQuoteRecord = new SysQuoteRecord(yaQuoteInfoVo.getUserid(),companyId,yaQuoteInfoVo.getCarInfo().getLicenseNo(),
-//                    QuoteNumberConstant.QuoteAction.TRANSFER_INSRUANCE.getCode().toString(),QuoteNumberConstant.QuoteResult.FAIL.getCode().toString());
-//            sysQuoteRecords.add(sysQuoteRecord);
-//            if(maxQuoteNum <= 0){
-//                return rr;
-//            }
             return this.getResponse(quoteRequest,quoteVo, requestInfoList);
         }
         return quoteResponse;
     }
 
+    public static List<KindInfoVo> buildQuoteKindList(QuoteResponse rd) {
+
+        if (null == rd.getCvrgListSY() || null == rd.getCvrgListSY().getCvrgSY()) {
+            return Collections.emptyList();
+        }
+
+        List<KindInfoVo> kindList = new ArrayList<>();
+
+//        rd.getCvrgListSY().getCvrgSY().forEach(a -> {
+//
+//            String kindcode = a.getCCvrgNo();
+//            int i = ArrayUtil.indexOf(InsuranceTypeCorrespondence.getYongchengConnectInsuranceType(), kindcode);
+////            InsurKind insurKind = Enum.valueOf(InsurKind.class, InsuranceTypeCorrespondence.getJinZhangGuiType()[i]);
+//
+//            double premium = Double.parseDouble(a.getNPrm());
+//            double amount = Double.parseDouble(a.getNPerAmt());
+//            QuoteKindRespVo kind;
+//            kind = new QuoteKindRespVo();
+//            kind.setKindCode(insurKind.getCode());
+//            kind.setKindName(insurKind.getDesc());
+//            kind.setAmount(amount);
+//            kind.setCoveragePremium(premium);
+//
+//            // 司机
+//            if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getDriver(), insurKind.getCode()) >= 0) {
+//                kind.setUnitAmount(amount);
+//                kind.setQuantity("1");
+//            }
+//            // 乘客
+//            if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getPassenger(), insurKind.getCode()) >= 0) {
+//                int seat = Integer.parseInt(rd.getVhl().getNSeatNum()) - 1;
+//                kind.setUnitAmount(amount);
+//                kind.setQuantity(String.valueOf(seat));
+//            }
+//            // 增值服务
+//            if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getSpecialContractClause(), insurKind.getCode()) >= 0) {
+//                kind.setServiceTimes(a.getNLiabDaysLmt());
+//            }
+//
+//            kindList.add(kind);
+//
+//        });
+
+        return kindList;
+    }
+
+    /**
+     * 设置车主 区划code
+     * @param quoteVo
+     * @param orgClient
+     */
+    public void setUserAreaCode(QuoteVo quoteVo, OrgClient orgClient){
+        HttpResult<PersonAreaVo> ownerAddress = orgClient.queryByAddress(
+                quoteVo.getOwnersInfo().getAddr(), quoteVo.getOwnersInfo().getIdentifyNumber());
+
+        HttpResult<PersonAreaVo> insuredAddress = quoteVo.getOwnersInfo().getIdentifyNumber()
+                .equals(quoteVo.getInsuredPersonInfo().getIdentifyNumber())
+                ? ownerAddress
+                : orgClient.queryByAddress(quoteVo.getInsuredPersonInfo().getAddr(), quoteVo.getInsuredPersonInfo().getIdentifyNumber());
+
+        HttpResult<PersonAreaVo> policyAddress = quoteVo.getPolicyHolderInfo().getIdentifyNumber()
+                .equals(quoteVo.getOwnersInfo().getIdentifyNumber())
+                ? ownerAddress
+                : quoteVo.getPolicyHolderInfo().getIdentifyNumber().equals(quoteVo.getInsuredPersonInfo().getIdentifyNumber())
+                ? insuredAddress
+                : orgClient.queryByAddress(quoteVo.getPolicyHolderInfo().getAddr(), quoteVo.getPolicyHolderInfo().getIdentifyNumber());
+
+        quoteVo.getOwnersInfo().setProvinceCode(ownerAddress.getData().getProvinceCode());
+        quoteVo.getOwnersInfo().setCityCode(ownerAddress.getData().getCityCode());
+        quoteVo.getOwnersInfo().setCountyCode(ownerAddress.getData().getCountyCode());
+        quoteVo.getInsuredPersonInfo().setProvinceCode(insuredAddress.getData().getProvinceCode());
+        quoteVo.getInsuredPersonInfo().setCityCode(insuredAddress.getData().getCityCode());
+        quoteVo.getInsuredPersonInfo().setCountyCode(insuredAddress.getData().getCountyCode());
+        quoteVo.getPolicyHolderInfo().setProvinceCode(policyAddress.getData().getProvinceCode());
+        quoteVo.getPolicyHolderInfo().setCityCode(policyAddress.getData().getCityCode());
+        quoteVo.getPolicyHolderInfo().setCountyCode(policyAddress.getData().getCountyCode());
+    }
+
     /**
      * 转保业务处理
      * @param quoteResponse
@@ -288,19 +438,19 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
                 if (StringUtils.isNotEmpty(cCheckCodeSY)) {
                     recognitionRequest.setSyImage(cCheckCodeSY);
                 }
-//                RecognitionResponse recognition = verificationCodeIdentification.recognition(recognitionRequest);
-//                quoteRequest.getRequestLabel().getCondition().getVhl().setCBusType("2");
-//                RecognitionResponse.Code data = recognition.getData();
-//                //交强
-//                if (StringUtils.isNotEmpty(cCheckCodeJQ)) {
-//                    quoteRequest.getRequestLabel().getCondition().getVhl().setCCheckCodeJQ(data.getJqImageCode());
-//                    quoteRequest.getRequestLabel().getCondition().getVhl().setCQryCdeJQ(quoteResponse.getVhl().getCQryCdeJQ());
-//                }
-//                //商业
-//                if (StringUtils.isNotEmpty(cCheckCodeSY)) {
-//                    quoteRequest.getRequestLabel().getCondition().getVhl().setCCheckCodeSY(data.getSyImageCode());
-//                    quoteRequest.getRequestLabel().getCondition().getVhl().setCQryCdeSY(quoteResponse.getVhl().getCQryCdeSY());
-//                }
+                RecognitionResponse recognition = verificationCodeIdentification.recognition(recognitionRequest);
+                quoteRequest.getRequestLabel().getCondition().getVhl().setCBusType("2");
+                RecognitionResponse.Code data = recognition.getData();
+                //交强
+                if (StringUtils.isNotEmpty(cCheckCodeJQ)) {
+                    quoteRequest.getRequestLabel().getCondition().getVhl().setCCheckCodeJQ(data.getJqImageCode());
+                    quoteRequest.getRequestLabel().getCondition().getVhl().setCQryCdeJQ(quoteResponse.getVhl().getCQryCdeJQ());
+                }
+                //商业
+                if (StringUtils.isNotEmpty(cCheckCodeSY)) {
+                    quoteRequest.getRequestLabel().getCondition().getVhl().setCCheckCodeSY(data.getSyImageCode());
+                    quoteRequest.getRequestLabel().getCondition().getVhl().setCQryCdeSY(quoteResponse.getVhl().getCQryCdeSY());
+                }
                 return false;
 
             }
@@ -487,14 +637,14 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
 
         String cQryCdeJQ = "",cQryCdeSY = "";
         //获取查询码
-        if(Objects.nonNull(redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getOrder().getOrdersNo() + carInfo.getVinNo() + carInfo.getLicenseNo()).get())){
-            cQryCdeJQ = redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_JQ + quoteVo.getOrder().getOrdersNo() + carInfo.getVinNo() + carInfo.getLicenseNo()).get().toString();
+        if(Objects.nonNull(redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_JQ + carInfo.getVinNo() + carInfo.getLicenseNo()).get())){
+            cQryCdeJQ = redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_JQ + carInfo.getVinNo() + carInfo.getLicenseNo()).get().toString();
         }
-        if(Objects.nonNull(redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getOrder().getOrdersNo() + carInfo.getVinNo() + carInfo.getLicenseNo()).get())){
-            cQryCdeSY = redissonClient.getBucket(Constants.REDIS_YONGCHENG_QUERY_CODE_SY + quoteVo.getOrder().getOrdersNo() + carInfo.getVinNo() + carInfo.getLicenseNo()).get().toString();
+        if(Objects.nonNull(redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_SY + carInfo.getVinNo() + carInfo.getLicenseNo()).get())){
+            cQryCdeSY = redissonClient.getBucket(REDIS_YONGCHENG_QUERY_CODE_SY + carInfo.getVinNo() + carInfo.getLicenseNo()).get().toString();
         }
         //组装参数
-        QuoteRequest m = QuoteRequest.buildQuoteParam(quoteVo, configurationProperties, adVos, cQryCdeJQ, cQryCdeSY,negotiatedPrice);
+        QuoteRequest m = QuoteRequest.buildQuoteParam(quoteVo, configurationProperties,coreModelsVo, adVos, cQryCdeJQ, cQryCdeSY,negotiatedPrice);
         //企业车不构建地区
         String property = quoteVo.getOwnersInfo().getProperty();
         if (!"2".equals(property)) {

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

@@ -1,8 +1,6 @@
 server:
   port: 8084
 spring:
-  application:
-    name: jzg-organization
   cloud:
     nacos:
       server-addr: 192.168.0.250:8848
@@ -10,54 +8,16 @@ spring:
       password: nacos
       config:
         file-extension: yaml
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
         group: DEFAULT_GROUP
       discovery:
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
   config:
     import:
       - nacos:mysql
       - nacos:redisson
       - nacos:minio
-
-mybatis-plus:
-  mapper-locations: classpath*:/mapper/*Mapper.xml
-  global-config:
-    db-config:
-      logic-delete-field: is_delete
-      logic-delete-value: 1
-      logic-not-delete-value: 0
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+      - nacos:rocketmq
 
 config:
   sso: 1
-
-
-rocketmq:
-  consumer:
-    group: springboot_consumer_group
-    # 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值
-    pull-batch-size: 10
-  name-server: 39.98.199.213:9876
-  producer:
-    # 发送同一类消息的设置为同一个group,保证唯一
-    group: springboot_producer_group
-    # 发送消息超时时间,默认3000
-    sendMessageTimeout: 10000
-    # 发送消息失败重试次数,默认2
-    retryTimesWhenSendFailed: 2
-    # 异步消息重试此处,默认2
-    retryTimesWhenSendAsyncFailed: 2
-    # 消息最大长度,默认1024 * 1024 * 4(默认4M)
-    maxMessageSize: 4096
-    # 压缩消息阈值,默认4k(1024 * 4)
-    compressMessageBodyThreshold: 4096
-    # 是否在内部发送失败时重试另一个broker,默认false
-    retryNextServer: false
-  enhance:
-    # 启动隔离,用于激活配置类EnvironmentIsolationConfig
-    # 启动后会自动在topic上拼接激活的配置文件,达到自动隔离的效果
-    enabledIsolation: true
-    # 隔离环境名称,拼接到topic后,topic_dev,默认空字符串
-    environment: dev