Prechádzať zdrojové kódy

诚泰驾意险bug的修复

dongxin 1 rok pred
rodič
commit
bf0d0c6478

+ 6 - 0
src/main/java/com/ydtech/modules/ins/model/vo/AccidentResponseVo.java

@@ -32,4 +32,10 @@ public class AccidentResponseVo {
     @ApiModelProperty("实际保费")
     private String actualPremium;
 
+    @ApiModelProperty("保单号")
+    private String policyNumber;
+
+    @ApiModelProperty("投保单号")
+    private String applicationNumber;
+
 }

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/api/chengtai/constants/RiskCodeEnum.java

@@ -20,8 +20,8 @@ public enum RiskCodeEnum {
     R0821("0821", "机动车商业保险(2020版)"),
     R0822("0822", "特种车商业保险(2020版)"),
     R0823("0823", "摩托车、拖拉机商业保险(2020版)"),
-    R0824("0824", "机动车单程提车保险(2020版)");
-
+    R0824("0824", "机动车单程提车保险(2020版)"),
+    R1116("ct_1116", "驾意险");
     private final String code;
 
     private final String desc;

+ 38 - 7
src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/InsurePremiumRequest.java

@@ -55,10 +55,11 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
                                 QueryCarActualValueResponse carActualValueResponse,
                                 PersonAreaVo personAreaVo,
                                 ChengTaiConfigureParameters parameters,
-                                BaseQuoteVo<InsDrivingIntentionInsurance> quoteVo){
+                                BaseQuoteVo<InsDrivingIntentionInsurance> quoteVo,
+                                CarInfoResponse.CarModelListDTO modelListDTO){
         super(parameters.getPartnerCode());
         // 标的信息
-        InsuredObjectDTO insuredObject = new InsuredObjectDTO(quoteInfoVo, carModelListDTO,carActualValueResponse);
+        InsuredObjectDTO insuredObject = new InsuredObjectDTO(quoteInfoVo, carModelListDTO,carActualValueResponse, modelListDTO);
         this.insuredObject = insuredObject;
         // 客户信息
         OwnerDTO owner = new OwnerDTO(quoteInfoVo.getOwnerInfo(), personAreaVo);
@@ -103,8 +104,15 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
         @NoArgsConstructor
         @Data
         public static class ContractMainDTO {
+
+            @JsonProperty("proposalNo")
+            private String proposalNo;
+            @JsonProperty("policyNo")
+            private String policyNo;
             @JsonProperty("riskCode")
             private String riskCode;
+            @JsonProperty("riskName")
+            private String riskName;
             @JsonProperty("validAtOnce")
             private String validAtOnce;
             @JsonProperty("validDate")
@@ -115,6 +123,12 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
             private String renewalFlag;
             @JsonProperty("insPlan")
             private String insPlan;
+            @JsonProperty("sumAmount")
+            private BigDecimal sumAmount;
+            @JsonProperty("totalPremium")
+            private BigDecimal totalPremium;
+
+
 
             public ContractMainDTO(BaseQuoteVo<InsDrivingIntentionInsurance> quoteVo){
                 InsDrivingIntentionInsurance ctQuoteAccidentVo = quoteVo.getAccidentalDrivingVo();
@@ -314,8 +328,8 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
 
         public InsuredObjectDTO(BaseQuoteInfoVo quoteInfoVo,
                                 CarInfoResponse.CarModelListDTO carModelListDTO,
-                                QueryCarActualValueResponse carActualValueResponse){
-            PolicyCarDTO policyCarDTO = new PolicyCarDTO(quoteInfoVo, carModelListDTO,carActualValueResponse);
+                                QueryCarActualValueResponse carActualValueResponse, CarInfoResponse.CarModelListDTO modelListDTO){
+            PolicyCarDTO policyCarDTO = new PolicyCarDTO(quoteInfoVo, carModelListDTO,carActualValueResponse,modelListDTO);
             this.policyCar = policyCarDTO;
 
             // 修理厂信息
@@ -405,11 +419,16 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
 
             public PolicyCarDTO(BaseQuoteInfoVo quoteInfoVo,
                                 CarInfoResponse.CarModelListDTO carModelListDTO,
-                                QueryCarActualValueResponse carActualValueResponse){
+                                QueryCarActualValueResponse carActualValueResponse,
+                                CarInfoResponse.CarModelListDTO modelListDTO){
                 CarInfoVo carInfo = quoteInfoVo.getCarInfo();
                 this.vin = carInfo.getFrameNo();
                 this.engine = carInfo.getEngineNo();
-                this.plateNo = carInfo.getLicenseNo();
+                if (StringUtils.isBlank(carInfo.getLicenseNo())){
+                    this.plateNo = "暂未上牌";
+                }else{
+                    this.plateNo = carInfo.getLicenseNo();
+                }
                 if("1".equals(carInfo.getEnergyType()) || "3".equals(carInfo.getEnergyType())) {
                     this.plateType = PlateType.P52.getCode();
                 }else{
@@ -444,7 +463,15 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
                 this.carCheckStatus = "3";
                 this.carCheckReason = "1";
                 this.carCheckReasonName = "按期续保未增保损失险类";
-                this.displacement = StringUtils.isBlank(carInfo.getExhaustScale())?new BigDecimal(1) : new BigDecimal(carInfo.getExhaustScale()).multiply(new BigDecimal("1000"));
+                if (Objects.isNull(modelListDTO.getDisplacement())){
+                    if(StringUtils.isBlank(carInfo.getEnginedesc())){
+                        this.displacement = new BigDecimal(1);
+                    }else{
+                        this.displacement = new BigDecimal(carInfo.getEnginedesc()).multiply(new BigDecimal("1000"));
+                    }
+                }else{
+                    this.displacement = modelListDTO.getDisplacement().multiply(new BigDecimal("1000"));
+                }
                 this.exhaustScaleUnit = "ml";
                 this.approvedLoad = StringUtils.isBlank(carInfo.getLimitLoad()) ? new BigDecimal(0) : new BigDecimal(carInfo.getLimitLoad());
                 this.approvedPassengersCapacity = carModelListDTO.getApprovedPassengersCapacity();
@@ -681,4 +708,8 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
         }
     }
 
+    public static void main(String[] args) {
+        System.out.println(new BigDecimal("1.497").multiply(new BigDecimal("1000")));
+    }
+
 }

+ 117 - 2
src/main/java/com/ydtech/modules/order/entity/api/chengtai/response/InsurePremiumResponse.java

@@ -1,10 +1,15 @@
 package com.ydtech.modules.order.entity.api.chengtai.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
+import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
+import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.utils.StringUtils;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 
 @NoArgsConstructor
@@ -15,13 +20,123 @@ public class InsurePremiumResponse extends ChengTaiBaseResponse{
     private String orderId;
     @JsonProperty("biContract")
     private BiContractDTO biContract;
-    @JsonProperty("insuredObject")
-    private InsuredObjectDTO insuredObject;
+//    @JsonProperty("insuredObject")
+//    private InsuredObjectDTO insuredObject;
     @JsonProperty("ciContract")
     private CiContractDTO ciContract;
+    @JsonProperty("accContract")
+    private AccContractDTO accContract;
     @JsonProperty("carRegistFlag")
     private String carRegistFlag;
 
+
+    @NoArgsConstructor
+    @Data
+    public static class AccContractDTO {
+        @JsonProperty("coverage")
+        private List<InsurePremiumResponse.AccContractDTO.CoverageDTO> coverage;
+        @JsonProperty("engage")
+        private List<InsurePremiumResponse.AccContractDTO.EngageDTO> engage;
+        @JsonProperty("contractMain")
+        private InsurePremiumResponse.AccContractDTO.ContractMainDTO contractMain;
+
+        public static List<AccidentResponseVo> toAccidentResponseVoList(AccContractDTO accContract, BaseQuoteVo<InsDrivingIntentionInsurance> quoteInfoVo) {
+            InsurePremiumResponse.AccContractDTO.ContractMainDTO contractMainDTO = accContract.getContractMain();
+            InsDrivingIntentionInsurance insDrivingIntentionInsurance = quoteInfoVo.getAccidentalDrivingVo();
+            List<AccidentResponseVo> accidentResponseVoList = new ArrayList<>();
+            AccidentResponseVo accidentResponseVo = new AccidentResponseVo();
+
+            accidentResponseVo.setProjectCode(quoteInfoVo.getAccidentalDrivingVo().getProjectCode());
+            if (StringUtils.isNotBlank(quoteInfoVo.getAccidentalDrivingVo().getProjectName())) {
+                accidentResponseVo.setProjectName(quoteInfoVo.getAccidentalDrivingVo().getProjectName());
+            }
+            accidentResponseVo.setPremium(contractMainDTO.getTotalPremium().toString());
+            accidentResponseVo.setQuantity("1");
+            accidentResponseVo.setActualPremium(contractMainDTO.getSumAmount().toString());
+            accidentResponseVoList.add(accidentResponseVo);
+            return accidentResponseVoList;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class ContractMainDTO {
+            @JsonProperty("riskName")
+            private String riskName;
+            @JsonProperty("hopeDiscount")
+            private String hopeDiscount;
+            @JsonProperty("validDate")
+            private String validDate;
+            @JsonProperty("riskCode")
+            private String riskCode;
+            @JsonProperty("totalPremium")
+            private String totalPremium;
+            @JsonProperty("policyNo")
+            private String policyNo;
+            @JsonProperty("validAtOnce")
+            private String validAtOnce;
+            @JsonProperty("renewalFlag")
+            private String renewalFlag;
+            @JsonProperty("lastYearPolicyNo")
+            private String lastYearPolicyNo;
+            @JsonProperty("sumAmount")
+            private String sumAmount;
+            @JsonProperty("proposalNo")
+            private String proposalNo;
+            @JsonProperty("expiryDate")
+            private String expiryDate;
+            @JsonProperty("currency")
+            private String currency;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class CoverageDTO {
+            @JsonProperty("glassClassName")
+            private String glassClassName;
+            @JsonProperty("amount")
+            private Integer amount;
+            @JsonProperty("kindCode")
+            private String kindCode;
+            @JsonProperty("quantity")
+            private String quantity;
+            @JsonProperty("validDate")
+            private String validDate;
+            @JsonProperty("coveragePremium")
+            private String coveragePremium;
+            @JsonProperty("glassClassCode")
+            private String glassClassCode;
+            @JsonProperty("calculateFlag")
+            private String calculateFlag;
+            @JsonProperty("expiryDate")
+            private String expiryDate;
+            @JsonProperty("ifMainKind")
+            private String ifMainKind;
+            @JsonProperty("deductible")
+            private String deductible;
+            @JsonProperty("kindName")
+            private String kindName;
+            @JsonProperty("unitAmount")
+            private String unitAmount;
+            @JsonProperty("currency")
+            private String currency;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class EngageDTO {
+            @JsonProperty("engageDetail")
+            private String engageDetail;
+            @JsonProperty("modifyind")
+            private String modifyind;
+            @JsonProperty("engageCode")
+            private String engageCode;
+            @JsonProperty("engageTitle")
+            private String engageTitle;
+            @JsonProperty("chooseType")
+            private String chooseType;
+        }
+    }
+
     @NoArgsConstructor
     @Data
     public static class BiContractDTO {

+ 54 - 9
src/main/java/com/ydtech/modules/order/service/impl/ChengTaiOrderApiServiceImpl.java

@@ -41,6 +41,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -111,7 +112,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
         /** 4. 报价 */
         PersonAreaVo personAreaVo = new PersonAreaVo();
         buildRegion(quoteInfoVo,personAreaVo);
-        InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(quoteInfoVo,carModelListDTO, carActualValueResponse,personAreaVo,parameters,quoteVo);
+        InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(quoteInfoVo,carModelListDTO, carActualValueResponse,personAreaVo,parameters,quoteVo, carModelListDTO);
         InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
 
         String message = "";
@@ -136,7 +137,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
         // 警告信息
         CarInfoVo carInfo = quoteInfoVo.getCarInfo();
         boolean isEnergy = carInfo.isNewEnergy();
-        QuoteRespVo quoteRespVo = getQuoteRespVo(insurePremiumResponse, quoteInfoVo, isEnergy);
+        QuoteRespVo quoteRespVo = getQuoteRespVo(insurePremiumResponse, quoteInfoVo, isEnergy,quoteVo);
         if (!StringUtils.isEmpty(message)) {
             ArrayList<String> objects = new ArrayList<>();
             objects.add(message);
@@ -167,10 +168,21 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
 
             }
         }
+        List<AccidentResponseVo> accident = quoteRespVo.getAccidentInfo();
+        List<InsAreaCompanyAccidentalDriving> insAreaCompanyAccidentalDrivings = new ArrayList<>();
+        accident.forEach(accidentalDriving -> {
+            InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+            insAreaCompanyAccidentalDriving.setCompanyId(insAreaCompany.getCompanyId());
+            insAreaCompanyAccidentalDriving.setQuantity(Integer.parseInt(accidentalDriving.getQuantity()));
+            insAreaCompanyAccidentalDriving.setRideRiskCode(accidentalDriving.getProjectCode());
+            insAreaCompanyAccidentalDriving.setRideRiskName(accidentalDriving.getProjectName());
+            insAreaCompanyAccidentalDrivings.add(insAreaCompanyAccidentalDriving);
+        });
+
         // 特约
         insAreaCompany.setJqappoint(quoteRespVo.getJqappoint());
         insAreaCompany.setSyappoint(quoteRespVo.getSyappoint());
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, new ArrayList<>());
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, insAreaCompanyAccidentalDrivings);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         return HttpResult.ok("报价成功", quoteRespVo);
 
@@ -178,7 +190,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
 
     private QuoteRespVo getQuoteRespVo(InsurePremiumResponse insurePremiumResponse,
                                        BaseQuoteInfoVo quoteInfoVo,
-                                       boolean isEnergy) {
+                                       boolean isEnergy, BaseQuoteVo<InsDrivingIntentionInsurance> quoteVo) {
         Double jqPremium = 0D;
         Double syPremium = 0D;
         Double sumPayTax = 0D;
@@ -202,7 +214,14 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
             quoteRespVo.setEndDateSy(biContractMain.getExpiryDate());
         }
         // 意外险
-
+        InsurePremiumResponse.AccContractDTO accContract = insurePremiumResponse.getAccContract();
+        if(Objects.nonNull(accContract)){
+            List<AccidentResponseVo> accidentResponseVos =
+                    InsurePremiumResponse.AccContractDTO.toAccidentResponseVoList(accContract,quoteVo);
+            quoteRespVo.setAccident(accidentResponseVos);
+            // 驾意险价格
+            jyPremium = Double.parseDouble(accContract.getContractMain().getTotalPremium());
+        }
 
         List<QuoteKindRespVo> kindList1 = new ArrayList<>();
         List<RiskInfoVo> riskList = quoteInfoVo.getRiskList();
@@ -249,9 +268,6 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
         if(Objects.nonNull(insurePremiumResponse.getCiContract())){
             List<InsurePremiumResponse.CiContractDTO.EngageDTO> ciEngageDTOS = insurePremiumResponse.getCiContract().getEngage();
             if(CollUtil.isNotEmpty(ciEngageDTOS)){
-//                for (InsurePremiumResponse.CiContractDTO.EngageDTO ciEngageDTO : ciEngageDTOS) {
-//                    ciEngageDTO.set
-//                }
                 quoteRespVo.setJqappoint(JSON.toJSONString(ciEngageDTOS));
             }
         }
@@ -426,6 +442,16 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
                             insAreaCompany.setSypolicyno(dataDTO.getPolicyCode());
                             insAreaCompany.setSyapplyno(dataDTO.getInsCode());
                         }
+                        if (RiskCodeEnum.R1116.getCode().equals(dataDTO.getRiskCode())) {
+                            List<AccidentResponseVo> accidentResponseVos = insAreaCompany.getAccidentInfo().toJavaList(AccidentResponseVo.class);
+                            if(CollUtil.isNotEmpty(accidentResponseVos)){
+                                for (AccidentResponseVo accidentResponseVo : accidentResponseVos) {
+                                    accidentResponseVo.setPolicyNumber(dataDTO.getPolicyCode());
+                                    accidentResponseVo.setApplicationNumber(dataDTO.getInsCode());
+                                }
+                                insAreaCompany.setAccidentInfo(JSON.parseArray(JSON.toJSONString(accidentResponseVos)));
+                            }
+                        }
                     }
                 }
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
@@ -497,6 +523,16 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
                         insAreaCompany.setSypolicyno(dataDTO.getPolicyCode());
                         insAreaCompany.setSyapplyno(dataDTO.getInsCode());
                     }
+                    if (RiskCodeEnum.R1116.getCode().equals(dataDTO.getRiskCode())) {
+                        List<AccidentResponseVo> accidentResponseVos = insAreaCompany.getAccidentInfo().toJavaList(AccidentResponseVo.class);
+                        if(CollUtil.isNotEmpty(accidentResponseVos)){
+                            for (AccidentResponseVo accidentResponseVo : accidentResponseVos) {
+                                accidentResponseVo.setPolicyNumber(dataDTO.getPolicyCode());
+                                accidentResponseVo.setApplicationNumber(dataDTO.getInsCode());
+                            }
+                            insAreaCompany.setAccidentInfo(JSON.parseArray(JSON.toJSONString(accidentResponseVos)));
+                        }
+                    }
                 }
             }
 
@@ -536,6 +572,16 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
                         insAreaCompany.setSypolicyno(dataDTO.getPolicyCode());
                         insAreaCompany.setSyapplyno(dataDTO.getInsCode());
                     }
+                    if (RiskCodeEnum.R1116.getCode().equals(dataDTO.getRiskCode())) {
+                        List<AccidentResponseVo> accidentResponseVos = insAreaCompany.getAccidentInfo().toJavaList(AccidentResponseVo.class);
+                        if(CollUtil.isNotEmpty(accidentResponseVos)){
+                            for (AccidentResponseVo accidentResponseVo : accidentResponseVos) {
+                                accidentResponseVo.setPolicyNumber(dataDTO.getPolicyCode());
+                                accidentResponseVo.setApplicationNumber(dataDTO.getInsCode());
+                            }
+                            insAreaCompany.setAccidentInfo(JSON.parseArray(JSON.toJSONString(accidentResponseVos)));
+                        }
+                    }
                 }
             }
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
@@ -686,5 +732,4 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
         String dir = "carInsPolicy/" + licensePlate + "/";
         return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
     }
-
 }

+ 6 - 1
src/main/java/com/ydtech/utils/OrderUtils.java

@@ -3,6 +3,7 @@ package com.ydtech.utils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ydtech.constants.InsuranceEnum;
+import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
 import com.ydtech.modules.order.entity.api.dajia.response.NVHLODR1001Response;
 import com.ydtech.modules.order.entity.api.zhongmei.response.SubmitResponse;
 import com.ydtech.modules.order.entity.crawler.response.CrawlerVerifyPaymentResponse;
@@ -86,7 +87,11 @@ public class OrderUtils {
             if (companyId.contains(InsuranceEnum.PAIC.getCode())) {
                 return crossInsuranceJson.getJSONObject(0).getString("policy");
             }
-
+            // 诚泰
+            if (companyId.contains(InsuranceEnum.CHAC.getCode())) {
+                List<AccidentResponseVo> javaList = crossInsuranceJson.toJavaList(AccidentResponseVo.class);
+                return javaList.get(0).getPolicyNumber();
+            }
         }
 
         return "";