【feat】 富文本图片替换_v1
This commit is contained in:
parent
2457665b14
commit
3402971c49
@ -1017,9 +1017,9 @@ public class CommonServiceImpl implements CommonService {
|
||||
log.info("检测到富文本字段: {},API: {}", field.getName(), apiName);
|
||||
dataField.setIsHtmlFormatted(true);
|
||||
Map<String, Object> htmlMap = Maps.newHashMap();
|
||||
htmlMap.put("type", "text");
|
||||
htmlMap.put("comment", field.getLabel()+ "备份字段");
|
||||
htmlMap.put("name", field.getName()+ "_back");
|
||||
htmlMap.put("type", "varchar(255)");
|
||||
htmlMap.put("comment", field.getName()+ "_back");
|
||||
htmlMap.put("name", "new_id");
|
||||
list.add(htmlMap);
|
||||
}
|
||||
if (field.getReferenceTo().length > 1){
|
||||
@ -1343,7 +1343,6 @@ public class CommonServiceImpl implements CommonService {
|
||||
String blobField = null;
|
||||
List<DataPicklist> dataPicklists = Lists.newArrayList();
|
||||
for (Field field : dsr.getFields()) {
|
||||
|
||||
// 过滤字段
|
||||
if (Const.TABLE_FILTERS.contains(field.getName())) {
|
||||
continue;
|
||||
@ -1363,47 +1362,48 @@ public class CommonServiceImpl implements CommonService {
|
||||
list.add(map);
|
||||
DataField dataField = new DataField();
|
||||
dataField.setApi(apiName);
|
||||
dataField.setSfType(sfType);
|
||||
dataField.setField(field.getName());
|
||||
dataField.setName(field.getLabel());
|
||||
dataField.setReferenceTo(field.getReferenceTo() != null && field.getReferenceTo().length > 0 ? field.getReferenceTo()[0] : null);
|
||||
dataField.setLeftIndex(field.getLeftSideReferenceTo() != null && field.getLeftSideReferenceTo().length > 0 ? field.getLeftSideReferenceTo()[0] : null);
|
||||
dataField.setRightIndex(field.getRightSideReferenceTo() != null && field.getRightSideReferenceTo().length > 0 ? field.getRightSideReferenceTo()[0] : null);
|
||||
dataField.setOnList(field.isListVisible());
|
||||
dataField.setSfType(sfType);
|
||||
dataField.setCreateable(field.isCreateable());
|
||||
dataField.setUpdateable(field.isUpdateable());
|
||||
dataField.setHtmlFormatted(field.isHtmlFormatted());
|
||||
dataField.setNillable(field.isNillable());
|
||||
dataField.setDefaultedOnCreate(field.isDefaultedOnCreate());
|
||||
dataField.setIsCreateable(field.getCreateable());
|
||||
dataField.setIsUpdateable(field.getUpdateable());
|
||||
dataField.setIsNillable(field.getNillable());
|
||||
dataField.setIsDefaultedOnCreate(field.getDefaultedOnCreate());
|
||||
String join = null;
|
||||
// 会有非常多映射关系的字段在 这里置空不管
|
||||
if (field.getReferenceTo().length <= 3) {
|
||||
join = StringUtils.join(field.getReferenceTo(), ",");
|
||||
} else {
|
||||
log.info("referenceTo too long set null, api:{}, field:{}, reference to:{}", apiName, field.getName(), StringUtils.join(field.getReferenceTo(), ","));
|
||||
}
|
||||
if (field.getReferenceTo().length > 1){
|
||||
if (field.getName().contains("Id") && !"OwnerId".equals(field.getName()) && !"UserOrGroupId".equals(field.getName())){
|
||||
LinkConfig linkConfig = new LinkConfig();
|
||||
linkConfig.setApi(apiName);
|
||||
linkConfig.setLabel(label);
|
||||
linkConfig.setField(field.getName());
|
||||
linkConfig.setLinkField(StringUtils.replace(field.getName(), "Id", "_Type"));
|
||||
linkConfigService.save(linkConfig);
|
||||
}
|
||||
}
|
||||
// picklist保存到picklist表
|
||||
if ("picklist".equalsIgnoreCase(sfType)) {
|
||||
join = "data_picklist";
|
||||
PicklistEntry[] picklistValues = field.getPicklistValues();
|
||||
if (ArrayUtils.isNotEmpty(picklistValues)) {
|
||||
for (PicklistEntry picklistValue : picklistValues) {
|
||||
DataPicklist dataPicklist = new DataPicklist();
|
||||
dataPicklist.setApi(apiName);
|
||||
dataPicklist.setField(field.getName());
|
||||
dataPicklist.setLabel(picklistValue.getLabel());
|
||||
dataPicklist.setValue(picklistValue.getValue());
|
||||
dataPicklists.add(dataPicklist);
|
||||
}
|
||||
}
|
||||
}
|
||||
dataField.setReferenceTo(join);
|
||||
fieldList.add(dataField);
|
||||
fields.add(field.getName());
|
||||
|
||||
// 如果是富文本字段,添加备份字段
|
||||
if (field.isHtmlFormatted()) {
|
||||
String backupFieldName = field.getName() + "_back";
|
||||
Map<String, Object> backupMap = Maps.newHashMap();
|
||||
backupMap.put("type", DataUtil.fieldTypeToMysql(field));
|
||||
backupMap.put("comment", field.getLabel() + " 备份");
|
||||
backupMap.put("name", backupFieldName);
|
||||
list.add(backupMap);
|
||||
|
||||
DataField backupDataField = new DataField();
|
||||
backupDataField.setApi(apiName);
|
||||
backupDataField.setField(backupFieldName);
|
||||
backupDataField.setName(field.getLabel() + " 备份");
|
||||
backupDataField.setReferenceTo(field.getReferenceTo() != null && field.getReferenceTo().length > 0 ? field.getReferenceTo()[0] : null);
|
||||
backupDataField.setLeftIndex(field.getLeftSideReferenceTo() != null && field.getLeftSideReferenceTo().length > 0 ? field.getLeftSideReferenceTo()[0] : null);
|
||||
backupDataField.setRightIndex(field.getRightSideReferenceTo() != null && field.getRightSideReferenceTo().length > 0 ? field.getRightSideReferenceTo()[0] : null);
|
||||
backupDataField.setOnList(field.isListVisible());
|
||||
backupDataField.setSfType(sfType);
|
||||
backupDataField.setCreateable(field.isCreateable());
|
||||
backupDataField.setUpdateable(field.isUpdateable());
|
||||
backupDataField.setHtmlFormatted(field.isHtmlFormatted());
|
||||
backupDataField.setNillable(field.isNillable());
|
||||
backupDataField.setDefaultedOnCreate(field.isDefaultedOnCreate());
|
||||
fieldList.add(backupDataField);
|
||||
fields.add(backupFieldName);
|
||||
}
|
||||
}
|
||||
// 存在ownerId字段
|
||||
String extraField = "";
|
||||
|
||||
@ -2663,6 +2663,8 @@ public class DataImportNewServiceImpl implements DataImportNewService {
|
||||
qw.eq("data_work", true);
|
||||
List<DataObject> objectList = dataObjectService.list(qw);
|
||||
|
||||
Map<String, Object> infoFlag = customMapper.list("code,value","system_config","code ='"+SystemConfigCode.INFO_FLAG+"'").get(0);
|
||||
|
||||
for (DataObject dataObject : objectList) {
|
||||
String api = dataObject.getName();
|
||||
QueryWrapper<DataField> qw1 = new QueryWrapper<>();
|
||||
@ -2692,11 +2694,15 @@ public class DataImportNewServiceImpl implements DataImportNewService {
|
||||
int totalPages = (count + pageSize - 1) / pageSize;
|
||||
|
||||
for (int page = 0; page < totalPages; page++) {
|
||||
|
||||
List<Map<String, Object>> records = customMapper.list("Id, new_id, " + field, api,
|
||||
sqlCondition + " order by Id limit " + (page * pageSize) + "," + pageSize);
|
||||
|
||||
log.info("处理对象 {} 字段 {} 第 {}/{} 页,本页记录数: {}", api, field, (page + 1), totalPages, records.size());
|
||||
|
||||
SObject[] accounts = new SObject[records.size()];
|
||||
int index = 0;
|
||||
|
||||
for (Map<String, Object> record : records) {
|
||||
try {
|
||||
String sourceId = (String) record.get("Id");
|
||||
@ -2712,27 +2718,59 @@ public class DataImportNewServiceImpl implements DataImportNewService {
|
||||
|
||||
// 如果内容有变化,则更新目标组织中的记录
|
||||
if (!richTextContent.equals(updatedContent)) {
|
||||
|
||||
// 更新目标组织中的记录
|
||||
SObject sObject = new SObject();
|
||||
sObject.setType(api);
|
||||
sObject.setId(targetId);
|
||||
sObject.setField(field, updatedContent);
|
||||
|
||||
// 同时更新备份字段
|
||||
sObject.setField(field + "_back", richTextContent);
|
||||
accounts[index] = sObject;
|
||||
index ++;
|
||||
|
||||
List<Map<String, Object>> maps = new ArrayList<>();
|
||||
Map<String, Object> linkMap = new HashMap<>();
|
||||
linkMap.put("key", field + "_back");
|
||||
linkMap.put("value", richTextContent);
|
||||
maps.add(linkMap);
|
||||
customMapper.updateByNewId(maps,api, targetId);
|
||||
|
||||
SaveResult[] results = targetConnection.update(new SObject[]{sObject});
|
||||
if (results != null && results.length > 0 && results[0].getSuccess()) {
|
||||
log.info("成功更新记录 {} 的富文本内容", targetId);
|
||||
} else {
|
||||
log.error("更新记录 {} 的富文本内容失败: {}", targetId,
|
||||
results != null && results.length > 0 ? JSON.toJSONString(results[0].getErrors()) : "未知错误");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("处理记录 {} 的富文本内容时发生错误: {}", record.get("Id"), e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
if (infoFlag != null && "1".equals(infoFlag.get("value"))){
|
||||
printlnAccountsDetails(accounts,fields);
|
||||
}
|
||||
SaveResult[] saveResults = targetConnection.update(accounts);
|
||||
for (SaveResult saveResult : saveResults) {
|
||||
if (!saveResult.getSuccess()) {
|
||||
List<Map<String, Object>> maps = new ArrayList<>();
|
||||
Map<String, Object> linkMap = new HashMap<>();
|
||||
linkMap.put("key", "is_update");
|
||||
linkMap.put("value", 2);
|
||||
maps.add(linkMap);
|
||||
Map<String, Object> linkMap1 = new HashMap<>();
|
||||
linkMap1.put("key", "error_message");
|
||||
linkMap1.put("value", JSON.toJSONString(saveResult.getErrors()));
|
||||
maps.add(linkMap1);
|
||||
customMapper.updateByNewId(maps,api, saveResult.getId());
|
||||
String format = String.format("数据更新 error, api name: %s, \ncause:\n%s", api, JSON.toJSONString(saveResult));
|
||||
log.info(format);
|
||||
}else {
|
||||
List<Map<String, Object>> maps = new ArrayList<>();
|
||||
Map<String, Object> linkMap = new HashMap<>();
|
||||
linkMap.put("key", "is_update");
|
||||
linkMap.put("value", 1);
|
||||
maps.add(linkMap);
|
||||
Map<String, Object> linkMap1 = new HashMap<>();
|
||||
linkMap1.put("key", "error_message");
|
||||
linkMap1.put("value", null);
|
||||
maps.add(linkMap1);
|
||||
customMapper.updateByNewId(maps,api, saveResult.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user