Browse Source

fix adm 数据迁移 异常出来 日志分批量入库

lvxianyun 3 years ago
parent
commit
156b16e2b3

+ 22 - 10
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/MigrationAbstractServiceImpl.java

@@ -349,11 +349,6 @@ public class MigrationAbstractServiceImpl<T> implements IMigrationAbstractServic
         if(CollUtil.isEmpty(difference)){
             return null;
         }
-        /*difference.forEach(set1 -> System.out.println(set1));
-        System.out.println("-------------------------------------------------------------------------");
-        Sets.SetView<String> difference2 = Sets.difference(toSets, formSets);
-        difference2.forEach(set2 -> System.out.println(set2));*/
-
         Set<String> diff = difference.stream().map(entity -> StrUtil.subBefore(entity, MigrationConstant.SPLITER_UNION, true)).collect(Collectors.toSet());
         Map<String, Object> results = getValueForMapByKeys(diff, from);
         return results;
@@ -391,18 +386,35 @@ public class MigrationAbstractServiceImpl<T> implements IMigrationAbstractServic
         return syncDataList;
     }
 
+    /**
+     * 调用中台接口,保存迁移日志
+     * 日志量 > MigrationConstant.BATCH_SUBMIT_DATA_COUNT 使用分页插入
+     *
+     * @param context
+     * @param syncDataList
+     * @return
+     */
     @Override
     public List<SyncData> addSynLog(InstanceUrlParam context, List<SyncData> syncDataList) {
         if(CollUtil.isEmpty(syncDataList)){
             return Collections.emptyList();
         }
+        List<SyncData> syncDatasResult = new ArrayList<>(syncDataList.size());
         // 调用中台新增
-        List<SyncData> syncDatas = DigitalMigrateLogFacade.create(context.getGroupCode(),context.getProjectId(),context.getAppId(), context.getUserId(), syncDataList);
-
-        if(CollUtil.isEmpty(syncDatas)) {
-            throw new RuntimeException("调用中台更新迁移日志出错");
+        if(syncDataList.size() - MigrationConstant.BATCH_SUBMIT_DATA_COUNT > 0){
+            syncDatasResult = DigitalMigrateLogFacade.create(context.getGroupCode(),context.getProjectId(),context.getAppId(), context.getUserId(), syncDataList);
+        }else{
+            int count= syncDataList.size() / MigrationConstant.BATCH_SUBMIT_DATA_COUNT;
+            for(int k = 0; k < count + 1 ;k++){
+                int end = (k+1)  * MigrationConstant.BATCH_SUBMIT_DATA_COUNT - 1;
+                if(end > syncDataList.size()){
+                    end = syncDataList.size();
+                }
+                List syncData = syncDataList.subList(k * MigrationConstant.BATCH_SUBMIT_DATA_COUNT, end);
+                syncDatasResult.addAll(DigitalMigrateLogFacade.create(context.getGroupCode(),context.getProjectId(),context.getAppId(), context.getUserId(), syncData));
+            }
         }
-        return syncDataList;
+        return syncDatasResult;
     }
 
     public DataMigrationResponse processProjectData(List vos, QueryCriteria queryCriteria, Class<T> clazz, String url){