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