فهرست منبع

阳光报价修改

Qchen 1 سال پیش
والد
کامیت
522994655f

+ 35 - 27
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java

@@ -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")) {