Преглед на файлове

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-delivery

zhaoyk преди 3 години
родител
ревизия
6fbea7ed00

+ 3 - 22
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/controller/DataMigrationController.java

@@ -27,6 +27,7 @@ import com.persagy.proxy.migration.constant.MigrationObjType;
 import com.persagy.proxy.migration.handler.DataMigrationHandler;
 import com.persagy.proxy.migration.model.DataMigrationExcel;
 import com.persagy.proxy.migration.model.MigrationInfo;
+import com.persagy.proxy.migration.service.MigrationLogService;
 import com.persagy.proxy.object.model.AdmProject;
 import com.persagy.proxy.object.service.IAdmProjectService;
 import lombok.RequiredArgsConstructor;
@@ -58,7 +59,7 @@ import java.util.Map;
 public class DataMigrationController {
     private final DataMigrationHandler dataMigrationHandler;
     private final IAdmProjectService projectService;
-
+    private final MigrationLogService logService;
     /**
      * 导出待迁移的数据信息
      *
@@ -169,28 +170,8 @@ public class DataMigrationController {
      */
     @PostMapping("/log")
     public AdmResponse queryMigrateForLog(@RequestBody AdmQueryCriteria request) {
-        QueryCriteria queryCriteria = AdmQueryCriteriaHelper.toDmpCriteria(request);
         InstanceUrlParam context = AdmContextUtil.toDmpContext();
-        CommonResult<List<SyncData>> result = DigitalMigrateLogFacade.query(context.getGroupCode(),context.getProjectId(),context.getAppId(), context.getUserId(),queryCriteria);
-        if(result.getResult().equals(DmpResult.SUCCESS)){
-            if(CollUtil.isEmpty(result.getData())){
-                return AdmResponse.success();
-            }
-            // 设置返回值
-            AdmResponse response = AdmResponse.success(result.getData());
-            Long total = result.getCount() == null ? null : result.getCount().longValue();
-            if(request.isOnlyCount()){
-                response.setTotal(null);
-                response.setCount(total);
-            }else {
-                response.setTotal(total);
-            }
-            response.setPageNumber(request.getPageNumber());
-            response.setPageSize(request.getPageSize());
-            return response;
-        } else {
-            return AdmResponse.failure(result.getMessage());
-        }
+        return logService.queryMigrationLog(context, request);
     }
 
 

+ 2 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/handler/DefineInfoMigration.java

@@ -228,6 +228,8 @@ public class DefineInfoMigration extends MigrationAbstractServiceImpl<ObjectInfo
             excel.setCode(define.getCode());
             excel.setName(define.getName());
             excel.setType(type);
+            excel.setCreateTime(define.getCreationTime().toString());
+            excel.setUpdateTime(define.getModifiedTime().toString());
             dataMigrationExcels.add(excel);
         }
         return dataMigrationExcels;

+ 2 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/handler/DefineTypeMigration.java

@@ -224,6 +224,8 @@ public class DefineTypeMigration extends MigrationAbstractServiceImpl<ObjectType
             excel.setCode(objectTypeDefine.getCode());
             excel.setName(objectTypeDefine.getName());
             excel.setType(type);
+            excel.setCreateTime(objectTypeDefine.getCreationTime().toString());
+            excel.setUpdateTime(objectTypeDefine.getModifiedTime().toString());
             if(objectTypeDefine.getGroupCode().equals("0") && objectTypeDefine.getProjectId().equals("0")){
                 excel.setMark("标准字典");
             }else{

+ 2 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/handler/ObjectDigitalMigration.java

@@ -351,6 +351,8 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
             excel.setId(digital.getId());
             excel.setName(String.join(StrUtil.DASHED, digital.getLocalId() == null ? "" : digital.getLocalId(), digital.getLocalName() == null ? "" : digital.getLocalName()));
             excel.setType(type);
+            excel.setCreateTime(digital.getCreationTime().toString());
+            excel.setUpdateTime(digital.getModifiedTime().toString());
             dataMigrationExcels.add(excel);
         }
         return dataMigrationExcels;

+ 65 - 2
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/handler/ObjectRelationMigration.java

@@ -8,9 +8,14 @@ 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.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.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.InstanceUrlParam;
 import com.persagy.proxy.migration.constant.MiGrationRelCode;
@@ -230,6 +235,7 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
                 dataMigrationExcels.addAll(processDataForExcel(updateData, MigrationType.UPDATE.getCode()));
             }
         }
+        processExcelDatas(context.getGroupCode(),context.getProjectId(), dataMigrationExcels);
         return dataMigrationExcels;
     }
 
@@ -377,10 +383,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().toString());
+            excel.setUpdateTime(objectRelation.getModifiedTime().toString());
             dataMigrationExcels.add(excel);
         }
         return dataMigrationExcels;
@@ -406,7 +414,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 +425,59 @@ 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);
+            }
+
+        }
+
+    }
 }

+ 9 - 9
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/model/DataMigrationExcel.java

@@ -47,15 +47,15 @@ public class DataMigrationExcel {
     @ExcelProperty(value = "源(云端/现场)", index=6)
     private String directional = "adm-to-project";
 
-    @ColumnWidth(30)
-    @ExcelProperty(value = "from(adm)", index=7)
-    private String source;
-
-    @ColumnWidth(30)
-    @ExcelProperty(value = "to(project)", index=8)
-    private String targetProject;
-
     @ColumnWidth(50)
-    @ExcelProperty(value = "备注", index=9)
+    @ExcelProperty(value = "备注", index=7)
     private String mark;
+
+    @ColumnWidth(25)
+    @ExcelProperty(value = "创建时间", index=8)
+    private String createTime;
+
+    @ColumnWidth(25)
+    @ExcelProperty(value = "更新时间", index=9)
+    private String updateTime;
 }

+ 126 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/MigrationLogServiceImpl.java

@@ -0,0 +1,126 @@
+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.ObjectNode;
+import com.persagy.dmp.basic.model.QueryCriteria;
+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.migrate.client.DigitalMigrateLogFacade;
+import com.persagy.dmp.rwd.migrate.entity.SyncData;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
+import com.persagy.proxy.common.entity.DmpResult;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import com.persagy.proxy.migration.constant.MigrationTable;
+import com.persagy.proxy.migration.service.MigrationLogService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author lvxianyun
+ * @title: MigrationLogServiceImpl
+ * @projectName digital-delivery
+ * @description: 数据迁移日志服务
+ * @date 2022/1/5 17:22
+ */
+@Service
+@Slf4j
+public class MigrationLogServiceImpl implements MigrationLogService {
+    @Override
+    public AdmResponse queryMigrationLog(InstanceUrlParam context, AdmQueryCriteria request) {
+        QueryCriteria queryCriteria = AdmQueryCriteriaHelper.toDmpCriteria(request);
+        String groupCode = context.getGroupCode();
+        String projectId = context.getProjectId();
+        CommonResult<List<SyncData>> result = DigitalMigrateLogFacade.query(groupCode, projectId, context.getAppId(), context.getUserId(),queryCriteria);
+        if(result.getResult().equals(DmpResult.SUCCESS)){
+            if(CollUtil.isEmpty(result.getData())){
+                return AdmResponse.success();
+            }
+            // 处理返回值
+            List<SyncData> syncDatas = result.getData();
+            processSynDatas(groupCode, projectId, syncDatas);
+            AdmResponse response = AdmResponse.success(syncDatas);
+            Long total = result.getCount() == null ? null : result.getCount().longValue();
+            if(request.isOnlyCount()){
+                response.setTotal(null);
+                response.setCount(total);
+            }else {
+                response.setTotal(total);
+            }
+            response.setPageNumber(request.getPageNumber());
+            response.setPageSize(request.getPageSize());
+            return response;
+        } else {
+            return AdmResponse.failure(result.getMessage());
+        }
+    }
+
+
+    /***
+     * 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));
+    }
+
+    /**
+     * 将同步日志中的relcode graphCode 翻译成name组合
+     * @param groupCode
+     * @param projectId
+     * @param syncDatas
+     */
+    private void processSynDatas(String groupCode, String projectId, List<SyncData> syncDatas){
+        // 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(SyncData syncData : syncDatas){
+                if(!syncData.getTableName().equals(MigrationTable.DTRELATION.getCode())){
+                   continue;
+                }
+                String code = syncData.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);
+                }
+                syncData.setName(tempName==null?"":tempName);
+            }
+
+        }
+
+    }
+}

+ 18 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/MigrationLogService.java

@@ -0,0 +1,18 @@
+package com.persagy.proxy.migration.service;
+
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+
+/**
+ * @author lvxianyun
+ * @title: MigrationLogService
+ * @projectName digital-delivery
+ * @description: 迁移日志服务
+ * @date 2022/1/5 17:21
+ */
+public interface MigrationLogService {
+
+    AdmResponse queryMigrationLog(InstanceUrlParam context, AdmQueryCriteria request);
+}