Commit 196f32d6 by lanmw

add dimension

parent b89a6ee4
...@@ -59,6 +59,12 @@ public class TagCtrl { ...@@ -59,6 +59,12 @@ public class TagCtrl {
return tagService.querySystemTagAsTree(parentId); return tagService.querySystemTagAsTree(parentId);
} }
@ApiOperation(value = "查询维度标签树", notes = "查询维度标签树")
@GetMapping(value = "/queryDimensionTagAsTree")
public JsonNode[] queryDimensionTagAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException {
return tagService.queryDimensionTagAsTree(parentId);
}
@ApiOperation(value = "查询个人标签树", notes = "查询个人标签树") @ApiOperation(value = "查询个人标签树", notes = "查询个人标签树")
@GetMapping(value = "/queryPersonalTagAsTree") @GetMapping(value = "/queryPersonalTagAsTree")
public JsonNode[] queryPersonalTagAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException { public JsonNode[] queryPersonalTagAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException {
...@@ -66,6 +72,13 @@ public class TagCtrl { ...@@ -66,6 +72,13 @@ public class TagCtrl {
return tagService.queryPersonalTagAsTree(parentId, userName); return tagService.queryPersonalTagAsTree(parentId, userName);
} }
@ApiOperation(value = "查询个人标签树不包括分享的标签", notes = "查询个人标签树不包括分享的标签")
@GetMapping(value = "/queryPersonalTagExcludeOpenTypeAsTree")
public JsonNode[] queryPersonalTagExcludeOpenTypeAsTree(@RequestParam(value = "parentId", required = false) String parentId) throws TagNotExistException {
String userName = UserInfoUtils.getUserName();
return tagService.queryPersonalTagExcludeOpenTypeAsTree(parentId, userName);
}
@ApiOperation(value = "搜索系統标签", notes = "搜索系統标签") @ApiOperation(value = "搜索系統标签", notes = "搜索系統标签")
@GetMapping(value = "/searchSystemTagByPage") @GetMapping(value = "/searchSystemTagByPage")
public Page searchSystemTagByPage(@RequestParam(required = false, value = "keyword") String keyword, public Page searchSystemTagByPage(@RequestParam(required = false, value = "keyword") String keyword,
......
...@@ -29,7 +29,7 @@ public class Tag implements Serializable{ ...@@ -29,7 +29,7 @@ public class Tag implements Serializable{
private String creator; private String creator;
private String isOpen = Constants.TAG_CLOSE_STATUS; //0 不公开, 1, 公开 private String isOpen = Constants.TAG_CLOSE_STATUS; //0 不公开, 1, 公开
private Integer domain; private Integer domain;
private boolean dimension = false;//是否维度标签 private String dimensionType = Constants.TAG_DIMENSION_FALSE;//0 非维度标签, 1 维度标签
public Tag() {} public Tag() {}
...@@ -151,13 +151,12 @@ public class Tag implements Serializable{ ...@@ -151,13 +151,12 @@ public class Tag implements Serializable{
this.domain = domain; this.domain = domain;
} }
public boolean isDimension() { public void setDimensionType(String dimensionType) {
return dimension; this.dimensionType = dimensionType;
} }
public void setDimension(boolean dimension) { public String getDimensionType() {
this.dimension = dimension; return dimensionType;
} }
} }
...@@ -103,11 +103,20 @@ public class TagService { ...@@ -103,11 +103,20 @@ public class TagService {
private Query createPersonalTagQuery(String userName) { private Query createPersonalTagQuery(String userName) {
return Query.query(Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE) return Query.query(Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE)
.orOperator( .orOperator(
Criteria.where("dimensionType").is(Constants.TAG_DIMENSION_TRUE),
Criteria.where("isOpen").is(Constants.TAG_OPEN_STATUS), Criteria.where("isOpen").is(Constants.TAG_OPEN_STATUS),
Criteria.where("creator").is(userName))) Criteria.where("creator").is(userName)))
.with(Sort.by(getDefaultTagOrders())); .with(Sort.by(getDefaultTagOrders()));
} }
private Query createPersonalExcludeOpenTypeTagQuery(String userName) {
return Query.query(Criteria.where("tagType").is(Constants.TAG_PERSONAL_TYPE)
.orOperator(
Criteria.where("dimensionType").is(Constants.TAG_DIMENSION_TRUE),
Criteria.where("creator").is(userName)))
.with(Sort.by(getDefaultTagOrders()));
}
private List<Order> getDefaultTagOrders() { private List<Order> getDefaultTagOrders() {
List<Order> orders = new ArrayList<>(); List<Order> orders = new ArrayList<>();
orders.add(new Order(Direction.ASC, "level")); orders.add(new Order(Direction.ASC, "level"));
...@@ -231,4 +240,61 @@ public class TagService { ...@@ -231,4 +240,61 @@ public class TagService {
tagRepository.saveAll(tags); tagRepository.saveAll(tags);
} }
public JsonNode[] queryDimensionTagAsTree(String parentId) throws TagNotExistException {
List<Tag> tags = new ArrayList<>();
if (StringUtils.isEmpty(parentId)) {
tags = mongoOperations.find(createDimensionTagQuery(), Tag.class);
} else {
Tag parentTag = getTagById(parentId);
tags = getDimensionSubTag(parentTag);
tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
}
List<JsonNode> nodes = new ArrayList<>();
tags.forEach(p -> {
JsonNode node = new JsonNode(p.getPath(), p.getId(), p.getPath());
nodes.add(node);
});
JsonNode root = JsonTreeHelper.toJsonTree(nodes, Constants.TAG_PATH_SEPARATOR);
if (root.children != null)
return root.children;
else
return new JsonNode[] {};
}
private List<Tag> getDimensionSubTag(Tag parentTag) {
List<Tag> dirs = mongoOperations.find(new Query().addCriteria(Criteria.where("path")
.regex("^"+parentTag.getPath() + Constants.TAG_PATH_SEPARATOR)
.and("dimensionType").is(Constants.TAG_DIMENSION_TRUE))
.with(Sort.by(getDefaultTagOrders())), Tag.class);
dirs.add(parentTag);
return dirs;
}
private Query createDimensionTagQuery() {
return Query.query(Criteria.where("tagType").is(Constants.TAG_DIMENSION_TRUE))
.with(Sort.by(getDefaultTagOrders()));
}
public JsonNode[] queryPersonalTagExcludeOpenTypeAsTree(String parentId, String userName) throws TagNotExistException {
List<Tag> tags = new ArrayList<>();
if (StringUtils.isEmpty(parentId)) {
tags = mongoOperations.find(createPersonalExcludeOpenTypeTagQuery(userName), Tag.class);
} else {
Tag parentTag = getTagById(parentId);
tags = getPersonSubTag(parentTag, userName);
tags.forEach(tag -> tag.setPath(tag.getPath().replaceAll(parentTag.getPath(), parentTag.getName())));
}
List<JsonNode> nodes = new ArrayList<>();
tags.forEach(p -> {
JsonNode node = new JsonNode(p.getPath(), p.getId(), p.getPath());
nodes.add(node);
});
JsonNode root = JsonTreeHelper.toJsonTree(nodes, Constants.TAG_PATH_SEPARATOR);
if (root.children != null)
return root.children;
else
return new JsonNode[] {};
}
} }
...@@ -44,6 +44,8 @@ public final class Constants { ...@@ -44,6 +44,8 @@ public final class Constants {
public static final String TAG_PATH_SEPARATOR = ","; public static final String TAG_PATH_SEPARATOR = ",";
public static final String TAG_OPEN_STATUS = "1"; public static final String TAG_OPEN_STATUS = "1";
public static final String TAG_CLOSE_STATUS = "0"; public static final String TAG_CLOSE_STATUS = "0";
public static final String TAG_DIMENSION_TRUE = "1";
public static final String TAG_DIMENSION_FALSE = "0";
public static final String PROCESS_AUDITSTATUS_APPLYING = "applying"; public static final String PROCESS_AUDITSTATUS_APPLYING = "applying";
......
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