Ver código fonte

Merge remote-tracking branch 'origin/test' into test

785834757 2 anos atrás
pai
commit
6889ccb2d9
100 arquivos alterados com 4654 adições e 347 exclusões
  1. 18 1
      pom.xml
  2. 40 0
      sql/Online.sql
  3. BIN
      sql/jar/csp-iobs-sdk-1.0.5.jar
  4. BIN
      sql/jar/csp-iobs-sdk-1.1.0.jar
  5. 6 0
      sql/jar/reeadmind
  6. 20 0
      src/main/java/com/ydtech/config/properties/PingAnApiConfigurationProperties.java
  7. 12 0
      src/main/java/com/ydtech/modules/admin/components/UnionPayRequestApiComponent.java
  8. 4 2
      src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java
  9. 49 0
      src/main/java/com/ydtech/modules/admin/controller/quoteCount/QuoteCountController.java
  10. 15 0
      src/main/java/com/ydtech/modules/admin/model/report/company/CompanyQutationCountDataDto.java
  11. 16 0
      src/main/java/com/ydtech/modules/admin/model/report/company/CompanyQutationCountDataQueryDto.java
  12. 42 0
      src/main/java/com/ydtech/modules/admin/service/impl/CompanyDataReportServiceImpl.java
  13. 15 5
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  14. 66 0
      src/main/java/com/ydtech/modules/ins/controller/InsLaborCostController.java
  15. 27 0
      src/main/java/com/ydtech/modules/ins/dao/InsLaborCostMapper.java
  16. 152 0
      src/main/java/com/ydtech/modules/ins/model/InsLaborCost.java
  17. 11 0
      src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java
  18. 65 0
      src/main/java/com/ydtech/modules/ins/model/vo/InsLaborCostAddVo.java
  19. 21 0
      src/main/java/com/ydtech/modules/ins/model/vo/InsLaborCostIdsVo.java
  20. 30 0
      src/main/java/com/ydtech/modules/ins/model/vo/InsLaborCostVo.java
  21. 40 0
      src/main/java/com/ydtech/modules/ins/service/InsLaborCostService.java
  22. 85 0
      src/main/java/com/ydtech/modules/ins/service/impl/InsLaborCostServiceImpl.java
  23. 420 149
      src/main/java/com/ydtech/modules/order/components/pingan/PinganRequestApiComponents.java
  24. 0 1
      src/main/java/com/ydtech/modules/order/controller/OrderTaskImageController.java
  25. 284 48
      src/main/java/com/ydtech/modules/order/controller/PingAnOrderApiController.java
  26. 19 0
      src/main/java/com/ydtech/modules/order/dao/PinganApiLogMapper.java
  27. 10 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  28. 77 1
      src/main/java/com/ydtech/modules/order/entity/InsDrivingIntentionInsuranceSon.java
  29. 24 5
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  30. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResultCode.java
  31. 25 5
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/RequestUrl.java
  32. 2 2
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/LicenseTypeCodeEnum.java
  33. 38 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/SexCodeEnum.java
  34. 72 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/document/PingAnDocumentClassEnum.java
  35. 44 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/document/ProofRelationshipCodeEnum.java
  36. 28 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/notice/NoticeResponseCodeEnum.java
  37. 60 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/order/OrderStatusCodeEnum.java
  38. 142 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/log/PinganApiLog.java
  39. 40 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ApplyVerifyCodeRequest.java
  40. 175 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/BeiJingIdAcquisitionRequest.java
  41. 43 16
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/CarConfirmRequest.java
  42. 101 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ChexianStandardPrePaymentRequest.java
  43. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/CommonRequest.java
  44. 11 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/DmvehicleInfoRequst.java
  45. 10 11
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/DocumentStatusListRequest.java
  46. 40 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/GetNoticeInfoRequest.java
  47. 47 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/GetWechatAuthInfoRequest.java
  48. 9 6
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/IndexRequest.java
  49. 94 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/NoticeAuthRequest.java
  50. 105 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/NoticeDoRequest.java
  51. 32 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/NoticeDoneRequest.java
  52. 81 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PayReturnRequest.java
  53. 0 10
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PingAnBaseRequest.java
  54. 9 16
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PolicyPdfRequest.java
  55. 57 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ProductDetailsRequest.java
  56. 262 16
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/QuoteRequest.java
  57. 51 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/RecoverApplyVerifyCodeRequest.java
  58. 7 5
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/RenewalConfirmRequest.java
  59. 5 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/RepealDocumentRequest.java
  60. 7 4
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ScanCodeURLRequest.java
  61. 11 10
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SearchPAVehicleListRequest.java
  62. 47 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SendApplyPolicyRequest.java
  63. 63 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SignEleApplyRequest.java
  64. 67 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/StorefrontRequest.java
  65. 87 19
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SubmitApplyRequest.java
  66. 33 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SupplementMaterialRequest.java
  67. 4 2
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/UnAutoProductDetailRequest.java
  68. 15 7
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/UnAutoProductListRequest.java
  69. 50 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ViewToPayRequest.java
  70. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ApplyVerifyCodeResponse.java
  71. 16 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/BeiJingIdAcquisitionResponse.java
  72. 9 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/CarConfirmResponse.java
  73. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ChexianStandardPrePaymentResponse.java
  74. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/CommonResponse.java
  75. 16 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/DataResponse.java
  76. 39 1
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/DocumentStatusListResponse.java
  77. 86 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/GetNoticeInfoResponse.java
  78. 41 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/GetWechatAuthInfoResponse.java
  79. 75 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/NoticeAuthResponse.java
  80. 85 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/NoticeDoResponse.java
  81. 22 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/NoticeDoneResponse.java
  82. 23 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/PayReturnResponse.java
  83. 34 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/RecoverApplyVerifyCodeResponse.java
  84. 16 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SendApplyPolicyResponse.java
  85. 2 1
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ServiceContractResponse.java
  86. 27 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SignEleApplyResponse.java
  87. 117 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/StorefrontResponse.java
  88. 71 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SupplementMaterialResponse.java
  89. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/UnAutoProductDetailResponse.java
  90. 85 1
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/UnAutoProductListResponse.java
  91. 32 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ViewToPayResponse.java
  92. 5 0
      src/main/java/com/ydtech/modules/order/entity/dto/InsTaskImagesDto.java
  93. 14 0
      src/main/java/com/ydtech/modules/order/entity/dto/InsUploadImagesDto.java
  94. 6 0
      src/main/java/com/ydtech/modules/order/entity/po/InsTaskImages.java
  95. 12 0
      src/main/java/com/ydtech/modules/order/entity/po/InsTaskImagesBase64.java
  96. 18 1
      src/main/java/com/ydtech/modules/order/entity/vo/InsDrivingIntentionInsuranceVo.java
  97. 17 0
      src/main/java/com/ydtech/modules/order/entity/vo/NoCarInsuranceQueryVo.java
  98. 49 0
      src/main/java/com/ydtech/modules/order/entity/vo/pingan/InsDrivingIntentionInsuranceSonVo.java
  99. 32 0
      src/main/java/com/ydtech/modules/order/entity/vo/pingan/RenewalConfirmVo.java
  100. 62 0
      src/main/java/com/ydtech/modules/order/entity/vo/pingan/StorefrontQueryVo.java

+ 18 - 1
pom.xml

@@ -375,12 +375,18 @@
             <artifactId>javax.el-api</artifactId>
             <version>3.0.0</version>
         </dependency>
+        <!--国密-->
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk15to18</artifactId>
+            <version>1.69</version>
+        </dependency>
 
         <!--    Hutool是一个小而全的Java工具类库    -->
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>
-            <version>5.7.7</version>
+            <version>5.7.21</version>
         </dependency>
 
         <!-- sftp连接 -->
@@ -612,6 +618,17 @@
             <artifactId>redisson-spring-data-27</artifactId>
             <version>3.17.5</version>
         </dependency>
+        <!--添加平安上传文件的包-->
+        <dependency>
+            <groupId>com.file</groupId>
+            <artifactId>sdk-jar-1.0.5</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.file</groupId>
+            <artifactId>sdk-jar-1.1.0</artifactId>
+            <version>1.0.0</version>
+        </dependency>
     </dependencies>
 
 

+ 40 - 0
sql/Online.sql

@@ -0,0 +1,40 @@
+
+-- 图像表添加平安上传文件key
+ALTER TABLE `ins_task_images` ADD COLUMN `pingan_key` varchar(200) DEFAULT null COMMENT '平安上传文件key';
+
+-- 子订单表添加  平安流程id    平安通知单号
+ALTER TABLE `ins_area_company` ADD COLUMN `flowid` varchar(50) DEFAULT null COMMENT '平安流程id';
+ALTER TABLE `ins_area_company` ADD COLUMN `notice_no` varchar(50) DEFAULT null COMMENT '平安通知单号';
+
+-- 添加平安日志表
+DROP TABLE IF EXISTS `pingan_api_log`;
+CREATE TABLE `pingan_api_log`  (
+                                   `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+                                   `orderno` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '大订单编号',
+                                   `agree_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '协议id',
+                                   `sub_order_no` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '小订单编号',
+                                   `request_url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '请求路径',
+                                   `request_param` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '请求参数',
+                                   `request_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '请求类型',
+                                   `response_body` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '响应数据',
+                                   `response_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '响应类型',
+                                   PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 583 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '平安日志' ROW_FORMAT = Dynamic;
+
+-- add by  hxl   20524-07-31  添加人力成本表
+DROP TABLE IF EXISTS `ins_labor_cost`;
+CREATE TABLE `ins_labor_cost`  (
+                                   `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+                                   `year_month` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '年',
+                                   `labor_cost` decimal(10, 2) NULL DEFAULT NULL COMMENT '人力成本',
+                                   `fixed_cost` decimal(10, 2) NULL DEFAULT NULL COMMENT '固定成本',
+                                   `variable_cost` decimal(10, 2) NULL DEFAULT NULL COMMENT '变动成本',
+                                   `operating_profit` decimal(10, 2) NULL DEFAULT NULL COMMENT '经营利润',
+                                   `taxation` decimal(10, 2) NULL DEFAULT NULL COMMENT '税费',
+                                   `net_profit` decimal(10, 2) NULL DEFAULT NULL COMMENT '净利润',
+                                   `create_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
+                                   `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间',
+                                   `update_user` datetime NULL DEFAULT NULL COMMENT '修改人',
+                                   `update_date` datetime NULL DEFAULT NULL COMMENT '修改时间',
+                                   PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '人力成本表' ROW_FORMAT = Dynamic;

BIN
sql/jar/csp-iobs-sdk-1.0.5.jar


BIN
sql/jar/csp-iobs-sdk-1.1.0.jar


+ 6 - 0
sql/jar/reeadmind

@@ -0,0 +1,6 @@
+
+-- 将jar复制到本地路径下   执行maven 命令下载到maven库中
+
+mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\jar\csp-iobs-sdk-1.0.5.jar -DgroupId=com.file -DartifactId=sdk-jar-1.0.5 -Dversion=1.0.0 -Dpackaging=jar
+mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\jar\csp-iobs-sdk-1.1.0.jar -DgroupId=com.file -DartifactId=sdk-jar-1.1.0  -Dversion=1.0.0  -Dpackaging=jar
+

+ 20 - 0
src/main/java/com/ydtech/config/properties/PingAnApiConfigurationProperties.java

@@ -41,5 +41,25 @@ public class PingAnApiConfigurationProperties {
      */
     private  String  clientSecret;
 
+    /***
+     * 文件上传host
+     */
+    private  String  host;
+    /***
+     * 文件上传同名
+     */
+    private  String  bucket;
+    /***
+     * ak
+     */
+    private  String  ak;
+    /***
+     * sk
+     */
+    private  String  sk;
 
+    /***
+     * 文件上传前缀
+     */
+    private String fileUrl;
 }

+ 12 - 0
src/main/java/com/ydtech/modules/admin/components/UnionPayRequestApiComponent.java

@@ -0,0 +1,12 @@
+package com.ydtech.modules.admin.components;
+
+
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 银联API接口
+ */
+@Component
+public class UnionPayRequestApiComponent {
+}

+ 4 - 2
src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java

@@ -1,14 +1,16 @@
 package com.ydtech.modules.admin.controller.personnelStatistics;
 
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
 import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.UserReportService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+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.HashMap;
 

+ 49 - 0
src/main/java/com/ydtech/modules/admin/controller/quoteCount/QuoteCountController.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.admin.controller.quoteCount;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataDto;
+import com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataQueryDto;
+import com.ydtech.modules.admin.service.CompanyDataReportService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/30 14:38
+ *  @Description:  报价次数查询
+ */
+@Api(tags = "报价次数")
+@RequestMapping("/quoteCount")
+@RestController
+public class QuoteCountController {
+
+
+    @Autowired
+    private CompanyDataReportService companyDataReportService;
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 15:35
+     *  @Description:   查询报价次数数据
+     */
+    @PostMapping("queryCompanyQutationCountDataPage")
+    @ApiOperation(value = "查询报价次数数据")
+    public HttpResult<BasePageResult<CompanyQutationCountDataDto>> queryCompanyQutationCountDataPage(@RequestBody CompanyQutationCountDataQueryDto companyQutationCountDataQueryDto) {
+        try{
+            BasePageResult<CompanyQutationCountDataDto> result = companyDataReportService.queryCompanyQutationCountDataPage(companyQutationCountDataQueryDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/admin/model/report/company/CompanyQutationCountDataDto.java

@@ -28,6 +28,21 @@ public class CompanyQutationCountDataDto {
     @ApiModelProperty("保司机构id")
     private String parterCompanyId;
 
+    /***
+     *  小订单报价数
+     */
+    @ApiModelProperty("大订单报价数")
+    private String bigQutationCount;
+    /***
+     *  小订单核保数
+     */
+    @ApiModelProperty("大订单承保数")
+    private String bigUnderwritingCount;
+    /***
+     *  小订单承保数
+     */
+    @ApiModelProperty("大订单成交率")
+    private String bigCloseRate;
 
     /***
      *  小订单报价数

+ 16 - 0
src/main/java/com/ydtech/modules/admin/model/report/company/CompanyQutationCountDataQueryDto.java

@@ -26,4 +26,20 @@ public class CompanyQutationCountDataQueryDto {
     @ApiModelProperty("页数")
     private int pageSize;
 
+    /***
+     *  开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private String  beginDate;
+    /***
+     *  结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private String endDate;
+    /***
+     *  时间类型  1.近1月 2.近3月  3.近半年
+     */
+    @ApiModelProperty("时间类型  1.近1月 2.近3月  3.近半年")
+    private String  dateType;
+
 }

+ 42 - 0
src/main/java/com/ydtech/modules/admin/service/impl/CompanyDataReportServiceImpl.java

@@ -7,11 +7,16 @@ import com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataDto
 import com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataQueryDto;
 import com.ydtech.modules.admin.model.report.opetationData.QuotationCountDataDto;
 import com.ydtech.modules.admin.service.CompanyDataReportService;
+import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.entity.BasePageResult;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+import java.util.HashMap;
+
 /**
  *  @version
  *  @author: hxl
@@ -49,10 +54,47 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
     @Override
     public BasePageResult<CompanyQutationCountDataDto> queryCompanyQutationCountDataPage(CompanyQutationCountDataQueryDto companyQutationCountDataQueryDto) {
         Page<QuotationCountDataDto> page = new Page<>(companyQutationCountDataQueryDto.getPageNum(), companyQutationCountDataQueryDto.getPageSize());
+        //判断开始时间和结束时间是否为空,如果为空的走时间类型逻辑
+        HashMap<String, String> dateMapByType = getDateMapByType(companyQutationCountDataQueryDto.getDateType(), companyQutationCountDataQueryDto.getBeginDate(), companyQutationCountDataQueryDto.getEndDate());
+        companyQutationCountDataQueryDto.setBeginDate(dateMapByType.get("startDate"));
+        companyQutationCountDataQueryDto.setEndDate(dateMapByType.get("endDate"));
         Page<CompanyQutationCountDataDto> resultSubOrder = insAreaCompanyMapper.queryCompanyQutationCountDataPage(companyQutationCountDataQueryDto, page);
         return new BasePageResult<>(companyQutationCountDataQueryDto.getPageNum(), page.getSize(), resultSubOrder.getTotal(), page.getPages(),
                 resultSubOrder.getRecords());
     }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/6/19 11:57
+     *  @Description:  通过时间类型判断
+     */
+    private static HashMap<String,String> getDateMapByType(String type, String startDate, String endDate) {
+        HashMap<String,String> map =new HashMap<>();
+        String  startDateStr="";
+        String  endDateStr="";
+        if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){
+            startDateStr= StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
+            endDateStr= StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
+        }else{
+             if("1".equals(type)){
+                 // 一月内
+                 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),2)+" 00:00:00";
+                 endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }else if("2".equals(type)){
+                 // 三月内
+                 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),3)+" 00:00:00";
+                 endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }else if("3".equals(type)){
+                 // 近半年
+                 startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),4)+" 00:00:00";
+                 endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }
+        }
+        map.put("startDate",startDateStr);
+        map.put("endDate",endDateStr);
+        return map;
+    }
 }
 
 

+ 15 - 5
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -173,7 +173,9 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         }
         insPlyIncome.setOtherFeevalue(insFeeOrderNew.getNoOtherCostsPremiums());  //非车跟单费
         insPlyIncome.setOtherFeerate(insFeeOrderNew.getNoOtherCostsProportion()); //非车跟单费用比例
-        this.saveRiskCode(order.getProductid(), insPlyIncome);
+        //add by hxl  2024-07-31  修改插入结算表中险种信息错误的bug  将大订单中的险种信息改为小订单的险种信息
+        this.saveRiskCode(insAreaCompany.getProductid(), insPlyIncome);
+        //this.saveRiskCode(order.getProductid(), insPlyIncome);
         insPlyIncome.setPayDate(insAreaCompany.getPayDate());
         insPlyIncome.setSignDate(insAreaCompany.getSigningTime());
         insPlyIncome.setCompanyId(insAreaCompany.getCompanyId());
@@ -219,7 +221,9 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         }
 
 //        insPlyIncome.setDeptId(insFeeOrderNew.getDeptId());
-        this.saveRiskCode(order.getProductid(), insPlyIncome);
+        //add by hxl  2024-07-31  修改插入结算表中险种信息错误的bug  将大订单中的险种信息改为小订单的险种信息
+        this.saveRiskCode(insAreaCompany.getProductid(), insPlyIncome);
+        //this.saveRiskCode(order.getProductid(), insPlyIncome);
         insPlyIncome.setPayDate(insAreaCompany.getPayDate());
         insPlyIncome.setSignDate(insAreaCompany.getSigningTime());
         insPlyIncome.setCompanyId(insAreaCompany.getCompanyId());
@@ -290,7 +294,9 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
            insAreaCompany.getTaxamount(),
                 allNoTaxPremium, null, otherProportion, null, otherAmount, otherAmount, null, null, LocalDateTime.now(), null, null, null, "0"
                 , "0", "0", "1");
-        this.saveRiskCode(order.getProductid(), insPlyIncome);
+        //add by hxl  2024-07-31  修改插入结算表中险种信息错误的bug  将大订单中的险种信息改为小订单的险种信息
+        this.saveRiskCode(insAreaCompany.getProductid(), insPlyIncome);
+        //this.saveRiskCode(order.getProductid(), insPlyIncome);
         insPlyIncome.setTaxPremium(allPremium);
         insPlyIncome.setJqPremium(insFeeOrderNew.getJqPremium());
         insPlyIncome.setSyPremium(insFeeOrderNew.getSyPremium());
@@ -341,7 +347,9 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncome.setJqSuperviseCostsPremiums(insFeeOrderNew.getJqSuperviseCostsPremiums());
         insPlyIncome.setSySuperviseCostsProportion(insFeeOrderNew.getSySuperviseCostsProportion());
         insPlyIncome.setSySuperviseCostsPremiums(insFeeOrderNew.getSySuperviseCostsPremiums());
-        this.saveRiskCode(order.getProductid(), insPlyIncome);
+        //add by hxl  2024-07-31  修改插入结算表中险种信息错误的bug  将大订单中的险种信息改为小订单的险种信息
+        this.saveRiskCode(insAreaCompany.getProductid(), insPlyIncome);
+        //this.saveRiskCode(order.getProductid(), insPlyIncome);
         insPlyIncome.setTaxPremium(allTaxPremium);
         insPlyIncome.setUserId(insFeeOrderNew.getUserId());
         insPlyIncome.setInsuredName(order.getInsuredname());
@@ -470,7 +478,9 @@ handlingProportion,
         insPlyIncome.setSyStartDate(StringOperations.emptyStringToNull(insAreaCompany.getSyStartDate()));
         insPlyIncome.setSyEndDate(StringOperations.emptyStringToNull(insAreaCompany.getSyEndDate()));
         this.getDeptId(insPlyIncome);
-        this.saveRiskCode(order.getProductid(), insPlyIncome);
+        //add by hxl  2024-07-31  修改插入结算表中险种信息错误的bug  将大订单中的险种信息改为小订单的险种信息
+        this.saveRiskCode(insAreaCompany.getProductid(), insPlyIncome);
+        //this.saveRiskCode(order.getProductid(), insPlyIncome);
         insPlyIncome.setInsuredName(order.getInsuredname());
         this.saveByCompanyId(insFeeOrderNew, insAreaCompany.getCompanyId(), insPlyIncome);
         baseMapper.insert(insPlyIncome);

+ 66 - 0
src/main/java/com/ydtech/modules/ins/controller/InsLaborCostController.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.ins.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.ins.model.InsLaborCost;
+import com.ydtech.modules.ins.model.vo.InsLaborCostAddVo;
+import com.ydtech.modules.ins.model.vo.InsLaborCostIdsVo;
+import com.ydtech.modules.ins.model.vo.InsLaborCostVo;
+import com.ydtech.modules.ins.service.InsLaborCostService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "年度成本利润管理")
+@RequestMapping("/insLaborCost")
+@RestController
+public class InsLaborCostController extends BaseController {
+
+
+    @Autowired
+    private InsLaborCostService insLaborCostService;
+
+    @PostMapping("queryPage")
+    @ApiOperation(value = "分页")
+    public HttpResult<BasePageResult<InsLaborCost>> queryPage(@RequestBody InsLaborCostVo insLaborCostVo) {
+
+        try{
+            BasePageResult<InsLaborCost> result = insLaborCostService.queryPage(insLaborCostVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    @PostMapping("addOrUpdate")
+    @ApiOperation("添加修改")
+    public HttpResult<Object> addOrUpdate(@RequestBody InsLaborCostAddVo insLaborCostAddVo) {
+        try{
+            insLaborCostService.addOrUpdate(insLaborCostAddVo,getUser());
+            return HttpResult.ok("操作成功");
+        }catch (Exception e){
+            return HttpResult.error("操作失败"+e.getMessage());
+        }
+
+    }
+
+    @PostMapping("delete")
+    @ApiOperation("删除对象")
+    public HttpResult<Object> delete(@RequestBody InsLaborCostIdsVo idsVo) {
+        if(idsVo.getIds()==null || idsVo.getIds().size()==0){
+            return HttpResult.error("ids集合不能为空");
+        }
+        try{
+            insLaborCostService.deleteByIds(idsVo.getIds());
+            return HttpResult.ok("删除成功");
+        }catch (Exception e){
+            return HttpResult.error("删除失败"+e.getMessage());
+        }
+    }
+}

+ 27 - 0
src/main/java/com/ydtech/modules/ins/dao/InsLaborCostMapper.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.ins.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.ins.model.InsLaborCost;
+import com.ydtech.modules.ins.model.vo.InsLaborCostVo;
+
+/**
+* @author Administrator
+* @description 针对表【ins_labor_cost(人力成本表)】的数据库操作Mapper
+* @createDate 2024-07-31 14:13:07
+* @Entity generator.domain.InsLaborCost
+*/
+public interface InsLaborCostMapper extends BaseMapper<InsLaborCost> {
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/31 15:00
+     *  @Description: 分页查询
+     */
+    Page<InsLaborCost> queryPage(Page<SysUserLinkPtlAgreementDto> page, InsLaborCostVo insLaborCostVo);
+}
+
+
+
+

+ 152 - 0
src/main/java/com/ydtech/modules/ins/model/InsLaborCost.java

@@ -0,0 +1,152 @@
+package com.ydtech.modules.ins.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 人力成本表
+ * @TableName ins_labor_cost
+ */
+@TableName(value ="ins_labor_cost")
+@Data
+public class InsLaborCost implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 年-月
+     */
+    private String yearMonth;
+
+
+    /**
+     * 人力成本
+     */
+    private BigDecimal laborCost;
+
+    /**
+     * 固定成本
+     */
+    private BigDecimal fixedCost;
+
+    /**
+     * 变动成本
+     */
+    private BigDecimal variableCost;
+
+    /**
+     * 经营利润
+     */
+    private BigDecimal operatingProfit;
+
+    /**
+     * 税费
+     */
+    private BigDecimal taxation;
+
+    /**
+     * 净利润
+     */
+    private BigDecimal netProfit;
+
+    /**
+     * 创建人
+     */
+    private String createUser;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+
+    /**
+     * 修改人
+     */
+    private Date updateUser;
+
+    /**
+     * 修改时间
+     */
+    private Date updateDate;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        InsLaborCost other = (InsLaborCost) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getYearMonth() == null ? other.getYearMonth() == null : this.getYearMonth().equals(other.getYearMonth()))
+            && (this.getLaborCost() == null ? other.getLaborCost() == null : this.getLaborCost().equals(other.getLaborCost()))
+            && (this.getFixedCost() == null ? other.getFixedCost() == null : this.getFixedCost().equals(other.getFixedCost()))
+            && (this.getVariableCost() == null ? other.getVariableCost() == null : this.getVariableCost().equals(other.getVariableCost()))
+            && (this.getOperatingProfit() == null ? other.getOperatingProfit() == null : this.getOperatingProfit().equals(other.getOperatingProfit()))
+            && (this.getTaxation() == null ? other.getTaxation() == null : this.getTaxation().equals(other.getTaxation()))
+            && (this.getNetProfit() == null ? other.getNetProfit() == null : this.getNetProfit().equals(other.getNetProfit()))
+            && (this.getCreateUser() == null ? other.getCreateUser() == null : this.getCreateUser().equals(other.getCreateUser()))
+            && (this.getCreateDate() == null ? other.getCreateDate() == null : this.getCreateDate().equals(other.getCreateDate()))
+            && (this.getUpdateUser() == null ? other.getUpdateUser() == null : this.getUpdateUser().equals(other.getUpdateUser()))
+            && (this.getUpdateDate() == null ? other.getUpdateDate() == null : this.getUpdateDate().equals(other.getUpdateDate()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getYearMonth() == null) ? 0 : getYearMonth().hashCode());
+        result = prime * result + ((getLaborCost() == null) ? 0 : getLaborCost().hashCode());
+        result = prime * result + ((getFixedCost() == null) ? 0 : getFixedCost().hashCode());
+        result = prime * result + ((getVariableCost() == null) ? 0 : getVariableCost().hashCode());
+        result = prime * result + ((getOperatingProfit() == null) ? 0 : getOperatingProfit().hashCode());
+        result = prime * result + ((getTaxation() == null) ? 0 : getTaxation().hashCode());
+        result = prime * result + ((getNetProfit() == null) ? 0 : getNetProfit().hashCode());
+        result = prime * result + ((getCreateUser() == null) ? 0 : getCreateUser().hashCode());
+        result = prime * result + ((getCreateDate() == null) ? 0 : getCreateDate().hashCode());
+        result = prime * result + ((getUpdateUser() == null) ? 0 : getUpdateUser().hashCode());
+        result = prime * result + ((getUpdateDate() == null) ? 0 : getUpdateDate().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", yearMonth=").append(yearMonth);
+        sb.append(", laborCost=").append(laborCost);
+        sb.append(", fixedCost=").append(fixedCost);
+        sb.append(", variableCost=").append(variableCost);
+        sb.append(", operatingProfit=").append(operatingProfit);
+        sb.append(", taxation=").append(taxation);
+        sb.append(", netProfit=").append(netProfit);
+        sb.append(", createUser=").append(createUser);
+        sb.append(", createDate=").append(createDate);
+        sb.append(", updateUser=").append(updateUser);
+        sb.append(", updateDate=").append(updateDate);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 11 - 0
src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java

@@ -117,6 +117,15 @@ public class CarInfoVo {
     @ApiModelProperty(value = "是否过户")
     private boolean transferFlag;
 
+    //处理 @Data   中 boolean  无法get   hxl  2024-07-17  设置为 Boolean 类型没有默认值,因此添加方法
+    public boolean isTransferFlag() {
+        return transferFlag;
+    }
+
+    public void setTransferFlag(boolean transferFlag) {
+        this.transferFlag = transferFlag;
+    }
+
     @ApiModelProperty(value = "商业是否过户")
     private boolean transferFlagBi;
 
@@ -204,4 +213,6 @@ public class CarInfoVo {
         return carModelDTO;
     }
 
+    public void getTransferFlag() {
+    }
 }

+ 65 - 0
src/main/java/com/ydtech/modules/ins/model/vo/InsLaborCostAddVo.java

@@ -0,0 +1,65 @@
+package com.ydtech.modules.ins.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 人力成本表 添加对象
+ * @TableName ins_labor_cost
+ */
+@Data
+@ApiModel("人力成本添加对象")
+public class InsLaborCostAddVo implements Serializable {
+    /**
+     * 主键
+     */
+    @ApiModelProperty("id")
+    private Long id;
+
+    /**
+     * 年-月
+     */
+    @ApiModelProperty("年-月")
+    private String yearMonth;
+
+
+    /**
+     * 人力成本
+     */
+    @ApiModelProperty("人力成本")
+    private BigDecimal laborCost;
+
+    /**
+     * 固定成本
+     */
+    @ApiModelProperty("固定成本")
+    private BigDecimal fixedCost;
+
+    /**
+     * 变动成本
+     */
+    @ApiModelProperty("变动成本")
+    private BigDecimal variableCost;
+
+    /**
+     * 经营利润
+     */
+    @ApiModelProperty("经营利润")
+    private BigDecimal operatingProfit;
+
+    /**
+     * 税费
+     */
+    @ApiModelProperty("税费")
+    private BigDecimal taxation;
+
+    /**
+     * 净利润
+     */
+    @ApiModelProperty("净利润")
+    private BigDecimal netProfit;
+}

+ 21 - 0
src/main/java/com/ydtech/modules/ins/model/vo/InsLaborCostIdsVo.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.ins.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 人力成本表 添加对象
+ */
+@Data
+@ApiModel("人力成本删除对象")
+public class InsLaborCostIdsVo implements Serializable {
+    /**
+     * 主键
+     */
+    @ApiModelProperty("ids集合")
+    private List<Long> ids;
+}

+ 30 - 0
src/main/java/com/ydtech/modules/ins/model/vo/InsLaborCostVo.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.ins.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 人力成本表
+ * @TableName ins_labor_cost
+ */
+@Data
+@ApiModel("人力成本查询对象")
+public class InsLaborCostVo {
+    /**
+     * 年-月
+     */
+    @ApiModelProperty("年月")
+    private String yearMonth;
+
+    /**
+     * 当前页码
+     */
+    @ApiModelProperty("当前页码")
+    private int pageNum;
+    /**
+     * 每页数量
+     */
+    @ApiModelProperty("每页数量")
+    private int pageSize;
+}

+ 40 - 0
src/main/java/com/ydtech/modules/ins/service/InsLaborCostService.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.ins.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.ins.model.InsLaborCost;
+import com.ydtech.modules.ins.model.vo.InsLaborCostAddVo;
+import com.ydtech.modules.ins.model.vo.InsLaborCostVo;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+import java.util.List;
+
+
+/**
+* @author Administrator
+* @description 针对表【ins_labor_cost(人力成本表)】的数据库操作Service
+* @createDate 2024-07-31 14:13:07
+*/
+public interface InsLaborCostService extends IService<InsLaborCost> {
+     /**
+      *  @version
+      *  @author: hxl
+      *  @Date: \ 14:58
+      *  @Description:  分页查询
+      */
+    BasePageResult<InsLaborCost> queryPage(InsLaborCostVo insLaborCostVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/31 15:04
+     *  @Description: 添加或者修改
+     */
+    void addOrUpdate(InsLaborCostAddVo insLaborCostAddVo, SysUser user);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/31 15:07
+     *  @Description:  删除
+     */
+    void deleteByIds(List<Long> ids);
+}

+ 85 - 0
src/main/java/com/ydtech/modules/ins/service/impl/InsLaborCostServiceImpl.java

@@ -0,0 +1,85 @@
+package com.ydtech.modules.ins.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.ins.dao.InsLaborCostMapper;
+import com.ydtech.modules.ins.model.InsLaborCost;
+import com.ydtech.modules.ins.model.vo.InsLaborCostAddVo;
+import com.ydtech.modules.ins.model.vo.InsLaborCostVo;
+import com.ydtech.modules.ins.service.InsLaborCostService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* @author Administrator
+* @description 针对表【ins_labor_cost(人力成本表)】的数据库操作Service实现
+* @createDate 2024-07-31 14:13:07
+*/
+@Service
+public class InsLaborCostServiceImpl extends ServiceImpl<InsLaborCostMapper, InsLaborCost>
+    implements InsLaborCostService {
+
+
+    @Autowired
+    private InsLaborCostMapper insLaborCostMapper;
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/31 15:05
+     *  @Description: 分页查询
+     */
+    @Override
+    public BasePageResult<InsLaborCost> queryPage(InsLaborCostVo insLaborCostVo) {
+        Page<SysUserLinkPtlAgreementDto> page = new Page<>(insLaborCostVo.getPageNum(),
+                insLaborCostVo.getPageSize());
+        Page<InsLaborCost> sysUserLinkPtlAgreementDtoBasePageResult = insLaborCostMapper.queryPage(page, insLaborCostVo);
+        return  new BasePageResult<>(insLaborCostVo.getPageNum(), page.getSize(), sysUserLinkPtlAgreementDtoBasePageResult.getTotal(), page.getPages(),
+                sysUserLinkPtlAgreementDtoBasePageResult.getRecords());
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/31 15:05
+     *  @Description: 添加修改
+     */
+    @Override
+    public void addOrUpdate(InsLaborCostAddVo insLaborCostAddVo, SysUser user) {
+        Long id = insLaborCostAddVo.getId();
+        if(id==null){
+            InsLaborCost vo = new InsLaborCost();
+            BeanUtils.copyProperties(insLaborCostAddVo, vo);
+            vo.setCreateUser(user.getId());
+            vo.setCreateDate(new Date());
+            vo.setCreateUser(user.getId());
+            vo.setCreateDate(new Date());
+            insLaborCostMapper.insert(vo);
+        }else{
+            InsLaborCost vo = insLaborCostMapper.selectById(insLaborCostAddVo.getId());
+            BeanUtils.copyProperties(insLaborCostAddVo, vo);
+            vo.setCreateUser(user.getId());
+            vo.setCreateDate(new Date());
+            insLaborCostMapper.updateById(vo);
+        }
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/31 15:09
+     *  @Description: 删除数据
+     */
+    @Override
+    public void deleteByIds(List<Long> ids) {
+        this.removeByIds(ids);
+    }
+}
+
+
+
+

+ 420 - 149
src/main/java/com/ydtech/modules/order/components/pingan/PinganRequestApiComponents.java

@@ -1,6 +1,10 @@
 package com.ydtech.modules.order.components.pingan;
 
 
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.crypto.SmUtil;
+import cn.hutool.crypto.asymmetric.SM2;
+import cn.hutool.crypto.symmetric.SM4;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
@@ -14,6 +18,7 @@ import com.ydtech.modules.order.entity.api.pingan.constants.carConfirm.CarConfir
 import com.ydtech.modules.order.entity.api.pingan.constants.dmvehicleInfo.DmvehicleInfoResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.documentStatusList.DocumentStatusListResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.index.IndexResposeCodeEnum;
+import com.ydtech.modules.order.entity.api.pingan.constants.notice.NoticeResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.policyPdf.PolicyPdfResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.quote.QuoteResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.renewalConfirm.RenewalConfirmResponseCodeEnum;
@@ -25,12 +30,12 @@ import com.ydtech.modules.order.entity.api.pingan.constants.submitApply.SubmitAp
 import com.ydtech.modules.order.entity.api.pingan.constants.unAutoProductDetail.UnAutoProductDetailResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.unAutoProductList.UnAutoProductListResponseCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.constants.uploadFiles.UploadFilesResponseCodeEnum;
+import com.ydtech.modules.order.entity.api.pingan.log.PinganApiLog;
 import com.ydtech.modules.order.entity.api.pingan.request.*;
 import com.ydtech.modules.order.entity.api.pingan.response.*;
-import com.ydtech.modules.order.entity.api.pingan.utils.PinAnEnumUtils;
-import com.ydtech.modules.order.entity.api.pingan.utils.RSAPINGANUtils;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.FieldEmptyException;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
+import com.ydtech.modules.order.service.PinganApiLogService;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import com.ydtech.utils.RequestIdUtils;
 import com.ydtech.utils.StringUtils;
@@ -45,9 +50,6 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.TreeSet;
 
 /**
  * @author: hxl
@@ -102,20 +104,20 @@ public class PinganRequestApiComponents {
 
     public static final Logger logger = LoggerFactory.getLogger(PinganRequestApiComponents.class);
 
+    
+    private final PinganApiLogService pinganApiLogService;
     /**
      * @version
      * @author: hxl
-     * @Date: 2024/3/26 14:52
+     * @Date: 2024/3/26 14:52    1-1
      * @Description: 通过客户端id和客户端密钥获取令牌
      */
-    private String getToken(String url) throws Exception {
+    private String getToken(String url,PinganApiLog pinganApiLog) throws Exception {
         HttpHeaders headers = new HttpHeaders();
         HttpEntity<String> entity = new HttpEntity<>(headers);
         RestTemplate restTemplate = new RestTemplate();
         String clientId = properties.getClientId();
         String clientSecret = properties.getClientSecret();
-        logger.info("客户端id==========" + clientId);
-        logger.info("客户端密钥==========" + clientSecret);
         if(StringUtils.isEmpty(clientId)){
             throw new SystemException("客户端id为空,请检查配置!!!");
         }
@@ -127,6 +129,10 @@ public class PinganRequestApiComponents {
             ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.GET, entity, JSONObject.class);
             JSONObject body = response.getBody();
             TokenResponse token = JSON.toJavaObject(body, TokenResponse.class);
+            String responseBody = JSON.toJSONString(token, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+            pinganApiLog.setRequestType("获取token");
+            pinganApiLog.setResponseBody(responseBody);
+            pinganApiLogService.save(pinganApiLog);
             if (token != null) {
                 String expiresIn = token.getData().getExpires_in();
                 if (expiresIn != null && Integer.parseInt(expiresIn) > 0) {
@@ -135,13 +141,12 @@ public class PinganRequestApiComponents {
                     throw new SystemException("令牌已过期");
                 }
             } else {
-                throw new SystemException("返回值为空,请检查访问路径以及参数!!!");
+                throw new SystemException("获取token失败");
             }
         }catch (Exception e) {
             throw new SystemException("接口请求异常,请检查请求路径以及参数");
         }
     }
-
     /**
      * 加密请求
      *
@@ -152,38 +157,32 @@ public class PinganRequestApiComponents {
      * @param <S>    Response 响应体
      * @return <S>
      */
-    private <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S post(Q q, String url, Class<S> tClass, RequestUrl requestUrl) throws Exception {
+    private <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S post(Q q, String url, Class<S> tClass, RequestUrl requestUrl,PinganApiLog pinganApiLog) throws Exception {
         HttpHeaders httpHeaders = new HttpHeaders();
         //设置请求头类型
         httpHeaders.add("Content-Type", "application/json;charset=utf-8");
         httpHeaders.add("Accept", "application/json;charset=utf-8");
+        String  token = getToken(properties.getAccessUrl(),pinganApiLog);
+        //拼接token和请求id
+        url = url + "/" + requestUrl.getUrl() + "?access_token=" + token + "&request_id=" + RequestIdUtils.createID(requestUrl.getCode());
         String busReqString = JSON.toJSONString(q, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(properties.getPingAnPublicKey()));
         //打印入参参数
         InsuranceLog.infoLog(InsuranceEnum.PAIC.getPinyin(), "\n\t---------> {} \n\t---------> URl: {} \n\t---------> 请求参数:{}",
                 requestUrl.getCode() + "--" + requestUrl.getUrl() + "--" + requestUrl.getDesc(), url, busReqString);
-
-        JSONObject jsonObject = (JSONObject) JSON.toJSON(q);
-        String token = null;
-        try{
-            //获取令牌token
-            token = getToken(properties.getAccessUrl());
-        }catch (Exception e){
-            throw new SystemException(e.getMessage());
-        }
-
-        if (token == null) {
-            throw new SystemException("获取令牌接口失败");
-        }
-        //拼接token和请求id
-        url = url + "/" + requestUrl.getUrl() + "?access_token=" + token + "&request_id=" + RequestIdUtils.createID(requestUrl.getCode());
-        HttpEntity<String> httpEntity = new HttpEntity<>(jsonObject.toJSONString(), httpHeaders);
+        String  jsonRequestParam = ((JSONObject) JSON.toJSON(q)).toJSONString();
+        //插入日志
+        pinganApiLog.setId(null);
+        pinganApiLog.setRequestUrl(url);
+        pinganApiLog.setRequestType(requestUrl.getDesc());
+        pinganApiLog.setRequestParam(busReqString);
+        HttpEntity<CommonRequest> httpEntity = new HttpEntity<>(getCommonRequest(jsonRequestParam,sm4), httpHeaders);
         try{
+            //发送请求
             ResponseEntity<String> response = restTemplate.postForEntity(url, httpEntity, String.class);
-            String body = response.getBody();
-            InsuranceLog.infoLog(InsuranceEnum.PAIC.getPinyin(), "\n\t---------> {} \n\t---------> 返回数据:{}", requestUrl.getCode() + "--" + requestUrl.getUrl() + "--" + requestUrl.getDesc(), body);
-            return JSON.parseObject(body).toJavaObject(tClass);
+            return getCommonResponse(response.getBody(), requestUrl, sm4, tClass, url, pinganApiLog);
         }catch (Exception e){
-            throw new SystemException("接口请求异常,请检查请求路径以及参数");
+            throw new SystemException(e.getMessage());
         }
     }
 
@@ -193,21 +192,8 @@ public class PinganRequestApiComponents {
      * @Date: 2024/3/26 16:07
      * @Description: 接口分装
      */
-    public <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S verificationResponse(Q q, String url, Class<S> tClass,
-                                                                                              RequestUrl requestUrl) throws Exception {
-        S response = post(q, url, tClass, requestUrl);
-        if ("001".equals(requestUrl.getCode())) {
-            //处理models[]数据会使用RSA公钥进行加密,合作伙伴使用RSA私钥进行解密
-            SearchPAVehicleListResponse res = (SearchPAVehicleListResponse) response;
-            String modelsStr = JSON.toJSONString(res, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-            //解密
-            logger.info("加密前的内容" + modelsStr);
-            String modelsStrDec = RSAPINGANUtils.extracted(modelsStr, properties.getSelfPrivateKey());
-            logger.info("解密后的内容" + modelsStrDec);
-            SearchPAVehicleListResponse.ModelsDto models = JSON.parseObject(modelsStrDec).toJavaObject(SearchPAVehicleListResponse.ModelsDto.class);
-            res.setModels((List<SearchPAVehicleListResponse.ModelsDto>) models);
-        }
-        //注意002 pdf的解密文件
+    public <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S verificationResponse(Q q, String url, Class<S> tClass, RequestUrl requestUrl,PinganApiLog pinganApiLog) throws Exception {
+        S response = post(q, url, tClass, requestUrl,pinganApiLog);
         return response;
     }
     /**
@@ -228,41 +214,114 @@ public class PinganRequestApiComponents {
     }
 
     /**
-    * @Description  返回参数验证
-    * @Author  hxl
-    * @Date   2024/4/1 9:37
-    * @Param
-    * @Return
-    * @Exception
-    *
-    */
-    private <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S getCheckResponseResult(Q q,Class<S> tClass,RequestUrl requestUrl,Class enumCodeClass) {
+     * @Description  返回参数验证
+     * @Author  hxl
+     * @Date   2024/4/1 9:37
+     * @Param
+     * @Return
+     * @Exception
+     *
+     */
+    private <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S getCheckResponseResult(Q q,Class<S> tClass,RequestUrl requestUrl,Class enumCodeClass,PinganApiLog pinganApiLog) {
         S response;
         try {
-            response = verificationResponse(q, properties.getUrl(), tClass, requestUrl);
-            if(!"0".equals(response.getResultCode())){
-                throw new SystemException(requestUrl.getCode()+"-"+requestUrl.getDesc()+"-"+requestUrl.getUrl()+"接口返回信息"+PinAnEnumUtils.getEnumValueByCode(enumCodeClass,response.getResultCode()));
-            }
+            response = verificationResponse(q, properties.getUrl(), tClass, requestUrl,pinganApiLog);
         } catch (Exception e) {
-            throw new SystemException(requestUrl.getCode()+"-"+requestUrl.getDesc()+"-"+requestUrl.getUrl()+"接口报错:"+e.getMessage());
+            throw new SystemException(e.getMessage());
         }
         return response;
     }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/26 10:34
+     *  @Description:  请求的验签+加密
+     */
+    public  CommonRequest  getCommonRequest(String jsonRequestParam, SM4 sm4){
+        SM2 sm2 =  SmUtil.sm2(properties.getSelfPrivateKey(),properties.getSelfPublicKey());
+        String signStr = sm2.signHex(HexUtil.encodeHexStr(jsonRequestParam));
+        //验签
+        boolean verifyResult = sm2.verifyHex(HexUtil.encodeHexStr(jsonRequestParam),signStr);
+        String dataStr="";
+        if(verifyResult){
+            //加密
+            dataStr = sm4.encryptHex(jsonRequestParam);
+        }else{
+            throw  new SystemException("验签失败!!!");
+        }
+        CommonRequest  commonRequest =new CommonRequest();
+        commonRequest.setData(dataStr);
+        commonRequest.setSign(signStr);
+        return commonRequest;
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/26 10:41
+     *  @Description:  解密获取返回的对象
+     */
+    public  <Q extends PingAnBaseRequest, S extends PingAnBaseResponse> S  getCommonResponse(String responseBody,RequestUrl requestUrl,SM4 sm4,Class<S> tClass,String url,PinganApiLog pinganApiLog){
+        //特殊处理
+        if("65".equals(requestUrl.getCode())){
+            DataResponse obj = JSON.parseObject(responseBody).toJavaObject(DataResponse.class);
+            String sm4DecodeResult  = sm4.decryptStr(obj.getData());
+            InsuranceLog.infoLog(InsuranceEnum.PAIC.getPinyin(), "\n\t---------> {} \n\t---------> 返回数据:{}", requestUrl.getCode() + "--" + url + "--" + requestUrl.getDesc(), sm4DecodeResult);
+            return JSON.parseObject(sm4DecodeResult).toJavaObject(tClass);
+        }else{
+            CommonResponse obj = JSON.parseObject(responseBody).toJavaObject(CommonResponse.class);
+            pinganApiLog.setResponseType(obj.getRet());
+            if("0".equals(obj.getRet())){
+                //解密
+                CommonRequest data = obj.getData();
+                String sm4DecodeResult  = sm4.decryptStr(data.getData());
+                InsuranceLog.infoLog(InsuranceEnum.PAIC.getPinyin(), "\n\t---------> {} \n\t---------> 返回数据:{}", requestUrl.getCode() + "--" + url + "--" + requestUrl.getDesc(), sm4DecodeResult);
+                pinganApiLog.setResponseBody(sm4DecodeResult);
+                //特殊处理
+                if ("42".equals(requestUrl.getCode())) {
+                    JSONObject json = JSON.parseObject(sm4DecodeResult);
+                    String bizQuoteBeginDate=json.getString("bizQuote.beginDate");
+                    String bizQuoteSpecialCarDate=json.getString("bizQuote.specialCarDate");
+                    String bizQuoteSpecialCarFlag=json.getString("bizQuote.specialCarFlag");
+                    CarConfirmResponse resps =(CarConfirmResponse) JSON.parseObject(sm4DecodeResult).toJavaObject(tClass);
+                    String forceQuoteBeginDate=json.getString("forceQuote.beginDate");
+                    if("true".equals(bizQuoteSpecialCarFlag)){
+                        bizQuoteSpecialCarFlag="1";
+                    }else if("false".equals(bizQuoteSpecialCarFlag)){
+                        bizQuoteSpecialCarFlag="0";
+                    }
+                    CarConfirmResponse.BizQuoteDTO  bto=new  CarConfirmResponse.BizQuoteDTO(bizQuoteBeginDate,bizQuoteSpecialCarDate,bizQuoteSpecialCarFlag);
+                    CarConfirmResponse.ForceQuoteDTO  forceDto = new CarConfirmResponse.ForceQuoteDTO(forceQuoteBeginDate);
+                    resps.setBizQuote(bto);
+                    resps.setForceQuote(forceDto);
+                    return (S) resps;
+                }
+                pinganApiLogService.save(pinganApiLog);
+                return JSON.parseObject(sm4DecodeResult).toJavaObject(tClass);
+            }else{
+                pinganApiLog.setResponseBody(obj.getMsg());
+                pinganApiLogService.save(pinganApiLog);
+                return null;
+            }
+        }
+    }
+
+
     /**
      * @version
      * @author: hxl
      * @Date: 2024/3/26 14:14
      * @Description: 获取标的信息接口  3.1
      */
-    public IndexResponse index(IndexRequest indexRequest) throws Exception {
+    public IndexResponse index(IndexRequest indexRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(indexRequest);
         //验证出参数据
         IndexResponse indexResponse=null;
         try {
-            indexResponse = (IndexResponse)getCheckResponseResult(indexRequest,IndexResponse.class,RequestUrl.R_31,IndexResposeCodeEnum.class);
+            indexResponse = (IndexResponse)getCheckResponseResult(indexRequest,IndexResponse.class,RequestUrl.R_31,IndexResposeCodeEnum.class,pinganApiLog);
         }catch (Exception e){
-             throw new SystemException(e.getMessage());
+            throw new SystemException(e.getMessage());
         }
         return indexResponse;
     }
@@ -278,23 +337,13 @@ public class PinganRequestApiComponents {
      * 3.1的index接口返回1时调用
      *
      */
-    public RenewalConfirmResponse renewalConfirm(RenewalConfirmRequest renewalConfirmRequest) throws Exception {
-        //签名加密
-        Map<String, String> params = new TreeMap<>();
-        params.put("flowid", renewalConfirmRequest.getFlowid());
-        params.put("checkNo", renewalConfirmRequest.getCheckNo());
-        params.put("userId", renewalConfirmRequest.getUserId());
-        logger.info("加密前的内容" + params.toString());
-        //添加加密内容
-        String encryptContent = RSAPINGANUtils.getStringStringMap(params, properties.getSelfPrivateKey());
-        logger.info("加密后的内容" + encryptContent);
-        renewalConfirmRequest.setSignature(encryptContent);
+    public RenewalConfirmResponse renewalConfirm(RenewalConfirmRequest renewalConfirmRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(renewalConfirmRequest);
         //验证出参数据
         RenewalConfirmResponse renewalConfirmResponse=null;
         try {
-            renewalConfirmResponse = (RenewalConfirmResponse)getCheckResponseResult(renewalConfirmRequest,RenewalConfirmResponse.class,RequestUrl.R_41, RenewalConfirmResponseCodeEnum.class);
+            renewalConfirmResponse = (RenewalConfirmResponse)getCheckResponseResult(renewalConfirmRequest,RenewalConfirmResponse.class,RequestUrl.R_41, RenewalConfirmResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -321,23 +370,13 @@ public class PinganRequestApiComponents {
      * @param searchPAVehicleListRequest
      * @return
      */
-    public SearchPAVehicleListResponse searchPAVehicleList(SearchPAVehicleListRequest searchPAVehicleListRequest) throws Exception {
-        //签名加密
-        Map<String, String> params = new TreeMap<>();
-        params.put("userId", searchPAVehicleListRequest.getUserId());
-        params.put("keyword", searchPAVehicleListRequest.getKeyword());
-        params.put("flowid", searchPAVehicleListRequest.getFlowid());
-        logger.info("加密前的内容" + params.toString());
-        //添加加密内容
-        String encryptContent = RSAPINGANUtils.getStringStringMap(params, properties.getSelfPrivateKey());
-        logger.info("加密后的内容" + encryptContent);
-        searchPAVehicleListRequest.setSignature(encryptContent);
+    public SearchPAVehicleListResponse searchPAVehicleList(SearchPAVehicleListRequest searchPAVehicleListRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(searchPAVehicleListRequest);
         //验证出参数据
         SearchPAVehicleListResponse searchPAVehicleListResponse=null;
         try {
-            searchPAVehicleListResponse = (SearchPAVehicleListResponse)getCheckResponseResult(searchPAVehicleListRequest,SearchPAVehicleListResponse.class, RequestUrl.R_001, SearchPAVehicleListResponseCodeEnum.class);
+            searchPAVehicleListResponse = (SearchPAVehicleListResponse)getCheckResponseResult(searchPAVehicleListRequest,SearchPAVehicleListResponse.class, RequestUrl.R_001, SearchPAVehicleListResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -350,25 +389,13 @@ public class PinganRequestApiComponents {
      * @param policyPdfRequest
      * @return
      */
-    public PolicyPdfResponse getPolicyPdf(PolicyPdfRequest policyPdfRequest) throws Exception {
-        //签名加密
-        Map<String, String> params = new TreeMap<>();
-        params.put("userId", policyPdfRequest.getUserId());
-        params.put("documentNo", policyPdfRequest.getDocumentNo());
-        params.put("checkNo", policyPdfRequest.getCheckNo());
-        params.put("vehicle.licenseNo", policyPdfRequest.getVehicle() == null ? "" : policyPdfRequest.getVehicle().getLicenseNo());
-        params.put("vehicle.frameNo", policyPdfRequest.getVehicle() == null ? "" : policyPdfRequest.getVehicle().getFrameNo());
-        logger.info("加密前的内容" + params.toString());
-        //添加加密内容
-        String encryptContent = RSAPINGANUtils.getStringStringMap(params, properties.getSelfPrivateKey());
-        logger.info("加密后的内容" + encryptContent);
-        policyPdfRequest.setSignature(encryptContent);
+    public PolicyPdfResponse getPolicyPdf(PolicyPdfRequest policyPdfRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(policyPdfRequest);
         //验证出参数据
         PolicyPdfResponse policyPdfResponse=null;
         try {
-            policyPdfResponse = (PolicyPdfResponse)getCheckResponseResult(policyPdfRequest,PolicyPdfResponse.class, RequestUrl.R_002,PolicyPdfResponseCodeEnum.class);
+            policyPdfResponse = (PolicyPdfResponse)getCheckResponseResult(policyPdfRequest,PolicyPdfResponse.class, RequestUrl.R_002,PolicyPdfResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -382,13 +409,13 @@ public class PinganRequestApiComponents {
      * @param carConfirmRequest
      * @return
      */
-    public CarConfirmResponse carConfirm(CarConfirmRequest carConfirmRequest) throws Exception {
+    public CarConfirmResponse carConfirm(CarConfirmRequest carConfirmRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(carConfirmRequest);
         //验证出参数据
         CarConfirmResponse carConfirmResponse=null;
         try {
-            carConfirmResponse = (CarConfirmResponse)getCheckResponseResult(carConfirmRequest,CarConfirmResponse.class, RequestUrl.R_42, CarConfirmResponseCodeEnum.class);
+            carConfirmResponse = (CarConfirmResponse)getCheckResponseResult(carConfirmRequest,CarConfirmResponse.class, RequestUrl.R_42, CarConfirmResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -401,13 +428,13 @@ public class PinganRequestApiComponents {
      * @param dmvehicleInfoRequst
      * @return
      */
-    public DmvehicleInfoResponse getDmvehicleInfo(DmvehicleInfoRequst dmvehicleInfoRequst) throws Exception {
+    public DmvehicleInfoResponse getDmvehicleInfo(DmvehicleInfoRequst dmvehicleInfoRequst,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(dmvehicleInfoRequst);
         //验证出参数据
         DmvehicleInfoResponse dmvehicleInfoResponse=null;
         try {
-            dmvehicleInfoResponse = (DmvehicleInfoResponse)getCheckResponseResult(dmvehicleInfoRequst,DmvehicleInfoResponse.class, RequestUrl.R_43, DmvehicleInfoResponseCodeEnum.class);
+            dmvehicleInfoResponse = (DmvehicleInfoResponse)getCheckResponseResult(dmvehicleInfoRequst,DmvehicleInfoResponse.class, RequestUrl.R_43, DmvehicleInfoResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -420,13 +447,13 @@ public class PinganRequestApiComponents {
      * @param unAutoProductListRequest
      * @return
      */
-    public UnAutoProductListResponse getUnAutoProductList(UnAutoProductListRequest unAutoProductListRequest) throws Exception {
+    public UnAutoProductListResponse getUnAutoProductList(UnAutoProductListRequest unAutoProductListRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
-        checkRequestParams(unAutoProductListRequest);
+        //checkRequestParams(unAutoProductListRequest);
         //验证出参数据
         UnAutoProductListResponse unAutoProductListResponse=null;
         try {
-            unAutoProductListResponse = (UnAutoProductListResponse)getCheckResponseResult(unAutoProductListRequest,UnAutoProductListResponse.class, RequestUrl.R_44, UnAutoProductListResponseCodeEnum.class);
+            unAutoProductListResponse = (UnAutoProductListResponse)getCheckResponseResult(unAutoProductListRequest,UnAutoProductListResponse.class, RequestUrl.R_44, UnAutoProductListResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -439,13 +466,13 @@ public class PinganRequestApiComponents {
      * @param unAutoProductDetailRequest
      * @return
      */
-    public UnAutoProductDetailResponse getUnAutoProductDetail(UnAutoProductDetailRequest unAutoProductDetailRequest) throws Exception {
+    public UnAutoProductDetailResponse getUnAutoProductDetail(UnAutoProductDetailRequest unAutoProductDetailRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
-        checkRequestParams(unAutoProductDetailRequest);
+        // checkRequestParams(unAutoProductDetailRequest);
         //验证出参数据
         UnAutoProductDetailResponse unAutoProductDetailResponse=null;
         try {
-            unAutoProductDetailResponse = (UnAutoProductDetailResponse)getCheckResponseResult(unAutoProductDetailRequest,UnAutoProductDetailResponse.class, RequestUrl.R_45, UnAutoProductDetailResponseCodeEnum.class);
+            unAutoProductDetailResponse = (UnAutoProductDetailResponse)getCheckResponseResult(unAutoProductDetailRequest,UnAutoProductDetailResponse.class, RequestUrl.R_45, UnAutoProductDetailResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -458,13 +485,13 @@ public class PinganRequestApiComponents {
      * @param quoteRequest
      * @return
      */
-    public QuoteResponse quote(QuoteRequest quoteRequest) throws Exception {
+    public QuoteResponse quote(QuoteRequest quoteRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(quoteRequest);
         //验证出参数据
         QuoteResponse quoteResponse=null;
         try {
-            quoteResponse = (QuoteResponse)getCheckResponseResult(quoteRequest,QuoteResponse.class, RequestUrl.R_51, QuoteResponseCodeEnum.class);
+            quoteResponse = (QuoteResponse)getCheckResponseResult(quoteRequest,QuoteResponse.class, RequestUrl.R_51, QuoteResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -479,13 +506,13 @@ public class PinganRequestApiComponents {
      * @param serviceContractRequest
      * @return
      */
-    public ServiceContractResponse queryServiceContract(ServiceContractRequest serviceContractRequest) throws Exception {
+    public ServiceContractResponse queryServiceContract(ServiceContractRequest serviceContractRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
-        checkRequestParams(serviceContractRequest);
+        //checkRequestParams(serviceContractRequest);
         //验证出参数据
         ServiceContractResponse serviceContractResponse=null;
         try {
-            serviceContractResponse = (ServiceContractResponse)getCheckResponseResult(serviceContractRequest,ServiceContractResponse.class,  RequestUrl.R_52, ServiceContractResponseCodeEnum.class);
+            serviceContractResponse = (ServiceContractResponse)getCheckResponseResult(serviceContractRequest,ServiceContractResponse.class,  RequestUrl.R_52, ServiceContractResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -502,13 +529,13 @@ public class PinganRequestApiComponents {
      * @param submitApplyRequest
      * @return
      */
-    public SubmitApplyResponse submitApply(SubmitApplyRequest submitApplyRequest) throws Exception {
+    public SubmitApplyResponse submitApply(SubmitApplyRequest submitApplyRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(submitApplyRequest);
         //验证出参数据
         SubmitApplyResponse submitApplyResponse=null;
         try {
-            submitApplyResponse = (SubmitApplyResponse)getCheckResponseResult(submitApplyRequest,SubmitApplyResponse.class,RequestUrl.R_61, SubmitApplyResponseCodeEnum.class);
+            submitApplyResponse = (SubmitApplyResponse)getCheckResponseResult(submitApplyRequest,SubmitApplyResponse.class,RequestUrl.R_61, SubmitApplyResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -523,13 +550,13 @@ public class PinganRequestApiComponents {
      * @param scanCodeURLRequest
      * @return
      */
-    public ScanCodeURLResponse getScanCodeURL(ScanCodeURLRequest scanCodeURLRequest) throws Exception {
+    public ScanCodeURLResponse getScanCodeURL(ScanCodeURLRequest scanCodeURLRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(scanCodeURLRequest);
         //验证出参数据
         ScanCodeURLResponse scanCodeURLResponse=null;
         try {
-            scanCodeURLResponse = (ScanCodeURLResponse)getCheckResponseResult(scanCodeURLRequest,ScanCodeURLResponse.class,  RequestUrl.R_78, ScanCodeURLResponseCodeEnum.class);
+            scanCodeURLResponse = (ScanCodeURLResponse)getCheckResponseResult(scanCodeURLRequest,ScanCodeURLResponse.class,  RequestUrl.R_78, ScanCodeURLResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -544,13 +571,13 @@ public class PinganRequestApiComponents {
      * @param acceptRequest
      * @return
      */
-    public AcceptResponse accept(AcceptRequest acceptRequest) throws Exception {
+    public AcceptResponse accept(AcceptRequest acceptRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(acceptRequest);
         //验证出参数据
         AcceptResponse acceptResponse=null;
         try {
-            acceptResponse = (AcceptResponse)getCheckResponseResult(acceptRequest,AcceptResponse.class, RequestUrl.R_82, AcceptResponseCodeEnum.class);
+            acceptResponse = (AcceptResponse)getCheckResponseResult(acceptRequest,AcceptResponse.class, RequestUrl.R_82, AcceptResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -570,33 +597,13 @@ public class PinganRequestApiComponents {
      * @param documentStatusListRequest
      * @return
      */
-    public DocumentStatusListResponse getDocumentStatusList(DocumentStatusListRequest documentStatusListRequest) throws Exception {
-        //签名加密
-        Map<String, String> params = new TreeMap<>();
-        params.put("userId", documentStatusListRequest.getUserId());
-        //documentNoList排序加逗号拼接
-        String[] documentNoList = documentStatusListRequest.getDocumentNoList();
-        TreeSet<String> treeSet = new TreeSet<>();
-        for (String documentNo : documentNoList) {
-            treeSet.add(documentNo);
-        }
-        String documentNoListStr = "";
-        for (String documentNoSort : treeSet) {
-            documentNoListStr += ",";
-        }
-        params.put("documentNoList", documentNoListStr.substring(0, documentNoListStr.length() - 1));
-        //添加加密内容
-        logger.info("加密前的内容" + params.toString());
-        //添加加密内容
-        String encryptContent = RSAPINGANUtils.getStringStringMap(params, properties.getSelfPrivateKey());
-        logger.info("加密后的内容" + encryptContent);
-        documentStatusListRequest.setSignature(encryptContent);
+    public DocumentStatusListResponse getDocumentStatusList(DocumentStatusListRequest documentStatusListRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(documentStatusListRequest);
         //验证出参数据
         DocumentStatusListResponse documentStatusListResponse=null;
         try {
-            documentStatusListResponse = (DocumentStatusListResponse)getCheckResponseResult(documentStatusListRequest,DocumentStatusListResponse.class, RequestUrl.R_91, DocumentStatusListResponseCodeEnum.class);
+            documentStatusListResponse = (DocumentStatusListResponse)getCheckResponseResult(documentStatusListRequest,DocumentStatusListResponse.class, RequestUrl.R_91, DocumentStatusListResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -610,13 +617,13 @@ public class PinganRequestApiComponents {
      * @param repealDocumentRequest
      * @return
      */
-    public RepealDocumentResponse repealDocument(RepealDocumentRequest repealDocumentRequest) throws Exception {
+    public RepealDocumentResponse repealDocument(RepealDocumentRequest repealDocumentRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(repealDocumentRequest);
         //验证出参数据
         RepealDocumentResponse repealDocumentResponse=null;
         try {
-            repealDocumentResponse = (RepealDocumentResponse)getCheckResponseResult(repealDocumentRequest,RepealDocumentResponse.class, RequestUrl.R_92, RepealDocumentResponseCodeEnum.class);
+            repealDocumentResponse = (RepealDocumentResponse)getCheckResponseResult(repealDocumentRequest,RepealDocumentResponse.class, RequestUrl.R_92, RepealDocumentResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
@@ -630,16 +637,280 @@ public class PinganRequestApiComponents {
      * @param uploadFilesRequest
      * @return
      */
-    public UploadFilesResponse uploadFiles(UploadFilesRequest uploadFilesRequest) throws Exception {
+    public UploadFilesResponse uploadFiles(UploadFilesRequest uploadFilesRequest,PinganApiLog pinganApiLog) throws Exception {
         //验证入参数据
         checkRequestParams(uploadFilesRequest);
         //验证出参数据
         UploadFilesResponse uploadFilesResponse=null;
         try {
-            uploadFilesResponse = (UploadFilesResponse)getCheckResponseResult(uploadFilesRequest,UploadFilesResponse.class,  RequestUrl.R_93, UploadFilesResponseCodeEnum.class);
+            uploadFilesResponse = (UploadFilesResponse)getCheckResponseResult(uploadFilesRequest,UploadFilesResponse.class,  RequestUrl.R_93, UploadFilesResponseCodeEnum.class,pinganApiLog);
         }catch (Exception e){
             throw new SystemException(e.getMessage());
         }
         return uploadFilesResponse;
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/22 17:08
+     *  @Description:  65 查看电子保单的H5页面
+     */
+    public SignEleApplyResponse signEleApply(SignEleApplyRequest signEleApplyRequest,PinganApiLog pinganApiLog) throws Exception {
+        //验证入参数据
+        checkRequestParams(signEleApplyRequest);
+        //验证出参数据
+        SignEleApplyResponse signEleApplyResponse=null;
+        try {
+            signEleApplyResponse = (SignEleApplyResponse)getCheckResponseResult(signEleApplyRequest,SignEleApplyResponse.class,  RequestUrl.R_65, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return signEleApplyResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/22 17:08
+     *  @Description:  63 短信验证
+     */
+    public ApplyVerifyCodeResponse getApplyVerifyCode(ApplyVerifyCodeRequest applyVerifyCodeRequest,PinganApiLog pinganApiLog) throws Exception {
+        //验证入参数据
+        checkRequestParams(applyVerifyCodeRequest);
+        //验证出参数据
+        ApplyVerifyCodeResponse applyVerifyCodeResponse=null;
+        try {
+            applyVerifyCodeResponse = (ApplyVerifyCodeResponse)getCheckResponseResult(applyVerifyCodeRequest,ApplyVerifyCodeResponse.class,  RequestUrl.R_63, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return applyVerifyCodeResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/22 17:08
+     *  @Description:  65 电子保单是否阅读
+     */
+    public RecoverApplyVerifyCodeResponse recoverApplyVerifyCode(RecoverApplyVerifyCodeRequest recoverApplyVerifyCodeRequest,PinganApiLog pinganApiLog) throws Exception {
+        //验证入参数据
+        checkRequestParams(recoverApplyVerifyCodeRequest);
+        //验证出参数据
+        RecoverApplyVerifyCodeResponse recoverApplyVerifyCodeResponse=null;
+        try {
+            recoverApplyVerifyCodeResponse = (RecoverApplyVerifyCodeResponse)getCheckResponseResult(recoverApplyVerifyCodeRequest,RecoverApplyVerifyCodeResponse.class,  RequestUrl.R_64, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return recoverApplyVerifyCodeResponse;
+    }
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/7/22 15:40
+    *  @Description:  生成通知单号
+    */
+    public NoticeDoResponse createNoticeNo(NoticeDoRequest noticeDoRequest,PinganApiLog pinganApiLog) throws Exception {
+        //验证入参数据
+        checkRequestParams(noticeDoRequest);
+        //验证出参数据
+        NoticeDoResponse noticeDoResponse=null;
+        try {
+            noticeDoResponse = (NoticeDoResponse)getCheckResponseResult(noticeDoRequest,NoticeDoResponse.class,  RequestUrl.R_72, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return noticeDoResponse;
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/22 19:04
+     *  @Description: 好车主支付
+     */
+    public ViewToPayResponse viewToPay(ViewToPayRequest viewToPayRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(viewToPayRequest);
+        //验证出参数据
+        ViewToPayResponse viewToPayResponse=null;
+        try {
+            viewToPayResponse = (ViewToPayResponse)getCheckResponseResult(viewToPayRequest,ViewToPayResponse.class,  RequestUrl.R_71, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return viewToPayResponse;
+    }
+    /**
+     *  @version 
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 获取平安门店柜面信息
+     */ 
+    public StorefrontResponse getStorefrontList(StorefrontRequest storefrontRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(storefrontRequest);
+        //验证出参数据
+        StorefrontResponse storefrontResponse=null;
+        try {
+            storefrontResponse = (StorefrontResponse)getCheckResponseResult(storefrontRequest,StorefrontResponse.class,  RequestUrl.R_67, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return storefrontResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 查询事后未上传资料清单
+     */
+    public SupplementMaterialResponse querySupplementMaterial(SupplementMaterialRequest supplementMaterialRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(supplementMaterialRequest);
+        //验证出参数据
+        SupplementMaterialResponse supplementMaterialResponse=null;
+        try {
+            supplementMaterialResponse = (SupplementMaterialResponse)getCheckResponseResult(supplementMaterialRequest,SupplementMaterialResponse.class,  RequestUrl.R_94, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return supplementMaterialResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 短信验证 全国
+     */
+    public SendApplyPolicyResponse sendApplyPolicy(SendApplyPolicyRequest sendApplyPolicyRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(sendApplyPolicyRequest);
+        //验证出参数据
+        SendApplyPolicyResponse sendApplyPolicyResponse=null;
+        try {
+            sendApplyPolicyResponse = (SendApplyPolicyResponse)getCheckResponseResult(sendApplyPolicyRequest,SendApplyPolicyResponse.class,  RequestUrl.R_67, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return sendApplyPolicyResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 身份验证  67
+     */
+    public BeiJingIdAcquisitionResponse beiJingIdAcquisition(BeiJingIdAcquisitionRequest beiJingIdAcquisitionRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(beiJingIdAcquisitionRequest);
+        //验证出参数据
+        BeiJingIdAcquisitionResponse beiJingIdAcquisitionResponse=null;
+        try {
+            beiJingIdAcquisitionResponse = (BeiJingIdAcquisitionResponse)getCheckResponseResult(beiJingIdAcquisitionRequest,BeiJingIdAcquisitionResponse.class,  RequestUrl.R_67, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return beiJingIdAcquisitionResponse;
+    }
+
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 平安新CPC收银台 7.10
+     */
+    public ChexianStandardPrePaymentResponse chexianStandardPrePayment(ChexianStandardPrePaymentRequest chexianStandardPrePaymentRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(chexianStandardPrePaymentRequest);
+        //验证出参数据
+        ChexianStandardPrePaymentResponse chexianStandardPrePaymentResponse=null;
+        try {
+            chexianStandardPrePaymentResponse = (ChexianStandardPrePaymentResponse)getCheckResponseResult(chexianStandardPrePaymentRequest,ChexianStandardPrePaymentResponse.class,  RequestUrl.R_710, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return chexianStandardPrePaymentResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 支付实名认证建议在noticeDo接口进行  73
+     */
+    public NoticeAuthResponse noticeAuth(NoticeAuthRequest noticeAuthRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(noticeAuthRequest);
+        //验证出参数据
+        NoticeAuthResponse noticeAuthResponse=null;
+        try {
+            noticeAuthResponse = (NoticeAuthResponse)getCheckResponseResult(noticeAuthRequest,NoticeAuthResponse.class,  RequestUrl.R_73, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return noticeAuthResponse;
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 支付之前查询通知单内容  74
+     */
+    public GetNoticeInfoResponse getNoticeInfo(GetNoticeInfoRequest getNoticeInfoRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(getNoticeInfoRequest);
+        //验证出参数据
+        GetNoticeInfoResponse getNoticeInfoResponse=null;
+        try {
+            getNoticeInfoResponse = (GetNoticeInfoResponse)getCheckResponseResult(getNoticeInfoRequest,GetNoticeInfoResponse.class,  RequestUrl.R_74, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return getNoticeInfoResponse;
+    }
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 支付到账通知平安 75
+     */
+    public NoticeDoneResponse noticeDone(NoticeDoneRequest noticeDoneRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(noticeDoneRequest);
+        //验证出参数据
+        NoticeDoneResponse noticeDoneResponse=null;
+        try {
+            noticeDoneResponse = (NoticeDoneResponse)getCheckResponseResult(noticeDoneRequest,NoticeDoneResponse.class,  RequestUrl.R_75, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return noticeDoneResponse;
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 10:56
+     *  @Description: 获取微信缴费实名认证结果  79
+     */
+    public GetWechatAuthInfoResponse getWechatAuthInfo(GetWechatAuthInfoRequest getWechatAuthInfoRequest,PinganApiLog pinganApiLog) {
+        //验证入参数据
+        checkRequestParams(getWechatAuthInfoRequest);
+        //验证出参数据
+        GetWechatAuthInfoResponse getWechatAuthInfoResponse=null;
+        try {
+            getWechatAuthInfoResponse = (GetWechatAuthInfoResponse)getCheckResponseResult(getWechatAuthInfoRequest,GetWechatAuthInfoResponse.class,  RequestUrl.R_79, NoticeResponseCodeEnum.class,pinganApiLog);
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+        return getWechatAuthInfoResponse;
+    }
 }

+ 0 - 1
src/main/java/com/ydtech/modules/order/controller/OrderTaskImageController.java

@@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotBlank;
 import java.io.IOException;
 import java.util.Base64;

+ 284 - 48
src/main/java/com/ydtech/modules/order/controller/PingAnOrderApiController.java

@@ -7,22 +7,24 @@ 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.api.pingan.request.*;
 import com.ydtech.modules.order.entity.api.pingan.response.UnAutoProductDetailResponse;
+import com.ydtech.modules.order.entity.api.zijin.request.SubmitVerifyRequest;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
+import com.ydtech.modules.order.entity.vo.InsDrivingIntentionInsuranceVo;
+import com.ydtech.modules.order.entity.vo.SpecialAuditVo;
 import com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
-import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
+import com.ydtech.modules.order.entity.vo.pingan.InsDrivingIntentionInsuranceSonVo;
 import com.ydtech.modules.order.entity.vo.pingan.PingAnQuoteVo;
+import com.ydtech.modules.order.entity.vo.pingan.RenewalConfirmVo;
+import com.ydtech.modules.order.entity.vo.pingan.StorefrontQueryVo;
 import com.ydtech.modules.order.service.PingAnOrderApiService;
 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 org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
@@ -38,85 +40,319 @@ public class PingAnOrderApiController {
 
     private final InsOrdersComponents insOrdersComponents;
 
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 测试通过
+     */
     @QuoteVerification("报价授权")
     @PostMapping("/quote")
-    @ApiOperation("报价")
-    public HttpResult<QuoteRespVo> quote(@RequestBody PingAnQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo) throws Exception {
+    @ApiOperation("1报价-标的查询-车型查询-车辆确认-报价")
+    public HttpResult<QuoteRespVo> quote(@RequestBody PingAnQuoteVo<InsDrivingIntentionInsuranceSonVo> quoteVo) throws Exception {
         BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
         return this.pingAnOrderApiService.quote(quoteInfo, quoteVo);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 测试通过
+     */
+    @PostMapping("/productQuery")
+    @ApiOperation("1报价-获取财意险险种套餐列表")
+    public HttpResult<Map<String,Object>> productQuery(@RequestBody ProductDetailsRequest productDetailsRequest) throws Exception {
+        return this.pingAnOrderApiService.productQuery(productDetailsRequest);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  测试通过
+     */
+    @PostMapping("/productDetailsQuery")
+    @ApiOperation("1报价-获取财意险险种套餐责任信息")
+    public HttpResult<List<UnAutoProductDetailResponse.UnAutoProductDetailsDTO>> productDetailsQuery(@RequestBody ProductDetailsQueryVo productDetailsQueryVo) throws Exception {
+        return this.pingAnOrderApiService.productDetailsQuery(productDetailsQueryVo);
+    }
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 可以上传文件
+     */
     @PostMapping(value = "/submitImage")
-    @ApiOperation(value = "提交影像信息")
+    @ApiOperation(value = "2核保-提交影像信息")
     public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
         return this.pingAnOrderApiService.submitImage(companyId);
     }
 
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 测试通过
+     */
     @AuditVerification("核保")
     @PostMapping(value = "/audit")
-    @ApiOperation(value = "提交核保")
-    public HttpResult<Object> audit(@RequestBody BaseQuoteInfoVo quoteInfo) throws Exception {
-        return this.pingAnOrderApiService.audit(quoteInfo);
+    @ApiOperation(value = "2核保-提交核保")
+    public HttpResult<Object> audit(@RequestBody SpecialAuditVo<SubmitVerifyRequest.EngageListDTO> specialAudit) throws Exception {
+        return this.pingAnOrderApiService.audit(specialAudit);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 2核保-核保状态查询
+     */
+    @PostMapping("/auditStatusQuery")
+    @ApiOperation(value = "2核保-核保状态查询")
+    public HttpResult<Object> auditStatusQuery(String companyId) throws Exception {
+        return this.pingAnOrderApiService.auditStatusQuery(companyId);
     }
 
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  测试通过
+     */
+    @GetMapping("/signEleApply")
+    @ApiOperation(value = "3投保单签署署(缴费前必须调用移动端电子投保单签署)")
+    public HttpResult<Object> signEleApply(String companyId) throws Exception {
+        return this.pingAnOrderApiService.signEleApply(companyId);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  测试通过
+     */
+    @GetMapping("/getApplyVerifyCodeAndRecoverApplyVerifyCode")
+    @ApiOperation(value = "4短信发送")
+    public HttpResult<Object> getApplyVerifyCodeAnd(String companyId) throws Exception {
+        return this.pingAnOrderApiService.getApplyVerifyCode(companyId);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  测试通过
+     */
+    @PostMapping("/recoverApplyVerifyCode")
+    @ApiOperation(value = "5短信回收阅读状态")
+    public HttpResult<Object> recoverApplyVerifyCode(String companyId,String msgCode) throws Exception {
+        return this.pingAnOrderApiService.recoverApplyVerifyCode(companyId,msgCode);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  测试通过
+     */
+    @PostMapping("/createNotice")
+    @ApiOperation(value = "6获取支付通知单号-生成支付链接")
+    public HttpResult<Object> createNotice(String companyId) throws Exception {
+        return this.pingAnOrderApiService.createNotice(companyId);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  无法测试
+     */
+    @PostMapping("/payReturn")
+    @ApiOperation(value = "7支付回调-更新承保状态")
+    public HttpResult<Object> payReturn(PayReturnRequest payReturnRequest) throws Exception {
+        return this.pingAnOrderApiService.payReturn(payReturnRequest);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 查看电子保单
+     */
     @PostMapping("/getPolicyPrint")
-    @ApiOperation(value = "电子保单")
-    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+    @ApiOperation(value = "8电子保单查看")
+    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(String companyId) throws Exception {
         return this.pingAnOrderApiService.getPolicyPrint(companyId);
     }
-
     @PostMapping("/getOrderDetail")
-    @ApiOperation(value = "订单状态查询")
-    public HttpResult<Object> getOrderDetail(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
-        return this.pingAnOrderApiService.getOrderDetail(companyId);
+    @ApiOperation(value = "9订单状态查询")
+    public HttpResult<Object> getOrderDetail(String companyId) throws Exception {
+        return this.pingAnOrderApiService.getDocumentStatusList(companyId);
     }
-
-    @PostMapping("/auditStatusQuery")
-    @ApiOperation(value = "核保状态查询")
-    public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
-        return this.pingAnOrderApiService.auditStatusQuery(companyId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 未跑通
+     *  @ todo
+     */
+    @PostMapping("/renewalConfirm")
+    @ApiOperation("10续保")
+    public HttpResult<Object> renewalConfirm(@RequestBody RenewalConfirmVo renewalConfirmVo) throws Exception {
+        return this.pingAnOrderApiService.renewalConfirm(renewalConfirmVo);
     }
-
-    @PostMapping("/productQuery")
-    @ApiOperation("获取财意险险种套餐列表")
-    public HttpResult<Map<String,Object>> productQuery(@RequestBody ProductQueryVo productQueryVo) throws Exception {
-        return this.pingAnOrderApiService.productQuery(productQueryVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  测试通过
+     */
+    @PostMapping("/repealDocument")
+    @ApiOperation("11撤销单证")
+    public HttpResult<Object> repealDocument(String companyId,String documentType) throws Exception {
+        return this.pingAnOrderApiService.repealDocument(companyId,documentType);
     }
-
-    @PostMapping("/renewalConfirm")
-    @ApiOperation("续保")
-    public HttpResult<Object> renewalConfirm(@RequestBody PingAnQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo,BaseQuoteInfoVo quoteInfo) throws Exception {
-        return this.pingAnOrderApiService.renewalConfirm(quoteVo,quoteInfo);
+    //========================================以下接口暂未使用后期可能使用=======================================
+    /**
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 9:33
+     *  @Description: 查询事后未上传资料清单
+     *  todo
+     */
+    @PostMapping("/querySupplementMaterial")
+    @ApiOperation(value = "查询事后未上传资料清单")
+    public HttpResult<Object> querySupplementMaterial(String  companyId) throws Exception {
+        return this.pingAnOrderApiService.querySupplementMaterial(companyId);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 9:33
+     *  @Description: 获取核保时门店自取信息 未测试
+     *  @ todo
+     */
+    @PostMapping("/getStorefrontList")
+    @ApiOperation(value = "获取核保时门店自取信息 2 ")
+    public HttpResult<Object> getStorefrontList(StorefrontQueryVo storefrontQueryVo) throws Exception {
+        return this.pingAnOrderApiService.getStorefrontList(storefrontQueryVo);
     }
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description: 测试通过
+     */
     @PostMapping("/queryServiceContract")
     @ApiOperation("服务类特约检索")
     public HttpResult<Object> queryServiceContract(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
         return this.pingAnOrderApiService.queryServiceContract(companyId);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/22 18:51
+     *  @Description: 好车主支付   和二微码支付一样   暂不使用
+     */
+    @PostMapping("/viewToPay")
+    @ApiOperation(value = "获取支付通知单号")
+    public HttpResult<Object> viewToPay(String companyId) throws Exception {
+        return this.pingAnOrderApiService.viewToPay(companyId);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 9:33
+     *  @Description: 全国短信验证   暂时没用
+     */
+    @PostMapping("/sendApplyPolicy")
+    @ApiOperation(value = "全国短信验证")
+    public HttpResult<Object> sendApplyPolicy(String  companyId,String moblePhone) throws Exception {
+        return this.pingAnOrderApiService.sendApplyPolicy(companyId,moblePhone);
+    }
 
-    @PostMapping("/getDocumentStatusList")
-    @ApiOperation("单证状态查询")
-    public HttpResult<Object> getDocumentStatusList(@RequestBody PingAnQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo) throws Exception {
-        return this.pingAnOrderApiService.getDocumentStatusList(quoteVo);
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/7/23 14:03
+    *  @Description: 平安新CPC收银台 7.10  暂时没用
+    */
+    @PostMapping("/chexianStandardPrePayment")
+    @ApiOperation(value = "平安新CPC收银台 7.10")
+    public HttpResult<Object> chexianStandardPrePayment(ChexianStandardPrePaymentRequest chexianStandardPrePaymentRequest) throws Exception {
+        return this.pingAnOrderApiService.chexianStandardPrePayment(chexianStandardPrePaymentRequest);
     }
 
-    @PostMapping("/repealDocument")
-    @ApiOperation("撤销单证")
-    public HttpResult<Object> repealDocument(@RequestBody PingAnQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo) throws Exception {
-        return this.pingAnOrderApiService.repealDocument(quoteVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 14:03
+     *  @Description: 身份验证  暂时没用
+     */
+    @PostMapping("/beiJingIdAcquisition")
+    @ApiOperation(value = "身份验证")
+    public HttpResult<Object> beiJingIdAcquisition(String  companyId) throws Exception {
+        return this.pingAnOrderApiService.beiJingIdAcquisition(companyId);
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 14:03
+     *  @Description: 支付实名认证建议在noticeDo接口进行 暂时没用
+     */
+    @PostMapping("/noticeAuth")
+    @ApiOperation(value = "支付实名认证建议在noticeDo接口进行  73")
+    public HttpResult<Object> noticeAuth(NoticeAuthRequest noticeAuthRequest) throws Exception {
+        return this.pingAnOrderApiService.noticeAuth(noticeAuthRequest);
     }
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 14:03
+     *  @Description: 支付之前查询通知单内容  74  暂时没用
+     */
+    @PostMapping("/getNoticeInfo")
+    @ApiOperation(value = "支付之前查询通知单内容  74")
+    public HttpResult<Object> getNoticeInfo(GetNoticeInfoRequest getNoticeInfoRequest) throws Exception {
+        return this.pingAnOrderApiService.getNoticeInfo(getNoticeInfoRequest);
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 14:03
+     *  @Description: 支付到账通知平安 75  暂时没用
+     */
+    @PostMapping("/noticeDone")
+    @ApiOperation(value = "支付到账通知平安 75")
+    public HttpResult<Object> noticeDone(NoticeDoneRequest noticeDoneRequest) throws Exception {
+        return this.pingAnOrderApiService.noticeDone(noticeDoneRequest);
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 14:03
+     *  @Description: 身份验证  暂时没用
+     */
+    @PostMapping("/getWechatAuthInfo")
+    @ApiOperation(value = "获取微信缴费实名认证结果  79")
+    public HttpResult<Object> getWechatAuthInfo(GetWechatAuthInfoRequest getWechatAuthInfoRequest) throws Exception {
+        return this.pingAnOrderApiService.getWechatAuthInfo(getWechatAuthInfoRequest);
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/23 18:46
+     *  @Description:  上海车辆使用
+     */
     @PostMapping("/getDmvehicleInfo")
     @ApiOperation("获取交管车辆验证码")
-    public HttpResult<Object> getDmvehicleInfo(@RequestBody PingAnQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo, BaseQuoteInfoVo quoteInfo) throws Exception {
+    public HttpResult<Object> getDmvehicleInfo(@RequestBody PingAnQuoteVo<List<InsDrivingIntentionInsuranceVo>> quoteVo, BaseQuoteInfoVo quoteInfo) throws Exception {
         return this.pingAnOrderApiService.getDmvehicleInfo(quoteVo,quoteInfo);
     }
 
-    @PostMapping("/productDetailsQuery")
-    @ApiOperation("获取财意险险种套餐责任信息")
-    public HttpResult<List<UnAutoProductDetailResponse.UnAutoProductDetailsDTO>> productDetailsQuery(@RequestBody ProductDetailsQueryVo productDetailsQueryVo) throws Exception {
-        return this.pingAnOrderApiService.productDetailsQuery(productDetailsQueryVo);
-    }
+
 }

+ 19 - 0
src/main/java/com/ydtech/modules/order/dao/PinganApiLogMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.order.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.order.entity.api.pingan.log.PinganApiLog;
+
+
+/**
+* @author Administrator
+* @description 针对表【pingan_api_log】的数据库操作Mapper
+* @createDate 2024-07-25 18:46:04
+* @Entity generator.domain.PinganApiLog
+*/
+public interface PinganApiLogMapper extends BaseMapper<PinganApiLog> {
+
+}
+
+
+
+

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

@@ -457,7 +457,17 @@ public class InsAreaCompany implements Serializable {
 
     @TableField(exist = false)
     private String rejectinfo;
+    /***
+     *  平安流程id
+     */
+    @TableField("flowid")
+    private String flowid;
 
+    /***
+     *  平安通知单号
+     */
+    @TableField("notice_no")
+    private String noticeNo;
     /**
      * 非车信息
      */

+ 77 - 1
src/main/java/com/ydtech/modules/order/entity/InsDrivingIntentionInsuranceSon.java

@@ -56,6 +56,82 @@ public class InsDrivingIntentionInsuranceSon implements Serializable {
      */
     @TableField(value = "premium")
     private String premium;
-    
 
+
+    // 平安 add by  hxl  2024-07-18
+    /***
+     * 折扣
+     * m
+     */
+    @TableField(exist =false)
+    private String discount;
+
+    /***
+     * 保费说明
+     * 每份保费或每份保费*座位数
+     * m
+     */
+    @TableField(exist =false)
+    private String insuredAmountTips;
+    /***
+     * 最小投保年龄
+     * m
+     */
+    @TableField(exist =false)
+    private String leastAcceptInsureAge;
+    /***
+     * 最大投保年龄
+     * m
+     */
+    @TableField(exist =false)
+    private String topAcceptInsureAge;
+
+    /***
+     * 版本号
+     * m
+     */
+    @TableField(exist =false)
+    private String version;
+    /***
+     * 最大可购买份数
+     * m
+     */
+    @TableField(exist =false)
+    private String sellListSize;
+    /***
+     *  组合产品标识
+     *   02-组合必选
+     * 01-不可单独销售
+     */
+    @TableField(exist =false)
+    private String  combineProductType;
+
+    /***
+     * 产品编码
+     * m
+     */
+    @TableField(exist =false)
+    private String productCode;
+
+    public InsDrivingIntentionInsuranceSon() {
+    }
+
+    public InsDrivingIntentionInsuranceSon(Integer id, String drivingCodeId, String companyId, String code, String name, String amount, String premium,
+    String discount,String insuredAmountTips,String leastAcceptInsureAge,String topAcceptInsureAge,String version,String sellListSize,String combineProductType,String productCode) {
+        this.id = id;
+        this.drivingCodeId = drivingCodeId;
+        this.companyId = companyId;
+        this.code = code;
+        this.name = name;
+        this.amount = amount;
+        this.premium = premium;
+        this.discount = discount;
+        this.insuredAmountTips = insuredAmountTips;
+        this.leastAcceptInsureAge = leastAcceptInsureAge;
+        this.topAcceptInsureAge = topAcceptInsureAge;
+        this.version = version;
+        this.sellListSize = sellListSize;
+        this.combineProductType = combineProductType;
+        this.productCode = productCode;
+    }
 }

+ 24 - 5
src/main/java/com/ydtech/modules/order/entity/InsOrders.java

@@ -17,7 +17,6 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
-import com.ydtech.modules.order.entity.api.zijin.constants.enums.RiskCodeEnum;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
@@ -25,9 +24,8 @@ import lombok.*;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 保险订单表
@@ -341,7 +339,7 @@ public class InsOrders implements Serializable {
      * @param risks 主险种
      * @param kinds 商业险险种
      */
-    private void insuranceInformation(List<RiskInfoVo> risks, List<KindInfoVo> kinds) {
+    public void insuranceInformation(List<RiskInfoVo> risks, List<KindInfoVo> kinds) {
         for (RiskInfoVo riskInfoVo : risks) {
             if (InsuranceRisk.TRAFFIC.getCode().equals(riskInfoVo.getRiskCode())) { //交强
                 this.setJqstartdate(riskInfoVo.getStartDate());
@@ -384,5 +382,26 @@ public class InsOrders implements Serializable {
         this.setProduct(productsType.getDesc());
     }
 
-
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/7/17 17:15
+    *  @Description:  判断是否投保交强和商业险
+    */
+   public HashMap<String,Boolean> insuranceInformationFlag(List<RiskInfoVo> risks) {
+        HashMap<String,Boolean> map=new HashMap<String,Boolean>();
+        Boolean jqFlag=false;
+        Boolean syFlag=false;
+        for (RiskInfoVo riskInfoVo : risks) {
+            if (InsuranceRisk.TRAFFIC.getCode().equals(riskInfoVo.getRiskCode())) {
+                jqFlag=true;
+            }
+            if (InsuranceRisk.BUSINESS.getCode().equals(riskInfoVo.getRiskCode())) {
+                syFlag=true;
+            }
+        }
+        map.put("jqFlag",jqFlag);
+        map.put("syFlag",syFlag);
+        return map;
+    }
 }

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

@@ -18,7 +18,7 @@ public enum ResultCode {
     RC_A1("A1", "发生重复投保"),
     RC_A2("A2", "拒保不可申诉"),
     RC_A3("A3", "拒保可申诉"),
-    RC_A4("A4", "待人工审核(非标件)"),
+    RC_A4("A4", "待人工审核(非标件)"),//待核保
     RC_A6("A6", "核保失败"),
     RC_B0("B0", "出单失败"),
     RC_B3("B3", "待承保"),

+ 25 - 5
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/RequestUrl.java

@@ -25,20 +25,40 @@ public enum RequestUrl {
     R_44("44", "/property/chexian/insure/getUnAutoProductList", "获取财意险险种套餐列表"),
     R_45("45", "/property/chexian/insure/getUnAutoProductDetail", "获取财意险险种套餐责任信息"),
     R_51("51", "/property/chexian/insure/quote", "保费计算"),
+
     R_52("52", "/property/chexian/insure/queryServiceContract", "服务类特约检索"),
     R_61("61", "/property/chexian/insure/submitApply", "补充信息并核保"),
-    R_78("78", "/property/getScanCodeURL", "二维码支付"),
-    R_82("82", "/property/chexian/insure/accept", "承保接口"),
+    R_67("67", "/property/getStorefrontList", "获取平安门店柜面信息"),
     R_91("91", "/property/chexian/insure/getDocumentStatusList", "单证状态查询"),
+
     R_92("92", "/property/chexian/insure/repealDocument", "撤销单证"),
+    R_82("82", "/property/chexian/insure/accept", "承保接口"),
+
     R_93("93", "/property/chexian/insure/uploadFiles", "资料上传"),
+    R_94("94", "/property/chexian/insure/querySupplementMaterial", "查询事后未上传资料清单"),
 
-    //=====================支付相关接口 不确定是否在系统中支付先不对接=====================
 
+    //=====================支付相关接口 =====================
+    R_65("65", "/property/chexian/insure/signEleApply", "移动端电子投保单签署"),
+    R_66("66", "/property/chexian/insure/sendApplyPolicy", "全国版电子投保单h5链接短信发送"),
     R_63("63", "/property/chexian/insure/getApplyVerifyCode", "投保短信发送 (获取验证码)"),
     R_64("64", "/property/chexian/insure/recoverApplyVerifyCode", "短信验证码回收及“阅读状态回收”"),
-    R_65("65", "/property/chexian/insure/signEleApply", "移动端电子投保单签署"),
-    R_72("72", "/property/chexian/insure/noticeDo", "生成支付通知单号");
+    R_62("62", "/property/chexian/insure/beiJingIdAcquisition", "北京机构&&投保人或被保人个团标示为个人身份采集"),
+    R_72("72", "/property/chexian/insure/noticeDo", "生成支付通知单号"),
+
+
+    //==============平安新CPC收银台
+    R_710("710", "/property/chexian/insure/chexianStandardPrePayment", "平安新CPC收银台"),
+    R_78("78", "/property/getScanCodeURL", "二维码支付"),
+
+    //============== 好车主支付
+    R_71("71", "/property/chexian/insure/viewToPay", "好车主支付"),
+
+    //===========================对账结算保费
+    R_73("73", "/property/chexian/insure/noticeAuth", "未使用平安收银台时合作伙伴通过对账结算保费支付实名认证建议在noticeDo接口进行"),
+    R_74("74", "/property/chexian/insure/getNoticeInfo", "支付之前查询通知单内容"),
+    R_75("75", "/property/chexian/insure/noticeDone", "未使用平安收银台时合作伙伴通过对账结算保费支付到账通知平安"),
+    R_79("79", "/property/chexian/insure/getWechatAuthInfo", "未使用平安收银台时合作伙伴通过对账结算保费获取微信缴费实名认证结果");
 
     /**
      * 接口api序号

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/LicenseTypeCodeEnum.java

@@ -58,8 +58,8 @@ public enum LicenseTypeCodeEnum {
     LICENSE_TYPE_CODE_MSG_11("11","境外摩托车"),
     LICENSE_TYPE_CODE_MSG_12("12","外籍摩托车"),
     LICENSE_TYPE_CODE_MSG_13("13","农用运输车"),
-    LICENSE_TYPE_CODE_MSG_14("14","拖拉机 "),
-    LICENSE_TYPE_CODE_MSG_15("15","挂车  "),
+    LICENSE_TYPE_CODE_MSG_14("14","拖拉机"),
+    LICENSE_TYPE_CODE_MSG_15("15","挂车"),
     LICENSE_TYPE_CODE_MSG_16("16","教练汽车"),
     LICENSE_TYPE_CODE_MSG_17("17","教练摩托车"),
     LICENSE_TYPE_CODE_MSG_18("18","试验汽车"),

+ 38 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/SexCodeEnum.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.order.entity.api.pingan.constants.dict;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/17 17:20
+ *  @Description: 性别枚举
+ */
+@AllArgsConstructor
+@Getter
+public enum SexCodeEnum {
+
+    SEX_CODE_MSG_01("M","男"),
+    SEX_CODE_MSG_02("F","女");
+    /**
+     * 编码
+     */
+    private final String code;
+    /**
+     * 描述
+     */
+    private final String msg;
+
+    //根据name获取对应的code
+    public static String getCode(String name){
+        SexCodeEnum[] values = values();
+        for(SexCodeEnum type:values){
+            if(type.msg.equals(name)){
+                return type.code;
+            }
+        }
+        return null;
+    }
+
+}

+ 72 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/document/PingAnDocumentClassEnum.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.order.entity.api.pingan.constants.dict.document;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: TODO
+ * @author: wenks
+ * @date: 2024/3/8 11:31
+ **/
+@AllArgsConstructor
+@Getter
+public enum PingAnDocumentClassEnum {
+
+    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", "新车合格证", "T04", "TAR02"),
+    GC00("GC00", "购车发票", "T30", "LOC01"),
+    GX00("GX00", "关系证明", "T31", "AC04"),
+
+    C01("C01", "行驶证正面", "T04", "TAR04"),
+    D01("D01", "行驶证反面", "T04", "TAR04"),
+
+    C02("C02", "车主身份证正面", "T03", "001"),
+    D02("D02", "车主身份证反面", "T03", "001"),
+
+    C03("C03", "投保人身份证正面", "T01", "001"),
+    D03("D03", "投保人身份证反面", "T01", "001"),
+
+    C04("C04", "被保人身份证正面", "T02", "001"),
+    D04("D04", "被保人身份证反面", "T02", "001");
+
+
+    private final String code;
+
+    private final String desc;
+
+    // 大类
+    private final String document;
+
+    // 小类
+    private final String documentType;
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/25 14:17
+     *  @Description:  转换文件类型
+     */
+    public static PingAnDocumentClassEnum getCode(String code){
+        PingAnDocumentClassEnum[] values = values();
+        for(PingAnDocumentClassEnum type:values){
+            if(type.code.equals(code)){
+                return type;
+            }
+        }
+        return null;
+    }
+
+
+}

+ 44 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/dict/document/ProofRelationshipCodeEnum.java

@@ -0,0 +1,44 @@
+package com.ydtech.modules.order.entity.api.pingan.constants.dict.document;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/11 16:11
+ *  @Description: 标的证明文件类型枚举
+ * T31	投车关系证明	AC01	户口本
+ * 		AC02	结婚证
+ * 		AC03	营业执照
+ * 		AC04	其他
+ * 		AC05	授权委托书
+ * 		OT99	其他(可手写)
+ */
+@AllArgsConstructor
+@Getter
+public enum ProofRelationshipCodeEnum {
+
+    PROOF_RELATIONSHIP_CODE_AC_01("T31","投车关系证明","AC01","户口本"),
+    PROOF_RELATIONSHIP_CODE_AC_02("T31","投车关系证明","AC02","结婚证"),
+    PROOF_RELATIONSHIP_CODE_AC_03("T31","投车关系证明","AC03","营业执照"),
+    PROOF_RELATIONSHIP_CODE_AC_04("T31","投车关系证明","AC04","其他"),
+    PROOF_RELATIONSHIP_CODE_AC_05("T31","投车关系证明","AC05","授权委托书"),
+    PROOF_RELATIONSHIP_CODE_OT_99("T31","投车关系证明","OT99","其他(可手写)");
+    /**
+     * 编码
+     */
+    private final String documentClass;
+    /**
+     * 描述
+     */
+    private final String documentName;
+    /**
+     * 描述
+     */
+    private final String documentType;
+    /**
+     * 描述
+     */
+    private final String documentTypeName;
+}

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/notice/NoticeResponseCodeEnum.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.api.pingan.constants.notice;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 15:43
+ *  @Description:  生成通知到的异常
+ */
+@AllArgsConstructor
+@Getter
+public enum NoticeResponseCodeEnum {
+    NOTICE_CODE_MSG_0("0","[成功]"),
+    NOTICE_CODE_MSG_MSG_1("1","开通知单异常"),
+    NOTICE_CODE_MSG_MSG_2("2","平台双录资料未补齐"),
+    NOTICE_CODE_MSG_MSG_3("3","缴费实名认证失败"),
+    NOTICE_CODE_MSG_MSG_4("4","需要短信验证");
+    /**
+     * 编码
+     */
+    private final String code;
+    /**
+     * 描述
+     */
+    private final String msg;
+}

+ 60 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/constants/order/OrderStatusCodeEnum.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.order.entity.api.pingan.constants.order;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 11:13
+ *  @Description: 订单状态查询
+ *  投保单状态
+ * BE-待审批,
+ * B1-待审核,
+ * B11-待补传,
+ * BH-待验车,
+ * BH1-待质检,
+ * B2-待缴费,
+ * B3-待承保,
+ * B5-已承保,
+ * B6-AI审核,
+ * BS –待风控,
+ * B4-待修改,
+ * B9-拒保,
+ * B0-承保失败,
+ * 99-已失效,
+ * BZ-系统异常,
+ * BT-已退费
+ */
+@AllArgsConstructor
+@Getter
+public enum OrderStatusCodeEnum {
+
+    ORDER_STATUS_CODE_BE("BE","待审批"),
+    ORDER_STATUS_CODE_B1("B1","待审核"),
+    ORDER_STATUS_CODE_B11("B11","待补传"),
+    ORDER_STATUS_CODE_BH("BH","待验车"),
+    ORDER_STATUS_CODE_BH1("BH1","待质检"),
+    ORDER_STATUS_CODE_B2("B2","待缴费"),
+    ORDER_STATUS_CODE_B3("B3","待承保"),
+    ORDER_STATUS_CODE_B5("B5","已承保"),
+    ORDER_STATUS_CODE_B6("B6","AI审核"),
+    ORDER_STATUS_CODE_BS("BS","待风控"),
+    ORDER_STATUS_CODE_B4("B4","待修改"),  //撤单变为待修改
+    ORDER_STATUS_CODE_B9("B9","拒保"),
+    ORDER_STATUS_CODE_B0("B0","承保失败"),
+    ORDER_STATUS_CODE_99("99","已失效"),
+    ORDER_STATUS_CODE_BZ("BZ","系统异常"),
+    ORDER_STATUS_CODE_BT("BT","已退费");
+
+
+
+    /**
+     * 编码
+     */
+    private final String code;
+    /**
+     * 描述
+     */
+    private final String msg;
+}

+ 142 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/log/PinganApiLog.java

@@ -0,0 +1,142 @@
+package com.ydtech.modules.order.entity.api.pingan.log;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * @TableName pingan_api_log
+ */
+@TableName(value ="pingan_api_log")
+@Data
+public class PinganApiLog implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 大订单编号
+     */
+    private String orderno;
+
+    /**
+     * 协议id
+     */
+    private String agreeId;
+
+    /**
+     * 小订单编号
+     */
+    private String subOrderNo;
+
+    /**
+     * 请求路径
+     */
+    private String requestUrl;
+
+    /**
+     * 请求参数
+     */
+    private String requestParam;
+
+    /**
+     * 请求类型
+     */
+    private String requestType;
+
+    /**
+     * 响应数据
+     */
+    private String responseBody;
+
+    /**
+     * 响应类型
+     */
+    private String responseType;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        PinganApiLog other = (PinganApiLog) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getOrderno() == null ? other.getOrderno() == null : this.getOrderno().equals(other.getOrderno()))
+            && (this.getAgreeId() == null ? other.getAgreeId() == null : this.getAgreeId().equals(other.getAgreeId()))
+            && (this.getSubOrderNo() == null ? other.getSubOrderNo() == null : this.getSubOrderNo().equals(other.getSubOrderNo()))
+            && (this.getRequestUrl() == null ? other.getRequestUrl() == null : this.getRequestUrl().equals(other.getRequestUrl()))
+            && (this.getRequestParam() == null ? other.getRequestParam() == null : this.getRequestParam().equals(other.getRequestParam()))
+            && (this.getRequestType() == null ? other.getRequestType() == null : this.getRequestType().equals(other.getRequestType()))
+            && (this.getResponseBody() == null ? other.getResponseBody() == null : this.getResponseBody().equals(other.getResponseBody()))
+            && (this.getResponseType() == null ? other.getResponseType() == null : this.getResponseType().equals(other.getResponseType()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getOrderno() == null) ? 0 : getOrderno().hashCode());
+        result = prime * result + ((getAgreeId() == null) ? 0 : getAgreeId().hashCode());
+        result = prime * result + ((getSubOrderNo() == null) ? 0 : getSubOrderNo().hashCode());
+        result = prime * result + ((getRequestUrl() == null) ? 0 : getRequestUrl().hashCode());
+        result = prime * result + ((getRequestParam() == null) ? 0 : getRequestParam().hashCode());
+        result = prime * result + ((getRequestType() == null) ? 0 : getRequestType().hashCode());
+        result = prime * result + ((getResponseBody() == null) ? 0 : getResponseBody().hashCode());
+        result = prime * result + ((getResponseType() == null) ? 0 : getResponseType().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", orderno=").append(orderno);
+        sb.append(", agreeId=").append(agreeId);
+        sb.append(", subOrderNo=").append(subOrderNo);
+        sb.append(", requestUrl=").append(requestUrl);
+        sb.append(", requestParam=").append(requestParam);
+        sb.append(", requestType=").append(requestType);
+        sb.append(", responseBody=").append(responseBody);
+        sb.append(", responseType=").append(responseType);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    public PinganApiLog(String orderno, String agreeId, String subOrderNo, String requestUrl, String requestParam, String requestType, String responseBody, String responseType) {
+        this.orderno = orderno;
+        this.agreeId = agreeId;
+        this.subOrderNo = subOrderNo;
+        this.requestUrl = requestUrl;
+        this.requestParam = requestParam;
+        this.requestType = requestType;
+        this.responseBody = responseBody;
+        this.responseType = responseType;
+    }
+
+    public PinganApiLog(String orderno, String subOrderNo, String agreeId) {
+        this.orderno = orderno;
+        this.agreeId = agreeId;
+        this.subOrderNo = subOrderNo;
+    }
+}

+ 40 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ApplyVerifyCodeRequest.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 短信验证  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ApplyVerifyCodeRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * C
+     * 江苏、无锡、苏州机构,投保人为个人	商业险投保单号
+     */
+    private String bizApplyNo;
+    /***
+     *C
+     * 江苏、无锡、苏州机构,投保人为个人	交强险投保单号
+     */
+    private String forceApplyNo;
+
+    public ApplyVerifyCodeRequest() {
+    }
+
+    public ApplyVerifyCodeRequest(String userId, String bizApplyNo, String forceApplyNo) {
+        this.userId = userId;
+        this.bizApplyNo = bizApplyNo;
+        this.forceApplyNo = forceApplyNo;
+    }
+}

+ 175 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/BeiJingIdAcquisitionRequest.java

@@ -0,0 +1,175 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
+import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.CheckNotEmpty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 短信验证  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class BeiJingIdAcquisitionRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String flowid;
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * C
+     * 非新渠道必传	采集器编码
+     */
+    private String machineCode;
+    /***
+     *C
+     * 是否电子投保单(0—纸质投保单,1—电子投保单)
+     *
+     * 电子投保单时,该接口不会发送验证码短信
+     */
+    private String isElectronicApplyPolicy;
+
+    /**
+     *  被保人信息
+     */
+    @CheckNotEmpty(fieldName = "被保人信息")
+    private InsuredDTO insured;
+    /**
+     *  投保人信息
+     */
+    private ApplicantDTO applicant;
+
+
+    /***
+     * 被保人信息
+     */
+    @Data
+    public static class InsuredDTO implements Serializable {
+
+        private static final long serialVersionUID = 3194577722449684615L;
+        /***
+         *个团标志[1个人,0团体]
+         * 默认1个人
+         * O
+         */
+        private String personnelType;
+        /***
+         * 被保人名称
+         * M
+         */
+        @CheckNotEmpty(fieldName = "被保人名称", message = "被保人名称不能为空")
+        private String name;
+        /***
+         * 证件类型
+         * 个团标志为1-个人时
+         * 居民身份证(01),护照(02),军人身份证(03), 港澳居民来往内地通行证(06) ,外国人永久居留证(08), 港澳台居民居住证(09),台湾居民通行证(10),武警身份证(13)
+         *
+         * 个团标志为0-团体时
+         * 01:组织机构代码证,
+         * 02:税务登记证,03:其他(仅特批时使用),
+         * 04:营业执照
+         * 05:统一社会信用代码
+         *
+         * 北京地区只支持01, 03 , 05
+         * 上海切换全国后,T团体时只支持01,03,05
+         * M
+         */
+        @CheckNotEmpty(fieldName = "证件类型", message = "证件类型不能为空")
+        private String idType;
+        /***
+         *   证件号码
+         *   M
+         */
+        @CheckNotEmpty(fieldName = "证件号码", message = "证件号码不能为空")
+        private String idNo;
+        /***
+         * 手机或者家庭电话
+         *  M
+         *          * 浙江、大连必传
+         *          *
+         *          * 可以放在6.1  submitApply接口补录
+         */
+        private String mobile;
+
+        public InsuredDTO(CustomerInfoVo insuredPersonInfo) {
+            this.name = insuredPersonInfo.getName();
+            this.idType=("身份证".equals(insuredPersonInfo.getIdentifyType()) || "01".equals(insuredPersonInfo.getIdentifyType()))?"01":"";
+            this.idNo = insuredPersonInfo.getIdentifyNumber();
+            this.mobile = insuredPersonInfo.getMobile();
+        }
+    }
+
+    /***
+     * 投保人信息
+     */
+    @Data
+    public static class ApplicantDTO implements Serializable {
+
+        private static final long serialVersionUID = -6224889213421486612L;
+        /***
+         *  个团标志[1个人,0团体]
+         * 默认1个人
+         * C
+         * 上海地区必传
+         */
+        private String personnelType;
+        /***
+         *投保人名称
+         * C
+         * 上海地区必传
+         */
+        private String name;
+        /***
+         * 投保人证件有效期开始日期
+         * C
+         * 证件类型为身份证必传
+         */
+        private String idNo;
+        /***
+         *投保人证件有效期截止日期(如果长期传9999-01-01)
+         * C
+         * 证件类型为身份证、护照、台湾通行证、港澳通行证、港澳台居住证、外国永久居留证、外国居留证、外国临时居住证时必传
+         */
+        private String idType;
+        /***
+         *投保人证件有效期截止日期(如果长期传9999-01-01)
+         * C
+         * 证件类型为身份证、护照、台湾通行证、港澳通行证、港澳台居住证、外国永久居留证、外国居留证、外国临时居住证时必传
+         */
+        private String mobile;
+
+
+        public ApplicantDTO(CustomerInfoVo policyHolderInfo) {
+            this.name = policyHolderInfo.getName();
+            this.idType=("身份证".equals(policyHolderInfo.getIdentifyType()) || "01".equals(policyHolderInfo.getIdentifyType()))?"01":"";
+            this.idNo = policyHolderInfo.getIdentifyNumber();
+            this.mobile = policyHolderInfo.getMobile();
+        }
+    }
+
+    public BeiJingIdAcquisitionRequest() {
+    }
+
+    public BeiJingIdAcquisitionRequest(String flowid, String userId, String machineCode, String isElectronicApplyPolicy, CustomerInfoVo insured, CustomerInfoVo applicant) {
+        this.flowid = flowid;
+        this.userId = userId;
+        this.machineCode = machineCode;
+        this.isElectronicApplyPolicy = isElectronicApplyPolicy;
+        InsuredDTO  insuredDTO  =new InsuredDTO(insured);
+        ApplicantDTO  applicantDto  =new ApplicantDTO(applicant);
+        this.insured = insuredDTO;
+        this.applicant = applicantDto;
+    }
+}

+ 43 - 16
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/CarConfirmRequest.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.entity.api.pingan.request;
 
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
+import com.ydtech.modules.order.entity.api.pingan.constants.dict.SexCodeEnum;
 import com.ydtech.modules.order.entity.api.pingan.response.SearchPAVehicleListResponse;
 import com.ydtech.modules.order.entity.api.pingan.utils.NetworkUtils;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.CheckNotEmpty;
@@ -30,7 +31,17 @@ import java.util.Map;
 @Data
 public class CarConfirmRequest extends PingAnBaseRequest {
 
-    private static final long serialVersionUID = -2970494216237904379L;
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M 必须传值
+     * 对flowid,checkNo,userId参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
+     * RSA秘钥找平安获取
+     */
+    private String flowid;
     /**
      *  发起该次查验请求终端设备的物理网卡地址
      *  M必传
@@ -87,7 +98,7 @@ public class CarConfirmRequest extends PingAnBaseRequest {
     /**
      *  车船税信息
      */
-    @CheckNotEmpty(fieldName = "车船税信息")
+    //@CheckNotEmpty(fieldName = "车船税信息")
     private TaxFormDTO taxForm;
     /**
      *  江苏交管验证码
@@ -201,8 +212,10 @@ public class CarConfirmRequest extends PingAnBaseRequest {
         // 被保人信息
         CustomerInfoVo insuredPersonInfo = quoteInfo.getInsuredPersonInfo();
         this.insured=new InsuredDTO(insuredPersonInfo);
-
-
+        // 过户标志
+        this.bizQuote = new BizQuoteDTO(String.valueOf(carInfo.isTransferFlag()),carInfo.getTransferDate());
+        //交强险信息
+        this.forceQuote =new ForceQuoteDTO(carInfo.getPowertype());
 
     }
 
@@ -302,7 +315,7 @@ public class CarConfirmRequest extends PingAnBaseRequest {
          * 10,11不适用北京地区
          * C
          * 北京&&未上牌&&交强险;
-         * 未上牌&&showCircModelsSwitc为true时必传
+         * 未上牌&&showCircModelsSwitc为true时必传         ==========================
          */
         private String vehicleCertiType;
         /**
@@ -392,29 +405,35 @@ public class CarConfirmRequest extends PingAnBaseRequest {
             this.registerDate = carInfo.getRegisterDate();
             this.frameNo = carInfo.getFrameNo();
             this.engineNo = carInfo.getEngineNo();
-            //this.modelCode = modelCode;
+           // this.frameNo = "VNN3ZYKS1X8H05E4D";
+            // 货车 modelCode KMD1129SDH,家用车用 OYI1004SKD
+            //this.modelCode = "OYI1004SKD";
             this.paModelCode = modelsDto.getPaModelCode();
-            this.modelIndex = modelsDto.getModelIndex();
+            // this.modelIndex = modelsDto.getModelIndex();
 //            this.vehicleStyleUniqueId = vehicleStyleUniqueId;
             this.autoModelName = modelsDto.getModelName();
             this.seats = carInfo.getSeatCount();
-            this.wholeWeight = String.valueOf(Float.parseFloat(carInfo.getCompleteKerbMass()) / 1000);
-            this.tonNumber = carInfo.getCompleteKerbMass();
+            //这辆参数货车传递
+           // this.wholeWeight = String.valueOf(Float.parseFloat(carInfo.getCompleteKerbMass()) / 1000);
+          //  this.tonNumber = carInfo.getCompleteKerbMass();
             this.exhaustMeasure = modelsDto.getExhaustMeasure();
             this.power = carInfo.getPowerScale();
            // this.vehicleCertiType = vehicleCertiType;
            // this.vehicleCertiNo = vehicleCertiNo;
            // this.vehicleCertiDate = vehicleCertiDate;
            // this.invoiceDate = invoiceDate;
-           // this.useAttribute = carInfo.getVehicleUse();
-           // this.useAttributDetailCode = useAttributDetailCode;
-          //  this.ownAttribute = carInfo.getCarnature();
+            this.useAttribute = carInfo.getCarnature();
+
+           //this.useAttributDetailCode = "01";
+            //私人
+             this.ownAttribute = "03";
            // this.offerLastPolicyFlag = offerLastPolicyFlag;
            // this.isOfferLocalUseProof = isOfferLocalUseProof;
           //  this.shanghaiVehicleType = shanghaiVehicleType;
           //  this.isNewEnergyVehicle = isNewEnergyVehicle;
            // this.vehicleCodeForShangHai = vehicleCodeForShangHai;
           //  this.specialCarLicense = specialCarLicense;
+            //carInfo.getTransferFlag();
         }
 
 
@@ -486,8 +505,8 @@ public class CarConfirmRequest extends PingAnBaseRequest {
         public RegisterDTO(CustomerInfoVo ownerInfo) {
             this.name=ownerInfo.getName();
             //this.birthday=birthday;
-            this.gender=ownerInfo.getGender();
-            this.idType=ownerInfo.getIdentifyType();
+            this.gender= SexCodeEnum.getCode(ownerInfo.getGender());
+            this.idType=("身份证".equals(ownerInfo.getIdentifyType()) || "01".equals(ownerInfo.getIdentifyType()))?"01":"";
             this.idNo=ownerInfo.getIdentifyNumber();
             this.mobile=ownerInfo.getMobile();
             this.address=ownerInfo.getAddr();
@@ -649,9 +668,9 @@ public class CarConfirmRequest extends PingAnBaseRequest {
         public InsuredDTO(CustomerInfoVo insuredPersonInfo) {
             //this.personnelType = personnelType;
             this.name = insuredPersonInfo.getName();
-            this.idType = insuredPersonInfo.getIdentifyType();
+            this.idType=("身份证".equals(insuredPersonInfo.getIdentifyType()) || "01".equals(insuredPersonInfo.getIdentifyType()))?"01":"";
             this.idNo = insuredPersonInfo.getIdentifyNumber();
-            this.gender = insuredPersonInfo.getGender();
+            this.gender = SexCodeEnum.getCode(insuredPersonInfo.getGender());
             this.certificateIssueDate = insuredPersonInfo.getIdentifyValidDate();
             this.certificateValidDate = insuredPersonInfo.getIdentifyValidEndDate();
             //this.birthday = birthday;
@@ -727,6 +746,11 @@ public class CarConfirmRequest extends PingAnBaseRequest {
          * C
          */
         private String specialCarDate;
+
+        public BizQuoteDTO(String specialCarFlag, String specialCarDate) {
+            this.specialCarFlag = specialCarFlag;
+            this.specialCarDate = specialCarDate;
+        }
     }
     /***
      *
@@ -751,6 +775,9 @@ public class CarConfirmRequest extends PingAnBaseRequest {
          */
         private String fuelType;
 
+        public ForceQuoteDTO(String fuelType) {
+            this.fuelType = fuelType;
+        }
     }
     /***
      * 车船税信息

+ 101 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ChexianStandardPrePaymentRequest.java

@@ -0,0 +1,101 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version 
+ *  @author: hxl
+ *  @Date: 2024/7/23 14:15
+ *  @Description:  平安新CPC收银台  接口入参
+ */ 
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ChexianStandardPrePaymentRequest extends PingAnBaseRequest {
+    /***
+     * M
+     *     必传	金额	1863.00
+     */
+    private String amount;
+    /***
+     *M
+     *     必传	用户终止支付流程,执行”返回”操作时前端页面跳回业务系统的地址,支持带GET参数,最长2048个英文字符	https://u.pingan.com/mobile/isu.html
+     */
+    private String returnUrl;
+    /***
+     *M
+     *     必传	前端支付后回调地址,用于返回投保流程
+     */
+    private String frontNotifyUrl;
+
+    /***
+     *M
+     *     必传	通知单号
+     */
+    private String noticeNo;
+
+
+    /***
+     *C
+     *     上海必录	上海平台交易号	18PAIC01307170731000278
+     */
+    private String circPaymentNo;
+
+    /***
+     *M
+     *     必传	交易号,字母或数字组成最长32位,建议合作伙伴前缀 + 时间戳(13位) + 随机数	mit157889627959445896523
+     */
+    private String tradeNo;
+
+    /***
+     *M
+     *     必传	加密内容	String mingwen=partnerName +noticeNo+currencyNo +amount
+     *
+     *     MD5加密		String signMsg = MD5Util.sha256Hex(mingwen);
+     *     工具类见文档11.2
+     */
+    private String signMsg;
+
+    /***
+     M
+     必传	合作伙伴用户名同3.1接口partnerId	P_MIT-AUTO-OPENAPI
+     */
+    private String partnerName;
+
+    /***
+     *M
+     *     必传	币种,人民币-CNY	CNY
+     */
+    private String currencyNo;
+
+    /***
+     *M
+     *     必传	商品描述,支付界面展示的支付商品概要	MIT车险保费
+     */
+    private String itemDesc;
+    /***
+     *C	公对公转账标识(仅展示)	Y代表只有对公转账
+     *             C代表企业网银和对公转账
+     *     F代表对公转账可以跟其他线上支付一并展示
+     */
+    private String publicTransfer;
+
+
+    public ChexianStandardPrePaymentRequest() {
+    }
+
+    public ChexianStandardPrePaymentRequest(String amount, String returnUrl, String frontNotifyUrl, String noticeNo, String frontNotifyUrl1, String circPaymentNo, String tradeNo, String signMsg, String partnerName, String currencyNo, String itemDesc, String publicTransfer) {
+        this.amount = amount;
+        this.returnUrl = returnUrl;
+        this.frontNotifyUrl = frontNotifyUrl;
+        this.noticeNo = noticeNo;
+        this.frontNotifyUrl = frontNotifyUrl1;
+        this.circPaymentNo = circPaymentNo;
+        this.tradeNo = tradeNo;
+        this.signMsg = signMsg;
+        this.partnerName = partnerName;
+        this.currencyNo = currencyNo;
+        this.itemDesc = itemDesc;
+        this.publicTransfer = publicTransfer;
+    }
+}

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/CommonRequest.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/16 12:24
+ *  @Description:  公共的请求信息
+ */
+@Data
+public class CommonRequest {
+
+    /***
+     * “data”:”SM4加密后的16进制字符串”,
+     *
+     */
+    private String data;
+
+    /***
+     * “sign”:”SM2加签后的16进制字符串”
+     */
+    private String sign;
+}

+ 11 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/DmvehicleInfoRequst.java

@@ -23,6 +23,17 @@ import java.io.Serializable;
 @Data
 public class DmvehicleInfoRequst extends PingAnBaseRequest {
 
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M 必须传值
+     * 对flowid,checkNo,userId参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
+     * RSA秘钥找平安获取
+     */
+    private String flowid;
     /**
      *  车辆信息
      */

+ 10 - 11
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/DocumentStatusListRequest.java

@@ -6,7 +6,6 @@ import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -22,12 +21,17 @@ import java.util.List;
 @Data
 public class DocumentStatusListRequest extends PingAnBaseRequest{
 
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
     /***
      * 投保单号集合
      * M	单证列表
      * 条数上限:2条	[“50821003900209786387”,” 50821003900209786387”]
      */
-    private String[] documentNoList;
+    private List<String> documentNoList;
     /***
      * M
      * 对userId 、documentNoList、参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
@@ -37,11 +41,9 @@ public class DocumentStatusListRequest extends PingAnBaseRequest{
      */
     private String  signature;
 
-    public DocumentStatusListRequest(String subOrderNo, PingAnConfigureParameters parameters) {
-        List<String> list=new ArrayList<String>();
-        list.add(subOrderNo);
+    public DocumentStatusListRequest(List<String> list, PingAnConfigureParameters parameters) {
         this.setUserId(parameters.getUserId());
-        this.setDocumentNoList(list.toArray(new String[list.size()]));
+        this.setDocumentNoList(list);
     }
 
     @Validate
@@ -50,13 +52,10 @@ public class DocumentStatusListRequest extends PingAnBaseRequest{
         if(this.getUserId()==null || "".equals(this.getUserId())){
             throw new FieldEmptyException("合作伙伴操作用户ID-UserId不能为空!!!");
         }
-        if(this.getDocumentNoList()==null || this.getDocumentNoList().length==0){
+        if(this.getDocumentNoList()==null || this.getDocumentNoList().size()==0){
             throw new FieldEmptyException("投保单号集合不能为空!!!");
-        }else if(this.getDocumentNoList().length>2){
+        }else if(this.getDocumentNoList().size()>2){
             throw new FieldEmptyException("投保单号集合上限两条!!!");
         }
-        if(this.getSignature()==null || "".equals(this.getSignature())){
-            throw new FieldEmptyException("密钥不能为空!!!");
-        }
     }
 }

+ 40 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/GetNoticeInfoRequest.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 短信验证  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class GetNoticeInfoRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * C
+     * 江苏、无锡、苏州机构,投保人为个人	商业险投保单号
+     */
+    private String bizApplyNo;
+    /***
+     *C
+     * 江苏、无锡、苏州机构,投保人为个人	交强险投保单号
+     */
+    private String forceApplyNo;
+
+    public GetNoticeInfoRequest() {
+    }
+
+    public GetNoticeInfoRequest(String userId, String bizApplyNo, String forceApplyNo) {
+        this.userId = userId;
+        this.bizApplyNo = bizApplyNo;
+        this.forceApplyNo = forceApplyNo;
+    }
+}

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

@@ -0,0 +1,47 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 江苏获取微信缴费实名认证结果  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class GetWechatAuthInfoRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+
+    /***
+     * M	通知单号
+     */
+    private String paymentNo;
+    /***
+     *M	认证编码
+     */
+    private String authenticationNo;
+
+    /***
+     *M	微信用户实名认证信息凭证
+     */
+    private String wechatToken;
+
+
+
+    public GetWechatAuthInfoRequest() {
+    }
+
+    public GetWechatAuthInfoRequest(String userId, String paymentNo, String authenticationNo, String wechatToken) {
+        this.userId = userId;
+        this.paymentNo = paymentNo;
+        this.authenticationNo = authenticationNo;
+        this.wechatToken = wechatToken;
+    }
+}

+ 9 - 6
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/IndexRequest.java

@@ -20,9 +20,12 @@ import java.io.Serializable;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class IndexRequest extends PingAnBaseRequest {
-
-    private static final long serialVersionUID = -2587880061389730743L;
-
+    /**
+     * 由平安提供数据字段
+     * 该场景模式需要平安额外配置,提前和平安沟通
+     * C 条件出现
+     */
+    private String userId;
     /**
      * 由平安提供数据字段
      * 该场景模式需要平安额外配置,提前和平安沟通
@@ -57,10 +60,10 @@ public class IndexRequest extends PingAnBaseRequest {
     private boolean isAllowRepeat;
 
     public IndexRequest(PingAnConfigureParameters parameters, CarInfoVo carInfoVo) {
-        this.setUserId(parameters.getUserId());
+        this.userId =parameters.getUserId();
         this.cityCode = parameters.getCityCode();
-        this.inputBy = parameters.getInputBy();
-        this.saleCode = parameters.getSaleCode();
+        //this.inputBy = parameters.getInputBy();
+       // this.saleCode = parameters.getSaleCode();
         this.vehicle = new VehicleDTO(carInfoVo);
         this.isAllowRepeat = false;
     }

+ 94 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/NoticeAuthRequest.java

@@ -0,0 +1,94 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 支付实名认证建议在noticeDo接口进行    入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NoticeAuthRequest extends PingAnBaseRequest {
+    /***
+     * M
+     *     必传	合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private String userId;
+    /***
+     *M	通知单号	18PAIC01307170731000278
+     */
+    private String noticeNo;
+    /***
+     *C
+     * 支付信息
+     * 缴费认证信息[未使用平安收银台时]
+     */
+    private PaymentInfo paymentInfo;
+
+    public NoticeAuthRequest() {
+    }
+    /***
+     * 车辆信息
+     */
+    @Data
+    public static class PaymentInfo implements Serializable {
+
+        /**
+         * M	缴费方式代码
+         * POS,移动POS机
+         * EPO,EPOS机
+         * SCP,银行卡快捷
+         * NCP,无卡
+         * WXP,微信
+         * ALP,支付宝
+         */
+        private String payMode;
+        /**
+         * C	POS/EP/SCP/NCP时,传银行卡号
+         * WXP时,传微信ID
+         * ALP时,传支付宝ID
+         */
+        private String bankNo;
+        /**
+         * C
+         * 大江苏地区时并且
+         * 缴费方式为WXP微信时	微信授权成功回调地址
+         */
+        private String redirectUrl;
+        /***
+         * C
+         * 江苏地区并且
+         * 投保人性质为团体时,该值必传	付款人账户名称
+         * (最长200字符)
+         */
+        private String payAccountName;
+        /***
+         *  C
+         * 江苏地区并且
+         * 当"付款人账户名称"与"投保人名称"不一致时,该值必传	投保人与付款人关系类型
+         * 01 总分公司,一个法人
+         * 02 母子公司,两个法人
+         * 03 财政拨款
+         * 99 其他
+         */
+        private String relationshipCode;
+        /***
+         *  C
+         * 江苏地区并且
+         * relationshipCode=99时,该值必传	备注
+         * (最长1000字符)
+         */
+        private String remark;
+    }
+
+    public NoticeAuthRequest(String userId, String noticeNo, PaymentInfo paymentInfo) {
+        this.userId = userId;
+        this.noticeNo = noticeNo;
+        this.paymentInfo = paymentInfo;
+    }
+}

+ 105 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/NoticeDoRequest.java

@@ -0,0 +1,105 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+
+import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.CheckNotEmpty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 15:23
+ *  @Description:  生成支付通知单号  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NoticeDoRequest extends PingAnBaseRequest {
+
+    /***
+     *   M
+     * 必传	合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private String userId;
+    /***
+     * M	投保单号列表	[“50821003900209786387”,” 50821003900209786387”]
+     */
+    private String[] documentNoList;
+    /***
+     * C
+     * 上海	支付方式
+     * 银联pos(01)
+     * 支票交易(02)
+     * 贷记凭证交易(03)
+     * 银行对私现金(04)
+     * 银行对公现金(05)
+     * 网上银行(06)
+     * 快钱票据(07)
+     * 快钱pos(09)
+     * 【默认快钱票据(07)】
+     */
+    private String payMode;
+
+    /***
+     * C
+     * 上海	上海平台交易号
+     */
+    private String circPaymentNo;
+
+
+
+
+    private PaymentInfoDto paymentInfo;
+
+    /***
+     * 车辆信息
+     */
+    @Data
+    public static class PaymentInfoDto implements Serializable {
+        /***
+         * C	实名认证标志(Y需要实名认证N不需要实名认证。默认为Y需要认证)
+         */
+        private String autonymAuthFlag;
+        /**
+         * M	缴费方式代码
+         * POS  移动POS机
+         * EPO  EPOS机
+         * WXP  微信
+         * ALP  支付宝
+         * SCP  银行卡快捷
+         * EBK  网银
+         * NCP  无卡
+         * PPY  预付费
+         */
+        @CheckNotEmpty(fieldName = "缴费方式代码", message = "缴费方式代码不能为空")
+        private String payMode;
+        /**
+         * C
+         * (江苏)缴费方式非支付宝、微信时(其他地区传支付宝或微信ID)	银行卡号
+         */
+        private String bankNo;
+        /**
+         * C
+         * 缴费方式为微信时(仅江苏)	微信授权成功回调地址
+         */
+        private String redirectUrl;
+
+        public PaymentInfoDto(String payMode, String bankNo, String redirectUrl,String autonymAuthFlag) {
+           this.payMode = payMode;
+            this.bankNo = bankNo;
+            this.redirectUrl = redirectUrl;
+            this.autonymAuthFlag = autonymAuthFlag;
+        }
+    }
+
+    public NoticeDoRequest(String userId, ArrayList<String> documentNoList) {
+        //默认为微信支付
+        PaymentInfoDto paymentInfo =new PaymentInfoDto("WXP",null,null,"N");
+        this.userId = userId;
+        String[] array = new String[documentNoList.size()];
+        this.documentNoList = documentNoList.toArray(array);
+        this.paymentInfo = paymentInfo;
+    }
+}

+ 32 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/NoticeDoneRequest.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 支付通知单查询  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NoticeDoneRequest extends PingAnBaseRequest {
+
+    /***
+     *M	合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private String userId;
+    /***
+     * M	通知单号	30010088000135857470
+     */
+    private String noticeNo;
+
+    public NoticeDoneRequest() {
+    }
+
+    public NoticeDoneRequest(String userId, String noticeNo) {
+        this.userId = userId;
+        this.noticeNo = noticeNo;
+    }
+}

+ 81 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PayReturnRequest.java

@@ -0,0 +1,81 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 支付回调  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PayReturnRequest extends PingAnBaseRequest {
+
+    /***
+     * M	通知单号
+     */
+    private String businessNo;
+    /***
+     * M
+     * 订单号/银行流水
+     */
+    private String bankOrderNo;
+    /***
+     *O	备注
+     */
+    private String remark;
+
+
+    /***
+     *M	支付时间	2013-10-11 11:43:57
+     */
+    private String paymentDate;
+
+    /***
+     *M	支付金额
+     */
+    private String paymentSum;
+
+    /***
+     *O	支付方式	WXP
+     */
+    private String payType;
+
+    /***
+     *M	支付结果
+     * 1-成功,2-失败(非空)
+     */
+    private String paymentState;
+    /***
+     *M	结果信息	支付成功
+     */
+    private String resultMsg;
+    /***
+     *M	交易结果信息/失败描述  结果,使用urldecode进行decode
+     */
+    private String errorMsg;
+    /***
+     *M	md5签名串	String mingwenStr = “68” + businessNo + bankOrderNo + paymentSum + paymentState + “OPENAPI”;
+     *     String signMsg = MD5Util. sha256Hex (mingwenStr);
+     */
+    private String signMsg;
+
+
+    public PayReturnRequest() {
+    }
+
+    public PayReturnRequest(String businessNo, String bankOrderNo, String remark, String paymentDate, String paymentSum, String payType, String paymentState, String resultMsg, String errorMsg, String signMsg) {
+        this.businessNo = businessNo;
+        this.bankOrderNo = bankOrderNo;
+        this.remark = remark;
+        this.paymentDate = paymentDate;
+        this.paymentSum = paymentSum;
+        this.payType = payType;
+        this.paymentState = paymentState;
+        this.resultMsg = resultMsg;
+        this.errorMsg = errorMsg;
+        this.signMsg = signMsg;
+    }
+}

+ 0 - 10
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PingAnBaseRequest.java

@@ -13,16 +13,6 @@ import java.io.Serializable;
 @Data
 public class PingAnBaseRequest implements Serializable {
 
-    private static final long serialVersionUID = 8554995712964526165L;
-
-    /**
-     * 合作伙伴操作用户ID,用来记录合作伙伴操作人身份
-     */
-    private String userId;
-    /**
-     * 流程ID
-     */
-    private String flowid;
     //验证入参参数
     public void validate() {
 

+ 9 - 16
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PolicyPdfRequest.java

@@ -2,14 +2,10 @@ package com.ydtech.modules.order.entity.api.pingan.request;
 
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.FieldEmptyException;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validate;
-import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
-import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.util.List;
 
 /**
  *  @version
@@ -22,6 +18,11 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class PolicyPdfRequest extends PingAnBaseRequest{
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
     /***
      * M	保单号(交强险/商业险)
      */
@@ -39,21 +40,16 @@ public class PolicyPdfRequest extends PingAnBaseRequest{
      */
 
     private String   isUnAutoPolicy;
-    /***
-     *  M	对入参字段按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
-     * RSA秘钥找平安获取
-     */
-    private String  signature;
     /**
      *  车辆信息
      */
     private VehicleDTO vehicle;
 
-    public PolicyPdfRequest(PingAnConfigureParameters parameters, BaseQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo,String checkNo,String licenseNo,String frameNo) {
-          this.setUserId(parameters.getUserId());
-          this.setDocumentNo(quoteVo.getOrderNo());
-          this.setCheckNo(checkNo);
+    public PolicyPdfRequest(String userId, String documentNo,String checkNo,String licenseNo,String frameNo) {
+          this.setUserId(userId);
+          this.setDocumentNo(documentNo);
           this.setCheckNo(checkNo);
+          this.setIsUnAutoPolicy("false");
           this.setVehicle(new VehicleDTO(licenseNo,frameNo));
     }
 
@@ -90,9 +86,6 @@ public class PolicyPdfRequest extends PingAnBaseRequest{
         if(this.getCheckNo()==null || "".equals(this.getCheckNo())){
             throw new FieldEmptyException("完整的车主证件号不能为空!!!");
         }
-        if(this.getSignature()==null || "".equals(this.getSignature())){
-            throw new FieldEmptyException("密钥不能为空!!!");
-        }
         if(this.getVehicle()==null || this.getVehicle().getLicenseNo() ==null || "".equals(this.getVehicle().getLicenseNo())){
             throw new FieldEmptyException("车牌号码不能为空!!!");
         }

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

@@ -0,0 +1,57 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/17 9:05
+ *  @Description:  获取财意险险种套餐列表入参
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProductDetailsRequest extends PingAnBaseRequest{
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty("车辆使用性质代码01-营业02-非营业")
+    private String useAttribute;
+
+    @ApiModelProperty("所属性质(01:机关,02:企业,03:私人 默认03:私人 车辆使用性质为01:营业时,所属性质不可以选择01:机关")
+    private String ownAttribute;
+
+    @ApiModelProperty("座位数")
+    private String seats;
+
+    @ApiModelProperty("车商编码,传递后将减少查询结果")
+    private String saleCode;
+
+    @ApiModelProperty("核定载质量(吨) 货车必填")
+    private String tonNumber;
+
+    @ApiModelProperty("是否查询组合产品")
+    private String isUseCombine;
+
+    @ApiModelProperty("车辆种类  A0客户 、A1货车")
+    private String cimodelclass;
+
+    @ApiModelProperty("保险公司id")
+    private String companyId;
+
+
+    public ProductDetailsRequest(String agreementId, String useAttribute, String ownAttribute, String seats, String tonNumber, String isUseCombine, String cimodelclass,String companyId) {
+        this.agreementId = agreementId;
+        this.useAttribute = useAttribute;
+        this.ownAttribute = ownAttribute;
+        this.seats = seats;
+        this.tonNumber = tonNumber;
+        this.isUseCombine = isUseCombine;
+        this.cimodelclass = cimodelclass;
+        this.companyId =companyId;
+    }
+}

+ 262 - 16
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/QuoteRequest.java

@@ -1,5 +1,9 @@
 package com.ydtech.modules.order.entity.api.pingan.request;
 
+import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.pingan.response.CarConfirmResponse;
 import com.ydtech.modules.order.entity.api.pingan.response.SearchPAVehicleListResponse;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.CheckNotEmpty;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.FieldEmptyException;
@@ -7,10 +11,13 @@ import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validate;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validator;
 import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.pingan.InsDrivingIntentionInsuranceSonVo;
 import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 /**
  *  @version
@@ -23,15 +30,24 @@ import java.util.List;
  */
 @Data
 public class QuoteRequest extends PingAnBaseRequest {
-
-    private static final long serialVersionUID = 2169810871161326883L;
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M 必须传值
+     * 对flowid,checkNo,userId参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
+     * RSA秘钥找平安获取
+     */
+    private String flowid;
     /***
      * 是否投保商业险
      * true,false
      * M
      */
     @CheckNotEmpty(fieldName = "是否投保商业险",message = "是否投保商业险不能为空")
-    private boolean applyBiz;
+    private String applyBiz;
     /***
      * 商业险信息
      */
@@ -50,7 +66,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * 默认:N
      * o
      */
-    private boolean isOnlineProducts;
+    private String isOnlineProducts;
 
     //==================20版-商业险报价套餐============================================
     /***
@@ -402,7 +418,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      * true,false
      * M
      */
-    @CheckNotEmpty(fieldName = "是否通融报价", message = "是否通融报价不能为空")
+    //@CheckNotEmpty(fieldName = "是否通融报价", message = "是否通融报价不能为空")
     private String accommodationFlag;
     /***
      * 通融紧急程度
@@ -429,24 +445,24 @@ public class QuoteRequest extends PingAnBaseRequest {
      * true,false
      * M
      */
-    @CheckNotEmpty(fieldName = "是否投保财意险", message = "是否投保财意险不能为空")
+   // @CheckNotEmpty(fieldName = "是否投保财意险", message = "是否投保财意险不能为空")
     private String applyUnAuto;
     /***
      * 是否投保小微险
      * true,false
      * M
      */
-    @CheckNotEmpty(fieldName = "是否投保小微险", message = "是否投保小微险不能为空")
+    //@CheckNotEmpty(fieldName = "是否投保小微险", message = "是否投保小微险不能为空")
     private String applyXiaoWei;
     /***
      * 财意险列表
      */
-    @CheckNotEmpty(fieldName = "财意险列表")
+    //@CheckNotEmpty(fieldName = "财意险列表")
     private List<UnAutoListInfoDTO> unAutoListInfo=new ArrayList<UnAutoListInfoDTO>();
     /***
      * 小微险列表
      */
-    @CheckNotEmpty(fieldName = "小微险列表")
+    //@CheckNotEmpty(fieldName = "小微险列表")
     private List<UnAutoListInfoDTO> xiaoWeiListInfo=new ArrayList<UnAutoListInfoDTO>();
     /***
      * 非车代理人编码
@@ -721,7 +737,7 @@ public class QuoteRequest extends PingAnBaseRequest {
      *  新增加设备损失险设备信息列表
      *
      */
-    @CheckNotEmpty(fieldName = "新增加设备损失险设备信息列表")
+    //@CheckNotEmpty(fieldName = "新增加设备损失险设备信息列表")
     private List<Amount10XNYDeviceListDTO> amount10XNYDeviceList=new ArrayList<Amount10XNYDeviceListDTO>();
     /***
      *  投保附加自用充电桩损失保险
@@ -735,15 +751,23 @@ public class QuoteRequest extends PingAnBaseRequest {
      */
     private List<Amount23XNYChargingPostListDTO> amount23XNYChargingPostList=new ArrayList<Amount23XNYChargingPostListDTO>();
     //todo
-    public QuoteRequest(PingAnConfigureParameters parameters, BaseQuoteInfoVo quoteInfo, SearchPAVehicleListResponse.ModelsDto modelsDto, String flowid,String applyBiz,BizQuoteDTO bizQuote,String applyForce,String accommodationFlag,String applyUnAuto,String applyXiaoWei,List<UnAutoListInfoDTO> unAutoListInfo,List<UnAutoListInfoDTO> xiaoWeiListInfo,List<Amount22XNYChargingPostListDTO> amount22XNYChargingPostList, List<Amount23XNYChargingPostListDTO> amount23XNYChargingPostList) {
+    public QuoteRequest(PingAnConfigureParameters parameters, BaseQuoteInfoVo quoteInfo, SearchPAVehicleListResponse.ModelsDto modelsDto, String flowid,String accommodationFlag,String applyUnAuto,String applyXiaoWei,List<UnAutoListInfoDTO> unAutoListInfo,List<UnAutoListInfoDTO> xiaoWeiListInfo,List<Amount22XNYChargingPostListDTO> amount22XNYChargingPostList, List<Amount23XNYChargingPostListDTO> amount23XNYChargingPostList) {
         this.setUserId(parameters.getUserId());
         this.setFlowid(flowid);
-        this.setApplyBiz(Boolean.parseBoolean(applyBiz));
-        this.bizQuote=bizQuote;
-        this.setApplyForce(applyForce);
+        InsOrders insOrders = new InsOrders();
+        insOrders.insuranceInformation(quoteInfo.getRiskList(),quoteInfo.getKindList());
+        QuoteRequest.ForceQuoteDTO forceQuoteDto =new QuoteRequest.ForceQuoteDTO(insOrders.getJqstartdate());
+        QuoteRequest.BizQuoteDTO bizQuoteDto =new QuoteRequest.BizQuoteDTO(insOrders.getSystartdate());
+        HashMap<String, Boolean> map = new InsOrders().insuranceInformationFlag(quoteInfo.getRiskList());
+        this.setApplyForce(String.valueOf(map.get("jqFlag")));
+        this.forceQuote =forceQuoteDto;
+        this.setApplyBiz(String.valueOf(map.get("syFlag")));
+        this.bizQuote=bizQuoteDto;
         this.setAccommodationFlag(accommodationFlag);
         this.setApplyUnAuto(applyUnAuto);
         this.setApplyXiaoWei(applyXiaoWei);
+
+        this.setIsOnlineProducts("N");
         // 财意险列表
         // 小微险列表
         this.setUnAutoListInfo(unAutoListInfo);
@@ -751,6 +775,114 @@ public class QuoteRequest extends PingAnBaseRequest {
         this.setAmount22XNYChargingPostList(amount22XNYChargingPostList);
         this.setAmount23XNYChargingPostList(amount23XNYChargingPostList);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/19 16:17
+     *  @Description:  处理财意险列表、小微险列表、组合险
+     */
+    public QuoteRequest transYJPingAnRequestMsg(InsDrivingIntentionInsuranceSonVo vo, QuoteRequest quoteRequest, String type) {
+        //处理
+        List<UnAutoListInfoDTO>  unAutoListInfoList=new ArrayList<>();
+        if(vo!=null && StringUtils.isNotBlank(vo.getProductCode()) ){
+              UnAutoListInfoDTO  unAutoListInfoDTO =new  UnAutoListInfoDTO(vo.getProductCode(),vo.getCode(),"1");
+              unAutoListInfoList.add(unAutoListInfoDTO);
+        }
+        if(unAutoListInfoList!=null && unAutoListInfoList.size()>0){
+            quoteRequest.setApplyUnAuto("true");
+        }else{
+            quoteRequest.setApplyUnAuto("false");
+        }
+        quoteRequest.setUnAutoListInfo(unAutoListInfoList);
+        return quoteRequest;
+    }
+
+    public QuoteRequest transferPingAnRequestMsgNY(List<KindInfoVo> kinds, QuoteRequest quoteRequest, CarConfirmResponse.BizQuoteConfigDTO bizQuoteConfig) {
+        for (KindInfoVo kindInfoVo : kinds) {
+            String code = kindInfoVo.getKindCode();
+            //机动车损失险
+            String amount = String.format("%.0f", kindInfoVo.getAmount());
+            String unitAmount = String.format("%.0f", kindInfoVo.getUnitAmount());
+            if (InsurKind.A.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount01XNY(String.valueOf(kindInfoVo.getAmount()>0?1:0)) ;
+                if("1".equals(quoteRequest.getAmount01())){
+                    //车损险默认值
+                    String amount01Default = bizQuoteConfig.getAmount01Default();
+                    quoteRequest.setInputAmountXNY(amount01Default);
+                }
+            }
+            //车损险绝对免赔额(元)
+            //quoteRequest.setInputAmount01(" 109791.0");
+            //三者险
+            if (InsurKind.B.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount02XNY(amount) ;
+            }
+            //乘客责任险
+            if (InsurKind.D4.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount05XNY(unitAmount) ;
+            }
+            //乘客责任险
+            if (InsurKind.D3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount04XNY(unitAmount) ;
+            }
+            //  附加车上货物责任险   暂时没有
+            //  附加医保外用药责任险(第三者责任保险)
+            if (InsurKind.SY_FJ_YBW1.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount07XNY(String.valueOf(kindInfoVo.getAmount()>1?1:0)) ;
+            }
+            // 附加医保外用药责任险(车上人员责任保险(乘客))
+            if (InsurKind.SY_FJ_YBW2.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount09XNY(String.valueOf(kindInfoVo.getAmount()>1?1:0)) ;
+            }
+            // 附加医保外用药责任险(车上人员责任保险(司机))
+            if (InsurKind.SY_FJ_YBW3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount08XNY(String.valueOf(kindInfoVo.getAmount()>1?1:0)) ;
+            }
+            //附加修理期间费用补偿险  暂时没有
+            // 附加新增加设备损失险   暂时没有
+            //附加车身划痕损失险
+            if (InsurKind.L.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount17XNY(amount) ;
+            }
+            quoteRequest.setAmount10XNY("");
+            quoteRequest.setAmount11XNY("");
+            quoteRequest.setAmount12XNY("");
+            quoteRequest.setAmount12XNYFee("");
+            quoteRequest.setAmount13XNY("");
+            quoteRequest.setAmount14XNY("");
+            quoteRequest.setAmount15XNY("");
+            quoteRequest.setAmount16XNY("");
+            quoteRequest.setAmount17XNY("");
+            quoteRequest.setAmount18XNY("");
+            quoteRequest.setAmount18XNYFee("");
+            quoteRequest.setAmount19XNY("");
+            quoteRequest.setAmount19XNYFee("");
+            quoteRequest.setAmount20XNY("");
+            quoteRequest.setAmount21XNY("");
+            quoteRequest.setAmount20XNYFee("");
+            quoteRequest.setAmount22XNY("");
+            quoteRequest.setAmount23XNY("");
+            //附加发动机进水损坏除外特约条款
+            // 道路救援服务特约条款(9座以下非营业客车可以投保)
+            if (InsurKind.TY1.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount01SvXNY(amount) ;
+            }
+            //车辆安全检测特约条款
+            if (InsurKind.TY2.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount02SvXNY(amount) ;
+            }
+            //代为驾驶服务特约条款
+            if (InsurKind.TY3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount03SvXNY(amount) ;
+            }
+            //代为送检服务特约条款
+            if (InsurKind.TY4.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount04SvXNY(amount);
+            }
+        }
+        return quoteRequest;
+
+    }
 
     /***
      * 商业险信息
@@ -764,7 +896,7 @@ public class QuoteRequest extends PingAnBaseRequest {
          * yyyy-mm-dd hh:mm:ss
          * M
          */
-        @CheckNotEmpty(fieldName = "商业险起保日期", message = "商业险起保日期不能为空")
+       // @CheckNotEmpty(fieldName = "商业险起保日期", message = "商业险起保日期不能为空")
         private String beginDate;
         /***
          * 商业险短期单止期
@@ -800,6 +932,9 @@ public class QuoteRequest extends PingAnBaseRequest {
          */
         private String beginDate;
 
+        public ForceQuoteDTO(String beginDate) {
+            this.beginDate = beginDate;
+        }
     }
     /***
      * 商业险家用车折扣方案序号
@@ -882,7 +1017,11 @@ public class QuoteRequest extends PingAnBaseRequest {
         @CheckNotEmpty(fieldName = "购买份数", message = "购买份数不能为空")
         private String sellListSize;
 
-
+        public UnAutoListInfoDTO(String productCode, String packageCode, String sellListSize) {
+            this.productCode = productCode;
+            this.packageCode = packageCode;
+            this.sellListSize = sellListSize;
+        }
     }
     /***
      * 新增加设备损失险设备信息列表
@@ -1044,4 +1183,111 @@ public class QuoteRequest extends PingAnBaseRequest {
             throw new FieldEmptyException(e.getMessage());
         }
     }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/19 8:44
+     *  @Description: 赋值平安的商业险字段
+     */
+    public static QuoteRequest transferPingAnRequestMsg(List<KindInfoVo> kinds, QuoteRequest quoteRequest, CarConfirmResponse.BizQuoteConfigDTO bizQuoteConfigDTO) {
+
+        for (KindInfoVo kindInfoVo : kinds) {
+            String code = kindInfoVo.getKindCode();
+            //机动车损失险
+            String amount = String.format("%.0f", kindInfoVo.getAmount());
+            String unitAmount = String.format("%.0f", kindInfoVo.getUnitAmount());
+            if (InsurKind.A.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount01(String.valueOf(kindInfoVo.getAmount()>0?1:0)) ;
+                if("1".equals(quoteRequest.getAmount01())){
+                    //车损险默认值
+                    String amount01Default = bizQuoteConfigDTO.getAmount01Default();
+                    quoteRequest.setInputAmount(amount01Default);
+
+                }
+            }
+            //车损险绝对免赔额(元)
+            //quoteRequest.setInputAmount01(" 109791.0");
+            //三者险
+            if (InsurKind.B.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount02(amount) ;
+            }
+            //乘客责任险
+            if (InsurKind.D4.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount05(unitAmount) ;
+            }
+            //乘客责任险
+            if (InsurKind.D3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount04(unitAmount) ;
+            }
+            //  附加车上货物责任险   暂时没有
+            //  附加医保外用药责任险(第三者责任保险)
+            if (InsurKind.SY_FJ_YBW1.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount07(String.valueOf(kindInfoVo.getAmount()>1?1:0)) ;
+                quoteRequest.setAmount07Fee(amount) ;
+            }
+            // 附加医保外用药责任险(车上人员责任保险(乘客))
+            if (InsurKind.SY_FJ_YBW2.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount09(String.valueOf(kindInfoVo.getAmount()>1?1:0)) ;
+                quoteRequest.setAmount09Fee(amount) ;
+            }
+            // 附加医保外用药责任险(车上人员责任保险(司机))
+            if (InsurKind.SY_FJ_YBW3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount08(String.valueOf(kindInfoVo.getAmount()>1?1:0)) ;
+                quoteRequest.setAmount08Fee(amount) ;
+            }
+            //附加修理期间费用补偿险  暂时没有
+            // 附加新增加设备损失险   暂时没有
+            //附加车身划痕损失险
+            if (InsurKind.L.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount17(amount) ;
+            }
+            // 附加精神损害抚慰金责任险(三者)
+            // 附加精神损害抚慰金责任险(司机)
+            // 附加精神损害抚慰金责任险(乘客)
+            //  附加车轮单独损失险
+            // 附加绝对免赔率特约险(车损)
+            if (InsurKind.MJ1.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount53(amount) ;
+            }
+            // 附加绝对免赔率特约险(车损)
+            if (InsurKind.MJ1.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount53(amount) ;
+            }
+            // 附加绝对免赔率特约险(三者)
+            if (InsurKind.MJ2.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount54(amount) ;
+            }
+            // 附加绝对免赔率特约险(司机)
+            if (InsurKind.MJ3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount55(amount) ;
+            }
+            // 附加绝对免赔率特约险(乘客)
+            if (InsurKind.MJ4.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount56(amount) ;
+            }
+            // 附加法定节假日限额翻倍险
+            if (InsurKind.BD.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount74(amount) ;
+            }
+            //附加发动机进水损坏除外特约条款
+            // 道路救援服务特约条款(9座以下非营业客车可以投保)
+            if (InsurKind.TY1.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount01Sv(amount) ;
+            }
+            //车辆安全检测特约条款
+            if (InsurKind.TY2.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount02Sv(amount) ;
+            }
+            //代为驾驶服务特约条款
+            if (InsurKind.TY3.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount03Sv(amount) ;
+            }
+            //代为送检服务特约条款
+            if (InsurKind.TY4.getCode().equalsIgnoreCase(code)) {
+                quoteRequest.setAmount04Sv(amount);
+            }
+        }
+        return quoteRequest;
+    }
 }

+ 51 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/RecoverApplyVerifyCodeRequest.java

@@ -0,0 +1,51 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 状态回收
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RecoverApplyVerifyCodeRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * C
+     * 江苏、无锡、苏州机构,投保人为个人	商业险投保单号
+     */
+    private String bizApplyNo;
+    /***
+     *C
+     * 江苏、无锡、苏州机构,投保人为个人	交强险投保单号
+     */
+    private String forceApplyNo;
+    /***
+     * M	验证码
+     */
+    private String issueCode;
+    /***
+     * C
+     *     江苏、无锡、苏州	验证编码
+     */
+    private String smsAuthenticationNo;
+
+    public RecoverApplyVerifyCodeRequest() {
+    }
+
+    public RecoverApplyVerifyCodeRequest(String userId, String bizApplyNo, String forceApplyNo, String issueCode, String smsAuthenticationNo) {
+        this.userId = userId;
+        this.bizApplyNo = bizApplyNo;
+        this.forceApplyNo = forceApplyNo;
+        this.issueCode = issueCode;
+        this.smsAuthenticationNo = smsAuthenticationNo;
+    }
+}

+ 7 - 5
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/RenewalConfirmRequest.java

@@ -22,13 +22,18 @@ public class RenewalConfirmRequest extends PingAnBaseRequest {
      * M 必须传值
      * 车主证件后6位
      */
-    private String checkNo;
+    private String userId;
     /***
      * M 必须传值
      * 对flowid,checkNo,userId参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
      * RSA秘钥找平安获取
      */
-    private String signature;
+    private String flowid;
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String checkNo;
 
     public RenewalConfirmRequest(PingAnConfigureParameters parameters, String flowid, String checkNo) {
         this.setUserId(parameters.getUserId());
@@ -48,8 +53,5 @@ public class RenewalConfirmRequest extends PingAnBaseRequest {
         if(this.getCheckNo()==null || "".equals(this.getCheckNo())){
             throw new FieldEmptyException("车主证件后6位不能为空!!!");
         }
-        if(this.getSignature()==null || "".equals(this.getSignature())){
-            throw new FieldEmptyException("密钥不能为空!!!");
-        }
     }
 }

+ 5 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/RepealDocumentRequest.java

@@ -17,6 +17,11 @@ import lombok.EqualsAndHashCode;
 @Data
 public class RepealDocumentRequest extends PingAnBaseRequest{
 
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
     /***
      * 文件类型
      * 1-撤销投保单,2-撤销通知单,3-撤销投保预确认码,4-撤销平台交易号

+ 7 - 4
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ScanCodeURLRequest.java

@@ -22,6 +22,11 @@ import java.util.ArrayList;
 @Data
 public class ScanCodeURLRequest extends PingAnBaseRequest{
 
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
     /***
      * 投保单号集合
      */
@@ -32,10 +37,8 @@ public class ScanCodeURLRequest extends PingAnBaseRequest{
      */
     private String dataSource;
 
-    public ScanCodeURLRequest(String applyno,String documentType,String dataSource) {
-        ArrayList<ScanCodeURLRequest.DocumentDTO> documentList=new ArrayList<ScanCodeURLRequest.DocumentDTO>();
-        ScanCodeURLRequest.DocumentDTO  dto=new  ScanCodeURLRequest.DocumentDTO(applyno,documentType);
-        documentList.add(dto);
+    public ScanCodeURLRequest(ArrayList<DocumentDTO> documentList,String dataSource,String userId) {
+        this.setUserId(userId);
         this.setDocumentList(documentList);
         this.setDataSource(dataSource);
     }

+ 11 - 10
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SearchPAVehicleListRequest.java

@@ -16,18 +16,22 @@ import lombok.EqualsAndHashCode;
 @Data
 public class SearchPAVehicleListRequest extends PingAnBaseRequest {
 
-    private static final long serialVersionUID = 6733489357016348708L;
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M 必须传值
+     * flowid
+     */
+    private String flowid;
 
     /**
      * 车型关键字
      */
     private String keyword;
 
-    /**
-     * 对userId、keyword、flowid参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
-     * RSA私钥找平安获取
-     */ 
-    private String  signature;
 
     public SearchPAVehicleListRequest(String userId, String flowid, String keyword) {
         this.setUserId(userId);
@@ -43,14 +47,11 @@ public class SearchPAVehicleListRequest extends PingAnBaseRequest {
             throw new FieldEmptyException("合作伙伴操作用户ID-UserId不能为空!!!");
         }
         if(this.getFlowid()==null || "".equals(this.getFlowid())){
-            throw new FieldEmptyException("3.1返回的流程id不能为空!!!");
+            throw new FieldEmptyException("标的检查流程id不能为空!!!");
         }
         if(this.getKeyword()==null || "".equals(this.getKeyword())){
             throw new FieldEmptyException("关键字不能为空!!!");
         }
-        if(this.getSignature()==null || "".equals(this.getSignature())){
-            throw new FieldEmptyException("签名加密不能为空!!!");
-        }
     }
 
 

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

@@ -0,0 +1,47 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 短信验证  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SendApplyPolicyRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * C
+     * 江苏、无锡、苏州机构,投保人为个人	商业险投保单号
+     */
+    private String bizApplyNo;
+    /***
+     *C
+     * 江苏、无锡、苏州机构,投保人为个人	交强险投保单号
+     */
+    private String forceApplyNo;
+
+    /***
+     *C
+     * 江苏、无锡、苏州机构,投保人为个人	交强险投保单号
+     */
+    private String moblePhone;
+
+    public SendApplyPolicyRequest() {
+    }
+
+    public SendApplyPolicyRequest(String userId, String bizApplyNo, String forceApplyNo,String moblePhone) {
+        this.userId = userId;
+        this.bizApplyNo = bizApplyNo;
+        this.forceApplyNo = forceApplyNo;
+        this.moblePhone = moblePhone;
+    }
+}

+ 63 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SignEleApplyRequest.java

@@ -0,0 +1,63 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.CheckNotEmpty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 16:57
+ *  @Description:  电子保单签署   入参
+ */
+@Data
+public class SignEleApplyRequest extends PingAnBaseRequest {
+
+    /***
+     *  M
+     * 必传	合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    @CheckNotEmpty(fieldName = "合作伙伴操作用户ID", message = "合作伙伴操作用户ID不能为空")
+    private String userId;
+    /***
+     * M	商业险投保单号
+     */
+    @CheckNotEmpty(fieldName = "商业险投保单号", message = "商业险投保单号不能为空")
+    private String bizApplyNo;
+    /***
+     * 	M	交强险投保单号
+     *
+     */
+    @CheckNotEmpty(fieldName = "交强险投保单号", message = "交强险投保单号不能为空")
+    private String forceApplyNo;
+    /***
+     * M	时间戳
+     *
+     */
+    @CheckNotEmpty(fieldName = "时间戳", message = "时间戳不能为空")
+    private String timestamp;
+    /***
+     * 	C
+     * (此字段不参与排序加签)	链接类型
+     * GET-生成url,会redirect。
+     * 其余、空-返回script form表单(默认)。
+     *
+     */
+    private String urlType;
+    /***
+     * 	C	回退URL、签署成功跳转URL
+     */
+    private String callBackUrl;
+
+
+    public SignEleApplyRequest() {
+    }
+
+    public SignEleApplyRequest(String userId, String bizApplyNo, String forceApplyNo, String timestamp, String urlType, String callBackUrl) {
+        this.userId = userId;
+        this.bizApplyNo = bizApplyNo;
+        this.forceApplyNo = forceApplyNo;
+        this.timestamp = timestamp;
+        this.urlType = urlType;
+        this.callBackUrl = callBackUrl;
+    }
+}

+ 67 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/StorefrontRequest.java

@@ -0,0 +1,67 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import com.ydtech.modules.order.entity.vo.pingan.StorefrontQueryVo;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/23 9:36
+ *  @Description:  获取平安门店柜面信息
+ */
+@Data
+public class StorefrontRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M	城市代码
+     */
+    private String cityCode;
+    /***
+     *M	区县代码
+     */
+    private String countyCode;
+
+    /***
+     *M	区县代码
+     */
+    private String searchName;
+
+    /***
+     *M	区县代码
+     */
+    private String GPS_X;
+
+    /***
+     *M	区县代码
+     */
+    private String GPS_Y;
+    /***
+     *M	区县代码
+     */
+    private int page;
+
+    /***
+     *M	区县代码
+     */
+    private int pageCount;
+
+
+    public StorefrontRequest() {
+    }
+
+    public  StorefrontRequest(StorefrontQueryVo storefrontQueryVo) {
+        this.userId = storefrontQueryVo.getUserId();
+        this.cityCode = storefrontQueryVo.getCityCode();
+        this.countyCode = storefrontQueryVo.getCountyCode();
+        this.searchName = storefrontQueryVo.getSearchName();
+        this.GPS_X = storefrontQueryVo.getGPS_X();
+        this.GPS_Y = storefrontQueryVo.getGPS_Y();
+        this.page = storefrontQueryVo.getPageNum();
+        this.pageCount = storefrontQueryVo.getPageSize();
+    }
+}

+ 87 - 19
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SubmitApplyRequest.java

@@ -1,13 +1,16 @@
 package com.ydtech.modules.order.entity.api.pingan.request;
 
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.pingan.constants.dict.document.PingAnDocumentClassEnum;
 import com.ydtech.modules.order.entity.api.pingan.utils.NetworkUtils;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.CheckNotEmpty;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.FieldEmptyException;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validate;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validator;
 import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
-import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.po.InsTaskImages;
+import com.ydtech.modules.order.entity.po.InsUploadFiles;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -29,7 +32,17 @@ import java.util.Map;
 @Data
 public class SubmitApplyRequest extends PingAnBaseRequest {
 
-    private static final long serialVersionUID = 3439644023985148752L;
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M 必须传值
+     * 对flowid,checkNo,userId参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串,然后对该字符串进行签名,得到signature
+     * RSA秘钥找平安获取
+     */
+    private String flowid;
     /***
      * 是否核保,如果只是查看验车、特别约定,则可以传false
      * true,false
@@ -106,17 +119,17 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
     /***
      *  被保人信息
      */
-    @CheckNotEmpty(fieldName = "被保人信息")
+    //@CheckNotEmpty(fieldName = "被保人信息")
     private InsuredDTO insured;
     /***
      * 投保人信息
      */
-    @CheckNotEmpty(fieldName = "投保人信息")
+    //@CheckNotEmpty(fieldName = "投保人信息")
     private ApplicantDTO applicant;
     /***
      * 收单信息
      */
-    @CheckNotEmpty(fieldName = "收单信息")
+    //@CheckNotEmpty(fieldName = "收单信息")
     private AddressDTO address;
     /***
      *  【不传则取会用默认特约】
@@ -330,7 +343,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
      */
     private List<DocListDTO> docList;
     //todo
-    public SubmitApplyRequest(PingAnConfigureParameters parameters, BaseQuoteInfoVo quoteInfo, String flowid,String isApply) {
+    public SubmitApplyRequest(PingAnConfigureParameters parameters, String flowid, String isApply, InsOrders insOrders,List<DocListDTO> docList,List<BizSpecialPromiseListDTO> bizSpecialPromiseList,List<BizSpecialPromiseListDTO> forceSpecialPromiseList) {
 
         this.setUserId(parameters.getUserId());
         this.setFlowid(flowid);
@@ -339,14 +352,24 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
         this.setIp(map.get("ip"));
         this.setMacAddress(map.get("mac"));
         // 车主
-        CustomerInfoVo ownerInfo = quoteInfo.getOwnerInfo();
+        CustomerInfoVo ownerInfo = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
         this.register=new SubmitApplyRequest.RegisterDTO(ownerInfo);
         // 投保人信息
-        CustomerInfoVo policyHolderInfo = quoteInfo.getPolicyHolderInfo();
+        CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
         this.applicant=new SubmitApplyRequest.ApplicantDTO(policyHolderInfo);
         // 被保人信息
-        CustomerInfoVo insuredPersonInfo = quoteInfo.getInsuredPersonInfo();
+        CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
         this.insured=new SubmitApplyRequest.InsuredDTO(insuredPersonInfo);
+        // 地址
+        AddressDTO  addressDTO =new AddressDTO("1", policyHolderInfo.getAddr(), policyHolderInfo.getName(), policyHolderInfo.getMobile(), "", "");
+
+        this.address=addressDTO;
+        //交强特约
+        this.bizSpecialPromiseList= bizSpecialPromiseList;
+        //商业特约
+        this.forceSpecialPromiseList=forceSpecialPromiseList;
+        //上传影像
+        this.docList =docList;
     }
 
     /***
@@ -399,7 +422,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          * M
          * 浙江、大连必传
          */
-        @CheckNotEmpty(fieldName = "手机或者家庭电话", message = "手机或者家庭电话不能为空")
+        //@CheckNotEmpty(fieldName = "手机或者家庭电话", message = "手机或者家庭电话不能为空")
         private String mobile;
         /***
          * 被保人证件有效期开始日期
@@ -421,7 +444,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          *
          * 浙江、大连必传
          */
-        @CheckNotEmpty(fieldName = "地址", message = "地址不能为空")
+        //@CheckNotEmpty(fieldName = "地址", message = "地址不能为空")
         private String address;
 
         public InsuredDTO(CustomerInfoVo insuredPersonInfo) {
@@ -450,7 +473,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          * 投保人名称
          * m
          */
-        @CheckNotEmpty(fieldName = "投保人名称", message = "投保人名称不能为空")
+        //@CheckNotEmpty(fieldName = "投保人名称", message = "投保人名称不能为空")
         private String name;
         /***
          * 证件类型
@@ -469,14 +492,14 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          * 传组织机构代码证、营业执照时,会从国家代码中心检查
          * M
          */
-        @CheckNotEmpty(fieldName = "证件类型", message = "证件类型不能为空")
+        //@CheckNotEmpty(fieldName = "证件类型", message = "证件类型不能为空")
         private String idType;
         /***
          * 证件号码
          * M
          *
          */
-        @CheckNotEmpty(fieldName = "证件号码", message = "证件号码不能为空")
+        //@CheckNotEmpty(fieldName = "证件号码", message = "证件号码不能为空")
         private String idNo;
         /***
          * 投保人证件有效期开始日期
@@ -510,7 +533,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          *
          * 江苏、苏州、无锡,并且投保人个团标志为个人时
          */
-        @CheckNotEmpty(fieldName = "手机或者家庭电话", message = "手机或者家庭电话不能为空")
+        //@CheckNotEmpty(fieldName = "手机或者家庭电话", message = "手机或者家庭电话不能为空")
         private String mobile;
         /***
          * 电子邮箱
@@ -558,7 +581,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          *
          * 浙江、大连必传
          */
-        @CheckNotEmpty(fieldName = "地址", message = "地址不能为空")
+        //@CheckNotEmpty(fieldName = "地址", message = "地址不能为空")
         private String address;
         /***
          * 联系人证件类型
@@ -597,6 +620,10 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
             this.name = policyHolderInfo.getName();
             this.certificateIssueDate = policyHolderInfo.getIdentifyValidDate();
             this.certificateValidDate = policyHolderInfo.getIdentifyValidEndDate();
+            this.idType = ("身份证".equals(policyHolderInfo.getIdentifyType()) || "01".equals(policyHolderInfo.getIdentifyType()))?"01":"";
+            this.idNo = policyHolderInfo.getIdentifyNumber();
+            this.mobile = policyHolderInfo.getMobile();
+
         }
     }
     /***
@@ -612,7 +639,7 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          * (0-配送只会在后台记录配送信息,不会做系统自动配送)
          * m
          */
-        @CheckNotEmpty(fieldName = "保单领取方式", message = "保单领取方式不能为空")
+        //@CheckNotEmpty(fieldName = "保单领取方式", message = "保单领取方式不能为空")
         private String receiveMode;
         /***
          * 收件详细地址
@@ -644,6 +671,14 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          */
         private String townCode;
 
+        public AddressDTO(String receiveMode, String address, String name, String mobile, String townCityCode, String townCode) {
+            this.receiveMode = receiveMode;
+            this.address = address;
+            this.name = name;
+            this.mobile = mobile;
+            this.townCityCode = townCityCode;
+            this.townCode = townCode;
+        }
     }
     /***
      * 【不传则取会用默认特约】
@@ -679,8 +714,6 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
      */
     @Data
     public static class DocListDTO implements Serializable {
-
-        private static final long serialVersionUID = -3042944648863765719L;
         /***
          * 上传至iobs的文件id
          * 建议用以下拼接,可以确保唯一
@@ -735,6 +768,41 @@ public class SubmitApplyRequest extends PingAnBaseRequest {
          * o
          */
         private String developmentStage;
+
+        public DocListDTO() {
+        }
+
+        public DocListDTO(String docId, String documentClass, String documentType, String documentName, String documentFormat, String documentSize, String certificateBeginDate, String certificateEndDate, String carDriverType, String developmentStage) {
+            this.docId = docId;
+            this.documentClass = documentClass;
+            this.documentType = documentType;
+            this.documentName = documentName;
+            this.documentFormat = documentFormat;
+            this.documentSize = documentSize;
+            this.certificateBeginDate = certificateBeginDate;
+            this.certificateEndDate = certificateEndDate;
+            this.carDriverType = carDriverType;
+            this.developmentStage = developmentStage;
+        }
+
+        public DocListDTO(String docId, String documentClass, String documentType, String documentName, String documentFormat) {
+            this.docId = docId;
+            this.documentClass = documentClass;
+            this.documentType = documentType;
+            this.documentName = documentName;
+            this.documentFormat = documentFormat;
+        }
+
+        public  DocListDTO  getDocListDTOMsg(InsUploadFiles fiels, InsTaskImages insTaskImages) {
+            String filePath = fiels.getFilePath();
+            String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
+            PingAnDocumentClassEnum fileEnum = PingAnDocumentClassEnum.getCode(insTaskImages.getImageType());
+            String documentClass=fileEnum.getDocument();
+            String documentType=fileEnum.getDocumentType();
+            String documentName = fileName.split("\\.")[0];
+            String documentFormat = fileName.split("\\.")[1];
+           return new DocListDTO(insTaskImages.getPinganKey(),documentClass,documentType,documentName,documentFormat);
+        }
     }
     @Validate
     public void validate() {

+ 33 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SupplementMaterialRequest.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/23 11:03
+ *  @Description:  查询事后未上传资料清单  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SupplementMaterialRequest extends PingAnBaseRequest {
+
+
+    /***
+     * M	投保单号
+     */
+    private String applyPolicyNo;
+    /***
+     * C	保单号	非必传
+     */
+    private String policyNo;
+
+    public SupplementMaterialRequest() {
+    }
+
+    public SupplementMaterialRequest(String applyPolicyNo, String policyNo) {
+        this.applyPolicyNo = applyPolicyNo;
+        this.policyNo = policyNo;
+    }
+}

+ 4 - 2
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/UnAutoProductDetailRequest.java

@@ -7,7 +7,6 @@ import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validator;
 import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
 import com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 /**
  *  @version
  *  @author: hxl
@@ -16,11 +15,14 @@ import lombok.EqualsAndHashCode;
  *   userId	M
  *  必传	合作伙伴操作用户ID,用来记录合作伙伴操作人身份
  */
-@EqualsAndHashCode(callSuper = true)
 @Data
 public class UnAutoProductDetailRequest extends PingAnBaseRequest {
 
     private static final long serialVersionUID = 9069583090917257234L;
+    /**
+     * 合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private String userId;
     /***
      * 产品编码
      * M

+ 15 - 7
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/UnAutoProductListRequest.java

@@ -6,7 +6,6 @@ import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.FieldEmptyExce
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validate;
 import com.ydtech.modules.order.entity.api.pingan.utils.checkNull.Validator;
 import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
-import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -22,7 +21,12 @@ import lombok.EqualsAndHashCode;
 @Data
 public class UnAutoProductListRequest extends PingAnBaseRequest {
 
-    private static final long serialVersionUID = -8799389547040438941L;
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    @CheckNotEmpty(fieldName = "合作伙伴id", message = "合作伙伴id不能为空")
+    private String userId;
     /***
      * 车辆使用性质代码01-营业,
      * 02-非营业
@@ -55,6 +59,7 @@ public class UnAutoProductListRequest extends PingAnBaseRequest {
      * C
      * 适用于ToC场景
      */
+    @CheckNotEmpty(fieldName = "城市编码", message = "城市编码不能为空")
     private String cityCode;
     /***
      * 车商编码,传递后将减少查询结果
@@ -68,12 +73,15 @@ public class UnAutoProductListRequest extends PingAnBaseRequest {
      */
     private String tonNumber;
 
-    public UnAutoProductListRequest(PingAnConfigureParameters parameters, ProductQueryVo productQueryVo) {
+    public UnAutoProductListRequest(PingAnConfigureParameters parameters, ProductDetailsRequest productDetailsRequest) {
         this.setUserId(parameters.getUserId());
-        this.setUseAttribute(productQueryVo.getCarnature());
-        this.setOwnAttribute(productQueryVo.getCarnature());
-        this.setSeats(productQueryVo.getSeatCount());
-        this.setTonNumber(productQueryVo.getLimitLoad());
+        this.setUseAttribute(productDetailsRequest.getUseAttribute());
+        this.setOwnAttribute(productDetailsRequest.getOwnAttribute());
+        this.setSeats(productDetailsRequest.getSeats());
+        this.setInputBy(null);
+        this.setCityCode(parameters.getCityCode());
+        this.setSaleCode(productDetailsRequest.getSaleCode());
+        this.setTonNumber(productDetailsRequest.getTonNumber());
     }
 
     @Validate

+ 50 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/ViewToPayRequest.java

@@ -0,0 +1,50 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 好车主支付
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ViewToPayRequest extends PingAnBaseRequest {
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * C
+     * 江苏、无锡、苏州机构,投保人为个人	商业险投保单号
+     */
+    private String bizApplyNo;
+    /***
+     *C
+     * 江苏、无锡、苏州机构,投保人为个人	交强险投保单号
+     */
+    private String forceApplyNo;
+    /***
+     * timestamp	M	时间戳
+     */
+    private String timestamp;
+    /***
+     * callBackUrl	C	回退URL,左上角退回URL
+     */
+    private String callBackUrl;
+
+    public ViewToPayRequest() {
+    }
+
+    public ViewToPayRequest(String userId, String bizApplyNo, String forceApplyNo, String timestamp, String callBackUrl) {
+        this.userId = userId;
+        this.bizApplyNo = bizApplyNo;
+        this.forceApplyNo = forceApplyNo;
+        this.timestamp = timestamp;
+        this.callBackUrl = callBackUrl;
+    }
+}

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ApplyVerifyCodeResponse.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 16:57
+ *  @Description:  短信验证  入参
+ */
+@Data
+public class ApplyVerifyCodeResponse extends PingAnBaseResponse {
+    /***
+     *  O	后台接口执行信息
+     */
+    private String resultMessage;
+    /***
+     *后台接口执行编码
+     * 0-[成功]
+     * 1-异常
+     * 2-江苏投保人验证失败,弹出验证框
+     */
+    private String resultCode;
+
+}

+ 16 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/BeiJingIdAcquisitionResponse.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 短信验证  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class BeiJingIdAcquisitionResponse extends PingAnBaseResponse {
+
+}

+ 9 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/CarConfirmResponse.java

@@ -137,6 +137,12 @@ public class CarConfirmResponse extends PingAnBaseResponse {
          */
         private String specialCarDate;
 
+
+        public BizQuoteDTO(String beginDate, String specialCarFlag, String specialCarDate) {
+            this.beginDate = beginDate;
+            this.specialCarFlag = specialCarFlag;
+            this.specialCarDate = specialCarDate;
+        }
     }
 
     /***
@@ -153,6 +159,9 @@ public class CarConfirmResponse extends PingAnBaseResponse {
          */
         private String beginDate;
 
+        public ForceQuoteDTO(String beginDate) {
+            this.beginDate = beginDate;
+        }
     }
 
     /***

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ChexianStandardPrePaymentResponse.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version 
+ *  @author: hxl
+ *  @Date: 2024/7/23 14:15
+ *  @Description:  平安新CPC收银台  接口出参
+ */ 
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ChexianStandardPrePaymentResponse extends PingAnBaseResponse {
+
+    /***
+     * M
+     *     必传	交易编码	mit157889627959445896523
+     */
+    private String tradeNo;
+    /***
+     *     O可选出现	财务生成的支付链接url
+     */
+    private String payUrl;
+}

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/CommonResponse.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import com.ydtech.modules.order.entity.api.pingan.request.CommonRequest;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/16 12:24
+ *  @Description:  公共的请求信息
+ */
+@Data
+public class CommonResponse{
+
+
+    private CommonRequest data;
+
+
+    private String ret;
+
+
+    private String msg;
+
+    private String requestId;
+}

+ 16 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/DataResponse.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/16 12:24
+ *  @Description:  公共的请求信息
+ */
+@Data
+public class DataResponse {
+
+    private String data;
+
+}

+ 39 - 1
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/DocumentStatusListResponse.java

@@ -27,7 +27,7 @@ public class DocumentStatusListResponse extends PingAnBaseResponse {
     /***
      * 投保单集合
      */
-    private ArrayList<DocumentDTO> documentList;
+    private ArrayList<DocumentDTO> documentList=new ArrayList<DocumentDTO>();
     /***
      *投保单信息
      *
@@ -161,6 +161,11 @@ public class DocumentStatusListResponse extends PingAnBaseResponse {
          */
         private List<UnAutoListInfoDTO> xiaoWeiListInfo;
 
+        /***
+         * 组合财险
+         */
+        private List<CombinationInfoDTO> combinationInfoList;
+
 
         /***
          * 产品信息
@@ -209,4 +214,37 @@ public class DocumentStatusListResponse extends PingAnBaseResponse {
 
         }
     }
+    /***
+     * 产品信息
+     */
+    @Data
+    public static class CombinationInfoDTO implements Serializable {
+        /***
+         * 产品编码
+         * c
+         */
+        private String productCode;
+        /***
+         * 每份保费
+         * c
+         */
+        private String insuredAmount;
+        /***
+         * 最大可购买份数
+         * c
+         */
+        private String sellListSize;
+        /***
+         * 保单号
+         * c
+         */
+        private String policyNo;
+        /***
+         * 投保单号
+         * c
+         */
+        private String applyNo;
+
+    }
 }
+

+ 86 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/GetNoticeInfoResponse.java

@@ -0,0 +1,86 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 江苏获取微信缴费实名认证结果  出参
+ *   resultCode	M	0-[成功]
+ *             1-异常
+ *     resultMessage	O	后台结果信息
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class GetNoticeInfoResponse extends PingAnBaseResponse {
+
+    /***
+     * M	通知单号
+     */
+    private String noticeNo;
+
+    /***
+     *M	通知单状态
+     * 51待缴费
+     * 71、81已缴费
+     */
+    private String status;
+    /***
+     C	上海平台交易号
+     */
+    private String circPaymentNo;
+    /***
+     M	总金额
+     */
+    private String totalAmount;
+
+    /***
+     M	创建时间
+     yyyy-MM-dd HH:mm:ss
+     */
+    private String createdDate;
+    /***
+     C	缴费起期
+     yyyy-MM-dd HH:mm:ss
+     */
+    private String paymentBeginDate;
+    /***
+     C	缴费止期
+     yyyy-MM-dd HH:mm:ss
+     */
+    private String paymentEndDate;
+    /***
+     *  投保信息
+     */
+    private List<DocumentDto> documentList;
+
+
+    @Data
+    public static class DocumentDto implements Serializable {
+
+        /***
+         *C	投保单号
+         */
+        private String documentNo;
+        /***
+         *C	金额
+         */
+        private String amount;
+        /***
+         *C	收付项目
+         * 02 保费
+         * 0M 本年税费
+         * 0N 往年税费
+         * 0
+         *     A 意健险保费
+         * 0O 滞纳金(大写O不是阿拉伯数字0)
+         */
+        private String payItem;
+
+    }
+}

+ 41 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/GetWechatAuthInfoResponse.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 江苏获取微信缴费实名认证结果  出参
+ *   resultCode	M	0-[成功]
+ *             1-异常
+ *     resultMessage	O	后台结果信息
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class GetWechatAuthInfoResponse extends PingAnBaseResponse {
+
+    /***
+     *C	错误代码(‘0’成功;’400’失败)
+     */
+    private String errorCode;
+
+    /***
+     * C	错误描述,不通过原因
+     */
+    private String errorMessage;
+    /***
+     *C	认证编码
+     */
+    private String authenticationNo;
+
+    /***
+     *C	认证结果(’01’通过,无需双录;’02‘通过但需双录;’03’不通过;’04’待获取(微信缴费时使用))
+     */
+    private String authenticationResult;
+    /***
+     *C	通知单号
+     */
+    private String paymentNo;
+}

+ 75 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/NoticeAuthResponse.java

@@ -0,0 +1,75 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 支付实名认证建议在noticeDo接口进行    出参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NoticeAuthResponse extends PingAnBaseResponse {
+
+    /***
+     * M
+     *     必传	合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private PaymentInfoResult paymentInfoResult;
+
+
+    /***
+     * 车辆信息
+     */
+    @Data
+    public static class PaymentInfoResult implements Serializable {
+
+        /**
+         *C	错误代码
+         */
+        private String errorCode;
+        /**
+         *C	错误描述
+         */
+        private String errorMessage;
+        /**
+         *C
+         *     中保信认证模式	支付单号
+         */
+        private String businessNo;
+        /***
+         *C	认证记录ID
+         */
+        private String authSerialId;
+        /***
+         * C	认证编码
+         */
+        private String authenticationNo;
+        /***
+         * C
+         *     中保信认证模式	认证渠道
+         */
+        private String autherticationType;
+
+        /***
+         * C	认证结果(’01’通过,无需双录;’02‘通过但需双录;’03’不通过;’04’待获取(微信缴费时使用,待获取时,需继续调用获取微信缴费实名认证结果
+         */
+        private String authenticationResult;
+
+        /***
+         * C	缴费通知单号
+         */
+        private String paymentNo;
+
+        /***
+         * C
+         *     大江苏微信返回	微信授权URL
+         */
+        private String wechatAuthUrl;
+
+    }
+}

+ 85 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/NoticeDoResponse.java

@@ -0,0 +1,85 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 15:23
+ *  @Description:  生成支付通知单号  出参
+ *  resultMessage	O	后台接口执行信息
+ * resultCode	M	后台接口执行编码
+ * 0-成功
+ * 1-失败
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NoticeDoResponse extends PingAnBaseResponse {
+
+    /***
+     *  O	后台接口执行信息
+     */
+    private String resultMessage;
+    /***
+     * M	后台接口执行编码
+     * 0-[成功]
+     * 1-开通知单异常()
+     * 2-平台双录资料未补齐
+     * 3-缴费实名认证失败
+     * 4-需要短信验证
+     */
+    private String resultCode;
+    /***
+     * M	通知单号
+     */
+    private String noticeNo;
+    /***
+     * M	总金额
+     */
+    private String totalAmount;
+    /***
+     * C	投保单列表
+     */
+    private List<DocumentDto> documentNo;
+
+    @Data
+    public static class DocumentDto implements Serializable {
+
+        /***
+         *C	投保单号
+         */
+        private String documentNo;
+        /***
+         * C	单证类型
+         * 单据类型(01 投保单 02 保单 03 批改申请号 04 批单
+         *                     noticeNo	C	通知单号
+         *                     amount	C	金额
+         *                     faceRecResult	C	人脸识别结果
+         *                     elecSigndResult	C	电子签名结果
+         */
+        private String documentType;
+        /***
+         C	通知单号
+         */
+        private String noticeNo;
+        /***
+         C	金额
+         */
+        private String amount;
+        /***
+         C	人脸识别结果
+         */
+        private String faceRecResult;
+        /***
+         C	电子签名结果
+         */
+        private String elecSigndResult;
+
+    }
+
+}

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

@@ -0,0 +1,22 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 支付通知单查询  出参
+ *  resultMessage	O	后台接口执行信息
+ * resultCode	M	后台接口执行编码
+ * 0-成功
+ * 1-失败
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NoticeDoneResponse extends PingAnBaseResponse {
+
+
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/PayReturnResponse.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 支付回调  出参参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PayReturnResponse extends PingAnBaseResponse {
+    /***
+     * O可选出现	返回信息	成功
+     *
+     * resultCode  resultCode	M
+     * 必传	Y-成功
+     * N-失败
+     */
+    private String resultMsg;
+}

+ 34 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/RecoverApplyVerifyCodeResponse.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 状态回收 出参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RecoverApplyVerifyCodeResponse extends PingAnBaseResponse {
+
+    /***
+     *  O	后台接口执行信息
+     */
+    private String resultMessage;
+    /***
+     *后台接口执行编码
+     * 0-[成功]
+     * 1-异常
+     * 2-江苏投保人验证失败,弹出验证框
+     */
+    private String resultCode;
+    /***
+     *M
+     * 北京	阅读状态
+     * 阅读状态(1-已阅,0—未阅)
+     * 如果没有阅读则不能调用生成支付通知单号接口
+     */
+    private String applyReadStatus;
+}

+ 16 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SendApplyPolicyResponse.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 短信验证  入参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SendApplyPolicyResponse extends PingAnBaseResponse {
+
+}

+ 2 - 1
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ServiceContractResponse.java

@@ -4,6 +4,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  *  @version
@@ -23,7 +24,7 @@ public class ServiceContractResponse extends PingAnBaseResponse {
     /***
      * 返回数据
      */
-    private DAtaDTO data;
+    private List<DAtaDTO> data;
 
     @Data
     public static class DAtaDTO implements Serializable {

+ 27 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SignEleApplyResponse.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 16:57
+ *  @Description:  电子保单签署   出参
+ */
+@Data
+public class SignEleApplyResponse extends PingAnBaseResponse {
+    /***
+     *  O	后台接口执行信息
+     */
+    private String resultMessage;
+    /***
+     * M	后台接口执行编码
+     * 0-[成功]
+     * 1-开通知单异常()
+     * 2-平台双录资料未补齐
+     * 3-缴费实名认证失败
+     * 4-需要短信验证
+     */
+    private String resultCode;
+
+}

+ 117 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/StorefrontResponse.java

@@ -0,0 +1,117 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  @version 
+ *  @author: hxl
+ *  @Date: 2024/7/23 10:44
+ *  @Description:  获取平安门店柜面信息   出参
+ */ 
+@Data
+public class StorefrontResponse extends PingAnBaseResponse {
+
+    /***
+     *   门店列表
+     */
+    private List<StorefrontDTO> serviceList  =new ArrayList<StorefrontDTO>();
+    @Data
+    public static class StorefrontDTO implements Serializable {
+
+        private static final long serialVersionUID = 8797282780429139870L;
+        /***
+         *
+         *服务信息主键(柜面信息表主键)
+         */
+        private String serviceInfoId;
+        /***
+         *服务信息	非周末服务内容:保险咨询, 上门投诉, 理赔办理, 保单批改…
+         *
+         */
+        private String serviceinfo;
+        /***
+         是否有WIFI: 1-有,0-无
+         *
+         */
+        private String iswifi;
+        /***
+         *
+         服务点名称	平安产险山东分公司济南济阳门店
+         */
+        private String servicename;
+        /***
+         * 电话区号
+         */
+        private String areacode;
+        /***
+         * 区县代码
+         * */
+        private String countycode;
+        /***
+         * 城市代码
+         */
+        private String cityCode;
+        /***
+         * 省代码
+         */
+        private String provincecode;
+
+        /***
+         * 服务类型
+         */
+        private String servicetype;
+
+        /***
+         * 营业时间	非周末营业时间:上午08:00-12:00, 下午 13:30-17:30…
+         */
+        private String servicetime;
+
+
+        /***
+         * 经度
+         */
+        private String longitude;
+
+
+        /***
+         * 纬度
+         */
+        private String latitude;
+
+
+        /***
+         * 联系电话
+         */
+        private String telephone;
+
+
+        /***
+         * 服务点详细地址
+         */
+        private String detailaddress;
+
+        /***
+         * 柜面服务类型代码
+         */
+        private String storefrontServiceTypeCode;
+        /***
+         * 柜面服务类型描述
+         */
+        private String storefrontServiceTypeDesc;
+
+        /***
+         * 柜面类型代码
+         */
+        private String storefrontTypeCode;
+
+        /***
+         * 柜面类型描述
+         */
+        private String storefrontTypeDesc;
+    }
+
+}

+ 71 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SupplementMaterialResponse.java

@@ -0,0 +1,71 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/23 11:03
+ *  @Description:  查询事后未上传资料清单  出参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SupplementMaterialResponse extends PingAnBaseResponse {
+
+
+    /***
+     * M	投保单号
+     */
+    private String applyPolicyNo;
+    /***
+     * C	保单号	非必传
+     */
+    private Map<String,FileDTO> uploadedMap;
+
+    /***
+     * 资料大类
+     */
+    private Map<String,FileDTO> unUploadMap;
+
+    public SupplementMaterialResponse() {
+    }
+
+    @Data
+    public static class FileDTO implements Serializable {
+
+        /***
+         *
+         *C	是否以上任意均可,0、表示不是1、表示是;
+         */
+        private String isAnyone;
+        /***
+         *C	资料大类名称描述	投保人身份证明
+         *
+         */
+        private String documentClassName;
+        /***
+         * 文件集合
+         */
+        private List<DocTypeDTO> docTypeList=new ArrayList<DocTypeDTO>();
+
+
+
+        @Data
+        public static class DocTypeDTO implements Serializable {
+            /***
+             * C	文件小类编号
+             */
+            private String documentType;
+            /***
+             * C	文件小类名称
+             */
+            private String documentTypeName;
+        }
+    }
+}

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/UnAutoProductDetailResponse.java

@@ -21,7 +21,7 @@ public class UnAutoProductDetailResponse extends PingAnBaseResponse {
     /***
      * 险种责任信息列表
      */
-    private List<UnAutoProductDetailsDTO> unAutoProductDetailsDTOList;
+    private List<UnAutoProductDetailsDTO> unAutoProductDetails;
     /***
      * 险种责任信息列表
      */

+ 85 - 1
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/UnAutoProductListResponse.java

@@ -29,8 +29,10 @@ public class UnAutoProductListResponse extends PingAnBaseResponse {
      */
     private List<UnAutoListInfoDTO> xiaoWeiListInfo;
     /***
-     *
+     组合产品列表
      */
+    private List<ShowPackageInfoDTO> combinationInfoList;
+
     @Data
     public static class UnAutoListInfoDTO implements Serializable {
 
@@ -117,5 +119,87 @@ public class UnAutoProductListResponse extends PingAnBaseResponse {
         }
 
     }
+    @Data
+    public static class ShowPackageInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = 9082610442188831877L;
+        /***
+         * 财意险名称  每个险别下如有多套餐,则只能选择一个套餐
+         */
+        private String displayName;
+        /***
+         *   组合产品类型11
+         */
+        private String productType;
+        /***
+         * 产品信息
+         */
+        private List<ShowPackageInfoListDTO> showPackageInfoList;
+
+        /***
+         * 产品信息
+         */
+        @Data
+        public static class ShowPackageInfoListDTO implements Serializable {
+            private static final long serialVersionUID = -8503955203323398303L;
+            /***
+             * 产品编码
+             * m
+             */
+            private String productCode;
+            /***
+             * 折扣
+             * m
+             */
+            private String discount;
+            /***
+             * 每份保费
+             * m
+             */
+            private String insuredAmount;
+            /***
+             * 保费说明
+             * 每份保费或每份保费*座位数
+             * m
+             */
+            private String insuredAmountTips;
+            /***
+             * 最小投保年龄
+             * m
+             */
+            private String leastAcceptInsureAge;
+            /***
+             * 最大投保年龄
+             * m
+             */
+            private String topAcceptInsureAge;
+            /***
+             * 套餐编码
+             * m
+             */
+            private String packageCode;
+            /***
+             * 套餐名称
+             * m
+             */
+            private String packageName;
+            /***
+             * 版本号
+             * m
+             */
+            private String version;
+            /***
+             * 最大可购买份数
+             * m
+             */
+            private String sellListSize;
+            /***
+             *  组合产品标识
+             *   02-组合必选
+             * 01-不可单独销售
+             */
+            private String  combineProductType;
+        }
 
+    }
 }

+ 32 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/ViewToPayResponse.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/22 17:22
+ *  @Description: 好车主支付  出参
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ViewToPayResponse extends PingAnBaseResponse {
+
+    /***
+     *  O	后台接口执行信息
+     */
+    private String resultMessage;
+    /***
+     * M	后台接口执行编码
+     * 0-[成功]
+     * 1-开通知单异常()
+     * 2-平台双录资料未补齐
+     * 3-缴费实名认证失败
+     * 4-需要短信验证
+     */
+    private String resultCode;
+
+
+    private String data;
+}

+ 5 - 0
src/main/java/com/ydtech/modules/order/entity/dto/InsTaskImagesDto.java

@@ -43,4 +43,9 @@ public class InsTaskImagesDto implements Serializable {
      */
     @ApiModelProperty("文件访问路劲")
     private String url;
+
+
+    @ApiModelProperty("平安key")
+    private String pinganKey;
+
 }

+ 14 - 0
src/main/java/com/ydtech/modules/order/entity/dto/InsUploadImagesDto.java

@@ -43,4 +43,18 @@ public class InsUploadImagesDto implements Serializable {
     @ApiModelProperty("文件存储ID")
     private String imageId;
 
+
+    /**
+     * 平安key
+     */
+    @ApiModelProperty("平安key")
+    private String pinganKey;
+
+    /**
+     * id
+     */
+    @ApiModelProperty("id")
+    private String id;
+
+
 }

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/po/InsTaskImages.java

@@ -53,6 +53,12 @@ public class InsTaskImages implements Serializable {
      */
     private Date createTime;
 
+    /***
+     *  平安key
+     */
+    @TableField(value = "pingan_key")
+    private String pinganKey;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 12 - 0
src/main/java/com/ydtech/modules/order/entity/po/InsTaskImagesBase64.java

@@ -44,6 +44,18 @@ public class InsTaskImagesBase64 {
         this.imageType = insUploadImagesDto.getImageType();
         this.fileName = insUploadImagesDto.getFileName();
         this.base64String = map.get(insUploadImagesDto.getImageId());
+        this.id=insUploadImagesDto.getId();
+        this.pinganKey =insUploadImagesDto.getPinganKey();
     }
 
+    /***
+     *  平安上传的key
+     */
+    private String pinganKey;
+
+    /***
+     *  id
+     */
+    private String id;
+
 }

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

@@ -9,7 +9,6 @@ import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
 import com.ydtech.modules.order.entity.InsDrivingIntentionInsuranceSon;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.util.List;
@@ -100,4 +99,22 @@ public class InsDrivingIntentionInsuranceVo {
         this.sumAmount = insDrivingIntentionInsurance.getSumAmount();
         this.sumPremium = insDrivingIntentionInsurance.getSumPremium();
     }
+
+
+    public InsDrivingIntentionInsuranceVo(Integer id, Integer parentId, String projectName, String projectCode, String riskCode, String seatNum, String sumAmount, String sumPremium, Boolean isDefault, Integer quantity, List<RiskInfoVo> risks, List<KindInfoVo> kinds, List<InsDrivingIntentionInsuranceVo> children, List<InsDrivingIntentionInsuranceSon> son) {
+        this.id = id;
+        this.parentId = parentId;
+        this.projectName = projectName;
+        this.projectCode = projectCode;
+        this.riskCode = riskCode;
+        this.seatNum = seatNum;
+        this.sumAmount = sumAmount;
+        this.sumPremium = sumPremium;
+        this.isDefault = isDefault;
+        this.quantity = quantity;
+        this.risks = risks;
+        this.kinds = kinds;
+        this.children = children;
+        this.son = son;
+    }
 }

+ 17 - 0
src/main/java/com/ydtech/modules/order/entity/vo/NoCarInsuranceQueryVo.java

@@ -39,4 +39,21 @@ public class NoCarInsuranceQueryVo {
 
     @ApiModelProperty(value = "kind")
     private List<KindInfoVo> kind;
+
+    //添加平安需要的参数
+
+    @ApiModelProperty("车辆使用性质代码01-营业02-非营业")
+    private String useAttribute;
+
+    @ApiModelProperty("所属性质(01:机关,02:企业,03:私人 默认03:私人 车辆使用性质为01:营业时,所属性质不可以选择01:机关")
+    private String ownAttribute;
+
+    @ApiModelProperty("核定载质量(吨) 货车必填")
+    private String tonNumber;
+
+    @ApiModelProperty("是否查询组合产品  Y查询 默认传Y")
+    private String isUseCombine;
+
+    @ApiModelProperty("车辆种类  A0客户 、A1货车")
+    private String cimodelclass;
 }

+ 49 - 0
src/main/java/com/ydtech/modules/order/entity/vo/pingan/InsDrivingIntentionInsuranceSonVo.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.order.entity.vo.pingan;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 驾意险详细险种实体类
+ */
+
+@Data
+public class InsDrivingIntentionInsuranceSonVo implements Serializable {
+
+
+    private Integer id;
+
+    private String drivingCodeId;
+
+    private String companyId;
+
+    private String code;
+
+    private String name;
+
+    private String amount;
+
+    private String premium;
+
+    private String discount;
+
+    private String insuredAmountTips;
+
+    private String leastAcceptInsureAge;
+
+    private String topAcceptInsureAge;
+
+    private String version;
+
+    private String sellListSize;
+
+    private String  combineProductType;
+
+    private String productCode;
+
+    private String projectName;
+
+    private String quantity;
+
+}

+ 32 - 0
src/main/java/com/ydtech/modules/order/entity/vo/pingan/RenewalConfirmVo.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.order.entity.vo.pingan;
+
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/29 17:06
+ *  @Description:  续保
+ */
+@Data
+public class RenewalConfirmVo {
+    /***
+     *  协议id
+     */
+    private String agreementId;
+
+    /***
+     * 身份证后6位
+     */
+    private String idCord_h6;
+    /***
+     * 车牌号
+     */
+    private String licenseNo;
+
+    /**
+     * 车架号
+     *
+     */
+    private String frameNo;
+}

+ 62 - 0
src/main/java/com/ydtech/modules/order/entity/vo/pingan/StorefrontQueryVo.java

@@ -0,0 +1,62 @@
+package com.ydtech.modules.order.entity.vo.pingan;
+
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/23 9:36
+ *  @Description:  核保
+ */
+@Data
+public class StorefrontQueryVo{
+    /***
+     * M 必须传值
+     * 协议id
+     */
+    private String  companyId;
+
+    /***
+     * M 必须传值
+     * 车主证件后6位
+     */
+    private String userId;
+    /***
+     * M	城市代码
+     */
+    private String cityCode;
+    /***
+     *M	区县代码
+     */
+    private String countyCode;
+
+    /***
+     *M	区县代码
+     */
+    private String searchName;
+
+    /***
+     *M	区县代码
+     */
+    private String GPS_X;
+
+    /***
+     *M	区县代码
+     */
+    private String GPS_Y;
+    /***
+     *M	区县代码
+     */
+    private int pageNum;
+
+    /***
+     *M	区县代码
+     */
+    private int pageSize;
+
+
+    public StorefrontQueryVo() {
+    }
+
+
+}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff