1
0
Chen YZ 5 лет назад
Родитель
Сommit
197313b811

+ 0 - 26
web/src/main/java/seecoder/devcloud/web/controller/TreeNodesController.java

@@ -1,26 +0,0 @@
-package seecoder.devcloud.web.controller;
-
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import seecoder.devcloud.web.po.TreeNode;
-import seecoder.devcloud.web.service.TreeNodeService;
-
-import java.util.List;
-
-@RestController
-public class TreeNodesController {
-    @Autowired
-    private TreeNodeService treeNodeService;
-    //注意 这里混用po和vo了
-    @GetMapping("/all")
-    public List<TreeNode> getAllNodes(){
-        return treeNodeService.getAllNodes();
-    }
-    @GetMapping("/")
-    public String test(){
-        return "123";
-    }
-
-}

+ 44 - 0
web/src/main/java/seecoder/devcloud/web/controller/tree/TreeNodesController.java

@@ -0,0 +1,44 @@
+package seecoder.devcloud.web.controller.tree;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import seecoder.devcloud.web.po.TreeNodePO;
+import seecoder.devcloud.web.service.TreeNodeService;
+import seecoder.devcloud.web.vo.Response;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/tree")
+/**
+ * @Author chenyz
+ * @Description 需求树相关操作
+ */
+public class TreeNodesController {
+    @Autowired
+    private TreeNodeService treeNodeService;
+    //注意 这里混用po和vo了
+    @GetMapping("/all")
+    public List<TreeNodePO> getAllNodes(){
+        return treeNodeService.getAllNodes();
+    }
+
+    /**
+     * 获取某个项目所有需求情况
+     * @param projectId
+     * @return
+     */
+    @GetMapping("/{projectId}")
+    public Response listTreeNodesByProjectId(@PathVariable("projectId") int projectId){
+        // TODO
+        return null;
+    }
+
+
+    @PostMapping("/addNode")
+    public Response insertTreeNode(){
+        return null;
+    }
+
+}

+ 12 - 10
web/src/main/java/seecoder/devcloud/web/dataMapper/TreeNodeMapper.java

@@ -5,7 +5,7 @@ import org.apache.ibatis.annotations.*;
 import org.apache.ibatis.type.EnumOrdinalTypeHandler;
 import org.springframework.stereotype.Repository;
 import seecoder.devcloud.web.dataMapper.provider.TreeNodeProvider;
-import seecoder.devcloud.web.po.TreeNode;
+import seecoder.devcloud.web.po.TreeNodePO;
 
 import java.util.List;
 
@@ -24,10 +24,12 @@ public interface TreeNodeMapper {
             @Result(column = "start_time", property = "startTime"),
             @Result(column = "end_time", property = "endTime"),
             @Result(column = "group_id", property = "groupId"),
+            @Result(column = "project_id", property = "projectId"),
+            @Result(column = "parent_id", property = "parentId"),
             @Result(column = "state",property = "state"),
             @Result(column = "type",property = "type")
     })
-    List<TreeNode> listAllTreeNodes();
+    List<TreeNodePO> listAllTreeNodes();
 
     /**
      * 根据id获取TreeNode
@@ -36,7 +38,7 @@ public interface TreeNodeMapper {
      */
     @Select({"select * from tree_nodes where id = #{id}"})
     @ResultMap(value = "treeNodeMap")
-    TreeNode getTreeNodeById(@Param("id") int id);
+    TreeNodePO getTreeNodeById(@Param("id") int id);
 
     /**
      * 根据GroupId获取TreeNode
@@ -45,24 +47,24 @@ public interface TreeNodeMapper {
      */
     @Select({"select * from tree_nodes where group_id = #{groupId}"})
     @ResultMap(value = "treeNodeMap")
-    List<TreeNode> listTreeNodesByGroupId(@Param("groupId") int id);
+    List<TreeNodePO> listTreeNodesByGroupId(@Param("groupId") int id);
 
     /**
      * 插入treeNode
-     * @param treeNode
+     * @param TreeNodePO
      * @return treeNode的自增主键
      */
-    @Insert({"insert into tree_nodes(title, description, type, priority, state, processor, time_to_take, start_time, end_time, is_leaf, group_id) " +
-            "VALUES (#{title}, #{description}, #{type}, #{priority}, #{state}, #{processor}, #{timeToTake}, #{startTime}, #{endTime}, #{leaf}, #{groupId})"})
+    @Insert({"insert into tree_nodes(title, description, type, priority, state, time_to_take, start_time, end_time, is_leaf, group_id,project_id,deep,parent_id) " +
+            "VALUES (#{title}, #{description}, #{type}, #{priority}, #{state}, #{timeToTake}, #{startTime}, #{endTime}, #{leaf}, #{groupId},#{projectId},#{deep},#{parentId})"})
     @Options(useGeneratedKeys = true, keyProperty = "id")
-    int insertTreeNode(TreeNode treeNode);
+    int insertTreeNode(TreeNodePO TreeNodePO);
 
     /**
      * 更新TreeNode
-     * @param treeNode
+     * @param TreeNodePO
      * @return
      */
     @UpdateProvider(type = TreeNodeProvider.class,method = "updateTreeNode")
-    int updateTreeNode(TreeNode treeNode);
+    int updateTreeNode(TreeNodePO TreeNodePO);
 
 }

+ 5 - 3
web/src/main/java/seecoder/devcloud/web/dataMapper/provider/TreeNodeProvider.java

@@ -1,10 +1,10 @@
 package seecoder.devcloud.web.dataMapper.provider;
 
 import org.apache.ibatis.jdbc.SQL;
-import seecoder.devcloud.web.po.TreeNode;
+import seecoder.devcloud.web.po.TreeNodePO;
 
 public class TreeNodeProvider {
-    public String updateTreeNode(TreeNode treeNode){
+    public String updateTreeNode(TreeNodePO TreeNodePO){
         return new SQL() {
             {
                 UPDATE("tree_nodes");
@@ -13,12 +13,14 @@ public class TreeNodeProvider {
                 SET("type=#{type}");
                 SET("priority=#{priority}");
                 SET("state=#{state}");
-                SET("processor=#{processor}");
                 SET("time_to_take=#{timeToTake}");
                 SET("start_time=#{startTime}");
                 SET("end_time=#{endTime}");
                 SET("is_leaf=#{leaf}");
                 SET("group_id=#{groupId}");
+                SET("project_id=#{projectId}");
+                SET("parent_id=#{parentId}");
+                SET("deep=#{deep}");
                 WHERE("id=#{id}");
             }
         }.toString();

+ 4 - 3
web/src/main/java/seecoder/devcloud/web/po/TreeNode.java → web/src/main/java/seecoder/devcloud/web/po/TreeNodePO.java

@@ -15,18 +15,19 @@ import java.util.Date;
 @AllArgsConstructor
 @NoArgsConstructor
 @EqualsAndHashCode
-public class TreeNode {
+public class TreeNodePO {
     private int id;
     private String title;
     private String description;
     private NodeTypeEnum type;
     private int priority;
     private NodeStateEnum state;
-    private String processor;
     private int timeToTake;
     private String startTime;
     private String endTime;
     private boolean leaf;
     private int groupId;
-
+    private int projectId;
+    private int parentId;
+    private int deep;
 }

+ 17 - 2
web/src/main/java/seecoder/devcloud/web/service/TreeNodeService.java

@@ -2,10 +2,25 @@ package seecoder.devcloud.web.service;
 
 
 
-import seecoder.devcloud.web.po.TreeNode;
+import seecoder.devcloud.web.po.TreeNodePO;
+import seecoder.devcloud.web.vo.Response;
 
 import java.util.List;
 
 public interface TreeNodeService {
-    public List<TreeNode> getAllNodes();
+
+    public List<TreeNodePO> getAllNodes();
+
+    /**
+     * 根据项目id获取该项目下的treeNode
+     * @param projectId
+     * @return
+     */
+    Response listTreeNodesByProjectId(int projectId);
+
+    Response insertTreeNode();
+
+    Response updateTreeNode();
+
+    Response deleteTreeNode();
 }

+ 23 - 2
web/src/main/java/seecoder/devcloud/web/service/impl/tree/TreeNodeServiceImpl.java

@@ -4,8 +4,9 @@ package seecoder.devcloud.web.service.impl.tree;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import seecoder.devcloud.web.dataMapper.TreeNodeMapper;
-import seecoder.devcloud.web.po.TreeNode;
+import seecoder.devcloud.web.po.TreeNodePO;
 import seecoder.devcloud.web.service.TreeNodeService;
+import seecoder.devcloud.web.vo.Response;
 
 import java.util.List;
 
@@ -14,7 +15,27 @@ public class TreeNodeServiceImpl implements TreeNodeService {
     @Autowired
     private TreeNodeMapper treeNodeMapper;
     @Override
-    public List<TreeNode> getAllNodes() {
+    public List<TreeNodePO> getAllNodes() {
+        return null;
+    }
+
+    @Override
+    public Response listTreeNodesByProjectId(int projectId) {
+        return null;
+    }
+
+    @Override
+    public Response insertTreeNode() {
+        return null;
+    }
+
+    @Override
+    public Response updateTreeNode() {
+        return null;
+    }
+
+    @Override
+    public Response deleteTreeNode() {
         return null;
     }
 }

+ 22 - 0
web/src/main/java/seecoder/devcloud/web/vo/TreeNodeVO.java

@@ -0,0 +1,22 @@
+package seecoder.devcloud.web.vo;
+
+import seecoder.devcloud.web.enums.NodeStateEnum;
+import seecoder.devcloud.web.enums.NodeTypeEnum;
+
+public class TreeNodeVO {
+
+    private int id;
+    private String title;
+    private String description;
+    private NodeTypeEnum type;
+    private int priority;
+    private NodeStateEnum state;
+    private int timeToTake;
+    private String startTime;
+    private String endTime;
+    private boolean leaf;
+    private int groupId;
+    private int projectId;
+    private int parentId;
+    private int deep;
+}

+ 25 - 9
web/src/main/resources/SQLScripts/trees.sql

@@ -1,4 +1,17 @@
 SET foreign_key_checks = 0;
+# 需求执行者
+drop table if exists treenode_processor;
+create table treenode_processor
+(
+    id           int auto_increment,
+    PRIMARY KEY (id),
+    tree_node_id int not null ,
+    processor_id int not null,
+    processor_name varchar(64) not null
+);
+insert into treenode_processor(tree_node_id, processor_id, processor_name) VALUES (1,1,"qinliu");
+
+# 需求节点
 drop table if exists tree_nodes;
 create table tree_nodes
 (
@@ -8,37 +21,40 @@ create table tree_nodes
     type         varchar(32)      default 0                 not null,
     priority     int      default 0                 null,
     state        varchar(32)      default 0                 not null,
-    processor    varchar(64)                        not null,
     time_to_take int      default 0                 not null,
     start_time   datetime default CURRENT_TIMESTAMP null,
     end_time     datetime                           null,
     is_leaf      int      default 0                 null,
     group_id     int                                null,
+    project_id   int                                null,
+    deep         int                                null,
+    parent_id     int                                null,
     constraint tree_nodes_id_uindex
         unique (id)
 );
 
 alter table tree_nodes
     add primary key (id);
-insert into tree_nodes(title, description, type, priority, state, processor, time_to_take, start_time, end_time, is_leaf, group_id) values ("test1","test1","REQUIREMENT",0,"PROCESSING","qinliu",10,"2021-1-1","2021-2-13",1,1);
-insert into tree_nodes(title, description, type, priority, state, processor, time_to_take, start_time, end_time, is_leaf, group_id) values ("test2","test2","REQUIREMENT",0,"PROCESSING","qinliu",10,"2021-1-2","2021-2-13",1,1);
-insert into tree_nodes(title, description, type, priority, state, processor, time_to_take, start_time, end_time, is_leaf, group_id) values ("test3","test3","REQUIREMENT",0,"PROCESSING","qinliu",10,"2021-1-3","2021-2-13",1,1);
+insert into tree_nodes(title, description, type, priority, state, time_to_take, start_time, end_time, is_leaf, group_id, project_id, deep,parent_id) values ("test1","test1","REQUIREMENT",0,"PROCESSING",10,"2021-1-1","2021-2-13",1,1,1,1,1);
+insert into tree_nodes(title, description, type, priority, state, time_to_take, start_time, end_time, is_leaf, group_id, project_id, deep,parent_id) values ("test2","test2","REQUIREMENT",0,"PROCESSING",10,"2021-1-2","2021-2-13",1,1,1,1,1);
+insert into tree_nodes(title, description, type, priority, state, time_to_take, start_time, end_time, is_leaf, group_id, project_id, deep,parent_id) values ("test3","test3","REQUIREMENT",0,"PROCESSING",10,"2021-1-3","2021-2-13",1,1,1,1,1);
 
+# 信息 留言
 drop table if exists messages;
-create table messages
+drop table if exists tree_messages;
+create table tree_messages
 (
     message_id   int auto_increment,
     creator      varchar(64)  not null,
     tree_node_id int          null,
     detail       varchar(512) null,
-    constraint messages_message_id_uindex
+    constraint tree_messages_message_id_uindex
         unique (message_id),
     constraint tree_node_fk
         foreign key (tree_node_id) references tree_nodes (id)
             on update cascade on delete cascade
 );
-
-alter table messages
+alter table tree_messages
     add primary key (message_id);
 
 drop table if exists tree_sides;
@@ -56,7 +72,7 @@ create table tree_sides
         foreign key (parent_id) references tree_nodes (id)
             on update cascade on delete cascade
 );
-
+# 树边,暂时用不到了
 alter table tree_sides
     add primary key (side_id);
 

+ 15 - 15
web/src/test/java/seecoder/devcloud/web/dataMapper/TreeNodeMapperTest.java

@@ -9,7 +9,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import seecoder.devcloud.web.enums.NodeStateEnum;
 import seecoder.devcloud.web.enums.NodeTypeEnum;
-import seecoder.devcloud.web.po.TreeNode;
+import seecoder.devcloud.web.po.TreeNodePO;
 
 import java.util.List;
 
@@ -22,37 +22,37 @@ public class TreeNodeMapperTest {
 
     @Test
     public void listAllTreeNodesTest(){
-        List<TreeNode> treeNodes =  treeNodeMapper.listAllTreeNodes();
-        for (TreeNode treeNode:treeNodes){
-            System.out.println(treeNode);
+        List<TreeNodePO> treeNodes =  treeNodeMapper.listAllTreeNodes();
+        for (TreeNodePO TreeNodePO:treeNodes){
+            System.out.println(TreeNodePO);
         }
         assert treeNodes.size()!=0;
     }
 
     @Test
     public void getTreeNodeByIdTest(){
-        TreeNode node = treeNodeMapper.getTreeNodeById(1);
+        TreeNodePO node = treeNodeMapper.getTreeNodeById(1);
         System.out.println(node);
-        TreeNode node1 = new TreeNode(1,"test1","test1", NodeTypeEnum.REQUIREMENT,0, NodeStateEnum.PROCESSING,"qinliu",10,"2021-01-01 00:00:00","2021-02-13 00:00:00",true,1);
+        TreeNodePO node1 = new TreeNodePO(1,"test1","test1", NodeTypeEnum.REQUIREMENT,0, NodeStateEnum.PROCESSING,10,"2021-01-01 00:00:00","2021-02-13 00:00:00",true,1,1,1,1);
         assert node.equals(node1);
     }
 
     @Test
     public void listTreeNodesByGroupIdTest(){
-        List<TreeNode> treeNodes = treeNodeMapper.listTreeNodesByGroupId(1);
-        TreeNode node1 = new TreeNode(1,"test1","test1", NodeTypeEnum.REQUIREMENT,0, NodeStateEnum.PROCESSING,"qinliu",10,"2021-01-01 00:00:00","2021-02-13 00:00:00",true,1);
-        for(TreeNode treeNode:treeNodes){
-            if (treeNode.getId()==1){
-                assert treeNode.equals(node1);
+        List<TreeNodePO> treeNodes = treeNodeMapper.listTreeNodesByGroupId(1);
+        TreeNodePO node1 = new TreeNodePO(1,"test1","test1", NodeTypeEnum.REQUIREMENT,0, NodeStateEnum.PROCESSING,10,"2021-01-01 00:00:00","2021-02-13 00:00:00",true,1,1,1,1);
+        for(TreeNodePO TreeNodePO:treeNodes){
+            if (TreeNodePO.getId()==1){
+                assert TreeNodePO.equals(node1);
             }
         }
     }
 
     @Test
     public void insertTreeNodeTest(){
-        TreeNode node1 = new TreeNode(0,"testInsert","testInsert", NodeTypeEnum.REQUIREMENT,0, NodeStateEnum.PROCESSING,"qinliu",10,"2021-01-01 00:00:00","2021-02-13 00:00:00",true,1);
+        TreeNodePO node1 = new TreeNodePO(0,"testInsert","testInsert", NodeTypeEnum.REQUIREMENT,0, NodeStateEnum.PROCESSING,10,"2021-01-01 00:00:00","2021-02-13 00:00:00",true,1,1,1,1);
         int res = treeNodeMapper.insertTreeNode(node1);
-        TreeNode node = treeNodeMapper.getTreeNodeById(node1.getId());
+        TreeNodePO node = treeNodeMapper.getTreeNodeById(node1.getId());
         System.out.println(node);
         System.out.println(node1);
         assert res==1;
@@ -61,9 +61,9 @@ public class TreeNodeMapperTest {
 
     @Test
     public void updateTreeNodeTest(){
-        TreeNode node1 = new TreeNode(1,"update","update", NodeTypeEnum.TASK,1, NodeStateEnum.FINISHED,"qinliu667",20,"2021-01-10 00:00:00","2021-02-15 00:00:00",false,2);
+        TreeNodePO node1 = new TreeNodePO(1,"update","update", NodeTypeEnum.TASK,1, NodeStateEnum.FINISHED,20,"2021-01-10 00:00:00","2021-02-15 00:00:00",false,2,1,1,1);
         treeNodeMapper.updateTreeNode(node1);
-        TreeNode node = treeNodeMapper.getTreeNodeById(1);
+        TreeNodePO node = treeNodeMapper.getTreeNodeById(1);
         System.out.println(node);
         assert node.equals(node1);
     }