Commit 7baf72d6 by zhangkb

添加标签分析接口

parent a13be4fc
package com.keymobile.tagmanager.api;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -240,6 +241,13 @@ public class TagCtrl {
tagService.shareTags(tagIds,tagOpenStatus);
}
//author:zhangkb time:2020-1-16 desc:标签分析接口
@ApiOperation(value = "标签分析(dataType:0,1,2 依次代表:元数据,模型,标准)", notes = "标签分析(dataType:0,1,2 依次代表:元数据,模型,标准)")
@PostMapping(value = "/tagAnalysis")
public Map<String,Object> tagAnalysis(@RequestParam String dataType) throws Exception{
return tagService.tagAnalysis(dataType);
}
//---------------以下为导入系统的时候用到------------------
......
......@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -24,4 +25,8 @@ public interface RepoServiceClient {
@PostMapping(value = "/rest/tag/addTag")
public int addTag(@RequestParam List<String> metadataIds, @RequestParam String idPath,
@RequestParam String tagType,@RequestParam String dimensionType);
@GetMapping(value = "/rest/tag/aggregate")
public List<Map<String,Object>> aggregate(@RequestParam(required = false) String modelPath,
@RequestParam String attributeName);
}
package com.keymobile.tagmanager.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -29,6 +31,7 @@ import com.keymobile.tagmanager.model.Tag;
import com.keymobile.tagmanager.model.authService.Org;
import com.keymobile.tagmanager.persistence.TagRepository;
import com.keymobile.tagmanager.remote.AuthServiceClient;
import com.keymobile.tagmanager.remote.RepoServiceClient;
import com.keymobile.tagmanager.util.Constants;
import com.keymobile.tagmanager.util.JsonTreeHelper;
import com.keymobile.tagmanager.util.JsonTreeHelper.JsonNode;
......@@ -42,6 +45,8 @@ public class TagService {
private TagRepository tagRepository;
@Autowired
private AuthServiceClient authService;
@Autowired
private RepoServiceClient repoService;
private Logger logger = LoggerFactory.getLogger(TagService.class);
......@@ -325,6 +330,95 @@ public class TagService {
tagRepository.saveAll(tags);
}
//标签分析
public Map<String,Object> tagAnalysis(String dataType) throws Exception{
Map<String,Object> result = new HashMap<>();
String modelPath = null;
//定义存储系统和个人标签分析的list<Map>
List<Map<String,Object>> sysTagList = new ArrayList<>();
List<Map<String,Object>> perTagList = new ArrayList<>();
//根据类型获取模型路径
switch(dataType) {
case "0":
break;
case "1":
modelPath = "Catalog,DataModelCatalog,DataModel";
break;
case "2":
modelPath = "Catalog,StandardCatalog,DataStandard";
break;
default:
break;
}
//获取系统和维度标签统计
List<Map<String,Object>> tags = repoService.aggregate(modelPath,"tagList");
//获取个人标签统计
List<Map<String,Object>> personalTags = repoService.aggregate(modelPath,"personalTagList");
//分类系统和维度
if(!tags.isEmpty()) {
for(Map<String,Object> map : tags) {
Map<String,Object> tagMap = new HashMap<>();
//获取标签id
String tagId = map.get("_id").toString();
//根据标签id获取标签
Tag tag = this.getTagById(tagId);
if(tag!=null) {
tagMap.put("total",map.get("total"));
tagMap.put("name", tag.getName());
tagMap.put("EnName", tag.getNameEn());
//如果是系统标签
if("0".equals(tag.getTagType())) {
sysTagList.add(tagMap);
}else {
perTagList.add(tagMap);
}
}
}
}
//分类个人标签
if(!personalTags.isEmpty()) {
for(Map<String,Object> map : personalTags) {
Map<String,Object> tagMap = new HashMap<>();
//获取标签id
String tagId = map.get("_id").toString();
//根据标签id获取标签
Tag tag = this.getTagById(tagId);
if(tag!=null) {
tagMap.put("total",map.get("total"));
tagMap.put("name", tag.getName());
tagMap.put("EnName", tag.getNameEn());
perTagList.add(tagMap);
}
}
}
//排序系统标签(降序)
if(!sysTagList.isEmpty()) {
Collections.sort(sysTagList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
String total1 = o1.get("total").toString();
String total2 = o2.get("total").toString();
return total1.compareTo(total2);
}
});
}
//排序个人标签(降序)
if(!perTagList.isEmpty()) {
Collections.sort(perTagList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
String total1 = o1.get("total").toString();
String total2 = o2.get("total").toString();
return total1.compareTo(total2);
}
});
}
//装填结果
result.put("sysTag", sysTagList);
result.put("personalTag", perTagList);
return result;
}
//如果标签存在冲突,修改当前标签名字和路径
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment