|
@@ -8,6 +8,7 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
|
|
|
import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
|
import com.jzg.commons.entity.vo.ImagesVo;
|
|
import com.jzg.commons.entity.vo.ImagesVo;
|
|
|
import com.jzg.commons.entity.vo.InsTaskImagesVo;
|
|
import com.jzg.commons.entity.vo.InsTaskImagesVo;
|
|
|
|
|
+import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.MinioUtils;
|
|
import com.jzg.commons.util.MinioUtils;
|
|
|
import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerRequestComponent;
|
|
import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerRequestComponent;
|
|
|
import com.jzg.quotation.renbaonew.mapper.RenBaoImageMapper;
|
|
import com.jzg.quotation.renbaonew.mapper.RenBaoImageMapper;
|
|
@@ -176,9 +177,6 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 设置顶层参数
|
|
|
|
|
- buildTopLevelParameters(request);
|
|
|
|
|
-
|
|
|
|
|
// =====================================================================
|
|
// =====================================================================
|
|
|
// 步骤2.2:查询归属人信息(业务归属)
|
|
// 步骤2.2:查询归属人信息(业务归属)
|
|
|
// =====================================================================
|
|
// =====================================================================
|
|
@@ -293,6 +291,10 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
// 0=燃油, 1=纯电动, 2=燃料电池, 3=插电混动, 4=其他混动, 9=其他
|
|
// 0=燃油, 1=纯电动, 2=燃料电池, 3=插电混动, 4=其他混动, 9=其他
|
|
|
// =====================================================================
|
|
// =====================================================================
|
|
|
String energyTypePlat = calculateEnergyTypePlat(fuelType);
|
|
String energyTypePlat = calculateEnergyTypePlat(fuelType);
|
|
|
|
|
+ String isEnergyCar = carInfo.getEnergyTypeCode() != null && carInfo.getEnergyTypeCode().equals("1") ? "1" : "0";
|
|
|
|
|
+
|
|
|
|
|
+ // 设置顶层参数
|
|
|
|
|
+ buildTopLevelParameters(request, isEnergyCar, energyTypePlat);
|
|
|
|
|
|
|
|
// =====================================================================
|
|
// =====================================================================
|
|
|
// 步骤4:计算车辆实际价值(车损险保额计算基础)
|
|
// 步骤4:计算车辆实际价值(车损险保额计算基础)
|
|
@@ -343,7 +345,7 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
seatCount, // 座位数
|
|
seatCount, // 座位数
|
|
|
vehicleTonnage, // 核定载质量(货车用)
|
|
vehicleTonnage, // 核定载质量(货车用)
|
|
|
energyTypePlat, // 能源类型平台代码
|
|
energyTypePlat, // 能源类型平台代码
|
|
|
- carInfo.getEnergyTypeCode() != null && carInfo.getEnergyTypeCode().equals("1") ? "1" : "0", // 是否新能源
|
|
|
|
|
|
|
+ isEnergyCar, // 是否新能源
|
|
|
startDate, // 起保日期
|
|
startDate, // 起保日期
|
|
|
gscomCode, // 归属部门代码
|
|
gscomCode, // 归属部门代码
|
|
|
headers,
|
|
headers,
|
|
@@ -416,13 +418,13 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
handlerCodeUni, handler1CodeUni, useYear, cqpCount, linkerName));
|
|
handlerCodeUni, handler1CodeUni, useYear, cqpCount, linkerName));
|
|
|
request.setPrpCitemCar(buildPrpCitemCar(carInfo, actualValueStr, vehicleModelCode,
|
|
request.setPrpCitemCar(buildPrpCitemCar(carInfo, actualValueStr, vehicleModelCode,
|
|
|
vehicleId, vehicleModelCode, useNatureCode, vehicleClassPicc, fuelType, clauseType, vehicleFgwCode, purchasePrice,
|
|
vehicleId, vehicleModelCode, useNatureCode, vehicleClassPicc, fuelType, clauseType, vehicleFgwCode, purchasePrice,
|
|
|
- gscomCode, loginInfo.getUserCode(), headers, username, queryArea));
|
|
|
|
|
|
|
+ gscomCode, loginInfo.getUserCode(), headers, username, queryArea, isEnergyCar, energyTypePlat));
|
|
|
request.setPrpCinsureds(buildPrpCinsureds(quoteVo,customerResponse));
|
|
request.setPrpCinsureds(buildPrpCinsureds(quoteVo,customerResponse));
|
|
|
|
|
|
|
|
// 价格系数默认使用1.0(与Python保持一致)
|
|
// 价格系数默认使用1.0(与Python保持一致)
|
|
|
String priceCoefficient = "1.0";
|
|
String priceCoefficient = "1.0";
|
|
|
List<Map<String, Object>> kindMapList = convertKindInfoToMapList(quoteVo.getKindInfoVo());
|
|
List<Map<String, Object>> kindMapList = convertKindInfoToMapList(quoteVo.getKindInfoVo());
|
|
|
- request.setPrpCitemKindsTemp(buildPrpCitemKindsTemp(kindMapList, actualValueStr, priceCoefficient, seatCount));
|
|
|
|
|
|
|
+ request.setPrpCitemKindsTemp(buildPrpCitemKindsTemp(kindMapList, actualValueStr, priceCoefficient, seatCount, isEnergyCar));
|
|
|
|
|
|
|
|
request.setPrpCitemKindCI(buildPrpCitemKindCI(quoteVo));
|
|
request.setPrpCitemKindCI(buildPrpCitemKindCI(quoteVo));
|
|
|
request.setPrpCcarShipTax(buildPrpCcarShipTax(customerResponse, carInfo));
|
|
request.setPrpCcarShipTax(buildPrpCcarShipTax(customerResponse, carInfo));
|
|
@@ -518,7 +520,7 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
* 构建顶层参数 - 规整所有顶级字段
|
|
* 构建顶层参数 - 规整所有顶级字段
|
|
|
*
|
|
*
|
|
|
*/
|
|
*/
|
|
|
- private void buildTopLevelParameters(RenBaoNewCrawlerQuoteRequest request) {
|
|
|
|
|
|
|
+ private void buildTopLevelParameters(RenBaoNewCrawlerQuoteRequest request, String isEnergyCar, String energyTypePlat) {
|
|
|
// ========== req2.json 独有的字段 ==========
|
|
// ========== req2.json 独有的字段 ==========
|
|
|
// 注意:userName, userCode 在调用处单独设置,因为需要 loginInfo
|
|
// 注意:userName, userCode 在调用处单独设置,因为需要 loginInfo
|
|
|
request.setUserSonType(null);
|
|
request.setUserSonType(null);
|
|
@@ -526,8 +528,8 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
request.setProfitinfoFlag(true);
|
|
request.setProfitinfoFlag(true);
|
|
|
request.setTaskNo("");
|
|
request.setTaskNo("");
|
|
|
request.setDmFlag("");
|
|
request.setDmFlag("");
|
|
|
- request.setEnergyFlag("0");
|
|
|
|
|
- request.setEnergyTypePlat("0");
|
|
|
|
|
|
|
+ request.setEnergyFlag(isEnergyCar != null ? isEnergyCar : "0");
|
|
|
|
|
+ request.setEnergyTypePlat(energyTypePlat != null ? energyTypePlat : "0");
|
|
|
request.setIsForbiddenFlag("0");
|
|
request.setIsForbiddenFlag("0");
|
|
|
request.setIsBusinessType("I");
|
|
request.setIsBusinessType("I");
|
|
|
request.setLastDamagedBI("");
|
|
request.setLastDamagedBI("");
|
|
@@ -655,9 +657,11 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
|
|
|
|
|
if (addResponse != null && "Success".equals(addResponse.getMessage())) {
|
|
if (addResponse != null && "Success".equals(addResponse.getMessage())) {
|
|
|
log.info("Customer add success: {}", customerInfo.getName());
|
|
log.info("Customer add success: {}", customerInfo.getName());
|
|
|
- if (addResponse.getData() != null) {
|
|
|
|
|
|
|
+ if (addResponse.getData() != null && addResponse.getData().get("errorMessage").equals("")) {
|
|
|
customerData = JSON.parseObject(JSON.toJSONString(addResponse.getData()),
|
|
customerData = JSON.parseObject(JSON.toJSONString(addResponse.getData()),
|
|
|
RenBaoNewCrawlerCustomerResponse.CustomerData.class);
|
|
RenBaoNewCrawlerCustomerResponse.CustomerData.class);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ throw new SystemException(addResponse.getData().get("errorMessage")+"");
|
|
|
}
|
|
}
|
|
|
return customerData;
|
|
return customerData;
|
|
|
} else {
|
|
} else {
|
|
@@ -1578,7 +1582,7 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
String carKindCode, String fuelType, String clauseType,
|
|
String carKindCode, String fuelType, String clauseType,
|
|
|
String vehicleFgwCode, BigDecimal purchasePrice,
|
|
String vehicleFgwCode, BigDecimal purchasePrice,
|
|
|
String comCode, String userCode, HttpHeaders headers, String username,
|
|
String comCode, String userCode, HttpHeaders headers, String username,
|
|
|
- String queryArea) {
|
|
|
|
|
|
|
+ String queryArea, String isEnergyCar, String energyTypePlat) {
|
|
|
Map<String, Object> prpCitemCar = new HashMap<>();
|
|
Map<String, Object> prpCitemCar = new HashMap<>();
|
|
|
String formattedRegisterDate = formatDateWithTimezone(carInfo.getRegisterDate());
|
|
String formattedRegisterDate = formatDateWithTimezone(carInfo.getRegisterDate());
|
|
|
|
|
|
|
@@ -1639,7 +1643,7 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
prpCitemCar.put("modelCode", finalVehicleId != null && !finalVehicleId.isEmpty() ? finalVehicleId : carInfo.getCarModelNo());
|
|
prpCitemCar.put("modelCode", finalVehicleId != null && !finalVehicleId.isEmpty() ? finalVehicleId : carInfo.getCarModelNo());
|
|
|
prpCitemCar.put("ModelCodePlat", finalVehicleModelCode != null ? finalVehicleModelCode : "");
|
|
prpCitemCar.put("ModelCodePlat", finalVehicleModelCode != null ? finalVehicleModelCode : "");
|
|
|
prpCitemCar.put("useNatureCode", useNatureCode != null && !useNatureCode.isEmpty() ? useNatureCode : "211");
|
|
prpCitemCar.put("useNatureCode", useNatureCode != null && !useNatureCode.isEmpty() ? useNatureCode : "211");
|
|
|
- prpCitemCar.put("licenseType", "02");
|
|
|
|
|
|
|
+ prpCitemCar.put("licenseType", "1".equals(isEnergyCar) ? "52" : "02");
|
|
|
prpCitemCar.put("carKindCode", carKindCode != null ? carKindCode : "A01");
|
|
prpCitemCar.put("carKindCode", carKindCode != null ? carKindCode : "A01");
|
|
|
prpCitemCar.put("clauseType", clauseType != null ? clauseType : "F42");
|
|
prpCitemCar.put("clauseType", clauseType != null ? clauseType : "F42");
|
|
|
prpCitemCar.put("clauseTypeOld", clauseType != null ? clauseType : "F42");
|
|
prpCitemCar.put("clauseTypeOld", clauseType != null ? clauseType : "F42");
|
|
@@ -1685,7 +1689,8 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
prpCitemCar.put("carLotEquQuality", carLotEquQuality != null ? carLotEquQuality : "");
|
|
prpCitemCar.put("carLotEquQuality", carLotEquQuality != null ? carLotEquQuality : "");
|
|
|
- prpCitemCar.put("isEnergyCar", matchedIsEnergyCar != null ? matchedIsEnergyCar : "0");
|
|
|
|
|
|
|
+ String finalIsEnergyCar = matchedIsEnergyCar != null ? matchedIsEnergyCar : isEnergyCar;
|
|
|
|
|
+ prpCitemCar.put("isEnergyCar", finalIsEnergyCar != null ? finalIsEnergyCar : "0");
|
|
|
prpCitemCar.put("isDangerous", "0");
|
|
prpCitemCar.put("isDangerous", "0");
|
|
|
prpCitemCar.put("isDropinVisitInsure", "0");
|
|
prpCitemCar.put("isDropinVisitInsure", "0");
|
|
|
prpCitemCar.put("indexn", "");
|
|
prpCitemCar.put("indexn", "");
|
|
@@ -1715,9 +1720,9 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
|
|
|
|
|
// ========== 车辆基本属性 ==========
|
|
// ========== 车辆基本属性 ==========
|
|
|
prpCitemCar.put("licenseFlag", "1");
|
|
prpCitemCar.put("licenseFlag", "1");
|
|
|
- prpCitemCar.put("energyFlag", "0");
|
|
|
|
|
|
|
+ prpCitemCar.put("energyFlag", finalIsEnergyCar != null ? finalIsEnergyCar : "0");
|
|
|
prpCitemCar.put("energyTypePlatCode", "");
|
|
prpCitemCar.put("energyTypePlatCode", "");
|
|
|
- prpCitemCar.put("energyTypePlat", calculateEnergyTypePlat(fuelType));
|
|
|
|
|
|
|
+ prpCitemCar.put("energyTypePlat", energyTypePlat != null ? energyTypePlat : calculateEnergyTypePlat(fuelType));
|
|
|
prpCitemCar.put("energyTypePlatQ39", "");
|
|
prpCitemCar.put("energyTypePlatQ39", "");
|
|
|
prpCitemCar.put("vehicleFgwCode", vehicleFgwCode != null ? vehicleFgwCode : "");
|
|
prpCitemCar.put("vehicleFgwCode", vehicleFgwCode != null ? vehicleFgwCode : "");
|
|
|
prpCitemCar.put("modelCodeAlias", "");
|
|
prpCitemCar.put("modelCodeAlias", "");
|
|
@@ -2387,10 +2392,12 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
* @param actualValue 车辆真实价值
|
|
* @param actualValue 车辆真实价值
|
|
|
* @param priceCoefficient 价格系数
|
|
* @param priceCoefficient 价格系数
|
|
|
* @param seatCount 座位数
|
|
* @param seatCount 座位数
|
|
|
|
|
+ * @param isEnergyCar 是否新能源车
|
|
|
* @return 商业险险种信息列表
|
|
* @return 商业险险种信息列表
|
|
|
*/
|
|
*/
|
|
|
public List<Map<String, Object>> buildPrpCitemKindsTemp(List<Map<String, Object>> kindList,
|
|
public List<Map<String, Object>> buildPrpCitemKindsTemp(List<Map<String, Object>> kindList,
|
|
|
- String actualValue, String priceCoefficient, Integer seatCount) {
|
|
|
|
|
|
|
+ String actualValue, String priceCoefficient, Integer seatCount,
|
|
|
|
|
+ String isEnergyCar) {
|
|
|
List<Map<String, Object>> kindsTemp = new ArrayList<>();
|
|
List<Map<String, Object>> kindsTemp = new ArrayList<>();
|
|
|
|
|
|
|
|
if (kindList == null || kindList.isEmpty()) {
|
|
if (kindList == null || kindList.isEmpty()) {
|
|
@@ -2436,6 +2443,14 @@ public class RenBaoNewCrawlerRequestBuilder {
|
|
|
// 深拷贝映射模板
|
|
// 深拷贝映射模板
|
|
|
Map<String, Object> kind = new HashMap<>(zgRbMap.get(zgKindCode));
|
|
Map<String, Object> kind = new HashMap<>(zgRbMap.get(zgKindCode));
|
|
|
|
|
|
|
|
|
|
+ // 根据车辆类型动态选择险种名称
|
|
|
|
|
+ if ("1".equals(isEnergyCar) && kind.containsKey("energKindName")) {
|
|
|
|
|
+ String energKindName = (String) kind.get("energKindName");
|
|
|
|
|
+ if (energKindName != null && !energKindName.isEmpty()) {
|
|
|
|
|
+ kind.put("kindName", energKindName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 通用处理
|
|
// 通用处理
|
|
|
kind.put("chooseFlag", "on");
|
|
kind.put("chooseFlag", "on");
|
|
|
kind.put("newInsertFlag", "");
|
|
kind.put("newInsertFlag", "");
|