|
|
@@ -238,46 +238,54 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
|
|
|
this.Modelinfoid = carmodellist.getModelinfoid();
|
|
|
List<RiskInfoVo> riskList = quoteInfoVo.getRiskList();
|
|
|
for (RiskInfoVo riskInfo : riskList) {
|
|
|
+ // 商业险起保终保计算
|
|
|
if(InsuranceRisk.BUSINESS_CODE.equals(riskInfo.getRiskCode())) {
|
|
|
- LocalDateTime biStartTime = LocalDateTime.parse(riskInfo.getStartDate(), formatter);
|
|
|
- LocalDateTime biEndTime = biStartTime.plusYears(1).with(LocalTime.MIDNIGHT).minusSeconds(1);
|
|
|
- this.BiStartDate = biStartTime.format(formatter);
|
|
|
- this.BiEndDate = biEndTime.format(formatter);
|
|
|
+ LocalDateTime biStartTime;
|
|
|
+ LocalDateTime biEndTime;
|
|
|
+ if (riskInfo.getStartDate().endsWith("00:00")) {
|
|
|
+ biStartTime = LocalDateTime.parse(riskInfo.getStartDate(), formatter);
|
|
|
+ biEndTime = biStartTime.plusYears(1).minusSeconds(1);
|
|
|
+ } else {
|
|
|
+ biStartTime = LocalDateTime.parse(riskInfo.getStartDate(), formatter);
|
|
|
+ biEndTime = biStartTime.plusYears(1).minusDays(1).minusSeconds(1);
|
|
|
+ }
|
|
|
// 商业重复投保
|
|
|
- if (remarkBi != null && !remarkBi.equals("")) {
|
|
|
+ if (remarkBi != null && !remarkBi.isEmpty()) {
|
|
|
Pattern pattern = Pattern.compile("终保日期:(\\d{12})",Pattern.DOTALL);
|
|
|
Matcher matcher = pattern.matcher(remarkBi);
|
|
|
if (matcher.find()) {
|
|
|
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmm");
|
|
|
String endDateStr = matcher.group(1);
|
|
|
- if (endDateStr.endsWith("0000")) {
|
|
|
- // 处理终保时间为0点
|
|
|
- LocalDateTime biStartTime1 = LocalDateTime.parse(endDateStr, inputFormatter);
|
|
|
- LocalDateTime biEndTime1 = biStartTime1.plusYears(1).minusSeconds(1);
|
|
|
- this.BiStartDate = biStartTime1.format(formatter);
|
|
|
- this.BiEndDate = biEndTime1.format(formatter);
|
|
|
- } else {
|
|
|
- // 处理终保时间非0点
|
|
|
- LocalDateTime biStartTime1 = LocalDateTime.parse(endDateStr, inputFormatter);
|
|
|
- LocalDateTime biEndTime1 = biStartTime1.plusYears(1).minusDays(1).minusSeconds(1);
|
|
|
- this.BiStartDate = biStartTime1.format(formatter);
|
|
|
- this.BiEndDate = biEndTime1.format(formatter);
|
|
|
- }
|
|
|
+ biStartTime = LocalDateTime.parse(endDateStr, inputFormatter);
|
|
|
+ biEndTime = endDateStr.endsWith("0000") ? biStartTime.plusYears(1).minusSeconds(1)
|
|
|
+ : biStartTime.plusYears(1).minusDays(1).minusSeconds(1);
|
|
|
}
|
|
|
}
|
|
|
+ this.BiStartDate = biStartTime.format(formatter);
|
|
|
+ this.BiEndDate = biEndTime.format(formatter);
|
|
|
}
|
|
|
+ //交强险起保终保计算
|
|
|
if (InsuranceRisk.TRAFFIC_CODE.equals(riskInfo.getRiskCode())) {
|
|
|
- LocalDateTime ciStartTime = LocalDateTime.parse(riskInfo.getStartDate(), formatter);
|
|
|
- LocalDateTime ciEndTime = LocalDateTime.parse(riskInfo.getEndDate(), formatter);
|
|
|
- this.CiStartDate = ciStartTime.format(formatter);
|
|
|
- this.CiEndDate = ciEndTime.format(formatter);
|
|
|
- // 重复投保
|
|
|
+ // 基础保险期限计算
|
|
|
+ LocalDateTime ciStartTime;
|
|
|
+ LocalDateTime ciEndTime;
|
|
|
+ if (riskInfo.getStartDate().endsWith("00:00")) {
|
|
|
+ ciStartTime = LocalDateTime.parse(riskInfo.getStartDate(), formatter);
|
|
|
+ ciEndTime = ciStartTime.plusYears(1).minusSeconds(1);
|
|
|
+ } else {
|
|
|
+ ciStartTime = LocalDateTime.parse(riskInfo.getStartDate(), formatter);
|
|
|
+ ciEndTime = ciStartTime.plusYears(1).minusDays(1).minusSeconds(1);
|
|
|
+ }
|
|
|
+ // 如果是重复投保,根据startDate调整保险期限
|
|
|
if (isRepeat) {
|
|
|
- LocalDateTime ciStartTime1 = LocalDateTime.parse(startDate, formatter);
|
|
|
- LocalDateTime ciEndTime1 = ciStartTime1.plusYears(1).minusDays(1).minusSeconds(1);
|
|
|
- this.CiStartDate = ciStartTime1.format(formatter);
|
|
|
- this.CiEndDate = ciEndTime1.format(formatter);
|
|
|
+ ciStartTime = LocalDateTime.parse(startDate, formatter);
|
|
|
+ ciEndTime = startDate.endsWith("00:00")
|
|
|
+ ? ciStartTime.plusYears(1).minusSeconds(1)
|
|
|
+ : ciStartTime.plusYears(1).minusDays(1).minusSeconds(1);
|
|
|
}
|
|
|
+ // 设置最终的保险期限
|
|
|
+ this.CiStartDate = ciStartTime.format(formatter);
|
|
|
+ this.CiEndDate = ciEndTime.format(formatter);
|
|
|
}
|
|
|
}
|
|
|
if (riskInfoVo.getInstantFlag().equals("1")) {
|