Commit aff46eb8 authored by 胡秀武's avatar 胡秀武

胡秀武:模型列表树导航树

parent 17d8d6ab
......@@ -33,6 +33,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public BaseResponse exceptionHandler(Exception exception) {
exception.printStackTrace();
log.error("GlobalExceptionHandler.exceptionHandler", exception);
return new BaseResponse(CodeEnum.UNKNOWN);
}
......
......@@ -2,10 +2,7 @@ package com.pms.ocp.common.utils;
import com.pms.ocp.model.entity.TreeNode;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author huxiuwu
......@@ -20,7 +17,7 @@ public class TreeUtils {
List<T> treeList = new ArrayList<>();
for(T treeNode : treeNodes) {
if (pid.equals(treeNode.getPid())) {
if (pid.equals(treeNode.getpCode())) {
treeList.add(findChildren(treeNodes, treeNode));
}
}
......@@ -33,7 +30,7 @@ public class TreeUtils {
*/
private static <T extends TreeNode> T findChildren(List<T> treeNodes, T rootNode) {
for(T treeNode : treeNodes) {
if(rootNode.getId().equals(treeNode.getPid())) {
if(rootNode.getCode().equals(treeNode.getpCode())) {
rootNode.getChildren().add(findChildren(treeNodes, treeNode));
}
}
......@@ -47,18 +44,21 @@ public class TreeUtils {
List<T> result = new ArrayList<>();
//list转map
Map<Long, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
Map<String, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
for(T treeNode : treeNodes){
nodeMap.put(treeNode.getId(), treeNode);
nodeMap.put(treeNode.getCode(), treeNode);
}
for(T node : nodeMap.values()) {
T parent = nodeMap.get(node.getPid());
if(parent != null && !(node.getId().equals(parent.getId()))){
T parent = nodeMap.get(node.getpCode());
if(parent != null && (node.getpCode().equals(parent.getCode()))
&& (!"".equals(node.getpCode())|| !"".equals(parent.getCode()))){
if (parent.getChildren() == null){
parent.setChildren(new LinkedList<>());
}
parent.getChildren().add(node);
continue;
}
result.add(node);
}
......
......@@ -313,4 +313,10 @@ public class ModelBaseController {
return ResponseVO.ok(modelRelationService.deleteModelRelation(objId, modelCode));
}
@ApiOperation("模型列表-导航树")
@PostMapping("/delete/model/modelListNavigation")
public ResponseVO modelListNavigation(@RequestParam(required = false) String searchCondition) {
return modelIssueService.modelListNavigation(searchCondition);
}
}
......@@ -29,8 +29,6 @@ public class ModelClassifyController {
/**
* 模型分类导航
*
* @param searchCondition 分类名称
* @return pms.ocp.model.vo.ResponseVO
* @author huxiuwu
* @date 2022/3/9
......
......@@ -2,14 +2,21 @@ package com.pms.ocp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pms.ocp.model.entity.ModelIssue;
import com.pms.ocp.model.entity.TreeNode;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* @Auther: wangjian
* @Date: 2022/2/22 16:25
* @Description:模型订阅数据层接口
*/
//
@Mapper
public interface ModelIssueMapper extends BaseMapper<ModelIssue> {
public interface ModelIssueMapper extends BaseMapper<ModelIssue> {
List<TreeNode> selectOrganData();
List<TreeNode> selectModelAndModelGroup(@Param("searchCondition") String searchCondition);
}
......@@ -20,6 +20,10 @@ import java.util.Date;
@TableName("ocp_model_group")
public class ModelClassify {
public ModelClassify() {
this.groupCreateTime = new Date();
}
/**
* 模型分类编号
*/
......
......@@ -3,6 +3,7 @@ package com.pms.ocp.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -37,6 +38,7 @@ public class OcpApiSubs {
@ApiModelProperty("公司编码")
private String subsCompanyCode;
@JsonIgnore
@ApiModelProperty("是否删除0-否,1-是")
private long isDelete;
......
package com.pms.ocp.model.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -9,43 +12,42 @@ import java.util.List;
* @version 1.0
* @date 2022/3/8 17:53
*/
public class TreeNode<T> implements Serializable {
@Data
@ApiModel("树节点表")
public class TreeNode implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long id;
@ApiModelProperty("编码")
private String code;
/**
* 上级ID
*/
private Long pid;
/**
* 子节点列表
*/
private List<T> children = new ArrayList<>();
@ApiModelProperty("父类编码")
private String pCode;
public Long getId() {
return id;
}
@ApiModelProperty("名称")
private String name;
public void setId(Long id) {
this.id = id;
}
@ApiModelProperty("公司编码")
private String companyCode;
public Long getPid() {
return pid;
}
@ApiModelProperty("子类")
private List<TreeNode> children;
public void setPid(Long pid) {
this.pid = pid;
}
@ApiModelProperty("子类")
private int belongLevel;
public List<T> getChildren() {
return children;
public String getCode() {
return code == null ? "":code;
}
public void setChildren(List<T> children) {
this.children = children;
public String getpCode() {
return pCode == null ? "": pCode;
}
public String getCompanyCode() {
return companyCode == null ? "":companyCode;
}
}
......@@ -44,7 +44,7 @@ public class OcpModelGroupVO implements Serializable {
private String modelGroupPcode;
/**
* 上级模型分类id
* 上级模型分类名称
*/
@ApiModelProperty(value = "上级模型分类名称")
@TableField(exist = false)
......
......@@ -2,6 +2,7 @@ package com.pms.ocp.service;
import com.pms.ocp.model.dto.ModelIssueDTO;
import com.pms.ocp.model.entity.ModelIssue;
import com.pms.ocp.model.vo.ResponseVO;
import java.util.List;
......@@ -59,4 +60,7 @@ public interface ModelIssueService {
* @return
*/
ModelIssueDTO getModelIssue(String modelId);
ResponseVO modelListNavigation(String searchCondition);
}
......@@ -13,6 +13,7 @@ import com.pms.ocp.service.ModelClassifyService;
import com.pms.ocp.service.OcpModelGroupService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
......@@ -36,7 +37,6 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
/**
* currentPage pageSize
* 模型分类-导航树
*
* @return List<com.pms.ocp.model.vo.OcpModelGroupVO>
* @author huxiuwu
* @date 2022/3/8
......@@ -70,8 +70,8 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
Map<String, OcpModelGroupVO> groupByCode = ocpModelGroupVOList.stream().collect(Collectors.toMap(OcpModelGroupVO::getModelGroupCode, Function.identity(), (key1, key2) -> key2));
//根据key获取前端传入code的对象
OcpModelGroupVO ocpModelGroupVO = groupByCode.get(parentGroupCode);
//模糊查询
PageHelper.startPage(currentPage,pageSize);
//模糊查询
List<OcpModelGroupVO> dimConditionList = this.selectByCondition(null,subclassGroupName);
//递归获取模糊查询后属于parentGroupCode子集
List<OcpModelGroupVO> childrenList = findChildren(dimConditionList, ocpModelGroupVO, new LinkedList<>());
......@@ -87,6 +87,7 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
* @author huxiuwu
* @date 2022/3/9
**/
@Transactional
@Override
public ResponseVO update(List<ModelClassify> list) {
boolean isUpdateSucceed = ocpService.saveOrUpdateBatch(list);
......@@ -104,6 +105,7 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
* @author huxiuwu
* @date 2022/3/9
**/
@Transactional
@Override
public ResponseVO insert(List<ModelClassify> list) {
boolean result = ocpService.saveBatch(list);
......@@ -163,7 +165,7 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
//设置上级父类名称
node.setModelGroupPName(parent.getModelGroupName());
//说明他有父类其下子类都需要加一级
addLevel(node,treeNodes);
//addLevel(node,treeNodes);
parent.getChildrenList().add(node);
continue;
}
......@@ -198,7 +200,7 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
QueryWrapper<OcpModelGroupVO> queryWrapper = new QueryWrapper<>();
//根据是否传入搜索条件创建构造器进行查询
queryWrapper.eq(StringUtils.isNotEmpty(searchCondition[0]), "model_group_pcode", searchCondition[0])
.like(StringUtils.isNotEmpty(searchCondition[1]),"model_group_name", searchCondition[1]).orderBy(false,false,"group_ctime");
.like(StringUtils.isNotEmpty(searchCondition[1]),"model_group_name", searchCondition[1]).orderByDesc("group_ctime");
return classifyMapper.selectList(queryWrapper);
}
}
package com.pms.ocp.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pms.ocp.common.constants.CodeEnum;
import com.pms.ocp.common.utils.TreeUtils;
import com.pms.ocp.mapper.ModelIssueMapper;
import com.pms.ocp.model.dto.ModelIssueDTO;
import com.pms.ocp.model.entity.ModelIssue;
import com.pms.ocp.model.entity.TreeNode;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ModelIssueService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.security.acl.Group;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -25,6 +32,9 @@ public class ModelIssueServiceImpl implements ModelIssueService {
@Autowired
private ModelIssueMapper modelIssueMapper;
@Override
public Integer createModelIssue(ModelIssueDTO modelIssueDTO) {
......@@ -81,4 +91,37 @@ public class ModelIssueServiceImpl implements ModelIssueService {
public ModelIssueDTO getModelIssue(String modelId) {
return null;
}
/**
* 服务列表导航树
* @author huxiuwu
* @date 2022/3/11
*
* @return pms.ocp.model.vo.ResponseVO
**/
@Override
public ResponseVO modelListNavigation(String searchCondition) {
//查询模型和模型属性表列表
List<TreeNode> modelProperList = modelIssueMapper.selectModelAndModelGroup(searchCondition);
if (CollectionUtil.isEmpty(modelProperList)){
return ResponseVO.error(CodeEnum.NO_DATA);
}
List<TreeNode> modelGroupList = TreeUtils.build(modelProperList);
//查询组织机构表
List<TreeNode> organList = modelIssueMapper.selectOrganData();
//将分类放入各自所属于的组织机构下
organList.forEach(org
->{
modelGroupList.forEach(group->{
if (org.getCompanyCode().equals(group.getCompanyCode())){
if(org.getChildren() == null){
org.setChildren(new LinkedList<>());
}
org.getChildren().add(group);
}
});
});
List<TreeNode> result = TreeUtils.build(organList);
return ResponseVO.ok(result);
}
}
<?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.pms.ocp.mapper.ModelIssueMapper">
<resultMap id="modelAndModelGroupMap" type="com.pms.ocp.model.entity.TreeNode" >
<result column="model_group_code" property="code"/>
<result column="model_group_pcode" property="pCode"/>
<result column="group_company_code" property="companyCode"/>
<result column="model_group_name" property="name"/>
<result column="modelLevel" property="belongLevel"/>
<collection property="children" ofType="com.pms.ocp.model.entity.TreeNode">
<result column="model_name" property="name"/>
<result column="model_code" property="code"/>
<result column="groupModelBelongLevel" property="belongLevel"/>
</collection>
</resultMap>
<select id="selectModelAndModelGroup" parameterType="java.lang.String" resultMap="modelAndModelGroupMap">
select
2 AS groupModelBelongLevel,
3 AS modelLevel,
omg.model_group_pcode,
omg.group_company_code,
omg.model_group_name,
omg.model_group_code,
omb.model_name,
omb.model_code
from
ocp_model_group as omg
left join
ocp_model_base omb
on omg.model_group_code = omb.model_group_code
<if test="_parameter != null and _parameter != '' ">
where
model_name LIKE concat('%',#{searchCondition}::text ,'%')
</if>
</select>
<select id="selectOrganData" resultType="com.pms.ocp.model.entity.TreeNode">
select
1 AS belongLevel,
parent_id AS pCode,
org_name AS name ,
org_id AS code,
org_code AS companyCode
from
t_public_organization
where
trim(org_level) != ''
and
org_level::int4 &lt;= 4
</select>
</mapper>
\ No newline at end of file
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