|
@@ -24,6 +24,7 @@ import com.persagy.proxy.migration.service.Impl.MigrationAbstractServiceImpl;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -65,14 +66,43 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
long start = System.currentTimeMillis();
|
|
|
List<DataMigrationExcel> dataMigrationExcels = new ArrayList<>();
|
|
|
|
|
|
+ //TODO 之后考虑其他方式
|
|
|
+ ExecutorService service = getExcecutor();
|
|
|
+ List<Future<List<DataMigrationExcel>>> list = new ArrayList<>();
|
|
|
+
|
|
|
for (MiGrationRelCode miGrationRelCode: MiGrationRelCode.values()){
|
|
|
log.info("######################### dt_relation "+miGrationRelCode.getCode()+"数据迁移内容获取开始 #########################");
|
|
|
|
|
|
- QueryCriteria queryCriteria = getQueryCriteria(miGrationRelCode.getCode());
|
|
|
- dataMigrationExcels.addAll(startMigrateForExcel(context, migrationInfo, queryCriteria));
|
|
|
+ Future<List<DataMigrationExcel>> future = service.submit(new Callable<List<DataMigrationExcel>>(){
|
|
|
+ @Override
|
|
|
+ public List<DataMigrationExcel> call() throws Exception {
|
|
|
+ return startMigrateForExcel(context, migrationInfo, miGrationRelCode.getCode());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ list.add(future);
|
|
|
+ }
|
|
|
+ service.shutdown();
|
|
|
+ for (Future<List<DataMigrationExcel>> future : list) {
|
|
|
+ try {
|
|
|
+ List<DataMigrationExcel> excelList = future.get();
|
|
|
+ if(CollUtil.isNotEmpty(excelList)){
|
|
|
+ dataMigrationExcels.addAll(excelList);
|
|
|
+ }
|
|
|
|
|
|
- log.info("######################### dt_relation "+miGrationRelCode.getCode()+"数据迁移内容获取结束 #########################");
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("######################### dt_relation 数据迁移内容获取失败"+e.getMessage());
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ 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;
|
|
@@ -82,26 +112,72 @@ 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()){
|
|
|
+ /*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>>(){
|
|
|
+ @Override
|
|
|
+ public List<SyncData> call() throws Exception {
|
|
|
+ return startMigrateForLog(context, migrationInfo, miGrationRelCode.getCode());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ list.add(future);
|
|
|
+ }
|
|
|
+ service.shutdown();
|
|
|
+ for (Future<List<SyncData>> future : list) {
|
|
|
+ try {
|
|
|
+ List<SyncData> syncDatas = future.get();
|
|
|
+ if(CollUtil.isNotEmpty(syncDatas)){
|
|
|
+ syncDataList.addAll(syncDatas);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("######################### dt_relation 数据迁移失败"+e.getMessage());
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("######################### dt_relation 数据迁移失败"+e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
long end = System.currentTimeMillis();
|
|
|
log.info("######################### dt_relation 同步结束 "+(end-start)+"#########################");
|
|
|
return AdmResponse.success();
|
|
|
}
|
|
|
|
|
|
+ private ExecutorService getExcecutor(){
|
|
|
+ ExecutorService service = new ThreadPoolExecutor(10, 15, 0L, TimeUnit.MILLISECONDS,
|
|
|
+ new LinkedBlockingQueue(), new ThreadFactory() {
|
|
|
+ @Override
|
|
|
+ public Thread newThread(Runnable r) {
|
|
|
+ Thread t = new Thread(r);
|
|
|
+ System.out.println("我是线程ObjectRelation:" + r);
|
|
|
+ return t;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ return service;
|
|
|
+ }
|
|
|
private QueryCriteria getQueryCriteria(String typeCode){
|
|
|
QueryCriteria queryCriteria = new QueryCriteria();
|
|
|
ObjectNode criteria = JsonNodeFactory.instance.objectNode();
|
|
|
criteria.put("valid", 1);
|
|
|
criteria.put("relCode", typeCode);
|
|
|
+ queryCriteria.setCriteria(criteria);
|
|
|
return queryCriteria;
|
|
|
}
|
|
|
|
|
|
- private List<DataMigrationExcel> startMigrateForExcel(InstanceUrlParam context, MigrationInfo migrationInfo, QueryCriteria queryCriteria){
|
|
|
+ private List<DataMigrationExcel> startMigrateForExcel(InstanceUrlParam context, MigrationInfo migrationInfo, String code){
|
|
|
+ QueryCriteria queryCriteria = getQueryCriteria(code);
|
|
|
List<DataMigrationExcel> dataMigrationExcels = new ArrayList<>();
|
|
|
List<ObjectRelation> admRelations = getAdmData(context, queryCriteria);
|
|
|
|
|
@@ -157,7 +233,8 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
return dataMigrationExcels;
|
|
|
}
|
|
|
|
|
|
- private List<SyncData> startMigrateForLog(InstanceUrlParam context, MigrationInfo migrationInfo, QueryCriteria queryCriteria){
|
|
|
+ private List<SyncData> startMigrateForLog(InstanceUrlParam context, MigrationInfo migrationInfo, String code){
|
|
|
+ QueryCriteria queryCriteria = getQueryCriteria(code);
|
|
|
List<SyncData> syncDataList = new ArrayList<>();
|
|
|
List<ObjectRelation> admRelations = getAdmData(context, queryCriteria);
|
|
|
|
|
@@ -300,9 +377,9 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
|
|
|
ObjectRelation objectRelation = (ObjectRelation) obj;
|
|
|
DataMigrationExcel excel = new DataMigrationExcel();
|
|
|
excel.setId(objectRelation.getId());
|
|
|
- excel.setName(String.join(StrUtil.DASHED, objectRelation.getRelCode(), objectRelation.getGraphCode()));
|
|
|
+ excel.setCode(String.join(StrUtil.DASHED, objectRelation.getRelCode(), objectRelation.getGraphCode()));
|
|
|
excel.setObjFrom(objectRelation.getObjFrom());
|
|
|
- excel.setTargetProject(objectRelation.getObjTo());
|
|
|
+ excel.setObjTo(objectRelation.getObjTo());
|
|
|
excel.setType(type);
|
|
|
dataMigrationExcels.add(excel);
|
|
|
}
|