Przeglądaj źródła

准生产环境的交付数据,同步至客户生产环境 优化

lvxianyun 3 lat temu
rodzic
commit
558007c69b

+ 1 - 1
src/main/java/com/persagy/proxy/migration/handler/ObjectDigitalMigration.java

@@ -336,7 +336,7 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
             ObjectDigital digital = JsonNodeUtils.toEntity((ObjectNode) obj, ObjectDigital.class, null);
             DataMigrationExcel excel = new DataMigrationExcel();
             excel.setId(digital.getId());
-            excel.setName(String.join(StrUtil.DASHED, digital.getLocalId(), digital.getLocalName()));
+            excel.setName(String.join(StrUtil.DASHED, digital.getLocalId() == null ? "" : digital.getLocalId(), digital.getLocalName() == null ? "" : digital.getLocalName()));
             excel.setType(type);
             dataMigrationExcels.add(excel);
         }

+ 85 - 8
src/main/java/com/persagy/proxy/migration/handler/ObjectRelationMigration.java

@@ -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);
         }