|
@@ -1,10 +1,8 @@
|
|
|
package com.jzg.quotation.taikang.crawler.service;
|
|
package com.jzg.quotation.taikang.crawler.service;
|
|
|
|
|
|
|
|
-import com.jzg.commons.constants.quote.enums.quote.CarKindCode;
|
|
|
|
|
-import com.jzg.commons.constants.quote.enums.quote.VehicleUseCode;
|
|
|
|
|
import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
|
|
import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
|
|
|
import com.jzg.commons.entity.quote.vo.*;
|
|
import com.jzg.commons.entity.quote.vo.*;
|
|
|
-import com.jzg.commons.util.IDCardUtils;
|
|
|
|
|
|
|
+
|
|
|
import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
|
|
import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
|
|
|
import com.jzg.quotation.taikang.crawler.CodeUtil;
|
|
import com.jzg.quotation.taikang.crawler.CodeUtil;
|
|
|
import com.jzg.quotation.taikang.crawler.model.TKLoginSession;
|
|
import com.jzg.quotation.taikang.crawler.model.TKLoginSession;
|
|
@@ -87,53 +85,6 @@ public class TKSimpleService {
|
|
|
nonCarProductListDTO.setEndDate(null);
|
|
nonCarProductListDTO.setEndDate(null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * 车辆使用性质代码映射表:公司系统代码 -> 保司系统代码
|
|
|
|
|
- */
|
|
|
|
|
- private static final Map<String, String> VEHICLE_USE_CODE_MAP = Map.of(
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_05.getCode(), "8A",
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_06.getCode(), "8C",
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_07.getCode(), "8B",
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_01.getCode(), "9",
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_02.getCode(), "9",
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_03.getCode(), "9",
|
|
|
|
|
- VehicleUseCode.VEHICLE_USE_CODE_04.getCode(), "9"
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 根据车辆大类代码解析保司车辆类型
|
|
|
|
|
- * <p>
|
|
|
|
|
- * 将公司系统的车辆大类代码转换为保司系统的车辆类型代码
|
|
|
|
|
- *
|
|
|
|
|
- * @param carKindCode 车辆大类代码
|
|
|
|
|
- * @return 保司车辆类型代码 (A/D)
|
|
|
|
|
- */
|
|
|
|
|
- private static String resolveCarType(String carKindCode) {
|
|
|
|
|
- if (carKindCode.equals(CarKindCode.CAR_KIND_CODE_A0.getCode())) {
|
|
|
|
|
- return "A";
|
|
|
|
|
- } else if (carKindCode.equals(CarKindCode.CAR_KIND_CODE_A1.getCode())) {
|
|
|
|
|
- return "D";
|
|
|
|
|
- } else {
|
|
|
|
|
- throw new RuntimeException("未知车辆大类:" + carKindCode);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 获取字符串中第一个小数点之前的部分
|
|
|
|
|
- * <p>
|
|
|
|
|
- * 用于处理排量、购车价等需要去掉小数部分的场景
|
|
|
|
|
- *
|
|
|
|
|
- * @param value 原始字符串
|
|
|
|
|
- * @return 小数点之前的部分,若没有小数点则返回原字符串
|
|
|
|
|
- */
|
|
|
|
|
- private static String substringBeforeDot(String value) {
|
|
|
|
|
- if (StringUtils.isBlank(value)) {
|
|
|
|
|
- return value;
|
|
|
|
|
- }
|
|
|
|
|
- int dotIndex = value.indexOf(".");
|
|
|
|
|
- return dotIndex > 0 ? value.substring(0, dotIndex) : value;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
public TKLoginSession login(String username, String password) {
|
|
public TKLoginSession login(String username, String password) {
|
|
|
IdentityTokenResult identityTokenResult = httpService.identityToken();
|
|
IdentityTokenResult identityTokenResult = httpService.identityToken();
|
|
|
|
|
|
|
@@ -380,7 +331,7 @@ public class TKSimpleService {
|
|
|
carInfoVo.setLicenseNo(commonCarInfoVo.getLicenseNo());
|
|
carInfoVo.setLicenseNo(commonCarInfoVo.getLicenseNo());
|
|
|
|
|
|
|
|
// 车辆大类(通过辅助方法解析)
|
|
// 车辆大类(通过辅助方法解析)
|
|
|
- carInfoVo.setCarType(resolveCarType(commonCarInfoVo.getCarKindCode()));
|
|
|
|
|
|
|
+ carInfoVo.setCarType(TKCommonUtil.resolveCarType(commonCarInfoVo.getCarKindCode()));
|
|
|
|
|
|
|
|
setLicenseTypeByLicenseNo(carInfoVo, carInfoVo.getLicenseNo());
|
|
setLicenseTypeByLicenseNo(carInfoVo, carInfoVo.getLicenseNo());
|
|
|
carInfoVo.setLocalCarFlag(null); // todo 车型查询时没有传这个参数,暂时不知什么地方用到。
|
|
carInfoVo.setLocalCarFlag(null); // todo 车型查询时没有传这个参数,暂时不知什么地方用到。
|
|
@@ -423,16 +374,8 @@ public class TKSimpleService {
|
|
|
carInfoVo.setVinNo(commonCarInfoVo.getVinNo());
|
|
carInfoVo.setVinNo(commonCarInfoVo.getVinNo());
|
|
|
carInfoVo.setVehicleModel(commonCarInfoVo.getBrandName());
|
|
carInfoVo.setVehicleModel(commonCarInfoVo.getBrandName());
|
|
|
|
|
|
|
|
- // 车辆大类
|
|
|
|
|
- String carKindCode = commonCarInfoVo.getCarKindCode();
|
|
|
|
|
-
|
|
|
|
|
- if (carKindCode.equals(CarKindCode.CAR_KIND_CODE_A0.getCode())) {
|
|
|
|
|
- carInfoVo.setCarType("A");
|
|
|
|
|
- } else if (carKindCode.equals(CarKindCode.CAR_KIND_CODE_A1.getCode())) {
|
|
|
|
|
- carInfoVo.setCarType("D");
|
|
|
|
|
- } else {
|
|
|
|
|
- throw new RuntimeException("未知车辆大类:" + carKindCode);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 车辆大类(通过辅助方法解析)
|
|
|
|
|
+ carInfoVo.setCarType(TKCommonUtil.resolveCarType(commonCarInfoVo.getCarKindCode()));
|
|
|
|
|
|
|
|
carInfoVo.setLocalCarFlag(null); // todo 车型查询时没有传这个参数,暂时不知什么地方用到。
|
|
carInfoVo.setLocalCarFlag(null); // todo 车型查询时没有传这个参数,暂时不知什么地方用到。
|
|
|
|
|
|
|
@@ -477,11 +420,7 @@ public class TKSimpleService {
|
|
|
if (StringUtils.isBlank(commonCarInfoVo.getVinNo())) {
|
|
if (StringUtils.isBlank(commonCarInfoVo.getVinNo())) {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
- TKCarOwnerVo carOwnerVo = new TKCarOwnerVo();
|
|
|
|
|
- carOwnerVo.setCarOwnerNature("1"); // todo
|
|
|
|
|
- carOwnerVo.setCertificateType("01"); // 身份证
|
|
|
|
|
- carOwnerVo.setId(ownersInfo.getIdentifyNumber());
|
|
|
|
|
- carOwnerVo.setName(ownersInfo.getName());
|
|
|
|
|
|
|
+ TKCarOwnerVo carOwnerVo = TKCommonUtil.buildCarOwnerVo(ownersInfo);
|
|
|
|
|
|
|
|
TKCarInfoVo carInfoVo = new TKCarInfoVo();
|
|
TKCarInfoVo carInfoVo = new TKCarInfoVo();
|
|
|
TKCarModel tkCarModel = CarModelsFilterUtils.to(tkCarModels, commonCarInfoVo);
|
|
TKCarModel tkCarModel = CarModelsFilterUtils.to(tkCarModels, commonCarInfoVo);
|
|
@@ -512,16 +451,8 @@ public class TKSimpleService {
|
|
|
carInfoVo.setExhaustScale(tkCarModel.getDisplacement());
|
|
carInfoVo.setExhaustScale(tkCarModel.getDisplacement());
|
|
|
carInfoVo.setBillNo("");
|
|
carInfoVo.setBillNo("");
|
|
|
carInfoVo.setCarCheckVo(new TKCarInfoVo.CarCheckVo("", 1, ""));
|
|
carInfoVo.setCarCheckVo(new TKCarInfoVo.CarCheckVo("", 1, ""));
|
|
|
- // 车辆大类
|
|
|
|
|
- String carKindCode = commonCarInfoVo.getCarKindCode();
|
|
|
|
|
-
|
|
|
|
|
- if (carKindCode.equals(CarKindCode.CAR_KIND_CODE_A0.getCode())) {
|
|
|
|
|
- carInfoVo.setCarType("A");
|
|
|
|
|
- } else if (carKindCode.equals(CarKindCode.CAR_KIND_CODE_A1.getCode())) {
|
|
|
|
|
- carInfoVo.setCarType("D");
|
|
|
|
|
- } else {
|
|
|
|
|
- throw new RuntimeException("未知车辆大类:" + carKindCode);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 车辆大类(通过辅助方法解析)
|
|
|
|
|
+ carInfoVo.setCarType(TKCommonUtil.resolveCarType(commonCarInfoVo.getCarKindCode()));
|
|
|
|
|
|
|
|
carInfoVo.setLocalCarFlag(null); // todo 车型查询时没有传这个参数,暂时不知什么地方用到。
|
|
carInfoVo.setLocalCarFlag(null); // todo 车型查询时没有传这个参数,暂时不知什么地方用到。
|
|
|
CarModelinfoQueryParam carModelinfoQueryParam = new CarModelinfoQueryParam();
|
|
CarModelinfoQueryParam carModelinfoQueryParam = new CarModelinfoQueryParam();
|
|
@@ -699,10 +630,10 @@ public class TKSimpleService {
|
|
|
* 6. 其他信息构建:设置查询标志、OCR标志等
|
|
* 6. 其他信息构建:设置查询标志、OCR标志等
|
|
|
* 7. 请求组装:组装完整的保存参数并调用保司接口
|
|
* 7. 请求组装:组装完整的保存参数并调用保司接口
|
|
|
*
|
|
*
|
|
|
- * @param session 登录会话信息
|
|
|
|
|
- * @param mainOrderId 主订单ID
|
|
|
|
|
- * @param commonQuoteVo 公司系统报价参数
|
|
|
|
|
- * @param tkAreaInfoVo 区域信息(含代理人信息)
|
|
|
|
|
|
|
+ * @param session 登录会话信息
|
|
|
|
|
+ * @param mainOrderId 主订单ID
|
|
|
|
|
+ * @param commonQuoteVo 公司系统报价参数
|
|
|
|
|
+ * @param tkAreaInfoVo 区域信息(含代理人信息)
|
|
|
* @param carModelinfoQueryResult 车型查询结果
|
|
* @param carModelinfoQueryResult 车型查询结果
|
|
|
*/
|
|
*/
|
|
|
public void orderCreate(TKLoginSession session,
|
|
public void orderCreate(TKLoginSession session,
|
|
@@ -730,18 +661,7 @@ public class TKSimpleService {
|
|
|
|
|
|
|
|
// ========== 2. 车主信息构建 ==========
|
|
// ========== 2. 车主信息构建 ==========
|
|
|
|
|
|
|
|
- TKCarOwnerVo carOwnerVo = new TKCarOwnerVo();
|
|
|
|
|
- Optional.ofNullable(commonQuoteVo.getOwnersInfo())
|
|
|
|
|
- .ifPresent(ownersInfo -> {
|
|
|
|
|
- carOwnerVo.setCarOwnerNature("1");
|
|
|
|
|
- carOwnerVo.setCertificateType("01");
|
|
|
|
|
- carOwnerVo.setId(ownersInfo.getIdentifyNumber());
|
|
|
|
|
- carOwnerVo.setName(ownersInfo.getName());
|
|
|
|
|
- carOwnerVo.setBirthDate(ownersInfo.getBirthday());
|
|
|
|
|
- carOwnerVo.setSerialno(BigDecimal.ZERO);
|
|
|
|
|
- carOwnerVo.setSex(IDCardUtils.getSex(ownersInfo.getIdentifyNumber()));
|
|
|
|
|
- carOwnerVo.setInsuredAddress("");
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ TKCarOwnerVo carOwnerVo = TKCommonUtil.buildCarOwnerVo(commonQuoteVo.getOwnersInfo());
|
|
|
|
|
|
|
|
// ========== 3. 投保人信息构建 ==========
|
|
// ========== 3. 投保人信息构建 ==========
|
|
|
|
|
|
|
@@ -753,19 +673,16 @@ public class TKSimpleService {
|
|
|
// ========== 4. 车辆信息构建 ==========
|
|
// ========== 4. 车辆信息构建 ==========
|
|
|
|
|
|
|
|
TKCar car = new TKCar();
|
|
TKCar car = new TKCar();
|
|
|
|
|
+
|
|
|
// 设置车辆基本信息
|
|
// 设置车辆基本信息
|
|
|
- car.setFuelType(tkCarModel.getFuelType());
|
|
|
|
|
- car.setModelName(tkCarModel.getModelName());
|
|
|
|
|
- car.setBillDate("");
|
|
|
|
|
- car.setCarBookingTime("");
|
|
|
|
|
- car.setBillNo("");
|
|
|
|
|
|
|
+ TKCommonUtil.buildCarBasicInfo(car, tkCarModel);
|
|
|
car.setColorCode("010");
|
|
car.setColorCode("010");
|
|
|
car.setCuringQuality(tkCarModel.getVehicleWeight());
|
|
car.setCuringQuality(tkCarModel.getVehicleWeight());
|
|
|
car.setVehicleType(tkCarModel.getVehicleType());
|
|
car.setVehicleType(tkCarModel.getVehicleType());
|
|
|
car.setVehicleTypeCname(tkCarModel.getVehicleTypeCname());
|
|
car.setVehicleTypeCname(tkCarModel.getVehicleTypeCname());
|
|
|
|
|
|
|
|
// 设置车辆大类(通过辅助方法解析)
|
|
// 设置车辆大类(通过辅助方法解析)
|
|
|
- car.setCarType(resolveCarType(commonCarInfoVo.getCarKindCode()));
|
|
|
|
|
|
|
+ car.setCarType(TKCommonUtil.resolveCarType(commonCarInfoVo.getCarKindCode()));
|
|
|
|
|
|
|
|
// 使用 autoSetter 设置可选字段(优先使用公司系统值,其次使用车型查询值)
|
|
// 使用 autoSetter 设置可选字段(优先使用公司系统值,其次使用车型查询值)
|
|
|
CodeUtil.autoSetter(car::setLicenseNo, commonCarInfoVo::getLicenseNo, tkCarModel::getLicenseNo);
|
|
CodeUtil.autoSetter(car::setLicenseNo, commonCarInfoVo::getLicenseNo, tkCarModel::getLicenseNo);
|
|
@@ -777,8 +694,8 @@ public class TKSimpleService {
|
|
|
|
|
|
|
|
// 设置固定字段和从车型提取的字段(去掉小数部分)
|
|
// 设置固定字段和从车型提取的字段(去掉小数部分)
|
|
|
car.setSeatFlag(1);
|
|
car.setSeatFlag(1);
|
|
|
- car.setExhaustScale(substringBeforeDot(tkCarModel.getDisplacement()));
|
|
|
|
|
- car.setPurchasePrice(substringBeforeDot(tkCarModel.getPurchasePrice()));
|
|
|
|
|
|
|
+ car.setExhaustScale(TKCommonUtil.substringBeforeDot(tkCarModel.getDisplacement()));
|
|
|
|
|
+ car.setPurchasePrice(TKCommonUtil.substringBeforeDot(tkCarModel.getPurchasePrice()));
|
|
|
car.setVinNo(commonCarInfoVo.getVinNo());
|
|
car.setVinNo(commonCarInfoVo.getVinNo());
|
|
|
car.setEngineNo(commonCarInfoVo.getEngineNo());
|
|
car.setEngineNo(commonCarInfoVo.getEngineNo());
|
|
|
car.setEnrollDate(commonCarInfoVo.getRegisterDate());
|
|
car.setEnrollDate(commonCarInfoVo.getRegisterDate());
|
|
@@ -800,7 +717,7 @@ public class TKSimpleService {
|
|
|
|
|
|
|
|
// 设置车辆使用性质(通过映射表转换,默认8B非营业企业)
|
|
// 设置车辆使用性质(通过映射表转换,默认8B非营业企业)
|
|
|
String vehicleUseCode = commonCarInfoVo.getVehicleUseCode();
|
|
String vehicleUseCode = commonCarInfoVo.getVehicleUseCode();
|
|
|
- car.setUseNatureCodeCode(VEHICLE_USE_CODE_MAP.getOrDefault(vehicleUseCode, "8B"));
|
|
|
|
|
|
|
+ car.setUseNatureCodeCode(TKCommonUtil.VEHICLE_USE_CODE_MAP.getOrDefault(vehicleUseCode, "8B"));
|
|
|
|
|
|
|
|
// 设置车牌类型并根据渠道调整车辆类型
|
|
// 设置车牌类型并根据渠道调整车辆类型
|
|
|
TKSimpleService.setLicenseTypeByLicenseNo(car, car.getLicenseNo());
|
|
TKSimpleService.setLicenseTypeByLicenseNo(car, car.getLicenseNo());
|
|
@@ -1147,7 +1064,7 @@ public class TKSimpleService {
|
|
|
List<AccidentalDrivingVo> accidentalDrivings = commonQuoteVo.getAccidentalDrivings();
|
|
List<AccidentalDrivingVo> accidentalDrivings = commonQuoteVo.getAccidentalDrivings();
|
|
|
|
|
|
|
|
// 根据公司系统驾意险参数进行匹配覆盖
|
|
// 根据公司系统驾意险参数进行匹配覆盖
|
|
|
- // 注意:当 carPlanInfoMap 为空时,跳过处理,保持 driverAccidentVo 原有状态(与原逻辑一致)
|
|
|
|
|
|
|
+ // 注意:当 carPlanInfoMap 为空时,跳过处理,保持 driverAccidentVo 原有状态
|
|
|
if (CollectionUtils.isNotEmpty(accidentalDrivings) && !carPlanInfoMap.isEmpty()) {
|
|
if (CollectionUtils.isNotEmpty(accidentalDrivings) && !carPlanInfoMap.isEmpty()) {
|
|
|
accidentalDrivings.stream()
|
|
accidentalDrivings.stream()
|
|
|
.filter(accidentalDriving -> accidentalDriving.getProductCode() != null)
|
|
.filter(accidentalDriving -> accidentalDriving.getProductCode() != null)
|