Explorar o código

产品架构新增接口

lwhhszx hai 1 ano
pai
achega
2db34a23d9

+ 22 - 0
src/main/java/cn/cslg/pas/common/dto/business/QueryAllTreePathDTO.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+@Data
+public class QueryAllTreePathDTO {
+
+    /**
+     * 类型
+     * (1产品类别,2产品,3技术分类,4自定义树)
+     */
+    private Integer type;
+
+    /**
+     * 抽象id
+     * (所属产品/产品类别/自定义树/技术分类)
+     */
+    private Integer typeId;
+
+
+
+}

+ 23 - 0
src/main/java/cn/cslg/pas/common/vo/business/TreePathVO.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.hutool.core.date.DateTime;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 返回树路径VO
+ * @Author lirj
+ * @Date 2023/11/3
+ */
+@Data
+public class TreePathVO {
+    @Schema(description = "id")
+    private Integer id;
+    @Schema(description = "路径")
+    private String path;
+    @Schema(description = "路径名称")
+    private String pathName;
+}

+ 11 - 6
src/main/java/cn/cslg/pas/controller/TreeNodeController.java

@@ -1,10 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.business.ProductCategoryDTO;
-import cn.cslg.pas.common.dto.business.QueryTreeNodeDTO;
-import cn.cslg.pas.common.dto.business.TreeNodeDTO;
-import cn.cslg.pas.common.dto.business.UpdateTreeNodeDTO;
+import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
@@ -41,18 +38,26 @@ public class TreeNodeController {
 
     @Operation(summary = "查询架构树")
     @PostMapping("/queryTreeNodeTree")
-    public Response queryTreeNodeTree(QueryTreeNodeDTO queryTreeNodeDTO) throws Exception {
+    public Response queryTreeNodeTree(@RequestBody QueryTreeNodeDTO queryTreeNodeDTO) throws Exception {
         TreeNodeService  business = (TreeNodeService) businessFactory.getClass("treeNodeService");
         Records records = business.queryMessage(queryTreeNodeDTO);
         return Response.success(records);
     }
     @Operation(summary = "查询架构")
     @PostMapping("/queryTreeNode")
-    public Response queryTreeNode(StringRequest stringRequest) throws Exception {
+    public Response queryTreeNode(@RequestBody StringRequest stringRequest) throws Exception {
         TreeNodeService  business = (TreeNodeService) businessFactory.getClass("treeNodeService");
         Records records = (Records)business.queryMessage(stringRequest);
         return Response.success(records);
     }
+
+    @Operation(summary = "查询架构路径")
+    @PostMapping("/queryTreePath")
+    public Response queryTreePath(@RequestBody QueryAllTreePathDTO queryAllTreePathDTO) throws Exception {
+        TreeNodeService  business = (TreeNodeService) businessFactory.getClass("treeNodeService");
+        Records records = business.queryAllPath(queryAllTreePathDTO);
+        return Response.success(records);
+    }
     @Operation(summary = "新增架构")
     @PostMapping("/addTreeNode")
     public Response addTreeNode(String treeNode, List<MultipartFile> files) throws Exception {

+ 70 - 11
src/main/java/cn/cslg/pas/service/business/TreeNodeService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.business.QueryAllTreePathDTO;
 import cn.cslg.pas.common.dto.business.QueryTreeNodeDTO;
 import cn.cslg.pas.common.dto.business.TreeNodeDTO;
 import cn.cslg.pas.common.dto.business.UpdateTreeNodeDTO;
@@ -11,6 +12,7 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.ReTreeNodeVO;
 import cn.cslg.pas.common.vo.business.ProductVO;
 import cn.cslg.pas.common.vo.business.TreeNodeVO;
+import cn.cslg.pas.common.vo.business.TreePathVO;
 import cn.cslg.pas.domain.business.AssoTreeNodeFile;
 import cn.cslg.pas.domain.business.TreeNode;
 import cn.cslg.pas.exception.UnLoginException;
@@ -97,8 +99,8 @@ public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> imple
      * @throws Exception
      */
     public Records queryMessage(QueryTreeNodeDTO queryTreeNodeDTO) throws Exception {
-           //返回数据
-            Records records = new Records();
+        //返回数据
+        Records records = new Records();
 
         List<ReTreeNodeVO> reTreeNodeVOS = new ArrayList<>();
         Integer type = queryTreeNodeDTO.getType();
@@ -113,7 +115,7 @@ public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> imple
         List<TreeNodeVO> treeNodes = treeNodeMapper.getTreeNode(queryTreeNodeDTO);
 
         //如果根据名称查询
-        if (queryTreeNodeDTO.getName() != null) {
+        if (queryTreeNodeDTO.getName() != null&&!queryTreeNodeDTO.getName().trim().equals("")) {
             List<Integer> ids = new ArrayList<>();
 
             //当根据名称查出了节点
@@ -200,8 +202,14 @@ public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> imple
         treeNodeDTO.setName(treeNodeDTO.getName().trim());
         //根据名称查询是否重复
         String name = treeNodeDTO.getName();
+        Integer parentId = treeNodeDTO.getParentId();
+        Integer type = treeNodeDTO.getType();
+        Integer typeId = treeNodeDTO.getTypeId();
         LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(TreeNode::getName, name);
+        queryWrapper.eq(TreeNode::getParentId, parentId);
+        queryWrapper.eq(TreeNode::getType, type);
+        queryWrapper.eq(TreeNode::getTypeId, typeId);
         List<TreeNode> treeNodes = this.list(queryWrapper);
         if (treeNodes != null && treeNodes.size() != 0) {
             throw new XiaoShiException("名称不能重复!");
@@ -216,7 +224,6 @@ public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> imple
         //赋值
         TreeNode treeNode = new TreeNode();
         BeanUtils.copyProperties(treeNodeDTO, treeNode);
-        Integer parentId = treeNodeDTO.getParentId();
         //若父id为0,则代表这是顶层id
         if (parentId.equals(0)) {
             treeNode.setPath("");
@@ -569,16 +576,16 @@ public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> imple
         });
 
         //根据父节点id查询
-        List<TreeNode> parentNodes =new ArrayList<>();
-        if(parentIds.size()!=0) {
+        List<TreeNode> parentNodes = new ArrayList<>();
+        if (parentIds.size() != 0) {
             LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.in(TreeNode::getId,parentIds);
-            parentNodes=this.list(queryWrapper);
+            queryWrapper.in(TreeNode::getId, parentIds);
+            parentNodes = this.list(queryWrapper);
         }
 
         //装载路径
-        for(TreeNodeVO treeNode :treeNodeVOS){
-            List<String> pathNames=new ArrayList<>();
+        for (TreeNodeVO treeNode : treeNodeVOS) {
+            List<String> pathNames = new ArrayList<>();
             if (treeNode.getPath() != null && !treeNode.getPath().trim().equals("")) {
                 List<Integer> paths = Arrays.stream(treeNode.getPath().split("/")).map(s -> {
                     if (!s.equals("")) {
@@ -601,7 +608,59 @@ public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> imple
             }
 
         }
+    }
+
+
+    /**
+     * 查询树
+     *
+     * @param queryTreeNodeDTO
+     * @return
+     * @throws Exception
+     */
+    public Records queryAllPath(QueryAllTreePathDTO queryTreeNodeDTO) throws Exception {
+        //校验
+        if (queryTreeNodeDTO == null || queryTreeNodeDTO.getType() == null || queryTreeNodeDTO.getTypeId() == null) {
+            throw new XiaoShiException("参数错误");
+        }
+
+        //返回数据
+        Records records = new Records();
 
+        LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(TreeNode::getType, queryTreeNodeDTO.getType())
+                .eq(TreeNode::getTypeId, queryTreeNodeDTO.getTypeId()).orderByDesc(TreeNode::getLevel);
+        List<TreeNode> treeNodes = this.list(queryWrapper);
+        List<TreePathVO> treeNodeVOS = new ArrayList<>();
 
+        //装载路径
+        for (TreeNode treeNode : treeNodes) {
+            TreePathVO treePathVO=new TreePathVO();
+            treePathVO.setId(treeNode.getId());
+            treePathVO.setPath(treeNode.getPath()+treeNode.getId()+"/");
+            List<String> pathNames = new ArrayList<>();
+            if (treeNode.getPath() != null && !treeNode.getPath().trim().equals("")) {
+                List<Integer> paths = Arrays.stream(treeNode.getPath().split("/")).map(s -> {
+                    if (!s.equals("")) {
+                        return Integer.parseInt(s.trim());
+                    } else return null;
+                }).collect(Collectors.toList());
+                for (Integer tem : paths) {
+                    TreeNode treeNode1 = treeNodes.stream().filter(item -> item.getId().equals(tem)).findFirst().orElse(null);
+                    if (treeNode1 != null) {
+                        pathNames.add(treeNode1.getName());
+                    }
+                }
+                if (pathNames.size() != 0) {
+                    treePathVO.setPathName( StringUtils.join(pathNames, "/")+"/"+treeNode.getName()+"/");
+                }
+            }
+            else {
+                treePathVO.setPathName("/"+treeNode.getName()+"/");
+            }
+            treeNodeVOS.add(treePathVO);
+        }
+        records.setData(treeNodeVOS);
+        return records;
     }
-}
+}

+ 144 - 0
src/main/resources/jsons/patentProject.json

@@ -0,0 +1,144 @@
+[
+  {"name":"Id",
+    "type":"Integer",
+    "value":"id",
+    "field":"id",
+    "sqlField": "id",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"事件名称",
+  "type":"String",
+  "value":"name",
+  "field": "name",
+  "sqlField": "name",
+  "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getComGroup",
+  "ifSearch":"true",
+  "ifGroup": "false",
+    "ifShow":"true"
+},
+  {"name":"创建人",
+    "type":"String",
+    "value":"createName",
+    "field": "createName",
+    "sqlField": "create_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+
+  },
+  {"name":"客户",
+    "type":"String",
+    "value":"clientName",
+    "field": "clientName",
+    "sqlField": "client_id",
+    "orderClass": "getClientNameOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"创建时间",
+    "type":"DateTime",
+    "value":"createTime",
+    "field": "createTime",
+    "sqlField": "create_time",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"创建月份",
+    "type":"DateTime",
+    "value":"createTimeMonth",
+    "field": "createTimeMonth",
+    "sqlField": "create_time",
+    "sqlClass": "getDateTimeMonthSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false"
+  },
+  {"name":"发生时间",
+    "type":"DateTime",
+    "value":"eventDate",
+    "field": "eventDate",
+    "sqlField": "event_Date",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"发生月份",
+    "type":"DateTime",
+    "value":"eventDateMonth",
+    "field": "eventDateMonth",
+    "sqlField": "event_Date",
+    "sqlClass": "getDateTimeMonthSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false"
+  },
+  {"name":"描述",
+    "type":"String",
+    "value":"description",
+    "field": "description",
+    "sqlField": "description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+
+  },
+  {"name":"应用场景",
+    "type":"Array",
+    "value":"scenarioId",
+    "field": "scenarioId",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "true",
+    "ifShow":"true"
+  },
+  {
+    "name":"报告数量",
+    "type":"Integer",
+    "value":"reportProjectNum",
+    "field":"reportProjectNum",
+    "sqlField": "event_id",
+    "orderClass": "getEventReportNumOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true"
+
+  },
+  {
+    "name":"专题库数量",
+    "type":"Integer",
+    "value":"patentProjectNum",
+    "field":"patentProjectNum",
+    "sqlField": "event_id",
+    "orderClass": "getEventProjectNumOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true"
+  }
+]

+ 24 - 0
src/main/resources/jsons/treeNode.json

@@ -24,6 +24,30 @@
     "ifShow":"true"
   },
 
+  {"name":"类型",
+    "type":"Integer",
+    "value":"type",
+    "field":"type",
+    "sqlField": "type",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"类型Id",
+    "type":"Integer",
+    "value":"typeId",
+    "field":"typeId",
+    "sqlField": "type_id",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
   {"name":"创建人",
     "type":"String",
     "value":"createName",