From aff46eb889d4463374a07c97955db04e6f0432b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E7=A7=80=E6=AD=A6?= <18621965254@yeah.net> Date: Sat, 12 Mar 2022 17:21:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=83=A1=E7=A7=80=E6=AD=A6:=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=A0=91=E5=AF=BC=E8=88=AA=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 1 + .../com/pms/ocp/common/utils/TreeUtils.java | 22 ++++---- .../ocp/controller/ModelBaseController.java | 6 +++ .../controller/ModelClassifyController.java | 2 - .../com/pms/ocp/mapper/ModelIssueMapper.java | 11 +++- .../pms/ocp/model/entity/ModelClassify.java | 4 ++ .../com/pms/ocp/model/entity/OcpApiSubs.java | 2 + .../com/pms/ocp/model/entity/TreeNode.java | 52 ++++++++++--------- .../com/pms/ocp/model/vo/OcpModelGroupVO.java | 2 +- .../pms/ocp/service/ModelIssueService.java | 4 ++ .../impl/ModelClassifyServiceImpl.java | 10 ++-- .../service/impl/ModelIssueServiceImpl.java | 43 +++++++++++++++ .../resources/mapper/ModelIssueMapper.xml | 52 +++++++++++++++++++ 13 files changed, 166 insertions(+), 45 deletions(-) create mode 100644 src/main/resources/mapper/ModelIssueMapper.xml diff --git a/src/main/java/com/pms/ocp/common/exception/GlobalExceptionHandler.java b/src/main/java/com/pms/ocp/common/exception/GlobalExceptionHandler.java index 5724c55..2b81246 100644 --- a/src/main/java/com/pms/ocp/common/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/pms/ocp/common/exception/GlobalExceptionHandler.java @@ -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); } diff --git a/src/main/java/com/pms/ocp/common/utils/TreeUtils.java b/src/main/java/com/pms/ocp/common/utils/TreeUtils.java index 7c733a4..e329821 100644 --- a/src/main/java/com/pms/ocp/common/utils/TreeUtils.java +++ b/src/main/java/com/pms/ocp/common/utils/TreeUtils.java @@ -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 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 findChildren(List 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 result = new ArrayList<>(); //list转map - Map nodeMap = new LinkedHashMap<>(treeNodes.size()); + Map 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); } diff --git a/src/main/java/com/pms/ocp/controller/ModelBaseController.java b/src/main/java/com/pms/ocp/controller/ModelBaseController.java index d987eb7..df0846e 100644 --- a/src/main/java/com/pms/ocp/controller/ModelBaseController.java +++ b/src/main/java/com/pms/ocp/controller/ModelBaseController.java @@ -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); + } } diff --git a/src/main/java/com/pms/ocp/controller/ModelClassifyController.java b/src/main/java/com/pms/ocp/controller/ModelClassifyController.java index 1eec46e..2e55e0c 100644 --- a/src/main/java/com/pms/ocp/controller/ModelClassifyController.java +++ b/src/main/java/com/pms/ocp/controller/ModelClassifyController.java @@ -29,8 +29,6 @@ public class ModelClassifyController { /** * 模型分类导航 - * - * @param searchCondition 分类名称 * @return pms.ocp.model.vo.ResponseVO * @author huxiuwu * @date 2022/3/9 diff --git a/src/main/java/com/pms/ocp/mapper/ModelIssueMapper.java b/src/main/java/com/pms/ocp/mapper/ModelIssueMapper.java index 4d5f32d..9b49b66 100644 --- a/src/main/java/com/pms/ocp/mapper/ModelIssueMapper.java +++ b/src/main/java/com/pms/ocp/mapper/ModelIssueMapper.java @@ -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 { +public interface ModelIssueMapper extends BaseMapper { + List selectOrganData(); + + List selectModelAndModelGroup(@Param("searchCondition") String searchCondition); } diff --git a/src/main/java/com/pms/ocp/model/entity/ModelClassify.java b/src/main/java/com/pms/ocp/model/entity/ModelClassify.java index 888534c..e9b374c 100644 --- a/src/main/java/com/pms/ocp/model/entity/ModelClassify.java +++ b/src/main/java/com/pms/ocp/model/entity/ModelClassify.java @@ -20,6 +20,10 @@ import java.util.Date; @TableName("ocp_model_group") public class ModelClassify { + public ModelClassify() { + this.groupCreateTime = new Date(); + } + /** * 模型分类编号 */ diff --git a/src/main/java/com/pms/ocp/model/entity/OcpApiSubs.java b/src/main/java/com/pms/ocp/model/entity/OcpApiSubs.java index 3e4d512..576a73a 100644 --- a/src/main/java/com/pms/ocp/model/entity/OcpApiSubs.java +++ b/src/main/java/com/pms/ocp/model/entity/OcpApiSubs.java @@ -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; diff --git a/src/main/java/com/pms/ocp/model/entity/TreeNode.java b/src/main/java/com/pms/ocp/model/entity/TreeNode.java index 98fcc44..a1b1cdb 100644 --- a/src/main/java/com/pms/ocp/model/entity/TreeNode.java +++ b/src/main/java/com/pms/ocp/model/entity/TreeNode.java @@ -1,7 +1,10 @@ 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 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 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 children; - public void setPid(Long pid) { - this.pid = pid; - } + @ApiModelProperty("子类") + private int belongLevel; - public List getChildren() { - return children; + public String getCode() { + return code == null ? "":code; } - - public void setChildren(List children) { - this.children = children; + public String getpCode() { + return pCode == null ? "": pCode; + } + public String getCompanyCode() { + return companyCode == null ? "":companyCode; } } diff --git a/src/main/java/com/pms/ocp/model/vo/OcpModelGroupVO.java b/src/main/java/com/pms/ocp/model/vo/OcpModelGroupVO.java index a213bfd..84f5af3 100644 --- a/src/main/java/com/pms/ocp/model/vo/OcpModelGroupVO.java +++ b/src/main/java/com/pms/ocp/model/vo/OcpModelGroupVO.java @@ -44,7 +44,7 @@ public class OcpModelGroupVO implements Serializable { private String modelGroupPcode; /** - * 上级模型分类id + * 上级模型分类名称 */ @ApiModelProperty(value = "上级模型分类名称") @TableField(exist = false) diff --git a/src/main/java/com/pms/ocp/service/ModelIssueService.java b/src/main/java/com/pms/ocp/service/ModelIssueService.java index 250f29f..0b484af 100644 --- a/src/main/java/com/pms/ocp/service/ModelIssueService.java +++ b/src/main/java/com/pms/ocp/service/ModelIssueService.java @@ -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); + } diff --git a/src/main/java/com/pms/ocp/service/impl/ModelClassifyServiceImpl.java b/src/main/java/com/pms/ocp/service/impl/ModelClassifyServiceImpl.java index f4be2d5..7a8b476 100644 --- a/src/main/java/com/pms/ocp/service/impl/ModelClassifyServiceImpl.java +++ b/src/main/java/com/pms/ocp/service/impl/ModelClassifyServiceImpl.java @@ -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 * @author huxiuwu * @date 2022/3/8 @@ -70,8 +70,8 @@ public class ModelClassifyServiceImpl implements ModelClassifyService { Map 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 dimConditionList = this.selectByCondition(null,subclassGroupName); //递归获取模糊查询后属于parentGroupCode子集 List 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 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 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 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); } } diff --git a/src/main/java/com/pms/ocp/service/impl/ModelIssueServiceImpl.java b/src/main/java/com/pms/ocp/service/impl/ModelIssueServiceImpl.java index 09f78f2..5a22b8b 100644 --- a/src/main/java/com/pms/ocp/service/impl/ModelIssueServiceImpl.java +++ b/src/main/java/com/pms/ocp/service/impl/ModelIssueServiceImpl.java @@ -1,16 +1,23 @@ 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 modelProperList = modelIssueMapper.selectModelAndModelGroup(searchCondition); + if (CollectionUtil.isEmpty(modelProperList)){ + return ResponseVO.error(CodeEnum.NO_DATA); + } + List modelGroupList = TreeUtils.build(modelProperList); + //查询组织机构表 + List 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 result = TreeUtils.build(organList); + return ResponseVO.ok(result); + } } diff --git a/src/main/resources/mapper/ModelIssueMapper.xml b/src/main/resources/mapper/ModelIssueMapper.xml new file mode 100644 index 0000000..a185af7 --- /dev/null +++ b/src/main/resources/mapper/ModelIssueMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.26.0