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

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

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