Kaynağa Gözat

adm 数据迁移 新增sql脚本 方式

lvxianyun 3 yıl önce
ebeveyn
işleme
d5e5b34dcf

+ 10 - 0
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/constant/MigrationConstant.java

@@ -23,18 +23,24 @@ public class MigrationConstant {
     public final static String DEF_CLASS_INSERT = "/dmp-rwd/rwd/def/class/createBatch?";
     public final static String DEF_CLASS_DELETE = "/dmp-rwd/rwd/def/class/deleteBatch?";
     public final static String DEF_CLASS_UPDATE = "/dmp-rwd/rwd/def/class/updateBatch?";
+    /**   对象实例表 sql脚本 开头  ***/
+    public final static String DEF_CLASS_SQL_PRE = "REPLACE INTO `dt_define_type`(`id`, `code`, `name`, `alias_code`, `alias_name`, `obj_type`, `group_code`, `project_id`, `major_code`, `system_code`, `equipment_code`, `parent_code`, `version`, `source_from`, `creator`, `creation_time`, `modifier`, `modified_time`, `valid`, `ts`)  VALUES \n ";
+
 
     /**   信息点 接口 ***/
     public final static String DEF_FUNCID = "/dmp-rwd/rwd/def/funcid?";
     public final static String DEF_FUNCID_INSERT = "/dmp-rwd/rwd/def/funcid/createBatch?";
     public final static String DEF_FUNCID_DELETE = "/dmp-rwd/rwd/def/funcid/deleteBatch?";
     public final static String DEF_FUNCID_UPDATE = "/dmp-rwd/rwd/def/funcid/updateBatch?";
+    /**   对象实例表 sql脚本 开头  ***/
+    public final static String DEF_FUNCID_SQL_PRE = "REPLACE INTO `dt_define_info`(`id`, `code`, `name`, `alias_code`, `alias_name`, `class_code`, `group_code`, `project_id`, `category`, `first_tag`, `second_tag`, `priority`, `input_mode`, `unit`, `data_type`, `is_multiple`, `is_region`, `formater`, `data_source`, `remark`, `sub_flag`, `weak_point`, `show_order`, `version`, `source_from`, `creator`, `creation_time`, `modifier`, `modified_time`, `valid`, `ts`) VALUES\n";
 
     /**   图类型表 接口 需要提供批量 ***/
     public final static String DEF_GRAPH = "/dmp-rwd/rwd/def/graph/query?";
     public final static String DEF_GRAPH_INSERT = "/dmp-rwd/rwd/def/graph/create?";
     public final static String DEF_GRAPH_DELETE = "/dmp-rwd/rwd/def/graph/delete?";
     public final static String DEF_GRAPH_UPDATE = "/dmp-rwd/rwd/def/graph/update?";
+    public final static String DEF_GRAPH_UPDATE_SQL_PRE ="REPLACE INTO `dt_define_graph` ( `id`, `code`,`name`, `first_category`, `second_category`,`second_category_mes`, `remark`, `object_types`,`creator`, `creation_time` , `modifier`,`modified_time`,`valid`, `ts`) VALUES \n ";
 
     /**   边类型表 接口  ***/
     public final static String DEF_REL = "/dmp-rwd/rwd/def/rel/query?";
@@ -48,6 +54,8 @@ public class MigrationConstant {
     public final static String DT_OBJECT_INSERT = "/dmp-rwd/rwd/instance/object/create?";
     public final static String DT_OBJECT_DELETE = "/dmp-rwd/rwd/instance/object/delete?";
     public final static String DT_OBJECT_UPDATE = "/dmp-rwd/rwd/instance/object/update?";
+    /**   对象实例表 sql脚本 开头  ***/
+    public final static String DT_OBJECT_SQL_PRE = "REPLACE INTO `dt_object`(`id`, `name`, `local_id`, `local_name`, `group_code`, `project_id`, `obj_type`, `class_code`, `grouping`, `infos`, `virtual_codes`, `create_app`, `update_app`, `creator`, `creation_time`, `modifier`, `modified_time`, `valid`, `ts`) VALUES \n";
 
 
     /**   关系实例表 接口  ***/
@@ -55,4 +63,6 @@ public class MigrationConstant {
     public final static String DT_RELATION_INSERT = "/dmp-rwd/rwd/instance/relation/create?";
     public final static String DT_RELATION_DELETE = "/dmp-rwd/rwd/instance/relation/delete?";
     public final static String DT_RELATION_UPDATE = "/dmp-rwd/rwd/instance/relation/update?";
+    /**   对象实例表 sql脚本 开头  ***/
+    public final static String DT_RELATION_SQL_PRE = "REPLACE INTO `dt_relation`(`id`, `group_code`, `project_id`, `graph_id`, `graph_code`, `rel_code`, `rel_value`, `obj_from`, `obj_to`, `create_app`, `update_app`, `creator`, `creation_time`, `modifier`, `modified_time`, `valid`, `ts`) VALUES \n";
 }

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

@@ -14,12 +14,9 @@ import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.JsonHelper;
-import com.persagy.dmp.migrate.client.DigitalMigrateLogFacade;
-import com.persagy.dmp.rwd.migrate.entity.SyncData;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
-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.MigrationConstant;
@@ -28,16 +25,16 @@ 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.IMigrationLogService;
+import com.persagy.proxy.migration.service.Impl.DataBaseBackup;
 import com.persagy.proxy.object.model.AdmProject;
 import com.persagy.proxy.object.service.IAdmProjectService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
@@ -60,6 +57,7 @@ public class DataMigrationController {
     private final DataMigrationHandler dataMigrationHandler;
     private final IAdmProjectService projectService;
     private final IMigrationLogService logService;
+    private final DataBaseBackup baseBackup;
     /**
      * 导出待迁移的数据信息
      *
@@ -149,10 +147,47 @@ public class DataMigrationController {
     }
 
     /**
-     * 迁移数据,执行脚本获取
+     * 迁移数据,获取执行脚本文件
      */
-    public void getMigrateSqlFile(){
+    @GetMapping("/getSqlFile")
+    public void getMigrateSqlFile(HttpServletResponse response){
+        InstanceUrlParam context = AdmContextUtil.toDmpContext();
+        StringBuffer dataMigrationSqls = dataMigrationHandler.handleAndGetSqlList(context);
+
+        response.setCharacterEncoding("utf-8");
+        //设置响应的内容类型
+        response.setContentType("text/plain");
+        //设置文件的名称和格式
+        response.addHeader("Content-Disposition","attachment;filename="
+                + genAttachmentFileName( context.getProjectId(), "JSON_FOR_UCC_")//设置名称格式,没有这个中文名称无法显示
+                + ".sql");
+        BufferedOutputStream buff = null;
+        ServletOutputStream outStr = null;
+        try {
+            outStr = response.getOutputStream();
+            buff = new BufferedOutputStream(outStr);
+            buff.write(dataMigrationSqls.toString().getBytes("UTF-8"));
+            buff.flush();
+            buff.close();
+        } catch (Exception e) {
+            log.error("导出文件文件出错:{}",e);
+        } finally {try {
+            buff.close();
+            outStr.close();
+        } catch (Exception e) {
+            log.error("关闭流对象出错 e:{}",e);
+        }
+        }
+    }
+
 
+    public  String genAttachmentFileName(String cnName, String defaultName) {
+        try {
+            cnName = new String(cnName.getBytes("gb2312"), "ISO8859-1");
+        } catch (Exception e) {
+            cnName = defaultName;
+        }
+        return cnName;
     }
 
     /**

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

@@ -58,6 +58,25 @@ public class DataMigrationHandler {
         return results;
     }
 
+
+    /**
+     * 获取迁移脚本
+     * @param context
+     */
+    public StringBuffer handleAndGetSqlList(InstanceUrlParam context){
+        StringBuffer sqls = new StringBuffer("");
+        if(CollUtil.isNotEmpty(migrationMap)){
+            for (MigrationTable migrationTable : MigrationTable.values()){
+                if(!migrationMap.containsKey(migrationTable.getCode())){
+                    continue;
+                }
+                sqls.append(migrationMap.get(migrationTable.getCode()).migrateForSql(context));
+            }
+        }
+        return sqls;
+    }
+
+
     /**
      * 获取迁移数据信息
      * @param context

+ 15 - 1
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/IDataMigration.java

@@ -19,9 +19,23 @@ public interface IDataMigration{
     /**
      * 数据迁移
      * @param context
-     * @return
+     * @return excel
      */
     List<DataMigrationExcel> migrateForExcel(InstanceUrlParam context, MigrationInfo migrationInfo);
+
+    /**
+     * 数据迁移
+     * @param context
+     * @return log
+     */
     AdmResponse migrateForLog(InstanceUrlParam context, MigrationInfo migrationInfo);
 
+
+    /**
+     * 数据迁移
+     * @param context
+     * @return sql 文件
+     */
+    String migrateForSql(InstanceUrlParam context);
+
 }

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

@@ -128,6 +128,88 @@ public class DefineInfoMigration extends MigrationAbstractServiceImpl<ObjectInfo
     }
 
     /**
+     * 数据迁移
+     *
+     * @param context
+     * @return sql 文件
+     */
+    @Override
+    public String migrateForSql(InstanceUrlParam context) {
+        //获取自定义的信息点数据
+        QueryCriteria queryCriteria = getCustomQueryCriteria(context);
+        List<ObjectInfoDefine> admDefineList = getAdmData(context, queryCriteria);
+        if(CollUtil.isEmpty(admDefineList)){
+            return "";
+        }
+        StringBuffer sqls = new StringBuffer(" \n -- 数据迁移  dt_define_info ------ \n");
+        sqls.append(MigrationConstant.DEF_FUNCID_SQL_PRE);
+        admDefineList.forEach(infoDefine -> {
+            sqls.append("(");
+            sqls.append("'").append(infoDefine.getId()).append("',");
+            sqls.append("'").append(infoDefine.getCode()).append("',");
+            sqls.append("'").append(infoDefine.getName()).append("',");
+            sqls.append("'").append(infoDefine.getAliasCode()).append("',");
+            sqls.append("'").append(infoDefine.getAliasName()).append("',");
+            sqls.append("'").append(infoDefine.getClassCode()).append("',");
+            sqls.append("'").append(infoDefine.getGroupCode()).append("',");
+            sqls.append("'").append(infoDefine.getProjectId()).append("',");
+            sqls.append("'").append(infoDefine.getCategory()).append("',");
+            sqls.append("'").append(infoDefine.getFirstTag()).append("',");
+            sqls.append("'").append(infoDefine.getSecondTag()).append("',");
+            sqls.append("'").append(infoDefine.getPriority()).append("',");
+            sqls.append("'").append(infoDefine.getInputMode()).append("',");
+            if (infoDefine.getUnit() == null) {
+                sqls.append(infoDefine.getUnit()).append(",");
+            } else {
+                sqls.append("'").append(infoDefine.getUnit()).append("',");
+            }
+            sqls.append("'").append(infoDefine.getDataType()).append("',");
+            sqls.append(infoDefine.getIsMultiple()).append(",");
+            sqls.append(infoDefine.getIsRegion()).append(",");
+            if (infoDefine.getFormater() == null) {
+                sqls.append(infoDefine.getFormater()).append(",");
+            } else {
+                sqls.append("'").append(infoDefine.getFormater()).append("',");
+            }
+            if (infoDefine.getDataSource() == null) {
+                sqls.append(infoDefine.getDataSource()).append(",");
+            } else {
+                sqls.append("'").append(infoDefine.getDataSource()).append("',");
+            }
+            if (infoDefine.getRemark() == null) {
+                sqls.append(infoDefine.getRemark()).append(",");
+            } else {
+                sqls.append("'").append(infoDefine.getRemark()).append("',");
+            }
+            sqls.append("'").append(infoDefine.getSubFlag()).append("',");
+            sqls.append(infoDefine.getWeakPoint()).append(",");
+            sqls.append(infoDefine.getShowOrder()).append(",");
+            sqls.append("'").append(infoDefine.getVersion()).append("',");
+            sqls.append(infoDefine.getSourceFrom()).append(",");
+            sqls.append("'").append(infoDefine.getCreator()).append("',");
+            sqls.append("'").append(infoDefine.getCreationTime()).append("',");
+            if (infoDefine.getModifier() == null) {
+                sqls.append(infoDefine.getModifier()).append(",");
+            } else {
+                sqls.append("'").append(infoDefine.getModifier()).append("',");
+            }
+
+            if (infoDefine.getModifiedTime() == null) {
+                sqls.append(infoDefine.getModifiedTime()).append(",");
+            } else {
+                sqls.append("'").append(infoDefine.getModifiedTime()).append(",");
+            }
+            sqls.append(infoDefine.getValid()).append(",");
+            sqls.append(infoDefine.getTs());
+            sqls.append("),");
+        });
+        String sql = sqls.toString();
+        sql = sql.substring(0, sql.lastIndexOf(","));
+        sql +=";";
+        return sql;
+    }
+
+    /**
      * 获取adm交付的数据,默认获取有效数据
      *
      * @param context

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

@@ -9,6 +9,7 @@ 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.DigitalDefineFacade;
+import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.rwd.migrate.entity.SyncData;
 import com.persagy.proxy.adm.request.AdmResponse;
@@ -130,6 +131,74 @@ public class DefineTypeMigration extends MigrationAbstractServiceImpl<ObjectType
     }
 
     /**
+     * 数据迁移
+     *
+     * @param context
+     * @return sql 文件
+     */
+    @Override
+    public String migrateForSql(InstanceUrlParam context) {
+        //获取自定义的类型数据
+        QueryCriteria queryCriteria = getCustomQueryCriteria(context);
+        List<ObjectTypeDefine> admDefineList = getAdmData(context, queryCriteria);
+        if(CollUtil.isEmpty(admDefineList)){
+            return "";
+        }
+        StringBuffer sqls = new StringBuffer(" \n -- 数据迁移  dt_define_type ------ \n");
+        sqls.append(MigrationConstant.DEF_CLASS_SQL_PRE);
+        admDefineList.forEach(typeDefine ->{
+            sqls.append("(");
+            sqls.append("'").append(typeDefine.getCode()).append("',");
+            sqls.append("'").append(typeDefine.getName()).append("',");
+            sqls.append("'").append(typeDefine.getAliasCode()).append("',");
+            sqls.append("'").append(typeDefine.getAliasName()).append("',");
+            sqls.append("'").append(typeDefine.getObjType()).append("',");
+            sqls.append("'").append(typeDefine.getGroupCode()).append("',");
+            sqls.append("'").append(typeDefine.getProjectId()).append("',");
+
+            if (typeDefine.getMajorCode() == null) {
+                sqls.append(typeDefine.getMajorCode()).append(",");
+            } else {
+                sqls.append("'").append(typeDefine.getMajorCode()).append("',");
+            }
+
+            sqls.append("'").append(typeDefine.getSystemCode()).append("',");
+
+            if (typeDefine.getEquipmentCode() == null) {
+                sqls.append(typeDefine.getEquipmentCode()).append(",");
+            } else {
+                sqls.append("'").append(typeDefine.getEquipmentCode()).append("',");
+            }
+
+            sqls.append("'").append(typeDefine.getParentCode()).append("',");
+            sqls.append("'").append(typeDefine.getVersion()).append("',");
+            sqls.append(typeDefine.getSourceFrom()).append(",");
+            sqls.append("'").append(typeDefine.getCreator()).append("',");
+            sqls.append("'").append(typeDefine.getCreationTime()).append("',");
+
+            if (typeDefine.getModifier() == null) {
+                sqls.append(typeDefine.getModifier()).append(",");
+            } else {
+                sqls.append("'").append(typeDefine.getModifier()).append(",");
+            }
+
+            if (typeDefine.getModifiedTime() == null) {
+                sqls.append(typeDefine.getModifiedTime()).append(",");
+            } else {
+                sqls.append("'").append(typeDefine.getModifiedTime()).append("',");
+            }
+
+            sqls.append(typeDefine.getValid()).append(",");
+            sqls.append(typeDefine.getTs());
+            sqls.append("),");
+        });
+        String sql = sqls.toString();
+        sql = sql.substring(0, sql.lastIndexOf(","));
+        sql +=";";
+        return sql;
+    }
+
+    /**
      * 获取adm交付的数据,默认获取有效数据
      *
      * @param context

+ 85 - 7
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/ObjectDigitalMigration.java

@@ -8,6 +8,9 @@ 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.AuditableEntity;
+import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.rwd.migrate.entity.SyncData;
@@ -90,6 +93,88 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
         return AdmResponse.success();
     }
 
+    /**
+     * 数据迁移
+     *
+     * @param context
+     * @return sql 文件
+     */
+    @Override
+    public String migrateForSql(InstanceUrlParam context) {
+        StringBuffer sqls = new StringBuffer(" \n -- 数据迁移  dt_object ------ \n");
+        //获取已经采集的数据
+        StringBuffer sqls_temp = new StringBuffer();
+        for(MigrationObjType objType : MigrationObjType.values()){
+            QueryCriteria queryCriteria = getQueryCriteria(objType.getCode());
+            List<ObjectNode> admData = getAdmData(context,queryCriteria);
+            if(CollUtil.isEmpty(admData)){
+                continue;
+            }
+            appendValues(admData, sqls_temp);
+        }
+        if(sqls_temp.length() == 0){
+            return "";
+        }
+        sqls.append(MigrationConstant.DT_OBJECT_SQL_PRE);
+        sqls.append(sqls_temp);
+        String sql = sqls.toString();
+        sql = sql.substring(0, sql.lastIndexOf(","));
+        sql += ";";
+        return sql;
+    }
+
+    private StringBuffer appendValues(List<ObjectNode> admData, StringBuffer sqls){
+        admData.forEach(obj -> {
+            ObjectDigital objectDigital = JsonNodeUtils.toEntity(obj, ObjectDigital.class, "infos");
+            sqls.append("(");
+            sqls.append("'").append(objectDigital.getId()).append("',");
+            if (objectDigital.getName() == null) {
+                sqls.append(objectDigital.getName()).append(",");
+            } else {
+                sqls.append("'").append(objectDigital.getName()).append("',");
+            }
+
+            if (objectDigital.getLocalId() == null) {
+                sqls.append(objectDigital.getLocalId()).append(",");
+            } else {
+                sqls.append("'").append(objectDigital.getLocalId()).append("',");
+            }
+            if (objectDigital.getLocalName() == null) {
+                sqls.append(objectDigital.getLocalName()).append(",");
+            } else {
+                sqls.append("'").append(objectDigital.getLocalName()).append("',");
+            }
+            sqls.append("'").append(objectDigital.getGroupCode()).append("',");
+            sqls.append("'").append(objectDigital.getProjectId()).append("',");
+            sqls.append("'").append(objectDigital.getObjType()).append("',");
+            sqls.append("'").append(objectDigital.getClassCode()).append("',");
+            sqls.append("'").append(objectDigital.getGrouping()).append("',");
+            sqls.append("'").append(objectDigital.getInfos()).append("',");
+            if (objectDigital.getVirtualCodes() == null) {
+                sqls.append(objectDigital.getVirtualCodes()).append(",");
+            } else {
+                sqls.append("'").append(objectDigital.getVirtualCodes()).append("',");
+            }
+            if (objectDigital.getCreateApp() == null) {
+                sqls.append(objectDigital.getCreateApp()).append(",");
+            } else {
+                sqls.append("'").append(objectDigital.getCreateApp()).append("',");
+            }
+            if (objectDigital.getUpdateApp() == null) {
+                sqls.append(objectDigital.getUpdateApp()).append(",");
+            } else {
+                sqls.append("'").append(objectDigital.getUpdateApp()).append("',");
+            }
+            sqls.append("'").append(objectDigital.getCreator()).append("',");
+            sqls.append("'").append(objectDigital.getCreationTime()).append("',");
+            sqls.append("'").append(objectDigital.getModifier()).append("',");
+            sqls.append("'").append(objectDigital.getModifiedTime()).append("',");
+            sqls.append(objectDigital.getValid()).append(",");
+            sqls.append(objectDigital.getTs());
+            sqls.append("),");
+        });
+        return sqls;
+    }
     private QueryCriteria getQueryCriteria(String typeCode){
         QueryCriteria queryCriteria = new QueryCriteria();
         queryCriteria.setSize(-1L);
@@ -189,9 +274,7 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
             return Collections.emptyList();
         }
 
-        //String insertUrl = requestUrl(context, migrationInfo, MigrationType.INSERT.getCode());
         if(CollUtil.isEmpty(objectNodeList)){
-            //DataMigrationResponse dataMigrationResponse = insertBatch(admData, ObjectDigital.class, insertUrl);
             dataMigrationExcels.addAll(processDataForExcel(admData, MigrationType.CREATE.getCode()));
             return dataMigrationExcels;
         }
@@ -201,7 +284,6 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
         Map<String,Object> doSubtractFromInsert = doSubtractAdd(admMap, projectMap);
         if(!CollUtil.isEmpty(doSubtractFromInsert)){
             List<ObjectNode> insertData = toList(doSubtractFromInsert, admData);
-            //DataMigrationResponse dataMigrationResponse = insertBatch(insertData, ObjectDigital.class, insertUrl);
             dataMigrationExcels.addAll(processDataForExcel(insertData, MigrationType.CREATE.getCode()));
         }
 
@@ -211,8 +293,6 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
             List<String> deleteIds = doSubtractFromDelete.entrySet().stream().map(en -> en.getKey()).collect(Collectors.toList());
 
             List<ObjectNode> deleteData = toListByIds(deleteIds, objectNodeList);
-            //String delUrl = requestUrl(context, migrationInfo, MigrationType.DELETE.getCode());
-            //DataMigrationResponse dataMigrationResponse = deleteBatch(deleteIds, ObjectDigital.class, delUrl);
             dataMigrationExcels.addAll(processDataForExcel(deleteData, MigrationType.DELETE.getCode()));
         }
 
@@ -224,8 +304,6 @@ public class ObjectDigitalMigration extends MigrationAbstractServiceImpl<ObjectD
             Map<String, Object> compareData = compareData(intersectionUpdateFrom, intersectionUpdateTo);
             if(CollUtil.isNotEmpty(compareData) && compareData.size() > 0){
                 List<ObjectNode> updateData = toList(compareData, admData);
-                //String updateUrl = requestUrl(context, migrationInfo, MigrationType.UPDATE.getCode());
-                //DataMigrationResponse dataMigrationResponse = updateBatch(updateData, ObjectDigital.class, updateUrl);
                 dataMigrationExcels.addAll(processDataForExcel(updateData, MigrationType.UPDATE.getCode()));
             }
         }

+ 68 - 4
adm-business/adm-middleware/src/main/java/com/persagy/proxy/migration/service/Impl/ObjectRelationMigration.java

@@ -8,21 +8,20 @@ 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.AuditableEntity;
 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.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.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;
@@ -136,6 +135,71 @@ public class ObjectRelationMigration extends MigrationAbstractServiceImpl<Object
         return AdmResponse.success();
     }
 
+    /**
+     * 数据迁移
+     *
+     * @param context
+     * @return sql 文件
+     */
+    @Override
+    public String migrateForSql(InstanceUrlParam context) {
+        StringBuffer sqls = new StringBuffer(" \n -- 数据迁移  dt_relation ------ \n");
+        //获取已经采集的数据
+        StringBuffer sqls_temp = new StringBuffer();
+        for (MiGrationRelCode miGrationRelCode: MiGrationRelCode.values()){
+            QueryCriteria queryCriteria = getQueryCriteria(miGrationRelCode.getCode());
+            List<ObjectRelation> admData = getAdmData(context,queryCriteria);
+            if(CollUtil.isEmpty(admData)){
+                continue;
+            }
+            appendValues(admData, sqls_temp);
+        }
+        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 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("',");
+            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("',");
+            }
+            sqls.append("'").append(relation.getObjFrom()).append("',");
+            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()).append(",");
+            sqls.append("'").append(relation.getTs()).append("'");
+            sqls.append("),");
+        });
+        return sqls;
+    }
     private ExecutorService getExcecutor(){
         ExecutorService service = new ThreadPoolExecutor(10, 15, 0L, TimeUnit.MILLISECONDS,
                 new LinkedBlockingQueue(), new ThreadFactory() {