|
@@ -19,6 +19,7 @@ import com.jzg.quotation.commons.entity.GetCaptchaRequest;
|
|
|
import com.jzg.quotation.commons.entity.GetCaptchaResponse;
|
|
import com.jzg.quotation.commons.entity.GetCaptchaResponse;
|
|
|
import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
|
|
import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
|
|
|
import com.jzg.quotation.commons.utils.DateTimeUtil;
|
|
import com.jzg.quotation.commons.utils.DateTimeUtil;
|
|
|
|
|
+import com.jzg.quotation.commons.utils.TimeProcessing;
|
|
|
import com.jzg.quotation.zijin.api.constant.enums.MotorVehicleInsuranceEnum;
|
|
import com.jzg.quotation.zijin.api.constant.enums.MotorVehicleInsuranceEnum;
|
|
|
import com.jzg.quotation.zijin.api.constant.enums.RiskCodeEnum;
|
|
import com.jzg.quotation.zijin.api.constant.enums.RiskCodeEnum;
|
|
|
import com.jzg.quotation.zijin.api.entity.request.UploadImageInfoListRequest;
|
|
import com.jzg.quotation.zijin.api.entity.request.UploadImageInfoListRequest;
|
|
@@ -47,6 +48,8 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.regex.Matcher;
|
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -196,6 +199,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
ziJinCrawlerQuotationRequest.setVehicleInfo(buildVehicleInfo(quoteVo, actualValue, modelCode, iacVehicleCode, ziJinCrawlerCarResponse));
|
|
ziJinCrawlerQuotationRequest.setVehicleInfo(buildVehicleInfo(quoteVo, actualValue, modelCode, iacVehicleCode, ziJinCrawlerCarResponse));
|
|
|
|
|
|
|
|
// 设置盈利数据列表
|
|
// 设置盈利数据列表
|
|
|
|
|
+ // todo: 完了看是否要调整
|
|
|
ziJinCrawlerQuotationRequest.setProfitDataList(buildProfitDataList(quoteVo));
|
|
ziJinCrawlerQuotationRequest.setProfitDataList(buildProfitDataList(quoteVo));
|
|
|
|
|
|
|
|
// 设置税务字段
|
|
// 设置税务字段
|
|
@@ -211,6 +215,24 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
// 设置紫金财险爬虫订单号,后面保存到数据库中
|
|
// 设置紫金财险爬虫订单号,后面保存到数据库中
|
|
|
ziJinCrawlerQuotationResponse.setOrderNo(ziJinCrawlerGetOrderNoResponse.getOrderNo());
|
|
ziJinCrawlerQuotationResponse.setOrderNo(ziJinCrawlerGetOrderNoResponse.getOrderNo());
|
|
|
|
|
|
|
|
|
|
+ // 重复投保,延保
|
|
|
|
|
+ if (ResponseCode.R_0002.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode()) && ziJinCrawlerQuotationResponse.getRtnMsg() != null && ziJinCrawlerQuotationResponse.getRtnMsg().contains("重复投保")) {
|
|
|
|
|
+ String endTime = extractDuplicateEndTime(ziJinCrawlerQuotationResponse.getRtnMsg());
|
|
|
|
|
+ if (StringUtils.hasLength(endTime)) {
|
|
|
|
|
+ String startTime = endTime;
|
|
|
|
|
+ String newEndTime = TimeProcessing.minusOneSecondAfterYear(startTime);
|
|
|
|
|
+ // 修改商业险起保时间(后端接口期望日期格式为 yyyy-MM-dd)
|
|
|
|
|
+ ziJinCrawlerQuotationRequest.getBaseInfo().setStartDate(TimeProcessing.dateTimeToDate(startTime));
|
|
|
|
|
+ ziJinCrawlerQuotationRequest.getBaseInfo().setEndDate(TimeProcessing.minusDays(TimeProcessing.dateTimeToDate(newEndTime), 1));
|
|
|
|
|
+ // 修改交强险起保时间
|
|
|
|
|
+ ziJinCrawlerQuotationRequest.getBaseInfo().setStartDateCI(TimeProcessing.dateTimeToDate(startTime));
|
|
|
|
|
+ ziJinCrawlerQuotationRequest.getBaseInfo().setEndDateCI(TimeProcessing.minusDays(TimeProcessing.dateTimeToDate(newEndTime), 1));
|
|
|
|
|
+ log.info("紫金报价重复投保参数: startTime={}, endTime={}", startTime, newEndTime);
|
|
|
|
|
+ ziJinCrawlerQuotationResponse = ziJinCrawlerRequestComponent.quotation(ziJinCrawlerQuotationRequest, headers);
|
|
|
|
|
+ log.info("紫金报价重复投保后响应: {}", JSON.toJSONString(ziJinCrawlerQuotationResponse));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 转保标志
|
|
// 转保标志
|
|
|
if (ResponseCode.R_0001.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode())) {
|
|
if (ResponseCode.R_0001.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode())) {
|
|
|
if (ziJinCrawlerQuotationResponse.getBasePart() != null) {
|
|
if (ziJinCrawlerQuotationResponse.getBasePart() != null) {
|
|
@@ -223,6 +245,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
// 4.0 处理报价失败
|
|
// 4.0 处理报价失败
|
|
|
if (!ResponseCode.R_0000.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode())) {
|
|
if (!ResponseCode.R_0000.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode())) {
|
|
|
ziJinCrawlerOrderService.save(quoteVo, ziJinCrawlerQuotationResponse, null, ziJinCrawlerQuotationRequest.getOrderId(), false);
|
|
ziJinCrawlerOrderService.save(quoteVo, ziJinCrawlerQuotationResponse, null, ziJinCrawlerQuotationRequest.getOrderId(), false);
|
|
@@ -353,7 +376,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
|
|
public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
|
|
|
- log.info("uploadImage入参的值:{}", JSONObject.toJSONString(insuranceUploadImageVo));
|
|
|
|
|
|
|
+ // log.info("uploadImage入参的值:{}", JSONObject.toJSONString(insuranceUploadImageVo));
|
|
|
try {
|
|
try {
|
|
|
|
|
|
|
|
// 获取归属信息
|
|
// 获取归属信息
|
|
@@ -373,6 +396,14 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
throw new SystemException("未找到订单信息,订单号:" + order.getOrdersNo());
|
|
throw new SystemException("未找到订单信息,订单号:" + order.getOrdersNo());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ String orderNo = null;
|
|
|
|
|
+ if (ObjectUtils.isEmpty(ziJinCrawlerOrder.getOrderNo())) {
|
|
|
|
|
+ // 获取订单信息
|
|
|
|
|
+ ZiJinCrawlerOrder ziJinCrawlerOrder1 = ziJinCrawlerCacheComponent.getOrderResponse(order.getOrdersNo());
|
|
|
|
|
+ log.info("缓存中获取订单信息,订单号:{}, 订单信息:{}", order.getOrdersNo(), JSONObject.toJSONString(ziJinCrawlerOrder1));
|
|
|
|
|
+ orderNo = ziJinCrawlerOrder1.getOrderNo();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 检查影像列表是否为空
|
|
// 检查影像列表是否为空
|
|
|
if (CollectionUtils.isEmpty(insuranceUploadImageVo.getImageVoList())) {
|
|
if (CollectionUtils.isEmpty(insuranceUploadImageVo.getImageVoList())) {
|
|
|
log.warn("影像列表为空,订单号:{}", order.getOrdersNo());
|
|
log.warn("影像列表为空,订单号:{}", order.getOrdersNo());
|
|
@@ -410,7 +441,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
// 设置文件类型,转换为紫金对应的文件类型
|
|
// 设置文件类型,转换为紫金对应的文件类型
|
|
|
String fileType = getFileTypeByImageCode(insuranceImageVo.getImageCode());
|
|
String fileType = getFileTypeByImageCode(insuranceImageVo.getImageCode());
|
|
|
ziJinCrawlerImageUploadRequest.setFileType(fileType);
|
|
ziJinCrawlerImageUploadRequest.setFileType(fileType);
|
|
|
- ziJinCrawlerImageUploadRequest.setOrderNo(ziJinCrawlerOrder.getOrderNo());
|
|
|
|
|
|
|
+ ziJinCrawlerImageUploadRequest.setOrderNo(ziJinCrawlerOrder.getOrderNo() == null ? orderNo : ziJinCrawlerOrder.getOrderNo());
|
|
|
ZiJinCrawlerImageUploadResponse ziJinCrawlerImageUploadResponse = ziJinCrawlerRequestComponent.uploadImage(ziJinCrawlerImageUploadRequest, headers);
|
|
ZiJinCrawlerImageUploadResponse ziJinCrawlerImageUploadResponse = ziJinCrawlerRequestComponent.uploadImage(ziJinCrawlerImageUploadRequest, headers);
|
|
|
log.info("影像上传响应,订单号:{},响应:{}", ziJinCrawlerOrder.getOrderNo(), JSON.toJSONString(ziJinCrawlerImageUploadResponse));
|
|
log.info("影像上传响应,订单号:{},响应:{}", ziJinCrawlerOrder.getOrderNo(), JSON.toJSONString(ziJinCrawlerImageUploadResponse));
|
|
|
|
|
|
|
@@ -1388,8 +1419,8 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
carPolicySubInfo.setPlanName(accidentalDriving.getProductName());
|
|
carPolicySubInfo.setPlanName(accidentalDriving.getProductName());
|
|
|
carPolicySubInfo.setInsureGradeNo("");
|
|
carPolicySubInfo.setInsureGradeNo("");
|
|
|
carPolicySubInfo.setProductCode(accidentalDriving.getProductCode());
|
|
carPolicySubInfo.setProductCode(accidentalDriving.getProductCode());
|
|
|
- carPolicySubInfo.setRiskCode("0736");
|
|
|
|
|
- carPolicySubInfo.setRiskName("全家安行保");
|
|
|
|
|
|
|
+ carPolicySubInfo.setRiskCode("0736"); // 完了要调整编码,是否要转换
|
|
|
|
|
+ carPolicySubInfo.setRiskName("全家安行保"); // 完了要调整成accidentalDriving.getRiskName(),看名称是否传了
|
|
|
carPolicySubInfo.setSumAmount(ObjectUtils.isEmpty(accidentalDriving.getSumAmount()) ? null : (int) Double.parseDouble(accidentalDriving.getSumAmount()));
|
|
carPolicySubInfo.setSumAmount(ObjectUtils.isEmpty(accidentalDriving.getSumAmount()) ? null : (int) Double.parseDouble(accidentalDriving.getSumAmount()));
|
|
|
carPolicySubInfo.setQuantity(accidentalDriving.getQuantity() == 0 ? "0" : String.valueOf(accidentalDriving.getQuantity()));
|
|
carPolicySubInfo.setQuantity(accidentalDriving.getQuantity() == 0 ? "0" : String.valueOf(accidentalDriving.getQuantity()));
|
|
|
carPolicySubInfo.setIsUseInsured("1");
|
|
carPolicySubInfo.setIsUseInsured("1");
|
|
@@ -1738,7 +1769,26 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
|
|
|
return profitDataList;
|
|
return profitDataList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 截取重复投保终保日期的正则表达式
|
|
|
|
|
+ */
|
|
|
|
|
+ private static final Pattern DUPLICATE_END_TIME_PATTERN = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 提取重复投保消息中的终保日期
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param returnMessage 返回消息
|
|
|
|
|
+ * @return 提取到的时间字符串,格式为 yyyy-MM-dd HH:mm:ss,未提取到返回 null
|
|
|
|
|
+ */
|
|
|
|
|
+ private String extractDuplicateEndTime(String returnMessage) {
|
|
|
|
|
+ if (returnMessage == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ Matcher matcher = DUPLICATE_END_TIME_PATTERN.matcher(returnMessage);
|
|
|
|
|
+ if (matcher.find()) {
|
|
|
|
|
+ String shortEndTime = matcher.group(1);
|
|
|
|
|
+ return shortEndTime + ":00";
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|