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 5724c55a3ffff48430f8d359ca9845b88edb2929..2b8124603ce3f46bd3e6c636bb6a8f92761b2414 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 7c733a478ce761afea44379986d6c6c906ebdcd9..e3298214624434ab19a392296453c86acd90858d 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 d987eb737e6bf3a67cccb24d641b8aa8c926874f..df0846e6459a2a4f65b2df2ac082c3d660209c17 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 1eec46e212f84d539152e1bced5b249b2849527b..2e55e0ca5f412c2de38abb5009759f038f452bf2 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 4d5f32d3277eb56f2633344bfa64a00c10bb984d..9b49b6637961c6036430f5f6d5f49c913b13cf79 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 888534cfd2abe5a38ad0825d3392232278be212d..e9b374c6f5250c8dee907ee463e74339a9eb208b 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 3e4d512c54712fbd67cea5dcb45aee41bb9fa131..576a73a0caf72c7c6b548dd2a3ccf6d6887cb2e1 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 98fcc445f46a56ad3b0179e88fb25a71eb2778c3..a1b1cdba04f208509029bff3e156d63ec8a2b87c 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 a213bfd614d103e2ee817df3948d48c989a39a76..84f5af3fae320b80126e498f680ae2ec38beeb91 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 250f29fc08049195ad3a3898b4ddea6493fb79de..0b484af6171ea632b3e6523e58fedd9f882570ae 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 f4be2d57375c9c32aee0d20da95e063593bdb41a..7a8b476352caacb572367df8ef1c70beefaa846d 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 09f78f23f861acfc15c1cfc08de2e2dc58217cbe..5a22b8bfe4c22aa0d49c7559b7736dac3eec295d 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 0000000000000000000000000000000000000000..a185af7d295bb0efa5bdcf4b30850262c5092777 --- /dev/null +++ b/src/main/resources/mapper/ModelIssueMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file