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

Merge branch 'test' into test-dismantle

# Conflicts:
#	src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java
#	src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
785834757 2 лет назад
Родитель
Сommit
bf2f1c72e0
100 измененных файлов с 4449 добавлено и 764 удалено
  1. 3 0
      src/main/java/com/ydtech/components/TokenInterceptor.java
  2. 31 0
      src/main/java/com/ydtech/config/properties/BohaiApiConfigurationProperties.java
  3. 0 2
      src/main/java/com/ydtech/config/properties/HuaTaiApiConfigurationProperties.java
  4. 1 1
      src/main/java/com/ydtech/constants/InsuranceEnum.java
  5. 26 0
      src/main/java/com/ydtech/constants/enums/dict/insurance/Property.java
  6. 3 2
      src/main/java/com/ydtech/constants/enums/dict/organization/OrganizationSource.java
  7. 107 0
      src/main/java/com/ydtech/modules/admin/controller/SysLoginController.java
  8. 1 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  9. 4 1
      src/main/java/com/ydtech/modules/admin/model/SysUser.java
  10. 11 0
      src/main/java/com/ydtech/modules/admin/model/vo/LoginTicket.java
  11. 4 7
      src/main/java/com/ydtech/modules/admin/model/vo/PersonAreaVo.java
  12. 24 0
      src/main/java/com/ydtech/modules/admin/model/vo/QrCodeStatusEnum.java
  13. 12 0
      src/main/java/com/ydtech/modules/admin/service/SysAreaService.java
  14. 37 165
      src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java
  15. 1 1
      src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java
  16. 540 371
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java
  17. 127 41
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  18. 31 47
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  19. 0 10
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyMainServiceImpl.java
  20. 0 8
      src/main/java/com/ydtech/modules/ins/controller/InsOrderController.java
  21. 0 8
      src/main/java/com/ydtech/modules/ins/controller/InsTiananController.java
  22. 5 9
      src/main/java/com/ydtech/modules/ins/dao/impl/InsDeptFeeDaoImpl.java
  23. 0 4
      src/main/java/com/ydtech/modules/ins/model/InsDeptFee.java
  24. 3 0
      src/main/java/com/ydtech/modules/ins/model/InsOrdersExcel.java
  25. 3 3
      src/main/java/com/ydtech/modules/ins/model/guoren/CarPriceReq.java
  26. 1 1
      src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java
  27. 4 1
      src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java
  28. 35 0
      src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java
  29. 3 7
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Base.java
  30. 1 2
      src/main/java/com/ydtech/modules/ins/model/zm/ZmCarModel.java
  31. 3 0
      src/main/java/com/ydtech/modules/inv/controller/InvReceivableController.java
  32. 9 0
      src/main/java/com/ydtech/modules/inv/controller/InvSourceController.java
  33. 3 2
      src/main/java/com/ydtech/modules/inv/dao/InvAccountIncoiceMapper.java
  34. 2 1
      src/main/java/com/ydtech/modules/inv/model/InvAccountIncoice.java
  35. 2 1
      src/main/java/com/ydtech/modules/inv/model/InvAccountOperate.java
  36. 15 0
      src/main/java/com/ydtech/modules/inv/model/InvAccountOperateResult.java
  37. 12 0
      src/main/java/com/ydtech/modules/inv/model/excel/InvSourceExcel.java
  38. 20 0
      src/main/java/com/ydtech/modules/inv/model/po/InvSource.java
  39. 24 0
      src/main/java/com/ydtech/modules/inv/model/vo/InvSourceQueryVo.java
  40. 6 0
      src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementQueryVo.java
  41. 4 0
      src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementVo.java
  42. 5 2
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountExcelServiceImpl.java
  43. 20 14
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountIncoiceServiceImpl.java
  44. 5 2
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOperateServiceImpl.java
  45. 21 6
      src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java
  46. 20 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvSourceServiceImpl.java
  47. 23 6
      src/main/java/com/ydtech/modules/inv/utils/EasyExcelUtils.java
  48. 0 1
      src/main/java/com/ydtech/modules/inv/utils/excel/InvSourceDataListener.java
  49. 0 1
      src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java
  50. 26 0
      src/main/java/com/ydtech/modules/order/components/FileComponents.java
  51. 227 0
      src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java
  52. 6 6
      src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiQuotationProcessorComponent.java
  53. 30 28
      src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiRequestApiComponents.java
  54. 115 0
      src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java
  55. 3 0
      src/main/java/com/ydtech/modules/order/controller/DaJiaOrderController.java
  56. 0 3
      src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java
  57. 2 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  58. 48 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/BoHaiEncrypted.java
  59. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/AuditStatus.java
  60. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CertType.java
  61. 46 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/Coverages.java
  62. 27 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CustomerType.java
  63. 55 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/DocumentClass.java
  64. 23 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/FormatType.java
  65. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/InvoiceType.java
  66. 18 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/PayResult.java
  67. 46 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/RequestType.java
  68. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResponseCode.java
  69. 35 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResultCode.java
  70. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleAffNature.java
  71. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleKind.java
  72. 23 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleUsage.java
  73. 31 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleUsageDetail.java
  74. 89 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/BoHaiBaseRequest.java
  75. 42 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ElectronicPolicyRequest.java
  76. 30 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/GenerateOrderNoRequest.java
  77. 78 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java
  78. 55 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ManualReviewRequest.java
  79. 42 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsDetailsRequest.java
  80. 110 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsRequest.java
  81. 21 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentCallbackRequest.java
  82. 31 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java
  83. 248 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/QuotationRequest.java
  84. 17 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/RevocationUnderwritingRequest.java
  85. 31 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/StatusDocumentsRequest.java
  86. 82 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java
  87. 563 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleConfirmationReqeust.java
  88. 58 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleTypeQueryRequest.java
  89. 35 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/BoHaiBaseResponse.java
  90. 36 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/CallbackResponse.java
  91. 30 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/ElectronicPolicyResponse.java
  92. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/GenerateOrderNoResponse.java
  93. 20 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/ImageUploadResponse.java
  94. 54 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsDetailsResponse.java
  95. 72 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsResponse.java
  96. 42 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/PaymentResponse.java
  97. 312 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/QuotationResponse.java
  98. 15 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/RevocationUnderwritingResponse.java
  99. 49 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/StatusDocumentsResponse.java
  100. 138 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java

+ 3 - 0
src/main/java/com/ydtech/components/TokenInterceptor.java

@@ -19,6 +19,9 @@ public class TokenInterceptor {
         notMatchList.add("/api/demo/**"); // 演示接口
         notMatchList.add("/captcha.jpg**"); // 验证码
         notMatchList.add("/login");
+        notMatchList.add("/getQrCode");  //获取登录二维码
+        notMatchList.add("/scanQrCode");  //扫描登录二维码
+        notMatchList.add("/getQrCodeStatus");  //获取登录二维码状态
 
         notMatchList.add("/wechat/login");  // 微信登陆
 

+ 31 - 0
src/main/java/com/ydtech/config/properties/BohaiApiConfigurationProperties.java

@@ -0,0 +1,31 @@
+package com.ydtech.config.properties;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "bohai.api")
+public class BohaiApiConfigurationProperties {
+
+    // 请求地址
+    private String url;
+
+    // 我司公钥
+    private String selfPublicKey;
+
+    // 我司私钥
+    private String selfPrivateKey;
+
+    // 渤海方公钥
+    private String boHaiPublicKey;
+
+    // 合作方代码,由渤海分配
+    private String insurerCode;
+
+    // 配置code
+    private String sysSourceCode;
+
+}

+ 0 - 2
src/main/java/com/ydtech/config/properties/HuaTaiApiConfigurationProperties.java

@@ -23,8 +23,6 @@ public class HuaTaiApiConfigurationProperties {
     private String selfPrivateKey;
     // 华泰RSA公钥
     private String huaTaiPublicKey;
-    //合作方代码,由华泰分配
-    private String insuredCode;
     //系统来源代码,由华泰分配
     private String sourceCode;
 

+ 1 - 1
src/main/java/com/ydtech/constants/InsuranceEnum.java

@@ -24,7 +24,7 @@ public enum InsuranceEnum {
     AZCN("AZCN", "京东安联财产保险有限公司", ""),
     BGIC("BGIC", "北部湾财产保险股份有限公司", ""),
     BOCI("BOCI", "中银保险有限公司", ""),
-    BPIC("BPIC", "渤海财产保险股份有限公司", ""),
+    BPIC("BPIC", "渤海财产保险股份有限公司", "bohai"),
     CAIC("CAIC", "长安责任保险股份有限公司", ""),
     CATH("CATH", "国泰财产保险有限责任公司", ""),
     CCBP("CCBP", "建信财产保险有限公司", ""),

+ 26 - 0
src/main/java/com/ydtech/constants/enums/dict/insurance/Property.java

@@ -0,0 +1,26 @@
+package com.ydtech.constants.enums.dict.insurance;
+
+import com.ydtech.aop.request.DictEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "property", desc = "(车辆用途)非营业")
+public enum Property {
+
+    P_1("1", "个人", 1, 0),
+    P_2("2", "企业", 2, 0),
+    P_3("3", "机关", 3, 0);
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+    // 排序
+    private final Integer sort;
+    // 状态  0 启用  1 不启用
+    private final Integer status;
+
+
+}

+ 3 - 2
src/main/java/com/ydtech/constants/enums/dict/organization/OrganizationSource.java

@@ -2,6 +2,7 @@ package com.ydtech.constants.enums.dict.organization;
 
 
 import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
@@ -13,11 +14,11 @@ import lombok.Getter;
 @AllArgsConstructor
 @Getter
 @DictEnum(key = "organizationSource", desc = "机构来源")
-public enum OrganizationSource {
+public enum OrganizationSource implements IBaseEnum {
 
     OS_1("1", "渠道", 0, 0),
     OS_2("2", "个代", 1, 0),
-    OS_3("3", "服务", 2, 0);
+    OS_3("3", "电销", 2, 0);
 
     // 编号
     private final String code;

+ 107 - 0
src/main/java/com/ydtech/modules/admin/controller/SysLoginController.java

@@ -3,6 +3,8 @@ package com.ydtech.modules.admin.controller;
 import cn.dev33.satoken.session.SaSession;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.code.kaptcha.Producer;
 import com.ydtech.config.MasterPasswordConfig;
 import com.ydtech.core.page.HttpResult;
@@ -10,7 +12,11 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysRole;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.LoginBean;
+import com.ydtech.modules.admin.model.vo.LoginTicket;
 import com.ydtech.modules.admin.model.vo.PhoneLoginVo;
+import com.ydtech.modules.admin.model.vo.QrCodeStatusEnum;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.utils.RedisUtils;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.security.utils.PasswordUtils;
@@ -362,5 +368,106 @@ public class SysLoginController {
         return HttpResult.ok("退出登录成功");
     }
 
+    /**
+     * 获取二维码生成的uuid
+     */
+    @GetMapping("/getQrCode")
+    public HttpResult getQrCode(@RequestParam String uuid) throws JsonProcessingException {
+//        String uuid = UUID.randomUUID().toString();
+        int statusCode = QrCodeStatusEnum.WAITING.getStatusCode();
+        LoginTicket loginTicket = new LoginTicket();
+        // 二维码最初为 waitting 状态
+        loginTicket.setStatusCode(statusCode);
+        loginTicket.setUuid(uuid);
+        ObjectMapper objectMapper = new ObjectMapper();
+        String jsonContent = objectMapper.writeValueAsString(loginTicket);
+        redisTemplate.opsForValue().set(uuid, jsonContent);
+        //设置过期时间60秒
+        redisTemplate.expire(uuid, 60, TimeUnit.SECONDS);
+
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("uuid", uuid);
+        resultMap.put("statusCode", QrCodeStatusEnum.WAITING.getStatusValue());
+        return HttpResult.ok(resultMap);
+    }
+
+    /**
+     * 扫描二维码 改变redis中相关uuid状态并于对应用户关联
+     */
+    @GetMapping("/scanQrCode")
+    public HttpResult scanQrCode(@RequestParam String uuid) {
+        Map<String, Object> data = new HashMap<>();
+        try {
+            ObjectMapper objectMapper = new ObjectMapper();
+            String content = redisTemplate.opsForValue().get(uuid);
+            LoginTicket loginTicket = objectMapper.readValue(content, LoginTicket.class);
+
+            // redis 中 uuid的过期时间
+            Long expired = RedisUtils.timeToLive(uuid);
+            boolean valid = loginTicket != null &&
+                    QrCodeStatusEnum.WAITING.getStatusCode().equals(loginTicket.getStatusCode()) &&
+                    expired != null &&
+                    expired >= 0;
+            if (valid) {
+                String user = BaseController.getUser().getId();
+                if (user == null) {
+                    throw new RuntimeException("用户未登录");
+                }
+                // 修改扫码状态
+                loginTicket.setStatusCode(QrCodeStatusEnum.SCANNED.getStatusCode());
+                // 将二维码与用户进行关联
+                loginTicket.setUserId(user);
+                String jsonContent = objectMapper.writeValueAsString(loginTicket);
+                redisTemplate.opsForValue().set(uuid, jsonContent);
+                data.put("statusCode", QrCodeStatusEnum.SCANNED.getStatusCode());
+                return HttpResult.ok(data);
+            } else {
+                data.put("statusCode", QrCodeStatusEnum.INVALID);
+                return HttpResult.error("二维码已过期");
+            }
+        } catch (RuntimeException | JsonProcessingException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     *  轮询接口 获取二维码状态
+     */
+    @GetMapping("/getQrCodeStatus")
+    public HttpResult getQrCodeStatus(HttpServletRequest request, HttpServletResponse response,
+        @RequestParam String uuid) throws JsonProcessingException {
+
+        Map<Object, Object> resultMap = new HashMap<>();
+
+        ObjectMapper objectMapper = new ObjectMapper();
+        String content = redisTemplate.opsForValue().get(uuid);
+        LoginTicket loginTicket = objectMapper.readValue(content, LoginTicket.class);
 
+        if (loginTicket == null) {
+            resultMap.put("statusCode", QrCodeStatusEnum.INVALID);
+            resultMap.put("status", QrCodeStatusEnum.INVALID.getStatusValue());
+            return HttpResult.ok(resultMap);
+        }
+        Integer statusCode = loginTicket.getStatusCode();
+        //二维码状态为待扫描
+        if (statusCode.equals(QrCodeStatusEnum.WAITING.getStatusCode())) {
+            resultMap.put("statusCode", statusCode);
+            resultMap.put("status", QrCodeStatusEnum.WAITING.getStatusValue());
+        }
+        //二维码状态为无效时删除redis中所存的uuid
+        if (statusCode.equals(QrCodeStatusEnum.INVALID.getStatusCode())) {
+            resultMap.put("statusCode", statusCode);
+            resultMap.put("status", QrCodeStatusEnum.INVALID.getStatusValue());
+            RedisUtils.del(uuid);
+        }
+        //二维码状态为以扫描
+        SysUser user = sysUserService.getById(loginTicket.getUserId());
+        if (statusCode.equals(QrCodeStatusEnum.SCANNED.getStatusCode())) {
+            String token = StpUtil.createLoginSession(user.getId());
+            resultMap.put("token", token);
+            resultMap.put("statusCode", statusCode);
+            resultMap.put("status", QrCodeStatusEnum.SCANNED.getStatusValue());
+        }
+        return HttpResult.ok(resultMap);
+    }
 }

+ 1 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -455,6 +455,7 @@ public class SysUserController extends BaseController {
             SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
             sysUser.setDeptName(sysDept.getName());
             sysUser.setIsHasAddUser(sysDept.getManagementSource()!=null?1:0);
+            sysUser.setManagementSource(sysDept.getManagementSource());
         }
 
         EsmUserReferrer eur = esmUserReferrerService.getById(sysUser.getId());

+ 4 - 1
src/main/java/com/ydtech/modules/admin/model/SysUser.java

@@ -10,7 +10,6 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.model.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import io.swagger.models.auth.In;
 import lombok.Data;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -158,6 +157,10 @@ public class SysUser extends BaseEntity {
     @Excel(name = "推荐人名称")
     private String referrerName;
 
+    @TableField(exist = false)
+    @ApiModelProperty("机构来源")
+    private String managementSource;
+
     @TableField(value = "position_id")
     @ApiModelProperty("岗位id")
     private String positionId;

+ 11 - 0
src/main/java/com/ydtech/modules/admin/model/vo/LoginTicket.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.admin.model.vo;
+
+import lombok.Data;
+
+@Data
+public class LoginTicket {
+    private String userId;
+    private String uuid;
+    private Integer statusCode;
+
+}

+ 4 - 7
src/main/java/com/ydtech/modules/admin/model/vo/PersonAreaVo.java

@@ -1,11 +1,8 @@
 package com.ydtech.modules.admin.model.vo;
 
-import com.ydtech.modules.admin.model.SysArea;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.util.List;
 
 
 @Data
@@ -19,12 +16,12 @@ public class PersonAreaVo implements Serializable {
 
 
     //市
-    private String CityCode;
-    private String CityName;
+    private String cityCode;
+    private String cityName;
 
     //区
-    private String CountyCode;
-    private String CountyName;
+    private String countyCode;
+    private String countyName;
 
 
 }

+ 24 - 0
src/main/java/com/ydtech/modules/admin/model/vo/QrCodeStatusEnum.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.model.vo;
+
+
+public enum QrCodeStatusEnum {
+    WAITING(10000,"待扫描"),
+    SCANNED(20000,"已扫描"),
+    INVALID(30000,"二维码无效");
+
+    private Integer statusCode;
+    private String statusValue;
+
+    QrCodeStatusEnum(Integer statusCode, String statusValue) {
+        this.statusCode = statusCode;
+        this.statusValue = statusValue;
+    }
+
+    public Integer getStatusCode() {
+        return statusCode;
+    }
+
+    public String getStatusValue() {
+        return statusValue;
+    }
+}

+ 12 - 0
src/main/java/com/ydtech/modules/admin/service/SysAreaService.java

@@ -53,5 +53,17 @@ public interface SysAreaService extends IService<SysArea> {
         return queryByAddress(address, idcard);
     }
 
+    /**
+     * 使用永诚提供地省市区 地址身份证号 获取省市区
+     *
+     * @param address 地址
+     * @param idcard  身份证
+     * @return 省市区实体
+     */
+    @DynamicName(tableName = "ins_bohai_area")
+    default PersonAreaVo queryByAddressBoHai(String address, String idcard) {
+        return queryByAddress(address, idcard);
+    }
+
 
 }

+ 37 - 165
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -7,11 +7,14 @@ import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.service.InsOrdersService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.regex.Pattern;
 
 /**
@@ -32,170 +35,21 @@ public class RuleAttrMappingVo {
         this.value = value;
     }
 
-    public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(BaseQuoteInfoVo baseQuoteInfoVo, QuoteRespVo quoteRespVo) {
-        List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
-        CarInfoVo carInfo = baseQuoteInfoVo.getCarInfo();
-        //车牌号
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
-        //品牌型号
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getCarBrand()));
-        //座位数
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberofSeats", carInfo.getSeatCount()));
-        //新车购置价
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberofSeats", carInfo.getPurchasePrice()));
-        //车辆用途
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleUsage", carInfo.getVehicleclass()));
-        //车辆种类
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleType", carInfo.getCimodelclass()));
-        //核定载质量
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
-        //整备质量
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", carInfo.getVehicleweight()));
-        //能源类型
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("EnergyType", carInfo.getEnergyType()));
-        //注册日期
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("RegistrationDate", carInfo.getRegisterDate()));
-        //是否过户
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("WhetherTransferred", carInfo.getTransferFlag()));
-        //是否新车
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("WhetherNewCar", carInfo.getNoLicenseFlag()));
-        //发证日期
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
-        //车长
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleLength", carInfo.getCarLength()));
-        //转续保
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("RenewalofInsurance", carInfo.getRenewalFlag()));
-
-        CustomerInfoVo ownerInfo = baseQuoteInfoVo.getOwnerInfo();
-        //车主 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber().substring(0, 6)));
-        //车主 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
-        //车主 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender()));
-        //车主 姓名
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
-
-        CustomerInfoVo policyHolderInfo = baseQuoteInfoVo.getPolicyHolderInfo();
-        //投保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
-        //投保人 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersAge", policyHolderInfo.getAge()));
-        //投保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersSex", policyHolderInfo.getGender()));
-
-        CustomerInfoVo insuredPersonInfo = baseQuoteInfoVo.getInsuredPersonInfo();
-        //被保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber().substring(0, 6)));
-        //被保人 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
-        //被保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender()));
-
-        //险别信息
-        List<KindInfoVo> kindInfoVos = baseQuoteInfoVo.getKindList();
-        kindInfoVos.forEach(kindInfoVo -> {
-            //机动车损失险
-            if(InsurKind.A.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("MotorVehicleDamageInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //第三者责任险
-            if(InsurKind.B.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //司机责任险
-            if(InsurKind.D3.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //乘客责任险
-            if(InsurKind.D4.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //车身划痕险
-            if(InsurKind.L.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarScratchInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //绝对免赔率特约险(车损)
-            if(InsurKind.MJ1.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleDamageAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //绝对免赔率特约险(三者)
-            if(InsurKind.MJ2.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //绝对免赔率特约险(司机)
-            if(InsurKind.MJ3.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //绝对免赔率特约险(乘客)
-            if(InsurKind.MJ4.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //附加医保-三者
-            if(InsurKind.SY_FJ_YBW1.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //附加医保-座位险(乘客)
-            if(InsurKind.SY_FJ_YBW2.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //附加医保-座位险(司机)
-            if(InsurKind.SY_FJ_YBW3.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //法定节假日限额翻倍险
-            if(InsurKind.BD.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("LegalHolidayLimitDoublingInsurance", String.valueOf(kindInfoVo.getAmount())));
-            //道路救援服务特约条款
-            if(InsurKind.TY1.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("RoadsideAssistanceServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
-            //车辆安全检测特约条款
-            if(InsurKind.TY2.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleSafetyInspectionSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
-            //代为驾驶服务特约条款
-            if(InsurKind.TY3.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteDrivingServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
-            //代为送检服务特约条款
-            if(InsurKind.TY4.equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteInspectionServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
-        });
-        //交强保费
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryTrafficAccidentLiabilityInsurancePremium", String.valueOf(quoteRespVo.getJqPremium())));
-        //车船税
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleandVesselTax", String.valueOf(quoteRespVo.getTaxAmount())));
-        //非车险
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NonMotorInsurance", String.valueOf(quoteRespVo.getJyPremium())));
-        //总折扣率
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalDiscountRate", String.valueOf(quoteRespVo.getTotalAdjustRate())));
-        //交强折扣
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceDiscount", String.valueOf(quoteRespVo.getJqAdjustRate())));
-        //商业折扣
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialDiscount", String.valueOf(quoteRespVo.getSyAdjustRate())));
-        //数值型总评分
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumericalOverallRating", String.valueOf(quoteRespVo.getILogPreUdwMess())));
-        //交强评分
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(quoteRespVo.getJqScore())));
-        //商业评分
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialRating", String.valueOf(quoteRespVo.getSyScore())));
-        //交强赔付率
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsurancePayoutRate", String.valueOf(quoteRespVo.getJqLossRation())));
-        //商业赔付率
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialPayoutRate", String.valueOf(quoteRespVo.getSyLossRation())));
-        //总赔付率
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalPayoutRate", String.valueOf(quoteRespVo.getLossRation())));
-        //真假单交
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthenticAndFakeOrdersExchange", quoteRespVo.getIszdj()));
-        //出险次数
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberOfClaims", quoteRespVo.getAccidentInfoStr()));
-        //太平的分区
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PeacefulDistrict", quoteRespVo.getExtendInfo()));
-        return ruleAttrMappingVoList;
-    }
-
-
     public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(InsAreaCompany insAreaCompany,InsOrders insOrders) {
         List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
         CarInfoVo carInfo = insOrders.getCarinfo().toJavaObject(CarInfoVo.class);
         //车牌号
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
         //品牌型号
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getCarBrand()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getModelcname()));
         //座位数
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerCarSeatingCapacity", carInfo.getSeatCount()));
         //新车购置价
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("PurchasePriceofNewVehicle", carInfo.getPurchasePrice()));
         //车辆用途
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleUsage", carInfo.getVehicleclass()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NatureOfUse", carInfo.getVehicleUse()));
         //车辆种类
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleType", carInfo.getCimodelclass()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarType", carInfo.getCimodelclass()));
         //核定载质量
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
         //整备质量
@@ -228,11 +82,11 @@ public class RuleAttrMappingVo {
 
         CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
         //投保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
         //投保人 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersAge", policyHolderInfo.getAge()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAge", policyHolderInfo.getAge()));
         //投保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersSex", policyHolderInfo.getGender()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender()));
 
         CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
         //被保人 证件号码(前6位)
@@ -256,7 +110,7 @@ public class RuleAttrMappingVo {
                 ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
             //乘客责任险
             if(InsurKind.D4.getCode().equals(kindInfoVo.getKindCode()))
-                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerLiabilityInsurance", String.valueOf(kindInfoVo.getUnitAmount())));
             //车身划痕险
             if(InsurKind.L.getCode().equals(kindInfoVo.getKindCode()))
                 ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarScratchInsurance", String.valueOf(kindInfoVo.getAmount())));
@@ -312,18 +166,36 @@ public class RuleAttrMappingVo {
 //        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialDiscount", String.valueOf(quoteRespVo.getSyAdjustRate())));
         //数值型总评分
         Pattern pattern = Pattern.compile("[0-9]*");
-        if(pattern.matcher(insAreaCompany.getScore()).matches())
-        {
-            //数值型评分
-            ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumericalOverallRating", String.valueOf(insAreaCompany.getScore())));
-        }else{
-            //字母型评分
-            ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedRating", String.valueOf(insAreaCompany.getScore())));
+        if(insAreaCompany.getScore() != null) {
+            if (pattern.matcher(insAreaCompany.getScore()).matches()) {
+                //数值型评分
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumericalOverallRating", String.valueOf(insAreaCompany.getScore())));
+            } else {
+                //字母型评分
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedRating", String.valueOf(insAreaCompany.getScore())));
+            }
         }
         //交强评分
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
+        if(insAreaCompany.getJqScore() != null){
+            if(pattern.matcher(insAreaCompany.getJqScore()).matches()) {
+                //数值型评分
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
+            } else {
+                //字母型评分
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedCompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
+            }
+        }
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
         //商业评分
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialRating", String.valueOf(insAreaCompany.getSyScore())));
+        if(insAreaCompany.getSyScore() != null){
+            if(pattern.matcher(insAreaCompany.getSyScore()).matches()) {
+                //数值型评分
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialRating", String.valueOf(insAreaCompany.getSyScore())));
+            } else {
+                //字母型评分
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedCommercialRating", String.valueOf(insAreaCompany.getSyScore())));
+            }
+        }
         //交强赔付率
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsurancePayoutRate", String.valueOf(insAreaCompany.getJqLossRation())));
         //商业赔付率

+ 1 - 1
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java

@@ -30,7 +30,7 @@ public interface FeeRuleSchemeService {
      */
     public QueryOrderFeeVo queryFeeOrderInfo(String companyId);
 
-    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo);
+//    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo);
 
     /**
      * 比较和更新总费用比例

+ 540 - 371
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -28,6 +28,7 @@ import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.service.*;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.math.NumberUtils;
 import org.springframework.stereotype.Service;
@@ -1316,6 +1317,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         insFeeOrderService.insertCompanyAndOrders(insFeeOrder);
     }
 
+    @Override
+    public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
+        return null;
+    }
+
     public void compareAndUpdateFeeOrderInfo(String insOrderNo, String jqCostsProportionStr, String syCostsProportionStr, String dealUser) {
         InsFeeOrder insFeeOrder = insFeeOrderService.getByInsOrderNo(insOrderNo);
         InsCopyFeeOrder insCopyFeeOrder = new InsCopyFeeOrder(insFeeOrder, insOrderNo, dealUser);
@@ -1370,78 +1376,79 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         return premium;
     }
 
-    public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
-        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
-        QueryOrderCommissionVo orderCommissionVo = new QueryOrderCommissionVo();
-        OrderFeeVo jqOrderFeeVo = new OrderFeeVo();
-        OrderFeeVo syOrderFeeVo = new OrderFeeVo();
-        OrderFeeVo fcOrderFeeVo = new OrderFeeVo();
-        AdjustFeeDescVo adjustFeeDescVo = new AdjustFeeDescVo();//费用审核时使用
-        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
-        InsFeeOrder insFeeOrder = insFeeOrderService.getByInsOrderNo(insAreaCompany.getId());
-
-        if (insFeeOrder != null) {
-            if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() == 0) {//当为单交业务时
-                jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
-                jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
-                jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
-                jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums()) + "元");
-                jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getJqCostsProportion()));
-                /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
-                orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "JQ");
-
-            } else if (insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0 && insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() == 0) {//当为单商业务时
-                syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
-                syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
-                syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
-                syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums()) + "元");
-                syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getSyCostsProportion()));
-                /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
-                orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "SY");
-            } else if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0) {//当为交商业务时
-                QueryOrderFeeVo queryOrderFeeVoTemp = packageOrderFeeInfoAll(insFeeOrder);
-                //获取交强险费用明细
-                jqOrderFeeVo = queryOrderFeeVoTemp.getJqCoderFeeVo();
-                jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
-                jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
-                jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums()) + "元");
-                jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getJqCostsProportion()));
-                //获取商业险费用明细
-                syOrderFeeVo = queryOrderFeeVoTemp.getSyCoderFeeVo();
-                syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
-                syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
-                syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums()) + "元");
-                syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getSyCostsProportion()));
-                /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
-                orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "ALL");
-            }
-            queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
-            queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
-            queryOrderFeeVo.setFcCoderFeeVo(fcOrderFeeVo);
-            queryOrderFeeVo.setOrderCommissionVo(orderCommissionVo);
-            //添加费用审核时 使用参数
-            if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0) {
-                adjustFeeDescVo.setJqPremium(convertToString(insFeeOrder.getJqNoTaxPremium()));
-                adjustFeeDescVo.setJqCommissionRate(convertToString(insFeeOrder.getJqSuperviseCostsProportion()));
-                adjustFeeDescVo.setJqCommissionAmount(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()));
-                adjustFeeDescVo.setJqOtherFeeRate(convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())));
-                adjustFeeDescVo.setJqOtherFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())));
-                adjustFeeDescVo.setJqAllFeeRate(convertToString(insFeeOrder.getJqCostsProportion()));
-                adjustFeeDescVo.setJqAllFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums()));
-            }
-            if (insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0) {
-                adjustFeeDescVo.setSyPremium(convertToString(insFeeOrder.getSyNoTaxPremium()));
-                adjustFeeDescVo.setSyCommissionRate(convertToString(insFeeOrder.getSySuperviseCostsProportion()));
-                adjustFeeDescVo.setSyCommissionAmount(convertToString(insFeeOrder.getSySuperviseCostsPremiums()));
-                adjustFeeDescVo.setSyOtherFeeRate(convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())));
-                adjustFeeDescVo.setSyOtherFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())));
-                adjustFeeDescVo.setSyAllFeeRate(convertToString(insFeeOrder.getSyCostsProportion()));
-                adjustFeeDescVo.setSyAllFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums()));
-            }
-            queryOrderFeeVo.setAdjustFeeDescVo(adjustFeeDescVo);
-        }
-        return queryOrderFeeVo;
-    }
+//    public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
+//        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
+//        QueryOrderCommissionVo orderCommissionVo = new QueryOrderCommissionVo();
+//        OrderFeeVo jqOrderFeeVo = new OrderFeeVo();
+//        OrderFeeVo syOrderFeeVo = new OrderFeeVo();
+//        OrderFeeVo fcOrderFeeVo = new OrderFeeVo();
+//        AdjustFeeDescVo adjustFeeDescVo = new AdjustFeeDescVo();//费用审核时使用
+//        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+//
+//        InsFeeOrder insFeeOrder = insFeeOrderService.getByInsOrderNo(insAreaCompany.getId());
+//
+//        if (insFeeOrder != null) {
+//            if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() == 0) {//当为单交业务时
+//                jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+//                jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
+//                jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
+//                jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums()) + "元");
+//                jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getJqCostsProportion()));
+//                /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
+//                orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "JQ");
+//
+//            } else if (insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0 && insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() == 0) {//当为单商业务时
+//                syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+//                syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
+//                syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
+//                syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums()) + "元");
+//                syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getSyCostsProportion()));
+//                /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
+//                orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "SY");
+//            } else if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0) {//当为交商业务时
+//                QueryOrderFeeVo queryOrderFeeVoTemp = packageOrderFeeInfoAll(insFeeOrder);
+//                //获取交强险费用明细
+//                jqOrderFeeVo = queryOrderFeeVoTemp.getJqCoderFeeVo();
+//                jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
+//                jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
+//                jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums()) + "元");
+//                jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getJqCostsProportion()));
+//                //获取商业险费用明细
+//                syOrderFeeVo = queryOrderFeeVoTemp.getSyCoderFeeVo();
+//                syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
+//                syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
+//                syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums()) + "元");
+//                syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getSyCostsProportion()));
+//                /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
+//                orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "ALL");
+//            }
+//            queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
+//            queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
+//            queryOrderFeeVo.setFcCoderFeeVo(fcOrderFeeVo);
+//            queryOrderFeeVo.setOrderCommissionVo(orderCommissionVo);
+//            //添加费用审核时 使用参数
+//            if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0) {
+//                adjustFeeDescVo.setJqPremium(convertToString(insFeeOrder.getJqNoTaxPremium()));
+//                adjustFeeDescVo.setJqCommissionRate(convertToString(insFeeOrder.getJqSuperviseCostsProportion()));
+//                adjustFeeDescVo.setJqCommissionAmount(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()));
+//                adjustFeeDescVo.setJqOtherFeeRate(convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())));
+//                adjustFeeDescVo.setJqOtherFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())));
+//                adjustFeeDescVo.setJqAllFeeRate(convertToString(insFeeOrder.getJqCostsProportion()));
+//                adjustFeeDescVo.setJqAllFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums()));
+//            }
+//            if (insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0) {
+//                adjustFeeDescVo.setSyPremium(convertToString(insFeeOrder.getSyNoTaxPremium()));
+//                adjustFeeDescVo.setSyCommissionRate(convertToString(insFeeOrder.getSySuperviseCostsProportion()));
+//                adjustFeeDescVo.setSyCommissionAmount(convertToString(insFeeOrder.getSySuperviseCostsPremiums()));
+//                adjustFeeDescVo.setSyOtherFeeRate(convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())));
+//                adjustFeeDescVo.setSyOtherFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())));
+//                adjustFeeDescVo.setSyAllFeeRate(convertToString(insFeeOrder.getSyCostsProportion()));
+//                adjustFeeDescVo.setSyAllFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums()));
+//            }
+//            queryOrderFeeVo.setAdjustFeeDescVo(adjustFeeDescVo);
+//        }
+//        return queryOrderFeeVo;
+//    }
 
     private QueryOrderCommissionVo getQueryOrderCommission(QueryOrderCommissionVo orderCommissionVo, InsFeeOrder insFeeOrder,
      String businessType) {
@@ -1613,293 +1620,455 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         return totalCostsPremiums;
     }
 
-    //把取出的费用信息转换为页面需要展示的数据
-    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo) {
-        List<QueryOrderFeeResultVo> resultList = new ArrayList<>();
-        OrderFeeVo jqOrderFeeVo = orderFeeVo.getJqCoderFeeVo();
-        OrderFeeVo syOrderFeeVo = orderFeeVo.getSyCoderFeeVo();
-        OrderFeeVo fcOrderFeeVo = orderFeeVo.getFcCoderFeeVo();
-
-        //总费用
-        QueryOrderFeeResultVo feeResultVo1 = new QueryOrderFeeResultVo();
-        feeResultVo1.setDescSerialNo("1");
-        feeResultVo1.setFeeTypeName("总费用");
-        feeResultVo1.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getCostsProportion() != null ? jqOrderFeeVo.getCostsProportion() :
-         "-");
-        feeResultVo1.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getCostsPremiums() != null ? jqOrderFeeVo.getCostsPremiums() :
-        "-");
-        feeResultVo1.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getCostsProportion() != null ? syOrderFeeVo.getCostsProportion() :
-         "-");
-        feeResultVo1.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getCostsPremiums() != null ? syOrderFeeVo.getCostsPremiums() :
-        "-");
-        feeResultVo1.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getCostsProportion() != null ? fcOrderFeeVo.getCostsProportion() :
-         "-");
-        feeResultVo1.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getCostsPremiums() != null ? fcOrderFeeVo.getCostsPremiums() :
-        "-");
-        feeResultVo1.setJqFeeRateAll(jqOrderFeeVo != null && jqOrderFeeVo.getCostsProportionAll() != null ?
-         jqOrderFeeVo.getCostsProportionAll() : "-");
-        feeResultVo1.setJqFeeAmountAll(jqOrderFeeVo != null && jqOrderFeeVo.getCostsPremiumsAll() != null ?
-         jqOrderFeeVo.getCostsPremiumsAll() : "-");
-        feeResultVo1.setSyFeeRateAll(syOrderFeeVo != null && syOrderFeeVo.getCostsProportionAll() != null ?
-         syOrderFeeVo.getCostsProportionAll() : "-");
-        feeResultVo1.setSyFeeAmountAll(syOrderFeeVo != null && syOrderFeeVo.getCostsPremiumsAll() != null ?
-         syOrderFeeVo.getCostsPremiumsAll() : "-");
-        feeResultVo1.setFcFeeRateAll(fcOrderFeeVo != null && fcOrderFeeVo.getCostsProportionAll() != null ?
-         fcOrderFeeVo.getCostsProportionAll() : "-");
-        feeResultVo1.setFcFeeAmountAll(fcOrderFeeVo != null && fcOrderFeeVo.getCostsPremiumsAll() != null ?
-         fcOrderFeeVo.getCostsPremiumsAll() : "-");
-        resultList.add(feeResultVo1);
-        //一级管理费用
-        QueryOrderFeeResultVo feeResultVo2 = new QueryOrderFeeResultVo();
-        feeResultVo2.setDescSerialNo("2");
-        feeResultVo2.setFeeTypeName("一级管理费");
-        feeResultVo2.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getFirstDeptProportion() != null ?
-         jqOrderFeeVo.getFirstDeptProportion() : "-");
-        feeResultVo2.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getFirstDeptPremiums() != null ?
-         jqOrderFeeVo.getFirstDeptPremiums() : "-");
-        feeResultVo2.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getFirstDeptProportion() != null ?
-         syOrderFeeVo.getFirstDeptProportion() : "-");
-        feeResultVo2.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getFirstDeptPremiums() != null ?
-         syOrderFeeVo.getFirstDeptPremiums() : "-");
-        feeResultVo2.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getFirstDeptProportion() != null ?
-         fcOrderFeeVo.getFirstDeptProportion() : "-");
-        feeResultVo2.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getFirstDeptPremiums() != null ?
-         fcOrderFeeVo.getFirstDeptPremiums() : "-");
-        feeResultVo2.setJqFeeRateAll(feeResultVo2.getJqFeeRate());
-        feeResultVo2.setJqFeeAmountAll(feeResultVo2.getJqFeeAmount());
-        feeResultVo2.setSyFeeRateAll(feeResultVo2.getSyFeeRate());
-        feeResultVo2.setSyFeeAmountAll(feeResultVo2.getSyFeeAmount());
-        feeResultVo2.setFcFeeRateAll(feeResultVo2.getFcFeeRate());
-        feeResultVo2.setFcFeeAmountAll(feeResultVo2.getFcFeeAmount());
-        resultList.add(feeResultVo2);
-        //二级管理费用
-        QueryOrderFeeResultVo feeResultVo3 = new QueryOrderFeeResultVo();
-        feeResultVo3.setDescSerialNo("3");
-        feeResultVo3.setFeeTypeName("二级管理费");
-        feeResultVo3.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getSecondDeptProportion() != null ?
-         jqOrderFeeVo.getSecondDeptProportion() : "-");
-        feeResultVo3.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getSecondDeptPremiums() != null ?
-         jqOrderFeeVo.getSecondDeptPremiums() : "-");
-        feeResultVo3.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getSecondDeptProportion() != null ?
-         syOrderFeeVo.getSecondDeptProportion() : "-");
-        feeResultVo3.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getSecondDeptPremiums() != null ?
-         syOrderFeeVo.getSecondDeptPremiums() : "-");
-        feeResultVo3.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getSecondDeptProportion() != null ?
-         fcOrderFeeVo.getSecondDeptProportion() : "-");
-        feeResultVo3.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getSecondDeptPremiums() != null ?
-         fcOrderFeeVo.getSecondDeptPremiums() : "-");
-        feeResultVo3.setJqFeeRateAll(feeResultVo3.getJqFeeRate());
-        feeResultVo3.setJqFeeAmountAll(feeResultVo3.getJqFeeAmount());
-        feeResultVo3.setSyFeeRateAll(feeResultVo3.getSyFeeRate());
-        feeResultVo3.setSyFeeAmountAll(feeResultVo3.getSyFeeAmount());
-        feeResultVo3.setFcFeeRateAll(feeResultVo3.getFcFeeRate());
-        feeResultVo3.setFcFeeAmountAll(feeResultVo3.getFcFeeAmount());
-        resultList.add(feeResultVo3);
-        //三级管理费用
-        QueryOrderFeeResultVo feeResultVo4 = new QueryOrderFeeResultVo();
-        feeResultVo4.setDescSerialNo("4");
-        feeResultVo4.setFeeTypeName("三级管理费");
-        feeResultVo4.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getThirdDeptProportion() != null ?
-         jqOrderFeeVo.getThirdDeptProportion() : "-");
-        feeResultVo4.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getThirdDeptPremiums() != null ?
-         jqOrderFeeVo.getThirdDeptPremiums() : "-");
-        feeResultVo4.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getThirdDeptProportion() != null ?
-         syOrderFeeVo.getThirdDeptProportion() : "-");
-        feeResultVo4.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getThirdDeptPremiums() != null ?
-         syOrderFeeVo.getThirdDeptPremiums() : "-");
-        feeResultVo4.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getThirdDeptProportion() != null ?
-         fcOrderFeeVo.getThirdDeptProportion() : "-");
-        feeResultVo4.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getThirdDeptPremiums() != null ?
-         fcOrderFeeVo.getThirdDeptPremiums() : "-");
-        feeResultVo4.setJqFeeRateAll(feeResultVo4.getJqFeeRate());
-        feeResultVo4.setJqFeeAmountAll(feeResultVo4.getJqFeeAmount());
-        feeResultVo4.setSyFeeRateAll(feeResultVo4.getSyFeeRate());
-        feeResultVo4.setSyFeeAmountAll(feeResultVo4.getSyFeeAmount());
-        feeResultVo4.setFcFeeRateAll(feeResultVo4.getFcFeeRate());
-        feeResultVo4.setFcFeeAmountAll(feeResultVo4.getFcFeeAmount());
-        resultList.add(feeResultVo4);
-        //四级管理费用
-        QueryOrderFeeResultVo feeResultVo5 = new QueryOrderFeeResultVo();
-        feeResultVo5.setDescSerialNo("5");
-        feeResultVo5.setFeeTypeName("四级管理费");
-        feeResultVo5.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getForthDeptProportion() != null ?
-         jqOrderFeeVo.getForthDeptProportion() : "-");
-        feeResultVo5.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getForthDeptPremiums() != null ?
-         jqOrderFeeVo.getForthDeptPremiums() : "-");
-        feeResultVo5.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getForthDeptProportion() != null ?
-         syOrderFeeVo.getForthDeptProportion() : "-");
-        feeResultVo5.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getForthDeptPremiums() != null ?
-         syOrderFeeVo.getForthDeptPremiums() : "-");
-        feeResultVo5.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getForthDeptProportion() != null ?
-         fcOrderFeeVo.getForthDeptProportion() : "-");
-        feeResultVo5.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getForthDeptPremiums() != null ?
-         fcOrderFeeVo.getForthDeptPremiums() : "-");
-        feeResultVo5.setJqFeeRateAll(feeResultVo5.getJqFeeRate());
-        feeResultVo5.setJqFeeAmountAll(feeResultVo5.getJqFeeAmount());
-        feeResultVo5.setSyFeeRateAll(feeResultVo5.getSyFeeRate());
-        feeResultVo5.setSyFeeAmountAll(feeResultVo5.getSyFeeAmount());
-        feeResultVo5.setFcFeeRateAll(feeResultVo5.getFcFeeRate());
-        feeResultVo5.setFcFeeAmountAll(feeResultVo5.getFcFeeAmount());
-        resultList.add(feeResultVo5);
-        //五级管理费用
-        QueryOrderFeeResultVo feeResultVo6 = new QueryOrderFeeResultVo();
-        feeResultVo6.setDescSerialNo("6");
-        feeResultVo6.setFeeTypeName("五级管理费");
-        feeResultVo6.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getFifthDeptProportion() != null ?
-         jqOrderFeeVo.getFifthDeptProportion() : "-");
-        feeResultVo6.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getFifthDeptPremiums() != null ?
-         jqOrderFeeVo.getFifthDeptPremiums() : "-");
-        feeResultVo6.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getFifthDeptProportion() != null ?
-         syOrderFeeVo.getFifthDeptProportion() : "-");
-        feeResultVo6.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getFifthDeptPremiums() != null ?
-         syOrderFeeVo.getFifthDeptPremiums() : "-");
-        feeResultVo6.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getFifthDeptProportion() != null ?
-         fcOrderFeeVo.getFifthDeptProportion() : "-");
-        feeResultVo6.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getFifthDeptPremiums() != null ?
-         fcOrderFeeVo.getFifthDeptPremiums() : "-");
-        feeResultVo6.setJqFeeRateAll(feeResultVo6.getJqFeeRate());
-        feeResultVo6.setJqFeeAmountAll(feeResultVo6.getJqFeeAmount());
-        feeResultVo6.setSyFeeRateAll(feeResultVo6.getSyFeeRate());
-        feeResultVo6.setSyFeeAmountAll(feeResultVo6.getSyFeeAmount());
-        feeResultVo6.setFcFeeRateAll(feeResultVo6.getFcFeeRate());
-        feeResultVo6.setFcFeeAmountAll(feeResultVo6.getFcFeeAmount());
-        resultList.add(feeResultVo6);
-        //一级分销费
-        QueryOrderFeeResultVo feeResultVo7 = new QueryOrderFeeResultVo();
-        feeResultVo7.setDescSerialNo("7");
-        feeResultVo7.setFeeTypeName("一级分销费");
-        feeResultVo7.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getFirstRetailProportion() != null ?
-         jqOrderFeeVo.getFirstRetailProportion() : "-");
-        feeResultVo7.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getFirstRetailPremiums() != null ?
-         jqOrderFeeVo.getFirstRetailPremiums() : "-");
-        feeResultVo7.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getFirstRetailProportion() != null ?
-         syOrderFeeVo.getFirstRetailProportion() : "-");
-        feeResultVo7.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getFirstRetailPremiums() != null ?
-         syOrderFeeVo.getFirstRetailPremiums() : "-");
-        feeResultVo7.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getFirstRetailProportion() != null ?
-         fcOrderFeeVo.getFirstRetailProportion() : "-");
-        feeResultVo7.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getFirstRetailPremiums() != null ?
-         fcOrderFeeVo.getFirstRetailPremiums() : "-");
-        feeResultVo7.setJqFeeRateAll(feeResultVo7.getJqFeeRate());
-        feeResultVo7.setJqFeeAmountAll(feeResultVo7.getJqFeeAmount());
-        feeResultVo7.setSyFeeRateAll(feeResultVo7.getSyFeeRate());
-        feeResultVo7.setSyFeeAmountAll(feeResultVo7.getSyFeeAmount());
-        feeResultVo7.setFcFeeRateAll(feeResultVo7.getFcFeeRate());
-        feeResultVo7.setFcFeeAmountAll(feeResultVo7.getFcFeeAmount());
-        resultList.add(feeResultVo7);
-        //二级分销费
-        QueryOrderFeeResultVo feeResultVo8 = new QueryOrderFeeResultVo();
-        feeResultVo8.setDescSerialNo("8");
-        feeResultVo8.setFeeTypeName("二级分销费");
-        feeResultVo8.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getSecondRetailProportion() != null ?
-         jqOrderFeeVo.getSecondRetailProportion() : "-");
-        feeResultVo8.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getSecondRetailPremiums() != null ?
-         jqOrderFeeVo.getSecondRetailPremiums() : "-");
-        feeResultVo8.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getSecondRetailProportion() != null ?
-         syOrderFeeVo.getSecondRetailProportion() : "-");
-        feeResultVo8.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getSecondRetailPremiums() != null ?
-         syOrderFeeVo.getSecondRetailPremiums() : "-");
-        feeResultVo8.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getSecondRetailProportion() != null ?
-         fcOrderFeeVo.getSecondRetailProportion() : "-");
-        feeResultVo8.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getSecondRetailPremiums() != null ?
-         fcOrderFeeVo.getSecondRetailPremiums() : "-");
-        feeResultVo8.setJqFeeRateAll(feeResultVo8.getJqFeeRate());
-        feeResultVo8.setJqFeeAmountAll(feeResultVo8.getJqFeeAmount());
-        feeResultVo8.setSyFeeRateAll(feeResultVo8.getSyFeeRate());
-        feeResultVo8.setSyFeeAmountAll(feeResultVo8.getSyFeeAmount());
-        feeResultVo8.setFcFeeRateAll(feeResultVo8.getFcFeeRate());
-        feeResultVo8.setFcFeeAmountAll(feeResultVo8.getFcFeeAmount());
-        resultList.add(feeResultVo8);
-        //三级分销费
-        QueryOrderFeeResultVo feeResultVo9 = new QueryOrderFeeResultVo();
-        feeResultVo9.setDescSerialNo("9");
-        feeResultVo9.setFeeTypeName("三级分销费");
-        feeResultVo9.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getThirdRetailProportion() != null ?
-         jqOrderFeeVo.getThirdRetailProportion() : "-");
-        feeResultVo9.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getThirdRetailPremiums() != null ?
-         jqOrderFeeVo.getThirdRetailPremiums() : "-");
-        feeResultVo9.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getThirdRetailProportion() != null ?
-         syOrderFeeVo.getThirdRetailProportion() : "-");
-        feeResultVo9.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getThirdRetailPremiums() != null ?
-         syOrderFeeVo.getThirdRetailPremiums() : "-");
-        feeResultVo9.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getThirdRetailProportion() != null ?
-         fcOrderFeeVo.getThirdRetailProportion() : "-");
-        feeResultVo9.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getThirdRetailPremiums() != null ?
-         fcOrderFeeVo.getThirdRetailPremiums() : "-");
-        feeResultVo9.setJqFeeRateAll(feeResultVo9.getJqFeeRate());
-        feeResultVo9.setJqFeeAmountAll(feeResultVo9.getJqFeeAmount());
-        feeResultVo9.setSyFeeRateAll(feeResultVo9.getSyFeeRate());
-        feeResultVo9.setSyFeeAmountAll(feeResultVo9.getSyFeeAmount());
-        feeResultVo9.setFcFeeRateAll(feeResultVo9.getFcFeeRate());
-        feeResultVo9.setFcFeeAmountAll(feeResultVo9.getFcFeeAmount());
-        resultList.add(feeResultVo9);
-        return resultList;
+
+    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(InsFeeOrderNew insFeeOrderNew){
+        List<QueryOrderFeeResultVo> queryOrderFeeResultVos = new ArrayList<>();
+        QueryOrderFeeResultVo sumFeeResultVo = new QueryOrderFeeResultVo();
+        sumFeeResultVo.setDescSerialNo("1");
+        sumFeeResultVo.setFeeTypeName("总费用");
+        //设置交强费用比例
+        StringBuilder jqFeeRate = new StringBuilder();
+        jqFeeRate.append(insFeeOrderNew.getJqSuperviseCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getJqOtherCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getJqInvestmentCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getJqCostsProportion());
+        sumFeeResultVo.setJqFeeRateAll(jqFeeRate.toString());
+
+        //设置交强费用
+        StringBuilder jqFeePremium = new StringBuilder();
+        jqFeePremium.append(insFeeOrderNew.getJqSuperviseCostsPremiums()).append(" / ")
+                .append(insFeeOrderNew.getJqOtherCostsPremiums()).append(" / ")
+                .append(insFeeOrderNew.getJqInvestmentCostsPremiums()).append(" / ")
+                .append(insFeeOrderNew.getJqCostsPremiums());
+        sumFeeResultVo.setJqFeeAmountAll(jqFeePremium.toString());
+
+        //设置商业费用比例
+        StringBuilder syFeeRate = new StringBuilder();
+        syFeeRate.append(insFeeOrderNew.getSySuperviseCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getSyOtherCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getSyInvestmentCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getSyCostsProportion());
+        sumFeeResultVo.setSyFeeRateAll(syFeeRate.toString());
+
+        //设置商业费用
+        StringBuilder syFeePremium = new StringBuilder();
+        syFeePremium.append(insFeeOrderNew.getSySuperviseCostsPremiums()).append(" / ")
+            .append(insFeeOrderNew.getSyOtherCostsPremiums()).append(" / ")
+            .append(insFeeOrderNew.getSyInvestmentCostsPremiums()).append(" / ")
+            .append(insFeeOrderNew.getSyCostsPremiums());
+        sumFeeResultVo.setSyFeeAmountAll(syFeePremium.toString());
+
+        //设置非车费用比例
+        StringBuilder noFeeRate = new StringBuilder();
+        noFeeRate.append(insFeeOrderNew.getNoSuperviseCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getNoOtherCostsProportion()).append(" / ")
+                .append(insFeeOrderNew.getNoCostsProportion());
+        sumFeeResultVo.setFcFeeRateAll(noFeeRate.toString());
+
+        //设置非车费用
+        StringBuilder noFeePremium = new StringBuilder();
+        noFeePremium.append(insFeeOrderNew.getNoSuperviseCostsPremiums()).append(" / ")
+                .append(insFeeOrderNew.getNoOtherCostsPremiums()).append(" / ")
+                .append(insFeeOrderNew.getNoCostsPremiums());
+        sumFeeResultVo.setFcFeeAmountAll(noFeePremium.toString());
+
+        queryOrderFeeResultVos.add(sumFeeResultVo);
+
+        //设置一级管理费
+        QueryOrderFeeResultVo jqml1FeeResultVo = new QueryOrderFeeResultVo();
+        jqml1FeeResultVo.setDescSerialNo("2");
+        jqml1FeeResultVo.setFeeTypeName("一级管理费");
+        jqml1FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getJqDeptProportionLevel1().toString());
+        jqml1FeeResultVo.setJqFeeAmountAll(insFeeOrderNew.getJqDeptPremiumsLevel1().toString());
+        jqml1FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSyDeptProportionLevel1().toString());
+        jqml1FeeResultVo.setSyFeeAmountAll(insFeeOrderNew.getSyDeptPremiumsLevel1().toString());
+        jqml1FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getNoDeptProportionLevel1().toString());
+        jqml1FeeResultVo.setFcFeeAmountAll(insFeeOrderNew.getNoDeptPremiumsLevel1().toString());
+        queryOrderFeeResultVos.add(jqml1FeeResultVo);
+
+        //设置二级管理费
+        QueryOrderFeeResultVo jqml2FeeResultVo = new QueryOrderFeeResultVo();
+        jqml2FeeResultVo.setDescSerialNo("3");
+        jqml2FeeResultVo.setFeeTypeName("二级管理费");
+        jqml2FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getJqDeptProportionLevel2().toString());
+        jqml2FeeResultVo.setJqFeeAmountAll(insFeeOrderNew.getJqDeptPremiumsLevel2().toString());
+        jqml2FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSyDeptProportionLevel2().toString());
+        jqml2FeeResultVo.setSyFeeAmountAll(insFeeOrderNew.getSyDeptPremiumsLevel2().toString());
+        jqml2FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getNoDeptProportionLevel2().toString());
+        jqml2FeeResultVo.setFcFeeAmountAll(insFeeOrderNew.getNoDeptPremiumsLevel2().toString());
+        queryOrderFeeResultVos.add(jqml2FeeResultVo);
+
+        //设置三级管理费
+        QueryOrderFeeResultVo jqml3FeeResultVo = new QueryOrderFeeResultVo();
+        jqml3FeeResultVo.setDescSerialNo("4");
+        jqml3FeeResultVo.setFeeTypeName("三级管理费");
+        jqml3FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getJqDeptProportionLevel3().toString());
+        jqml3FeeResultVo.setJqFeeAmountAll(insFeeOrderNew.getJqDeptPremiumsLevel3().toString());
+        jqml3FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSyDeptProportionLevel3().toString());
+        jqml3FeeResultVo.setSyFeeAmountAll(insFeeOrderNew.getSyDeptPremiumsLevel3().toString());
+        jqml3FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getNoDeptProportionLevel3().toString());
+        jqml3FeeResultVo.setFcFeeAmountAll(insFeeOrderNew.getNoDeptPremiumsLevel3().toString());
+        queryOrderFeeResultVos.add(jqml3FeeResultVo);
+
+        //设置四级管理费
+        QueryOrderFeeResultVo jqml4FeeResultVo = new QueryOrderFeeResultVo();
+        jqml4FeeResultVo.setDescSerialNo("5");
+        jqml4FeeResultVo.setFeeTypeName("四级管理费");
+        jqml4FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getJqDeptProportionLevel4().toString());
+        jqml4FeeResultVo.setJqFeeAmountAll(insFeeOrderNew.getJqDeptPremiumsLevel4().toString());
+        jqml4FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSyDeptProportionLevel4().toString());
+        jqml4FeeResultVo.setSyFeeAmountAll(insFeeOrderNew.getSyDeptPremiumsLevel4().toString());
+        jqml4FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getNoDeptProportionLevel4().toString());
+        jqml4FeeResultVo.setFcFeeAmountAll(insFeeOrderNew.getNoDeptPremiumsLevel4().toString());
+        queryOrderFeeResultVos.add(jqml4FeeResultVo);
+
+        //设置五级管理费
+        QueryOrderFeeResultVo jqml5FeeResultVo = new QueryOrderFeeResultVo();
+        jqml5FeeResultVo.setDescSerialNo("6");
+        jqml5FeeResultVo.setFeeTypeName("五级管理费");
+        jqml5FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getJqDeptProportionLevel5().toString());
+        jqml5FeeResultVo.setJqFeeAmountAll(insFeeOrderNew.getJqDeptPremiumsLevel5().toString());
+        jqml5FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSyDeptProportionLevel5().toString());
+        jqml5FeeResultVo.setSyFeeAmountAll(insFeeOrderNew.getSyDeptPremiumsLevel5().toString());
+        jqml5FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getNoDeptProportionLevel5().toString());
+        jqml5FeeResultVo.setFcFeeAmountAll(insFeeOrderNew.getNoDeptPremiumsLevel5().toString());
+        queryOrderFeeResultVos.add(jqml5FeeResultVo);
+
+        //设置一级分销费用
+        QueryOrderFeeResultVo detailLevel1FeeResultVo = new QueryOrderFeeResultVo();
+        detailLevel1FeeResultVo.setDescSerialNo("7");
+        detailLevel1FeeResultVo.setFeeTypeName("一级分销费");
+         detailLevel1FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
+        detailLevel1FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
+        detailLevel1FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
+        BigDecimal jqDetailFeePremium = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
+        detailLevel1FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        BigDecimal syDetailFeePremium = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
+        detailLevel1FeeResultVo.setSyFeeAmountAll(syDetailFeePremium.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        BigDecimal fcDetailFeePremium = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
+        detailLevel1FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        queryOrderFeeResultVos.add(detailLevel1FeeResultVo);
+
+        //设置二级分销费用
+        QueryOrderFeeResultVo detailLevel2FeeResultVo = new QueryOrderFeeResultVo();
+        detailLevel2FeeResultVo.setDescSerialNo("8");
+        detailLevel2FeeResultVo.setFeeTypeName("二级分销费");
+        detailLevel2FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getSecondDetailProportion().toString());
+        detailLevel2FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSecondDetailProportion().toString());
+        detailLevel2FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getSecondDetailProportion().toString());
+        BigDecimal jqDetailFeePremium2 = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
+        detailLevel2FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium2.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        BigDecimal syDetailFeePremium2 = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
+        detailLevel2FeeResultVo.setSyFeeAmountAll(syDetailFeePremium2.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        BigDecimal fcDetailFeePremium2 = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
+        detailLevel2FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium2.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        queryOrderFeeResultVos.add(detailLevel2FeeResultVo);
+
+        //设置三级分销费用
+        QueryOrderFeeResultVo detailLevel3FeeResultVo = new QueryOrderFeeResultVo();
+        detailLevel3FeeResultVo.setDescSerialNo("9");
+        detailLevel3FeeResultVo.setFeeTypeName("三级分销费");
+        detailLevel3FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getThirdDetailProportion().toString());
+        detailLevel3FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getThirdDetailProportion().toString());
+        detailLevel3FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getThirdDetailProportion().toString());
+        BigDecimal jqDetailFeePremium3 = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
+        detailLevel3FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium3.setScale(2, BigDecimal.ROUND_DOWN).toString());
+        BigDecimal syDetailFeePremium3 = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
+        detailLevel3FeeResultVo.setSyFeeAmountAll(syDetailFeePremium3.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        BigDecimal fcDetailFeePremium3 = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
+        detailLevel3FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium3.setScale(2,BigDecimal.ROUND_DOWN).toString());
+        queryOrderFeeResultVos.add(detailLevel3FeeResultVo);
+
+        return queryOrderFeeResultVos;
     }
 
+    //把取出的费用信息转换为页面需要展示的数据
+//    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo) {
+//        List<QueryOrderFeeResultVo> resultList = new ArrayList<>();
+//        OrderFeeVo jqOrderFeeVo = orderFeeVo.getJqCoderFeeVo();
+//        OrderFeeVo syOrderFeeVo = orderFeeVo.getSyCoderFeeVo();
+//        OrderFeeVo fcOrderFeeVo = orderFeeVo.getFcCoderFeeVo();
+//
+//        //总费用
+//        QueryOrderFeeResultVo feeResultVo1 = new QueryOrderFeeResultVo();
+//        feeResultVo1.setDescSerialNo("1");
+//        feeResultVo1.setFeeTypeName("总费用");
+//        feeResultVo1.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getCostsProportion() != null ? jqOrderFeeVo.getCostsProportion() :
+//         "-");
+//        feeResultVo1.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getCostsPremiums() != null ? jqOrderFeeVo.getCostsPremiums() :
+//        "-");
+//        feeResultVo1.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getCostsProportion() != null ? syOrderFeeVo.getCostsProportion() :
+//         "-");
+//        feeResultVo1.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getCostsPremiums() != null ? syOrderFeeVo.getCostsPremiums() :
+//        "-");
+//        feeResultVo1.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getCostsProportion() != null ? fcOrderFeeVo.getCostsProportion() :
+//         "-");
+//        feeResultVo1.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getCostsPremiums() != null ? fcOrderFeeVo.getCostsPremiums() :
+//        "-");
+//        feeResultVo1.setJqFeeRateAll(jqOrderFeeVo != null && jqOrderFeeVo.getCostsProportionAll() != null ?
+//         jqOrderFeeVo.getCostsProportionAll() : "-");
+//        feeResultVo1.setJqFeeAmountAll(jqOrderFeeVo != null && jqOrderFeeVo.getCostsPremiumsAll() != null ?
+//         jqOrderFeeVo.getCostsPremiumsAll() : "-");
+//        feeResultVo1.setSyFeeRateAll(syOrderFeeVo != null && syOrderFeeVo.getCostsProportionAll() != null ?
+//         syOrderFeeVo.getCostsProportionAll() : "-");
+//        feeResultVo1.setSyFeeAmountAll(syOrderFeeVo != null && syOrderFeeVo.getCostsPremiumsAll() != null ?
+//         syOrderFeeVo.getCostsPremiumsAll() : "-");
+//        feeResultVo1.setFcFeeRateAll(fcOrderFeeVo != null && fcOrderFeeVo.getCostsProportionAll() != null ?
+//         fcOrderFeeVo.getCostsProportionAll() : "-");
+//        feeResultVo1.setFcFeeAmountAll(fcOrderFeeVo != null && fcOrderFeeVo.getCostsPremiumsAll() != null ?
+//         fcOrderFeeVo.getCostsPremiumsAll() : "-");
+//        resultList.add(feeResultVo1);
+//        //一级管理费用
+//        QueryOrderFeeResultVo feeResultVo2 = new QueryOrderFeeResultVo();
+//        feeResultVo2.setDescSerialNo("2");
+//        feeResultVo2.setFeeTypeName("一级管理费");
+//        feeResultVo2.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getFirstDeptProportion() != null ?
+//         jqOrderFeeVo.getFirstDeptProportion() : "-");
+//        feeResultVo2.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getFirstDeptPremiums() != null ?
+//         jqOrderFeeVo.getFirstDeptPremiums() : "-");
+//        feeResultVo2.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getFirstDeptProportion() != null ?
+//         syOrderFeeVo.getFirstDeptProportion() : "-");
+//        feeResultVo2.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getFirstDeptPremiums() != null ?
+//         syOrderFeeVo.getFirstDeptPremiums() : "-");
+//        feeResultVo2.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getFirstDeptProportion() != null ?
+//         fcOrderFeeVo.getFirstDeptProportion() : "-");
+//        feeResultVo2.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getFirstDeptPremiums() != null ?
+//         fcOrderFeeVo.getFirstDeptPremiums() : "-");
+//        feeResultVo2.setJqFeeRateAll(feeResultVo2.getJqFeeRate());
+//        feeResultVo2.setJqFeeAmountAll(feeResultVo2.getJqFeeAmount());
+//        feeResultVo2.setSyFeeRateAll(feeResultVo2.getSyFeeRate());
+//        feeResultVo2.setSyFeeAmountAll(feeResultVo2.getSyFeeAmount());
+//        feeResultVo2.setFcFeeRateAll(feeResultVo2.getFcFeeRate());
+//        feeResultVo2.setFcFeeAmountAll(feeResultVo2.getFcFeeAmount());
+//        resultList.add(feeResultVo2);
+//        //二级管理费用
+//        QueryOrderFeeResultVo feeResultVo3 = new QueryOrderFeeResultVo();
+//        feeResultVo3.setDescSerialNo("3");
+//        feeResultVo3.setFeeTypeName("二级管理费");
+//        feeResultVo3.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getSecondDeptProportion() != null ?
+//         jqOrderFeeVo.getSecondDeptProportion() : "-");
+//        feeResultVo3.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getSecondDeptPremiums() != null ?
+//         jqOrderFeeVo.getSecondDeptPremiums() : "-");
+//        feeResultVo3.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getSecondDeptProportion() != null ?
+//         syOrderFeeVo.getSecondDeptProportion() : "-");
+//        feeResultVo3.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getSecondDeptPremiums() != null ?
+//         syOrderFeeVo.getSecondDeptPremiums() : "-");
+//        feeResultVo3.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getSecondDeptProportion() != null ?
+//         fcOrderFeeVo.getSecondDeptProportion() : "-");
+//        feeResultVo3.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getSecondDeptPremiums() != null ?
+//         fcOrderFeeVo.getSecondDeptPremiums() : "-");
+//        feeResultVo3.setJqFeeRateAll(feeResultVo3.getJqFeeRate());
+//        feeResultVo3.setJqFeeAmountAll(feeResultVo3.getJqFeeAmount());
+//        feeResultVo3.setSyFeeRateAll(feeResultVo3.getSyFeeRate());
+//        feeResultVo3.setSyFeeAmountAll(feeResultVo3.getSyFeeAmount());
+//        feeResultVo3.setFcFeeRateAll(feeResultVo3.getFcFeeRate());
+//        feeResultVo3.setFcFeeAmountAll(feeResultVo3.getFcFeeAmount());
+//        resultList.add(feeResultVo3);
+//        //三级管理费用
+//        QueryOrderFeeResultVo feeResultVo4 = new QueryOrderFeeResultVo();
+//        feeResultVo4.setDescSerialNo("4");
+//        feeResultVo4.setFeeTypeName("三级管理费");
+//        feeResultVo4.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getThirdDeptProportion() != null ?
+//         jqOrderFeeVo.getThirdDeptProportion() : "-");
+//        feeResultVo4.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getThirdDeptPremiums() != null ?
+//         jqOrderFeeVo.getThirdDeptPremiums() : "-");
+//        feeResultVo4.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getThirdDeptProportion() != null ?
+//         syOrderFeeVo.getThirdDeptProportion() : "-");
+//        feeResultVo4.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getThirdDeptPremiums() != null ?
+//         syOrderFeeVo.getThirdDeptPremiums() : "-");
+//        feeResultVo4.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getThirdDeptProportion() != null ?
+//         fcOrderFeeVo.getThirdDeptProportion() : "-");
+//        feeResultVo4.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getThirdDeptPremiums() != null ?
+//         fcOrderFeeVo.getThirdDeptPremiums() : "-");
+//        feeResultVo4.setJqFeeRateAll(feeResultVo4.getJqFeeRate());
+//        feeResultVo4.setJqFeeAmountAll(feeResultVo4.getJqFeeAmount());
+//        feeResultVo4.setSyFeeRateAll(feeResultVo4.getSyFeeRate());
+//        feeResultVo4.setSyFeeAmountAll(feeResultVo4.getSyFeeAmount());
+//        feeResultVo4.setFcFeeRateAll(feeResultVo4.getFcFeeRate());
+//        feeResultVo4.setFcFeeAmountAll(feeResultVo4.getFcFeeAmount());
+//        resultList.add(feeResultVo4);
+//        //四级管理费用
+//        QueryOrderFeeResultVo feeResultVo5 = new QueryOrderFeeResultVo();
+//        feeResultVo5.setDescSerialNo("5");
+//        feeResultVo5.setFeeTypeName("四级管理费");
+//        feeResultVo5.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getForthDeptProportion() != null ?
+//         jqOrderFeeVo.getForthDeptProportion() : "-");
+//        feeResultVo5.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getForthDeptPremiums() != null ?
+//         jqOrderFeeVo.getForthDeptPremiums() : "-");
+//        feeResultVo5.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getForthDeptProportion() != null ?
+//         syOrderFeeVo.getForthDeptProportion() : "-");
+//        feeResultVo5.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getForthDeptPremiums() != null ?
+//         syOrderFeeVo.getForthDeptPremiums() : "-");
+//        feeResultVo5.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getForthDeptProportion() != null ?
+//         fcOrderFeeVo.getForthDeptProportion() : "-");
+//        feeResultVo5.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getForthDeptPremiums() != null ?
+//         fcOrderFeeVo.getForthDeptPremiums() : "-");
+//        feeResultVo5.setJqFeeRateAll(feeResultVo5.getJqFeeRate());
+//        feeResultVo5.setJqFeeAmountAll(feeResultVo5.getJqFeeAmount());
+//        feeResultVo5.setSyFeeRateAll(feeResultVo5.getSyFeeRate());
+//        feeResultVo5.setSyFeeAmountAll(feeResultVo5.getSyFeeAmount());
+//        feeResultVo5.setFcFeeRateAll(feeResultVo5.getFcFeeRate());
+//        feeResultVo5.setFcFeeAmountAll(feeResultVo5.getFcFeeAmount());
+//        resultList.add(feeResultVo5);
+//        //五级管理费用
+//        QueryOrderFeeResultVo feeResultVo6 = new QueryOrderFeeResultVo();
+//        feeResultVo6.setDescSerialNo("6");
+//        feeResultVo6.setFeeTypeName("五级管理费");
+//        feeResultVo6.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getFifthDeptProportion() != null ?
+//         jqOrderFeeVo.getFifthDeptProportion() : "-");
+//        feeResultVo6.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getFifthDeptPremiums() != null ?
+//         jqOrderFeeVo.getFifthDeptPremiums() : "-");
+//        feeResultVo6.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getFifthDeptProportion() != null ?
+//         syOrderFeeVo.getFifthDeptProportion() : "-");
+//        feeResultVo6.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getFifthDeptPremiums() != null ?
+//         syOrderFeeVo.getFifthDeptPremiums() : "-");
+//        feeResultVo6.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getFifthDeptProportion() != null ?
+//         fcOrderFeeVo.getFifthDeptProportion() : "-");
+//        feeResultVo6.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getFifthDeptPremiums() != null ?
+//         fcOrderFeeVo.getFifthDeptPremiums() : "-");
+//        feeResultVo6.setJqFeeRateAll(feeResultVo6.getJqFeeRate());
+//        feeResultVo6.setJqFeeAmountAll(feeResultVo6.getJqFeeAmount());
+//        feeResultVo6.setSyFeeRateAll(feeResultVo6.getSyFeeRate());
+//        feeResultVo6.setSyFeeAmountAll(feeResultVo6.getSyFeeAmount());
+//        feeResultVo6.setFcFeeRateAll(feeResultVo6.getFcFeeRate());
+//        feeResultVo6.setFcFeeAmountAll(feeResultVo6.getFcFeeAmount());
+//        resultList.add(feeResultVo6);
+//        //一级分销费
+//        QueryOrderFeeResultVo feeResultVo7 = new QueryOrderFeeResultVo();
+//        feeResultVo7.setDescSerialNo("7");
+//        feeResultVo7.setFeeTypeName("一级分销费");
+//        feeResultVo7.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getFirstRetailProportion() != null ?
+//         jqOrderFeeVo.getFirstRetailProportion() : "-");
+//        feeResultVo7.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getFirstRetailPremiums() != null ?
+//         jqOrderFeeVo.getFirstRetailPremiums() : "-");
+//        feeResultVo7.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getFirstRetailProportion() != null ?
+//         syOrderFeeVo.getFirstRetailProportion() : "-");
+//        feeResultVo7.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getFirstRetailPremiums() != null ?
+//         syOrderFeeVo.getFirstRetailPremiums() : "-");
+//        feeResultVo7.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getFirstRetailProportion() != null ?
+//         fcOrderFeeVo.getFirstRetailProportion() : "-");
+//        feeResultVo7.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getFirstRetailPremiums() != null ?
+//         fcOrderFeeVo.getFirstRetailPremiums() : "-");
+//        feeResultVo7.setJqFeeRateAll(feeResultVo7.getJqFeeRate());
+//        feeResultVo7.setJqFeeAmountAll(feeResultVo7.getJqFeeAmount());
+//        feeResultVo7.setSyFeeRateAll(feeResultVo7.getSyFeeRate());
+//        feeResultVo7.setSyFeeAmountAll(feeResultVo7.getSyFeeAmount());
+//        feeResultVo7.setFcFeeRateAll(feeResultVo7.getFcFeeRate());
+//        feeResultVo7.setFcFeeAmountAll(feeResultVo7.getFcFeeAmount());
+//        resultList.add(feeResultVo7);
+//        //二级分销费
+//        QueryOrderFeeResultVo feeResultVo8 = new QueryOrderFeeResultVo();
+//        feeResultVo8.setDescSerialNo("8");
+//        feeResultVo8.setFeeTypeName("二级分销费");
+//        feeResultVo8.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getSecondRetailProportion() != null ?
+//         jqOrderFeeVo.getSecondRetailProportion() : "-");
+//        feeResultVo8.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getSecondRetailPremiums() != null ?
+//         jqOrderFeeVo.getSecondRetailPremiums() : "-");
+//        feeResultVo8.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getSecondRetailProportion() != null ?
+//         syOrderFeeVo.getSecondRetailProportion() : "-");
+//        feeResultVo8.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getSecondRetailPremiums() != null ?
+//         syOrderFeeVo.getSecondRetailPremiums() : "-");
+//        feeResultVo8.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getSecondRetailProportion() != null ?
+//         fcOrderFeeVo.getSecondRetailProportion() : "-");
+//        feeResultVo8.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getSecondRetailPremiums() != null ?
+//         fcOrderFeeVo.getSecondRetailPremiums() : "-");
+//        feeResultVo8.setJqFeeRateAll(feeResultVo8.getJqFeeRate());
+//        feeResultVo8.setJqFeeAmountAll(feeResultVo8.getJqFeeAmount());
+//        feeResultVo8.setSyFeeRateAll(feeResultVo8.getSyFeeRate());
+//        feeResultVo8.setSyFeeAmountAll(feeResultVo8.getSyFeeAmount());
+//        feeResultVo8.setFcFeeRateAll(feeResultVo8.getFcFeeRate());
+//        feeResultVo8.setFcFeeAmountAll(feeResultVo8.getFcFeeAmount());
+//        resultList.add(feeResultVo8);
+//        //三级分销费
+//        QueryOrderFeeResultVo feeResultVo9 = new QueryOrderFeeResultVo();
+//        feeResultVo9.setDescSerialNo("9");
+//        feeResultVo9.setFeeTypeName("三级分销费");
+//        feeResultVo9.setJqFeeRate(jqOrderFeeVo != null && jqOrderFeeVo.getThirdRetailProportion() != null ?
+//         jqOrderFeeVo.getThirdRetailProportion() : "-");
+//        feeResultVo9.setJqFeeAmount(jqOrderFeeVo != null && jqOrderFeeVo.getThirdRetailPremiums() != null ?
+//         jqOrderFeeVo.getThirdRetailPremiums() : "-");
+//        feeResultVo9.setSyFeeRate(syOrderFeeVo != null && syOrderFeeVo.getThirdRetailProportion() != null ?
+//         syOrderFeeVo.getThirdRetailProportion() : "-");
+//        feeResultVo9.setSyFeeAmount(syOrderFeeVo != null && syOrderFeeVo.getThirdRetailPremiums() != null ?
+//         syOrderFeeVo.getThirdRetailPremiums() : "-");
+//        feeResultVo9.setFcFeeRate(fcOrderFeeVo != null && fcOrderFeeVo.getThirdRetailProportion() != null ?
+//         fcOrderFeeVo.getThirdRetailProportion() : "-");
+//        feeResultVo9.setFcFeeAmount(fcOrderFeeVo != null && fcOrderFeeVo.getThirdRetailPremiums() != null ?
+//         fcOrderFeeVo.getThirdRetailPremiums() : "-");
+//        feeResultVo9.setJqFeeRateAll(feeResultVo9.getJqFeeRate());
+//        feeResultVo9.setJqFeeAmountAll(feeResultVo9.getJqFeeAmount());
+//        feeResultVo9.setSyFeeRateAll(feeResultVo9.getSyFeeRate());
+//        feeResultVo9.setSyFeeAmountAll(feeResultVo9.getSyFeeAmount());
+//        feeResultVo9.setFcFeeRateAll(feeResultVo9.getFcFeeRate());
+//        feeResultVo9.setFcFeeAmountAll(feeResultVo9.getFcFeeAmount());
+//        resultList.add(feeResultVo9);
+//        return resultList;
+//    }
+
     /**
      * 按照组合单模式获取费用明细
      *
      * @param insFeeOrder
      * @return
      */
-    private QueryOrderFeeVo packageOrderFeeInfoAll(InsFeeOrder insFeeOrder) {
-        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
-        InsFeeOrder jqInsFeeOrderTemp = new InsFeeOrder();
-        //先利用交强费重算费用
-        jqInsFeeOrderTemp.setFirstDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getFirstDeptProportion()));
-        jqInsFeeOrderTemp.setSecondDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getSecondDeptProportion()));
-        jqInsFeeOrderTemp.setThirdDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getThirdDeptProportion()));
-        jqInsFeeOrderTemp.setForthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getForthDeptProportion()));
-        jqInsFeeOrderTemp.setFifthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getFifthDeptProportion()));
-        jqInsFeeOrderTemp.setFirstRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getFirstRetailProportion()));
-        jqInsFeeOrderTemp.setSecondRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getSecondRetailProportion()));
-        jqInsFeeOrderTemp.setThirdRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getThirdRetailProportion()));
-
-        //再利用总费-交强费,得出商业费
-        InsFeeOrder syInsFeeOrderTemp = new InsFeeOrder();
-        syInsFeeOrderTemp.setFirstDeptPremiums(getPremiumForSubtract(insFeeOrder.getFirstDeptPremiums(),
-         jqInsFeeOrderTemp.getFirstDeptPremiums()));
-        syInsFeeOrderTemp.setSecondDeptPremiums(getPremiumForSubtract(insFeeOrder.getSecondDeptPremiums(),
-         jqInsFeeOrderTemp.getSecondDeptPremiums()));
-        syInsFeeOrderTemp.setThirdDeptPremiums(getPremiumForSubtract(insFeeOrder.getThirdDeptPremiums(),
-         jqInsFeeOrderTemp.getThirdDeptPremiums()));
-        syInsFeeOrderTemp.setForthDeptPremiums(getPremiumForSubtract(insFeeOrder.getForthDeptPremiums(),
-         jqInsFeeOrderTemp.getForthDeptPremiums()));
-        syInsFeeOrderTemp.setFifthDeptPremiums(getPremiumForSubtract(insFeeOrder.getFifthDeptPremiums(),
-         jqInsFeeOrderTemp.getFifthDeptPremiums()));
-        syInsFeeOrderTemp.setFirstRetailPremiums(getPremiumForSubtract(insFeeOrder.getFirstRetailPremiums(),
-         jqInsFeeOrderTemp.getFirstRetailPremiums()));
-        syInsFeeOrderTemp.setSecondRetailPremiums(getPremiumForSubtract(insFeeOrder.getSecondRetailPremiums(),
-         jqInsFeeOrderTemp.getSecondRetailPremiums()));
-        syInsFeeOrderTemp.setThirdRetailPremiums(getPremiumForSubtract(insFeeOrder.getThirdRetailPremiums(),
-         jqInsFeeOrderTemp.getThirdRetailPremiums()));
-
-        //交强费转换赋值
-        OrderFeeVo jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
-        jqOrderFeeVo.setFirstDeptPremiums(convertToString(jqInsFeeOrderTemp.getFirstDeptPremiums()));
-        jqOrderFeeVo.setSecondDeptPremiums(convertToString(jqInsFeeOrderTemp.getSecondDeptPremiums()));
-        jqOrderFeeVo.setThirdDeptPremiums(convertToString(jqInsFeeOrderTemp.getThirdDeptPremiums()));
-        jqOrderFeeVo.setForthDeptPremiums(convertToString(jqInsFeeOrderTemp.getForthDeptPremiums()));
-        jqOrderFeeVo.setFifthDeptPremiums(convertToString(jqInsFeeOrderTemp.getFifthDeptPremiums()));
-        jqOrderFeeVo.setFirstRetailPremiums(convertToString(jqInsFeeOrderTemp.getFirstRetailPremiums()));
-        jqOrderFeeVo.setSecondRetailPremiums(convertToString(jqInsFeeOrderTemp.getSecondRetailPremiums()));
-        jqOrderFeeVo.setThirdRetailPremiums(convertToString(jqInsFeeOrderTemp.getThirdRetailPremiums()));
-
-        //商业费转换赋值
-        OrderFeeVo syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
-        syOrderFeeVo.setFirstDeptPremiums(convertToString(syInsFeeOrderTemp.getFirstDeptPremiums()));
-        syOrderFeeVo.setSecondDeptPremiums(convertToString(syInsFeeOrderTemp.getSecondDeptPremiums()));
-        syOrderFeeVo.setThirdDeptPremiums(convertToString(syInsFeeOrderTemp.getThirdDeptPremiums()));
-        syOrderFeeVo.setForthDeptPremiums(convertToString(syInsFeeOrderTemp.getForthDeptPremiums()));
-        syOrderFeeVo.setFifthDeptPremiums(convertToString(syInsFeeOrderTemp.getFifthDeptPremiums()));
-        syOrderFeeVo.setFirstRetailPremiums(convertToString(syInsFeeOrderTemp.getFirstRetailPremiums()));
-        syOrderFeeVo.setSecondRetailPremiums(convertToString(syInsFeeOrderTemp.getSecondRetailPremiums()));
-        syOrderFeeVo.setThirdRetailPremiums(convertToString(syInsFeeOrderTemp.getThirdRetailPremiums()));
-
-        queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
-        queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
-        return queryOrderFeeVo;
-    }
+//    private QueryOrderFeeVo packageOrderFeeInfoAll(InsFeeOrder insFeeOrder) {
+//        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
+//        InsFeeOrder jqInsFeeOrderTemp = new InsFeeOrder();
+//        //先利用交强费重算费用
+//        jqInsFeeOrderTemp.setFirstDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getFirstDeptProportion()));
+//        jqInsFeeOrderTemp.setSecondDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getSecondDeptProportion()));
+//        jqInsFeeOrderTemp.setThirdDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getThirdDeptProportion()));
+//        jqInsFeeOrderTemp.setForthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getForthDeptProportion()));
+//        jqInsFeeOrderTemp.setFifthDeptPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getFifthDeptProportion()));
+//        jqInsFeeOrderTemp.setFirstRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getFirstRetailProportion()));
+//        jqInsFeeOrderTemp.setSecondRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getSecondRetailProportion()));
+//        jqInsFeeOrderTemp.setThirdRetailPremiums(getPremium(insFeeOrder.getJqNoTaxPremium(), insFeeOrder.getThirdRetailProportion()));
+//
+//        //再利用总费-交强费,得出商业费
+//        InsFeeOrder syInsFeeOrderTemp = new InsFeeOrder();
+//        syInsFeeOrderTemp.setFirstDeptPremiums(getPremiumForSubtract(insFeeOrder.getFirstDeptPremiums(),
+//         jqInsFeeOrderTemp.getFirstDeptPremiums()));
+//        syInsFeeOrderTemp.setSecondDeptPremiums(getPremiumForSubtract(insFeeOrder.getSecondDeptPremiums(),
+//         jqInsFeeOrderTemp.getSecondDeptPremiums()));
+//        syInsFeeOrderTemp.setThirdDeptPremiums(getPremiumForSubtract(insFeeOrder.getThirdDeptPremiums(),
+//         jqInsFeeOrderTemp.getThirdDeptPremiums()));
+//        syInsFeeOrderTemp.setForthDeptPremiums(getPremiumForSubtract(insFeeOrder.getForthDeptPremiums(),
+//         jqInsFeeOrderTemp.getForthDeptPremiums()));
+//        syInsFeeOrderTemp.setFifthDeptPremiums(getPremiumForSubtract(insFeeOrder.getFifthDeptPremiums(),
+//         jqInsFeeOrderTemp.getFifthDeptPremiums()));
+//        syInsFeeOrderTemp.setFirstRetailPremiums(getPremiumForSubtract(insFeeOrder.getFirstRetailPremiums(),
+//         jqInsFeeOrderTemp.getFirstRetailPremiums()));
+//        syInsFeeOrderTemp.setSecondRetailPremiums(getPremiumForSubtract(insFeeOrder.getSecondRetailPremiums(),
+//         jqInsFeeOrderTemp.getSecondRetailPremiums()));
+//        syInsFeeOrderTemp.setThirdRetailPremiums(getPremiumForSubtract(insFeeOrder.getThirdRetailPremiums(),
+//         jqInsFeeOrderTemp.getThirdRetailPremiums()));
+//
+//        //交强费转换赋值
+//        OrderFeeVo jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+//        jqOrderFeeVo.setFirstDeptPremiums(convertToString(jqInsFeeOrderTemp.getFirstDeptPremiums()));
+//        jqOrderFeeVo.setSecondDeptPremiums(convertToString(jqInsFeeOrderTemp.getSecondDeptPremiums()));
+//        jqOrderFeeVo.setThirdDeptPremiums(convertToString(jqInsFeeOrderTemp.getThirdDeptPremiums()));
+//        jqOrderFeeVo.setForthDeptPremiums(convertToString(jqInsFeeOrderTemp.getForthDeptPremiums()));
+//        jqOrderFeeVo.setFifthDeptPremiums(convertToString(jqInsFeeOrderTemp.getFifthDeptPremiums()));
+//        jqOrderFeeVo.setFirstRetailPremiums(convertToString(jqInsFeeOrderTemp.getFirstRetailPremiums()));
+//        jqOrderFeeVo.setSecondRetailPremiums(convertToString(jqInsFeeOrderTemp.getSecondRetailPremiums()));
+//        jqOrderFeeVo.setThirdRetailPremiums(convertToString(jqInsFeeOrderTemp.getThirdRetailPremiums()));
+//
+//        //商业费转换赋值
+//        OrderFeeVo syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
+//        syOrderFeeVo.setFirstDeptPremiums(convertToString(syInsFeeOrderTemp.getFirstDeptPremiums()));
+//        syOrderFeeVo.setSecondDeptPremiums(convertToString(syInsFeeOrderTemp.getSecondDeptPremiums()));
+//        syOrderFeeVo.setThirdDeptPremiums(convertToString(syInsFeeOrderTemp.getThirdDeptPremiums()));
+//        syOrderFeeVo.setForthDeptPremiums(convertToString(syInsFeeOrderTemp.getForthDeptPremiums()));
+//        syOrderFeeVo.setFifthDeptPremiums(convertToString(syInsFeeOrderTemp.getFifthDeptPremiums()));
+//        syOrderFeeVo.setFirstRetailPremiums(convertToString(syInsFeeOrderTemp.getFirstRetailPremiums()));
+//        syOrderFeeVo.setSecondRetailPremiums(convertToString(syInsFeeOrderTemp.getSecondRetailPremiums()));
+//        syOrderFeeVo.setThirdRetailPremiums(convertToString(syInsFeeOrderTemp.getThirdRetailPremiums()));
+//
+//        queryOrderFeeVo.setJqCoderFeeVo(jqOrderFeeVo);
+//        queryOrderFeeVo.setSyCoderFeeVo(syOrderFeeVo);
+//        return queryOrderFeeVo;
+//    }
 
     /**
      * 按照单险种方式获取费用明细
@@ -1907,26 +2076,26 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
      * @param insFeeOrder
      * @return
      */
-    private OrderFeeVo packageOrderFeeInfoOne(InsFeeOrder insFeeOrder) {
-        OrderFeeVo orderFeeVo = new OrderFeeVo();
-        orderFeeVo.setFirstDeptPremiums(convertToString(insFeeOrder.getFirstDeptPremiums()));
-        orderFeeVo.setFirstDeptProportion(convertToString(insFeeOrder.getFirstDeptProportion()));
-        orderFeeVo.setSecondDeptPremiums(convertToString(insFeeOrder.getSecondDeptPremiums()));
-        orderFeeVo.setSecondDeptProportion(convertToString(insFeeOrder.getSecondDeptProportion()));
-        orderFeeVo.setThirdDeptPremiums(convertToString(insFeeOrder.getThirdDeptPremiums()));
-        orderFeeVo.setThirdDeptProportion(convertToString(insFeeOrder.getThirdDeptProportion()));
-        orderFeeVo.setForthDeptPremiums(convertToString(insFeeOrder.getForthDeptPremiums()));
-        orderFeeVo.setForthDeptProportion(convertToString(insFeeOrder.getForthDeptProportion()));
-        orderFeeVo.setFifthDeptPremiums(convertToString(insFeeOrder.getFifthDeptPremiums()));
-        orderFeeVo.setFifthDeptProportion(convertToString(insFeeOrder.getFifthDeptProportion()));
-        orderFeeVo.setFirstRetailPremiums(convertToString(insFeeOrder.getFirstRetailPremiums()));
-        orderFeeVo.setFirstRetailProportion(convertToString(insFeeOrder.getFirstRetailProportion()));
-        orderFeeVo.setSecondRetailPremiums(convertToString(insFeeOrder.getSecondRetailPremiums()));
-        orderFeeVo.setSecondRetailProportion(convertToString(insFeeOrder.getSecondRetailProportion()));
-        orderFeeVo.setThirdRetailPremiums(convertToString(insFeeOrder.getThirdRetailPremiums()));
-        orderFeeVo.setThirdRetailProportion(convertToString(insFeeOrder.getThirdRetailProportion()));
-        return orderFeeVo;
-    }
+//    private OrderFeeVo packageOrderFeeInfoOne(InsFeeOrder insFeeOrder) {
+//        OrderFeeVo orderFeeVo = new OrderFeeVo();
+//        orderFeeVo.setFirstDeptPremiums(convertToString(insFeeOrder.getFirstDeptPremiums()));
+//        orderFeeVo.setFirstDeptProportion(convertToString(insFeeOrder.getFirstDeptProportion()));
+//        orderFeeVo.setSecondDeptPremiums(convertToString(insFeeOrder.getSecondDeptPremiums()));
+//        orderFeeVo.setSecondDeptProportion(convertToString(insFeeOrder.getSecondDeptProportion()));
+//        orderFeeVo.setThirdDeptPremiums(convertToString(insFeeOrder.getThirdDeptPremiums()));
+//        orderFeeVo.setThirdDeptProportion(convertToString(insFeeOrder.getThirdDeptProportion()));
+//        orderFeeVo.setForthDeptPremiums(convertToString(insFeeOrder.getForthDeptPremiums()));
+//        orderFeeVo.setForthDeptProportion(convertToString(insFeeOrder.getForthDeptProportion()));
+//        orderFeeVo.setFifthDeptPremiums(convertToString(insFeeOrder.getFifthDeptPremiums()));
+//        orderFeeVo.setFifthDeptProportion(convertToString(insFeeOrder.getFifthDeptProportion()));
+//        orderFeeVo.setFirstRetailPremiums(convertToString(insFeeOrder.getFirstRetailPremiums()));
+//        orderFeeVo.setFirstRetailProportion(convertToString(insFeeOrder.getFirstRetailProportion()));
+//        orderFeeVo.setSecondRetailPremiums(convertToString(insFeeOrder.getSecondRetailPremiums()));
+//        orderFeeVo.setSecondRetailProportion(convertToString(insFeeOrder.getSecondRetailProportion()));
+//        orderFeeVo.setThirdRetailPremiums(convertToString(insFeeOrder.getThirdRetailPremiums()));
+//        orderFeeVo.setThirdRetailProportion(convertToString(insFeeOrder.getThirdRetailProportion()));
+//        return orderFeeVo;
+//    }
 
     private String convertToString(BigDecimal b) {
         if (b != null) {

+ 127 - 41
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -122,7 +122,16 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, costsId));
         InsFeeOrderNew insFeeOrderNew = new InsFeeOrderNew();
         insFeeOrderNew.setId(IdGenerate.nextId());
+        insFeeOrderNew.setCostsId(costsId);
         insFeeOrderNew.setAgreementId(ptlAgreementProductCostsNew.getAgreementId());
+        //存储部门id与用户id
+        InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
+        InsFeeOrderNew insFeeOrderNewByCompanyId = insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insAreaCompany.getId());
+        if(insFeeOrderNewByCompanyId != null){
+            insFeeOrderNew.setId(insFeeOrderNewByCompanyId.getId());
+        }
+        insFeeOrderNew.setDeptId(order.getDeptid());
+        insFeeOrderNew.setUserId(order.getUserid());
         insFeeOrderNew.setInsOrderNo(insAreaCompany.getId());
         insFeeOrderNew.setJqPremium(insAreaCompany.getJqpremium());
         insFeeOrderNew.setSyPremium(insAreaCompany.getSypremium());
@@ -208,93 +217,123 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
 
         //设置出口费用
+        //每级的加投费用为 计算出每级管理费的占比   *   加投费用
+        //(一级管理费比例 / 总费用比例) * 加投费用
+        BigDecimal jqInvestmentCostsLevel1 = new BigDecimal(0);
+        BigDecimal jqInvestmentCostsLevel2 = new BigDecimal(0);
+        BigDecimal jqInvestmentCostsLevel3 = new BigDecimal(0);
+        BigDecimal jqInvestmentCostsLevel4 = new BigDecimal(0);
+        BigDecimal jqInvestmentCostsLevel5 = new BigDecimal(0);
+        BigDecimal syInvestmentCostsLevel1 = new BigDecimal(0);
+        BigDecimal syInvestmentCostsLevel2 = new BigDecimal(0);
+        BigDecimal syInvestmentCostsLevel3 = new BigDecimal(0);
+        BigDecimal syInvestmentCostsLevel4 = new BigDecimal(0);
+        BigDecimal syInvestmentCostsLevel5 = new BigDecimal(0);
+        if(insFeeOrderNew.getJqInvestmentCostsProportion().compareTo(BigDecimal.ZERO) != 0)
+        {
+            jqInvestmentCostsLevel1 =  ptlAgreementProductCostsExport.getJqExportRadioLevel1().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
+            jqInvestmentCostsLevel2 =  ptlAgreementProductCostsExport.getJqExportRadioLevel2().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
+            jqInvestmentCostsLevel3 =  ptlAgreementProductCostsExport.getJqExportRadioLevel3().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
+            jqInvestmentCostsLevel4 =  ptlAgreementProductCostsExport.getJqExportRadioLevel4().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
+            jqInvestmentCostsLevel5 =  ptlAgreementProductCostsExport.getJqExportRadioLevel5().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
+        }
+        if(insFeeOrderNew.getSyInvestmentCostsProportion().compareTo(BigDecimal.ZERO) != 0)
+        {
+            syInvestmentCostsLevel1 =  ptlAgreementProductCostsExport.getSyExportRadioLevel1().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
+            syInvestmentCostsLevel2 =  ptlAgreementProductCostsExport.getSyExportRadioLevel2().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
+            syInvestmentCostsLevel3 =  ptlAgreementProductCostsExport.getSyExportRadioLevel3().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
+            syInvestmentCostsLevel4 =  ptlAgreementProductCostsExport.getSyExportRadioLevel4().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
+            syInvestmentCostsLevel5 =  ptlAgreementProductCostsExport.getSyExportRadioLevel5().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
+        }
+
+
         //交强出口比例
-        insFeeOrderNew.setJqDeptProportionLevel1(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel1()));
+        insFeeOrderNew.setJqDeptProportionLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1());
         insFeeOrderNew.setJqDeptPremiumsLevel1(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel1()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel1()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel1)
         );
 
-        insFeeOrderNew.setJqDeptProportionLevel2(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel2()));
+        insFeeOrderNew.setJqDeptProportionLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2());
         insFeeOrderNew.setJqDeptPremiumsLevel2(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel2()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel2()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel2)
         );
 
-        insFeeOrderNew.setJqDeptProportionLevel3(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel3()));
+        insFeeOrderNew.setJqDeptProportionLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3());
         insFeeOrderNew.setJqDeptPremiumsLevel3(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel3()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel3()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel3)
         );
 
-        insFeeOrderNew.setJqDeptProportionLevel4(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel4()));
+        insFeeOrderNew.setJqDeptProportionLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4());
         insFeeOrderNew.setJqDeptPremiumsLevel4(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel4()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel4()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel4)
         );
 
-        insFeeOrderNew.setJqDeptProportionLevel5(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel5()));
+        insFeeOrderNew.setJqDeptProportionLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5());
         insFeeOrderNew.setJqDeptPremiumsLevel5(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel5()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel5()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel5)
         );
 
-        insFeeOrderNew.setJqExportInvestmentProportion(new BigDecimal(ptlAgreementProductCostsExport.getJqExportInvestmentRadio()));
+        insFeeOrderNew.setJqExportInvestmentProportion(ptlAgreementProductCostsExport.getJqExportInvestmentRadio());
         insFeeOrderNew.setJqExportInvestmentPremiums(
                 insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqExportInvestmentProportion()).divide(new BigDecimal("100"))
         );
 
         //商业出口比例
-        insFeeOrderNew.setSyDeptProportionLevel1(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel1()));
+        insFeeOrderNew.setSyDeptProportionLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1());
         insFeeOrderNew.setSyDeptPremiumsLevel1(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel1()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel1()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel1)
         );
 
-        insFeeOrderNew.setSyDeptProportionLevel2(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel2()));
+        insFeeOrderNew.setSyDeptProportionLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2());
         insFeeOrderNew.setSyDeptPremiumsLevel2(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel2()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel2()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel2)
         );
 
-        insFeeOrderNew.setSyDeptProportionLevel3(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel3()));
+        insFeeOrderNew.setSyDeptProportionLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3());
         insFeeOrderNew.setSyDeptPremiumsLevel3(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel3()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel3()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel3)
         );
 
 
-        insFeeOrderNew.setSyDeptProportionLevel4(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel4()));
+        insFeeOrderNew.setSyDeptProportionLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4());
         insFeeOrderNew.setSyDeptPremiumsLevel4(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel4()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel4()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel4)
         );
 
-        insFeeOrderNew.setSyDeptProportionLevel5(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel5()));
+        insFeeOrderNew.setSyDeptProportionLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5());
         insFeeOrderNew.setSyDeptPremiumsLevel5(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel5()).divide(new BigDecimal("100"))
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel5()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel5)
         );
 
-        insFeeOrderNew.setSyExportInvestmentProportion(new BigDecimal(ptlAgreementProductCostsExport.getSyExportInvestmentRadio()));
+        insFeeOrderNew.setSyExportInvestmentProportion(ptlAgreementProductCostsExport.getSyExportInvestmentRadio());
         insFeeOrderNew.setSyExportInvestmentPremiums(
                 insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyExportInvestmentProportion()).divide(new BigDecimal("100"))
         );
 
 
         //非车出口比例
-        insFeeOrderNew.setNoDeptProportionLevel1(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1()));
+        insFeeOrderNew.setNoDeptProportionLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1());
         insFeeOrderNew.setNoDeptPremiumsLevel1(
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel1()).divide(new BigDecimal("100"))
         );
 
-        insFeeOrderNew.setNoDeptProportionLevel2(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2()));
+        insFeeOrderNew.setNoDeptProportionLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2());
         insFeeOrderNew.setNoDeptPremiumsLevel2(
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel2()).divide(new BigDecimal("100"))
         );
 
-        insFeeOrderNew.setNoDeptProportionLevel3(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3()));
+        insFeeOrderNew.setNoDeptProportionLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3());
         insFeeOrderNew.setNoDeptPremiumsLevel3(
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel3()).divide(new BigDecimal("100"))
         );
 
 
-        insFeeOrderNew.setNoDeptProportionLevel4(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4()));
+        insFeeOrderNew.setNoDeptProportionLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4());
         insFeeOrderNew.setNoDeptPremiumsLevel4(
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel4()).divide(new BigDecimal("100"))
         );
 
-        insFeeOrderNew.setNoDeptProportionLevel5(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5()));
+        insFeeOrderNew.setNoDeptProportionLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5());
         insFeeOrderNew.setNoDeptPremiumsLevel5(
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel5()).divide(new BigDecimal("100"))
         );
@@ -396,8 +435,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
 
     private boolean verificationRules(List<PtlAgreementUndwrtRulesNew> ptlAgreementUndwrtRulesNews,InsAreaCompany insAreaCompany,InsOrders insOrders){
-        //匹配费用因子
-        //获取所有费用属性
+        //匹配承保规则
+        //获取所有承保规则属性
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
         //获取所有费用属性关联
         List<RuleAttrMappingVo> ruleAttrMappingVoList = RuleAttrMappingVo.getRuleAttrMappingVoList(insAreaCompany, insOrders);
@@ -434,6 +473,22 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 return false;
             //查找 费用因子规则
             PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().get();
+            //如果是多选 对value进行转换
+            if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")) {
+                PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
+                        x.getCode().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
+                ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getName());
+            }
+            //如果是单选 并且是 性别的话 转换为code
+            if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio"))
+            {
+                if("CarOwnersSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) || "ApplicantSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) ||
+                        "InsuredSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode())){
+                    PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
+                            x.getName().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
+                    ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getCode());
+                }
+            }
             useFlag = attrEqual(ptlAgreementProductCostsAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
             if(!useFlag)
                 return false;
@@ -457,12 +512,30 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             int finalI = i;
 
             //查找规则中的 传值属性
-            RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream().filter(x -> x.getAttrCode().equals(ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode())).findFirst().orElse(null);
+            RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream().filter(x ->
+                    x.getAttrCode().equals(ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode())).findFirst().orElse(null);
+
             //如果查找不到 传值属性 直接费用对比失败
             if(ruleAttrMappingVo == null)
                 continue;
             //查找 费用因子规则
             PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode())).findFirst().get();
+            //如果是多选 对value进行转换
+            if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")) {
+                PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
+                        x.getCode().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
+                ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getName());
+            }
+            //如果是单选 并且是 性别的话 转换为code
+            if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio"))
+            {
+                if("CarOwnersSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) || "ApplicantSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) ||
+                        "InsuredSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode())){
+                    PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
+                            x.getName().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
+                    ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getCode());
+                }
+            }
             useFlag = attrEqual(ptlAgreementUndwrtRulesAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
             if(!useFlag)
                 return false;
@@ -516,6 +589,10 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("input")){
             return inputTextEqual(ptlAgreementProductCostsAttrLink,value);
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("select")){
+            //截取车牌
+            if(ptlAgreementUndwrtRulesAttr.getAttrCode().equals("LicenseNo")){
+                value = value.substring(0,2);
+            }
             return selectEqual(ptlAgreementProductCostsAttrLink,value);
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio")){
             return radioEqual(ptlAgreementProductCostsAttrLink,value);
@@ -552,10 +629,10 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     }
 
     private boolean checkBoxEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
-        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
-            return false;
+        if(!ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+            return true;
         }
-        return true;
+        return false;
     }
 
     /**
@@ -596,7 +673,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         double v = Double.parseDouble(value);
         //统一处理数值
         if("1".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())){
-            if(Integer.parseInt(ptlAgreementUndwrtRulesAttrLink.getMin()) <= v &&
+            if(Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMin()) <= v &&
                     Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMax()) >= v){
                 return false;
             }
@@ -631,7 +708,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         String[] split = ptlAgreementProductCostsAttrLink.getMin().split(",");
         AtomicBoolean returnBool = new AtomicBoolean(false);
         Arrays.stream(split).forEach(x -> {
-            if(x.contains(value)){
+            if(value.contains(x)){
                 returnBool.set(true);
             }
         });
@@ -643,7 +720,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         String[] split = ptlAgreementUndwrtRulesAttrLink.getMin().split(",");
         AtomicBoolean returnBool = new AtomicBoolean(true);
         Arrays.stream(split).forEach(x -> {
-            if(x.contains(value)){
+            if(!x.equals("") && value.contains(x)){
                 returnBool.set(false);
             }
         });
@@ -664,7 +741,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     }
 
     private boolean selectEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
-        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+        if(ptlAgreementUndwrtRulesAttrLink.getMin() != null && ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
             return false;
         }
         return true;
@@ -673,7 +750,12 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     private boolean radioEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
         //新能源判断
         if("NewEnergy".equals(ptlAgreementProductCostsAttrLink.getAttrCode())){
-            if(EnergyType.isNewEnergy(ptlAgreementProductCostsAttrLink.getMin())){
+            // 是否是新能源车
+            boolean newEnergy = EnergyType.isNewEnergy(value);
+            if(newEnergy && ptlAgreementProductCostsAttrLink.getMin().equals("1")){
+                return true;
+            }else if(!newEnergy && ptlAgreementProductCostsAttrLink.getMin().equals("0"))
+            {
                 return true;
             }
         }else
@@ -686,11 +768,15 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     private boolean radioEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
         //新能源判断
         if("NewEnergy".equals(ptlAgreementUndwrtRulesAttrLink.getAttrCode())){
-            if(EnergyType.isNewEnergy(ptlAgreementUndwrtRulesAttrLink.getMin())){
+            // 是否是新能源车
+            boolean newEnergy = EnergyType.isNewEnergy(value);
+            if(newEnergy && ptlAgreementUndwrtRulesAttrLink.getMin().equals("1")){
+                return false;
+            }else if(!newEnergy && ptlAgreementUndwrtRulesAttrLink.getMin().equals("0"))
+            {
                 return false;
             }
-        }else
-        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+        }else if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
             return false;
         }
         return true;

+ 31 - 47
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -1,7 +1,10 @@
 package com.ydtech.modules.fnc.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fnc.dao.FncInsAreaCompanyMapper;
@@ -23,8 +26,11 @@ import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -59,6 +65,12 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
     private final SysUserService sysUserService;
 
+    @Autowired
+    private InsFeeOrderNewService insFeeOrderNewService;
+
+    @Autowired
+    private SysDeptService sysDeptService;
+
 
     public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper, InsFeeOrderService insFeeOrderService,InsDeptFeeService insDeptFeeService,EsmUserReferrerService esmUserReferrerService,SysUserService sysUserService,InsCommissionService insCommissionService,InsCompanyFeeService insCompanyFeeService,InsPlyIncomeMapper insPlyIncomeMapper) {
         this.insAreaCompanyMapper = insAreaCompanyMapper;
@@ -74,6 +86,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Override
     @Transactional
     public void feeAudit(String orderNo, String insOrderNo) throws Exception{
+        //保存审核表
         InsFeeAudit insFeeAudit=new InsFeeAudit();
         insFeeAudit.setOrderno(orderNo);
         insFeeAudit.setInsOrderNo(insOrderNo);
@@ -82,12 +95,29 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         insFeeAudit.setAudituser(StpUtil.getLoginId().toString());
         this.save(insFeeAudit);
 
+
         InsOrders order=insOrdersMapper.selectById(orderNo);
         InsFeeOrder insFeeOrder=insFeeOrderService.getByInsOrderNo(insFeeAudit.getInsOrderNo());
         InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
 
+        //获取该订单的费用
+        InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
+                .eq(InsFeeOrderNew::getInsOrderNo, insFeeAudit.getInsOrderNo()));
+
+
+        //获取操作人员的机构来源
+        String deptId=order.getDeptid();
+
+        List<SysDept> teamList = sysDeptService.findTeamList(deptId);
+        teamList.forEach(sysDept -> {
+            if(sysDept.getComlevel().equals("1")){
+                BigDecimal jqDeptPremiumsLevel1 = insFeeOrderNew.getJqDeptPremiumsLevel1();
+            }
+        });
+
+
         //bigdecimal为null时设置为0
-        handleBigdecimal(insFeeOrder);
+//        handleBigdecimal(insFeeOrder);
         //生成保司费用(应收费用)
         gene_orderIncome( order, insFeeOrder,insAreaCompany);
         //生成机构费用
@@ -98,42 +128,6 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         saveInsCompanyFee(order,insFeeOrder,insAreaCompany);
     }
 
-    private void handleBigdecimal(InsFeeOrder insFeeOrder)
-    {
-        insFeeOrder.setJqCostsProportion(insFeeOrder.getJqCostsProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getJqCostsProportion());
-        insFeeOrder.setSyCostsProportion(insFeeOrder.getSyCostsProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getSyCostsProportion());
-        insFeeOrder.setJqCostsPremiums(insFeeOrder.getJqCostsPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getJqCostsPremiums());
-        insFeeOrder.setSyCostsPremiums(insFeeOrder.getSyCostsPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getSyCostsPremiums());
-        insFeeOrder.setJqPremium(insFeeOrder.getJqPremium() ==null ? BigDecimal.ZERO:insFeeOrder.getJqPremium());
-        insFeeOrder.setSyPremium(insFeeOrder.getSyPremium() ==null ? BigDecimal.ZERO:insFeeOrder.getSyPremium());
-        insFeeOrder.setJqNoTaxPremium(insFeeOrder.getJqNoTaxPremium() ==null ? BigDecimal.ZERO:insFeeOrder.getJqNoTaxPremium());
-        insFeeOrder.setSyNoTaxPremium(insFeeOrder.getSyNoTaxPremium() ==null ? BigDecimal.ZERO:insFeeOrder.getSyNoTaxPremium());
-        insFeeOrder.setJqSuperviseCostsProportion(insFeeOrder.getJqSuperviseCostsProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getJqSuperviseCostsProportion());
-        insFeeOrder.setJqSuperviseCostsPremiums(insFeeOrder.getJqSuperviseCostsPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getJqSuperviseCostsPremiums());
-        insFeeOrder.setSySuperviseCostsProportion(insFeeOrder.getSySuperviseCostsProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getSySuperviseCostsProportion());
-        insFeeOrder.setSySuperviseCostsPremiums(insFeeOrder.getSySuperviseCostsPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getSySuperviseCostsPremiums());
-        insFeeOrder.setJqSpilloverProportion(insFeeOrder.getJqSpilloverProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getJqSpilloverProportion());
-        insFeeOrder.setJqSpilloverPremiums(insFeeOrder.getJqSpilloverPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getJqSpilloverPremiums());
-        insFeeOrder.setSySpilloverProportion(insFeeOrder.getSySpilloverProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getSySpilloverProportion());
-        insFeeOrder.setSySpilloverPremiums(insFeeOrder.getSySpilloverPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getSySpilloverPremiums());
-        insFeeOrder.setFirstDeptProportion(insFeeOrder.getFirstDeptProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getFirstDeptProportion());
-        insFeeOrder.setFirstDeptPremiums(insFeeOrder.getFirstDeptPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getFirstDeptPremiums());
-        insFeeOrder.setSecondDeptProportion(insFeeOrder.getSecondDeptProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getSecondDeptProportion());
-        insFeeOrder.setSecondDeptPremiums(insFeeOrder.getSecondDeptPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getSecondDeptPremiums());
-        insFeeOrder.setThirdDeptProportion(insFeeOrder.getThirdDeptProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getThirdDeptProportion());
-        insFeeOrder.setThirdDeptPremiums(insFeeOrder.getThirdDeptPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getThirdDeptPremiums());
-        insFeeOrder.setForthDeptProportion(insFeeOrder.getForthDeptProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getForthDeptProportion());
-        insFeeOrder.setForthDeptPremiums(insFeeOrder.getForthDeptPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getForthDeptPremiums());
-        insFeeOrder.setFifthDeptProportion(insFeeOrder.getFifthDeptProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getFifthDeptProportion());
-        insFeeOrder.setFifthDeptPremiums(insFeeOrder.getFifthDeptPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getFifthDeptPremiums());
-        insFeeOrder.setFirstRetailProportion(insFeeOrder.getFirstRetailProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getFirstRetailProportion());
-        insFeeOrder.setFirstRetailPremiums(insFeeOrder.getFirstRetailPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getFirstRetailPremiums());
-        insFeeOrder.setSecondRetailProportion(insFeeOrder.getSecondRetailProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getSecondRetailProportion());
-        insFeeOrder.setSecondRetailPremiums(insFeeOrder.getSecondRetailPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getSecondRetailPremiums());
-        insFeeOrder.setThirdRetailProportion(insFeeOrder.getThirdRetailProportion() ==null ? BigDecimal.ZERO:insFeeOrder.getThirdRetailProportion());
-        insFeeOrder.setThirdRetailPremiums(insFeeOrder.getThirdRetailPremiums() ==null ? BigDecimal.ZERO:insFeeOrder.getThirdRetailPremiums());
-
-    }
     /**
      * 生成保司费用(应收费用)
      * @param order
@@ -210,36 +204,26 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     private void geneInsDeptFee(InsOrders order, InsFeeOrder insFeeOrder, InsDeptFee deptFee) {
         if (insFeeOrder.getFirstDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(order.getDeptid().substring(0, 2));  //99140302M01D01
-            deptFee.setKeeprate(insFeeOrder.getFirstDeptProportion().doubleValue() );
-            deptFee.setKeepamount(insFeeOrder.getFirstDeptPremiums().doubleValue());
             deptFee.setComlevel("一级");
             insDeptFeeService.insert(deptFee);
         }
         if (insFeeOrder.getSecondDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(order.getDeptid().substring(0, 4));  //99140302M01D01
-            deptFee.setKeeprate(insFeeOrder.getSecondDeptProportion().doubleValue() );
-            deptFee.setKeepamount(insFeeOrder.getSecondDeptPremiums().doubleValue());
             deptFee.setComlevel("二级");
             insDeptFeeService.insert(deptFee);
         }
         if (insFeeOrder.getThirdDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(order.getDeptid().substring(0, 6));  //99140302M01D01
-            deptFee.setKeeprate(insFeeOrder.getThirdDeptProportion().doubleValue() );
-            deptFee.setKeepamount(insFeeOrder.getThirdDeptPremiums().doubleValue());
             deptFee.setComlevel("三级");
             insDeptFeeService.insert(deptFee);
         }
         if (insFeeOrder.getForthDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(order.getDeptid().substring(0, 8));  //99140302M01D01
-            deptFee.setKeeprate(insFeeOrder.getForthDeptProportion().doubleValue() );
-            deptFee.setKeepamount(insFeeOrder.getForthDeptPremiums().doubleValue());
             deptFee.setComlevel("四级");
             insDeptFeeService.insert(deptFee);
         }
         if (insFeeOrder.getFifthDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(order.getDeptid().substring(0, 11));  //99140302M01D01
-            deptFee.setKeeprate(insFeeOrder.getFifthDeptProportion().doubleValue() );
-            deptFee.setKeepamount(insFeeOrder.getFifthDeptPremiums().doubleValue());
             deptFee.setComlevel("五级");
             insDeptFeeService.insert(deptFee);
         }

+ 0 - 10
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyMainServiceImpl.java

@@ -223,36 +223,26 @@ public class InsPlyMainServiceImpl extends ServiceImpl<InsPlyMainMapper, InsPlyM
     private void geneInsDeptFee(InsDeptFee deptFee,InsPlyMain excelVo) {
         if (excelVo.getFirstDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(excelVo.getDeptId().substring(0, 2));  //99140302M01D01
-            deptFee.setKeeprate(excelVo.getFirstDeptProportion().doubleValue() );
-            deptFee.setKeepamount(excelVo.getFirstDeptPremiums().doubleValue());
             deptFee.setComlevel("一级");
             insDeptFeeService.insert(deptFee);
         }
         if (excelVo.getSecondDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(excelVo.getDeptId().substring(0, 4));  //99140302M01D01
-            deptFee.setKeeprate(excelVo.getSecondDeptProportion().doubleValue() );
-            deptFee.setKeepamount(excelVo.getSecondDeptPremiums().doubleValue());
             deptFee.setComlevel("二级");
             insDeptFeeService.insert(deptFee);
         }
         if (excelVo.getThirdDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(excelVo.getDeptId().substring(0, 6));  //99140302M01D01
-            deptFee.setKeeprate(excelVo.getThirdDeptProportion().doubleValue() );
-            deptFee.setKeepamount(excelVo.getThirdDeptPremiums().doubleValue());
             deptFee.setComlevel("三级");
             insDeptFeeService.insert(deptFee);
         }
         if (excelVo.getForthDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(excelVo.getDeptId().substring(0, 8));  //99140302M01D01
-            deptFee.setKeeprate(excelVo.getForthDeptProportion().doubleValue() );
-            deptFee.setKeepamount(excelVo.getForthDeptPremiums().doubleValue());
             deptFee.setComlevel("四级");
             insDeptFeeService.insert(deptFee);
         }
         if (excelVo.getFifthDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(excelVo.getDeptId().substring(0, 11));  //99140302M01D01
-            deptFee.setKeeprate(excelVo.getFifthDeptProportion().doubleValue() );
-            deptFee.setKeepamount(excelVo.getFifthDeptPremiums().doubleValue());
             deptFee.setComlevel("五级");
             insDeptFeeService.insert(deptFee);
         }

+ 0 - 8
src/main/java/com/ydtech/modules/ins/controller/InsOrderController.java

@@ -1288,14 +1288,6 @@ public class InsOrderController extends BaseController {
 
         List<EsmAgreementProdfee> prodfees = esmAgreementProdfeeService.selectList(" where agreeprodid=?", new Object[]{order.getProductid()});
         for (EsmAgreementProdfee prodfee : prodfees) {
-            deptFee.setKeeprate(prodfee.getKeeprate() * 0.01);
-            BigDecimal amount = new BigDecimal((order.getJqpremium() + order.getSypremium()) * prodfee.getKeeprate() * 0.01);
-            amount = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
-            deptFee.setKeepamount(amount.doubleValue());
-            deptFee.setAddrate(prodfee.getAddrate() * 0.01);
-            amount = new BigDecimal((order.getJqpremium() + order.getSypremium()) * prodfee.getAddrate() * 0.01);
-            amount = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
-            deptFee.setAddamount(amount.doubleValue());
             deptFee.setComlevel(prodfee.getComlevel());
             if ("一级".equals(prodfee.getComlevel())) {
                 deptFee.setComcode(order.getDeptid().substring(0, 2));  //99140302M01D01

+ 0 - 8
src/main/java/com/ydtech/modules/ins/controller/InsTiananController.java

@@ -965,14 +965,6 @@ public class InsTiananController {
         deptFee.setSettlestatus("0");
         List<EsmAgreementProdfee> prodfees = esmAgreementProdfeeService.selectList(" where agreeprodid=?", new Object[]{order.getProductid()});
         for (EsmAgreementProdfee prodfee : prodfees) {
-            deptFee.setKeeprate(prodfee.getKeeprate() * 0.01);
-            BigDecimal amount = new BigDecimal((order.getJqpremium() + order.getSypremium()) * prodfee.getKeeprate() * 0.01);
-            amount = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
-            deptFee.setKeepamount(amount.doubleValue());
-            deptFee.setAddrate(prodfee.getAddrate() * 0.01);
-            amount = new BigDecimal((order.getJqpremium() + order.getSypremium()) * prodfee.getAddrate() * 0.01);
-            amount = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
-            deptFee.setAddamount(amount.doubleValue());
             deptFee.setComlevel(prodfee.getComlevel());
             if ("一级".equals(prodfee.getComlevel())) {
                 deptFee.setComcode(order.getDeptid().substring(0, 2));  //99140302M01D01

+ 5 - 9
src/main/java/com/ydtech/modules/ins/dao/impl/InsDeptFeeDaoImpl.java

@@ -36,10 +36,6 @@ public class InsDeptFeeDaoImpl implements InsDeptFeeDao {
             model.setAgreeprodid(resultSet.getString("agreeprodid"));
             model.setComlevel(resultSet.getString("comlevel"));
             model.setComcode(resultSet.getString("comcode"));
-            model.setKeeprate(resultSet.getDouble("keeprate"));
-            model.setAddrate(resultSet.getDouble("addrate"));
-            model.setKeepamount(resultSet.getDouble("keepamount"));
-            model.setAddamount(resultSet.getDouble("addamount"));
             model.setAuditstatus(resultSet.getString("auditstatus"));
             model.setSettlestatus(resultSet.getString("settlestatus"));
             model.setLicenseno(resultSet.getString("licenseno"));
@@ -164,12 +160,12 @@ public class InsDeptFeeDaoImpl implements InsDeptFeeDao {
     @Override
     public Integer insert(InsDeptFee model) {
 
-        String sql = "insert into ins_deptfee (orderno,policyno,inscompany,licenseno,riskcode,quoteno,agreeid,agreeprodid,comlevel,comcode,keeprate,addrate,keepamount,addamount,auditstatus,settlestatus) " +
-                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
+        String sql = "insert into ins_deptfee (orderno,policyno,inscompany,licenseno,riskcode,quoteno,agreeid,agreeprodid,comlevel,comcode,auditstatus,settlestatus) " +
+                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-        Object[] params = new Object[]{model.getOrderno(),model.getPolicyno(),model.getInscompany(),model.getLicenseno(),model.getRiskcode(), model.getQuoteno(), model.getAgreeid(), model.getAgreeprodid(), model.getComlevel(), model.getComcode(), model.getKeeprate(), model.getAddrate(), model.getKeepamount(), model.getAddamount(), model.getAuditstatus(), model.getSettlestatus()};
+        Object[] params = new Object[]{model.getOrderno(),model.getPolicyno(),model.getInscompany(),model.getLicenseno(),model.getRiskcode(), model.getQuoteno(), model.getAgreeid(), model.getAgreeprodid(), model.getComlevel(), model.getComcode(), model.getAuditstatus(), model.getSettlestatus()};
 
         int out = jdbcTemplate.update(sql, params);
 
@@ -179,11 +175,11 @@ public class InsDeptFeeDaoImpl implements InsDeptFeeDao {
     @Override
     public Integer update(InsDeptFee model) {
 
-        String sql = "update ins_deptfee set quoteno=?,agreeid=?,agreeprodid=?,comlevel=?,comcode=?,keeprate=?,addrate=?,keepamount=?,addamount=?,auditstatus=?,settlestatus=? where orderno=?";
+        String sql = "update ins_deptfee set quoteno=?,agreeid=?,agreeprodid=?,comlevel=?,comcode=?,auditstatus=?,settlestatus=? where orderno=?";
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-        Object[] params = new Object[]{model.getQuoteno(), model.getAgreeid(), model.getAgreeprodid(), model.getComlevel(), model.getComcode(), model.getKeeprate(), model.getAddrate(), model.getKeepamount(), model.getAddamount(), model.getAuditstatus(), model.getSettlestatus(), model.getOrderno()};
+        Object[] params = new Object[]{model.getQuoteno(), model.getAgreeid(), model.getAgreeprodid(), model.getComlevel(), model.getComcode(), model.getAuditstatus(), model.getSettlestatus(), model.getOrderno()};
 
         return jdbcTemplate.update(sql, params);
     }

+ 0 - 4
src/main/java/com/ydtech/modules/ins/model/InsDeptFee.java

@@ -16,10 +16,6 @@ public class InsDeptFee {
     private String agreeprodid;
     private String comlevel;
     private String comcode;
-    private double keeprate;
-    private double addrate;
-    private double keepamount;
-    private double addamount;
     private String auditstatus;
     private String settlestatus;
     private String licenseno;

+ 3 - 0
src/main/java/com/ydtech/modules/ins/model/InsOrdersExcel.java

@@ -166,6 +166,9 @@ public class InsOrdersExcel {
     @ExcelProperty(value = "商业类型评分")
     private String syScore;
 
+    @ExcelProperty(value = "总赔付率")
+    private String lossRation;
+
     @ExcelProperty(value = "交强赔付率")
     private String jqLossRation;
 

+ 3 - 3
src/main/java/com/ydtech/modules/ins/model/guoren/CarPriceReq.java

@@ -135,7 +135,7 @@ public class CarPriceReq {
 
         //使用性质  8A	家庭自用
         String vehicleUse = carInfo.getVehicleUse();
-        UseNatureCodeMapping useNatureCodeMapping = Enum.valueOf(UseNatureCodeMapping.class, UseNatureCodeMapping.TITLE + vehicleUse);
+        UseNatureCodeMapping useNatureCodeMapping = UseNatureCodeMapping.valueOf(UseNatureCodeMapping.TITLE + vehicleUse);
         prpTitemCar.setUseNatureCode(useNatureCodeMapping.getUseNatureCode());
         //初登日期
         prpTitemCar.setEnrollDate(carInfo.getIssueDate());
@@ -148,9 +148,9 @@ public class CarPriceReq {
         prpTitemCar.setVinClick("0");
 
         String cimodelclass = carInfo.getCimodelclass();
-        CategoriesOfVehicles categoriesOfVehicles = Enum.valueOf(CategoriesOfVehicles.class, CategoriesOfVehicles.TITLE + cimodelclass);
+        CategoriesOfVehicles categoriesOfVehicles = CategoriesOfVehicles.valueOf( CategoriesOfVehicles.TITLE + cimodelclass);
         if(categoriesOfVehicles.getCode().equals(CategoriesOfVehicles.COV_A1.getCode())){
-            TrafficManagementVehicleType trafficManagementVehicleType = Enum.valueOf(TrafficManagementVehicleType.class, carInfo.getCartype());
+            TrafficManagementVehicleType trafficManagementVehicleType = TrafficManagementVehicleType.valueOf(carInfo.getCartype());
             // 货车修改
             if (trafficManagementVehicleType.getDesc().contains("罐式")) {
                 prpTitemCar.setCarKindCode(CarKindCode.T11.getCode());

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java

@@ -874,7 +874,7 @@ public class PremiumReq {
                 this.taxRelifFlag = flag.getCode();
 
                 //返回空
-                if (!"".equals(vehicleAndVesselTax.getRelifReason())) {
+                if (StringUtils.isNotEmpty(vehicleAndVesselTax.getRelifReason())) {
                     RelifReason reason = Enum.valueOf(RelifReason.class, RelifReason.TITLE + vehicleAndVesselTax.getRelifReason());
                     this.relifReason = reason.getCode();
 

+ 4 - 1
src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java

@@ -82,7 +82,6 @@ public class CarInfoVo implements Serializable {
     /**
      * &#064;Date  2023-03-15
      */
-
     /**
      * @see com.ydtech.constants.enums.dict.insurance.EnergyType
      */
@@ -168,6 +167,10 @@ public class CarInfoVo implements Serializable {
     @ApiModelProperty(value = "车辆用途")
     private String vehicleUse;
 
+    /**
+     * 所属性质
+     * @see com.ydtech.constants.enums.dict.insurance.Property
+     */
     @ApiModelProperty(value = "所属性质(1个人 2企业 3机关)")
     private String property;
 

+ 35 - 0
src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java

@@ -1,11 +1,16 @@
 package com.ydtech.modules.ins.model.vo;
 
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.modules.order.entity.TaxArrears;
+import com.ydtech.modules.order.entity.crawler.response.CrawlerQuoteResponse;
 import com.ydtech.modules.order.entity.vo.CoreModelsVo;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
 import java.util.Collections;
 import java.util.List;
 
@@ -122,9 +127,39 @@ public class QuoteRespVo {
     @ApiModelProperty("核心返回车型")
     private CoreModelsVo coreModels;
 
+    /**
+     * 预核保信息
+     */
+    @JsonProperty("predict_info")
+    private List<PreUnderwritingInfoDTO> predictInfo;
+
+
     public List<AccidentResponseVo> getAccidentInfo() {
         return accident == null ? Collections.emptyList() : accident;
     }
 
+    @NoArgsConstructor
+    @Data
+    @ApiModel("预核保信息")
+    public static class PreUnderwritingInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = -4403793340565853838L;
+
+        @ApiModelProperty("备注")
+        @JsonProperty("description")
+        private String description;
+
+        @ApiModelProperty("备注")
+        @JsonProperty("opinion")
+        private String opinion;
+
+        public PreUnderwritingInfoDTO(CrawlerQuoteResponse.OtherDto.PredictInfoDTO predictInfoDTO) {
+            this.description = predictInfoDTO.getDescription();
+            this.opinion = predictInfoDTO.getOpinion();
+        }
+
+
+    }
+
 
 }

+ 3 - 7
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Base.java

@@ -405,20 +405,16 @@ public class Base {
             cidd.setForthwith(true);
             cidd.setStartDate(startDate);
 
-            LocalDate sEndDateTime = LocalDate.now();
-            LocalDateTime localDateTime = sEndDateTime.atStartOfDay();
-            LocalDateTime localDateTime1 = localDateTime.plusYears(1).plusDays(1);
-
-            cidd.setEndDate(DateTimeUtil.format(localDateTime1, "yyyy-MM-dd HH:mm:ss"));
+            LocalDateTime sEndDateTime = DateTimeUtil.parseLocalDateTime(startDate, DateTimeUtil.DATETIME_PATTERN);
+            sEndDateTime = sEndDateTime.plusYears(1);
+            cidd.setEndDate(DateTimeUtil.format(sEndDateTime, "yyyy-MM-dd HH:mm:ss"));
 
         } else {
             cidd.setStartDate(startDate);
             cidd.setEndDate(endDate);
             LocalDateTime sEndDateTime = DateTimeUtil.parseLocalDateTime(startDate, DateTimeUtil.DATETIME_PATTERN);
             sEndDateTime = sEndDateTime.plusYears(1).minusSeconds(1);
-
             cidd.setEndDate(DateTimeUtil.format(sEndDateTime, "yyyy-MM-dd HH:mm:ss"));
-
         }
         return cidd;
 

+ 1 - 2
src/main/java/com/ydtech/modules/ins/model/zm/ZmCarModel.java

@@ -56,12 +56,11 @@ public class ZmCarModel {
     private String vehicleSeatMax;
     private String vehicleSeatMin;
 
-
     public static List<CarModelDTO> toCarModelDTOs(List<ZmCarModel> data) {
         return data.stream().map(ZmCarModel::toCarModelDTO).collect(Collectors.toList());
     }
 
-    public static CarModelDTO toCarModelDTO(ZmCarModel zmCarModel){
+    public static CarModelDTO toCarModelDTO(ZmCarModel zmCarModel) {
         CarModelDTO carModelDTO = new CarModelDTO();
         carModelDTO.setModelCode(zmCarModel.getLocalModelCode());
         carModelDTO.setModelName(zmCarModel.getModelName());

+ 3 - 0
src/main/java/com/ydtech/modules/inv/controller/InvReceivableController.java

@@ -78,7 +78,10 @@ public class InvReceivableController extends BaseController {
         if (!Files.exists(path)) {
             Files.createDirectories(path);
         }
+
         String fileName = EasyExcelUtils.downExcel(uploadPath, "应收表", InvSource.class, recivablePage);
+
+
         return HttpResult.ok(uploadUrl + "excel/" + fileName);
     }
 

+ 9 - 0
src/main/java/com/ydtech/modules/inv/controller/InvSourceController.java

@@ -1,6 +1,10 @@
 package com.ydtech.modules.inv.controller;
 
+import cn.hutool.core.date.DateTime;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.inv.model.po.InvSource;
 import com.ydtech.modules.inv.service.InvReceivableService;
 import com.ydtech.modules.inv.service.InvSourceService;
 import io.swagger.annotations.Api;
@@ -11,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Arrays;
+import java.util.Date;
 
 /**
  * @author jianlong
@@ -53,10 +58,14 @@ public class InvSourceController {
 
     @GetMapping("excel")
     public HttpResult readExcel(@RequestParam("file") String file ) {
+
         String[] pathSegments = file.split("/");
         int index = findIndex(pathSegments,"upload");
         String[] subarray = Arrays.copyOfRange(pathSegments, index+1, pathSegments.length);
         String filename = concatenateWithSlash(subarray);
+
+
+
         HttpResult httpResult = invSourceService.readExcel(filename);
         invReceivableService.syncStatus();
         return httpResult;

+ 3 - 2
src/main/java/com/ydtech/modules/inv/dao/InvAccountIncoiceMapper.java

@@ -3,10 +3,9 @@ package com.ydtech.modules.inv.dao;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.inv.model.InvAccountIncoice;
 import com.ydtech.modules.inv.model.InvAccountIncoiceResult;
+import com.ydtech.modules.inv.model.InvAccountOperateResult;
 import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -38,5 +37,7 @@ int insertOrUpdateBatch(@Param("entities") List<InvAccountIncoice> entities);
 
 InvAccountIncoiceResult selectAccountIncoice(InvAccountIncoiceQueryVo invAccountIncoiceQueryVo);
 
+List<InvAccountOperateResult> selectAccountOperate(String invoiceId);
+
 }
 

+ 2 - 1
src/main/java/com/ydtech/modules/inv/model/InvAccountIncoice.java

@@ -15,6 +15,7 @@ import lombok.Data;
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 发票管理表(InvAccountIncoice)表实体类
@@ -105,7 +106,7 @@ public class InvAccountIncoice implements Serializable{
     @ApiModelProperty(value = "进账日期")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
     @TableField(exist = false)
-    private LocalDate payoutTime;
+    private Date payoutTime;
 
     @ApiModelProperty(value = "进账卡号")
     private String revBankCardNum;

+ 2 - 1
src/main/java/com/ydtech/modules/inv/model/InvAccountOperate.java

@@ -187,7 +187,8 @@ public class InvAccountOperate implements Serializable {
 
     private String delFlag;
 
-
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date payoutTime;
 
 
     @TableField(exist = false)

+ 15 - 0
src/main/java/com/ydtech/modules/inv/model/InvAccountOperateResult.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.inv.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class InvAccountOperateResult {
+    @ApiModelProperty(value = "开票Id")
+    private Long invoiceId;
+
+    @ApiModelProperty("进账时间")
+    private LocalDateTime payoutTime;
+}

+ 12 - 0
src/main/java/com/ydtech/modules/inv/model/excel/InvSourceExcel.java

@@ -249,4 +249,16 @@ public class InvSourceExcel implements Serializable {
      */
     @ExcelProperty("结算状态")
     private String clearingState;
+    /**
+     *保司结算状态
+     */
+    @ExcelProperty("保司结算状态")
+    private String insuranceClearingState;
+
+    @ExcelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy年MM月dd日")
+    private String revenueTime;
+
+    @ExcelProperty("导入人名字")
+    private String revenueName;
 }

+ 20 - 0
src/main/java/com/ydtech/modules/inv/model/po/InvSource.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.inv.model.po;
 
+import cn.hutool.core.date.DateTime;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.HeadFontStyle;
@@ -342,6 +343,23 @@ public class InvSource implements Serializable {
     @ExcelProperty("保司结算状态")
     private String insuranceClearingState;
 
+    /**
+     * 导入日期
+     */
+    @TableField(value = "revenue_time")
+    @ApiModelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelProperty("导入日期")
+    private String revenueTime;
+
+    /**
+     * 导入人名字
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人名字")
+    @ExcelProperty("导入人名字")
+    private String revenueName;
+
     @TableField(exist = false)
     private String[] ids;
 
@@ -399,4 +417,6 @@ public class InvSource implements Serializable {
             this.setSubsidyRatio(new BigDecimal(0));
         }
     }
+
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/inv/model/vo/InvSourceQueryVo.java

@@ -1,11 +1,14 @@
 package com.ydtech.modules.inv.model.vo;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.thymeleaf.util.DateUtils;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -290,6 +293,27 @@ public class InvSourceQueryVo extends PageRequest implements Serializable {
     @ApiModelProperty("保司结算状态")
     private String insuranceClearingState;
 
+    /**
+     * 导入日期
+     */
+    @TableField(value = "revenue_time")
+    @ApiModelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String revenueTime;
+    private String revenueTimeStartTime;
+    private String revenueTimeEndTime;
+
+    /**
+     * 导入人名字
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人名字")
+    private String revenueName;
+
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
+
+
+
 }

+ 6 - 0
src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementQueryVo.java

@@ -46,4 +46,10 @@ public class ReceivableAndSettlementQueryVo extends PageRequest {
     private String clearingState; // 结算状态
     @ApiModelProperty(value = "保司结算状态")
     private String insuranceClearingState;
+    @ApiModelProperty(value = "应收导入时间")
+    private String revenueTime;
+    @ApiModelProperty(value = "应收导入开始时间")
+    private String revenueTimeStartTime; // 应收导入开始时间
+    @ApiModelProperty(value = "应收导入结束时间")
+    private String revenueTimeEndTime; // 应收导入结束时间
 }

+ 4 - 0
src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementVo.java

@@ -192,4 +192,8 @@ public class ReceivableAndSettlementVo {
     @ApiModelProperty(value = "保司结算状态")
     @ExcelProperty(value = "保司结算状态")
     private String insuranceClearingState;
+
+    @ApiModelProperty(value = "应收导入时间")
+    @ExcelProperty(value = "应收导入时间")
+    private String revenueTime;
 }

+ 5 - 2
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountExcelServiceImpl.java

@@ -88,8 +88,11 @@ public class InvAccountExcelServiceImpl extends ServiceImpl<InvAccountExcelMappe
         for (InvAccountExcel record : records) {
             StringBuilder a = new StringBuilder();
             String[] split = record.getPayMethod().split(",");
-            for (String i : split) {
-                a.append(InvPayMethodEnum.getNameByCode(i)).append(",");
+            for (int i = 0; i < split.length; i++) {
+                a.append(InvPayMethodEnum.getNameByCode(split[i]));
+                if (i < split.length - 1) {
+                    a.append(",");
+                }
             }
             record.setPayMethod(a.toString());
         }

+ 20 - 14
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountIncoiceServiceImpl.java

@@ -29,6 +29,7 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -140,13 +141,14 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
         invAccountOperate.setFundUse(invAccountIncoice.getFundUse());
         invAccountOperate.setFundFen(invAccountIncoice.getFundFen());
         invAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
-        invAccountOperate.setCreateTime(invAccountIncoice.getPayoutTime().atStartOfDay());
+        invAccountOperate.setCreateTime(LocalDateTime.now());
         invAccountOperate.setEntProfit(entProfit);
         invAccountOperate.setDel(String.valueOf(date.getTime()));
         invAccountOperate.setOutCardNum(outCard.getBankCardNum());
         invAccountOperate.setEnterCardNum(entCard.getBankCardNum());
         invAccountOperate.setCreateId(baseController.getUserId());
         invAccountOperate.setCreateBy(baseController.getUserName());
+        invAccountOperate.setPayoutTime(invAccountIncoice.getPayoutTime());
 
         //支出操作记录
         InvAccountOperate outInvAccountOperate = new InvAccountOperate();
@@ -159,13 +161,14 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
         outInvAccountOperate.setFundUse(invAccountIncoice.getFundUse());
         outInvAccountOperate.setFundFen(invAccountIncoice.getFundFen());
         outInvAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
-        outInvAccountOperate.setCreateTime(invAccountIncoice.getPayoutTime().atStartOfDay());
+        outInvAccountOperate.setCreateTime(LocalDateTime.now());
         outInvAccountOperate.setOutProfit(outProfit);
         outInvAccountOperate.setDel(String.valueOf(date.getTime()));
         outInvAccountOperate.setOutCardNum(outCard.getBankCardNum());
         outInvAccountOperate.setEnterCardNum(entCard.getBankCardNum());
         outInvAccountOperate.setCreateId(baseController.getUserId());
         outInvAccountOperate.setCreateBy(baseController.getUserName());
+        outInvAccountOperate.setPayoutTime(invAccountIncoice.getPayoutTime());
 
 
         //放入操作记录list中
@@ -238,6 +241,7 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
             invAccountOperate1.setInvoiceId(invAccountIncoice1.getInvoiceId());
             invAccountOperate1.setOutProfit(outProfit);
             invAccountOperate1.setEntProfit(entProfit);
+            invAccountOperate1.setPayoutTime(invAccountIncoice.getPayoutTime());
             invAccountOperateService.insert(invAccountOperate1);
         }
 
@@ -335,7 +339,7 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
 
         } else {
             LambdaQueryWrapper<InvAccountOperate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-//            lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
+            lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId);
             lambdaQuery
                     .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getBiller()), InvAccountIncoice::getBiller, invAccountIncoiceQueryVo.getBiller())
                     .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceBy()), InvAccountIncoice::getInvoiceBy,
@@ -351,21 +355,23 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
                 lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoiceQueryVo.getInvoiceTimeEnd().toString());
             }
             lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime);
-            list = invAccountOperateService.list(lambdaQueryWrapper);
-//            List<String> collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList());
-            //将开票id集合放入查询中
-//            if (!collect.isEmpty()) {
-//                lambdaQuery.in(InvAccountIncoice::getInvoiceId, collect);
                 invAccountIncoices = selectExcel(lambdaQuery, invAccountIncoiceQueryVo);
-//            }
         }
-
-
         //解决时间格式报错问题
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         invAccountIncoices.forEach(invAccountIncoice -> {
-            if (!list.isEmpty()){
-                DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                invAccountIncoice.setPayoutDate(dtf3.format(list.get(0).getCreateTime()));
+            List<InvAccountOperateResult> payoutTimeList =  invAccountIncoiceMapper.selectAccountOperate(invAccountIncoice.getInvoiceId());
+            if (payoutTimeList != null && !payoutTimeList.isEmpty()) {
+                List<InvAccountOperateResult> filteredList = payoutTimeList.stream()
+                        .filter(result -> result.getPayoutTime() != null)
+                        .collect(Collectors.toList());
+
+                if (!filteredList.isEmpty()) {
+                    filteredList.sort(Comparator.comparing(InvAccountOperateResult::getPayoutTime).reversed());
+                    invAccountIncoice.setPayoutDate(filteredList.get(0).getPayoutTime().format(formatter).toString());
+                } else {
+                    invAccountIncoice.setPayoutDate("");
+                }
             }
             if (invAccountIncoice.getInvoiceTime() != null) {
                 invAccountIncoice.setInvoiceDate(invAccountIncoice.getInvoiceTime().toString());

+ 5 - 2
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOperateServiceImpl.java

@@ -83,8 +83,11 @@ public class InvAccountOperateServiceImpl extends ServiceImpl<InvAccountOperateM
             StringBuilder a = new StringBuilder();
             if (record.getPayMethod() != null) {
                 String[] split = record.getPayMethod().split(",");
-                for (String i : split) {
-                    a.append(InvPayMethodEnum.getNameByCode(i)).append(",");
+                for (int i = 0; i < split.length; i++) {
+                    a.append(InvPayMethodEnum.getNameByCode(split[i]));
+                    if (i < split.length - 1) {
+                        a.append(",");
+                    }
                 }
                 record.setPayMethod(a.toString());
             }

+ 21 - 6
src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.inv.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -21,10 +22,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -362,8 +360,11 @@ public class InvReceivableServiceImpl implements InvReceivableService {
             invSourceQueryVo.setClearingTimeStartTime(split1[0]);
             invSourceQueryVo.setClearingTimeEndTime(split1[1]);
         }
-
-
+        if (invSourceQueryVo.getRevenueTime() != null && !"".equals(invSourceQueryVo.getRevenueTime())) {
+            String[] split1 = invSourceQueryVo.getRevenueTime().split(",");
+            invSourceQueryVo.setRevenueTimeStartTime(split1[0]);
+            invSourceQueryVo.setRevenueTimeEndTime(split1[1]);
+        }
         Page<InvSource> pageData = invSourceMapper.getRecivablePage(page, invSourceQueryVo);
         List<InvSource> records = pageData.getRecords();
         records.forEach(x -> {
@@ -388,6 +389,11 @@ public class InvReceivableServiceImpl implements InvReceivableService {
             invSourceQueryVo.setClearingTimeStartTime(split1[0]);
             invSourceQueryVo.setClearingTimeEndTime(split1[1]);
         }
+        if (invSourceQueryVo.getRevenueTime() != null && !"".equals(invSourceQueryVo.getRevenueTime())) {
+            String[] split1 = invSourceQueryVo.getRevenueTime().split(",");
+            invSourceQueryVo.setRevenueTimeStartTime(split1[0]);
+            invSourceQueryVo.setRevenueTimeEndTime(split1[1]);
+        }
 
         List<InvSource> pageData = invSourceMapper.getRecivableList(invSourceQueryVo);
         pageData.forEach(x -> {
@@ -550,11 +556,20 @@ public class InvReceivableServiceImpl implements InvReceivableService {
 
     @Override
     public Page<ReceivableAndSettlementVo> getReceivableAndSettlementPage(ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) {
+        InvSourceQueryVo invSourceQueryVo = new InvSourceQueryVo();
         Page page = new Page();
         page.setCurrent(receivableAndSettlementQueryVo.getPageNum());
         page.setSize(receivableAndSettlementQueryVo.getPageSize());
+
+        if (receivableAndSettlementQueryVo.getRevenueTime() != null && !"".equals(receivableAndSettlementQueryVo.getRevenueTime())) {
+            String[] split1 = receivableAndSettlementQueryVo.getRevenueTime().split(",");
+            receivableAndSettlementQueryVo.setRevenueTimeStartTime(split1[0]);
+            receivableAndSettlementQueryVo.setRevenueTimeEndTime(split1[1]);
+        }
+
         Page<ReceivableAndSettlementVo> receivableAndSettlementPage = invReceivableMapper.getReceivableAndSettlementPage(page,
                 receivableAndSettlementQueryVo);
+
         return receivableAndSettlementPage;
     }
 

+ 20 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvSourceServiceImpl.java

@@ -1,10 +1,13 @@
 package com.ydtech.modules.inv.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.inv.dao.InvSourceMapper;
 import com.ydtech.modules.inv.model.excel.InvSourceExcel;
 import com.ydtech.modules.inv.model.po.InvSource;
@@ -15,6 +18,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.List;
 
 /**
@@ -33,8 +38,19 @@ public class InvSourceServiceImpl extends ServiceImpl<InvSourceMapper, InvSource
 
     @Override
     public HttpResult readExcel(String file) {
+
+
         List<InvSourceExcel> invSourceExcels = EasyExcelUtils.readInvSourceExcel(uploadFilePath + file, InvSourceExcel.class);
         List<InvSource> invSources = JSON.parseArray(JSONArray.toJSONString(invSourceExcels), InvSource.class);
+        SysUser user = BaseController.getUser();
+
+        DateTime dateTime = new DateTime();
+
+        for (InvSource invSource : invSources) {
+            invSource.setRevenueName(user.getName());
+            invSource.setRevenueTime(dateTime.toString());
+        }
+
         boolean result = invSourceService.saveOrUpdateBatchWithConditions(invSources);
         return result ? HttpResult.ok("导入成功") : HttpResult.error("导入失败");
     }
@@ -53,11 +69,14 @@ public class InvSourceServiceImpl extends ServiceImpl<InvSourceMapper, InvSource
     @Transactional
     public boolean saveOrUpdateBatchWithConditions(List<InvSource> invSourceList) {
         for (InvSource invSource : invSourceList) {
+
+
             InvSource one = baseMapper.selectOne(new LambdaQueryWrapper<InvSource>()
                     .eq(InvSource::getLicenseno, invSource.getLicenseno())
                     .eq(InvSource::getJqPolicyId, invSource.getJqPolicyId())
                     .eq(InvSource::getSyPolicyId, invSource.getSyPolicyId())
                     .eq(InvSource::getNonCarPolicyId, invSource.getNonCarPolicyId()));
+
             if (one != null) {
                 invSource.setId(one.getId());
                 baseMapper.updateById(invSource);
@@ -68,6 +87,7 @@ public class InvSourceServiceImpl extends ServiceImpl<InvSourceMapper, InvSource
         return true;
     }
 
+
 }
 
 

+ 23 - 6
src/main/java/com/ydtech/modules/inv/utils/EasyExcelUtils.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.inv.utils;
 
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.alibaba.excel.util.ListUtils;
 import com.alibaba.excel.write.builder.ExcelWriterBuilder;
 import com.ydtech.constants.enums.inv.InvPayMethodEnum;
@@ -214,6 +215,7 @@ public class EasyExcelUtils {
         // 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
 //        List<InvSourceExcel> list = new ArrayList<>();
         List<InvSourceExcel> list = EasyExcel.read(uploadFilePath, clz, new InvSourceDataListener())
+                .excelType(ExcelTypeEnum.XLSX)
                 .sheet()
                 .sheetName("来源表")
                 .doReadSync();
@@ -260,8 +262,11 @@ public class EasyExcelUtils {
             String payMethod = excel.getPayMethod();
             String[] split = payMethod.split(",");
             StringBuilder a = new StringBuilder();
-            for (String i : split) {
-                a.append(InvPayMethodEnum.getNameByCode(i)).append(",");
+            for (int i = 0; i < split.length; i++) {
+                a.append(InvPayMethodEnum.getNameByCode(split[i]));
+                if (i < split.length - 1) {
+                    a.append(",");
+                }
             }
 
             StringBuilder stringBuffer = new StringBuilder();
@@ -272,16 +277,28 @@ public class EasyExcelUtils {
                     ));
 
             for (Map.Entry<String, Object> entry : excel.getOutProfit().entrySet()) {
-                if (Integer.parseInt(entry.getValue().toString()) != 0) {
-                    stringBuffer.append(collect.get(entry.getKey()).get(0).getProfitName()).append("    ").append(entry.getValue());
+                try {
+                    double value = Double.parseDouble(entry.getValue().toString());
+                    if (value != 0) {
+                        stringBuffer.append(collect.get(entry.getKey()).get(0).getProfitName()).append("    ").append(value);
+                    }
+                } catch (NumberFormatException e) {
+                    // 处理转换异常
+                    e.printStackTrace();
                 }
             }
 
             stringBuffer.append("→");
 
             for (Map.Entry<String, Object> entry : excel.getEntProfit().entrySet()) {
-                if (Integer.parseInt(entry.getValue().toString()) != 0) {
-                    stringBuffer.append(collect.get(entry.getKey()).get(0).getProfitName()).append("   ").append(entry.getValue());
+                try {
+                    double value = Double.parseDouble(entry.getValue().toString());
+                    if (value != 0) {
+                        stringBuffer.append(collect.get(entry.getKey()).get(0).getProfitName()).append("    ").append(value);
+                    }
+                } catch (NumberFormatException e) {
+                    // 处理转换异常
+                    e.printStackTrace();
                 }
             }
 

+ 0 - 1
src/main/java/com/ydtech/modules/inv/utils/excel/InvSourceDataListener.java

@@ -55,7 +55,6 @@ public class InvSourceDataListener implements ReadListener<InvSourceExcel> {
                             LocalDate o = LocalDate.parse(dateString,formatter1);
                             field.set(data,formatter.format(o));
                         }
-
                     }else{
                         if(field.get(data) == null){
                             field.set(data,"0");

+ 0 - 1
src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java

@@ -59,7 +59,6 @@ public class AuditVerificationAspect {
             //再进行费用因子判断
             feeRuleSchemeNewService.verificationCostFactor(insAreaCompany,insOrders);
         }
-        throw new SystemException("没有找到费用,核保失败!");
     }
 
 }

+ 26 - 0
src/main/java/com/ydtech/modules/order/components/FileComponents.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.components;
+
+import com.ydtech.utils.baidu.FileUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class FileComponents {
+
+    @Value("${upload.file.path}")
+    private String uploadFilePath;
+
+    @Value("${upload.file.url}")
+    private String showFileUrl;
+
+    @Value("${api.url}")
+    private String apiUrl;
+
+    public String gainCarInsPolicy(String url, String fileName, String licensePlate) {
+        String dir = "carInsPolicy/" + licensePlate + "/";
+        return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
+    }
+
+
+}

+ 227 - 0
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -0,0 +1,227 @@
+package com.ydtech.modules.order.components.bohai;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.ydtech.config.properties.BohaiApiConfigurationProperties;
+import com.ydtech.constants.InsuranceEnum;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
+import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
+import com.ydtech.modules.order.entity.api.bohai.request.*;
+import com.ydtech.modules.order.entity.api.bohai.response.*;
+import com.ydtech.modules.order.utils.InsuranceLog;
+import com.ydtech.modules.order.utils.SignatureUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+
+
+/**
+ * @description: 渤海财险
+ * @author: wenks
+ * @date: 2024/3/6 14:45
+ **/
+@Component
+@RequiredArgsConstructor
+public class BoHaiRequestApiComponent {
+
+    private final BohaiApiConfigurationProperties properties;
+
+    private final RestTemplate restTemplate;
+
+
+    /**
+     * 加密请求
+     *
+     * @param q      请求参数
+     * @param url    请求url
+     * @param tClass 响应类型
+     * @param <Q>    Request 请求体
+     * @param <S>    Response 响应体
+     * @return <S>
+     */
+    private <Q extends BoHaiBaseRequest, S extends BoHaiBaseResponse> S post(Q q, String url, Class<S> tClass) throws Exception {
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+
+        String busReqString = JSON.toJSONString(q, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> URl: {} \n---------> 请求参数:{}", url, busReqString);
+        BoHaiEncrypted boHaiEncrypted = new BoHaiEncrypted(busReqString, properties);
+        String json = JSON.toJSONString(boHaiEncrypted, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        // 获取请求头signature 和加密后的内容
+        Map<String, String> stringStringMap = SignatureUtils.encryptAndSign(properties.getSelfPrivateKey(),
+                properties.getBoHaiPublicKey(), json, true, true);
+        String signature = stringStringMap.get("signature");
+        String content = stringStringMap.get("content");
+        httpHeaders.set("signature", signature);
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 加密后的参数:{} \n\t---------> 请求头内容signature:{}", content,
+                signature);
+        // 请求
+        HttpEntity<String> httpEntity = new HttpEntity<>(content, httpHeaders);
+        ResponseEntity<String> response = restTemplate.postForEntity(url, httpEntity, String.class);
+        String body = response.getBody();
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 解密前的参数:{}", body);
+
+        // 解密响应
+        BoHaiEncrypted encrypted = JSON.parseObject(body).toJavaObject(BoHaiEncrypted.class);
+        String info = SignatureUtils.decryptByPrivateKey(encrypted.getBizContent(), properties.getSelfPrivateKey());
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 解密后的参数:{}", info);
+        return JSON.parseObject(info).toJavaObject(tClass);
+    }
+
+
+    /**
+     * 生成订单号请求
+     *
+     * @param request 生成订单号请求实体
+     * @return 返回订单号响应
+     */
+    public GenerateOrderNoResponse generateOrderNo(GenerateOrderNoRequest request) throws Exception {
+        return post(request, properties.getUrl(), GenerateOrderNoResponse.class);
+    }
+
+    /**
+     * 车辆查询
+     *
+     * @param request 车辆查询请求实体
+     * @return 响应
+     */
+    public VehicleTypeQueryResponse vehicleTypeQuery(VehicleTypeQueryRequest request) throws Exception {
+        return post(request, properties.getUrl(), VehicleTypeQueryResponse.class);
+    }
+
+    /**
+     * 车辆确认
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
+    public VehicleConfirmationResponse vehicleConfirmation(VehicleConfirmationReqeust request) throws Exception {
+        VehicleConfirmationResponse response = post(request, properties.getUrl(), VehicleConfirmationResponse.class);
+        if (ResponseCode.R_Z00002.getCode().equals(response.getResponseCode())) {
+            response = post(request, properties.getUrl(), VehicleConfirmationResponse.class);
+        }
+        if (ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
+            return response;
+        }
+        throw new SystemException(response.getResponseMsg());
+    }
+
+    /**
+     * 上传影响
+     *
+     * @param imageUploadRequest 影像请求
+     * @return 响应
+     */
+    public ImageUploadResponse imageUpload(ImageUploadRequest imageUploadRequest) throws Exception {
+        return post(imageUploadRequest, properties.getUrl(), ImageUploadResponse.class);
+    }
+
+
+    /**
+     * 车+X产品查询接口
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
+    public NonAutomotiveProductsResponse products(NonAutomotiveProductsRequest request) throws Exception {
+        return post(request, properties.getUrl(), NonAutomotiveProductsResponse.class);
+    }
+
+    /**
+     * 车+X产品详情查询接口
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
+    public NonAutomotiveProductsDetailsResponse productsDetails(NonAutomotiveProductsDetailsRequest request) throws Exception {
+        return post(request, properties.getUrl(), NonAutomotiveProductsDetailsResponse.class);
+    }
+
+
+    /**
+     * 报价
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
+    public QuotationResponse quotation(QuotationRequest request) throws Exception {
+        return post(request, properties.getUrl(), QuotationResponse.class);
+    }
+
+    /**
+     * 核保
+     *
+     * @param underwritingRequest 核保 请求实体
+     * @return 响应
+     */
+    public UnderwritingResponse underwriting(UnderwritingRequest underwritingRequest) throws Exception {
+        return post(underwritingRequest, properties.getUrl(), UnderwritingResponse.class);
+    }
+
+    /**
+     * 支付
+     *
+     * @param paymentRequest 车辆确认 请求实体
+     * @return 响应
+     */
+    public PaymentResponse payment(PaymentRequest paymentRequest) throws Exception {
+        return post(paymentRequest, properties.getUrl(), PaymentResponse.class);
+    }
+
+    /**
+     * 获取保单接口
+     *
+     * @param electronicPolicyRequest 保单请求
+     * @return 响应
+     */
+    public ElectronicPolicyResponse electronicPolicy(ElectronicPolicyRequest electronicPolicyRequest) throws Exception {
+        return post(electronicPolicyRequest, properties.getUrl(), ElectronicPolicyResponse.class);
+    }
+
+    /**
+     * 单证查询
+     *
+     * @param statusDocumentsRequest 单证查询
+     * @return 响应
+     */
+    public StatusDocumentsResponse statusDocuments(StatusDocumentsRequest statusDocumentsRequest) throws Exception {
+        StatusDocumentsResponse response = post(statusDocumentsRequest, properties.getUrl(), StatusDocumentsResponse.class);
+        verificationResponseCode(response.getResponseCode(), response.getResponseMsg());
+        return response;
+    }
+
+    /**
+     * 验证响应
+     *
+     * @param responseCode 响应code
+     * @param responseMsg  响应内容
+     */
+    private void verificationResponseCode(String responseCode, String responseMsg) {
+        if (ResponseCode.R_Z00004.getCode().equals(responseCode)) {
+            throw new SystemException(responseMsg);
+        }
+    }
+
+    /**
+     * @param responseCode 渤海财险请求状态
+     * @param requestNo    请求内容
+     * @return
+     * @throws Exception
+     */
+    public String encryptionCallbackResponse(ResponseCode responseCode, String requestNo) throws Exception {
+        CallbackResponse callbackResponse = new CallbackResponse(responseCode, requestNo);
+        String json = JSON.toJSONString(callbackResponse, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        Map<String, String> stringStringMap = SignatureUtils.encryptAndSign(properties.getSelfPrivateKey(),
+                properties.getBoHaiPublicKey(), json, false, true);
+        return stringStringMap.get("content");
+    }
+
+}

+ 6 - 6
src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiQuotationProcessorComponent.java

@@ -25,10 +25,10 @@ public class HuaTaiQuotationProcessorComponent {
 
     private final HuaTaiRepeatInsuranceComponents huaTaiRepeatInsuranceComponents;
 
-    public HuaTaiQuotedPriceResponse handler(HuaTaiQuotedPriceRequest quotedPriceRequest, List<String> warnMessageList) {
+    public HuaTaiQuotedPriceResponse handler(HuaTaiQuotedPriceRequest quotedPriceRequest, List<String> warnMessageList, String insuredCode) {
         boolean b;
         HuaTaiQuotedPriceResponse quotedPriceResponse = huaTaiRequestApiComponents.quotedPrice(quotedPriceRequest,
-                HuaTaiQuotedPriceResponse.class);
+                HuaTaiQuotedPriceResponse.class,  insuredCode);
 
         // 将报价号和校验码置空
         List<HuaTaiQuotedPriceRequest.ContractDto> contract1 = quotedPriceRequest.getBusinessData().getContract();
@@ -40,25 +40,25 @@ public class HuaTaiQuotationProcessorComponent {
         // 交强险重复投保
         b = huaTaiRepeatInsuranceComponents.compulsoryInsurance(quotedPriceRequest, quotedPriceResponse, warnMessageList);
         if (b) {
-            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList);
+            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList, insuredCode);
         }
 
         // 商业险重复投保
         b = huaTaiRepeatInsuranceComponents.commercialInsurance(quotedPriceRequest, quotedPriceResponse, warnMessageList);
         if (b) {
-            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList);
+            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList, insuredCode);
         }
 
         // 校验码
         b = huaTaiReinsuranceComponents.processor(quotedPriceResponse, quotedPriceRequest);
         if (b) {
-            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList);
+            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList, insuredCode);
         }
 
         // 校验码有误
         b = huaTaiReinsuranceComponents.processor(quotedPriceResponse);
         if (b) {
-            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList);
+            quotedPriceResponse = handler(quotedPriceRequest, warnMessageList, insuredCode);
         }
 
 

+ 30 - 28
src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiRequestApiComponents.java

@@ -61,7 +61,7 @@ public class HuaTaiRequestApiComponents {
      * @param <S>    Response 响应体
      * @return <S>
      */
-    private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S post(Q q, String url, Class<S> tClass) {
+    private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S post(Q q, String url, Class<S> tClass, String insuredCode) {
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
 
@@ -82,7 +82,7 @@ public class HuaTaiRequestApiComponents {
             throw new SystemException("RSA加密获取accessToken失败!");
         }
         HuaTaiEncryptReq encryptReq = new HuaTaiEncryptReq();
-        encryptReq.setInsuredCode(properties.getInsuredCode());
+        encryptReq.setInsuredCode(insuredCode);
         encryptReq.setSourceCode(properties.getSourceCode());
         encryptReq.setBusiContent(busiContent);
         encryptReq.setAccessToken(accessToken);
@@ -149,9 +149,9 @@ public class HuaTaiRequestApiComponents {
      * @return 响应内容
      */
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S request(Q request, Class<S> tClass, boolean verify,
-                                                                                  String domain, String urlInterface) {
+                                                                                  String domain, String insuredCode) {
         String url = domain;
-        S response = post(request, url, tClass);
+        S response = post(request, url, tClass, insuredCode);
         if (verify) {
             validationResults(response);
         }
@@ -164,8 +164,8 @@ public class HuaTaiRequestApiComponents {
      *            常规
      */
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify,
-                                                                                         String urlInterface) {
-        return request(request, tClass, verify, properties.getBaseUrl(), urlInterface);
+                                                                                         String insuredCode) {
+        return request(request, tClass, verify, properties.getBaseUrl(), insuredCode);
     }
 
     /**
@@ -173,8 +173,8 @@ public class HuaTaiRequestApiComponents {
      * @param <S> Response 响应体
      *            影像
      */
-    private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> void imageRequest(Q request, Class<S> tClass, boolean verify) {
-        request(request, tClass, verify, properties.getBaseUrl(), "");
+    private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> void imageRequest(Q request, Class<S> tClass, boolean verify, String insuredCode) {
+        request(request, tClass, verify, properties.getBaseUrl(), insuredCode);
     }
 
     /**
@@ -182,8 +182,8 @@ public class HuaTaiRequestApiComponents {
      * @param <S> Response 响应体
      *            短信
      */
-    private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S smsRequest(Q request, Class<S> tClass, boolean verify) {
-        return request(request, tClass, verify, properties.getBaseUrl(), "");
+    private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S smsRequest(Q request, Class<S> tClass, boolean verify, String insuredCode) {
+        return request(request, tClass, verify, properties.getBaseUrl(), insuredCode);
     }
 
 
@@ -191,56 +191,57 @@ public class HuaTaiRequestApiComponents {
      * 车型查询 传入必要车辆信息,返回车型列表给用户选择
      */
     public List<HuaTaiModelsQueryResponse.CarModelDto> modelQuery(HuaTaiModelsQueryRequest request,
-                                                                  Class<HuaTaiModelsQueryResponse> tClass) {
-        return routineRequest(request, tClass, true, "").getCarModel();
+                                                                  Class<HuaTaiModelsQueryResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode).getCarModel();
     }
 
-    public HuaTaiActualValueResponse actualValue(HuaTaiActualValueRequest request, Class<HuaTaiActualValueResponse> tClass) {
-        return routineRequest(request, tClass, true, "");
+    public HuaTaiActualValueResponse actualValue(HuaTaiActualValueRequest request, Class<HuaTaiActualValueResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
     }
 
     /**
      * 报价 传入必要投保方案信息,返回投保单保费及车船税
      */
-    public HuaTaiQuotedPriceResponse quotedPrice(HuaTaiQuotedPriceRequest request, Class<HuaTaiQuotedPriceResponse> tClass) {
-        return routineRequest(request, tClass, false, "");
+    public HuaTaiQuotedPriceResponse quotedPrice(HuaTaiQuotedPriceRequest request, Class<HuaTaiQuotedPriceResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, false, insuredCode);
     }
 
     /**
      * 提交核保 传入投保单必要信息,对投保单进行审核
      */
-    public HuaTaiSubmitResponse submit(HuaTaiSubmitRequest request, Class<HuaTaiSubmitResponse> tClass) {
-        return routineRequest(request, tClass, false, "");
+    public HuaTaiSubmitResponse submit(HuaTaiSubmitRequest request, Class<HuaTaiSubmitResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, false, insuredCode);
     }
 
     /**
      * 上传影像 传入订单信息,查询是否生成保单成功
      */
-    public HuaTaiUploadImageResponse uploadImage(HuaTaiUploadImageRequest request, Class<HuaTaiUploadImageResponse> tClass) {
-        return routineRequest(request, tClass, true, "");
+    public HuaTaiUploadImageResponse uploadImage(HuaTaiUploadImageRequest request, Class<HuaTaiUploadImageResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
     }
 
     /**
      * 缴费查询
      */
-    public HuaTaiOrderStatusResponse orderStatus(HuaTaiOrderStatusRequest request, Class<HuaTaiOrderStatusResponse> tClass) {
-        return routineRequest(request, tClass, true, "");
+    public HuaTaiOrderStatusResponse orderStatus(HuaTaiOrderStatusRequest request, Class<HuaTaiOrderStatusResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
     }
 
 
     /**
      * 获取缴费链接
      */
-    public HuaTaiPaymentUrlResponse getPaymentUrl(HuaTaiPaymentUrlRequest request, Class<HuaTaiPaymentUrlResponse> tClass) {
-        return routineRequest(request, tClass, true, "");
+    public HuaTaiPaymentUrlResponse getPaymentUrl(HuaTaiPaymentUrlRequest request, Class<HuaTaiPaymentUrlResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
     }
 
     /**
      * 核保状态查询 传入单号查询该单核保状态
      */
     public HuaTaiSubmitStatusQueryResponse submitStatus(HuaTaiSubmitStatusQueryRequest request,
-                                                        Class<HuaTaiSubmitStatusQueryResponse> tClass) {
-        return routineRequest(request, tClass, true, HuaTaiTransCode.SUBMIT);
+                                                        Class<HuaTaiSubmitStatusQueryResponse> tClass,
+                                                        String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
     }
 
 
@@ -248,8 +249,9 @@ public class HuaTaiRequestApiComponents {
      * 电子保单下载 传入单号相关信息下载电子保单
      */
     public HuaTaiInsurancePolicyPrintResponse insurancePolicyPrint(HuaTaiInsurancePolicyPrintRequest request,
-                                                                   Class<HuaTaiInsurancePolicyPrintResponse> tClass) {
-        return routineRequest(request, tClass, true, "");
+                                                                   Class<HuaTaiInsurancePolicyPrintResponse> tClass,
+                                                                   String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
     }
 
 

+ 115 - 0
src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java

@@ -0,0 +1,115 @@
+package com.ydtech.modules.order.controller;
+
+
+import com.ydtech.aop.request.RequestSingleParam;
+import com.ydtech.config.properties.BohaiApiConfigurationProperties;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.aop.QuoteVerification;
+import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
+import com.ydtech.modules.order.entity.api.bohai.request.ManualReviewRequest;
+import com.ydtech.modules.order.entity.api.bohai.request.PaymentCallbackRequest;
+import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsDetailsResponse;
+import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsResponse;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
+import com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
+import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
+import com.ydtech.modules.order.service.BoHaiOrderApiService;
+import com.ydtech.modules.order.utils.SignatureUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "渤海财险 API ")
+@Slf4j
+@RestController
+@RequestMapping("/order/boHaiApi")
+@RequiredArgsConstructor
+public class BoHaiOrderApiController {
+
+    private final BoHaiOrderApiService boHaiOrderApiService;
+
+    private final InsOrdersComponents insOrdersComponents;
+
+    private final BohaiApiConfigurationProperties properties;
+
+
+    @PostMapping("/productQuery")
+    @ApiOperation("车+X产品查询接口")
+    public HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(@RequestBody ProductQueryVo productQueryVo) throws Exception {
+        return this.boHaiOrderApiService.productQuery(productQueryVo);
+    }
+
+    @PostMapping("/productDetailsQuery")
+    @ApiOperation("车+X产品详情查询接口")
+    public HttpResult<List<NonAutomotiveProductsDetailsResponse.DataDTO.CoveragesDTO>> productDetailsQuery(@RequestBody ProductDetailsQueryVo productDetailsQueryVo) throws Exception {
+        return this.boHaiOrderApiService.productDetailsQuery(productDetailsQueryVo);
+    }
+
+    @QuoteVerification("报价授权")
+    @PostMapping("/quote")
+    @ApiOperation("报价")
+    public HttpResult<QuoteRespVo> quote(@RequestBody BaseQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo) throws Exception {
+        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
+        return this.boHaiOrderApiService.quote(quoteInfo, quoteVo);
+    }
+
+    @PostMapping(value = "/submitImage")
+    @ApiOperation(value = "提交影像信息")
+    public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.submitImage(companyId);
+    }
+
+    @PostMapping(value = "/audit")
+    @ApiOperation(value = "提交核保")
+    public HttpResult<Object> audit(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.audit(companyId);
+    }
+
+    @PostMapping("/getPolicyPrint")
+    @ApiOperation(value = "电子保单")
+    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.getPolicyPrint(companyId);
+    }
+
+    @PostMapping("/getOrderDetail")
+    @ApiOperation(value = "订单状态查询")
+    public HttpResult<Object> getOrderDetail(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.getOrderDetail(companyId);
+    }
+
+    @PostMapping("/auditStatusQuery")
+    @ApiOperation(value = "核保状态查询")
+    public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.auditStatusQuery(companyId);
+    }
+
+    @PostMapping("/underwritingCallback")
+    @ApiOperation(value = "支付回调")
+    public String underwritingCallback(@RequestBody BoHaiEncrypted s) throws Exception {
+        PaymentCallbackRequest coverageRequest = SignatureUtils.decryptMessage(s.getBizContent(), PaymentCallbackRequest.class, "承保回调",
+                properties.getSelfPrivateKey());
+        return this.boHaiOrderApiService.underwritingCallback(coverageRequest);
+    }
+
+    @PostMapping("/auditCallback")
+    @ApiOperation(value = "审核回调")
+    public String auditCallback(@RequestBody BoHaiEncrypted s) throws Exception {
+        ManualReviewRequest approvedRequest = SignatureUtils.decryptMessage(s.getBizContent(), ManualReviewRequest.class, "审核回调",
+                properties.getSelfPrivateKey());
+        return this.boHaiOrderApiService.auditCallback(approvedRequest);
+    }
+
+
+}

+ 3 - 0
src/main/java/com/ydtech/modules/order/controller/DaJiaOrderController.java

@@ -4,6 +4,7 @@ package com.ydtech.modules.order.controller;
 import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.aop.AuditVerification;
 import com.ydtech.modules.order.aop.QuoteVerification;
 import com.ydtech.modules.order.components.InsOrdersComponents;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo;
@@ -43,8 +44,10 @@ public class DaJiaOrderController {
     @ApiOperation(value = "提交影像信息")
     public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) {
         return this.daJiaOrderService.submitImage(companyId);
+//        return HttpResult.ok("ok");
     }
 
+//    @AuditVerification("核保")
     @PostMapping(value = "/audit")
     @ApiOperation(value = "提交核保")
     public HttpResult<Object> audit(@RequestSingleParam(value = "companyId") String companyId) {

+ 0 - 3
src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java

@@ -40,9 +40,6 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class InsOrdersController extends BaseController {
 
-    @Value("${upload.file.path}")
-    private String uploadFilePath;
-
     private final InsOrdersService insOrdersService;
 
     private final InsAreaCompanyService insAreaCompanyService;

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

@@ -368,6 +368,8 @@ public class InsAreaCompany implements Serializable {
         this.jqLossRation = quoteRespVo.getJqLossRation();
         this.syLossRation = quoteRespVo.getSyLossRation();
 
+        this.jqapplyno = quoteRespVo.getJqApplyNo();
+        this.syapplyno = quoteRespVo.getSyApplyNo();
     }
 
     public void setPaymentLink(String paymentLink) {

+ 48 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/BoHaiEncrypted.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.order.entity.api.bohai;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.config.properties.BohaiApiConfigurationProperties;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 国任财险请求加密
+ * @author: wenks
+ * @date: 2024/3/6 14:54
+ **/
+@NoArgsConstructor
+@Data
+public class BoHaiEncrypted implements Serializable {
+
+    private static final long serialVersionUID = -1988710813171274356L;
+
+    /**
+     * 业务数据加密串
+     */
+    @JsonProperty("bizContent")
+    private String bizContent;
+
+    /**
+     * 合作方代码,由渤海分配
+     */
+    @JsonProperty("insurerCode")
+    private String insurerCode;
+
+    /**
+     * 配置
+     */
+    @JsonProperty("sysSourceCode")
+    private String sysSourceCode;
+
+
+    public BoHaiEncrypted(String bizContent, BohaiApiConfigurationProperties properties) {
+        this.bizContent = bizContent;
+        this.insurerCode = properties.getInsurerCode();
+        this.sysSourceCode = properties.getSysSourceCode();
+    }
+
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/AuditStatus.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 核保状态
+ * @author: wenks
+ * @date: 2024/3/11 14:05
+ **/
+@Getter
+@AllArgsConstructor
+public enum AuditStatus {
+
+    A_0("0", "失败"),
+    A_1("1", "成功");
+
+    private final String code;
+
+    private final String desc;
+
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CertType.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 证件类型代码
+ * @author: wenks
+ * @date: 2024/3/7 14:18
+ **/
+@AllArgsConstructor
+@Getter
+public enum CertType {
+
+    CT_111("111", "居民身份证");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 46 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/Coverages.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 渤海财险险种
+ * @author: wenks
+ * @date: 2024/3/7 16:19
+ **/
+@AllArgsConstructor
+@Getter
+public enum Coverages {
+
+    C_A("0301200", "机动车损失保险", "0401200", "新能源汽车损失保险"),
+    C_B("0301600", "机动车第三者责任保险", "0401600", "新能源汽车第三者责任保险"),
+    C_D3("0301701", "机动车车上人员责任保险(司机)", "0401701", "新能源汽车车上人员责任保险(司机)"),
+    C_D4("0301702", "机动车车上人员责任保险(乘客)", "0301702", "新能源汽车车上人员责任保险(乘客)"),
+    C_L("0301210", "附加车身划痕损失险", "0301210", "附加车身划痕损失险"),
+    C_BD("0301604", "附加法定节假日限额翻倍险", "0301604", "附加法定节假日限额翻倍险"),
+
+    C_SY_FJ_YBW1("0301002", "附加医保外医疗费用责任险(机动车第三者责任保险)", "0301002", "附加医保外医疗费用责任险(机动车第三者责任保险)"),
+    C_SY_FJ_YBW3("0301011", "附加医保外医疗费用责任险(机动车车上人员责任保险(司机))", "0301011", "附加医保外医疗费用责任险(机动车车上人员责任保险(司机))"),
+    C_SY_FJ_YBW2("0301012", "附加医保外医疗费用责任险(机动车车上人员责任保险(乘客))", "0301012", "附加医保外医疗费用责任险(机动车车上人员责任保险(乘客))"),
+
+    C_TY1("0301003", "道路救援服务特约条款", "0301003", "道路救援服务特约条款"),
+    C_TY2("0301004", "车辆安全检测特约条款", "0301004", "车辆安全检测特约条款"),
+    C_TY3("0301005", "代为驾驶服务特约条款", "0301005", "代为驾驶服务特约条款"),
+    C_TY4("0301006", "代为送检服务特约条款", "0301006", "代为送检服务特约条款"),
+
+    C_MJ1("0301007", "附加绝对免赔率特约条款(机动车损失保险)", "0301007", "附加绝对免赔率特约条款(机动车损失保险)"),
+    C_MJ2("0301008", "附加绝对免赔率特约条款(机动车第三者责任保险)", "0301008", "附加绝对免赔率特约条款(机动车第三者责任保险)"),
+    C_MJ3("0301009", "附加绝对免赔率特约条款(机动车车上人员责任保险(司机))", "0301009", "附加绝对免赔率特约条款(机动车车上人员责任保险(司机))"),
+    C_MJ4("0301010", "附加绝对免赔率特约条款(机动车车上人员责任保险(乘客))", "0301010", "附加绝对免赔率特约条款(机动车车上人员责任保险(乘客))");
+
+    private final String fuelOilCode;
+
+    private final String fuelOilDesc;
+
+    private final String newEnergyCode;
+
+    private final String newEnergyDesc;
+
+}

+ 27 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CustomerType.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 客户类型代码
+ * @author: wenks
+ * @date: 2024/3/7 14:36
+ **/
+@Getter
+@AllArgsConstructor
+public enum CustomerType {
+
+    CT_1("1", "团体客户"),
+    CT_2("2","个人客户"),
+    CT_3("3","虚拟客户"),
+    CT_4("4","机关"),
+    CT_5("5","企业"),
+    CT_6("6","事业单位");
+
+    private final String code;
+
+    private final String desc;
+}

+ 55 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/DocumentClass.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: TODO
+ * @author: wenks
+ * @date: 2024/3/8 11:31
+ **/
+@AllArgsConstructor
+@Getter
+public enum DocumentClass {
+
+    SFZ_01("SFZ_01", "身份证正面", "", ""),
+    SFZ_02("SFZ_02", "身份证反面", "", ""),
+
+    ZGZ_00("ZGZ_00", "资格证照片", "", ""),
+
+    LD_00("LD_00", "劳动合同照片", "", ""),
+
+    YP_00("YP_00", "应聘表照片", "", ""),
+
+    DX_00("DX_00", "定薪表照片", "", ""),
+
+    XC00("XC00", "新车合格证", "Z00400", "Z00404"),
+    GC00("GC00", "购车发票", "Z00400", "Z00401"),
+    GX00("GX00", "关系证明", "", ""),
+
+    C01("C01", "行驶证正面", "Z00400", "Z001044"),
+    D01("D01", "行驶证反面", "Z00400", "Z001044"),
+
+    C02("C02", "车主身份证正面", "Z00300", "Z001042"),
+    D02("D02", "车主身份证反面", "Z00300", "Z001042"),
+
+    C03("C03", "投保人身份证正面", "Z00100", "Z001042"),
+    D03("D03", "投保人身份证反面", "Z00100", "Z001042"),
+
+    C04("C04", "被保人身份证正面", "Z00200", "Z001042"),
+    D04("D04", "被保人身份证反面", "Z00200", "Z001042");
+
+
+    private final String code;
+
+    private final String desc;
+
+    // 大类
+    private final String document;
+
+    // 小类
+    private final String documentType;
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/FormatType.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 保单格式
+ * @author: wenks
+ * @date: 2024/3/7 14:15
+ **/
+@AllArgsConstructor
+@Getter
+public enum FormatType {
+
+    FT_0("0", "纸质保单"),
+    FT_1("1", "电子保单");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/InvoiceType.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 渤海财险 发票类型
+ * @author: wenks
+ * @date: 2024/3/7 14:13
+ **/
+@AllArgsConstructor
+@Getter
+public enum InvoiceType {
+
+    IT_0("0", "纸质普票"),
+    IT_1("1", "电子普票"),
+    IT_2("2", "电子专票"),
+    IT_3("3", "纸质专票");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/PayResult.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum PayResult {
+
+    P_0("0", "支付失败"),
+    P_1("1", "支付成功");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 46 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/RequestType.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 渤海财险 请求类型代码
+ * @author: wenks
+ * @date: 2024/3/6 11:52
+ **/
+@Getter
+@AllArgsConstructor
+public enum RequestType {
+
+    Z00001("Z00001", "获取初始化参数"),
+    Z00002("Z00002", "生成订单号"),
+    Z00003("Z00003", "获取交管查询校验码"),
+    Z00004("Z00004", "车型查询"),
+    Z00005("Z00005", "车辆确认"),
+    Z00006("Z00006", "报价"),
+    Z00007("Z00007", "核保"),
+    Z00008("Z00008", "支付申请"),
+    Z00009("Z00009", "撤销核保"),
+    Z00010("Z00010", "获取短信验证码"),
+    Z00011("Z00011", "回收短信验证码"),
+    Z00012("Z00012", "客户信息审核"),
+    Z00013("Z00013", "电子签名支付"),
+    Z00014("Z00014", "公共影像上传"),
+    Z00015("Z00015", "人工审核"),
+    Z00016("Z00016", "投保单继续支付"),
+    Z00017("Z00017", "续保查询"),
+    Z00018("Z00018", "车+X产品查询"),
+    Z00019("Z00019", "车+X产品详情查询"),
+    Z00020("Z00020", "电子保单下载"),
+    Z00021("Z00021", "单证状态查询"),
+    Z00022("Z00022", "支付信息回调"),
+    Z00023("Z00023", "保单结果回调"),
+    Z00024("Z00024", "人工审核信息回调");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResponseCode.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 渤海财险请求状态
+ * @author: wenks
+ * @date: 2024/3/8 14:44
+ **/
+@AllArgsConstructor
+@Getter
+public enum ResponseCode {
+
+    R_Z00001("Z00001", "处理成功"),
+    R_Z00002("Z00002", "再次调用此接口确认"),
+    R_Z00004("Z00004", "处理失败");
+
+    private final String code;
+
+    private final String desc;
+
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResultCode.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 投保单状态
+ * @author: wenks
+ * @date: 2024/3/8 10:39
+ **/
+@AllArgsConstructor
+@Getter
+public enum ResultCode {
+
+    RC_A0("A0", "核保通过(待缴费)"),
+    RC_A1("A1", "发生重复投保"),
+    RC_A2("A2", "拒保不可申诉"),
+    RC_A3("A3", "拒保可申诉"),
+    RC_A4("A4", "待人工审核(非标件)"),
+    RC_A6("A6", "核保失败"),
+    RC_B0("B0", "出单失败"),
+    RC_B3("B3", "待承保"),
+    RC_B4("B4", "修改中"),
+    RC_B5("B5", "已承保"),
+    RC_99("99", "已失效"),
+    RC_BZ("BZ", "系统异常"),
+    RC_BT("BT", "已退费");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleAffNature.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 渤海财险 车辆所属性质代码
+ * @author: wenks
+ * @date: 2024/3/6 18:19
+ **/
+@Getter
+@AllArgsConstructor
+public enum VehicleAffNature {
+
+    VAN_1("1", "个人"),
+    VAN_2("2", "机关"),
+    VAN_3("3", "企业");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleKind.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 渤海财险 车辆种类
+ * @author: wenks
+ * @date: 2024/3/6 18:19
+ **/
+
+@Getter
+@AllArgsConstructor
+public enum VehicleKind {
+
+    VK_A0("11", "客车"),
+    VK_A1("21", "货车"),
+    VK_A2("25", "货车");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleUsage.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 渤海财险 车辆使用性质
+ * @author: wenks
+ * @date: 2024/3/6 18:22
+ **/
+@Getter
+@AllArgsConstructor
+public enum VehicleUsage {
+
+    VU_01("100",	"营业"),
+    VU_02("200",	"非营业");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 31 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleUsageDetail.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 车辆用途
+ * @author: wenks
+ * @date: 2024/3/7 17:57
+ **/
+@Getter
+@AllArgsConstructor
+public enum VehicleUsageDetail {
+
+    VUD_01("101", "营业出租租赁"),
+    VUD_02("102", "营业城公交"),
+    VUD_03("103", "营业公路客运"),
+    VUD_04("105", "营业货运"),
+    VUD_05("210", "非营业个人"),
+    VUD_06("230", "非营业机关"),
+    VUD_07("220", "非营业企业"),
+    VUD_08("240", "非营业货运");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+}

+ 89 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/BoHaiBaseRequest.java

@@ -0,0 +1,89 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.UUID;
+
+@NoArgsConstructor
+@Data
+public class BoHaiBaseRequest implements Serializable {
+
+    private static final long serialVersionUID = -489340818664271735L;
+
+    @JsonProperty("baseParam")
+    private BaseParamDTO baseParam;
+
+    public void setBaseParam(BoHaiConfigureParameters parameters, String requestType) {
+        baseParam = new BaseParamDTO();
+        baseParam.requestNo = UUID.randomUUID().toString().replace("-", "");
+        baseParam.requestTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
+        baseParam.requestType = requestType;
+        baseParam.ip = "118.81.124.183";
+        baseParam.insurerBranchCode = parameters.getInsurerBranchCode();
+        baseParam.franchiserInstitutionCode = parameters.getFranchiserInstitutionCode();
+        baseParam.franchiserChannel = new BaseParamDTO.FranchiserChannelDTO(parameters);
+    }
+
+    public void setBaseParam(BoHaiConfigureParameters parameters, String requestType, String orderNo) {
+        setBaseParam(parameters, requestType);
+        baseParam.orderNo = orderNo;
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class BaseParamDTO implements Serializable {
+
+        private static final long serialVersionUID = -2264349234035092924L;
+
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+        @JsonProperty("requestNo")
+        private String requestNo;
+
+        @JsonProperty("requestTime")
+        private String requestTime;
+
+        @JsonProperty("requestType")
+        private String requestType;
+
+        @JsonProperty("ip")
+        private String ip;
+
+        @JsonProperty("insurerBranchCode")
+        private String insurerBranchCode;
+
+        @JsonProperty("franchiserInstitutionCode")
+        private String franchiserInstitutionCode;
+
+        @JsonProperty("franchiserChannel")
+        private FranchiserChannelDTO franchiserChannel;
+
+        @NoArgsConstructor
+        @Data
+        public static class FranchiserChannelDTO implements Serializable {
+
+            private static final long serialVersionUID = 5197187953876492672L;
+
+            @JsonProperty("franchiserChannelId")
+            private String franchiserChannelId;
+
+            @JsonProperty("machineCode")
+            private String machineCode;
+
+            public FranchiserChannelDTO(BoHaiConfigureParameters parameters) {
+                this.franchiserChannelId = parameters.getFranchiserChannelId();
+            }
+
+        }
+
+    }
+
+}

+ 42 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ElectronicPolicyRequest.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: 渤海财险 电子保单
+ * @author: wenks
+ * @date: 2024/3/8 11:49
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ElectronicPolicyRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 6662090847203132477L;
+
+    @JsonProperty("policyNo")
+    private String policyNo;
+
+    @JsonProperty("policyType")
+    private String policyType;
+
+    public ElectronicPolicyRequest(BoHaiConfigureParameters parameters, String id, String jqpolicyno, String sypolicyno) {
+        this.setBaseParam(parameters, RequestType.Z00020.getCode(), id);
+        this.policyNo = StringUtils.isNotEmpty(jqpolicyno) ? jqpolicyno : sypolicyno;
+        if (StringUtils.isEmpty(jqpolicyno)) {
+            this.policyType = "0";
+        } else if (StringUtils.isEmpty(sypolicyno)) {
+            this.policyType = "1";
+        } else {
+            this.policyType = "2";
+        }
+
+    }
+}

+ 30 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/GenerateOrderNoRequest.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.UUID;
+
+/**
+ * @description: 渤海财险 生成订单接口
+ * @author: wenks
+ * @date: 2024/3/6 15:50
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class GenerateOrderNoRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 8713399532011104295L;
+
+    public GenerateOrderNoRequest(BoHaiConfigureParameters parameters) {
+        this.setBaseParam(parameters, RequestType.Z00002.getCode());
+    }
+
+}

+ 78 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java

@@ -0,0 +1,78 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.DocumentClass;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * @description: 渤海财险 上传影像 请求
+ * @author: wenks
+ * @date: 2024/3/6 10:38
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ImageUploadRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = -1181756921642403577L;
+
+    @JsonProperty("fileInfos")
+    private List<FileInfosDTO> fileInfos;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+    public ImageUploadRequest(BoHaiConfigureParameters parameters, String id, String insOrderNo, List<InsTaskImagesBase64> insTaskImagesBase64s) {
+        this.setBaseParam(parameters, RequestType.Z00014.getCode(), id);
+        this.setBusUniqueId(insOrderNo);
+        this.fileInfos = FileInfosDTO.toFileInfosDTOList(insTaskImagesBase64s);
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class FileInfosDTO implements Serializable {
+
+        private static final long serialVersionUID = -8033707257927745517L;
+
+        @JsonProperty("documentClass")
+        private String documentClass;
+
+        @JsonProperty("documentType")
+        private String documentType;
+
+        @JsonProperty("base64")
+        private String base64;
+
+        @JsonProperty("fileName")
+        private String fileName;
+
+
+        public static List<FileInfosDTO> toFileInfosDTOList(List<InsTaskImagesBase64> imagesBase64){
+            return imagesBase64.stream().map(FileInfosDTO::toFileInfosDTO).collect(Collectors.toList());
+        }
+
+        private static FileInfosDTO toFileInfosDTO(InsTaskImagesBase64 imagesBase64){
+            FileInfosDTO fileInfosDTO = new FileInfosDTO();
+            DocumentClass document = DocumentClass.valueOf(imagesBase64.getImageType());
+            fileInfosDTO.setDocumentType(document.getDocumentType());
+            fileInfosDTO.setDocumentClass(document.getDocument());
+            fileInfosDTO.setFileName(imagesBase64.getFileName());
+            fileInfosDTO.setBase64(imagesBase64.getBase64String());
+            return fileInfosDTO;
+        }
+
+    }
+
+}

+ 55 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ManualReviewRequest.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 人工审核回调
+ * @author: wenks
+ * @date: 2024/3/11 10:11
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ManualReviewRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 417258276820521247L;
+
+    @JsonProperty("underwritingCallBackReq")
+    private UnderwritingCallBackReqDTO underwritingCallBackReq;
+
+    @NoArgsConstructor
+    @Data
+    public static class UnderwritingCallBackReqDTO implements Serializable {
+
+        private static final long serialVersionUID = 7879707923246950311L;
+
+        @JsonProperty("busUniqueId")
+        private String busUniqueId;
+        @JsonProperty("underwritingBacks")
+        private List<UnderwritingBacksDTO> underwritingBacks;
+
+        @NoArgsConstructor
+        @Data
+        public static class UnderwritingBacksDTO implements Serializable {
+
+            private static final long serialVersionUID = -4487438107644788942L;
+
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+            @JsonProperty("insuranceType")
+            private String insuranceType;
+            @JsonProperty("auditOpinion")
+            private String auditOpinion;
+            @JsonProperty("auditStatus")
+            private String auditStatus;
+        }
+    }
+}

+ 42 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsDetailsRequest.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @version
+ * @description: 渤海财险 车+X产品详情
+ * @author: wenks
+ * @date: 2024/3/8 9:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsDetailsRequest extends BoHaiBaseRequest  {
+
+    private static final long serialVersionUID = 2175047725829413628L;
+
+    @JsonProperty("productCode")
+    private String productCode;
+
+    @JsonProperty("packageCode")
+    private String packageCode;
+
+    @JsonProperty("version")
+    private String version;
+
+    public NonAutomotiveProductsDetailsRequest(BoHaiConfigureParameters parameters, ProductDetailsQueryVo productDetailsQueryVo) {
+        this.setBaseParam(parameters, RequestType.Z00019.getCode());
+        this.productCode = productDetailsQueryVo.getProductCode();
+        this.packageCode = productDetailsQueryVo.getPackageCode();
+        this.version = productDetailsQueryVo.getVersion();
+    }
+
+}

+ 110 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsRequest.java

@@ -0,0 +1,110 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.api.bohai.constants.VehicleKind;
+import com.ydtech.modules.order.entity.api.bohai.constants.VehicleUsage;
+import com.ydtech.modules.order.entity.api.bohai.constants.VehicleUsageDetail;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 车+X产品
+ * @author: wenks
+ * @date: 2024/3/8 9:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 4630356671221242632L;
+
+    @JsonProperty("vehicleUsage")
+    private String vehicleUsage;
+
+    @JsonProperty("seatCount")
+    private String seatCount;
+
+    @JsonProperty("vehicleUsageDetail")
+    private String vehicleUsageDetail;
+
+    @JsonProperty("vehicleKind")
+    private String vehicleKind;
+
+    @JsonProperty("tonNumber")
+    private String tonNumber;
+
+    @JsonProperty("power")
+    private String power;
+
+    @JsonProperty("exhaustScale")
+    private String exhaustScale;
+    /**
+     * 投保人
+     */
+    @JsonProperty("applicantDto")
+    private PremPersonnelDto applicantDto;
+    /**
+     * 被保人
+     */
+    @JsonProperty("insuredDto")
+    private PremPersonnelDto insuredDto;
+
+
+    public NonAutomotiveProductsRequest(BoHaiConfigureParameters parameters, ProductQueryVo productQueryVo) {
+        this.setBaseParam(parameters, RequestType.Z00018.getCode());
+        // 车辆种类
+        VehicleKind vehicleKindEnum = VehicleKind.valueOf("VK_" + productQueryVo.getCimodelclass());
+        // 车辆使用性质
+        VehicleUsage vehicleUsageEnum = VehicleUsage.valueOf("VU_" + productQueryVo.getCarnature());
+        // 车辆用途
+        VehicleUsageDetail vehicleUsageDetailEnum = VehicleUsageDetail.valueOf("VUD_" + productQueryVo.getVehicleUse());
+
+        this.vehicleUsage = vehicleUsageEnum.getCode();
+        this.seatCount = productQueryVo.getSeatCount();
+        this.vehicleUsageDetail = vehicleUsageDetailEnum.getCode();
+        this.vehicleKind = vehicleKindEnum.getCode();
+
+        this.tonNumber = productQueryVo.getLimitLoad();
+        this.power = productQueryVo.getPowerScale();
+        this.exhaustScale = productQueryVo.getExhaustScale();
+        this.applicantDto = new PremPersonnelDto(productQueryVo.getPolicyHolderInfo());
+        this.insuredDto = new PremPersonnelDto(productQueryVo.getInsuredPersonInfo());
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class PremPersonnelDto implements Serializable {
+
+        private static final long serialVersionUID = 49261748717534895L;
+
+        @JsonProperty("type")
+        private String type;
+
+        @JsonProperty("name")
+        private String name;
+
+        @JsonProperty("identifyType")
+        private String identifyType;
+
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        public PremPersonnelDto(ProductQueryVo.CustomerInfoDTO policyHolderInfo) {
+            this.type = "1";
+            this.name = policyHolderInfo.getName();
+            this.identifyType = "111";
+            this.identifyNumber = policyHolderInfo.getIdentifyNumber();
+        }
+
+    }
+
+}

+ 21 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentCallbackRequest.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class PaymentCallbackRequest extends BoHaiBaseRequest  {
+
+    private static final long serialVersionUID = -5849125843812787335L;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+    @JsonProperty("payResult")
+    private String payResult;
+
+}

+ 31 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 渤海财险 电子签名支付
+ * @author: wenks
+ * @date: 2024/3/7 18:34
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class PaymentRequest extends BoHaiBaseRequest{
+
+    private static final long serialVersionUID = 7772208518421837950L;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+    public PaymentRequest(BoHaiConfigureParameters parameters, String orderNo, String insOrderNo) {
+        this.setBaseParam(parameters, RequestType.Z00013.getCode(), orderNo);
+        this.busUniqueId = insOrderNo;
+    }
+
+}

+ 248 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/QuotationRequest.java

@@ -0,0 +1,248 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import cn.hutool.core.util.ArrayUtil;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.ins.model.vo.RiskInfoVo;
+import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
+import com.ydtech.modules.order.entity.api.bohai.constants.Coverages;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
+import com.ydtech.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description: 渤海财险 报价接口
+ * @author: wenks
+ * @date: 2024/3/6 10:20
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QuotationRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = -7695992388798928886L;
+
+    @JsonProperty("trafficPolicy")
+    private TrafficPolicyDTO trafficPolicy;
+
+    @JsonProperty("businessPolicy")
+    private BusinessPolicyDTO businessPolicy;
+
+    @JsonProperty("argueSolution")
+    private String argueSolution;
+
+    @JsonProperty("realNameCheck")
+    private RealNameCheckDTO realNameCheck;
+
+    @JsonProperty("unAutos")
+    private List<UnAutoDTO> unAutos;
+
+    public QuotationRequest(BoHaiConfigureParameters parameters,
+                            List<RiskInfoVo> riskList,
+                            List<KindInfoVo> kindList,
+                            String currentValue,
+                            String orderNO,
+                            CarInfoVo carInfo,
+                            List<BoHaiQuoteAccidentVo> accidentVo) {
+        this.setBaseParam(parameters, RequestType.Z00006.getCode(), orderNO);
+        this.argueSolution = "1";
+        for (RiskInfoVo riskInfoVo : riskList) {
+            if (InsuranceRisk.TRAFFIC.getCode().equals(riskInfoVo.getRiskCode())) {
+                this.trafficPolicy = new TrafficPolicyDTO(riskInfoVo);
+            } else if (InsuranceRisk.BUSINESS.getCode().equals(riskInfoVo.getRiskCode())) {
+                this.businessPolicy = new BusinessPolicyDTO(riskInfoVo, kindList, currentValue, carInfo);
+            }
+        }
+        this.unAutos = accidentVo.stream().map(UnAutoDTO::new).collect(Collectors.toList());
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class UnAutoDTO implements Serializable {
+
+        private static final long serialVersionUID = -5387591716781571838L;
+
+        @JsonProperty("productCode")
+        private String productCode;
+
+        @JsonProperty("packageCode")
+        private String packageCode;
+
+        @JsonProperty("copies")
+        private String copies;
+
+        public UnAutoDTO(BoHaiQuoteAccidentVo boHaiQuoteAccidentVo) {
+            this.productCode = boHaiQuoteAccidentVo.getProductCode();
+            this.packageCode = boHaiQuoteAccidentVo.getPackageCode();
+            this.copies = boHaiQuoteAccidentVo.getCopies();
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class TrafficPolicyDTO implements Serializable {
+
+        private static final long serialVersionUID = 681715828868987408L;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
+        @JsonProperty("vehicleTax")
+        private VehicleTaxDTO vehicleTax;
+
+        public TrafficPolicyDTO(RiskInfoVo riskInfoVo) {
+            this.startDate = riskInfoVo.getStartDate();
+            this.endDate = riskInfoVo.getEndDate();
+            this.vehicleTax = new VehicleTaxDTO();
+        }
+
+        @Data
+        public static class VehicleTaxDTO implements Serializable {
+
+            private static final long serialVersionUID = -3844092730010921781L;
+
+            @JsonProperty("taxType")
+            private String taxType;
+
+            @JsonProperty("taxpayerFlag")
+            private String taxpayerFlag;
+
+            public VehicleTaxDTO() {
+                this.taxType = "T";
+                this.taxpayerFlag = "1";
+            }
+
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BusinessPolicyDTO implements Serializable {
+
+        private static final long serialVersionUID = -4469895302454868397L;
+
+        @JsonProperty("coverages")
+        private List<CoveragesDTO> coverages;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
+        public BusinessPolicyDTO(RiskInfoVo riskInfoVo, List<KindInfoVo> kindList, String currentValue, CarInfoVo carInfo) {
+            this.startDate = riskInfoVo.getStartDate();
+            this.endDate = riskInfoVo.getEndDate();
+            this.coverages = CoveragesDTO.toCoveragesDTOList(kindList, currentValue, carInfo);
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class CoveragesDTO implements Serializable {
+
+            private static final long serialVersionUID = -5350833561452911857L;
+
+            @JsonProperty("coverageCode")
+            private String coverageCode;
+
+            @JsonProperty("coverageName")
+            private String coverageName;
+            /**
+             * seat: 乘客数 (机动车车上人员责任保险-乘客)
+             * repairFactorRate:指定修理厂费率(指定专修厂险,
+             * 国产车:车损险基准纯风险保费的10%~30%之间,选择国产默认10%;
+             * 进口车:车损险基准纯风险保费的15%~60%之间,选择进口默认20%。)
+             * importFlag:是否国产 0:国产 1:进口';
+             * claimLimitPerDay:每日赔付限额 (修理期间赔付险)
+             * maxClaimDays:最大赔付天数(修理期间赔付险)
+             * damageCardeductibles:绝对免赔额(车辆损失险)
+             * damageCarDeductiblesNoClaimRate: 车损险绝对免赔率
+             * serviceTimes: 服务次数
+             * serviceGrade: 服务款别
+             */
+            @JsonProperty("extendInfos")
+            private Map<String, String> extendInfos;
+
+            @JsonProperty("sumInsurd")
+            private String sumInsurd;
+
+            public static List<CoveragesDTO> toCoveragesDTOList(List<KindInfoVo> kindList, String currentValue, CarInfoVo carInfo) {
+                return kindList.stream().map(x -> toCoveragesDTO(x, currentValue, carInfo)).collect(Collectors.toList());
+            }
+
+            private static CoveragesDTO toCoveragesDTO(KindInfoVo kindInfoVo, String currentValue, CarInfoVo carInfo) {
+                String kindCode = kindInfoVo.getKindCode();
+                Coverages coverages = Coverages.valueOf("C_" + kindInfoVo.getKindCode());
+                CoveragesDTO coveragesDTO = new CoveragesDTO();
+                if (carInfo.isNewEnergy()) {
+                    coveragesDTO.setCoverageCode(coverages.getNewEnergyCode());
+                    coveragesDTO.setCoverageName(coverages.getNewEnergyDesc());
+                } else {
+                    coveragesDTO.setCoverageCode(coverages.getFuelOilCode());
+                    coveragesDTO.setCoverageName(coverages.getFuelOilDesc());
+                }
+                coveragesDTO.extendInfos = new HashMap<>();
+
+                if (InsurKind.A.getCode().equals(kindCode)) {
+                    coveragesDTO.setSumInsurd(currentValue);
+                }
+                // 乘客
+                else if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getPassenger(), kindCode) >= 0) {
+                    int quantity = StringUtils.toInt(carInfo.getSeatCount()) - 1;
+                    coveragesDTO.extendInfos.put("seat", String.valueOf(quantity));
+                    coveragesDTO.setSumInsurd(String.valueOf(kindInfoVo.getUnitAmount()));
+                }
+                // 绝对免赔
+                else if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getAbsoluteDeductible(), kindCode) >= 0) {
+                    coveragesDTO.extendInfos.put("", String.valueOf(kindInfoVo.getDeductibleRate()));
+                }
+                // 增值服务
+                else if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getSpecialContractClause(), kindCode) >= 0) {
+                    coveragesDTO.extendInfos.put("serviceTimes", String.valueOf(kindInfoVo.getServiceTimes()));
+                } else {
+                    coveragesDTO.setSumInsurd(String.valueOf(kindInfoVo.getAmount()));
+                }
+                return coveragesDTO;
+            }
+
+
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class RealNameCheckDTO implements Serializable {
+
+        private static final long serialVersionUID = 7007478686453041903L;
+
+        @JsonProperty("busSrePcmac")
+        private String busSrePcmac;
+
+        @JsonProperty("busSrePcip")
+        private String busSrePcip;
+
+        @JsonProperty("busSrePcname")
+        private String busSrePcname;
+
+        @JsonProperty("busSrePhone")
+        private String busSrePhone;
+    }
+}

+ 17 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/RevocationUnderwritingRequest.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class RevocationUnderwritingRequest extends BoHaiBaseRequest{
+    private static final long serialVersionUID = -7254577366453136126L;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+}

+ 31 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/StatusDocumentsRequest.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: 渤海财险 单证查询
+ * @author: wenks
+ * @date: 2024/3/14 10:12
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class StatusDocumentsRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 8373969827791168689L;
+
+    @JsonProperty("applicationNo")
+    private String applicationNo;
+
+    public StatusDocumentsRequest(BoHaiConfigureParameters parameters, String id, String applicationNo) {
+        this.setBaseParam(parameters, RequestType.Z00021.getCode(), id);
+        this.applicationNo = applicationNo;
+    }
+
+}

+ 82 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java

@@ -0,0 +1,82 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @version
+ * @description: 渤海财险 核保请求
+ * @author: wenks
+ * @date: 2024/3/7 18:29
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class UnderwritingRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = -5144990999677705223L;
+
+    @JsonProperty("businessPolicy")
+    private BusinessPolicyDTO businessPolicy;
+
+    @JsonProperty("trafficPolicy")
+    private TrafficPolicyDTO trafficPolicy;
+
+    public UnderwritingRequest(BoHaiConfigureParameters parameters, String orderNo) {
+        this.setBaseParam(parameters, RequestType.Z00007.getCode(), orderNo);
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BusinessPolicyDTO implements Serializable {
+
+        private static final long serialVersionUID = -5347382618116081294L;
+
+        @JsonProperty("specialTermItems")
+        private List<SpecialTermItemsDTO> specialTermItems;
+
+        @NoArgsConstructor
+        @Data
+        public static class SpecialTermItemsDTO implements Serializable {
+
+            private static final long serialVersionUID = 7841782399003609362L;
+
+            @JsonProperty("specialTermCode")
+            private String specialTermCode;
+
+            @JsonProperty("specialTermParams")
+            private String specialTermParams;
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class TrafficPolicyDTO implements Serializable{
+
+        private static final long serialVersionUID = 7534600381669821602L;
+
+        @JsonProperty("specialTermItems")
+        private List<SpecialTermItemsDTO> specialTermItems;
+
+        @NoArgsConstructor
+        @Data
+        public static class SpecialTermItemsDTO implements Serializable{
+
+            private static final long serialVersionUID = -4496753996600648785L;
+
+            @JsonProperty("specialTermCode")
+            private String specialTermCode;
+
+            @JsonProperty("specialTermParams")
+            private String specialTermParams;
+        }
+    }
+}

+ 563 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleConfirmationReqeust.java

@@ -0,0 +1,563 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.modules.admin.model.vo.PersonAreaVo;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
+import com.ydtech.modules.ins.model.vo.RiskInfoVo;
+import com.ydtech.modules.order.entity.api.bohai.constants.*;
+import com.ydtech.modules.order.entity.api.bohai.response.VehicleTypeQueryResponse;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * @description: 渤海财险 车辆确认请求接口
+ * @author: wenks
+ * @date: 2024/3/6 10:15
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = -3897773355946250398L;
+
+    @JsonProperty("vehicle")
+    private VehicleDTO vehicle;
+
+    @JsonProperty("carOwner")
+    private CarOwnerDTO carOwner;
+
+    @JsonProperty("holder")
+    private HolderDTO holder;
+
+    @JsonProperty("insureder")
+    private InsurederDTO insureder;
+
+
+    public VehicleConfirmationReqeust(BoHaiConfigureParameters parameters, BaseQuoteInfoVo quoteInfoVo,
+                                      VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO,
+                                      String orderNo, PersonAreaVo ownerInfoArea, PersonAreaVo insuredPersonArea,
+                                      PersonAreaVo policyHolderArea) {
+
+        List<RiskInfoVo> riskInfoVos =
+                quoteInfoVo.getRiskList().stream().filter(x -> InsuranceRisk.BUSINESS.getCode().equals(x.getRiskCode())).collect(Collectors.toList());
+        String effectDate;
+        if (!riskInfoVos.isEmpty()) {
+            effectDate = riskInfoVos.get(0).getStartDate();
+        } else {
+            effectDate = quoteInfoVo.getRiskList().get(0).getStartDate();
+        }
+
+        this.setBaseParam(parameters, RequestType.Z00005.getCode(), orderNo);
+        // 车辆信息
+        CarInfoVo carInfo = quoteInfoVo.getCarInfo();
+        this.vehicle = new VehicleDTO(carInfo, vehicleModelsDTO, effectDate);
+        // 车主
+        CustomerInfoVo ownerInfo = quoteInfoVo.getOwnerInfo();
+        this.carOwner = new CarOwnerDTO(ownerInfo, ownerInfoArea);
+        // 投保人
+        CustomerInfoVo policyHolderInfo = quoteInfoVo.getPolicyHolderInfo();
+        this.holder = new HolderDTO(policyHolderInfo, policyHolderArea);
+        // 被保人
+        CustomerInfoVo insuredPersonInfo = quoteInfoVo.getInsuredPersonInfo();
+        this.insureder = new InsurederDTO(insuredPersonInfo, insuredPersonArea);
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class VehicleDTO implements Serializable {
+
+        private static final long serialVersionUID = -2343894775576071422L;
+
+        /**
+         * 车辆识别代号/车架号
+         */
+        @JsonProperty("carVin")
+        private String carVin;
+
+        /**
+         * 车型编码
+         */
+        @JsonProperty("vehicleModelCode")
+        private String vehicleModelCode;
+
+        /**
+         * 发动机号
+         */
+        @JsonProperty("engineNo")
+        private String engineNo;
+
+        /**
+         * 号牌号码
+         */
+        @JsonProperty("plateNo")
+        private String plateNo;
+
+        @JsonProperty("licenseType")
+        private String licenseType;
+
+        /**
+         * 初登日期
+         */
+        @JsonProperty("registerDate")
+        private String registerDate;
+
+        /**
+         * 指导价格
+         */
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+
+        /**
+         * 是否新车
+         */
+        @JsonProperty("newVehicleFlag")
+        private String newVehicleFlag;
+
+        /**
+         * 车型名称 (品牌型号)
+         */
+        @JsonProperty("moldName")
+        private String moldName;
+
+        @JsonProperty("modelCode")
+        private String modelCode;
+        /**
+         * 座位数
+         */
+        @JsonProperty("seatCount")
+        private String seatCount;
+
+
+        @JsonProperty("purchaseinvoicesDate")
+        private String purchaseinvoicesDate;
+
+        /**
+         * 核定载质量(KG)
+         */
+        @JsonProperty("tonNumber")
+        private String tonNumber;
+
+        /**
+         * 燃料类型
+         */
+        @JsonProperty("fuelType")
+        private String fuelType;
+
+        /**
+         * 整备质量(KG)
+         */
+        @JsonProperty("emptyWeight")
+        private String emptyWeight;
+
+        /**
+         * 保险起期
+         */
+        @JsonProperty("effectDate")
+        private String effectDate;
+
+        /**
+         * 排气量(L)
+         */
+        @JsonProperty("exhaustMeasure")
+        private String exhaustMeasure;
+
+        /**
+         * 车辆种类
+         */
+        @JsonProperty("vehicleKind")
+        private String vehicleKind;
+
+        /**
+         * 车辆所属性质
+         */
+        @JsonProperty("vehicleAffNature")
+        private String vehicleAffNature;
+
+        /**
+         * 车辆使用性质
+         */
+        @JsonProperty("vehicleUsage")
+        private String vehicleUsage;
+
+        /**
+         * 车辆使用性质细分
+         */
+        @JsonProperty("vehicleUsageDetail")
+        private String vehicleUsageDetail;
+
+        /**
+         * 是否过户
+         */
+        @JsonProperty("isTransfer")
+        private String isTransfer;
+
+        /**
+         * 过户日期
+         */
+        @JsonProperty("transferDate")
+        private String transferDate;
+
+        @JsonProperty("vehicleTypeOfDrivingPermit")
+        private String vehicleTypeOfDrivingPermit;
+
+        @JsonProperty("secondHandVehicleFlag")
+        private String secondHandVehicleFlag;
+
+
+        public VehicleDTO(CarInfoVo carInfo, VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO, String effectDate) {
+            this.carVin = carInfo.getVinNo();
+            this.vehicleModelCode = vehicleModelsDTO.getVehicleModelCode();
+            this.engineNo = carInfo.getEngineNo();
+            this.plateNo = carInfo.getLicenseNo();
+            this.licenseType = "02";
+            this.registerDate = carInfo.getRegisterDate();
+            this.purchasePrice = vehicleModelsDTO.getPurchasePrice();
+            // 新车
+            this.newVehicleFlag = StringUtils.isNotEmpty(carInfo.getLicenseNo()) ? "0" : "1";
+            this.moldName = vehicleModelsDTO.getMoldName();
+            this.modelCode = vehicleModelsDTO.getModelCode();
+
+            this.seatCount = carInfo.getSeatCount();
+            this.tonNumber = StringUtils.isEmpty(carInfo.getLimitLoad()) ? "0": carInfo.getLimitLoad();
+            this.fuelType = carInfo.getEnergyType();
+            this.emptyWeight = carInfo.getCompleteKerbMass();
+            this.exhaustMeasure = vehicleModelsDTO.getExhaustMeasure();
+            VehicleKind vehicleKindEnum = VehicleKind.valueOf("VK_" + carInfo.getCimodelclass());
+            this.effectDate = effectDate;
+            this.vehicleKind = vehicleKindEnum.getCode();
+            this.vehicleAffNature = VehicleAffNature.VAN_1.getCode();
+            // 车辆使用性质
+            VehicleUsage vehicleUsageEnum = VehicleUsage.valueOf("VU_" + carInfo.getCarnature());
+            this.vehicleUsage = vehicleUsageEnum.getCode();
+            // 车辆用途
+            VehicleUsageDetail vehicleUsageDetailEnum = VehicleUsageDetail.valueOf("VUD_" + carInfo.getVehicleUse());
+            this.vehicleUsageDetail = vehicleUsageDetailEnum.getCode();
+            this.isTransfer = carInfo.isTransferFlag() ? "1" : "0";
+            this.transferDate = carInfo.getTransferDate();
+
+            this.vehicleTypeOfDrivingPermit = carInfo.getCartype();
+            this.secondHandVehicleFlag = "0";
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CarOwnerDTO implements Serializable {
+
+        private static final long serialVersionUID = 8709315851618789033L;
+
+        @JsonProperty("certType")
+        private String certType;
+
+        @JsonProperty("ownerName")
+        private String ownerName;
+
+        @JsonProperty("certNo")
+        private String certNo;
+
+        @JsonProperty("address")
+        private String address;
+
+        @JsonProperty("phoneNumber")
+        private String phoneNumber;
+
+        /**
+         * 客户类型
+         */
+        @JsonProperty("customerType")
+        private String customerType;
+        /**
+         *
+         */
+        @JsonProperty("certiType")
+        private String certiType;
+
+        /**
+         * 邮箱
+         */
+        @JsonProperty("email")
+        private String email;
+        /**
+         * 省份代码
+         */
+        @JsonProperty("provCode")
+        private String provCode;
+
+        /**
+         * 省份名称
+         */
+        @JsonProperty("provName")
+        private String provName;
+        /**
+         * 城市代码
+         */
+        @JsonProperty("cityCode")
+        private String cityCode;
+        /**
+         * 城市名称
+         */
+        @JsonProperty("cityName")
+        private String cityName;
+        /**
+         * 区县代码
+         */
+        @JsonProperty("distCode")
+        private String distCode;
+        /**
+         * 区县名称
+         */
+        @JsonProperty("distName")
+        private String distName;
+
+        @JsonProperty("residentialAddress")
+        private String residentialAddress;
+
+        public CarOwnerDTO(CustomerInfoVo ownerInfo, PersonAreaVo ownerInfoArea) {
+            this.certType = CertType.CT_111.getCode();
+            this.ownerName = ownerInfo.getName();
+            this.certNo = ownerInfo.getIdentifyNumber();
+            this.address = ownerInfo.getAddr();
+            this.phoneNumber = ownerInfo.getMobile();
+            this.customerType = CustomerType.CT_2.getCode();
+            this.email = ownerInfo.getEmail();
+            this.certiType = ownerInfo.getIdentifyValidEndDate().contains("9999") ? "1" : "0";
+            this.residentialAddress = ownerInfo.getAddr();
+            this.provCode = ownerInfoArea.getProvinceCode();
+            this.provName = ownerInfoArea.getProvinceName();
+            this.cityCode = ownerInfoArea.getCityCode();
+            this.cityName = ownerInfoArea.getCityName();
+            this.distCode = ownerInfoArea.getCountyCode();
+            this.distName = ownerInfoArea.getCountyName();
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class HolderDTO implements Serializable {
+
+        private static final long serialVersionUID = -2088635630636574306L;
+
+        @JsonProperty("certType")
+        private String certType;
+
+        @JsonProperty("holderName")
+        private String holderName;
+
+        @JsonProperty("certNo")
+        private String certNo;
+
+        @JsonProperty("address")
+        private String address;
+
+        @JsonProperty("phoneNumber")
+        private String phoneNumber;
+
+        @JsonProperty("nation")
+        private String nation;
+
+        @JsonProperty("certiStartDate")
+        private String certiStartDate;
+
+        @JsonProperty("certiEndDate")
+        private String certiEndDate;
+
+        @JsonProperty("certiType")
+        private String certiType;
+
+        @JsonProperty("issuer")
+        private String issuer;
+
+        @JsonProperty("email")
+        private String email;
+
+        @JsonProperty("invoiceType")
+        private String invoiceType;
+
+        @JsonProperty("bizFormatType")
+        private String bizFormatType;
+
+        @JsonProperty("forceFormatType")
+        private String forceFormatType;
+
+        @JsonProperty("elecApplicationFlag")
+        private String elecApplicationFlag;
+
+        @JsonProperty("customerType")
+        private String customerType;
+
+        /**
+         * 省份代码
+         */
+        @JsonProperty("provCode")
+        private String provCode;
+
+        /**
+         * 省份名称
+         */
+        @JsonProperty("provName")
+        private String provName;
+        /**
+         * 城市代码
+         */
+        @JsonProperty("cityCode")
+        private String cityCode;
+        /**
+         * 城市名称
+         */
+        @JsonProperty("cityName")
+        private String cityName;
+        /**
+         * 区县代码
+         */
+        @JsonProperty("distCode")
+        private String distCode;
+        /**
+         * 区县名称
+         */
+        @JsonProperty("distName")
+        private String distName;
+
+        @JsonProperty("residentialAddress")
+        private String residentialAddress;
+
+
+        public HolderDTO(CustomerInfoVo policyHolderInfo, PersonAreaVo policyHolderArea) {
+            // 通用参数
+            this.certType = CertType.CT_111.getCode();
+            this.holderName = policyHolderInfo.getName();
+            this.certNo = policyHolderInfo.getIdentifyNumber();
+            this.address = policyHolderInfo.getAddr();
+            this.phoneNumber = policyHolderInfo.getMobile();
+            this.customerType = CustomerType.CT_2.getCode();
+            this.email = policyHolderInfo.getEmail();
+            this.certiType = policyHolderInfo.getIdentifyValidEndDate().contains("9999") ? "1" : "0";
+
+            // 个别参数
+            this.invoiceType = InvoiceType.IT_1.getCode();
+            this.bizFormatType = FormatType.FT_1.getCode();
+            this.forceFormatType = FormatType.FT_1.getCode();
+
+            // 省市县
+            this.provCode = policyHolderArea.getProvinceCode();
+            this.provName = policyHolderArea.getProvinceName();
+            this.cityCode = policyHolderArea.getCityCode();
+            this.cityName = policyHolderArea.getCityName();
+            this.distCode = policyHolderArea.getCountyCode();
+            this.distName = policyHolderArea.getCountyName();
+
+            this.residentialAddress = policyHolderInfo.getAddr();
+
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class InsurederDTO implements Serializable {
+
+        private static final long serialVersionUID = 1045840175935280892L;
+
+        @JsonProperty("certType")
+        private String certType;
+
+        @JsonProperty("insuredName")
+        private String insuredName;
+
+        @JsonProperty("certNo")
+        private String certNo;
+
+        @JsonProperty("address")
+        private String address;
+
+        @JsonProperty("phoneNumber")
+        private String phoneNumber;
+
+        @JsonProperty("nation")
+        private String nation;
+
+        @JsonProperty("certiStartDate")
+        private String certiStartDate;
+
+        @JsonProperty("certiEndDate")
+        private String certiEndDate;
+
+        @JsonProperty("certiType")
+        private String certiType;
+
+        @JsonProperty("customerType")
+        private String customerType;
+
+        @JsonProperty("email")
+        private String email;
+
+        /**
+         * 省份代码
+         */
+        @JsonProperty("provCode")
+        private String provCode;
+
+        /**
+         * 省份名称
+         */
+        @JsonProperty("provName")
+        private String provName;
+        /**
+         * 城市代码
+         */
+        @JsonProperty("cityCode")
+        private String cityCode;
+        /**
+         * 城市名称
+         */
+        @JsonProperty("cityName")
+        private String cityName;
+        /**
+         * 区县代码
+         */
+        @JsonProperty("distCode")
+        private String distCode;
+        /**
+         * 区县名称
+         */
+        @JsonProperty("distName")
+        private String distName;
+
+        @JsonProperty("residentialAddress")
+        private String residentialAddress;
+
+
+        public InsurederDTO(CustomerInfoVo insuredPersonInfo, PersonAreaVo insuredPersonArea) {
+            // 通用参数
+            this.certType = CertType.CT_111.getCode();
+            this.insuredName = insuredPersonInfo.getName();
+            this.certNo = insuredPersonInfo.getIdentifyNumber();
+            this.address = insuredPersonInfo.getAddr();
+            this.phoneNumber = insuredPersonInfo.getMobile();
+            this.customerType = CustomerType.CT_2.getCode();
+            this.email = insuredPersonInfo.getEmail();
+            this.certiType = insuredPersonInfo.getIdentifyValidEndDate().contains("9999") ? "1" : "0";
+            this.residentialAddress = insuredPersonInfo.getAddr();
+            // 省市县
+            this.provCode = insuredPersonArea.getProvinceCode();
+            this.provName = insuredPersonArea.getProvinceName();
+            this.cityCode = insuredPersonArea.getCityCode();
+            this.cityName = insuredPersonArea.getCityName();
+            this.distCode = insuredPersonArea.getCountyCode();
+            this.distName = insuredPersonArea.getCountyName();
+
+        }
+
+    }
+}

+ 58 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleTypeQueryRequest.java

@@ -0,0 +1,58 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: 渤海财险 车辆查询请求参数
+ * @author: wenks
+ * @date: 2024/3/6 10:06
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class VehicleTypeQueryRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 895674542981964966L;
+
+    /**
+     * 车辆型号
+     */
+    @JsonProperty("vehicleBrandModelKey")
+    private String vehicleBrandModelKey;
+
+    /**
+     * 车架号
+     */
+    @JsonProperty("vin")
+    private String vin;
+
+    /**
+     * 发动机号
+     */
+    @JsonProperty("engineNo")
+    private String engineNo;
+
+    /**
+     * 车辆初始登记日期
+     */
+    @JsonProperty("firstRegisterDate")
+    private String firstRegisterDate;
+
+    /**
+     * 是否新车
+     */
+    @JsonProperty("newVehicleFlag")
+    private String newVehicleFlag;
+
+    public VehicleTypeQueryRequest(BoHaiConfigureParameters parameters, String vehicleBrandModelKey, String orderNo) {
+        this.setBaseParam(parameters, RequestType.Z00004.getCode(), orderNo);
+        this.vehicleBrandModelKey = vehicleBrandModelKey;
+    }
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/BoHaiBaseResponse.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+@NoArgsConstructor
+@Data
+public class BoHaiBaseResponse implements Serializable {
+
+    private static final long serialVersionUID = -9181769167087164902L;
+
+    @JsonProperty("responseCode")
+    private String responseCode;
+
+    @JsonProperty("responseMsg")
+    private String responseMsg;
+
+    @JsonProperty("baseParam")
+    private BaseParamDTO baseParam;
+
+    @NoArgsConstructor
+    @Data
+    public static class BaseParamDTO implements Serializable {
+
+        private static final long serialVersionUID = -5001346892601065334L;
+
+        @JsonProperty("requestNo")
+        private String requestNo;
+
+    }
+}

+ 36 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/CallbackResponse.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class CallbackResponse {
+
+    @JsonProperty("responseCode")
+    private String responseCode;
+
+    @JsonProperty("responseMsg")
+    private String responseMsg;
+
+    @JsonProperty("baseParam")
+    private BaseParamDTO baseParam;
+
+
+    public CallbackResponse(ResponseCode responseCode, String requestNo) {
+        this.responseCode = responseCode.getCode();
+        this.responseMsg = responseCode.getDesc();
+        this.baseParam = new BaseParamDTO(requestNo);
+    }
+
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Data
+    public static class BaseParamDTO {
+        @JsonProperty("requestNo")
+        private String requestNo;
+    }
+}

+ 30 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/ElectronicPolicyResponse.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ElectronicPolicyResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -6579348094955612464L;
+
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO {
+
+        @JsonProperty("trafficEPolicyUrl")
+        private String trafficEPolicyUrl;
+
+        @JsonProperty("businessEPolicyUrl")
+        private String businessEPolicyUrl;
+
+    }
+}

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

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class GenerateOrderNoResponse extends BoHaiBaseResponse{
+
+    private static final long serialVersionUID = -2484273134957187041L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO {
+
+        @JsonProperty("orderNo")
+        private String orderNo;
+    }
+
+}

+ 20 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/ImageUploadResponse.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 渤海财险 上传影像 响应
+ * @author: wenks
+ * @date: 2024/3/6 10:38
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ImageUploadResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -7592136960014445159L;
+
+}

+ 54 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsDetailsResponse.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+ * @version
+ * @description: 渤海财险 车+X产品详情
+ * @author: wenks
+ * @date: 2024/3/8 9:43
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsDetailsResponse extends BoHaiBaseResponse{
+
+    private static final long serialVersionUID = -6556554018987490384L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = 9194021766088374146L;
+
+        @JsonProperty("coverages")
+        private List<CoveragesDTO> coverages;
+
+        @NoArgsConstructor
+        @Data
+        public static class CoveragesDTO implements Serializable{
+
+            private static final long serialVersionUID = 2067236539629811833L;
+
+            @JsonProperty("coverageName")
+            private String coverageName;
+
+            @JsonProperty("insuredAmount")
+            private String insuredAmount;
+
+        }
+
+    }
+
+}

+ 72 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsResponse.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+ * @version
+ * @description: 车+X产品
+ * @author: wenks
+ * @date: 2024/3/8 9:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsResponse  extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = 844949613598572846L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -1433411188857721950L;
+
+        @JsonProperty("products")
+        private List<ProductsDTO> products;
+
+        @NoArgsConstructor
+        @Data
+        public static class ProductsDTO implements Serializable {
+
+            private static final long serialVersionUID = -4084170925450969659L;
+
+            @JsonProperty("productType")
+            private String productType;
+
+            @JsonProperty("productCode")
+            private String productCode;
+
+            @JsonProperty("premium")
+            private String premium;
+
+            @JsonProperty("minInsuredAge")
+            private String minInsuredAge;
+
+            @JsonProperty("maxInsuredAge")
+            private String maxInsuredAge;
+
+            @JsonProperty("packageCode")
+            private String packageCode;
+
+            @JsonProperty("packageName")
+            private String packageName;
+
+            @JsonProperty("version")
+            private String version;
+
+            @JsonProperty("maxCopies")
+            private String maxCopies;
+        }
+    }
+}

+ 42 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/PaymentResponse.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 支付响应
+ * @author: wenks
+ * @date: 2024/3/7 18:34
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class PaymentResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -8173818241781027842L;
+
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = 3700311849033773101L;
+
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+
+        @JsonProperty("qrCodeUrl")
+        private String qrCodeUrl;
+
+        @JsonProperty("signQRCodeDateValid")
+        private String signQRCodeDateValid;
+    }
+}

+ 312 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/QuotationResponse.java

@@ -0,0 +1,312 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QuotationResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = 8400108878099661258L;
+
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -2304181484676681954L;
+
+        @JsonProperty("sumInsurd")
+        private String sumInsurd;
+
+        @JsonProperty("premium")
+        private String premium;
+
+        @JsonProperty("vehicle")
+        private VehicleDTO vehicle;
+
+        @JsonProperty("carOwner")
+        private CarOwnerDTO carOwner;
+
+        @JsonProperty("holder")
+        private HolderDTO holder;
+
+        @JsonProperty("insureder")
+        private InsurederDTO insureder;
+
+        @JsonProperty("businessPolicy")
+        private BusinessPolicyDTO businessPolicy;
+
+        @JsonProperty("trafficPolicy")
+        private TrafficPolicyDTO trafficPolicy;
+
+        @JsonProperty("busUniqueId")
+        private String busUniqueId;
+
+        @JsonProperty("checkInfoList")
+        private List<CheckInfoDTO> checkInfoList;
+
+        @JsonProperty("unAutoPremium")
+        private UnAutoPremiumDTO unAutoPremium;
+
+        @NoArgsConstructor
+        @Data
+        public static class VehicleDTO implements Serializable {
+
+            private static final long serialVersionUID = -1516467168214096674L;
+
+            @JsonProperty("currentValue")
+            private String currentValue;
+
+            @JsonProperty("carVin")
+            private String carVin;
+
+            @JsonProperty("vehicleModelCode")
+            private String vehicleModelCode;
+
+            @JsonProperty("engineNo")
+            private String engineNo;
+
+            @JsonProperty("plateNo")
+            private String plateNo;
+
+            @JsonProperty("plateColor")
+            private String plateColor;
+
+            @JsonProperty("registerDate")
+            private String registerDate;
+
+            @JsonProperty("purchasePrice")
+            private String purchasePrice;
+
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class CarOwnerDTO implements Serializable {
+
+            private static final long serialVersionUID = -2294396875606612211L;
+
+            @JsonProperty("ownerName")
+            private String ownerName;
+            @JsonProperty("certType")
+            private String certType;
+            @JsonProperty("certNo")
+            private String certNo;
+            @JsonProperty("phoneNumber")
+            private String phoneNumber;
+            @JsonProperty("email")
+            private String email;
+            @JsonProperty("address")
+            private String address;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class HolderDTO implements Serializable {
+
+            private static final long serialVersionUID = -862914591722517034L;
+
+            @JsonProperty("holderName")
+            private String holderName;
+            @JsonProperty("certType")
+            private String certType;
+            @JsonProperty("certNo")
+            private String certNo;
+            @JsonProperty("phoneNumber")
+            private String phoneNumber;
+            @JsonProperty("email")
+            private String email;
+            @JsonProperty("address")
+            private String address;
+            @JsonProperty("invoiceType")
+            private String invoiceType;
+            @JsonProperty("bizFormatType")
+            private String bizFormatType;
+            @JsonProperty("forceFormatType")
+            private String forceFormatType;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class InsurederDTO implements Serializable {
+
+            private static final long serialVersionUID = 2362012197504237392L;
+
+            @JsonProperty("insuredName")
+            private String insuredName;
+            @JsonProperty("certType")
+            private String certType;
+            @JsonProperty("certNo")
+            private String certNo;
+            @JsonProperty("phoneNumber")
+            private String phoneNumber;
+            @JsonProperty("email")
+            private String email;
+            @JsonProperty("address")
+            private String address;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class BusinessPolicyDTO implements Serializable {
+            private static final long serialVersionUID = 3738634684794032589L;
+            @JsonProperty("coverages")
+            private List<CoveragesDTO> coverages;
+            @JsonProperty("specialTermItems")
+            private List<SpecialTermItemsDTO> specialTermItems;
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+            @JsonProperty("policyNo")
+            private String policyNo;
+            @JsonProperty("premium")
+            private String premium;
+            @JsonProperty("sumInsurd")
+            private String sumInsurd;
+            @JsonProperty("startDate")
+            private String startDate;
+            @JsonProperty("endDate")
+            private String endDate;
+
+            @NoArgsConstructor
+            @Data
+            public static class CoveragesDTO implements Serializable {
+
+                private static final long serialVersionUID = -1632275770513414351L;
+
+                @JsonProperty("coverageCode")
+                private String coverageCode;
+                @JsonProperty("coverageName")
+                private String coverageName;
+                @JsonProperty("isNonDeductionCovered")
+                private String isNonDeductionCovered;
+                @JsonProperty("sumInsurd")
+                private String sumInsurd;
+                @JsonProperty("premium")
+                private String premium;
+                @JsonProperty("floatingRate")
+                private String floatingRate;
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class SpecialTermItemsDTO implements Serializable {
+
+                private static final long serialVersionUID = -8348339774598055057L;
+
+                @JsonProperty("specialTermCode")
+                private String specialTermCode;
+
+                @JsonProperty("specialTermText")
+                private String specialTermText;
+            }
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class TrafficPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = 1428110944460353402L;
+
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+
+            @JsonProperty("policyNo")
+            private String policyNo;
+
+            @JsonProperty("sumInsurd")
+            private String sumInsurd;
+
+            @JsonProperty("premium")
+            private String premium;
+
+            @JsonProperty("vehicleTax")
+            private VehicleTaxDTO vehicleTax;
+
+            @JsonProperty("startDate")
+            private String startDate;
+
+            @JsonProperty("endDate")
+            private String endDate;
+
+            @NoArgsConstructor
+            @Data
+            public static class VehicleTaxDTO implements Serializable {
+
+                private static final long serialVersionUID = -1479483711084115520L;
+
+                @JsonProperty("totalAmount")
+                private String totalAmount;
+
+                @JsonProperty("taxType")
+                private String taxType;
+
+                @JsonProperty("overdueTaxAmount")
+                private String overdueTaxAmount;
+
+                @JsonProperty("lateFee")
+                private String lateFee;
+
+                @JsonProperty("overdueTaxStartDate")
+                private String overdueTaxStartDate;
+
+                @JsonProperty("overdueTaxEndDate")
+                private String overdueTaxEndDate;
+
+                @JsonProperty("declareStatus")
+                private String declareStatus;
+
+            }
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class CheckInfoDTO implements Serializable {
+
+            private static final long serialVersionUID = 422012236525748899L;
+
+            @JsonProperty("answerFlag")
+            private String answerFlag;
+
+            @JsonProperty("checkCode")
+            private String checkCode;
+
+            @JsonProperty("question")
+            private String question;
+
+            @JsonProperty("isTrafficQuestion")
+            private String isTrafficQuestion;
+
+        }
+
+
+        @NoArgsConstructor
+        @Data
+        public static class UnAutoPremiumDTO implements Serializable {
+
+            private static final long serialVersionUID = -6301720394051931325L;
+
+            @JsonProperty("premium")
+            private String premium;
+
+            @JsonProperty("propertyPremium")
+            private String propertyPremium;
+
+            @JsonProperty("casualtyPremium")
+            private String casualtyPremium;
+
+        }
+
+    }
+}

+ 15 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/RevocationUnderwritingResponse.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class RevocationUnderwritingResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = 253685820880366525L;
+
+
+}

+ 49 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/StatusDocumentsResponse.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class StatusDocumentsResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -7045419658816145147L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -5453411109595535336L;
+
+        @JsonProperty("documentList")
+        private List<DocumentListDTO> documentList;
+
+        @NoArgsConstructor
+        @Data
+        public static class DocumentListDTO implements Serializable {
+
+            private static final long serialVersionUID = 1631342435902346361L;
+
+            @JsonProperty("policyNo")
+            private String policyNo;
+
+            @JsonProperty("insuranceType")
+            private String insuranceType;
+
+            @JsonProperty("applicationNo ")
+            private String applicationNo;
+
+            @JsonProperty("status")
+            private String status;
+        }
+    }
+}

+ 138 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java

@@ -0,0 +1,138 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.ResultCode;
+import com.ydtech.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 渤海财险 核保响应
+ * @author: wenks
+ * @date: 2024/3/7 18:29
+ **/
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class UnderwritingResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -5864520337104413574L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -6017042824315436288L;
+
+        @JsonProperty("trafficResultCode")
+        private String trafficResultCode;
+
+        @JsonProperty("trafficResultMsg")
+        private String trafficResultMsg;
+
+        @JsonProperty("businessResultCode")
+        private String businessResultCode;
+
+        @JsonProperty("businessResultMsg")
+        private String businessResultMsg;
+
+        @JsonProperty("total")
+        private String total;
+
+        @JsonProperty("businessPolicy")
+        private BusinessPolicyDTO businessPolicy;
+
+        @JsonProperty("trafficPolicy")
+        private TrafficPolicyDTO trafficPolicy;
+
+        public int verificationUnderwriting() {
+            int traffic = 1;
+            int business = 1;
+
+            if (StringUtils.isNotEmpty(this.trafficResultCode)) {
+                traffic = extracted(this.trafficResultCode);
+            }
+
+            if (StringUtils.isNotEmpty(this.businessResultCode)) {
+                business = extracted(this.businessResultCode);
+            }
+
+            if(traffic == 1 && business == 1){
+                return 1;
+            }else if(traffic == 2 || business == 2){
+                return 2;
+            }
+            return 0;
+        }
+
+        private int extracted(String resultCode) {
+            if (ResultCode.RC_A0.getCode().equals(resultCode)) {
+                return 1;
+            } else if (ResultCode.RC_A4.getCode().equals(resultCode)) {
+                return 2;
+            }
+            return 0;
+        }
+
+
+        @NoArgsConstructor
+        @Data
+        public static class BusinessPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = -7621567011799751040L;
+
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+
+            @JsonProperty("specialTermItems")
+            private List<SpecialTermItemsDTO> specialTermItems;
+
+            @NoArgsConstructor
+            @Data
+            public static class SpecialTermItemsDTO implements Serializable {
+
+                private static final long serialVersionUID = 3193463755642823937L;
+
+                @JsonProperty("specialTermCode")
+                private String specialTermCode;
+                @JsonProperty("specialTermText")
+                private String specialTermText;
+            }
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class TrafficPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = -6435567822855664252L;
+
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+
+            @JsonProperty("specialTermItems")
+            private List<SpecialTermItemsDTO> specialTermItems;
+
+            @NoArgsConstructor
+            @Data
+            public static class SpecialTermItemsDTO implements Serializable {
+
+                private static final long serialVersionUID = 8337098391141236122L;
+
+                @JsonProperty("specialTermCode")
+                private String specialTermCode;
+
+                @JsonProperty("specialTermText")
+                private String specialTermText;
+            }
+        }
+    }
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов