Browse Source

看板分组

chenw 6 years ago
parent
commit
33cd000b09

+ 71 - 0
bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardMenuController.java

@@ -0,0 +1,71 @@
+package com.usoftchina.bi.server.controller.dashboard;
+
+import com.usoftchina.bi.core.base.RepCode;
+import com.usoftchina.bi.core.base.RepEntity;
+import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
+import com.usoftchina.bi.server.model.vo.configVo.DashBoardMenuInfo;
+import com.usoftchina.bi.server.model.vo.configVo.DashBoardUpdateMenuInfo;
+import com.usoftchina.bi.server.service.dashboard.DashBoardMenuService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-19
+ */
+@RestController
+@RequestMapping("/dashBoard/menu")
+@Api(description = "看板目录相关接口")
+public class DashboardMenuController {
+
+    @Autowired
+    private DashBoardMenuService dashBoardMenuService;
+
+    @GetMapping("/list")
+    @CheckToken
+    @ApiOperation(value = "目录列表", notes = "目录列表", response = RepEntity.class)
+    public RepEntity list(@RequestHeader String token){
+        return new RepEntity(RepCode.success, dashBoardMenuService.list());
+    }
+
+    @PostMapping("/save")
+    @CheckToken
+    @ApiOperation(value = "保存目录", notes = "保存看板目录", response = RepEntity.class)
+    public RepEntity save(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
+        dashBoardMenuService.save(dashBoardMenuInfo);
+        return new RepEntity(RepCode.success);
+    }
+
+    @PostMapping("/update")
+    @CheckToken
+    @ApiOperation(value = "更新目录", notes = "更新看板目录", response = RepEntity.class)
+    public RepEntity update(@RequestHeader String token, @RequestBody DashBoardMenuInfo dashBoardMenuInfo){
+        dashBoardMenuService.update(dashBoardMenuInfo);
+        return new RepEntity(RepCode.success);
+    }
+
+    @PostMapping("/delete/{id}")
+    @CheckToken
+    @ApiOperation(value = "删除目录", notes = "删除看板目录", response = RepEntity.class)
+    public RepEntity delete(@RequestHeader String token, @PathVariable("id") Long id){
+        dashBoardMenuService.deleteById(id);
+        return new RepEntity(RepCode.success);
+    }
+
+    @PostMapping("/update/dashboard")
+    @CheckToken
+    @ApiOperation(value = "更新看板目录", notes = "更新看板目录", response = RepEntity.class)
+    public RepEntity updateDashBoard(@RequestBody DashBoardUpdateMenuInfo dashBoardUpdateMenuInfo){
+        dashBoardMenuService.updateDashBoardMenu(dashBoardUpdateMenuInfo);
+        return new RepEntity(RepCode.success);
+    }
+
+    @GetMapping("/list/dashBoard/{menuId}")
+    @CheckToken
+    @ApiOperation(value = "获得目录下的所有报表", notes = "通过MenuId获得目录下的所有报表", response = RepEntity.class)
+    public RepEntity getDashBoardByMenuId(@PathVariable("menuId") int menuId){
+        return dashBoardMenuService.getDashBoardByMenuId(menuId);
+    }
+}

+ 73 - 0
bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DashBoardMenuMapper.java

@@ -0,0 +1,73 @@
+package com.usoftchina.bi.server.dao.dashboard;
+
+import com.usoftchina.bi.server.model.po.Dashboards;
+import com.usoftchina.bi.server.model.vo.configVo.DashBoardMenuInfo;
+import com.usoftchina.bi.server.model.vo.configVo.DashBoardUpdateMenuInfo;
+import com.usoftchina.bi.server.model.vo.dataVo.DashboardMenuRespDTO;
+import org.apache.ibatis.annotations.*;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface DashBoardMenuMapper {
+
+    @Select("SELECT BDM_ID id,BDM_NAME name,'menu' type,BDM_PARENTID parentId FROM BI_DASHBOARDS_MENU WHERE BDM_PARENTID = #{id, jdbcType=INTEGER} "
+            + "UNION ALL "
+            + "SELECT ID id,BD_NAME name,'dashboard' type,BD_MENUID parentId FROM BI_DASHBOARDS WHERE BD_MENUID = #{id, jdbcType=INTEGER}")
+    List<DashboardMenuRespDTO> getMenuById(int id);
+
+    /**
+     * 保存
+     * @param dashBoardMenuInfo
+     */
+    @Insert("INSERT INTO BI_DASHBOARDS_MENU(BDM_ID, BDM_NAME, BDM_PARENTID, BDM_INDEX) "
+            + "VALUES(#{id, jdbcType=INTEGER}, #{name, jdbcType=VARCHAR}, #{parentId, jdbcType=INTEGER}, #{index, jdbcType=INTEGER})")
+    @SelectKey(before = true, statement = "SELECT BI_DASHBOARDS_MENU_SEQ.NEXTVAL FROM DUAL", keyProperty = "id", keyColumn = "id", resultType = Integer.class)
+    void insert(DashBoardMenuInfo dashBoardMenuInfo);
+
+    /**
+     * 更新
+     * @param dashBoardMenuInfo
+     */
+    @Update("<script>"
+            + "UPDATE BI_DASHBOARDS_MENU "
+            +   "<set>"
+            +   "<if test=\"name != null\">"
+            +       "BDM_NAME = #{name, jdbcType=VARCHAR},"
+            +   "</if>"
+            +   "<if test=\"parentId != 0\">"
+            +       "BDM_PARENTID = #{parentId, jdbcType=VARCHAR},"
+            +   "</if>"
+            +   "<if test=\"index != 0\">"
+            +       "BDM_INDEX = #{index, jdbcType=VARCHAR},"
+            +   "</if>"
+            +   "</set>"
+            +  "WHERE BDM_ID = #{id, jdbcType=INTEGER}"
+            + "</script>")
+    void updateSelectiveByPrimaryKey(DashBoardMenuInfo dashBoardMenuInfo);
+
+    /**
+     * 删除
+     * @param id
+     */
+    @Delete("DELETE FROM BI_DASHBOARDS_MENU WHERE BDM_ID = #{id, jdbcType=INTEGER}")
+    void deleteByPrimaryKey(Long id);
+
+    /**
+     * 更新看板所属目录
+     * @param dashBoardUpdateMenuInfo
+     */
+    @Update("UPDATE BI_DASHBOARDS SET BD_MENUID = #{menuId,jdbcType=INTEGER} WHERE ID = #{dashBoardId,jdbcType=INTEGER}")
+    void updateDashBoardMenu(DashBoardUpdateMenuInfo dashBoardUpdateMenuInfo);
+
+    /**
+     * 获取目录下的所有看板
+     * @param id
+     * @return
+     */
+    @Select("SELECT id, bd_note as bdNote, bd_name as bdName, CONFIGURATION as bdConfiguration, CREATE_BY as createBy, create_id as createId, CREATE_DATE as createDate, BD_THUMBNAIL as thumbnail, relation_columns as relationColumns, filters, demo, bd_code FROM BI_DASHBOARDS WHERE BD_MENUID = #{id,jdbcType=INTEGER}")
+    List<Dashboards> getDashBoardByMenuId(int id);
+
+}

+ 60 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/configVo/DashBoardMenuInfo.java

@@ -0,0 +1,60 @@
+package com.usoftchina.bi.server.model.vo.configVo;
+
+import java.io.Serializable;
+
+/**
+ * 看板目录传输对象
+ * @Author chenwei
+ * @Date 2019-04-19
+ */
+public class DashBoardMenuInfo implements Serializable {
+
+    /**
+     * ID
+     */
+    private int id;
+    /**
+     * 目录名称
+     */
+    private String name;
+    /**
+     * 父级ID
+     */
+    private int parentId;
+    /**
+     * 排序字段
+     */
+    private int index;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(int parentId) {
+        this.parentId = parentId;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+}

+ 34 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/configVo/DashBoardUpdateMenuInfo.java

@@ -0,0 +1,34 @@
+package com.usoftchina.bi.server.model.vo.configVo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-22
+ */
+@ApiModel(value = "DashBoardUpdateMenuInfo", description = "看板更新目录对象")
+public class DashBoardUpdateMenuInfo {
+
+    @ApiModelProperty(value = "看板ID")
+    private int dashBoardId;
+
+    @ApiModelProperty(value = "目录Id")
+    private int menuId;
+
+    public int getDashBoardId() {
+        return dashBoardId;
+    }
+
+    public void setDashBoardId(int dashBoardId) {
+        this.dashBoardId = dashBoardId;
+    }
+
+    public int getMenuId() {
+        return menuId;
+    }
+
+    public void setMenuId(int menuId) {
+        this.menuId = menuId;
+    }
+}

+ 56 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/vo/dataVo/DashboardMenuRespDTO.java

@@ -0,0 +1,56 @@
+package com.usoftchina.bi.server.model.vo.dataVo;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 看板目录返回对象
+ * @Author chenwei
+ * @Date 2019-04-19
+ */
+public class DashboardMenuRespDTO implements Serializable{
+
+    private int id;
+    /**
+     * 名称:报表名称或目录名称
+     */
+    private String name;
+    /**
+     * 类型:menu或dashboard
+     */
+    private String type;
+
+    private List<DashboardMenuRespDTO> children;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public List<DashboardMenuRespDTO> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<DashboardMenuRespDTO> children) {
+        this.children = children;
+    }
+}

+ 63 - 0
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashBoardMenuService.java

@@ -0,0 +1,63 @@
+package com.usoftchina.bi.server.service.dashboard;
+
+import com.usoftchina.bi.core.base.RepCode;
+import com.usoftchina.bi.core.base.RepEntity;
+import com.usoftchina.bi.server.dao.dashboard.DashBoardMenuMapper;
+import com.usoftchina.bi.server.model.vo.configVo.DashBoardMenuInfo;
+import com.usoftchina.bi.server.model.vo.configVo.DashBoardUpdateMenuInfo;
+import com.usoftchina.bi.server.model.vo.dataVo.DashboardMenuRespDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-19
+ */
+@Service
+public class DashBoardMenuService {
+
+    @Autowired
+    private DashBoardMenuMapper dashBoardMenuMapper;
+
+    public List<DashboardMenuRespDTO> list(){
+        return getData(0);
+    }
+
+    private List<DashboardMenuRespDTO> getData(int id){
+        List<DashboardMenuRespDTO> dashboardMenuRespDTOList = dashBoardMenuMapper.getMenuById(id);
+        if (!CollectionUtils.isEmpty(dashboardMenuRespDTOList)) {
+            for (DashboardMenuRespDTO dashboardMenuRespDTO : dashboardMenuRespDTOList) {
+                if ("menu".equals(dashboardMenuRespDTO.getType())) {
+                    dashboardMenuRespDTO.setChildren(getData(dashboardMenuRespDTO.getId()));
+                }
+            }
+        }
+        return dashboardMenuRespDTOList;
+    }
+
+    public void save(DashBoardMenuInfo dashBoardMenuInfo){
+        dashBoardMenuMapper.insert(dashBoardMenuInfo);
+    }
+
+    public void update(DashBoardMenuInfo dashBoardMenuInfo){
+        dashBoardMenuMapper.updateSelectiveByPrimaryKey(dashBoardMenuInfo);
+    }
+
+    public void deleteById(Long id){
+        Assert.state(id > 0, "参数错误");
+        dashBoardMenuMapper.deleteByPrimaryKey(id);
+    }
+
+    public void updateDashBoardMenu(DashBoardUpdateMenuInfo dashBoardUpdateMenuInfo){
+        dashBoardMenuMapper.updateDashBoardMenu(dashBoardUpdateMenuInfo);
+    }
+
+    public RepEntity getDashBoardByMenuId(int menuId){
+        return new RepEntity(RepCode.success, dashBoardMenuMapper.getDashBoardByMenuId(menuId));
+    }
+
+}

+ 35 - 0
bi-server/src/test/java/com/usoftchina/bi/test/server/service/dashboard/DashBoardMenuServiceTest.java

@@ -0,0 +1,35 @@
+package com.usoftchina.bi.test.server.service.dashboard;
+
+import com.alibaba.fastjson.JSON;
+import com.usoftchina.bi.core.utils.JsonUtils;
+import com.usoftchina.bi.server.Application;
+import com.usoftchina.bi.server.model.vo.dataVo.DashboardMenuRespDTO;
+import com.usoftchina.bi.server.service.dashboard.DashBoardMenuService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.util.List;
+
+/**
+ * 看板目录测试
+ * @Author chenwei
+ * @Date 2019-04-19
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = Application.class)
+public class DashBoardMenuServiceTest {
+
+    @Autowired
+    private DashBoardMenuService dashBoardMenuService;
+
+    @Test
+    public void testList(){
+        List<DashboardMenuRespDTO> dashboardMenuRespDTOList = dashBoardMenuService.list();
+        System.out.println(JsonUtils.toJsonString(dashboardMenuRespDTOList));
+        System.out.println(JSON.toJSONString(dashboardMenuRespDTOList));
+    }
+
+}