8 changed files with 121 additions and 19 deletions
@ -0,0 +1,15 @@ |
|||||
|
package com.guozhi.bloodanalysis.mapper; |
||||
|
|
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
@Mapper |
||||
|
public interface TableAndColumnsMapper { |
||||
|
|
||||
|
List<Map<String,Object>> getColumns(@Param("ssysId") int ssysId, @Param("mdlName") String mdlName, @Param("tableName") String tableName); |
||||
|
|
||||
|
String getTableNameByTable(@Param("ssysId") int ssysId, @Param("mdlName") String mdlName, @Param("tableName") String tableName); |
||||
|
} |
||||
@ -0,0 +1,54 @@ |
|||||
|
package com.guozhi.bloodanalysis.service; |
||||
|
|
||||
|
import com.guozhi.bloodanalysis.mapper.TableAndColumnsMapper; |
||||
|
import io.swagger.models.auth.In; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.*; |
||||
|
|
||||
|
@Service |
||||
|
public class TableService { |
||||
|
|
||||
|
@Autowired |
||||
|
TableAndColumnsMapper tableAndColumnsMapper; |
||||
|
|
||||
|
public Map<String, Object> getTableAndColumn(List<Map<String, Object>> relations) { |
||||
|
List<Map<String,Object>> tables = new ArrayList<>(); |
||||
|
Set<String> uniqueKeys = new HashSet<>(); |
||||
|
if (relations != null && relations.size()>0){ |
||||
|
for (Map<String, Object> relation : relations) { |
||||
|
Map<String, Object> sourceTable = new HashMap<>(); |
||||
|
sourceTable.put("ssys_id", relation.get("sourceSysId")); |
||||
|
sourceTable.put("mdl_name", relation.get("sourceMdlName")); |
||||
|
sourceTable.put("tab_eng_name", relation.get("sourceTableName")); |
||||
|
String sourceUniqueKey = (int)relation.get("sourceSysId") + '-' + (String)relation.get("sourceMdlName") + '-' + relation.get("sourceTableName"); |
||||
|
if (!uniqueKeys.contains(sourceUniqueKey)) { |
||||
|
uniqueKeys.add(sourceUniqueKey); |
||||
|
tables.add(sourceTable); |
||||
|
} |
||||
|
Map<String, Object> targetTable = new HashMap<>(); |
||||
|
targetTable.put("ssys_id", relation.get("targetSysId")); |
||||
|
targetTable.put("mdl_name", relation.get("targetMdlName")); |
||||
|
targetTable.put("tab_eng_name", relation.get("targetTableName")); |
||||
|
String targetUniqueKey = (int)relation.get("targetSysId") + '-' + (String)relation.get("targetMdlName") + '-' + relation.get("targetTableName"); |
||||
|
if (!uniqueKeys.contains(targetUniqueKey)) { |
||||
|
uniqueKeys.add(targetUniqueKey); |
||||
|
tables.add(targetTable); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if (tables.size()>0){ |
||||
|
for (Map<String, Object> table : tables) { |
||||
|
String tableName = tableAndColumnsMapper.getTableNameByTable((int)table.get("ssys_id"),(String)table.get("mdl_name"),(String)table.get("tab_eng_name")); |
||||
|
table.put("tab_cn_name",tableName); |
||||
|
List<Map<String,Object>> columns = tableAndColumnsMapper.getColumns((int)table.get("ssys_id"),(String)table.get("mdl_name"),(String)table.get("tab_eng_name")); |
||||
|
table.put("column",columns); |
||||
|
} |
||||
|
} |
||||
|
Map<String,Object> map = new HashMap<>(); |
||||
|
map.put("relation",relations); |
||||
|
map.put("tableList",tables); |
||||
|
return map; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,27 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.guozhi.bloodanalysis.mapper.TableAndColumnsMapper"> |
||||
|
<select id="getColumns" resultType="java.util.Map"> |
||||
|
select a.onum as onum, |
||||
|
a.ssys_id as ssysId, |
||||
|
a.mdl_name as mdlName, |
||||
|
a.tab_eng_name as tabEngName, |
||||
|
a.fld_eng_name as fldEngName, |
||||
|
COALESCE(a.fld_cn_name, b.fld_crrct_name) AS fldCnName, |
||||
|
a.fld_type as fldType, |
||||
|
a.pk_flag as pkFlag, |
||||
|
a.fld_no as fldNo |
||||
|
from t_metadata_fld_tab_extract_info a |
||||
|
left join t_metadata_fld_supp_info b |
||||
|
on a.ssys_id = b.ssys_id and a.mdl_name = b.mdl_name and a.tab_eng_name = b.tab_eng_name and a.fld_eng_name = b.fld_eng_name |
||||
|
where a.ssys_id = #{ssysId} and a.mdl_name = #{mdlName} and a.tab_eng_name = #{tableName} |
||||
|
order by a.fld_no |
||||
|
</select> |
||||
|
<select id="getTableNameByTable" resultType="java.lang.String"> |
||||
|
select COALESCE(a.tab_cn_name, b.tab_crrct_name) AS tabCnName |
||||
|
from t_metadata_extract_info a |
||||
|
left join t_metadata_supp_info b |
||||
|
on a.ssys_id = b.ssys_id and a.mdl_name = b.mdl_name and a.tab_eng_name = b.tab_eng_name |
||||
|
where a.ssys_id = #{ssysId} and a.mdl_name = #{mdlName} and a.tab_eng_name = #{tableName} |
||||
|
</select> |
||||
|
</mapper> |
||||
Loading…
Reference in new issue