From 8ba0f91e7a34471722059033a5cbfa8ca4ad7f43 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Sat, 20 Feb 2021 18:40:43 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/SysDeptController.java | 7 +- frontend/package.json | 3 +- frontend/src/business/App.vue | 2 +- .../business/components/settings/router.js | 2 +- .../business/components/settings/sys/dept.vue | 633 ++++++++++++++++++ .../business/components/settings/sys/test.vue | 47 ++ frontend/src/business/main.js | 4 + frontend/vue.config.js | 3 +- 8 files changed, 694 insertions(+), 7 deletions(-) create mode 100644 frontend/src/business/components/settings/sys/dept.vue create mode 100644 frontend/src/business/components/settings/sys/test.vue diff --git a/backend/src/main/java/io/dataease/controller/sys/SysDeptController.java b/backend/src/main/java/io/dataease/controller/sys/SysDeptController.java index 5b62ec3c03..7e53faa408 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SysDeptController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SysDeptController.java @@ -1,6 +1,7 @@ package io.dataease.controller.sys; import io.dataease.base.domain.SysDept; +import io.dataease.controller.ResultHolder; import io.dataease.service.sys.DeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -16,7 +17,7 @@ import java.util.List; @RequiredArgsConstructor @Api(tags = "系统:部门管理") @RequestMapping("/api/dept") -public class SysDeptController { +public class SysDeptController extends ResultHolder { @Resource @@ -24,9 +25,9 @@ public class SysDeptController { @ApiOperation("查询部门") @PostMapping("/root") - public List rootData(){ + public ResultHolder rootData(){ List root = deptService.root(); - return root; + return success(root); } @ApiOperation("新增部门") diff --git a/frontend/package.json b/frontend/package.json index 56c59e3a8b..80e3c509a7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -46,7 +46,8 @@ "vuedraggable": "^2.24.3", "vuex": "^3.1.2", "xml-js": "^1.6.11", - "yan-progress": "^1.0.3" + "yan-progress": "^1.0.3", + "@riophae/vue-treeselect": "0.4.0" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.1.0", diff --git a/frontend/src/business/App.vue b/frontend/src/business/App.vue index 5d5e6938a6..028a7e623b 100644 --- a/frontend/src/business/App.vue +++ b/frontend/src/business/App.vue @@ -15,7 +15,7 @@ - + diff --git a/frontend/src/business/components/settings/router.js b/frontend/src/business/components/settings/router.js index e3ac05420f..9b2181217c 100644 --- a/frontend/src/business/components/settings/router.js +++ b/frontend/src/business/components/settings/router.js @@ -14,7 +14,7 @@ export default { }, { path: 'organization', - component: () => import('@/business/components/settings/system/Organization'), + component: () => import('@/business/components/settings/sys/dept'), meta: {system: true, title: 'commons.organization'} }, // { diff --git a/frontend/src/business/components/settings/sys/dept.vue b/frontend/src/business/components/settings/sys/dept.vue new file mode 100644 index 0000000000..2478c5782d --- /dev/null +++ b/frontend/src/business/components/settings/sys/dept.vue @@ -0,0 +1,633 @@ + + + + + diff --git a/frontend/src/business/components/settings/sys/test.vue b/frontend/src/business/components/settings/sys/test.vue new file mode 100644 index 0000000000..92fa1d07ac --- /dev/null +++ b/frontend/src/business/components/settings/sys/test.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/frontend/src/business/main.js b/frontend/src/business/main.js index 87b3862555..ed78b3c9c7 100644 --- a/frontend/src/business/main.js +++ b/frontend/src/business/main.js @@ -1,5 +1,6 @@ import Vue from 'vue'; import ElementUI from 'element-ui'; +import Fit2CloudUI from 'fit2cloud-ui'; import '../assets/theme/index.css'; import icon from "../common/js/icon"; import filters from "../common/js/filter"; @@ -31,6 +32,9 @@ Vue.use(icon); Vue.use(ElementUI, { i18n: (key, value) => i18n.t(key, value) }); +Vue.use(Fit2CloudUI, { + i18n: (key, value) => i18n.t(key, value) +}); Vue.use(filters); Vue.use(ajax); Vue.use(chart); diff --git a/frontend/vue.config.js b/frontend/vue.config.js index 2ead3f8545..747e0670bb 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -28,7 +28,8 @@ module.exports = { } }, configureWebpack: { - devtool: 'source-map', + // devtool: 'source-map', + devtool: 'eval-source-map', resolve: { alias: { '@': resolve('src') From 2b909be521225724b05faf711e23152f8144cfde Mon Sep 17 00:00:00 2001 From: junjie Date: Sat, 20 Feb 2021 22:07:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/DataSetGroupController.java | 27 ++++++++ .../dataease/dto/dataset/DataSetGroupDTO.java | 13 ++++ .../service/dataset/DataSetGroupService.java | 35 +++++++++++ .../components/dataset/group/Group.vue | 62 ++++++++++++++++--- frontend/src/i18n/en-US.js | 3 +- frontend/src/i18n/zh-CN.js | 3 +- frontend/src/i18n/zh-TW.js | 3 +- 7 files changed, 136 insertions(+), 10 deletions(-) create mode 100644 backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java create mode 100644 backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java create mode 100644 backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java new file mode 100644 index 0000000000..cfac4320df --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java @@ -0,0 +1,27 @@ +package io.dataease.controller.dataset; + +import io.dataease.base.domain.DatasetGroup; +import io.dataease.dto.dataset.DataSetGroupDTO; +import io.dataease.service.dataset.DataSetGroupService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @Author gin + * @Date 2021/2/20 8:29 下午 + */ +@RestController +@RequestMapping("dataset/group") +public class DataSetGroupController { + @Resource + private DataSetGroupService dataSetGroupService; + + @PostMapping("/save") + public DataSetGroupDTO save(@RequestBody DatasetGroup datasetGroup) { + return dataSetGroupService.save(datasetGroup); + } +} diff --git a/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java b/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java new file mode 100644 index 0000000000..27e7ccc26b --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java @@ -0,0 +1,13 @@ +package io.dataease.dto.dataset; + +import io.dataease.base.domain.DatasetGroup; +import lombok.Data; + +/** + * @Author gin + * @Date 2021/2/20 8:17 下午 + */ +@Data +public class DataSetGroupDTO extends DatasetGroup { + private String label; +} diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java new file mode 100644 index 0000000000..7218d55312 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java @@ -0,0 +1,35 @@ +package io.dataease.service.dataset; + +import com.alibaba.nacos.common.util.UuidUtils; +import io.dataease.base.domain.DatasetGroup; +import io.dataease.base.mapper.DatasetGroupMapper; +import io.dataease.commons.utils.BeanUtils; +import io.dataease.dto.dataset.DataSetGroupDTO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @Author gin + * @Date 2021/2/20 8:10 下午 + */ +@Service +public class DataSetGroupService { + @Resource + private DatasetGroupMapper datasetGroupMapper; + + public DataSetGroupDTO save(DatasetGroup datasetGroup) { + if (StringUtils.isEmpty(datasetGroup.getId())) { + datasetGroup.setId(UuidUtils.generateUuid()); + datasetGroup.setCreateTime(System.currentTimeMillis()); + datasetGroupMapper.insert(datasetGroup); + } else { + datasetGroupMapper.updateByPrimaryKey(datasetGroup); + } + DataSetGroupDTO dataSetGroupDTO = new DataSetGroupDTO(); + BeanUtils.copyBean(dataSetGroupDTO, datasetGroup); + dataSetGroupDTO.setLabel(dataSetGroupDTO.getName()); + return dataSetGroupDTO; + } +} diff --git a/frontend/src/business/components/dataset/group/Group.vue b/frontend/src/business/components/dataset/group/Group.vue index e570ce94a9..6d465c331f 100644 --- a/frontend/src/business/components/dataset/group/Group.vue +++ b/frontend/src/business/components/dataset/group/Group.vue @@ -57,6 +57,18 @@ + + + + + + + + + @@ -100,9 +112,21 @@ label: '二级 3-2' }] }]; + return { search: '', - data: JSON.parse(JSON.stringify(data)) + editGroup: false, + data: JSON.parse(JSON.stringify(data)), + groupForm: { + name: '', + pid: null, + level: 0 + }, + groupFormRules: { + name: [ + {required: true, message: this.$t('commons.input_content'), trigger: 'blur'}, + ], + } } }, mounted() { @@ -113,12 +137,36 @@ }, methods: { addGroup() { - this.$message( - { - message: '添加分组', - type: 'success' + this.editGroup = true; + + }, + + saveGroup() { + console.log(this.groupForm); + this.$refs['groupForm'].validate((valid) => { + if (valid) { + this.$post("/dataset/group/save", this.groupForm, response => { + this.close(); + this.$message({ + message: this.$t('commons.save_success'), + type: 'success', + showClose: true, + }); + }) + } else { + this.$message({ + message: this.$t('commons.input_content'), + type: 'error', + showClose: true, + }); + return false; } - ); + }); + }, + + close() { + this.editGroup = false; + this.$refs['groupForm'].resetFields(); }, addScene() { @@ -130,7 +178,7 @@ ) }, - nodeClick(data,node){ + nodeClick(data, node) { console.log(data); console.log(node); }, diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index 9fcaadd8f9..76768de603 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -1522,6 +1522,7 @@ export default { dataset:{ datalist:'Data List', add_group:'Add Group', - add_scene:'Add Scene' + add_scene:'Add Scene', + group:'DataSet Group' } }; diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index d96d8029a8..2a3bddda22 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -1525,6 +1525,7 @@ export default { dataset:{ datalist:'数据列表', add_group:'添加分组', - add_scene:'添加场景' + add_scene:'添加场景', + group:'分组' } }; diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index 31a9cc3a6f..f46f0f1161 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -1523,6 +1523,7 @@ export default { dataset:{ datalist:'數據列表', add_group:'添加分組', - add_scene:'添加場景' + add_scene:'添加場景', + group:'分組' } }; From 75e9537a29de5617eccbe0d100eb62b5b6ee54ee Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 22 Feb 2021 15:23:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E9=9B=86=20?= =?UTF-8?q?=E5=88=86=E7=BB=84=20=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/base/domain/DatasetGroup.java | 2 + .../base/domain/DatasetGroupExample.java | 70 +++ .../io/dataease/base/domain/DatasetScene.java | 19 - .../base/domain/DatasetSceneExample.java | 540 ------------------ .../base/mapper/DatasetGroupMapper.xml | 25 +- .../base/mapper/DatasetSceneMapper.java | 30 - .../base/mapper/DatasetSceneMapper.xml | 211 ------- .../dataset/DataSetGroupController.java | 17 +- .../request/dataset/DataSetGroupRequest.java | 13 + .../dataease/dto/dataset/DataSetGroupDTO.java | 3 + .../service/dataset/DataSetGroupService.java | 79 +++ .../db/migration/V2__metersphere_ddl.sql | 10 +- .../business/components/dataset/DataSet.vue | 4 +- .../components/dataset/group/Group.vue | 452 ++++++++++----- frontend/src/i18n/en-US.js | 16 +- frontend/src/i18n/zh-CN.js | 16 +- frontend/src/i18n/zh-TW.js | 16 +- 17 files changed, 560 insertions(+), 963 deletions(-) delete mode 100644 backend/src/main/java/io/dataease/base/domain/DatasetScene.java delete mode 100644 backend/src/main/java/io/dataease/base/domain/DatasetSceneExample.java delete mode 100644 backend/src/main/java/io/dataease/base/mapper/DatasetSceneMapper.java delete mode 100644 backend/src/main/java/io/dataease/base/mapper/DatasetSceneMapper.xml create mode 100644 backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java diff --git a/backend/src/main/java/io/dataease/base/domain/DatasetGroup.java b/backend/src/main/java/io/dataease/base/domain/DatasetGroup.java index 243fdb6bde..f5f562e962 100644 --- a/backend/src/main/java/io/dataease/base/domain/DatasetGroup.java +++ b/backend/src/main/java/io/dataease/base/domain/DatasetGroup.java @@ -13,6 +13,8 @@ public class DatasetGroup implements Serializable { private Integer level; + private String type; + private String createBy; private Long createTime; diff --git a/backend/src/main/java/io/dataease/base/domain/DatasetGroupExample.java b/backend/src/main/java/io/dataease/base/domain/DatasetGroupExample.java index 1f3b2f4440..c000f8f0aa 100644 --- a/backend/src/main/java/io/dataease/base/domain/DatasetGroupExample.java +++ b/backend/src/main/java/io/dataease/base/domain/DatasetGroupExample.java @@ -374,6 +374,76 @@ public class DatasetGroupExample { return (Criteria) this; } + public Criteria andTypeIsNull() { + addCriterion("`type` is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("`type` is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("`type` =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("`type` <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("`type` >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("`type` >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("`type` <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("`type` <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("`type` like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("`type` not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("`type` in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("`type` not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("`type` between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("`type` not between", value1, value2, "type"); + return (Criteria) this; + } + public Criteria andCreateByIsNull() { addCriterion("create_by is null"); return (Criteria) this; diff --git a/backend/src/main/java/io/dataease/base/domain/DatasetScene.java b/backend/src/main/java/io/dataease/base/domain/DatasetScene.java deleted file mode 100644 index 9d860e998a..0000000000 --- a/backend/src/main/java/io/dataease/base/domain/DatasetScene.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.dataease.base.domain; - -import java.io.Serializable; -import lombok.Data; - -@Data -public class DatasetScene implements Serializable { - private String id; - - private String name; - - private String groupId; - - private String createBy; - - private Long createTime; - - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/domain/DatasetSceneExample.java b/backend/src/main/java/io/dataease/base/domain/DatasetSceneExample.java deleted file mode 100644 index df9477381e..0000000000 --- a/backend/src/main/java/io/dataease/base/domain/DatasetSceneExample.java +++ /dev/null @@ -1,540 +0,0 @@ -package io.dataease.base.domain; - -import java.util.ArrayList; -import java.util.List; - -public class DatasetSceneExample { - protected String orderByClause; - - protected boolean distinct; - - protected List oredCriteria; - - public DatasetSceneExample() { - oredCriteria = new ArrayList(); - } - - public void setOrderByClause(String orderByClause) { - this.orderByClause = orderByClause; - } - - public String getOrderByClause() { - return orderByClause; - } - - public void setDistinct(boolean distinct) { - this.distinct = distinct; - } - - public boolean isDistinct() { - return distinct; - } - - public List getOredCriteria() { - return oredCriteria; - } - - public void or(Criteria criteria) { - oredCriteria.add(criteria); - } - - public Criteria or() { - Criteria criteria = createCriteriaInternal(); - oredCriteria.add(criteria); - return criteria; - } - - public Criteria createCriteria() { - Criteria criteria = createCriteriaInternal(); - if (oredCriteria.size() == 0) { - oredCriteria.add(criteria); - } - return criteria; - } - - protected Criteria createCriteriaInternal() { - Criteria criteria = new Criteria(); - return criteria; - } - - public void clear() { - oredCriteria.clear(); - orderByClause = null; - distinct = false; - } - - protected abstract static class GeneratedCriteria { - protected List criteria; - - protected GeneratedCriteria() { - super(); - criteria = new ArrayList(); - } - - public boolean isValid() { - return criteria.size() > 0; - } - - public List getAllCriteria() { - return criteria; - } - - public List getCriteria() { - return criteria; - } - - protected void addCriterion(String condition) { - if (condition == null) { - throw new RuntimeException("Value for condition cannot be null"); - } - criteria.add(new Criterion(condition)); - } - - protected void addCriterion(String condition, Object value, String property) { - if (value == null) { - throw new RuntimeException("Value for " + property + " cannot be null"); - } - criteria.add(new Criterion(condition, value)); - } - - protected void addCriterion(String condition, Object value1, Object value2, String property) { - if (value1 == null || value2 == null) { - throw new RuntimeException("Between values for " + property + " cannot be null"); - } - criteria.add(new Criterion(condition, value1, value2)); - } - - public Criteria andIdIsNull() { - addCriterion("id is null"); - return (Criteria) this; - } - - public Criteria andIdIsNotNull() { - addCriterion("id is not null"); - return (Criteria) this; - } - - public Criteria andIdEqualTo(String value) { - addCriterion("id =", value, "id"); - return (Criteria) this; - } - - public Criteria andIdNotEqualTo(String value) { - addCriterion("id <>", value, "id"); - return (Criteria) this; - } - - public Criteria andIdGreaterThan(String value) { - addCriterion("id >", value, "id"); - return (Criteria) this; - } - - public Criteria andIdGreaterThanOrEqualTo(String value) { - addCriterion("id >=", value, "id"); - return (Criteria) this; - } - - public Criteria andIdLessThan(String value) { - addCriterion("id <", value, "id"); - return (Criteria) this; - } - - public Criteria andIdLessThanOrEqualTo(String value) { - addCriterion("id <=", value, "id"); - return (Criteria) this; - } - - public Criteria andIdLike(String value) { - addCriterion("id like", value, "id"); - return (Criteria) this; - } - - public Criteria andIdNotLike(String value) { - addCriterion("id not like", value, "id"); - return (Criteria) this; - } - - public Criteria andIdIn(List values) { - addCriterion("id in", values, "id"); - return (Criteria) this; - } - - public Criteria andIdNotIn(List values) { - addCriterion("id not in", values, "id"); - return (Criteria) this; - } - - public Criteria andIdBetween(String value1, String value2) { - addCriterion("id between", value1, value2, "id"); - return (Criteria) this; - } - - public Criteria andIdNotBetween(String value1, String value2) { - addCriterion("id not between", value1, value2, "id"); - return (Criteria) this; - } - - public Criteria andNameIsNull() { - addCriterion("`name` is null"); - return (Criteria) this; - } - - public Criteria andNameIsNotNull() { - addCriterion("`name` is not null"); - return (Criteria) this; - } - - public Criteria andNameEqualTo(String value) { - addCriterion("`name` =", value, "name"); - return (Criteria) this; - } - - public Criteria andNameNotEqualTo(String value) { - addCriterion("`name` <>", value, "name"); - return (Criteria) this; - } - - public Criteria andNameGreaterThan(String value) { - addCriterion("`name` >", value, "name"); - return (Criteria) this; - } - - public Criteria andNameGreaterThanOrEqualTo(String value) { - addCriterion("`name` >=", value, "name"); - return (Criteria) this; - } - - public Criteria andNameLessThan(String value) { - addCriterion("`name` <", value, "name"); - return (Criteria) this; - } - - public Criteria andNameLessThanOrEqualTo(String value) { - addCriterion("`name` <=", value, "name"); - return (Criteria) this; - } - - public Criteria andNameLike(String value) { - addCriterion("`name` like", value, "name"); - return (Criteria) this; - } - - public Criteria andNameNotLike(String value) { - addCriterion("`name` not like", value, "name"); - return (Criteria) this; - } - - public Criteria andNameIn(List values) { - addCriterion("`name` in", values, "name"); - return (Criteria) this; - } - - public Criteria andNameNotIn(List values) { - addCriterion("`name` not in", values, "name"); - return (Criteria) this; - } - - public Criteria andNameBetween(String value1, String value2) { - addCriterion("`name` between", value1, value2, "name"); - return (Criteria) this; - } - - public Criteria andNameNotBetween(String value1, String value2) { - addCriterion("`name` not between", value1, value2, "name"); - return (Criteria) this; - } - - public Criteria andGroupIdIsNull() { - addCriterion("group_id is null"); - return (Criteria) this; - } - - public Criteria andGroupIdIsNotNull() { - addCriterion("group_id is not null"); - return (Criteria) this; - } - - public Criteria andGroupIdEqualTo(String value) { - addCriterion("group_id =", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdNotEqualTo(String value) { - addCriterion("group_id <>", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdGreaterThan(String value) { - addCriterion("group_id >", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdGreaterThanOrEqualTo(String value) { - addCriterion("group_id >=", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdLessThan(String value) { - addCriterion("group_id <", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdLessThanOrEqualTo(String value) { - addCriterion("group_id <=", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdLike(String value) { - addCriterion("group_id like", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdNotLike(String value) { - addCriterion("group_id not like", value, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdIn(List values) { - addCriterion("group_id in", values, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdNotIn(List values) { - addCriterion("group_id not in", values, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdBetween(String value1, String value2) { - addCriterion("group_id between", value1, value2, "groupId"); - return (Criteria) this; - } - - public Criteria andGroupIdNotBetween(String value1, String value2) { - addCriterion("group_id not between", value1, value2, "groupId"); - return (Criteria) this; - } - - public Criteria andCreateByIsNull() { - addCriterion("create_by is null"); - return (Criteria) this; - } - - public Criteria andCreateByIsNotNull() { - addCriterion("create_by is not null"); - return (Criteria) this; - } - - public Criteria andCreateByEqualTo(String value) { - addCriterion("create_by =", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByNotEqualTo(String value) { - addCriterion("create_by <>", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByGreaterThan(String value) { - addCriterion("create_by >", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByGreaterThanOrEqualTo(String value) { - addCriterion("create_by >=", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByLessThan(String value) { - addCriterion("create_by <", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByLessThanOrEqualTo(String value) { - addCriterion("create_by <=", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByLike(String value) { - addCriterion("create_by like", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByNotLike(String value) { - addCriterion("create_by not like", value, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByIn(List values) { - addCriterion("create_by in", values, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByNotIn(List values) { - addCriterion("create_by not in", values, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByBetween(String value1, String value2) { - addCriterion("create_by between", value1, value2, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateByNotBetween(String value1, String value2) { - addCriterion("create_by not between", value1, value2, "createBy"); - return (Criteria) this; - } - - public Criteria andCreateTimeIsNull() { - addCriterion("create_time is null"); - return (Criteria) this; - } - - public Criteria andCreateTimeIsNotNull() { - addCriterion("create_time is not null"); - return (Criteria) this; - } - - public Criteria andCreateTimeEqualTo(Long value) { - addCriterion("create_time =", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeNotEqualTo(Long value) { - addCriterion("create_time <>", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeGreaterThan(Long value) { - addCriterion("create_time >", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) { - addCriterion("create_time >=", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeLessThan(Long value) { - addCriterion("create_time <", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeLessThanOrEqualTo(Long value) { - addCriterion("create_time <=", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeIn(List values) { - addCriterion("create_time in", values, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeNotIn(List values) { - addCriterion("create_time not in", values, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeBetween(Long value1, Long value2) { - addCriterion("create_time between", value1, value2, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeNotBetween(Long value1, Long value2) { - addCriterion("create_time not between", value1, value2, "createTime"); - return (Criteria) this; - } - } - - public static class Criteria extends GeneratedCriteria { - - protected Criteria() { - super(); - } - } - - public static class Criterion { - private String condition; - - private Object value; - - private Object secondValue; - - private boolean noValue; - - private boolean singleValue; - - private boolean betweenValue; - - private boolean listValue; - - private String typeHandler; - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } - - protected Criterion(String condition) { - super(); - this.condition = condition; - this.typeHandler = null; - this.noValue = true; - } - - protected Criterion(String condition, Object value, String typeHandler) { - super(); - this.condition = condition; - this.value = value; - this.typeHandler = typeHandler; - if (value instanceof List) { - this.listValue = true; - } else { - this.singleValue = true; - } - } - - protected Criterion(String condition, Object value) { - this(condition, value, null); - } - - protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { - super(); - this.condition = condition; - this.value = value; - this.secondValue = secondValue; - this.typeHandler = typeHandler; - this.betweenValue = true; - } - - protected Criterion(String condition, Object value, Object secondValue) { - this(condition, value, secondValue, null); - } - } -} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/DatasetGroupMapper.xml b/backend/src/main/java/io/dataease/base/mapper/DatasetGroupMapper.xml index 536a853c73..fbbf54126b 100644 --- a/backend/src/main/java/io/dataease/base/mapper/DatasetGroupMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/DatasetGroupMapper.xml @@ -6,6 +6,7 @@ + @@ -68,7 +69,7 @@ - id, `name`, pid, `level`, create_by, create_time + id, `name`, pid, `level`, `type`, create_by, create_time - select - - distinct - - - from dataset_scene - - - - - order by ${orderByClause} - - - - - delete from dataset_scene - where id = #{id,jdbcType=VARCHAR} - - - delete from dataset_scene - - - - - - insert into dataset_scene (id, `name`, group_id, - create_by, create_time) - values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{groupId,jdbcType=VARCHAR}, - #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}) - - - insert into dataset_scene - - - id, - - - `name`, - - - group_id, - - - create_by, - - - create_time, - - - - - #{id,jdbcType=VARCHAR}, - - - #{name,jdbcType=VARCHAR}, - - - #{groupId,jdbcType=VARCHAR}, - - - #{createBy,jdbcType=VARCHAR}, - - - #{createTime,jdbcType=BIGINT}, - - - - - - update dataset_scene - - - id = #{record.id,jdbcType=VARCHAR}, - - - `name` = #{record.name,jdbcType=VARCHAR}, - - - group_id = #{record.groupId,jdbcType=VARCHAR}, - - - create_by = #{record.createBy,jdbcType=VARCHAR}, - - - create_time = #{record.createTime,jdbcType=BIGINT}, - - - - - - - - update dataset_scene - set id = #{record.id,jdbcType=VARCHAR}, - `name` = #{record.name,jdbcType=VARCHAR}, - group_id = #{record.groupId,jdbcType=VARCHAR}, - create_by = #{record.createBy,jdbcType=VARCHAR}, - create_time = #{record.createTime,jdbcType=BIGINT} - - - - - - update dataset_scene - - - `name` = #{name,jdbcType=VARCHAR}, - - - group_id = #{groupId,jdbcType=VARCHAR}, - - - create_by = #{createBy,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=BIGINT}, - - - where id = #{id,jdbcType=VARCHAR} - - - update dataset_scene - set `name` = #{name,jdbcType=VARCHAR}, - group_id = #{groupId,jdbcType=VARCHAR}, - create_by = #{createBy,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=BIGINT} - where id = #{id,jdbcType=VARCHAR} - - \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java index cfac4320df..a569bfad26 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java @@ -1,14 +1,13 @@ package io.dataease.controller.dataset; import io.dataease.base.domain.DatasetGroup; +import io.dataease.controller.request.dataset.DataSetGroupRequest; import io.dataease.dto.dataset.DataSetGroupDTO; import io.dataease.service.dataset.DataSetGroupService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * @Author gin @@ -24,4 +23,14 @@ public class DataSetGroupController { public DataSetGroupDTO save(@RequestBody DatasetGroup datasetGroup) { return dataSetGroupService.save(datasetGroup); } + + @PostMapping("/tree") + public List tree(@RequestBody DataSetGroupRequest datasetGroup) { + return dataSetGroupService.tree(datasetGroup); + } + + @PostMapping("/delete/{id}") + public void tree(@PathVariable String id) { + dataSetGroupService.delete(id); + } } diff --git a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java new file mode 100644 index 0000000000..77a095c176 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java @@ -0,0 +1,13 @@ +package io.dataease.controller.request.dataset; + +import io.dataease.base.domain.DatasetGroup; +import lombok.Data; + +/** + * @Author gin + * @Date 2021/2/22 1:30 下午 + */ +@Data +public class DataSetGroupRequest extends DatasetGroup { + private String sort; +} diff --git a/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java b/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java index 27e7ccc26b..058c0b43f5 100644 --- a/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java +++ b/backend/src/main/java/io/dataease/dto/dataset/DataSetGroupDTO.java @@ -3,6 +3,8 @@ package io.dataease.dto.dataset; import io.dataease.base.domain.DatasetGroup; import lombok.Data; +import java.util.List; + /** * @Author gin * @Date 2021/2/20 8:17 下午 @@ -10,4 +12,5 @@ import lombok.Data; @Data public class DataSetGroupDTO extends DatasetGroup { private String label; + private List children; } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java index 7218d55312..fa97f5af66 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java @@ -2,13 +2,19 @@ package io.dataease.service.dataset; import com.alibaba.nacos.common.util.UuidUtils; import io.dataease.base.domain.DatasetGroup; +import io.dataease.base.domain.DatasetGroupExample; import io.dataease.base.mapper.DatasetGroupMapper; import io.dataease.commons.utils.BeanUtils; +import io.dataease.controller.request.dataset.DataSetGroupRequest; import io.dataease.dto.dataset.DataSetGroupDTO; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** * @Author gin @@ -32,4 +38,77 @@ public class DataSetGroupService { dataSetGroupDTO.setLabel(dataSetGroupDTO.getName()); return dataSetGroupDTO; } + + public void delete(String id) { + DataSetGroupRequest datasetGroup = new DataSetGroupRequest(); + datasetGroup.setId(id); + List tree = tree(datasetGroup); + List ids = new ArrayList<>(); + getAllId(tree, ids); + DatasetGroupExample datasetGroupExample = new DatasetGroupExample(); + datasetGroupExample.createCriteria().andIdIn(ids); + datasetGroupMapper.deleteByExample(datasetGroupExample); + } + + public List tree(DataSetGroupRequest datasetGroup) { + DatasetGroupExample datasetGroupExample = new DatasetGroupExample(); + DatasetGroupExample.Criteria criteria = datasetGroupExample.createCriteria(); + if (StringUtils.isNotEmpty(datasetGroup.getName())) { + criteria.andNameLike("%" + datasetGroup.getName() + "%"); + } + if (StringUtils.isNotEmpty(datasetGroup.getType())) { + criteria.andTypeEqualTo(datasetGroup.getType()); + } + if (StringUtils.isNotEmpty(datasetGroup.getId())) { + criteria.andIdEqualTo(datasetGroup.getId()); + } else { + criteria.andLevelEqualTo(0); + } + datasetGroupExample.setOrderByClause(datasetGroup.getSort()); + List datasetGroups = datasetGroupMapper.selectByExample(datasetGroupExample); + List DTOs = datasetGroups.stream().map(ele -> { + DataSetGroupDTO dto = new DataSetGroupDTO(); + BeanUtils.copyBean(dto, ele); + dto.setLabel(ele.getName()); + return dto; + }).collect(Collectors.toList()); + getAll(DTOs, datasetGroup); + return DTOs; + } + + public void getAll(List list, DataSetGroupRequest datasetGroup) { + for (DataSetGroupDTO obj : list) { + DatasetGroupExample datasetGroupExample = new DatasetGroupExample(); + DatasetGroupExample.Criteria criteria = datasetGroupExample.createCriteria(); + if (StringUtils.isNotEmpty(datasetGroup.getName())) { + criteria.andNameLike("%" + datasetGroup.getName() + "%"); + } + if (StringUtils.isNotEmpty(datasetGroup.getType())) { + criteria.andTypeEqualTo(datasetGroup.getType()); + } + criteria.andPidEqualTo(obj.getId()); + datasetGroupExample.setOrderByClause(datasetGroup.getSort()); + List datasetGroups = datasetGroupMapper.selectByExample(datasetGroupExample); + List DTOs = datasetGroups.stream().map(ele -> { + DataSetGroupDTO dto = new DataSetGroupDTO(); + BeanUtils.copyBean(dto, ele); + dto.setLabel(ele.getName()); + return dto; + }).collect(Collectors.toList()); + obj.setChildren(DTOs); + if (CollectionUtils.isNotEmpty(DTOs)) { + getAll(DTOs, datasetGroup); + } + } + } + + public List getAllId(List list, List ids) { + for (DataSetGroupDTO dto : list) { + ids.add(dto.getId()); + if (CollectionUtils.isNotEmpty(dto.getChildren())) { + getAllId(dto.getChildren(), ids); + } + } + return ids; + } } diff --git a/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql b/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql index 1743b2210b..0fcce1f2a1 100644 --- a/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql +++ b/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql @@ -340,19 +340,11 @@ CREATE TABLE IF NOT EXISTS `dataset_group` ( `name` varchar(64) NOT NULL COMMENT '名称', `pid` varchar(50) COMMENT '父级ID', `level` int(10) COMMENT '当前分组处于第几级', + `type` varchar(50) COMMENT 'group or scene', `create_by` varchar(50) COMMENT '创建人ID', `create_time` bigint(13) COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS `dataset_scene` ( - `id` varchar(50) NOT NULL COMMENT 'ID', - `name` varchar(64) NOT NULL COMMENT '名称', - `group_id` varchar(50) COMMENT 'DataSet Group ID', - `create_by` varchar(50) COMMENT '创建人ID', - `create_time` bigint(13) COMMENT '创建时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- dataset end diff --git a/frontend/src/business/components/dataset/DataSet.vue b/frontend/src/business/components/dataset/DataSet.vue index 20dda22ca0..7d59ddd3ec 100644 --- a/frontend/src/business/components/dataset/DataSet.vue +++ b/frontend/src/business/components/dataset/DataSet.vue @@ -34,8 +34,8 @@ .ms-aside-container { height: calc(100vh - 40px); padding: 20px; - min-width: 260px; - max-width: 460px; + min-width: 300px; + max-width: 500px; } .ms-main-container { diff --git a/frontend/src/business/components/dataset/group/Group.vue b/frontend/src/business/components/dataset/group/Group.vue index 6d465c331f..8c4a9e22ea 100644 --- a/frontend/src/business/components/dataset/group/Group.vue +++ b/frontend/src/business/components/dataset/group/Group.vue @@ -1,204 +1,364 @@ diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index 76768de603..b0bd700005 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -1523,6 +1523,20 @@ export default { datalist:'Data List', add_group:'Add Group', add_scene:'Add Scene', - group:'DataSet Group' + group:'Group', + scene:'Scene', + delete:'Delete', + move_to:'Move', + rename:'Rename', + tips:'Tips', + confirm_delete:'Confirm Delete', + delete_success:'Delete Success', + confirm:'Confirm', + cancel:'Cancel', + search:'Search', + back:'Back', + add_table:'Add Table', + process:'Process', + update:'Update' } }; diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index 2a3bddda22..8b52e52982 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -1526,6 +1526,20 @@ export default { datalist:'数据列表', add_group:'添加分组', add_scene:'添加场景', - group:'分组' + group:'分组', + scene:'场景', + delete:'删除', + move_to:'移动到', + rename:'重命名', + tips:'提示', + confirm_delete:'确认删除', + delete_success:'删除成功', + confirm:'确认', + cancel:'取消', + search:'搜索', + back:'返回', + add_table:'添加表', + process:'进度', + update:'更新' } }; diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index f46f0f1161..f4ce65bbc3 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -1524,6 +1524,20 @@ export default { datalist:'數據列表', add_group:'添加分組', add_scene:'添加場景', - group:'分組' + group:'分組', + scene:'場景', + delete:'刪除', + move_to:'移動到', + rename:'重命名', + tips:'提示', + confirm_delete:'確認刪除', + delete_success:'刪除成功', + confirm:'確認', + cancel:'取消', + search:'搜索', + back:'返回', + add_table:'添加表', + process:'進度', + update:'更新' } };