|
|
@@ -42,12 +42,18 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.Period;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.ydtech.modules.order.components.gouren.GuorenDuplicateInsuranceComponent.*;
|
|
|
+
|
|
|
|
|
|
@Service
|
|
|
public class DaJiaOrderServiceImpl implements DaJiaOrderService {
|
|
|
@@ -218,9 +224,10 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
|
|
|
//驾意险详细信息
|
|
|
listByAccId = insAccidentalDrivingSubDaJiaService.getListByAccId(accidentalDriving.getId());
|
|
|
}
|
|
|
- ODR1009Request odr1009Request = new ODR1009Request(orderNo, kindList, riskList, quoteInfoVo, odr1016Response,
|
|
|
+ //6.报价
|
|
|
+ ODR1009Response odr1009Response = quotation(orderNo, kindList, riskList, quoteInfoVo, odr1016Response,
|
|
|
accidentalDriving, listByAccId, daJiaConfigureParameters, isEnergy);
|
|
|
- ODR1009Response odr1009Response = daJiaRequestApiComponents.newPremiumXnyCalculation(odr1009Request);
|
|
|
+
|
|
|
NVHLODR1001Response nvhlodr1001Response = null;
|
|
|
|
|
|
|
|
|
@@ -261,6 +268,86 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取重复投保时间
|
|
|
+ * @param startDateStr
|
|
|
+ * @param endDateStr
|
|
|
+ * @param newStDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<String> getDuplicateDate(String startDateStr,String endDateStr,String newStDate){
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ //处理23:59:59
|
|
|
+ if (endDateStr.endsWith("23:59:59")) {
|
|
|
+ LocalDateTime time = LocalDateTime.parse(endDateStr, formatter);
|
|
|
+ LocalDateTime timePlusOneSecond = time.plusSeconds(1);
|
|
|
+ endDateStr = timePlusOneSecond.format(formatter);
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalDateTime startDate = LocalDateTime.parse(startDateStr, formatter);
|
|
|
+ LocalDateTime endDate = LocalDateTime.parse(endDateStr, formatter);
|
|
|
+
|
|
|
+ Period period = Period.between(startDate.toLocalDate(), endDate.toLocalDate());
|
|
|
+
|
|
|
+ LocalDateTime newStartDate = LocalDateTime.parse(newStDate, formatter);
|
|
|
+ LocalDateTime newEndDate = newStartDate.plus(period);
|
|
|
+ List<String> result = new ArrayList<>();
|
|
|
+ result.add(newStartDate.format(formatter));
|
|
|
+ result.add(newEndDate.format(formatter));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报价 处理重复投保
|
|
|
+ * @param orderNo
|
|
|
+ * @param kindInfoVos
|
|
|
+ * @param riskInfoVos
|
|
|
+ * @param quoteInfoVo
|
|
|
+ * @param odr1016Response
|
|
|
+ * @param insAccidentalDrivingDajia
|
|
|
+ * @param insAccidentalDrivingSubDajias
|
|
|
+ * @param daJiaConfigureParameters
|
|
|
+ * @param isEnergy
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public ODR1009Response quotation(String orderNo, List<KindInfoVo> kindInfoVos, List<RiskInfoVo> riskInfoVos, BaseQuoteInfoVo quoteInfoVo,
|
|
|
+ ODR1016Response odr1016Response, InsAccidentalDrivingDajia insAccidentalDrivingDajia,
|
|
|
+ List<InsAccidentalDrivingSubDajia> insAccidentalDrivingSubDajias,DaJiaConfigureParameters daJiaConfigureParameters,
|
|
|
+ boolean isEnergy) throws Exception {
|
|
|
+
|
|
|
+ ODR1009Request odr1009Request = new ODR1009Request(orderNo, kindInfoVos, riskInfoVos, quoteInfoVo, odr1016Response,
|
|
|
+ insAccidentalDrivingDajia, insAccidentalDrivingSubDajias, daJiaConfigureParameters, isEnergy);
|
|
|
+ ODR1009Response odr1009Response = daJiaRequestApiComponents.newPremiumXnyCalculation(odr1009Request);
|
|
|
+ if(odr1009Response.getStatus().equals(Message.M0002.getCode())) {
|
|
|
+ //获取重复投保信息
|
|
|
+ String jqAppStatusMessage = odr1009Response.getResult().getJqAppStatusMessage().toString() == null ? "" : odr1009Response.getResult().getJqAppStatusMessage().toString();
|
|
|
+ String syAppStatusMessage = odr1009Response.getResult().getReInsuredInfo() == null ? "" : odr1009Response.getResult().getReInsuredInfo();
|
|
|
+ if(jqAppStatusMessage.contains("重复投保") || syAppStatusMessage.contains("重复投保")){
|
|
|
+ //交强重复投保
|
|
|
+ for(RiskInfoVo riskInfoVo : riskInfoVos){
|
|
|
+ if(riskInfoVo.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())){
|
|
|
+ String jqEndDate = getTheExpiryDate(jqAppStatusMessage, THE_FIRST_REGEX);
|
|
|
+ List<String> duplicateDate = getDuplicateDate(riskInfoVo.getStartDate(), riskInfoVo.getEndDate(), jqEndDate);
|
|
|
+ riskInfoVo.setStartDate(duplicateDate.get(0));
|
|
|
+ riskInfoVo.setEndDate(duplicateDate.get(1));
|
|
|
+ }
|
|
|
+ //商业重复投保
|
|
|
+ if(riskInfoVo.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())){
|
|
|
+ String syEndDate = getTheExpiryDate(syAppStatusMessage, THE_SECOND_REGEX);
|
|
|
+ List<String> duplicateDate = getDuplicateDate(riskInfoVo.getStartDate(), riskInfoVo.getEndDate(), syEndDate);
|
|
|
+ riskInfoVo.setStartDate(duplicateDate.get(0));
|
|
|
+ riskInfoVo.setEndDate(duplicateDate.get(1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return quotation(orderNo, kindInfoVos, riskInfoVos, quoteInfoVo, odr1016Response,
|
|
|
+ insAccidentalDrivingDajia, insAccidentalDrivingSubDajias, daJiaConfigureParameters, isEnergy);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return odr1009Response;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public HttpResult<QuoteRespVo> responseOrder(ODR1009Response odr1009Response,
|
|
|
QuoteRespVo quoteRespVo,
|