【feat】不能写入Createdate,createdbyId字段的标准对象Insert时不写入

This commit is contained in:
Kris 2025-07-07 11:18:10 +08:00
parent 27eb434539
commit 2253747562
2 changed files with 37 additions and 28 deletions

View File

@ -39,6 +39,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.text.ParseException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
@ -234,6 +235,21 @@ public class DataImportBatchServiceImpl implements DataImportBatchService {
|| "Id".equals(dataField.getField())){ || "Id".equals(dataField.getField())){
continue; continue;
} }
if ("CreatedDate".equals(dataField.getField()) && dataField.getIsCreateable()){
// 转换为UTC时间并格式化
LocalDateTime localDateTime = LocalDateTime.parse(String.valueOf(data.get(j - 1).get("CreatedDate")), inputFormatter);
ZonedDateTime utcDateTime = localDateTime.atZone(ZoneId.of("UTC")).minusHours(8) ;
String convertedTime = utcDateTime.format(outputFormatter);
account.put("CreatedDate", convertedTime);
continue;
}
if ("CreatedById".equals(dataField.getField()) && dataField.getIsCreateable()){
Map<String, Object> CreatedByIdMap = customMapper.getById("new_id", "User", data.get(j-1).get("CreatedById").toString());
if(CreatedByIdMap.get("new_id") != null && StringUtils.isNotEmpty(CreatedByIdMap.get("new_id").toString())){
account.put("CreatedById", CreatedByIdMap.get("new_id"));
}
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())){
String reference = dataField.getReferenceTo(); String reference = dataField.getReferenceTo();
@ -275,19 +291,6 @@ public class DataImportBatchServiceImpl implements DataImportBatchService {
account.put(dataField.getField(), DataUtil.fieldTypeToSf(dataField)); account.put(dataField.getField(), DataUtil.fieldTypeToSf(dataField));
} }
// 转换为UTC时间并格式化
LocalDateTime localDateTime = LocalDateTime.parse(String.valueOf(data.get(j - 1).get("CreatedDate")), inputFormatter);
ZonedDateTime utcDateTime = localDateTime.atZone(ZoneId.of("UTC")).minusHours(8) ;
String convertedTime = utcDateTime.format(outputFormatter);
account.put("CreatedDate", convertedTime);
Map<String, Object> CreatedByIdMap = customMapper.getById("new_id", "User", data.get(j-1).get("CreatedById").toString());
if(CreatedByIdMap.get("new_id") != null && StringUtils.isNotEmpty(CreatedByIdMap.get("new_id").toString())){
account.put("CreatedById", CreatedByIdMap.get("new_id"));
}
} }
ids[j-1] = data.get(j-1).get("Id").toString(); ids[j-1] = data.get(j-1).get("Id").toString();

View File

@ -296,6 +296,27 @@ public class DataImportServiceImpl implements DataImportService {
|| "Id".equals(dataField.getField())){ || "Id".equals(dataField.getField())){
continue; continue;
} }
if ("CreatedDate".equals(dataField.getField()) && dataField.getIsCreateable()){
//object类型转Date类型
Date date;
try {
date = sdf.parse(String.valueOf(data.get(j - 1).get("CreatedDate")));
}catch (ParseException e){
//解决当时间秒为0时转换秒精度丢失问题
date = sdf.parse(data.get(j - 1).get("CreatedDate")+":00");
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
account.setField("CreatedDate", calendar);
continue;
}
if ("CreatedById".equals(dataField.getField()) && dataField.getIsCreateable()){
Map<String, Object> CreatedByIdMap = customMapper.getById("new_id", "User", data.get(j-1).get("CreatedById").toString());
if(CreatedByIdMap.get("new_id") != null && StringUtils.isNotEmpty(CreatedByIdMap.get("new_id").toString())){
account.setField("CreatedById", CreatedByIdMap.get("new_id"));
}
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())){
log.info("----------" + dataField.getField() + " ------------" + dataField.getSfType()); log.info("----------" + dataField.getField() + " ------------" + dataField.getSfType());
@ -334,21 +355,6 @@ public class DataImportServiceImpl implements DataImportService {
account.setField(dataField.getField(), DataUtil.fieldTypeToSf(dataField)); account.setField(dataField.getField(), DataUtil.fieldTypeToSf(dataField));
} }
} }
//object类型转Date类型
Date date;
try {
date = sdf.parse(String.valueOf(data.get(j - 1).get("CreatedDate")));
}catch (ParseException e){
//解决当时间秒为0时转换秒精度丢失问题
date = sdf.parse(data.get(j - 1).get("CreatedDate")+":00");
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
account.setField("CreatedDate", calendar);
Map<String, Object> CreatedByIdMap = customMapper.getById("new_id", "User", data.get(j-1).get("CreatedById").toString());
if(CreatedByIdMap.get("new_id") != null && StringUtils.isNotEmpty(CreatedByIdMap.get("new_id").toString())){
account.setField("CreatedById", CreatedByIdMap.get("new_id"));
}
if (api.equals("vlink__Wechat_User__c")){ if (api.equals("vlink__Wechat_User__c")){
List<Map<String, Object>> maps = customMapper.list("new_id", "vlink__Wechat_Account__c", "new_id is not null and id = '" + data.get(j - 1).get("vlink__Wechat_Account__c") + "' limit 1"); List<Map<String, Object>> maps = customMapper.list("new_id", "vlink__Wechat_Account__c", "new_id is not null and id = '" + data.get(j - 1).get("vlink__Wechat_Account__c") + "' limit 1");