|
@@ -1,27 +1,36 @@
|
|
|
-package com.persagy.proxy.migration.handler;
|
|
|
+package com.persagy.proxy.migration.service.Impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.dmp.basic.utils.JsonNodeUtils;
|
|
|
import com.persagy.dmp.common.constant.ResponseCode;
|
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
|
+import com.persagy.dmp.common.model.response.CommonResult;
|
|
|
+import com.persagy.dmp.define.client.DigitalGraphDefineFacade;
|
|
|
+import com.persagy.dmp.define.client.DigitalRelationDefineFacade;
|
|
|
+import com.persagy.dmp.define.entity.GraphDefine;
|
|
|
+import com.persagy.dmp.define.entity.RelationDefine;
|
|
|
import com.persagy.dmp.digital.client.DigitalRelationFacade;
|
|
|
+import com.persagy.dmp.digital.entity.ObjectDigital;
|
|
|
import com.persagy.dmp.digital.entity.ObjectRelation;
|
|
|
import com.persagy.dmp.rwd.migrate.entity.SyncData;
|
|
|
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
|
|
|
import com.persagy.proxy.adm.request.AdmResponse;
|
|
|
+import com.persagy.proxy.common.entity.DmpResult;
|
|
|
import com.persagy.proxy.common.entity.InstanceUrlParam;
|
|
|
-import com.persagy.proxy.migration.constant.MiGrationRelCode;
|
|
|
-import com.persagy.proxy.migration.constant.MigrationConstant;
|
|
|
-import com.persagy.proxy.migration.constant.MigrationTable;
|
|
|
-import com.persagy.proxy.migration.constant.MigrationType;
|
|
|
+import com.persagy.proxy.migration.constant.*;
|
|
|
import com.persagy.proxy.migration.model.DataMigrationExcel;
|
|
|
import com.persagy.proxy.migration.model.DataMigrationResponse;
|
|
|
import com.persagy.proxy.migration.model.MigrationInfo;
|
|
|
+import com.persagy.proxy.migration.service.IDataMigration;
|
|
|
+import com.persagy.proxy.migration.service.IDataMigrationProcess;
|
|
|
import com.persagy.proxy.migration.service.Impl.MigrationAbstractServiceImpl;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.*;
|
|
@@ -35,24 +44,9 @@ import java.util.stream.Collectors;
|
|
|
* @date 2021/12/8 19:51
|
|
|
*/
|
|
|
@Slf4j
|
|
|
+@Service
|
|
|
public class ObjectRelationMigration extends MigrationAbstractServiceImpl<ObjectRelation> implements IDataMigration, IDataMigrationProcess<ObjectRelation> {
|
|
|
|
|
|
- private static ObjectRelationMigration instance;
|
|
|
-
|
|
|
- private ObjectRelationMigration() {}
|
|
|
-
|
|
|
- // 静态方法返回该实例
|
|
|
- public static ObjectRelationMigration getInstance() {
|
|
|
- if(instance == null) {
|
|
|
- synchronized (ObjectRelationMigration.class) {
|
|
|
- if (instance == null) {
|
|
|
- instance = new ObjectRelationMigration();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return instance;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 数据迁移
|
|
|
*
|
|
@@ -97,12 +91,6 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
log.error("######################### dt_relation 数据迁移内容获取失败"+e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- /*for (MiGrationRelCode miGrationRelCode: MiGrationRelCode.values()){
|
|
|
- //log.info("######################### dt_relation "+miGrationRelCode.getCode()+"数据迁移内容获取开始 #########################");
|
|
|
- QueryCriteria queryCriteria = getQueryCriteria(miGrationRelCode.getCode());
|
|
|
- dataMigrationExcels.addAll(startMigrateForExcel(context, migrationInfo, queryCriteria));
|
|
|
- //log.info("######################### dt_relation "+miGrationRelCode.getCode()+"数据迁移内容获取结束 #########################");
|
|
|
- }*/
|
|
|
long end = System.currentTimeMillis();
|
|
|
log.info("######################### dt_relation 数据迁移内容获取结束 "+(end-start)+"#########################");
|
|
|
return dataMigrationExcels;
|
|
@@ -112,48 +100,151 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
public AdmResponse migrateForLog(InstanceUrlParam context, MigrationInfo migrationInfo) {
|
|
|
log.info("######################### dt_relation 同步开始 #########################");
|
|
|
long start = System.currentTimeMillis();
|
|
|
- /*for (MiGrationRelCode miGrationRelCode: MiGrationRelCode.values()){
|
|
|
- log.info("######################### dt_relation "+miGrationRelCode.getCode()+"同步开始 #########################");
|
|
|
- QueryCriteria queryCriteria = getQueryCriteria(miGrationRelCode.getCode());
|
|
|
- List<SyncData> syncDataList = startMigrateForLog(context, migrationInfo, queryCriteria);
|
|
|
- log.info("######################### dt_relation "+miGrationRelCode.getCode()+"同步结束 共计:"+syncDataList.size()+"条 #########################");
|
|
|
- }*/
|
|
|
ExecutorService service = getExcecutor();
|
|
|
- List<SyncData> syncDataList = new ArrayList<>();
|
|
|
- List<Future<List<SyncData>>> list = new ArrayList<>();
|
|
|
|
|
|
for (MiGrationRelCode miGrationRelCode: MiGrationRelCode.values()){
|
|
|
log.info("######################### dt_relation "+miGrationRelCode.getCode()+"数据迁移开始 #########################");
|
|
|
|
|
|
- Future<List<SyncData>> future = service.submit(new Callable<List<SyncData>>(){
|
|
|
+ service.submit(new Runnable() {
|
|
|
@Override
|
|
|
- public List<SyncData> call() throws Exception {
|
|
|
- return startMigrateForLog(context, migrationInfo, miGrationRelCode.getCode());
|
|
|
+ public void run() {
|
|
|
+ startMigrateForLog(context, migrationInfo, miGrationRelCode.getCode());
|
|
|
}
|
|
|
});
|
|
|
- list.add(future);
|
|
|
}
|
|
|
service.shutdown();
|
|
|
- for (Future<List<SyncData>> future : list) {
|
|
|
+ long end = System.currentTimeMillis();
|
|
|
+ log.info("######################### dt_relation 同步结束 "+(end-start)+"#########################");
|
|
|
+ return AdmResponse.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据迁移 数据量超过1w 分页 多线程处理
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ * @return sql 文件
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String migrateForSql(InstanceUrlParam context) {
|
|
|
+ StringBuffer sqls = new StringBuffer(" \n -- 数据迁移 dt_relation ------ \n");
|
|
|
+ //获取已经采集的数据
|
|
|
+ String sqls_temp = "";
|
|
|
+ ExecutorService service = getExcecutor();
|
|
|
+ List<Future<StringBuffer>> futureList = new ArrayList<>();
|
|
|
+ for (MiGrationRelCode miGrationRelCode: MiGrationRelCode.values()){
|
|
|
+ QueryCriteria queryCriteria = getQueryCriteria(miGrationRelCode.getCode());
|
|
|
+ queryCriteria.setSize(10000L);
|
|
|
+ CommonResult<List<ObjectRelation>> admDatas = getAdmDataPage(context,queryCriteria);
|
|
|
+ if (admDatas.getResult().equals(DmpResult.SUCCESS) && admDatas.getCount() > queryCriteria.getSize()) {
|
|
|
+ long pages = admDatas.getCount() / queryCriteria.getSize() + 1;
|
|
|
+ for(long i = 2;i < pages; i++){
|
|
|
+ queryCriteria.setPage(i);
|
|
|
+ List<ObjectRelation> admData = getAdmData(context,queryCriteria);
|
|
|
+ appendValuesBefore(service,admData,futureList);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ List<ObjectRelation> admData = admDatas.getData();
|
|
|
+ appendValuesBefore(service,admData,futureList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ service.shutdown();
|
|
|
+ for (Future<StringBuffer> future : futureList) {
|
|
|
try {
|
|
|
- List<SyncData> syncDatas = future.get();
|
|
|
- if(CollUtil.isNotEmpty(syncDatas)){
|
|
|
- syncDataList.addAll(syncDatas);
|
|
|
+ StringBuffer stringBuffer = future.get();
|
|
|
+ if(StrUtil.isNotEmpty(stringBuffer)){
|
|
|
+ sqls_temp += stringBuffer.toString();
|
|
|
}
|
|
|
-
|
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
- log.error("######################### dt_relation 数据迁移失败"+e.getMessage());
|
|
|
+ log.error("######################### dt_relation 数据迁移sql失败"+e.getMessage());
|
|
|
} catch (ExecutionException e) {
|
|
|
e.printStackTrace();
|
|
|
- log.error("######################### dt_relation 数据迁移失败"+e.getMessage());
|
|
|
+ log.error("######################### dt_relation 数据迁移sql失败"+e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- long end = System.currentTimeMillis();
|
|
|
- log.info("######################### dt_relation 同步结束 "+(end-start)+"#########################");
|
|
|
- return AdmResponse.success();
|
|
|
+
|
|
|
+ if(sqls_temp.length() == 0){
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ sqls.append(MigrationConstant.DT_RELATION_SQL_PRE);
|
|
|
+ sqls.append(sqls_temp);
|
|
|
+ String sql = sqls.toString();
|
|
|
+ sql = sql.substring(0, sql.lastIndexOf(","));
|
|
|
+ sql +=";";
|
|
|
+ return sql;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void appendValuesBefore(ExecutorService service, List<ObjectRelation> admData, List<Future<StringBuffer>> futureList){
|
|
|
+ if(CollUtil.isEmpty(admData)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ StringBuffer sqls_temp = new StringBuffer();
|
|
|
+ Future<StringBuffer> future = service.submit(new Callable<StringBuffer>(){
|
|
|
+ @Override
|
|
|
+ public StringBuffer call() throws Exception {
|
|
|
+ return appendValues(admData, sqls_temp);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ futureList.add(future);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 拼接sql字符串
|
|
|
+ * @param admData
|
|
|
+ * @param sqls
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private StringBuffer appendValues(List<ObjectRelation> admData, StringBuffer sqls){
|
|
|
+ admData.forEach(relation -> {
|
|
|
+ sqls.append("(");
|
|
|
+ sqls.append("'").append(relation.getId()).append("',");
|
|
|
+ sqls.append("'").append(relation.getGroupCode()).append("',");
|
|
|
+ sqls.append("'").append(relation.getProjectId()).append("',");
|
|
|
+ if (relation.getGraphId() == null) {
|
|
|
+ sqls.append(relation.getGraphId()).append(",");
|
|
|
+ } else {
|
|
|
+ sqls.append("'").append(relation.getGraphId()).append("',");
|
|
|
+ }
|
|
|
+ sqls.append("'").append(relation.getGraphCode()).append("',");
|
|
|
+ sqls.append("'").append(relation.getRelCode()).append("',");
|
|
|
+
|
|
|
+ if (relation.getRelValue() == null) {
|
|
|
+ sqls.append(relation.getRelValue()).append(",");
|
|
|
+ } else {
|
|
|
+ sqls.append("'").append(relation.getRelValue()).append("',");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (relation.getObjFrom() == null) {
|
|
|
+ sqls.append(relation.getObjFrom()).append(",");
|
|
|
+ } else {
|
|
|
+ sqls.append("'").append(relation.getObjFrom()).append("',");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (relation.getObjTo() == null) {
|
|
|
+ sqls.append(relation.getObjTo()).append(",");
|
|
|
+ } else {
|
|
|
+ sqls.append("'").append(relation.getObjTo()).append("',");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (relation.getCreateApp() == null) {
|
|
|
+ sqls.append(relation.getCreateApp()).append(",");
|
|
|
+ } else {
|
|
|
+ sqls.append("'").append(relation.getCreateApp()).append("',");
|
|
|
+ }
|
|
|
+ if (relation.getUpdateApp() == null) {
|
|
|
+ sqls.append(relation.getUpdateApp()).append(",");
|
|
|
+ } else {
|
|
|
+ sqls.append("'").append(relation.getUpdateApp()).append("',");
|
|
|
+ }
|
|
|
+ sqls.append("'").append(relation.getCreator()).append("',");
|
|
|
+ sqls.append("'").append(relation.getCreationTime()).append("',");
|
|
|
+ sqls.append("'").append(relation.getModifier()).append("',");
|
|
|
+ sqls.append("'").append(relation.getModifiedTime()).append("',");
|
|
|
+ sqls.append(relation.getValid());
|
|
|
+ sqls.append(")\n ,");
|
|
|
+ });
|
|
|
+ return sqls;
|
|
|
+ }
|
|
|
private ExecutorService getExcecutor(){
|
|
|
ExecutorService service = new ThreadPoolExecutor(10, 15, 0L, TimeUnit.MILLISECONDS,
|
|
|
new LinkedBlockingQueue(), new ThreadFactory() {
|
|
@@ -188,9 +279,7 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
return dataMigrationExcels;
|
|
|
}
|
|
|
|
|
|
- //String insertUrl = requestUrl(context, migrationInfo, MigrationType.INSERT.getCode());
|
|
|
if(CollUtil.isEmpty(projectRelations)){
|
|
|
- //DataMigrationResponse dataMigrationResponse = insertBatch(admRelations, ObjectRelation.class, insertUrl);
|
|
|
dataMigrationExcels.addAll(processDataForExcel(admRelations, MigrationType.CREATE.getCode()));
|
|
|
return dataMigrationExcels;
|
|
|
}
|
|
@@ -203,7 +292,6 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
Map<String,Object> doSubtractFromInsert = doSubtractAdd(admDefineMap, projectDefineMap);
|
|
|
if(!CollUtil.isEmpty(doSubtractFromInsert)){
|
|
|
List<ObjectRelation> insertData = toList(doSubtractFromInsert, admRelations);
|
|
|
- //DataMigrationResponse dataMigrationResponse = insertBatch(insertData, ObjectRelation.class, insertUrl);
|
|
|
dataMigrationExcels.addAll(processDataForExcel(insertData, MigrationType.CREATE.getCode()));
|
|
|
}
|
|
|
|
|
@@ -212,8 +300,6 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
if(!CollUtil.isEmpty(doSubtractFromDelete)){
|
|
|
List<String> deleteIds = doSubtractFromDelete.entrySet().stream().map(en -> en.getKey()).collect(Collectors.toList());
|
|
|
List<ObjectRelation> deleteData = toListByIds(deleteIds, projectRelations);
|
|
|
-// String delUrl = requestUrl(context, migrationInfo, MigrationType.DELETE.getCode());
|
|
|
-// DataMigrationResponse dataMigrationResponse = deleteBatch(deleteIds, ObjectRelation.class, delUrl);
|
|
|
dataMigrationExcels.addAll(processDataForExcel(deleteData, MigrationType.DELETE.getCode()));
|
|
|
}
|
|
|
|
|
@@ -225,17 +311,16 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
Map<String, Object> compareData = compareData(intersectionUpdateFrom, intersectionUpdateTo);
|
|
|
if(CollUtil.isNotEmpty(compareData) && compareData.size() > 0){
|
|
|
List<ObjectRelation> updateData = toList(compareData, admRelations);
|
|
|
- //String updateUrl = requestUrl(context, migrationInfo, MigrationType.UPDATE.getCode());
|
|
|
- //DataMigrationResponse dataMigrationResponse = updateBatch(updateData, ObjectRelation.class, updateUrl);
|
|
|
dataMigrationExcels.addAll(processDataForExcel(updateData, MigrationType.UPDATE.getCode()));
|
|
|
}
|
|
|
}
|
|
|
+ processExcelDatas(context.getGroupCode(),context.getProjectId(), dataMigrationExcels);
|
|
|
return dataMigrationExcels;
|
|
|
}
|
|
|
|
|
|
- private List<SyncData> startMigrateForLog(InstanceUrlParam context, MigrationInfo migrationInfo, String code){
|
|
|
- QueryCriteria queryCriteria = getQueryCriteria(code);
|
|
|
+ private void startMigrateForLog(InstanceUrlParam context, MigrationInfo migrationInfo, String code){
|
|
|
List<SyncData> syncDataList = new ArrayList<>();
|
|
|
+ QueryCriteria queryCriteria = getQueryCriteria(code);
|
|
|
List<ObjectRelation> admRelations = getAdmData(context, queryCriteria);
|
|
|
|
|
|
String queryUrl = requestUrl(context, migrationInfo, MigrationType.QUERY.getCode());
|
|
@@ -248,6 +333,8 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
if(CollUtil.isEmpty(projectRelations)){
|
|
|
DataMigrationResponse dataMigrationResponse = insertBatch(admRelations, ObjectRelation.class, insertUrl);
|
|
|
syncDataList = processDataForLog(dataMigrationResponse, MigrationType.CREATE.getCode());
|
|
|
+ super.addSynLog(context, syncDataList);
|
|
|
+ return;
|
|
|
}
|
|
|
List<ObjectNode> objectNodeListPro = JsonNodeUtils.toListNode(projectRelations, null, null);
|
|
|
Map<String,Object> projectDefineMap = toEntityMap(objectNodeListPro, ObjectRelation.class);
|
|
@@ -259,6 +346,7 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
if(!CollUtil.isEmpty(doSubtractFromInsert)){
|
|
|
List<ObjectRelation> insertData = toList(doSubtractFromInsert, admRelations);
|
|
|
DataMigrationResponse dataMigrationResponse = insertBatch(insertData, ObjectRelation.class, insertUrl);
|
|
|
+ //处理并保存日志
|
|
|
syncDataList.addAll(processDataForLog(dataMigrationResponse, MigrationType.CREATE.getCode()));
|
|
|
}
|
|
|
|
|
@@ -267,29 +355,27 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
if(!CollUtil.isEmpty(doSubtractFromDelete)){
|
|
|
List<String> deleteIds = doSubtractFromDelete.entrySet().stream().map(en -> en.getKey()).collect(Collectors.toList());
|
|
|
String delUrl = requestUrl(context, migrationInfo, MigrationType.DELETE.getCode());
|
|
|
-
|
|
|
//处理删除的数据
|
|
|
- DataMigrationResponse dataMigrationResponse = deleteBatch(deleteIds, ObjectRelation.class, delUrl);
|
|
|
- List<String> successIds = (List<String>) dataMigrationResponse.getData();
|
|
|
- List<ObjectRelation> delObjs = toListByIds(successIds, projectRelations);
|
|
|
- dataMigrationResponse.setData(delObjs);
|
|
|
+ DataMigrationResponse dataMigrationResponse = deleteBatch(deleteIds, delUrl);
|
|
|
+ //处理并保存日志
|
|
|
syncDataList.addAll(processDataForLog(dataMigrationResponse, MigrationType.DELETE.getCode()));
|
|
|
}
|
|
|
|
|
|
//交集更新
|
|
|
Map<String,Object> intersectionUpdateFrom = doIntersectionGetFrom(admDefineMap, projectDefineMap);
|
|
|
Map<String,Object> intersectionUpdateTo = doIntersectionGetTo(admDefineMap, projectDefineMap);
|
|
|
-
|
|
|
if(!CollUtil.isEmpty(intersectionUpdateFrom) && !CollUtil.isEmpty(intersectionUpdateTo)){
|
|
|
Map<String, Object> compareData = compareData(intersectionUpdateFrom, intersectionUpdateTo);
|
|
|
if(CollUtil.isNotEmpty(compareData) && compareData.size() > 0){
|
|
|
List<ObjectRelation> updateData = toList(compareData, admRelations);
|
|
|
String updateUrl = requestUrl(context, migrationInfo, MigrationType.UPDATE.getCode());
|
|
|
DataMigrationResponse dataMigrationResponse = updateBatch(updateData, ObjectRelation.class, updateUrl);
|
|
|
+ //处理并保存日志
|
|
|
syncDataList.addAll(processDataForLog(dataMigrationResponse, MigrationType.UPDATE.getCode()));
|
|
|
}
|
|
|
}
|
|
|
- return super.addSynLog(context, syncDataList);
|
|
|
+ //处理并保存日志
|
|
|
+ super.addSynLog(context,syncDataList);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -305,6 +391,11 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
return relations;
|
|
|
}
|
|
|
|
|
|
+ public CommonResult<List<ObjectRelation>> getAdmDataPage(InstanceUrlParam context, QueryCriteria queryCriteria) {
|
|
|
+ CommonResult<List<ObjectRelation>> relations = DigitalRelationFacade.queryPrototype(context.getGroupCode(),context.getProjectId(),context.getUserId(),context.getUserId(),queryCriteria);
|
|
|
+ return relations;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据map转为需要处理的对象集合
|
|
|
* 使用 MigrationConstant.spliter 作为拼接符
|
|
@@ -377,10 +468,12 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
ObjectRelation objectRelation = (ObjectRelation) obj;
|
|
|
DataMigrationExcel excel = new DataMigrationExcel();
|
|
|
excel.setId(objectRelation.getId());
|
|
|
- excel.setCode(String.join(StrUtil.DASHED, objectRelation.getRelCode(), objectRelation.getGraphCode()));
|
|
|
+ excel.setCode(String.join(StrUtil.DASHED, objectRelation.getGraphCode(), objectRelation.getRelCode()));
|
|
|
excel.setObjFrom(objectRelation.getObjFrom());
|
|
|
excel.setObjTo(objectRelation.getObjTo());
|
|
|
excel.setType(type);
|
|
|
+ excel.setCreateTime(objectRelation.getCreationTime() == null ? "" : objectRelation.getCreationTime().toString());
|
|
|
+ excel.setUpdateTime(objectRelation.getModifiedTime() == null ? "" :objectRelation.getModifiedTime().toString());
|
|
|
dataMigrationExcels.add(excel);
|
|
|
}
|
|
|
return dataMigrationExcels;
|
|
@@ -406,7 +499,7 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
syncData.setTableName(MigrationTable.DTRELATION.getCode());
|
|
|
syncData.setType(type);//操作
|
|
|
syncData.setTargetId(relation.getId());
|
|
|
- syncData.setName(String.join(StrUtil.DASHED, relation.getRelCode(), relation.getGraphCode()));
|
|
|
+ syncData.setCode(String.join(StrUtil.DASHED, relation.getGraphCode(), relation.getRelCode()));
|
|
|
syncData.setFromId(relation.getObjFrom());
|
|
|
syncData.setToId(relation.getObjTo());
|
|
|
syncDataList.add(syncData);
|
|
@@ -417,4 +510,69 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
}
|
|
|
return syncDataList;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 查询所有关系类型
|
|
|
+
|
|
|
+ * @return : java.util.Map<java.lang.String,com.persagy.dmp.define.entity.RelationDefine>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/10/15 11:22
|
|
|
+ * Update By lijie 2021/10/15 11:22
|
|
|
+ */
|
|
|
+ private Map<String, RelationDefine> queryAllRelationDefineMap(String groupCode, String projectId) {
|
|
|
+ List<RelationDefine> relationDefines = DigitalRelationDefineFacade.query(groupCode, projectId,
|
|
|
+ AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, new QueryCriteria());
|
|
|
+ if (CollUtil.isEmpty(relationDefines)){
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+ return relationDefines.stream()
|
|
|
+ .collect(Collectors.toMap(relationDefine ->
|
|
|
+ relationDefine.getGraphCode() + StrUtil.DASHED + relationDefine.getCode(),
|
|
|
+ relationDefine -> relationDefine, (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将excel中的relcode graphCode 翻译成name组合
|
|
|
+ * @param groupCode
|
|
|
+ * @param projectId
|
|
|
+ * @param excelList
|
|
|
+ */
|
|
|
+ private void processExcelDatas(String groupCode, String projectId, List<DataMigrationExcel> excelList){
|
|
|
+ // 1.获取所有的一级,二级图类型定义
|
|
|
+ QueryCriteria parentCriteria = new QueryCriteria();
|
|
|
+ List<GraphDefine> graphDefines = DigitalGraphDefineFacade.query(groupCode, projectId,
|
|
|
+ AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, parentCriteria);
|
|
|
+ if (!CollUtil.isEmpty(graphDefines)){
|
|
|
+ // 2.查询所有的边类型定义
|
|
|
+ Map<String, RelationDefine> relationDefineMap = queryAllRelationDefineMap(groupCode,projectId);
|
|
|
+ Map<String, GraphDefine> graphDefineMap = CollUtil.fieldValueMap(graphDefines, "code");
|
|
|
+ for(DataMigrationExcel excel : excelList){
|
|
|
+ String code = excel.getCode();
|
|
|
+ if(StrUtil.isEmpty(code) || !code.contains(StrUtil.DASHED)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //excel.setCode(String.join(StrUtil.DASHED, objectRelation.getGraphCode(), objectRelation.getRelCode()));
|
|
|
+ String tempName = null;
|
|
|
+ String graphName = graphDefineMap.get(code.split(StrUtil.DASHED)[0]).getName();
|
|
|
+ String relName = relationDefineMap.get(code).getName();
|
|
|
+ if(StrUtil.isAllNotEmpty(graphName, relName)){
|
|
|
+ tempName = String.join(StrUtil.DASHED, graphName, relName);
|
|
|
+ }
|
|
|
+ excel.setName(tempName==null?"":tempName);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除关系,手动拼接删除条件
|
|
|
+ public DataMigrationResponse deleteBatch(List<String> ids, String url) {
|
|
|
+ QueryCriteria criteria = new QueryCriteria();
|
|
|
+ ObjectNode node = JsonNodeFactory.instance.objectNode();
|
|
|
+ //删除关系 然后重建
|
|
|
+ ArrayNode arrayNode = node.putArray("id");
|
|
|
+ ids.forEach(id -> arrayNode.add(id));
|
|
|
+ criteria.setCriteria(node);
|
|
|
+ return processProjectData(null, criteria, ObjectRelation.class, url);
|
|
|
+ }
|
|
|
}
|