Bladeren bron

大家财险重复投保

785834757 2 jaren geleden
bovenliggende
commit
5694666c39

+ 22 - 6
src/main/java/com/ydtech/modules/order/entity/api/dajia/request/ODR1008Request.java

@@ -365,6 +365,10 @@ public class ODR1008Request extends DaJiaBaseRequest {
             private String vehicleInspectRec;
             @JsonProperty("vehicleResvTxt1")
             private String vehicleResvTxt1;
+            @JsonProperty("vehicleResvTxt8")
+            private String vehicleResvTxt8;
+            @JsonProperty("vehicleTransferTm")
+            private String vehicleTransferTm;
 
         }
 
@@ -500,7 +504,11 @@ public class ODR1008Request extends DaJiaBaseRequest {
         vehicleOwnerInfoDTO.setVehicleOwnerProvince(OwnerPersonArea.getProvinceCode());
         vehicleOwnerInfoDTO.setVehicleOwnerCity(OwnerPersonArea.getCityCode());
         vehicleOwnerInfoDTO.setVehicleOwnerCounty(OwnerPersonArea.getCountyCode());
-        int index = quoteInfoVo.getOwnerInfo().getAddr().indexOf(OwnerPersonArea.getCountyName());
+        int index = -1;
+        if(OwnerPersonArea.getCountyName() != null){
+            index = quoteInfoVo.getOwnerInfo().getAddr().indexOf(OwnerPersonArea.getCountyName());
+        }
+
         if(index > -1){
             vehicleOwnerInfoDTO.setVehicleOwnerSuffixAddr(quoteInfoVo.getOwnerInfo().getAddr().substring(index + OwnerPersonArea.getCountyName().length()));
         }else{
@@ -547,7 +555,10 @@ public class ODR1008Request extends DaJiaBaseRequest {
         applicantInfoDTO.setApplicantProvince(policyHolderPersonArea.getProvinceCode());
         applicantInfoDTO.setApplicantCity(policyHolderPersonArea.getCityCode());
         applicantInfoDTO.setApplicantCounty(policyHolderPersonArea.getCountyCode());
-        int index = quoteInfoVo.getOwnerInfo().getAddr().indexOf(policyHolderPersonArea.getCountyName());
+        int index = -1;
+        if(policyHolderPersonArea.getCountyName() != null){
+            index = quoteInfoVo.getOwnerInfo().getAddr().indexOf(policyHolderPersonArea.getCountyName());
+        }
         if(index > -1){
             applicantInfoDTO.setApplicantSuffixAddr(quoteInfoVo.getOwnerInfo().getAddr().substring(index + policyHolderPersonArea.getCountyName().length()));
         }else{
@@ -594,8 +605,10 @@ public class ODR1008Request extends DaJiaBaseRequest {
         insuredInfoDTO.setInsuredCity(insuredPersonArea.getCityCode());
         insuredInfoDTO.setInsuredCounty(insuredPersonArea.getCountyCode());
         insuredInfoDTO.setInsuredSuffixAddr(quoteInfoVo.getInsuredPersonInfo().getAddr());
-
-        int index = quoteInfoVo.getOwnerInfo().getAddr().indexOf(insuredPersonArea.getCountyName());
+        int index = -1;
+        if(insuredPersonArea.getCountyName() != null){
+            index = quoteInfoVo.getOwnerInfo().getAddr().indexOf(insuredPersonArea.getCountyName());
+        }
         if(index > -1){
             insuredInfoDTO.setInsuredSuffixAddr(quoteInfoVo.getOwnerInfo().getAddr().substring(index + insuredPersonArea.getCountyName().length()));
         }else{
@@ -616,10 +629,15 @@ public class ODR1008Request extends DaJiaBaseRequest {
         //是否是过户车
         if(quoteInfoVo.getCarInfo().isTransferFlag()){
             //过户
+            vehicleInfoDTO.setVehicleTfiSpecialMrk(1);
+            vehicleInfoDTO.setVehicleTransferTm(quoteInfoVo.getCarInfo().getTransferDate());
+            //商业过户标志
             vehicleInfoDTO.setVehicleChgOwnerFlag(1);
             vehicleInfoDTO.setVehicleTTransferDate(quoteInfoVo.getCarInfo().getTransferDate());
         }else{
             //没有过户
+            vehicleInfoDTO.setVehicleTfiSpecialMrk(0);
+            //商业过户标志
             vehicleInfoDTO.setVehicleChgOwnerFlag(0);
         }
         //初登日期
@@ -731,8 +749,6 @@ public class ODR1008Request extends DaJiaBaseRequest {
         //整备质量
         vehicleInfoDTO.setVehicleNCurbWt(0);
         vehicleInfoDTO.setVehicleNTonage(0.0);
-        //交强险特殊车标志   无特殊投保情况
-        vehicleInfoDTO.setVehicleTfiSpecialMrk(0);
         //验车情况
         vehicleInfoDTO.setVehicleInspectionCde(CInspectionCde.INS3.getCode().toString());
         //免验原因

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/dajia/request/ODR1011Request.java

@@ -32,7 +32,7 @@ public class ODR1011Request extends DaJiaBaseRequest {
     private BodyDTO body;
 
     public ODR1011Request(String orderNo, DaJiaConfigureParameters daJiaConfigureParameters, List<NVHLODR1001Response.policyInfosDTO> policyInfosDTOS) {
-        super(daJiaConfigureParameters.getChannelCode(), ServiceCode.ODR1014.getCode());
+        super(daJiaConfigureParameters.getChannelCode(), ServiceCode.ODR1011.getCode());
         if(body == null){
             body = new BodyDTO();
         }

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

@@ -35,6 +35,8 @@ public class ODR1009Response extends DaJiaBaseResponse {
         private BasePartDTO basePart;
         @JsonProperty("riskRatio")
         private RiskRatioDTO riskRatio;
+        @JsonProperty("reInsuredInfo")
+        private String reInsuredInfo;
         @JsonProperty("vehicleTaxation")
         private VehicleTaxationDTO vehicleTaxation;
         @JsonProperty("coverageList")

+ 89 - 2
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -42,12 +42,18 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.Period;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
+import static com.ydtech.modules.order.components.gouren.GuorenDuplicateInsuranceComponent.*;
+
 
 @Service
 public class DaJiaOrderServiceImpl implements DaJiaOrderService {
@@ -218,9 +224,10 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                 //驾意险详细信息
                 listByAccId = insAccidentalDrivingSubDaJiaService.getListByAccId(accidentalDriving.getId());
             }
-            ODR1009Request odr1009Request = new ODR1009Request(orderNo, kindList, riskList, quoteInfoVo, odr1016Response,
+            //6.报价
+            ODR1009Response odr1009Response = quotation(orderNo, kindList, riskList, quoteInfoVo, odr1016Response,
                     accidentalDriving, listByAccId, daJiaConfigureParameters, isEnergy);
-            ODR1009Response odr1009Response = daJiaRequestApiComponents.newPremiumXnyCalculation(odr1009Request);
+
             NVHLODR1001Response nvhlodr1001Response = null;
 
 
@@ -261,6 +268,86 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
         }
     }
 
+    /**
+     * 获取重复投保时间
+     * @param startDateStr
+     * @param endDateStr
+     * @param newStDate
+     * @return
+     */
+    public List<String> getDuplicateDate(String startDateStr,String  endDateStr,String newStDate){
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        //处理23:59:59
+        if (endDateStr.endsWith("23:59:59")) {
+            LocalDateTime time = LocalDateTime.parse(endDateStr, formatter);
+            LocalDateTime timePlusOneSecond = time.plusSeconds(1);
+            endDateStr = timePlusOneSecond.format(formatter);
+        }
+
+        LocalDateTime startDate = LocalDateTime.parse(startDateStr, formatter);
+        LocalDateTime endDate = LocalDateTime.parse(endDateStr, formatter);
+
+        Period period = Period.between(startDate.toLocalDate(), endDate.toLocalDate());
+
+        LocalDateTime newStartDate = LocalDateTime.parse(newStDate, formatter);
+        LocalDateTime newEndDate = newStartDate.plus(period);
+        List<String> result = new ArrayList<>();
+        result.add(newStartDate.format(formatter));
+        result.add(newEndDate.format(formatter));
+        return result;
+    }
+
+    /**
+     * 报价 处理重复投保
+     * @param orderNo
+     * @param kindInfoVos
+     * @param riskInfoVos
+     * @param quoteInfoVo
+     * @param odr1016Response
+     * @param insAccidentalDrivingDajia
+     * @param insAccidentalDrivingSubDajias
+     * @param daJiaConfigureParameters
+     * @param isEnergy
+     * @return
+     * @throws Exception
+     */
+    public ODR1009Response quotation(String orderNo, List<KindInfoVo> kindInfoVos, List<RiskInfoVo> riskInfoVos, BaseQuoteInfoVo quoteInfoVo,
+                                     ODR1016Response odr1016Response, InsAccidentalDrivingDajia insAccidentalDrivingDajia,
+                                     List<InsAccidentalDrivingSubDajia> insAccidentalDrivingSubDajias,DaJiaConfigureParameters daJiaConfigureParameters,
+                                     boolean isEnergy) throws Exception {
+
+        ODR1009Request odr1009Request = new ODR1009Request(orderNo, kindInfoVos, riskInfoVos, quoteInfoVo, odr1016Response,
+                insAccidentalDrivingDajia, insAccidentalDrivingSubDajias, daJiaConfigureParameters, isEnergy);
+        ODR1009Response odr1009Response = daJiaRequestApiComponents.newPremiumXnyCalculation(odr1009Request);
+        if(odr1009Response.getStatus().equals(Message.M0002.getCode())) {
+            //获取重复投保信息
+            String jqAppStatusMessage = odr1009Response.getResult().getJqAppStatusMessage().toString() == null ? "" : odr1009Response.getResult().getJqAppStatusMessage().toString();
+            String syAppStatusMessage = odr1009Response.getResult().getReInsuredInfo() == null ? "" : odr1009Response.getResult().getReInsuredInfo();
+            if(jqAppStatusMessage.contains("重复投保") || syAppStatusMessage.contains("重复投保")){
+                //交强重复投保
+                for(RiskInfoVo riskInfoVo : riskInfoVos){
+                    if(riskInfoVo.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())){
+                        String jqEndDate = getTheExpiryDate(jqAppStatusMessage, THE_FIRST_REGEX);
+                        List<String> duplicateDate = getDuplicateDate(riskInfoVo.getStartDate(), riskInfoVo.getEndDate(), jqEndDate);
+                        riskInfoVo.setStartDate(duplicateDate.get(0));
+                        riskInfoVo.setEndDate(duplicateDate.get(1));
+                    }
+                    //商业重复投保
+                    if(riskInfoVo.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())){
+                        String syEndDate = getTheExpiryDate(syAppStatusMessage, THE_SECOND_REGEX);
+                        List<String> duplicateDate = getDuplicateDate(riskInfoVo.getStartDate(), riskInfoVo.getEndDate(), syEndDate);
+                        riskInfoVo.setStartDate(duplicateDate.get(0));
+                        riskInfoVo.setEndDate(duplicateDate.get(1));
+                    }
+                }
+                return quotation(orderNo, kindInfoVos, riskInfoVos, quoteInfoVo, odr1016Response,
+                        insAccidentalDrivingDajia, insAccidentalDrivingSubDajias, daJiaConfigureParameters, isEnergy);
+            }
+
+        }
+        return odr1009Response;
+    }
+
 
     public HttpResult<QuoteRespVo> responseOrder(ODR1009Response odr1009Response,
                                                  QuoteRespVo quoteRespVo,