Parcourir la source

中煤Api 对接

BifronsV il y a 3 ans
Parent
commit
6f62ed38a7

+ 6 - 3
src/main/java/com/ydtech/components/ZhongmeiRequestApiComponents.java

@@ -7,6 +7,7 @@ import com.ydtech.modules.order.entity.api.zm.BaseRequest;
 import com.ydtech.modules.order.entity.api.zm.BaseRequestHead;
 import com.ydtech.modules.order.entity.api.zm.BaseResponse;
 import com.ydtech.modules.order.entity.api.zm.request.ModelsQueryRequest;
+import com.ydtech.modules.order.entity.api.zm.response.ModelsQueryResponse;
 import com.ydtech.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.*;
@@ -14,6 +15,8 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.List;
+
 
 /**
  * @author wenks
@@ -58,14 +61,14 @@ public class ZhongmeiRequestApiComponents {
      * @param request 请求呢通
      * @param tClass 响应类型
      * @return 响应内容
-     * @param <T> 请求体
      */
-    public <T extends  BaseResponse> T modelQuery(ModelsQueryRequest request, Class<T> tClass) {
+    public List<ModelsQueryResponse.SimpleStadarCarDTO> modelQuery(ModelsQueryRequest request, Class<ModelsQueryResponse> tClass) {
         String transCode = "ModelsQuery";
         String url = zmApiConfigurationProperties.getUrl() + transCode + ".do";
         BaseRequestHead head = zmApiConfigurationProperties.getHead(transCode);
         request.setHead(head);
-        return post(request, url, tClass);
+        ModelsQueryResponse post = post(request, url, tClass);
+        return post.getSimpleStadarCar();
     }
 
 

+ 236 - 2
src/main/java/com/ydtech/modules/order/entity/api/zm/request/QuotedPriceRequest.java

@@ -1,12 +1,246 @@
 package com.ydtech.modules.order.entity.api.zm.request;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.ins.vo.CustomerInfoVo;
+import com.ydtech.modules.order.entity.api.zm.BaseRequest;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
 /**
  * @author wenks
  * @version 0.0.2
- * @description TODO
+ * @description 报价参数
  * @date 2023/4/21 15:29
  */
-public class QuotedPriceRequest {
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QuotedPriceRequest extends BaseRequest {
+
+    private static final long serialVersionUID = 751466864923522868L;
+
+    @JsonProperty("businessData")
+    private BusinessDataDTO businessData;
+
+    @NoArgsConstructor
+    @Data
+    public static class BusinessDataDTO {
+
+        // 保单归属地
+        @JsonProperty("policyLocation")
+        private PolicyLocationDTO policyLocation;
+
+        @JsonProperty("insuredObject")
+        private InsuredObjectDTO insuredObject;
+        @JsonProperty("contract")
+        private List<ContractDTO> contract;
+
+        // 客户信息
+        @JsonProperty("customer")
+        private List<CustomerDTO> customer;
+
+        @JsonProperty("accident")
+        private List<Object> accident;
+
+        @AllArgsConstructor
+        @NoArgsConstructor
+        @Data
+        public static class PolicyLocationDTO {
+            @JsonProperty("province")
+            private String province;
+            @JsonProperty("city")
+            private String city;
+            @JsonProperty("district")
+            private String district;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class InsuredObjectDTO {
+
+            @JsonProperty("policyCar")
+            private PolicyCarDTO policyCar;
+
+            @JsonProperty("simpleStadarCar")
+            private SimpleStadarCarDTO simpleStadarCar;
+
+            @NoArgsConstructor
+            @Data
+            public static class PolicyCarDTO {
+                @JsonProperty("engine")
+                private String engine;
+                @JsonProperty("newCarSign")
+                private Boolean newCarSign;
+                @JsonProperty("plateNo")
+                private String plateNo;
+                @JsonProperty("VIN")
+                private String vin;
+                @JsonProperty("chgOwnerFlag")
+                private String chgOwnerFlag;
+                @JsonProperty("registerDate")
+                private String registerDate;
+                @JsonProperty("transferDate")
+                private String transferDate;
+                @JsonProperty("ecdemicVehicleFlag")
+                private Boolean ecdemicVehicleFlag;
+                @JsonProperty("issueDate")
+                private String issueDate;
+                @JsonProperty("plateColorCode")
+                private String plateColorCode;
+                @JsonProperty("carCheckStatus")
+                private String carCheckStatus;
+
+
+
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class SimpleStadarCarDTO {
+                @JsonProperty("localModelCode")
+                private String localModelCode;
+                @JsonProperty("modelCode")
+                private String modelCode;
+                @JsonProperty("approvedLoad")
+                private String approvedLoad;
+                @JsonProperty("approvedPassengersCapacity")
+                private Integer approvedPassengersCapacity;
+                @JsonProperty("displacement")
+                private Double displacement;
+                @JsonProperty("purchasePrice")
+                private Integer purchasePrice;
+                @JsonProperty("energyTypes")
+                private String energyTypes;
+                @JsonProperty("brand")
+                private String brand;
+                @JsonProperty("brandCode")
+                private String brandCode;
+                @JsonProperty("series")
+                private String series;
+                @JsonProperty("seriesCode")
+                private String seriesCode;
+                @JsonProperty("power")
+                private Integer power;
+                @JsonProperty("unladenMass")
+                private Double unladenMass;
+                @JsonProperty("grossMass")
+                private Integer grossMass;
+                @JsonProperty("tractionMass")
+                private Integer tractionMass;
+            }
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class ContractDTO {
+            @JsonProperty("contractMain")
+            private ContractMainDTO contractMain;
+            @JsonProperty("coverage")
+            private List<CoverageDTO> coverage;
+
+            @NoArgsConstructor
+            @Data
+            public static class ContractMainDTO {
+                @JsonProperty("expiryDate")
+                private String expiryDate;
+                @JsonProperty("riskCode")
+                private String riskCode;
+                @JsonProperty("validDate")
+                private String validDate;
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class CoverageDTO {
+                @JsonProperty("unitAmount")
+                private Integer unitAmount;
+                @JsonProperty("quantity")
+                private Integer quantity;
+                @JsonProperty("amount")
+                private Integer amount;
+                @JsonProperty("relatedInd")
+                private String relatedInd;
+                @JsonProperty("kindCode")
+                private String kindCode;
+                @JsonProperty("kindName")
+                private String kindName;
+                @JsonProperty("deductibleRate")
+                private String deductibleRate;
+                @JsonProperty("deductible")
+                private String deductible;
+            }
+        }
+
+        @AllArgsConstructor
+        @NoArgsConstructor
+        @Data
+        public static class CustomerDTO {
+            // 名称
+            @JsonProperty("name")
+            private String name;
+            /**
+             * 证件类型
+             * 01 身份证
+             * 3 组织机构代码
+             * 4 统一社会信用代码
+             */
+            @JsonProperty("identifyType")
+            private String identifyType;
+            // 证件号码
+            @JsonProperty("identifyNumber")
+            private String identifyNumber;
+            // 地址
+            @JsonProperty("addr")
+            private String addr;
+            // 移动电话
+            @JsonProperty("mobile")
+            private String mobile;
+            // 电子保单接收邮箱
+            @JsonProperty("emailPolicy")
+            private String emailPolicy;
+            // 客户类型 1-个人,2-法人
+            @JsonProperty("type")
+            private String type;
+            // 客户角色
+            @JsonProperty("role")
+            private String role;
+            /**
+             * 发票种类
+             * 026	电子发票
+             * 007	普通发票
+             * 004	专用发票
+             */
+            @JsonProperty("invocieType")
+            private String invocieType;
+            // 投保人是否从事以下行业:银行、证券、期货、保险、律师、会计师、房地产、拍卖
+            @JsonProperty("jobRisk")
+            private String jobRisk;
+            // 证件有效起期
+            @JsonProperty("identifyValidDate")
+            private String identifyValidDate;
+            // identifyValidEndDate
+            @JsonProperty("identifyValidEndDate")
+            private String identifyValidEndDate;
 
+            public CustomerDTO(CustomerInfoVo customerInfoVo, String role) {
+                this.name = customerInfoVo.getName();
+                this.identifyType = "01";
+                this.identifyNumber = customerInfoVo.getIdentifyNumber();
+                this.addr = customerInfoVo.getAddr();
+                this.mobile = customerInfoVo.getMobile();
+                this.emailPolicy = customerInfoVo.getEmail();
+                this.type = "1";
+                this.role = role;
+                this.invocieType = "026";
+                this.jobRisk = "1";
+                this.identifyValidDate = customerInfoVo.getIdentifyValidDate();
+                this.identifyValidEndDate = customerInfoVo.getIdentifyValidEndDate();
+            }
 
+        }
+    }
 }

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

@@ -3,13 +3,17 @@ package com.ydtech.modules.order.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.ydtech.components.ZhongmeiRequestApiComponents;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.esm.model.InsTaskImage;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.esm.service.InsTaskImageService;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
+import com.ydtech.modules.ins.vo.CarInfoVo;
 import com.ydtech.modules.order.convert.SimpleStadarCarDTOConvert;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.api.zm.request.ModelsQueryRequest;
+import com.ydtech.modules.order.entity.api.zm.request.QuotedPriceRequest;
 import com.ydtech.modules.order.entity.api.zm.response.ModelsQueryResponse;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
@@ -26,6 +30,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.stereotype.Service;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -49,6 +54,9 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
     @Autowired
     private ZhongmeiRequestApiComponents zhongmeiRequestApiComponents;
 
+    @Autowired
+    private EsmInsCompanyService esmInsCompanyService;
+
     public ZhongMeiOrderApiServiceImpl(InsOrdersService insOrdersService, InsAreaCompanyService insAreaCompanyService, InsTaskImageService insTaskImageService) {
         this.insOrdersService = insOrdersService;
         this.insAreaCompanyService = insAreaCompanyService;
@@ -59,14 +67,36 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
     public HttpResult modelsQuery(String modelName) {
         ModelsQueryRequest modelsQueryResponse = new ModelsQueryRequest();
         modelsQueryResponse.setModelName(modelName);
-        ModelsQueryResponse response = zhongmeiRequestApiComponents.modelQuery(modelsQueryResponse, ModelsQueryResponse.class);
-        List<ModelsQueryResponse.SimpleStadarCarDTO> simpleStadarCar = response.getSimpleStadarCar();
-        List<CarModelDTO> map = SimpleStadarCarDTOConvert.INSTANCE.map(simpleStadarCar);
+        List<ModelsQueryResponse.SimpleStadarCarDTO> car = zhongmeiRequestApiComponents.modelQuery(modelsQueryResponse, ModelsQueryResponse.class);
+        List<CarModelDTO> map = SimpleStadarCarDTOConvert.INSTANCE.map(car);
         return HttpResult.ok(map);
     }
 
     @Override
     public HttpResult quote(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> zmQuoteVo) {
+        EsmInsCompany esmInsCompany = esmInsCompanyService.isOpen(zmQuoteVo.getCompanyId());
+
+        CarInfoVo carInfo = quoteInfo.getCarInfo();
+        // 1. 查询车型
+        ModelsQueryRequest modelsQueryResponse = new ModelsQueryRequest();
+        modelsQueryResponse.setModelName(carInfo.getModelcname());
+        List<ModelsQueryResponse.SimpleStadarCarDTO> simpleStadarCarDTOS = zhongmeiRequestApiComponents.modelQuery(modelsQueryResponse, ModelsQueryResponse.class);
+        // 1.1 过滤车型
+        List<ModelsQueryResponse.SimpleStadarCarDTO> stadarCarDTOS = simpleStadarCarDTOS.stream().filter(car -> carInfo.getCaryear().equals(car.getLfDate())).collect(Collectors.toList());
+        if(stadarCarDTOS.size() > 0){
+            simpleStadarCarDTOS = stadarCarDTOS;
+        }
+        ModelsQueryResponse.SimpleStadarCarDTO simpleStadarCarDTO = simpleStadarCarDTOS.stream().filter(car -> Integer.valueOf(carInfo.getPurchasePrice()).equals(car.getOriginalPurchasePrice())).collect(Collectors.toList()).get(0);
+
+
+
+
+
+
+        // 组装参数
+        QuotedPriceRequest.BusinessDataDTO.PolicyLocationDTO policyLocationDTO = new QuotedPriceRequest.BusinessDataDTO.PolicyLocationDTO();
+
+
 
         return null;
     }