Przeglądaj źródła

渤海报价报错交强重复投保问题处理
算费微服务返回报错信息_保信返回错误信息:
// 平台返回错误信息号牌号码“晋J60L55”的保单发生重复投保,与其重复投保的其它公司的保单信息如下:投保确认码 02PAIC140023031919549498257741;保单号 13312993901973801278;起保日期 2023-04-11 00:00;终保日期 2024-04-11 00:00;号牌号码 晋J60L55;号牌种类 02;车架号 LZWADAGA5LG477030;发动机号 8LB1921291;地区 山西。

hxl13994548489 2 lat temu
rodzic
commit
ae6a89bbca

+ 3 - 4
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
 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;
@@ -224,9 +223,9 @@ public class BoHaiRequestApiComponent {
      * @param responseMsg  响应内容
      */
     private void verificationResponseCode(String responseCode, String responseMsg) {
-        if (ResponseCode.R_Z00004.getCode().equals(responseCode)) {
-            throw new SystemException(responseMsg);
-        }
+        //if (ResponseCode.R_Z00004.getCode().equals(responseCode)) {
+        //    throw new SystemException(responseMsg);
+        //}
     }
 
     /**

+ 33 - 0
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -34,6 +34,7 @@ import com.ydtech.modules.order.utils.StringSubStringUtils;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
+import com.ydtech.utils.DateUtil_N;
 import com.ydtech.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -129,6 +130,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                         vehicleTypeQueryRequest);
                 vehicleModelsDTO = (VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO) map_two.get("vehicleModelsDTO");
                 vehicleConfirmationResponse = (VehicleConfirmationResponse) map_two.get("vehicleConfirmationResponse");
+            }else{
+                throw new SystemException(responseMsg);
             }
         }
 
@@ -139,6 +142,36 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
                 currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
         QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
+        //add by  2024-04-03  会发生重复投保   算费微服务返回报错信息_保信返回错误信息:
+        // 平台返回错误信息号牌号码“晋J60L55”的保单发生重复投保,与其重复投保的其它公司的保单信息如下:投保确认码 02PAIC140023031919549498257741;保单号 13312993901973801278;起保日期 2023-04-11 00:00;终保日期 2024-04-11 00:00;号牌号码 晋J60L55;号牌种类 02;车架号 LZWADAGA5LG477030;发动机号 8LB1921291;地区 山西。
+        //重新赋值交强的投保开始日期
+        if (ResponseCode.R_Z00004.getCode().equals(response.getResponseCode())) {
+            String responseMsg = response.getResponseMsg();
+            if(responseMsg.contains("发生重复投保")){
+                //交强重复投保
+                String trafficPolicyDTOBenginDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,":","起保日期");
+                String trafficPolicyDTOEndDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,":","终保日期");
+                if(!"".equals(trafficPolicyDTOBenginDateStr) && !"".equals(trafficPolicyDTOEndDateStr)){
+                    //结束投保日期为开始日期,结束日期为结束投保日期后一年的日期
+                    trafficPolicyDTOEndDateStr=trafficPolicyDTOEndDateStr+":00";
+                    // 结束日期为59:59:59
+                    String endDateStr = DateUtil_N.getNextYearDateStr(trafficPolicyDTOEndDateStr);
+                    QuotationRequest quotationRequestNew = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
+                            currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
+                    QuotationRequest.TrafficPolicyDTO trafficPolicy = quotationRequestNew.getTrafficPolicy();
+                    trafficPolicy.setStartDate(trafficPolicyDTOEndDateStr);
+                    trafficPolicy.setEndDate(endDateStr);
+                    quotationRequestNew.setTrafficPolicy(trafficPolicy);
+                    response = boHaiRequestApiComponent.quotation(quotationRequestNew, parameters.getSysSourceCode());
+                    if (!ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
+                        throw new SystemException(responseMsg);
+                    }
+                }
+                //商业重复投保
+            }else{
+                throw new SystemException(responseMsg);
+            }
+        }
         List<BoHaiQuoteAccidentVo> accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
 
         return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);

+ 48 - 3
src/main/java/com/ydtech/modules/order/utils/StringSubStringUtils.java

@@ -1,4 +1,8 @@
 package com.ydtech.modules.order.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  *  @version  截取字符串括号的内容用于渤海提取错误信息中的内容
  *  @author: hxl
@@ -7,11 +11,20 @@ package com.ydtech.modules.order.utils;
  */
 public class StringSubStringUtils {
     public static void main(String[] args) {
-        String input = "ESB车型及纯风险保费查询服务返回错误信息_选择车辆的行业车型编码(BBWABBUA0005)在平台不存在!请使用正确的行业车型编码(BBWABBUB0007)";
-        String result = extractLastParenthesesContent(input);
+       // String input = "ESB车型及纯风险保费查询服务返回错误信息_选择车辆的行业车型编码(BBWABBUA0005)在平台不存在!请使用正确的行业车型编码(BBWABBUB0007)";
+       // String result = extractLastParenthesesContent(input);
+        String input="算费微服务返回报错信息_保信返回错误信息:平台返回错误信息号牌号码“晋J60L55”的保单发生重复投保,与其重复投保的其它公司的保单信息如下:投保确认码 02PAIC140023031919549498257741;保单号 13312993901973801278;起保日期 2023-04-11 00:00;终保日期 2024-04-11 00:00;号牌号码 晋J60L55;号牌种类 02;车架号 LZWADAGA5LG477030;发动机号 8LB1921291;地区 山西。";
+        String keywords=":";
+        String key="起保日期";
+        String result = subjectStringContentByTrafficPolicyDTOBenginDate(input,keywords,key);
         System.out.println(result);
     }
-
+    /**
+     *  @version  截取行业车型编码
+     *  @author: hxl
+     *  @Date: 2024/4/3 17:29
+     *  @Description:
+     */
     public static String extractLastParenthesesContent(String str) {
         int startIndex = str.lastIndexOf("(");
         int endIndex = str.lastIndexOf(")");
@@ -20,4 +33,36 @@ public class StringSubStringUtils {
         }
         return "";
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/3 17:29
+     *  @Description:
+     */
+    public static String subjectStringContentByTrafficPolicyDTOBenginDate(String allStr,String keywords,String key) {
+        int startIndex = allStr.indexOf(keywords);
+        Map<String,String> msgMap=new HashMap<>();
+        if (startIndex != -1) {
+            //截取与其重复投保的其它公司的保单信息如下:之后的字符串
+            String extractedString = allStr.substring(startIndex + keywords.length());
+            //投保确认码 02PAIC140023031919549498257741;保单号 13312993901973801278;起保日期 2023-04-11 00:00;终保日期 2024-04-11 00:00;号牌号码 晋J60L55;号牌种类 02;车架号 LZWADAGA5LG477030;发动机号 8LB1921291;地区 山西。
+            //以;截取存入map中
+            if(extractedString!=null && !"".equals(extractedString)){
+                String[] strs = extractedString.split(";");
+                if(strs.length>0){
+                    for (String str : strs) {
+                       if(str!=null && !"".equals(str) && str.contains(" ")){
+                           String[] strParams = str.split("\\s", 2);
+                           msgMap.put(strParams[0].trim(),strParams[1].trim());
+                       }
+                    }
+                }
+            }
+        }
+        String returnStr="";
+        if(msgMap!=null && msgMap.size()>0){
+            returnStr = msgMap.get(key);
+        }
+        return returnStr;
+    }
 }

+ 38 - 0
src/main/java/com/ydtech/utils/DateUtil_N.java

@@ -23,6 +23,8 @@ public class DateUtil_N {
     private static final Logger logger = LoggerFactory.getLogger(DateUtil.class);
 
     private static final String DATEFORMAT = "yyyy-MM-dd";
+
+    private static final String DATEFORMATALL = "yyyy-MM-dd HH:mm:ss";
     public static Date getNextNDate;
 
     private DateUtil_N() {
@@ -728,4 +730,40 @@ public class DateUtil_N {
         return formatDate(c.getTime());
     }
 
+    /**
+     * 字符串转换成日期  yyyy-MM-dd HH:mm:ss
+     *
+     * @param str
+     * @return date
+     * @作者:滑立敏
+     * @日期:2010-01-26
+     */
+    public static Date strAllToDate(String str) {
+
+        SimpleDateFormat format = new SimpleDateFormat(DATEFORMATALL);
+        Date date = null;
+        try {
+            date = format.parse(str);
+        } catch (ParseException e) {
+            logger.info(e.getMessage());
+        }
+        return date;
+    }
+    /**
+     *  @version  获取明年的今天的日期数据
+     *  @author: hxl
+     *  @Date: 2024/4/3 18:53
+     *  @Description:
+     */
+    public static String getNextYearDateStr(String str) {
+        Date beginDate = strAllToDate(str);
+        Date nextYear = getNextYear(beginDate);
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(nextYear);
+        // 减去一秒
+        calendar.add(Calendar.SECOND, -1);
+        Date newDate = calendar.getTime();
+        String newDateStr = formatDate(newDate, "yyyy-MM-dd HH:mm:ss");
+        return newDateStr;
+    }
 }