浏览代码

紫金处理及时起保日期

785834757 1 年之前
父节点
当前提交
8f0c619e15

+ 46 - 0
src/main/java/com/ydtech/modules/order/components/gouren/GuorenDuplicateInsuranceComponent.java

@@ -63,6 +63,14 @@ public class GuorenDuplicateInsuranceComponent {
         return "";
     }
 
+    public static String getTimelyEndDate(String rtnMsg, String regex) {
+        String endDate = getTimelyTheExpiryDate(rtnMsg, regex);
+        if (!endDate.isEmpty()) {
+            return endDate;
+        }
+        return "";
+    }
+
     /**
      * 获取终保日期
      *
@@ -84,6 +92,7 @@ public class GuorenDuplicateInsuranceComponent {
                 SimpleDateFormat dateFormat = new SimpleDateFormat(string);
                 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 Date parse = dateFormat.parse(startDate);
+
                 return simpleDateFormat.format(parse);
 
             } catch (Exception e) {
@@ -93,6 +102,43 @@ public class GuorenDuplicateInsuranceComponent {
         return "";
     }
 
+
+    public static String getTimelyTheExpiryDate(String message, String regex) {
+        Pattern pattern = Pattern.compile(regex);
+        String replace = message.replace("\r", ";").replace("\n", ";").replace(" ", "");
+        Matcher m = pattern.matcher(replace);
+
+        boolean b = m.find();
+        if (b) {
+            try {
+                String startDate = "";
+                String group = m.group(2);
+                String groupRegex = "终保日期(\\d{4}-\\d{2}-\\d{2})";
+                Pattern groupPattern = Pattern.compile(groupRegex);
+                Matcher groupMatcher = groupPattern.matcher(group);
+                if(groupMatcher.find()) {
+                    startDate = groupMatcher.group(1);
+                }else{
+                    return "";
+                }
+                String string = "yyyy-MM-dd";
+                SimpleDateFormat dateFormat = new SimpleDateFormat(string);
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Date parse = dateFormat.parse(startDate);
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(parse);
+                calendar.add(Calendar.DAY_OF_MONTH, 1); // 加一天
+                // 获取增加一天后的日期
+                Date newDate = calendar.getTime();
+                return simpleDateFormat.format(newDate);
+
+            } catch (Exception e) {
+                throw new SystemException(message);
+            }
+        }
+        return "";
+    }
+
     /**
      * 重复投保
      *

+ 11 - 3
src/main/java/com/ydtech/modules/order/components/zijin/ZijinDuplicateInsuranceComponents.java

@@ -39,6 +39,8 @@ public class ZijinDuplicateInsuranceComponents extends ResponseMessageAbstractHa
 
     public static final String SY = "商业险";
 
+    public static final String TIMELY_JQ_REGEX = "(终保日期[::\\\\s]?[0-9\\\\-]+).*?(终保日期[::\\\\s]?([0-9\\\\-]+))";
+
     private final ZijinRequestApiComponents zijinRequestApiComponents;
 
 
@@ -74,10 +76,16 @@ public class ZijinDuplicateInsuranceComponents extends ResponseMessageAbstractHa
         // 关联单标识
         String calculateFlag = calculatePremiumRequest.getBaseInfo().getCalculateFlag();
 
-        // 单交强
-        if (CalculateFlagEnum.CF_2.getCode().equals(calculateFlag)) {
-            jqEndDate = GuorenDuplicateInsuranceComponent.getEndDate(rtnMsg, DAN_JQ_REGEX);
+        //及时起保的
+        if(CalculateFlagEnum.CF_2.getCode().equals(calculateFlag)){
+            jqEndDate = GuorenDuplicateInsuranceComponent.getTimelyEndDate(rtnMsg, TIMELY_JQ_REGEX);
+            if(jqEndDate.equals("")){
+                //正常的日期
+                jqEndDate = GuorenDuplicateInsuranceComponent.getEndDate(rtnMsg, DAN_JQ_REGEX);
+
+            }
         }
+
         // 交强险
         else if (rtnMsg.contains(JQ)) {
             jqEndDate = GuorenDuplicateInsuranceComponent.getEndDate(rtnMsg, JQ_REGEX);

+ 2 - 1
src/main/java/com/ydtech/modules/order/components/zijin/ZijinRequestApiComponents.java

@@ -265,7 +265,8 @@ public class ZijinRequestApiComponents {
                 Optional.ofNullable(calculatePremiumResponse.getBasePart()).map(CalculatePremiumResponse.BasePartDTO::getReinsureMessage).orElse("");
 
         if (calculatePremiumResponse.getRtnMsg().contains(HOUR_RULE) && calculatePremiumResponse.getRtnMsg().contains(MINUTE_RULE)) {
-            throw new SystemException(calculatePremiumResponse.getRtnMsg());
+            calculatePremiumResponse.setRtnCode(ResultEnum.C_4001);
+            calculatePremiumResponse.setRtnMsg(calculatePremiumResponse.getRtnMsg());
         }
 
         if (StringUtils.isNotEmpty(reinsureMessage) && !(reinsureMessage.contains(HOUR_RULE) && reinsureMessage.contains(MINUTE_RULE))) {