【fix】 修复引用对象不存在时的ID为空异常问题

This commit is contained in:
Kris 2025-07-18 14:11:05 +08:00
parent 0023249086
commit 1e346e19ac
4 changed files with 12 additions and 8 deletions

View File

@ -5,6 +5,7 @@ import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* @author Red * @author Red
@ -19,11 +20,14 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
// 起始版本 3.3.0(推荐使用) // 起始版本 3.3.0(推荐使用)
this.strictInsertFill(metaObject, "createdDate", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "createdDate", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "lastModifiedDate", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "lastModifiedDate", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "createdDate", Date.class,new Date());
this.strictInsertFill(metaObject, "lastModifiedDate", Date.class, new Date());
} }
@Override @Override
public void updateFill(MetaObject metaObject) { public void updateFill(MetaObject metaObject) {
// 起始版本 3.3.0(推荐使用) // 起始版本 3.3.0(推荐使用)
this.strictInsertFill(metaObject, "lastModifiedDate", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "lastModifiedDate", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "lastModifiedDate", Date.class, new Date());
} }
} }

View File

@ -357,7 +357,7 @@ public class DataImportBatchServiceImpl implements DataImportBatchService {
continue; continue;
} }
if (dataField.getIsCreateable() !=null && dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) { if (dataField.getIsCreateable() !=null && dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) {
if ("reference".equals(dataField.getSfType())){ if ("reference".equals(dataField.getSfType()) && data.get(j - 1).get(dataField.getField()) != null){
//引用类型 //引用类型
String reference = dataField.getReferenceTo(); String reference = dataField.getReferenceTo();
//引用类型字段 //引用类型字段
@ -744,7 +744,7 @@ public class DataImportBatchServiceImpl implements DataImportBatchService {
continue; continue;
} else if ( "WhoId".equals(field) ||"WhatId".equals(field)){ } else if ( "WhoId".equals(field) ||"WhatId".equals(field)){
continue; continue;
} else if ("reference".equals(dataField.getSfType())) { } else if ("reference".equals(dataField.getSfType()) && map.get(dataField.getField()) != null ) {
if (!"null".equals(value) && StringUtils.isNotEmpty(value)) { if (!"null".equals(value) && StringUtils.isNotEmpty(value)) {
//引用类型字段 //引用类型字段
@ -1118,7 +1118,7 @@ public class DataImportBatchServiceImpl implements DataImportBatchService {
continue; continue;
} }
if (dataField.getIsCreateable() !=null && dataField.getIsCreateable()) { if (dataField.getIsCreateable() !=null && dataField.getIsCreateable()) {
if ("reference".equals(dataField.getSfType())){ if ("reference".equals(dataField.getSfType()) && data.get(j - 1).get(dataField.getField()) != null){
//引用类型 //引用类型
String reference_to = dataField.getReferenceTo(); String reference_to = dataField.getReferenceTo();
//引用类型字段 //引用类型字段
@ -1146,7 +1146,7 @@ public class DataImportBatchServiceImpl implements DataImportBatchService {
} }
}else { }else {
if (data.get(j - 1).get(dataField.getField()) != null && StringUtils.isNotBlank(dataField.getSfType())) { if (data.get(j - 1).get(dataField.getField()) != null && StringUtils.isNotBlank(dataField.getSfType())) {
account.put(dataField.getField(), DataUtil.localDataToSfData(dataField.getSfType(), data.get(j - 1).get(dataField.getField()).toString())); account.put(dataField.getField(), DataUtil.localBulkDataToSfData(dataField.getSfType(), data.get(j - 1).get(dataField.getField()).toString()));
}else { }else {
account.put(dataField.getField(), data.get(j - 1).get(dataField.getField()) ); account.put(dataField.getField(), data.get(j - 1).get(dataField.getField()) );
} }

View File

@ -773,7 +773,7 @@ public class DataImportNewServiceImpl implements DataImportNewService {
account.setId(String.valueOf(map.get("new_id"))); account.setId(String.valueOf(map.get("new_id")));
} else if (!DataUtil.isUpdate(field) || (dataField.getIsCreateable() != null && !dataField.getIsCreateable())) { } else if (!DataUtil.isUpdate(field) || (dataField.getIsCreateable() != null && !dataField.getIsCreateable())) {
continue; continue;
} else if ("reference".equals(dataField.getSfType())) { } else if ("reference".equals(dataField.getSfType()) && map.get(dataField.getField()) != null) {
if (!"null".equals(value) && StringUtils.isNotEmpty(value)) { if (!"null".equals(value) && StringUtils.isNotEmpty(value)) {
//引用类型字段 //引用类型字段

View File

@ -266,7 +266,6 @@ public class DataImportServiceImpl implements DataImportService {
Date endDate = param.getEndCreateDate(); Date endDate = param.getEndCreateDate();
String beginDateStr = DateUtil.format(beginDate, "yyyy-MM-dd HH:mm:ss"); String beginDateStr = DateUtil.format(beginDate, "yyyy-MM-dd HH:mm:ss");
String endDateStr = DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss"); String endDateStr = DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss");
//表内数据总量 //表内数据总量
Integer count = customMapper.countBySQL(api, "where new_id is null and CreatedDate >= '" + beginDateStr + "' and CreatedDate < '" + endDateStr + "'"); Integer count = customMapper.countBySQL(api, "where new_id is null and CreatedDate >= '" + beginDateStr + "' and CreatedDate < '" + endDateStr + "'");
log.error("总Insert数据 count:{}-开始时间:{}-结束时间:{}-api:{}", count, beginDateStr, endDateStr, api); log.error("总Insert数据 count:{}-开始时间:{}-结束时间:{}-api:{}", count, beginDateStr, endDateStr, api);
@ -331,7 +330,8 @@ public class DataImportServiceImpl implements DataImportService {
continue; continue;
} }
if (dataField.getIsCreateable() != null && dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) { if (dataField.getIsCreateable() != null && dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) {
if ("reference".equals(dataField.getSfType())){
if ("reference".equals(dataField.getSfType()) && data.get(j - 1).get(dataField.getField()) != null){
//引用类型 //引用类型
String reference = dataField.getReferenceTo(); String reference = dataField.getReferenceTo();
//引用类型字段 //引用类型字段
@ -344,7 +344,7 @@ public class DataImportServiceImpl implements DataImportService {
if (reference == null){ if (reference == null){
continue; continue;
} }
log.info("----------" + dataField.getField() + "的引用类型 ------------" + reference); // log.info("----------" + dataField.getField() + "的引用类型 ------------" + reference);
List<Map<String, Object>> referenceMap = customMapper.list("new_id", reference, "new_id is not null limit 1"); List<Map<String, Object>> referenceMap = customMapper.list("new_id", reference, "new_id is not null limit 1");
if (referenceMap.isEmpty()){ if (referenceMap.isEmpty()){