Browse Source

平安修改

wks 2 năm trước cách đây
mục cha
commit
948ece75ab

+ 7 - 2
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -6,11 +6,13 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ydtech.config.properties.BohaiApiConfigurationProperties;
 import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
 import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
 import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
 import com.ydtech.modules.order.entity.api.bohai.request.*;
 import com.ydtech.modules.order.entity.api.bohai.response.*;
+import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import com.ydtech.modules.order.utils.SignatureUtils;
 import lombok.RequiredArgsConstructor;
@@ -21,6 +23,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.List;
 import java.util.Map;
 
 
@@ -104,8 +107,10 @@ public class BoHaiRequestApiComponent {
      * @param request 车辆查询请求实体
      * @return 响应
      */
-    public VehicleTypeQueryResponse vehicleTypeQuery(VehicleTypeQueryRequest request, String sysSourceCode) throws Exception {
-        return verificationResponse(request, properties.getUrl(), VehicleTypeQueryResponse.class, sysSourceCode, RequestType.Z00004);
+    public VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleTypeQuery(VehicleTypeQueryRequest request, String sysSourceCode, CarInfoVo carInfoVo) throws Exception {
+        VehicleTypeQueryResponse vehicleTypeQueryResponse =  verificationResponse(request, properties.getUrl(), VehicleTypeQueryResponse.class, sysSourceCode, RequestType.Z00004);
+        List<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO> vehicleModels = vehicleTypeQueryResponse.getData().getVehicleModels();
+        return new CarModelsFilterUtils<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO>().to(vehicleModels, carInfoVo);
     }
 
     /**

+ 41 - 20
src/main/java/com/ydtech/modules/order/components/pingan/PinganRequestApiComponents.java

@@ -1,31 +1,20 @@
 package com.ydtech.modules.order.components.pingan;
 
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ydtech.config.properties.PingAnApiConfigurationProperties;
-import com.ydtech.constants.InsuranceEnum;
-import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
-import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
-import com.ydtech.modules.order.entity.api.bohai.request.BoHaiBaseRequest;
-import com.ydtech.modules.order.entity.api.bohai.response.BoHaiBaseResponse;
-import com.ydtech.modules.order.entity.api.pingan.constants.RequestUrl;
-import com.ydtech.modules.order.entity.api.pingan.request.PingAnBaseRequest;
-import com.ydtech.modules.order.entity.api.pingan.response.PingAnBaseResponse;
-import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
-import com.ydtech.modules.order.utils.InsuranceLog;
-import com.ydtech.modules.order.utils.PingAnRSAUtils;
-import com.ydtech.modules.order.utils.SignatureUtils;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.order.entity.api.pingan.request.CarConfirmRequest;
+import com.ydtech.modules.order.entity.api.pingan.request.IndexRequest;
+import com.ydtech.modules.order.entity.api.pingan.request.SearchPAVehicleListRequest;
+import com.ydtech.modules.order.entity.api.pingan.response.CarConfirmResponse;
+import com.ydtech.modules.order.entity.api.pingan.response.IndexResponse;
+import com.ydtech.modules.order.entity.api.pingan.response.SearchPAVehicleListResponse;
+import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
-import java.util.Map;
+import java.util.List;
 
 @Component
 @RequiredArgsConstructor
@@ -35,6 +24,7 @@ public class PinganRequestApiComponents {
 
     private final PingAnApiConfigurationProperties properties;
 
+
     /**
      * 加密请求
      *
@@ -78,7 +68,38 @@ public class PinganRequestApiComponents {
 //    }
 
 
+    /**
+     * 标的信息
+     * @param indexRequest
+     * @return
+     */
+    public IndexResponse index(IndexRequest indexRequest) {
+        return new IndexResponse();
+    }
+
+    /**
+     * 平安车型搜索接口
+     *
+     * @param searchPAVehicleListRequest 平安车型请求参数
+     * @param carInfoVo                  晋掌柜车型
+     * @return 平安车型
+     */
+    public SearchPAVehicleListResponse.ModelsDto searchPAVehicle(SearchPAVehicleListRequest searchPAVehicleListRequest,
+                                                                 CarInfoVo carInfoVo) {
+        SearchPAVehicleListResponse searchPAVehicleListResponse = new SearchPAVehicleListResponse();
+        List<SearchPAVehicleListResponse.ModelsDto> models = searchPAVehicleListResponse.getModels();
+        return new CarModelsFilterUtils<SearchPAVehicleListResponse.ModelsDto>().to(models, carInfoVo);
+    }
 
+    /**
+     * 车辆确认接口
+     *
+     * @param carConfirmRequest
+     * @return
+     */
+    public CarConfirmResponse carConfirm(CarConfirmRequest carConfirmRequest) {
+        return new CarConfirmResponse();
+    }
 
 
 }

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

@@ -1,6 +1,11 @@
 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.response.SearchPAVehicleListResponse;
+import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -20,6 +25,9 @@ public class CarConfirmRequest extends PingAnBaseRequest {
 
     private String isInternetBusiness;
 
+    /**
+     *  车辆信息
+     */
     private VehicleDTO vehicle;
 
     private RegisterDTO register;
@@ -56,6 +64,22 @@ public class CarConfirmRequest extends PingAnBaseRequest {
 
     private String developmentStage;
 
+    public CarConfirmRequest(PingAnConfigureParameters parameters, BaseQuoteInfoVo quoteInfo, SearchPAVehicleListResponse.ModelsDto modelsDto) {
+        this.setUserId(parameters.getUserId());
+        CarInfoVo carInfo = quoteInfo.getCarInfo();
+//        this.vehicle = new VehicleDTO(carInfo, modelsDto);
+
+        // 车主
+        CustomerInfoVo ownerInfo = quoteInfo.getOwnerInfo();
+        // 投保人信息
+        CustomerInfoVo policyHolderInfo = quoteInfo.getPolicyHolderInfo();
+        // 被保人信息
+        CustomerInfoVo insuredPersonInfo = quoteInfo.getInsuredPersonInfo();
+
+
+
+    }
+
     @Data
     public static class VehicleDTO implements Serializable {
 
@@ -69,7 +93,13 @@ public class CarConfirmRequest extends PingAnBaseRequest {
         private String vehicleStyleUniqueId;
         private String autoModelName;
         private String seats;
+        /**
+         * 整备质量(吨)
+         */
         private String wholeWeight;
+        /**
+         * 核定载质量(吨)
+         */
         private String tonNumber;
         private String exhaustMeasure;
         private String power;
@@ -87,6 +117,39 @@ public class CarConfirmRequest extends PingAnBaseRequest {
         private String vehicleCodeForShangHai;
         private String specialCarLicense;
 
+//        public VehicleDTO(CarInfoVo carInfo, SearchPAVehicleListResponse.ModelsDto modelsDto) {
+//            this.registerDate = carInfo.getRegisterDate();
+//            this.frameNo = carInfo.getFrameNo();
+//            this.engineNo = carInfo.getEngineNo();
+//
+////            this.modelCode = modelsDto.getmod;
+//            this.paModelCode = modelsDto.getPaModelCode();
+//            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 = tonNumber;
+//
+//            this.exhaustMeasure = modelsDto.getExhaustMeasure();
+////            this.power = modelsDto.get;
+//            this.vehicleCertiType = vehicleCertiType;
+//            this.vehicleCertiNo = vehicleCertiNo;
+//            this.vehicleCertiDate = vehicleCertiDate;
+//            this.invoiceDate = invoiceDate;
+//            this.useAttribute = useAttribute;
+//            this.useAttributDetailCode = useAttributDetailCode;
+//            this.ownAttribute = ownAttribute;
+//            this.offerLastPolicyFlag = offerLastPolicyFlag;
+//            this.isOfferLocalUseProof = isOfferLocalUseProof;
+//            this.shanghaiVehicleType = shanghaiVehicleType;
+//            this.isNewEnergyVehicle = isNewEnergyVehicle;
+//            this.vehicleCodeForShangHai = vehicleCodeForShangHai;
+//            this.specialCarLicense = specialCarLicense;
+//        }
+
+
     }
 
 

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

@@ -1,5 +1,7 @@
 package com.ydtech.modules.order.entity.api.pingan.request;
 
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -38,6 +40,15 @@ public class IndexRequest extends PingAnBaseRequest {
 
     private boolean isAllowRepeat;
 
+    public IndexRequest(PingAnConfigureParameters parameters, CarInfoVo carInfoVo) {
+        this.setUserId(parameters.getUserId());
+        this.cityCode = parameters.getCityCode();
+        this.inputBy = parameters.getInputBy();
+        this.saleCode = parameters.getSaleCode();
+        this.vehicle = new VehicleDTO(carInfoVo);
+        this.isAllowRepeat = false;
+    }
+
     @Data
     public static class VehicleDTO implements Serializable {
 
@@ -53,6 +64,12 @@ public class IndexRequest extends PingAnBaseRequest {
          */
         private String frameNo;
 
+
+        public VehicleDTO(CarInfoVo carInfoVo) {
+            this.licenseNo = carInfoVo.getLicenseNo();
+            this.frameNo = carInfoVo.getFrameNo();
+        }
+
     }
 
     @Data

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

@@ -1,8 +1,10 @@
 package com.ydtech.modules.order.entity.api.pingan.request;
 
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 
 
 /**
@@ -21,4 +23,11 @@ public class SearchPAVehicleListRequest extends PingAnBaseRequest {
      */
     private String keyword;
 
+    public SearchPAVehicleListRequest(String userId, String flowid, String keyword) {
+        this.setUserId(userId);
+        this.setFlowid(flowid);
+
+        this.keyword = keyword;
+    }
+
 }

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

@@ -4,6 +4,7 @@ package com.ydtech.modules.order.entity.api.pingan.response;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.List;
@@ -16,6 +17,7 @@ import java.util.List;
 @AllArgsConstructor
 @EqualsAndHashCode(callSuper = true)
 @Data
+@NoArgsConstructor
 public class IndexResponse extends PingAnBaseResponse {
 
     private static final long serialVersionUID = 6550972601202599801L;

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

@@ -13,4 +13,9 @@ public class PingAnBaseResponse implements Serializable {
 
     private String resultCode;
 
+    /**
+     * 流程ID
+     */
+    private String flowid;
+
 }

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

@@ -1,10 +1,12 @@
 package com.ydtech.modules.order.entity.api.pingan.response;
 
+import com.ydtech.modules.order.entity.filter.CarModelsFilter;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
 import java.util.List;
 
 
@@ -26,7 +28,7 @@ public class SearchPAVehicleListResponse extends PingAnBaseResponse {
     @AllArgsConstructor
     @NoArgsConstructor
     @Data
-    public static class ModelsDto {
+    public static class ModelsDto implements Serializable, CarModelsFilter  {
 
         /**
          * 车型编码索引
@@ -106,6 +108,15 @@ public class SearchPAVehicleListResponse extends PingAnBaseResponse {
          */
         private String vehicleType;
 
+        @Override
+        public String getCarYear() {
+            return this.marketDate;
+        }
+
+        @Override
+        public String getPurchasePrice() {
+            return this.price;
+        }
     }
 
 }

+ 19 - 1
src/main/java/com/ydtech/modules/order/entity/config/PingAnConfigureParameters.java

@@ -13,7 +13,25 @@ import lombok.Data;
 @Data
 public class PingAnConfigureParameters implements ConfigureParameters {
 
-
+    /**
+     * 合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private String userId;
+
+    /**
+     * 由平安提供数据字段
+     */
+    private String cityCode;
+
+    /**
+     * 平安好伙伴外网录单账号
+     */
+    private String inputBy;
+
+    /**
+     * 车商编码/合作网点编码
+     */
+    private String saleCode;
 
 
 }

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

@@ -113,11 +113,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         // 2 车型查询接口
         CarInfoVo carInfo = quoteInfoVo.getCarInfo();
         VehicleTypeQueryRequest vehicleTypeQueryRequest = new VehicleTypeQueryRequest(parameters, carInfo.getModelcname(), orderNo);
-        VehicleTypeQueryResponse vehicleTypeQueryResponse = boHaiRequestApiComponent.vehicleTypeQuery(vehicleTypeQueryRequest,
-                parameters.getSysSourceCode());
-        List<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO> vehicleModels = vehicleTypeQueryResponse.getData().getVehicleModels();
         VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO =
-                new CarModelsFilterUtils<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO>().to(vehicleModels, quoteInfoVo.getCarInfo());
+                boHaiRequestApiComponent.vehicleTypeQuery(vehicleTypeQueryRequest, parameters.getSysSourceCode(), carInfo);
 
         // 3 车辆确认接口
         // 车主信息

+ 44 - 0
src/main/java/com/ydtech/modules/order/service/impl/PingAnOrderApiServiceImpl.java

@@ -1,23 +1,67 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.components.ConfigureParametersComponents;
+import com.ydtech.modules.order.components.pingan.PinganRequestApiComponents;
+import com.ydtech.modules.order.entity.api.pingan.request.CarConfirmRequest;
+import com.ydtech.modules.order.entity.api.pingan.request.IndexRequest;
+import com.ydtech.modules.order.entity.api.pingan.request.SearchPAVehicleListRequest;
+import com.ydtech.modules.order.entity.api.pingan.response.CarConfirmResponse;
+import com.ydtech.modules.order.entity.api.pingan.response.IndexResponse;
+import com.ydtech.modules.order.entity.api.pingan.response.SearchPAVehicleListResponse;
+import com.ydtech.modules.order.entity.config.PingAnConfigureParameters;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
 import com.ydtech.modules.order.service.PingAnOrderApiService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 
 
 @Service
+@RequiredArgsConstructor
 public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
 
+    private final PinganRequestApiComponents pinganRequestApiComponents;
+
+    private final PtlAgreementAttributionService ptlAgreementAttributionService;
+
+    private final ConfigureParametersComponents configureParametersComponents;
+
+
     @Override
     public HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo) {
+        // 协议id获取配置实体
+        String agreementId = quoteVo.getAgreementId();
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
+        // 通过 协议id获取配置实体
+        PingAnConfigureParameters parameters = configureParametersComponents.toEntity(PingAnConfigureParameters.class,
+                ptlAgreementAttribution);
+        // 车型查询
+        CarInfoVo carInfo = quoteInfo.getCarInfo();
+
+        // 1. 标的信息
+        IndexRequest indexRequest = new IndexRequest(parameters, carInfo);
+        IndexResponse indexResponse = pinganRequestApiComponents.index(indexRequest);
+        String flowid = indexResponse.getFlowid();
+
+
+        // 2. 车型查询
+        SearchPAVehicleListRequest searchPAVehicleListRequest = new SearchPAVehicleListRequest(parameters.getUserId(),
+                carInfo.getModelcname(), flowid);
+        SearchPAVehicleListResponse.ModelsDto modelsDto = pinganRequestApiComponents.searchPAVehicle(searchPAVehicleListRequest, carInfo);
 
+        // 2. 车辆信息确认
+        CarConfirmRequest carConfirmRequest = new CarConfirmRequest(parameters, quoteInfo, modelsDto);
+        CarConfirmResponse carConfirmResponse = pinganRequestApiComponents.carConfirm(carConfirmRequest);
 
 
         return null;