|
@ -15,6 +15,7 @@ import com.yihu.jw.mysql.sqlparser.ParserSql;
|
|
|
import com.yihu.jw.profile.core.ResourceCore;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.PageEnvelop;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
@ -801,6 +802,156 @@ public class ResourceBrowseDao {
|
|
|
return new PageImpl<>(list, PageRequest.of(page - 1, size), count);
|
|
|
}
|
|
|
|
|
|
//参数处理
|
|
|
public String transforParam(String paramSql,String tableSql){
|
|
|
if(StringUtils.isBlank(paramSql)){
|
|
|
return tableSql;
|
|
|
}
|
|
|
String params[] = paramSql.split(",");
|
|
|
for (int i=0;i<params.length;i++){
|
|
|
String param = params[i];
|
|
|
String key = "";
|
|
|
String str[] = param.split("-");
|
|
|
if(str.length>1){
|
|
|
key = str[1];
|
|
|
}else {
|
|
|
key = str[0];
|
|
|
}
|
|
|
tableSql = tableSql.replaceAll(param,getDefaultValue(key));
|
|
|
}
|
|
|
return tableSql;
|
|
|
}
|
|
|
|
|
|
//获取默认值
|
|
|
public String getDefaultValue(String key){
|
|
|
if(StringUtils.isBlank(key)){
|
|
|
return "";
|
|
|
}
|
|
|
String result = "";
|
|
|
switch (key){
|
|
|
case "dateTimeStart":
|
|
|
result = "2023-06-26 00:00:00";
|
|
|
break;
|
|
|
case "dateTimeEnd":
|
|
|
result = DateUtil.getStringDateShort() +" 23:59:59";
|
|
|
break;
|
|
|
case "dateTimeStartShort":
|
|
|
result = "2023-06-26 00:00:00".replaceAll("-","");
|
|
|
break;
|
|
|
case "dateTimeEndShort":
|
|
|
result = DateUtil.getStringDate().replaceAll("-","");
|
|
|
break;
|
|
|
case "dateStart":
|
|
|
result = "2023-06-26";
|
|
|
break;
|
|
|
case "dateEnd":
|
|
|
result = DateUtil.getStringDateShort();
|
|
|
break;
|
|
|
case "dateStartShort":
|
|
|
result = "2023-06-26".replaceAll("-","");
|
|
|
break;
|
|
|
case "dateEndShort":
|
|
|
result = DateUtil.getStringDateShort().replaceAll("-","");
|
|
|
break;
|
|
|
case "year_months":
|
|
|
result = DateUtil.dateToStr(new Date(),DateUtil.YYYY_MM);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取Mysql配置库 指标统计数据
|
|
|
* getMysqlStatistics
|
|
|
* @param resourcesCode
|
|
|
* @param page
|
|
|
* @param size
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public Page<Map<String, Object>> getMysqlStatistics(String resourcesCode, Integer page, Integer size) throws Exception {
|
|
|
String sql ="";
|
|
|
String sortOrder = "";
|
|
|
String sortOrderSql = "";
|
|
|
String tableSql = "";
|
|
|
String paramSql = "";//入参
|
|
|
//通过资源代码获取默认参数
|
|
|
List<RsResourceDefaultParam> paramsList = resourceDefaultParamDao.findByResourcesCode(resourcesCode);
|
|
|
for (RsResourceDefaultParam param : paramsList) {
|
|
|
if (param.getParamKey().equals("sort")) {
|
|
|
Map<String, String> temp = objectMapper.readValue(param.getParamValue(), Map.class);
|
|
|
for (Map.Entry<String, String> entry:temp.entrySet()){
|
|
|
String key = entry.getKey();
|
|
|
String value = entry.getValue();
|
|
|
sortOrder ="T."+key+" "+ value+",";
|
|
|
}
|
|
|
}else if (param.getParamKey().equals("table")){
|
|
|
tableSql = "("+param.getParamValue()+") T ";
|
|
|
}else if (param.getParamKey().equals("param")){
|
|
|
paramSql = param.getParamValue();
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(sortOrder)){
|
|
|
sortOrderSql +=" order by "+sortOrder.substring(0,sortOrder.length()-1);
|
|
|
}
|
|
|
tableSql = transforParam(paramSql,tableSql);
|
|
|
//判定是否完整sql语句
|
|
|
sql = "select T.* from " + tableSql +sortOrderSql;
|
|
|
//查询总条数
|
|
|
ParserSql parser = ParserFactory.getParserSql();
|
|
|
String sqlCount = parser.getCountSql(sql);
|
|
|
long count = jdbcTemplate.queryForObject(sqlCount, Long.class);
|
|
|
//默认第一页
|
|
|
if (page == null) {
|
|
|
page = defaultPage;
|
|
|
}
|
|
|
//默认行数
|
|
|
if (size == null) {
|
|
|
size = defaultSize;
|
|
|
}
|
|
|
//分页查询
|
|
|
List<Map<String, Object>> list;
|
|
|
if (count > size) {
|
|
|
String sqlList = parser.getPageSql(sql, page, size);
|
|
|
list = jdbcTemplate.queryForList(sqlList);
|
|
|
} else {
|
|
|
list = jdbcTemplate.queryForList(sql);
|
|
|
}
|
|
|
if(list.size()>0){
|
|
|
//字典翻译
|
|
|
List<DtoResourceMetadata> resourceMetadataList = resourceBrowseMetadataDao.getResourceMetadataHasDict(resourcesCode);
|
|
|
if(resourceMetadataList.size()>0){
|
|
|
Map<String,String> fieldDictMap = resourceMetadataList.stream().collect(Collectors.toMap(DtoResourceMetadata::getStdCode,DtoResourceMetadata::getDictCode));
|
|
|
Map<String,Map<String,String>> dictMap = new HashMap<>();
|
|
|
String dictSql = "select * from rs_dictionary_entry where DICT_CODE = ?";
|
|
|
for (DtoResourceMetadata metadata:resourceMetadataList){
|
|
|
String dictCode = metadata.getDictCode();
|
|
|
if(!dictMap.containsKey(dictCode)){
|
|
|
List<RsDictionaryEntry> dictionaryEntries = jdbcTemplate.query(dictSql,new Object[]{dictCode},new BeanPropertyRowMapper<>(RsDictionaryEntry.class));
|
|
|
Map<String,String> tmpMap = dictionaryEntries.stream().collect(Collectors.toMap(RsDictionaryEntry::getCode,RsDictionaryEntry::getName));
|
|
|
dictMap.put(dictCode,tmpMap);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (Map<String, Object> map:list){
|
|
|
for (Map.Entry<String, String> entry : fieldDictMap.entrySet()) {
|
|
|
String key = entry.getKey();
|
|
|
String value = entry.getValue();
|
|
|
if(map.get(key)!=null){
|
|
|
String dictValue = dictMap.get(value).get(map.get(key));
|
|
|
map.put(key,dictValue);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return new PageImpl<>(list, PageRequest.of(page - 1, size), count);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取Mysql配置库数据
|