From 03fa708ed73757058ff8f87cc3a5bbbf43f44628 Mon Sep 17 00:00:00 2001
From: Kris <2893855659@qq.com>
Date: Thu, 25 Sep 2025 10:19:57 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90feat=E3=80=91=20bigObject=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E6=8E=A8=E9=80=81=E3=80=81=E5=88=A0=E9=99=A4=E7=9B=AE?=
=?UTF-8?q?=E6=A0=87org=E6=95=B0=E6=8D=AE=E3=80=81=E5=8F=8D=E5=86=99newId?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.run/data-dump(准时达) .run.xml | 14 +
.run/data-dump(格凌) .run.xml | 14 +
...).run.xml => data-dump(雨花石测试).run.xml} | 2 +-
DockerfileBase | 2 +-
.../datadump/controller/JobController.java | 15 +-
.../com/celnet/datadump/job/DataDumpJob.java | 21 +
.../celnet/datadump/job/DataDumpNewJob.java | 89 +++-
.../celnet/datadump/mapper/CustomMapper.java | 11 +-
.../datadump/service/CommonBatchService.java | 5 +-
.../datadump/service/CommonService.java | 2 +
.../service/DataImportNewService.java | 9 +-
.../service/impl/CommonBatchServiceImpl.java | 278 +++++++++++
.../service/impl/CommonServiceImpl.java | 71 ++-
.../impl/DataImportBatchServiceImpl.java | 25 +-
.../impl/DataImportNewServiceImpl.java | 449 +++++++++++-------
.../service/impl/DataImportServiceImpl.java | 8 +-
.../service/impl/DataVerifyServiceImpl.java | 11 +-
.../service/impl/FileServiceImpl.java | 66 ++-
.../service/impl/OrgConfigServiceImpl.java | 16 +-
src/main/resources/mapper/CustomMapper.xml | 10 +
.../resources/mapper/SalesforceMapper.xml | 31 ++
21 files changed, 941 insertions(+), 208 deletions(-)
create mode 100644 .run/data-dump(准时达) .run.xml
create mode 100644 .run/data-dump(格凌) .run.xml
rename .run/{data-dump(城博测试).run.xml => data-dump(雨花石测试).run.xml} (80%)
diff --git a/.run/data-dump(准时达) .run.xml b/.run/data-dump(准时达) .run.xml
new file mode 100644
index 0000000..6c4119d
--- /dev/null
+++ b/.run/data-dump(准时达) .run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/data-dump(格凌) .run.xml b/.run/data-dump(格凌) .run.xml
new file mode 100644
index 0000000..51956bc
--- /dev/null
+++ b/.run/data-dump(格凌) .run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/data-dump(城博测试).run.xml b/.run/data-dump(雨花石测试).run.xml
similarity index 80%
rename from .run/data-dump(城博测试).run.xml
rename to .run/data-dump(雨花石测试).run.xml
index 60cda99..f1e87cd 100644
--- a/.run/data-dump(城博测试).run.xml
+++ b/.run/data-dump(雨花石测试).run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/DockerfileBase b/DockerfileBase
index e274611..b093d39 100644
--- a/DockerfileBase
+++ b/DockerfileBase
@@ -1,5 +1,5 @@
FROM --platform=linux/amd64 centos:7
-MAINTAINER Red
+LABEL maintainer="Kris"
#nginx部署
ADD nginx-1.22.1.tar.gz /usr/local/
diff --git a/src/main/java/com/celnet/datadump/controller/JobController.java b/src/main/java/com/celnet/datadump/controller/JobController.java
index 75ae108..c3da061 100644
--- a/src/main/java/com/celnet/datadump/controller/JobController.java
+++ b/src/main/java/com/celnet/datadump/controller/JobController.java
@@ -363,17 +363,30 @@ public class JobController {
case "Contact":
dataImportNewService.getPersonContact(param);
case "User":
+ dataImportNewService.getNewIdByField(api,"Username");
case "BrandTemplate":
case "EmailTemplate":
case "Folder":
+ dataImportNewService.getNewIdByField(api,"DeveloperName");
case "Group":
+ dataImportNewService.getNewIdByField(api,"DeveloperName,Type");
case "RecordType":
+ dataImportNewService.getNewIdByField(api,"DeveloperName,SObjectType");
case "AccountContactRelation":
+ dataImportNewService.getNewIdByField(api,"AccountId,ContactId,IsPrimary");
case "TaskRelation":
+ dataImportNewService.getNewIdByField(api,"TaskId,RelationId,RelationType");
case "EventRelation":
+ dataImportNewService.getNewIdByField(api,"EventId,RelationId,RelationType");
case "CollaborationGroupMember":
+ dataImportNewService.getNewIdByField(api,"CollaborationGroupId,MemberId,CollaborationRole");
case "FeedAttachment":
- dataImportNewService.getNewIdByField(api,null);
+ dataImportNewService.getNewIdByField(api,"FeedItemId,AttachmentId");
+ case "Task":
+ dataImportNewService.getTaskNewId(param);
+ case "PermissionSet":
+ dataImportNewService.getNewIdByField(api,"Name");
+
default:
log.info("当前对象:{},不存在反写NewId逻辑!!!" , param.getApi());
}
diff --git a/src/main/java/com/celnet/datadump/job/DataDumpJob.java b/src/main/java/com/celnet/datadump/job/DataDumpJob.java
index 2fd6e33..0ac1695 100644
--- a/src/main/java/com/celnet/datadump/job/DataDumpJob.java
+++ b/src/main/java/com/celnet/datadump/job/DataDumpJob.java
@@ -48,6 +48,27 @@ public class DataDumpJob {
return commonService.createApi(param);
}
+ /**
+ * 创建bigobject api
+ * @param paramStr
+ * @return
+ * @throws Exception
+ */
+ @XxlJob("createBigObjectApiJob")
+ public ReturnT createBigObjectApiJob(String paramStr) throws Exception {
+ log.info("createBigObjectApiJob execute start ..................");
+ SalesforceParam param = new SalesforceParam();
+ try {
+ if (StringUtils.isNotBlank(paramStr)) {
+ param = JSON.parseObject(paramStr, SalesforceParam.class);
+ }
+ } catch (Throwable throwable) {
+ return new ReturnT<>(500, "参数解析失败!");
+ }
+
+ return commonService.createBigObjectApi(param);
+ }
+
/**
* 存量任务
*
diff --git a/src/main/java/com/celnet/datadump/job/DataDumpNewJob.java b/src/main/java/com/celnet/datadump/job/DataDumpNewJob.java
index 7d7d5ef..e710306 100644
--- a/src/main/java/com/celnet/datadump/job/DataDumpNewJob.java
+++ b/src/main/java/com/celnet/datadump/job/DataDumpNewJob.java
@@ -114,6 +114,54 @@ public class DataDumpNewJob {
return commonBatchService.dumpBatch(param);
}
+ /**
+ * 存量任务(BigObject)
+ *
+ * @param paramStr 参数json
+ * @return result
+ */
+ @XxlJob("dataDumpBigObjectJob")
+ public ReturnT dataDumpBigObjectJob(String paramStr) throws Exception {
+ log.info("dataDumpBigObjectJob execute start ..................");
+ SalesforceParam param = new SalesforceParam();
+ try {
+ if (StringUtils.isNotBlank(paramStr)) {
+ param = JSON.parseObject(paramStr, SalesforceParam.class);
+ }
+ } catch (Throwable throwable) {
+ return new ReturnT<>(500, "参数解析失败!");
+ }
+ // 参数转换
+ param.setBeginCreateDate(param.getBeginDate());
+ param.setEndCreateDate(param.getEndDate());
+
+ return commonBatchService.dumpBigObject(param);
+ }
+
+ /**
+ * 导入BigObject数据到目标ORG
+ *
+ * @param paramStr 参数json
+ * @return result
+ */
+ @XxlJob("dataImportBigObjectJob")
+ public ReturnT dataImportBigObjectJob(String paramStr) throws Exception {
+ log.info("dataImportBigObjectJob execute start ..................");
+ SalesforceParam param = new SalesforceParam();
+ try {
+ if (StringUtils.isNotBlank(paramStr)) {
+ param = JSON.parseObject(paramStr, SalesforceParam.class);
+ }
+ } catch (Throwable throwable) {
+ return new ReturnT<>(500, "参数解析失败!");
+ }
+ // 参数转换
+ param.setBeginCreateDate(param.getBeginDate());
+ param.setEndCreateDate(param.getEndDate());
+
+ return commonBatchService.importBigObject(param);
+ }
+
/**
* 返写NewId
* @param paramStr 参数json
@@ -143,30 +191,46 @@ public class DataDumpNewJob {
switch (api){
case "Contact":
dataImportNewService.getPersonContact(param);
+ break;
case "User":
dataImportNewService.getNewIdByField(api,"Username");
+ break;
case "BrandTemplate":
case "EmailTemplate":
case "Folder":
dataImportNewService.getNewIdByField(api,"DeveloperName");
+ break;
case "Group":
dataImportNewService.getNewIdByField(api,"DeveloperName,Type");
+ break;
case "RecordType":
dataImportNewService.getNewIdByField(api,"DeveloperName,SObjectType");
+ break;
case "AccountContactRelation":
dataImportNewService.getNewIdByField(api,"AccountId,ContactId,IsPrimary");
+ break;
case "TaskRelation":
dataImportNewService.getNewIdByField(api,"TaskId,RelationId,RelationType");
+ break;
case "EventRelation":
dataImportNewService.getNewIdByField(api,"EventId,RelationId,RelationType");
+ break;
case "CollaborationGroupMember":
dataImportNewService.getNewIdByField(api,"CollaborationGroupId,MemberId,CollaborationRole");
+ break;
case "FeedAttachment":
dataImportNewService.getNewIdByField(api,"FeedItemId,AttachmentId");
+ break;
case "Task":
dataImportNewService.getTaskNewId(param);
+ break;
+ case "PermissionSet":
+ case "Organization":
+ dataImportNewService.getNewIdByField(api,"Name");
+ break;
default:
- log.info("当前对象:{},不存在反写NewId逻辑!!!" , param.getApi());
+ log.info("当前对象:{},不存在反写NewId逻辑!!!" , api);
+ break;
}
}
return ReturnT.SUCCESS;
@@ -404,6 +468,27 @@ public class DataDumpNewJob {
return dataImportNewService.checkDeletedData(param);
}
+ /**
+ * 删除目标ORG中的数据
+ * @param paramStr 参数json
+ * @return result
+ */
+ @XxlJob("deleteTargetOrgDataJob")
+ public ReturnT deleteTargetOrgDataJob(String paramStr) throws Exception {
+ log.info("deleteTargetOrgDataJob execute start ..................");
+ SalesforceParam param = new SalesforceParam();
+ try {
+ if (StringUtils.isNotBlank(paramStr)) {
+ param = JSON.parseObject(paramStr, SalesforceParam.class);
+ }
+ } catch (Throwable throwable) {
+ log.error("参数解析失败!", throwable);
+ return new ReturnT<>(500, "参数解析失败!");
+ }
+
+ // 调用新实现的删除方法
+ return dataImportNewService.deleteTargetOrgData(param);
+ }
/**
* ContentFolderMember 拉取
@@ -424,4 +509,6 @@ public class DataDumpNewJob {
return dataImportNewService.dumpContentFolderMemberJob(param);
}
+
+
}
diff --git a/src/main/java/com/celnet/datadump/mapper/CustomMapper.java b/src/main/java/com/celnet/datadump/mapper/CustomMapper.java
index da35166..045fb7b 100644
--- a/src/main/java/com/celnet/datadump/mapper/CustomMapper.java
+++ b/src/main/java/com/celnet/datadump/mapper/CustomMapper.java
@@ -4,6 +4,7 @@ import com.celnet.datadump.param.SalesforceParam;
import cn.hutool.json.JSONObject;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.MapKey;
import java.util.Collection;
import java.util.List;
@@ -134,6 +135,14 @@ public interface CustomMapper {
*/
public void updateByNewId(@Param("maps") List