feat: 新增资产展示功能
资产展示功能,会展示选中数据资产表的表信息,以及表资产信息(数据默认只展示表中第一条数据),表中没有数据,则展示的数据值为nullmaster
parent
cf644531f8
commit
a098a62a6b
|
@ -1,11 +1,21 @@
|
||||||
package com.muyu.etl.domain;
|
package com.muyu.etl.domain;
|
||||||
|
|
||||||
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
import com.muyu.common.core.annotation.Excel;
|
import com.muyu.common.core.annotation.Excel;
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 【请填写功能名称】对象 asset_model
|
* 【请填写功能名称】对象 asset_model
|
||||||
|
@ -13,6 +23,11 @@ import java.util.List;
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2024-04-22
|
* @date 2024-04-22
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@SuperBuilder
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
public class AssetModel extends BaseEntity
|
public class AssetModel extends BaseEntity
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
@ -86,149 +101,4 @@ public class AssetModel extends BaseEntity
|
||||||
public List<DictionaryData> getDictionaryDatas() {
|
public List<DictionaryData> getDictionaryDatas() {
|
||||||
return dictionaryDatas;
|
return dictionaryDatas;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDictionaryDatas(List<DictionaryData> dictionaryDatas) {
|
|
||||||
this.dictionaryDatas = dictionaryDatas;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id)
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDefaultValue() {
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDefaultValue(String defaultValue) {
|
|
||||||
this.defaultValue = defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId()
|
|
||||||
{
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setDataAssetId(Long dataAssetId)
|
|
||||||
{
|
|
||||||
this.dataAssetId = dataAssetId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getDataAssetId()
|
|
||||||
{
|
|
||||||
return dataAssetId;
|
|
||||||
}
|
|
||||||
public void setName(String name)
|
|
||||||
{
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setComment(String comment)
|
|
||||||
{
|
|
||||||
this.comment = comment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getComment()
|
|
||||||
{
|
|
||||||
return comment;
|
|
||||||
}
|
|
||||||
public void setIsPrimaryKey(String isPrimaryKey)
|
|
||||||
{
|
|
||||||
this.isPrimaryKey = isPrimaryKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIsPrimaryKey()
|
|
||||||
{
|
|
||||||
return isPrimaryKey;
|
|
||||||
}
|
|
||||||
public void setType(String type)
|
|
||||||
{
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getType()
|
|
||||||
{
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
public void setMappingType(String mappingType)
|
|
||||||
{
|
|
||||||
this.mappingType = mappingType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMappingType()
|
|
||||||
{
|
|
||||||
return mappingType;
|
|
||||||
}
|
|
||||||
public void setLength(String length)
|
|
||||||
{
|
|
||||||
this.length = length;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLength()
|
|
||||||
{
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
public void setDecimalPlaces(String decimalPlaces)
|
|
||||||
{
|
|
||||||
this.decimalPlaces = decimalPlaces;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDecimalPlaces()
|
|
||||||
{
|
|
||||||
return decimalPlaces;
|
|
||||||
}
|
|
||||||
public void setIsNull(String isNull)
|
|
||||||
{
|
|
||||||
this.isNull = isNull;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIsNull()
|
|
||||||
{
|
|
||||||
return isNull;
|
|
||||||
}
|
|
||||||
public void setIsDict(String isDict)
|
|
||||||
{
|
|
||||||
this.isDict = isDict;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIsDict()
|
|
||||||
{
|
|
||||||
return isDict;
|
|
||||||
}
|
|
||||||
public void setDictKey(String dictKey)
|
|
||||||
{
|
|
||||||
this.dictKey = dictKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDictKey()
|
|
||||||
{
|
|
||||||
return dictKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
|
||||||
.append("id", getId())
|
|
||||||
.append("dataAssetId", getDataAssetId())
|
|
||||||
.append("name", getName())
|
|
||||||
.append("comment", getComment())
|
|
||||||
.append("isPrimaryKey", getIsPrimaryKey())
|
|
||||||
.append("type", getType())
|
|
||||||
.append("mappingType", getMappingType())
|
|
||||||
.append("length", getLength())
|
|
||||||
.append("decimalPlaces", getDecimalPlaces())
|
|
||||||
.append("isNull", getIsNull())
|
|
||||||
.append("isDict", getIsDict())
|
|
||||||
.append("defaultValue", getDefaultValue())
|
|
||||||
.append("dictKey", getDictKey())
|
|
||||||
.append("createBy", getCreateBy())
|
|
||||||
.append("createTime", getCreateTime())
|
|
||||||
.append("updateBy", getUpdateBy())
|
|
||||||
.append("updateTime", getUpdateTime())
|
|
||||||
.append("remark", getRemark())
|
|
||||||
.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,29 @@
|
||||||
package com.muyu.etl.domain;
|
package com.muyu.etl.domain;
|
||||||
|
|
||||||
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
import com.muyu.common.core.annotation.Excel;
|
import com.muyu.common.core.annotation.Excel;
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 【请填写功能名称】对象 data_asset
|
* 【请填写功能名称】对象 data_asset
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2024-04-22
|
* @date 2024-04-22
|
||||||
*/
|
*/
|
||||||
|
@SuperBuilder
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
public class DataAsset extends BaseEntity
|
public class DataAsset extends BaseEntity
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
@ -109,4 +122,21 @@ public class DataAsset extends BaseEntity
|
||||||
.append("remark", getRemark())
|
.append("remark", getRemark())
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DataAsset dataAssetBuilder(DataSource dataSource, ResultSet resultSet) {
|
||||||
|
try {
|
||||||
|
return DataAsset.builder()
|
||||||
|
.tableName(resultSet.getString("t_name"))
|
||||||
|
.tableComment(resultSet.getString("table_comment") == null ? "-":resultSet.getString("table_comment"))
|
||||||
|
.tableCount(Long.valueOf(resultSet.getString("table_rows")))
|
||||||
|
.fields(Long.valueOf(resultSet.getString("fields")))
|
||||||
|
.dataSourceId(dataSource.getId())
|
||||||
|
.createBy(SecurityUtils.getUsername())
|
||||||
|
.createTime(new Date())
|
||||||
|
.build();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.muyu.etl.domain.custom;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -15,6 +16,7 @@ import java.util.Map;
|
||||||
* @Date 2024/4/21 9:54
|
* @Date 2024/4/21 9:54
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class AssetsModule {
|
public class AssetsModule {
|
||||||
|
@ -23,4 +25,11 @@ public class AssetsModule {
|
||||||
|
|
||||||
private List<TableAssets> tableAssets;
|
private List<TableAssets> tableAssets;
|
||||||
private TableDetail tableDetail;
|
private TableDetail tableDetail;
|
||||||
|
|
||||||
|
public AssetsModule assetsModuleBuilder(List<Map<String, VTClass>> kvtList, HashMap<String, String> map) {
|
||||||
|
return AssetsModule.builder()
|
||||||
|
.kvtList(kvtList)
|
||||||
|
.structure(map)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,6 +224,7 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
List<Map<String, VTClass>> kvtList = new ArrayList<>();
|
List<Map<String, VTClass>> kvtList = new ArrayList<>();
|
||||||
HashMap<String, String> map = new HashMap<>();
|
HashMap<String, String> map = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
|
//进行jdbc驱动
|
||||||
Class.forName(dataSource.getJdbcDriver());
|
Class.forName(dataSource.getJdbcDriver());
|
||||||
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
|
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
|
||||||
} catch (SQLException | ClassNotFoundException e) {
|
} catch (SQLException | ClassNotFoundException e) {
|
||||||
|
@ -233,9 +234,10 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
PreparedStatement pst = conn.prepareStatement(dataSource.getSql());
|
PreparedStatement pst = conn.prepareStatement(dataSource.getSql());
|
||||||
ResultSet resultSet = pst.executeQuery();
|
ResultSet resultSet = pst.executeQuery();
|
||||||
ResultSetMetaData rsd = resultSet.getMetaData();
|
ResultSetMetaData rsd = resultSet.getMetaData();
|
||||||
|
//循环查询到的每一列信息
|
||||||
for(int i = 1; i <= rsd.getColumnCount(); i++) {
|
for(int i = 1; i <= rsd.getColumnCount(); i++) {
|
||||||
String substring = rsd.getColumnClassName(i).substring(rsd.getColumnClassName(i).indexOf("java.lang.") + 10);
|
String[] split = rsd.getColumnClassName(i).split("\\.");
|
||||||
map.put(rsd.getColumnName(i),substring);
|
map.put(rsd.getColumnName(i),split[split.length-1]);
|
||||||
}
|
}
|
||||||
int columnCount = rsd.getColumnCount();
|
int columnCount = rsd.getColumnCount();
|
||||||
// 遍历每一行的数据
|
// 遍历每一行的数据
|
||||||
|
@ -255,13 +257,13 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
kvtList.add(stringVTClassHashMap);
|
kvtList.add(stringVTClassHashMap);
|
||||||
}
|
}
|
||||||
pst.close();
|
pst.close();
|
||||||
|
conn.close();
|
||||||
|
pst = null;
|
||||||
|
conn = null;
|
||||||
} catch(SQLException e) {
|
} catch(SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
AssetsModule assetsModule = new AssetsModule();
|
return new AssetsModule().assetsModuleBuilder(kvtList,map);
|
||||||
assetsModule.setKvtList(kvtList);
|
|
||||||
assetsModule.setStructure(map);
|
|
||||||
return assetsModule;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String,String> getTypeMap(DataSource dataSource, String tableName){
|
public Map<String,String> getTypeMap(DataSource dataSource, String tableName){
|
||||||
|
@ -276,9 +278,8 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
Map<String, String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
Class.forName(dataSource.getJdbcDriver());
|
|
||||||
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
|
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
|
||||||
} catch (SQLException | ClassNotFoundException e) {
|
} catch (SQLException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
@ -294,7 +295,6 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
}else{
|
}else{
|
||||||
substring = rsd.getColumnClassName(i);
|
substring = rsd.getColumnClassName(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
map.put(rsd.getColumnName(i),substring);
|
map.put(rsd.getColumnName(i),substring);
|
||||||
}
|
}
|
||||||
pst.close();
|
pst.close();
|
||||||
|
@ -315,9 +315,8 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
long endTime = new Date().getTime();
|
long endTime = new Date().getTime();
|
||||||
log.info("查询表字段类型信息耗时:"+(endTime-staTime)+"ms");
|
log.info("查询表字段类型信息耗时:"+(endTime-staTime)+"ms");
|
||||||
try {
|
try {
|
||||||
Class.forName(dataSource.getJdbcDriver());
|
|
||||||
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
|
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
|
||||||
} catch (SQLException | ClassNotFoundException e) {
|
} catch (SQLException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
@ -329,40 +328,22 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
primaryKeyColumnName = primaryKeyRS.getString("COLUMN_NAME");
|
primaryKeyColumnName = primaryKeyRS.getString("COLUMN_NAME");
|
||||||
}
|
}
|
||||||
while (columnsRS.next()) {
|
while (columnsRS.next()) {
|
||||||
AssetModel assetModel = new AssetModel();
|
AssetModel build = AssetModel.builder()
|
||||||
String columnName = columnsRS.getString("COLUMN_NAME");
|
.createBy(SecurityUtils.getUsername())
|
||||||
String typeName = columnsRS.getString("TYPE_NAME");
|
.createTime(new Date())
|
||||||
int columnSize = columnsRS.getInt("COLUMN_SIZE");
|
.length(String.valueOf(columnsRS.getInt("COLUMN_SIZE")))
|
||||||
int decimalDigits = columnsRS.getInt("DECIMAL_DIGITS");
|
.decimalPlaces(String.valueOf(columnsRS.getInt("DECIMAL_DIGITS")))
|
||||||
String isNullable = columnsRS.getString("IS_NULLABLE");
|
.name(columnsRS.getString("COLUMN_NAME"))
|
||||||
String columnDef = columnsRS.getString("COLUMN_DEF");
|
.type(columnsRS.getString("TYPE_NAME"))
|
||||||
String remarks = columnsRS.getString("REMARKS");
|
.mappingType(typeMap.get(columnsRS.getString("COLUMN_NAME")))
|
||||||
assetModel.setCreateTime(new Date());
|
.dictKey("")
|
||||||
assetModel.setCreateBy(SecurityUtils.getUsername());
|
.isDict("")
|
||||||
assetModel.setLength(String.valueOf(columnSize));
|
.isNull(columnsRS.getString("IS_NULLABLE").substring(0, 1))
|
||||||
assetModel.setDecimalPlaces(String.valueOf(decimalDigits));
|
.isPrimaryKey(columnsRS.getString("COLUMN_NAME").equals(primaryKeyColumnName) ? "Y" : "N")
|
||||||
assetModel.setName(columnName);
|
.comment(columnsRS.getString("REMARKS")==null || columnsRS.getString("REMARKS")=="" ? "-" : columnsRS.getString("REMARKS"))
|
||||||
assetModel.setType(typeName);
|
.defaultValue(columnsRS.getString("COLUMN_DEF")==null || columnsRS.getString("COLUMN_DEF")=="" ? "-":columnsRS.getString("COLUMN_DEF"))
|
||||||
assetModel.setMappingType(typeMap.get(columnName));
|
.build();
|
||||||
assetModel.setDictKey("");
|
assetModels.add(build);
|
||||||
assetModel.setIsDict("");
|
|
||||||
assetModel.setIsNull(isNullable.substring(0,1));
|
|
||||||
if (columnName.equals(primaryKeyColumnName)){
|
|
||||||
assetModel.setIsPrimaryKey("Y");
|
|
||||||
}else{
|
|
||||||
assetModel.setIsPrimaryKey("N");
|
|
||||||
}
|
|
||||||
if (remarks==null || remarks==""){
|
|
||||||
assetModel.setComment("-");
|
|
||||||
}else{
|
|
||||||
assetModel.setComment(remarks);
|
|
||||||
}
|
|
||||||
if (columnDef==null || columnDef==""){
|
|
||||||
assetModel.setDefaultValue("-");
|
|
||||||
}else{
|
|
||||||
assetModel.setDefaultValue(columnDef);
|
|
||||||
}
|
|
||||||
assetModels.add(assetModel);
|
|
||||||
}
|
}
|
||||||
columnsRS.close();
|
columnsRS.close();
|
||||||
primaryKeyRS.close();
|
primaryKeyRS.close();
|
||||||
|
@ -459,20 +440,7 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
ResultSet resultSet = ps.executeQuery();
|
ResultSet resultSet = ps.executeQuery();
|
||||||
|
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
DataAsset dataAsset = new DataAsset();
|
dataAssets.add(new DataAsset().dataAssetBuilder(dataSource, resultSet));
|
||||||
// ... (保留原方法中对dataAsset的设置逻辑)
|
|
||||||
dataAsset.setTableName(resultSet.getString("t_name"));
|
|
||||||
if (resultSet.getString("table_comment")==null || "".equals(resultSet.getString("table_comment"))){
|
|
||||||
dataAsset.setTableComment("-");
|
|
||||||
}else{
|
|
||||||
dataAsset.setTableComment(resultSet.getString("table_comment"));
|
|
||||||
}
|
|
||||||
dataAsset.setTableCount(Long.valueOf(resultSet.getString("table_rows")));
|
|
||||||
dataAsset.setFields(Long.valueOf(resultSet.getString("fields")));
|
|
||||||
dataAsset.setDataSourceId(dataSource.getId());
|
|
||||||
dataAsset.setCreateBy(SecurityUtils.getUsername());
|
|
||||||
dataAsset.setCreateTime(new Date());
|
|
||||||
dataAssets.add(dataAsset);
|
|
||||||
}
|
}
|
||||||
return dataAssets;
|
return dataAssets;
|
||||||
});
|
});
|
||||||
|
@ -541,10 +509,10 @@ public class DataSourceServiceImpl implements IDataSourceService
|
||||||
Result<List<Dictionary>> result = dictionaryService.getDictionaryDataList(strings);
|
Result<List<Dictionary>> result = dictionaryService.getDictionaryDataList(strings);
|
||||||
List<Dictionary> data = result.getData();
|
List<Dictionary> data = result.getData();
|
||||||
assetModels.stream()
|
assetModels.stream()
|
||||||
.forEach(assetModel1 -> {
|
.forEach(assetModelInfo -> {
|
||||||
data.stream().forEach(dataInfo -> {
|
data.stream().forEach(dataInfo -> {
|
||||||
if (assetModel1.getDictKey().equals(dataInfo.getDictionaryKey())){
|
if (assetModelInfo.getDictKey().equals(dataInfo.getDictionaryKey())){
|
||||||
assetModel1.setDictionaryDatas(dataInfo.getDictionaryDataList());
|
assetModelInfo.setDictionaryDatas(dataInfo.getDictionaryDataList());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue