|
|
@@ -76,9 +76,14 @@ import com.ydtech.modules.order.utils.InsuranceLog;
|
|
|
import com.ydtech.modules.protocol.entity.constants.PtlApiType;
|
|
|
import com.ydtech.modules.protocol.utils.AssertionUtils;
|
|
|
import com.ydtech.utils.DateTimeUtil;
|
|
|
+import com.ydtech.utils.ObjectUtil;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import com.ydtech.utils.baidu.FileUtil;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.Data;
|
|
|
+import lombok.NoArgsConstructor;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
@@ -112,6 +117,8 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
|
|
|
|
|
|
public static final String JQ_REGEX = "交强险.+?[^保险止期|^终保日期][是::\\s]?([0-9\\-:]+)";
|
|
|
|
|
|
+ public static final String REGEX_ALONE = "[^保险止期|^终保日期][是::\\s]?([0-9\\-:]+)";
|
|
|
+
|
|
|
public static final String SY_REGEX = "商业险.+?[^保险止期|^终保日期][是::\\s]?([0-9\\-:]+)";
|
|
|
|
|
|
public static final String END_TIME = "23:59:59";
|
|
|
@@ -449,13 +456,6 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- public static void main(String[] args) {
|
|
|
- String a = "交易失败:当前日志所在服务器地址:[1]!交强险重复投保提示:车险平台返回信息 号牌号码“晋AB1S60”的保单发生重复投保,与其重复投保的其它公司的保单信息如下:投保确认码 02TKIC140023061886966474033736;保单号 06671070807142300000001181;起保日期 2023-07-16 19:00;终保日期 2024-07-16 19:00;号牌号码 晋AB1S60;号牌种类 02;车架号 LE4WG4AB9KL578588;发动机号 11440669;地区 山西。*产品名称:机动车交通事故强制险(2008款)";
|
|
|
- String coverageEndDate = GuorenDuplicateInsuranceComponent.getEndDate(a, JQ_REGEX);
|
|
|
- System.out.println(coverageEndDate);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 报价 交强险 重复 投保业务处理
|
|
|
*/
|
|
|
@@ -466,32 +466,86 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
|
|
|
requestInfoList.add(errorMsg);
|
|
|
log.info("永诚API方式 - xml请求 ------------报价 -> 交强重复投保----------------");
|
|
|
|
|
|
- String coverageEndDate = GuorenDuplicateInsuranceComponent.getEndDate(errorMsg, JQ_REGEX);
|
|
|
- if (coverageEndDate.isEmpty()) {
|
|
|
+ TimeEntity timeEntity = getRepeatStartEndTime(errorMsg, JQ_REGEX);
|
|
|
+
|
|
|
+ if(ObjectUtils.isEmpty(timeEntity)){
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
- //判断是否是及时起保
|
|
|
- LocalDateTime start;
|
|
|
- if (coverageEndDate.contains(END_TIME)) {
|
|
|
- start = DateTimeUtil.parseLocalDateTime(coverageEndDate, DateTimeUtil.DATETIME_PATTERN).plusSeconds(1);
|
|
|
- } else {
|
|
|
- start = DateTimeUtil.parseLocalDateTime(coverageEndDate, DateTimeUtil.DATETIME_PATTERN);
|
|
|
- }
|
|
|
- LocalDateTime end = start.plusYears(1L).minusDays(1L);
|
|
|
- String newStartDate = DateTimeUtil.getStartTimeOfDayStr(start, DateTimeUtil.DATETIME_PATTERN);
|
|
|
- String newEndDate = DateTimeUtil.getEndTimeOfDayStr(end, DateTimeUtil.DATETIME_PATTERN);
|
|
|
- log.error("新起:{}", newStartDate);
|
|
|
- log.error("新止:{}", newEndDate);
|
|
|
- CarInsDateDto cidd = Base.buildInsDate(newStartDate, newEndDate);
|
|
|
+ log.error("新起:{}", timeEntity.getNewStartDate());
|
|
|
+ log.error("新止:{}", timeEntity.getNewEndDate());
|
|
|
+ CarInsDateDto cidd = Base.buildInsDate(timeEntity.getNewStartDate(), timeEntity.getNewEndDate());
|
|
|
m.getRequestLabel().getCondition().getBase().setTInsrncBgnTmJQ(cidd.getStartDate());
|
|
|
m.getRequestLabel().getCondition().getBase().setTInsrncEndTmJQ(cidd.getEndDate());
|
|
|
m.getRequestLabel().getCondition().getBase().setCImmeffMrk(cidd.isForthwith() ? "1" : "0");
|
|
|
- return coverageEndDate;
|
|
|
+ return timeEntity.getCoverageEndDate();
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 处理时间
|
|
|
+ * @param errorMsg 报错信息
|
|
|
+ * @param regex 正则表达是
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String processingTime(String errorMsg, String regex){
|
|
|
+ String coverageEndDate = GuorenDuplicateInsuranceComponent.getEndDate(errorMsg, regex);
|
|
|
+
|
|
|
+ if (coverageEndDate.isEmpty()) {
|
|
|
+ coverageEndDate = GuorenDuplicateInsuranceComponent.getEndDate(errorMsg, REGEX_ALONE);
|
|
|
+ }
|
|
|
+ return coverageEndDate;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过报错信息获取开始时间和结束时间
|
|
|
+ * @param errorMsg
|
|
|
+ * @param regex
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private TimeEntity getRepeatStartEndTime(String errorMsg, String regex){
|
|
|
+ String coverageEndDate = processingTime(errorMsg, regex);
|
|
|
+ TimeEntity timeEntity = new TimeEntity();
|
|
|
+
|
|
|
+ if (coverageEndDate.isEmpty()) {
|
|
|
+ return timeEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+ timeEntity.setCoverageEndDate(coverageEndDate);
|
|
|
+ LocalDateTime start;
|
|
|
+ if (coverageEndDate.contains(END_TIME)) {
|
|
|
+ start = DateTimeUtil.parseLocalDateTime(coverageEndDate, DateTimeUtil.DATETIME_PATTERN).plusSeconds(1);
|
|
|
+ } else {
|
|
|
+ start = DateTimeUtil.parseLocalDateTime(coverageEndDate, DateTimeUtil.DATETIME_PATTERN);
|
|
|
+ }
|
|
|
+ LocalDateTime end = start.plusYears(1L).minusDays(1L);
|
|
|
+ timeEntity.setNewStartDate(DateTimeUtil.getStartTimeOfDayStr(start, DateTimeUtil.DATETIME_PATTERN));
|
|
|
+ timeEntity.setNewEndDate(DateTimeUtil.getEndTimeOfDayStr(end, DateTimeUtil.DATETIME_PATTERN));
|
|
|
+ return timeEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+ @NoArgsConstructor
|
|
|
+ @AllArgsConstructor
|
|
|
+ @Data
|
|
|
+ public static class TimeEntity{
|
|
|
+
|
|
|
+ private String coverageEndDate;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始时间
|
|
|
+ */
|
|
|
+ private String newStartDate ;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结束时间
|
|
|
+ */
|
|
|
+ private String newEndDate;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 报价 商业 重复 投保业务处理
|
|
|
@@ -502,29 +556,20 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
|
|
|
if (appSYFlag) {
|
|
|
requestInfoList.add(errorMsg);
|
|
|
log.info("永诚API方式 - xml请求 ------------报价 -> 商业险重复投保----------------");
|
|
|
- String coverageEndDate = GuorenDuplicateInsuranceComponent.getEndDate(errorMsg, SY_REGEX);
|
|
|
- if (coverageEndDate.isEmpty()) {
|
|
|
- return "";
|
|
|
- }
|
|
|
+ TimeEntity timeEntity = getRepeatStartEndTime(errorMsg, SY_REGEX);
|
|
|
|
|
|
- LocalDateTime start;
|
|
|
- if (coverageEndDate.contains(END_TIME)) {
|
|
|
- start = DateTimeUtil.parseLocalDateTime(coverageEndDate, DateTimeUtil.DATETIME_PATTERN).plusSeconds(1);
|
|
|
- } else {
|
|
|
- start = DateTimeUtil.parseLocalDateTime(coverageEndDate, DateTimeUtil.DATETIME_PATTERN);
|
|
|
+ if(ObjectUtils.isEmpty(timeEntity)){
|
|
|
+ return "";
|
|
|
}
|
|
|
- LocalDateTime end = start.plusYears(1L).minusDays(1L);
|
|
|
- String newStartDate = DateTimeUtil.getStartTimeOfDayStr(start, DateTimeUtil.DATETIME_PATTERN);
|
|
|
- String newEndDate = DateTimeUtil.getEndTimeOfDayStr(end, DateTimeUtil.DATETIME_PATTERN);
|
|
|
|
|
|
- log.error("商业新起:{}", newStartDate);
|
|
|
- log.error("商业新止:{}", newEndDate);
|
|
|
+ log.error("商业新起:{}", timeEntity.getNewStartDate());
|
|
|
+ log.error("商业新止:{}", timeEntity.getNewEndDate());
|
|
|
|
|
|
- m.getRequestLabel().getCondition().getBase().setTInsrncBgnTmSY(newStartDate);
|
|
|
- m.getRequestLabel().getCondition().getBase().setTInsrncEndTmSY(newEndDate);
|
|
|
+ m.getRequestLabel().getCondition().getBase().setTInsrncBgnTmSY(timeEntity.getNewStartDate());
|
|
|
+ m.getRequestLabel().getCondition().getBase().setTInsrncEndTmSY(timeEntity.getNewEndDate());
|
|
|
//转保信息清空 重新报价
|
|
|
m.getRequestLabel().getCondition().getVhl().setCBusType("0");
|
|
|
- return coverageEndDate;
|
|
|
+ return timeEntity.getCoverageEndDate();
|
|
|
}
|
|
|
return "";
|
|
|
}
|