From d634950272c28cf94b18ef301a3955361986ef6a Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Mon, 19 Sep 2022 17:07:50 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=B8=82=E5=9C=BA=EF=BC=8C=E6=94=AF=E6=8C=81=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/panel/AppLogController.java | 44 + .../panel/PanelAppTemplateController.java | 24 +- .../panel/PanelGroupController.java | 15 +- .../request/dataset/DataSetTableRequest.java | 2 + .../panel/PanelAppTemplateApplyRequest.java | 27 + .../dto/appTemplateMarket/AppLogDTO.java | 24 + .../dto/appTemplateMarket/AppLogGridDTO.java | 19 + .../dataease/dto/panel/PanelExport2App.java | 17 +- .../io/dataease/dto/panel/PanelGroupDTO.java | 2 + .../java/io/dataease/ext/ExtAppLogMapper.java | 9 + .../java/io/dataease/ext/ExtAppLogMapper.xml | 51 + .../common/base/domain/PanelAppTemplate.java | 29 - .../base/domain/PanelAppTemplateExample.java | 870 ------------------ .../domain/PanelAppTemplateWithBLOBs.java | 29 - .../base/mapper/PanelAppTemplateMapper.java | 37 - .../base/mapper/PanelAppTemplateMapper.xml | 470 ---------- .../service/dataset/DataSetGroupService.java | 4 +- .../service/dataset/DataSetTableService.java | 21 +- .../service/datasource/DatasourceService.java | 2 +- .../panel/PanelAppTemplateLogService.java | 50 + .../panel/PanelAppTemplateService.java | 207 ++++- .../service/panel/PanelGroupService.java | 138 ++- .../service/panel/PanelViewService.java | 13 +- .../service/panel/applog/AppLogManager.java | 184 ++++ .../panel/applog/AppLogQueryParam.java | 11 + .../service/panel/applog/AppLogService.java | 37 + .../main/resources/db/migration/V40__1.15.sql | 39 +- .../resources/i18n/messages_en_US.properties | 7 +- .../resources/i18n/messages_zh_CN.properties | 7 +- .../resources/i18n/messages_zh_TW.properties | 7 +- frontend/src/api/appTemplateMarket/index.js | 20 + frontend/src/api/appTemplateMarket/log.js | 28 + frontend/src/api/dataset/dataset.js | 9 + frontend/src/api/panel/panel.js | 9 + .../system/{templateApp.js => appTemplate.js} | 24 +- frontend/src/api/system/datasource.js | 1 + frontend/src/components/msgCfm/index.js | 4 +- frontend/src/lang/en.js | 13 +- frontend/src/lang/tw.js | 11 +- frontend/src/lang/zh.js | 11 +- .../component/TemplateImport.vue | 67 +- .../component/TemplateItem.vue | 12 +- .../component/TemplateList.vue | 10 +- .../{templateApp => appTemplate}/index.vue | 145 ++- .../component/AppTemplateItem.vue | 102 ++ .../component/MarketPreview.vue | 507 ++++++++++ .../component/TemplateMarketItem.vue | 122 +++ .../component/TemplateMarketPreviewItem.vue | 104 +++ .../views/panel/appTemplateMarket/index.vue | 332 +++++++ .../appTemplateMarket/log/filterUser.vue | 107 +++ .../panel/appTemplateMarket/log/index.vue | 392 ++++++++ frontend/src/views/panel/list/PanelList.vue | 21 +- .../src/views/system/datasource/DsForm.vue | 144 ++- 53 files changed, 3014 insertions(+), 1577 deletions(-) create mode 100644 backend/src/main/java/io/dataease/controller/panel/AppLogController.java create mode 100644 backend/src/main/java/io/dataease/controller/request/panel/PanelAppTemplateApplyRequest.java create mode 100644 backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogDTO.java create mode 100644 backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogGridDTO.java create mode 100644 backend/src/main/java/io/dataease/ext/ExtAppLogMapper.java create mode 100644 backend/src/main/java/io/dataease/ext/ExtAppLogMapper.xml delete mode 100644 backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplate.java delete mode 100644 backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateExample.java delete mode 100644 backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateWithBLOBs.java delete mode 100644 backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.java delete mode 100644 backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.xml create mode 100644 backend/src/main/java/io/dataease/service/panel/PanelAppTemplateLogService.java create mode 100644 backend/src/main/java/io/dataease/service/panel/applog/AppLogManager.java create mode 100644 backend/src/main/java/io/dataease/service/panel/applog/AppLogQueryParam.java create mode 100644 backend/src/main/java/io/dataease/service/panel/applog/AppLogService.java create mode 100644 frontend/src/api/appTemplateMarket/index.js create mode 100644 frontend/src/api/appTemplateMarket/log.js rename frontend/src/api/system/{templateApp.js => appTemplate.js} (58%) rename frontend/src/views/panel/{templateApp => appTemplate}/component/TemplateImport.vue (74%) rename frontend/src/views/panel/{templateApp => appTemplate}/component/TemplateItem.vue (92%) rename frontend/src/views/panel/{templateApp => appTemplate}/component/TemplateList.vue (95%) rename frontend/src/views/panel/{templateApp => appTemplate}/index.vue (72%) create mode 100644 frontend/src/views/panel/appTemplateMarket/component/AppTemplateItem.vue create mode 100644 frontend/src/views/panel/appTemplateMarket/component/MarketPreview.vue create mode 100644 frontend/src/views/panel/appTemplateMarket/component/TemplateMarketItem.vue create mode 100644 frontend/src/views/panel/appTemplateMarket/component/TemplateMarketPreviewItem.vue create mode 100644 frontend/src/views/panel/appTemplateMarket/index.vue create mode 100644 frontend/src/views/panel/appTemplateMarket/log/filterUser.vue create mode 100644 frontend/src/views/panel/appTemplateMarket/log/index.vue diff --git a/backend/src/main/java/io/dataease/controller/panel/AppLogController.java b/backend/src/main/java/io/dataease/controller/panel/AppLogController.java new file mode 100644 index 0000000000..f388d18a78 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/panel/AppLogController.java @@ -0,0 +1,44 @@ +package io.dataease.controller.panel; + +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import io.dataease.commons.utils.PageUtils; +import io.dataease.commons.utils.Pager; +import io.dataease.controller.handler.annotation.I18n; +import io.dataease.controller.sys.request.KeyGridRequest; +import io.dataease.dto.appTemplateMarket.AppLogGridDTO; +import io.dataease.service.panel.applog.AppLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@Api(tags = "应用市场:应用日志") +@ApiSupport(order = 220) +@RequestMapping("/app/log") +public class AppLogController { + + @Resource + private AppLogService applogService; + + @I18n + @ApiOperation("查询日志") + @PostMapping("/logGrid/{goPage}/{pageSize}") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "path", name = "goPage", value = "页码", required = true, dataType = "Integer"), + @ApiImplicitParam(paramType = "path", name = "pageSize", value = "页容量", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "request", value = "查询条件", required = true) + }) + public Pager> logGrid(@PathVariable int goPage, @PathVariable int pageSize, + @RequestBody KeyGridRequest request) { + Page page = PageHelper.startPage(goPage, pageSize, true); + return PageUtils.setPageInfo(page, applogService.query(request)); + } + +} diff --git a/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java b/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java index a7e709a12b..f41f81a9b4 100644 --- a/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java +++ b/backend/src/main/java/io/dataease/controller/panel/PanelAppTemplateController.java @@ -2,6 +2,7 @@ package io.dataease.controller.panel; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.controller.handler.annotation.I18n; +import io.dataease.controller.request.panel.PanelAppTemplateApplyRequest; import io.dataease.controller.request.panel.PanelAppTemplateRequest; import io.dataease.plugins.common.base.domain.PanelAppTemplate; import io.dataease.plugins.common.base.domain.PanelAppTemplateWithBLOBs; @@ -21,18 +22,16 @@ import java.util.List; @Api(tags = "仪表板:应该关系") @ApiSupport(order = 170) @RestController -@RequestMapping("templateApp") +@RequestMapping("appTemplate") public class PanelAppTemplateController { - - @Resource private PanelAppTemplateService panelAppTemplateService; @ApiOperation("查询") @PostMapping("/find") @I18n - public List templateAppList(@RequestBody PanelAppTemplateRequest request) { + public List appTemplateList(@RequestBody PanelAppTemplateRequest request) { return panelAppTemplateService.list(request); } @@ -50,11 +49,11 @@ public class PanelAppTemplateController { panelAppTemplateService.update(request); } - @ApiOperation("更新") - @DeleteMapping("/delete/{templateAppId}") + @ApiOperation("删除") + @DeleteMapping("/delete/{appTemplateId}") @I18n - public void delete(@PathVariable String templateAppId) { - panelAppTemplateService.delete(templateAppId); + public void delete(@PathVariable String appTemplateId) { + panelAppTemplateService.delete(appTemplateId); } @ApiOperation("名称校验") @@ -63,4 +62,13 @@ public class PanelAppTemplateController { public String nameCheck(@RequestBody PanelAppTemplateRequest request) { return panelAppTemplateService.nameCheck(request); } + + @ApiOperation("应用模板") + @PostMapping("/appApply") + @I18n + public String appApply(@RequestBody PanelAppTemplateApplyRequest request) throws Exception{ +// return panelAppTemplateService.appApply(request); + return null; + } + } diff --git a/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java b/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java index 118308fb86..25623171ad 100644 --- a/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java +++ b/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java @@ -6,13 +6,10 @@ import io.dataease.auth.annotation.DePermissionProxy; import io.dataease.auth.annotation.DePermissions; import io.dataease.auth.service.impl.ExtAuthServiceImpl; import io.dataease.commons.constants.PanelConstants; -import io.dataease.controller.request.panel.PanelGroupBaseInfoRequest; -import io.dataease.controller.request.panel.PanelViewLogRequest; +import io.dataease.controller.request.panel.*; import io.dataease.commons.constants.DePermissionType; import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.controller.handler.annotation.I18n; -import io.dataease.controller.request.panel.PanelGroupRequest; -import io.dataease.controller.request.panel.PanelViewDetailsRequest; import io.dataease.dto.PermissionProxy; import io.dataease.dto.authModel.VAuthModelDTO; import io.dataease.dto.panel.PanelExport2App; @@ -196,4 +193,14 @@ public class PanelGroupController { public PanelExport2App export2AppCheck(@PathVariable String panelId){ return panelGroupService.panelExport2AppCheck(panelId); } + + @PostMapping("/appApply") + public PanelGroupDTO appApply(@RequestBody PanelAppTemplateApplyRequest request) throws Exception{ + String panelId = panelGroupService.appApply(request); + PanelGroupDTO result = findOne(panelId); + result.setParents(authService.parentResource(panelId,"panel")); + result.setRequestId(UUIDUtil.getUUIDAsString()); + result.setResponseSource("appApply"); + return result; + } } diff --git a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java index c3d1c793fd..bb19bc50d6 100644 --- a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java @@ -38,4 +38,6 @@ public class DataSetTableRequest extends DatasetTable { @ApiModelProperty("是否合并sheet") private boolean mergeSheet = false; private boolean previewForTask = false; + @ApiModelProperty("操作来源") + private String optFrom; } diff --git a/backend/src/main/java/io/dataease/controller/request/panel/PanelAppTemplateApplyRequest.java b/backend/src/main/java/io/dataease/controller/request/panel/PanelAppTemplateApplyRequest.java new file mode 100644 index 0000000000..5446e5a84d --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/request/panel/PanelAppTemplateApplyRequest.java @@ -0,0 +1,27 @@ +package io.dataease.controller.request.panel; + +import io.dataease.plugins.common.base.domain.Datasource; +import lombok.Data; + +import java.util.List; + +/** + * Author: wangjiahao + * Date: 2022/9/15 + * Description: + */ +@Data +public class PanelAppTemplateApplyRequest { + + private String panelId; + + private String panelName; + + private String datasetGroupId; + + private String datasetGroupName; + + private String appTemplateId; + + private List datasourceList; +} diff --git a/backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogDTO.java b/backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogDTO.java new file mode 100644 index 0000000000..7f1318d3b8 --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogDTO.java @@ -0,0 +1,24 @@ +package io.dataease.dto.appTemplateMarket; + +import io.dataease.dto.log.FolderItem; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class AppLogDTO implements Serializable { + + private Integer sourceType; + + private String sourceId; + + private String sourceName; + + private Integer operateType; + + private List positions; + + private List remarks; + +} diff --git a/backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogGridDTO.java b/backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogGridDTO.java new file mode 100644 index 0000000000..c54b894374 --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/appTemplateMarket/AppLogGridDTO.java @@ -0,0 +1,19 @@ +package io.dataease.dto.appTemplateMarket; + +import io.dataease.plugins.common.base.domain.PanelAppTemplateLog; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class AppLogGridDTO extends PanelAppTemplateLog implements Serializable { + + private String appName; + + private String datasourceName; + + private String datasetGroupName; + + private String panelName; + +} diff --git a/backend/src/main/java/io/dataease/dto/panel/PanelExport2App.java b/backend/src/main/java/io/dataease/dto/panel/PanelExport2App.java index 68f3a94270..c8061ef634 100644 --- a/backend/src/main/java/io/dataease/dto/panel/PanelExport2App.java +++ b/backend/src/main/java/io/dataease/dto/panel/PanelExport2App.java @@ -3,10 +3,7 @@ package io.dataease.dto.panel; import com.alibaba.fastjson.JSON; import io.dataease.dto.DatasourceDTO; import io.dataease.dto.dataset.DataSetTaskDTO; -import io.dataease.plugins.common.base.domain.ChartViewField; -import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; -import io.dataease.plugins.common.base.domain.DatasetTable; -import io.dataease.plugins.common.base.domain.DatasetTableField; +import io.dataease.plugins.common.base.domain.*; import lombok.Data; import org.apache.commons.lang3.ArrayUtils; @@ -27,6 +24,7 @@ public class PanelExport2App { private String panelInfo; + private String panelViewsInfo; private String chartViewsInfo; private String chartViewFieldsInfo; @@ -35,9 +33,9 @@ public class PanelExport2App { private String datasetTableFieldsInfo; - private String dataSetTasksInfo; + private String datasetTasksInfo; - private String datasourceDTOS; + private String datasourceInfo; public PanelExport2App() { @@ -47,7 +45,7 @@ public class PanelExport2App { this.checkMes = checkMes; } - public PanelExport2App(List chartViewsInfo, List chartViewFieldsInfo, List datasetTablesInfo, List datasetTableFieldsInfo, List dataSetTasksInfo, List datasourceDTOS) { + public PanelExport2App(List chartViewsInfo, List chartViewFieldsInfo, List datasetTablesInfo, List datasetTableFieldsInfo, List datasetTasksInfo, List datasourceInfo, List panelViewsInfo) { List empty = new ArrayList(); this.checkStatus = true; this.checkMes = "success"; @@ -55,7 +53,8 @@ public class PanelExport2App { this.chartViewFieldsInfo = JSON.toJSONString(chartViewFieldsInfo!=null?chartViewFieldsInfo:empty); this.datasetTablesInfo = JSON.toJSONString(datasetTablesInfo!=null?datasetTablesInfo:empty); this.datasetTableFieldsInfo = JSON.toJSONString(datasetTableFieldsInfo!=null?datasetTableFieldsInfo:empty); - this.dataSetTasksInfo = JSON.toJSONString(dataSetTasksInfo!=null?dataSetTasksInfo:empty); - this.datasourceDTOS = JSON.toJSONString(datasourceDTOS!=null?datasourceDTOS:empty); + this.datasetTasksInfo = JSON.toJSONString(datasetTasksInfo!=null?datasetTasksInfo:empty); + this.datasourceInfo = JSON.toJSONString(datasourceInfo!=null?datasourceInfo:empty); + this.panelViewsInfo = JSON.toJSONString(panelViewsInfo!=null?panelViewsInfo:empty); } } diff --git a/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java b/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java index ac11385e94..08923a0fc0 100644 --- a/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java +++ b/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java @@ -37,4 +37,6 @@ public class PanelGroupDTO extends PanelGroupWithBLOBs implements ITreeBase parents; @ApiModelProperty("请求ID") private String requestId; + @ApiModelProperty("数据返回来源") + private String responseSource; } diff --git a/backend/src/main/java/io/dataease/ext/ExtAppLogMapper.java b/backend/src/main/java/io/dataease/ext/ExtAppLogMapper.java new file mode 100644 index 0000000000..d27653a424 --- /dev/null +++ b/backend/src/main/java/io/dataease/ext/ExtAppLogMapper.java @@ -0,0 +1,9 @@ +package io.dataease.ext; + +import io.dataease.dto.appTemplateMarket.AppLogGridDTO; +import io.dataease.service.panel.applog.AppLogQueryParam; +import java.util.List; + +public interface ExtAppLogMapper { + List query(AppLogQueryParam example); +} diff --git a/backend/src/main/java/io/dataease/ext/ExtAppLogMapper.xml b/backend/src/main/java/io/dataease/ext/ExtAppLogMapper.xml new file mode 100644 index 0000000000..ee7b6a93fc --- /dev/null +++ b/backend/src/main/java/io/dataease/ext/ExtAppLogMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + diff --git a/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplate.java b/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplate.java deleted file mode 100644 index fe5f1d7d03..0000000000 --- a/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplate.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.dataease.plugins.common.base.domain; - -import java.io.Serializable; -import lombok.Data; - -@Data -public class PanelAppTemplate implements Serializable { - private String id; - - private String name; - - private String nodeType; - - private Integer level; - - private String pid; - - private String version; - - private Long updateTime; - - private String updateUser; - - private Long createTime; - - private String createUser; - - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateExample.java b/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateExample.java deleted file mode 100644 index aab50aeaca..0000000000 --- a/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateExample.java +++ /dev/null @@ -1,870 +0,0 @@ -package io.dataease.plugins.common.base.domain; - -import java.util.ArrayList; -import java.util.List; - -public class PanelAppTemplateExample { - protected String orderByClause; - - protected boolean distinct; - - protected List oredCriteria; - - public PanelAppTemplateExample() { - 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 andNodeTypeIsNull() { - addCriterion("node_type is null"); - return (Criteria) this; - } - - public Criteria andNodeTypeIsNotNull() { - addCriterion("node_type is not null"); - return (Criteria) this; - } - - public Criteria andNodeTypeEqualTo(String value) { - addCriterion("node_type =", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeNotEqualTo(String value) { - addCriterion("node_type <>", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeGreaterThan(String value) { - addCriterion("node_type >", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeGreaterThanOrEqualTo(String value) { - addCriterion("node_type >=", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeLessThan(String value) { - addCriterion("node_type <", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeLessThanOrEqualTo(String value) { - addCriterion("node_type <=", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeLike(String value) { - addCriterion("node_type like", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeNotLike(String value) { - addCriterion("node_type not like", value, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeIn(List values) { - addCriterion("node_type in", values, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeNotIn(List values) { - addCriterion("node_type not in", values, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeBetween(String value1, String value2) { - addCriterion("node_type between", value1, value2, "nodeType"); - return (Criteria) this; - } - - public Criteria andNodeTypeNotBetween(String value1, String value2) { - addCriterion("node_type not between", value1, value2, "nodeType"); - return (Criteria) this; - } - - public Criteria andLevelIsNull() { - addCriterion("`level` is null"); - return (Criteria) this; - } - - public Criteria andLevelIsNotNull() { - addCriterion("`level` is not null"); - return (Criteria) this; - } - - public Criteria andLevelEqualTo(Integer value) { - addCriterion("`level` =", value, "level"); - return (Criteria) this; - } - - public Criteria andLevelNotEqualTo(Integer value) { - addCriterion("`level` <>", value, "level"); - return (Criteria) this; - } - - public Criteria andLevelGreaterThan(Integer value) { - addCriterion("`level` >", value, "level"); - return (Criteria) this; - } - - public Criteria andLevelGreaterThanOrEqualTo(Integer value) { - addCriterion("`level` >=", value, "level"); - return (Criteria) this; - } - - public Criteria andLevelLessThan(Integer value) { - addCriterion("`level` <", value, "level"); - return (Criteria) this; - } - - public Criteria andLevelLessThanOrEqualTo(Integer value) { - addCriterion("`level` <=", value, "level"); - return (Criteria) this; - } - - public Criteria andLevelIn(List values) { - addCriterion("`level` in", values, "level"); - return (Criteria) this; - } - - public Criteria andLevelNotIn(List values) { - addCriterion("`level` not in", values, "level"); - return (Criteria) this; - } - - public Criteria andLevelBetween(Integer value1, Integer value2) { - addCriterion("`level` between", value1, value2, "level"); - return (Criteria) this; - } - - public Criteria andLevelNotBetween(Integer value1, Integer value2) { - addCriterion("`level` not between", value1, value2, "level"); - return (Criteria) this; - } - - public Criteria andPidIsNull() { - addCriterion("pid is null"); - return (Criteria) this; - } - - public Criteria andPidIsNotNull() { - addCriterion("pid is not null"); - return (Criteria) this; - } - - public Criteria andPidEqualTo(String value) { - addCriterion("pid =", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidNotEqualTo(String value) { - addCriterion("pid <>", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidGreaterThan(String value) { - addCriterion("pid >", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidGreaterThanOrEqualTo(String value) { - addCriterion("pid >=", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidLessThan(String value) { - addCriterion("pid <", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidLessThanOrEqualTo(String value) { - addCriterion("pid <=", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidLike(String value) { - addCriterion("pid like", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidNotLike(String value) { - addCriterion("pid not like", value, "pid"); - return (Criteria) this; - } - - public Criteria andPidIn(List values) { - addCriterion("pid in", values, "pid"); - return (Criteria) this; - } - - public Criteria andPidNotIn(List values) { - addCriterion("pid not in", values, "pid"); - return (Criteria) this; - } - - public Criteria andPidBetween(String value1, String value2) { - addCriterion("pid between", value1, value2, "pid"); - return (Criteria) this; - } - - public Criteria andPidNotBetween(String value1, String value2) { - addCriterion("pid not between", value1, value2, "pid"); - return (Criteria) this; - } - - public Criteria andVersionIsNull() { - addCriterion("version is null"); - return (Criteria) this; - } - - public Criteria andVersionIsNotNull() { - addCriterion("version is not null"); - return (Criteria) this; - } - - public Criteria andVersionEqualTo(String value) { - addCriterion("version =", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionNotEqualTo(String value) { - addCriterion("version <>", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionGreaterThan(String value) { - addCriterion("version >", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionGreaterThanOrEqualTo(String value) { - addCriterion("version >=", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionLessThan(String value) { - addCriterion("version <", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionLessThanOrEqualTo(String value) { - addCriterion("version <=", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionLike(String value) { - addCriterion("version like", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionNotLike(String value) { - addCriterion("version not like", value, "version"); - return (Criteria) this; - } - - public Criteria andVersionIn(List values) { - addCriterion("version in", values, "version"); - return (Criteria) this; - } - - public Criteria andVersionNotIn(List values) { - addCriterion("version not in", values, "version"); - return (Criteria) this; - } - - public Criteria andVersionBetween(String value1, String value2) { - addCriterion("version between", value1, value2, "version"); - return (Criteria) this; - } - - public Criteria andVersionNotBetween(String value1, String value2) { - addCriterion("version not between", value1, value2, "version"); - return (Criteria) this; - } - - public Criteria andUpdateTimeIsNull() { - addCriterion("update_time is null"); - return (Criteria) this; - } - - public Criteria andUpdateTimeIsNotNull() { - addCriterion("update_time is not null"); - return (Criteria) this; - } - - public Criteria andUpdateTimeEqualTo(Long value) { - addCriterion("update_time =", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeNotEqualTo(Long value) { - addCriterion("update_time <>", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeGreaterThan(Long value) { - addCriterion("update_time >", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) { - addCriterion("update_time >=", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeLessThan(Long value) { - addCriterion("update_time <", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeLessThanOrEqualTo(Long value) { - addCriterion("update_time <=", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeIn(List values) { - addCriterion("update_time in", values, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeNotIn(List values) { - addCriterion("update_time not in", values, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeBetween(Long value1, Long value2) { - addCriterion("update_time between", value1, value2, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeNotBetween(Long value1, Long value2) { - addCriterion("update_time not between", value1, value2, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateUserIsNull() { - addCriterion("update_user is null"); - return (Criteria) this; - } - - public Criteria andUpdateUserIsNotNull() { - addCriterion("update_user is not null"); - return (Criteria) this; - } - - public Criteria andUpdateUserEqualTo(String value) { - addCriterion("update_user =", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserNotEqualTo(String value) { - addCriterion("update_user <>", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserGreaterThan(String value) { - addCriterion("update_user >", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserGreaterThanOrEqualTo(String value) { - addCriterion("update_user >=", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserLessThan(String value) { - addCriterion("update_user <", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserLessThanOrEqualTo(String value) { - addCriterion("update_user <=", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserLike(String value) { - addCriterion("update_user like", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserNotLike(String value) { - addCriterion("update_user not like", value, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserIn(List values) { - addCriterion("update_user in", values, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserNotIn(List values) { - addCriterion("update_user not in", values, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserBetween(String value1, String value2) { - addCriterion("update_user between", value1, value2, "updateUser"); - return (Criteria) this; - } - - public Criteria andUpdateUserNotBetween(String value1, String value2) { - addCriterion("update_user not between", value1, value2, "updateUser"); - 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 Criteria andCreateUserIsNull() { - addCriterion("create_user is null"); - return (Criteria) this; - } - - public Criteria andCreateUserIsNotNull() { - addCriterion("create_user is not null"); - return (Criteria) this; - } - - public Criteria andCreateUserEqualTo(String value) { - addCriterion("create_user =", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserNotEqualTo(String value) { - addCriterion("create_user <>", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserGreaterThan(String value) { - addCriterion("create_user >", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserGreaterThanOrEqualTo(String value) { - addCriterion("create_user >=", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserLessThan(String value) { - addCriterion("create_user <", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserLessThanOrEqualTo(String value) { - addCriterion("create_user <=", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserLike(String value) { - addCriterion("create_user like", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserNotLike(String value) { - addCriterion("create_user not like", value, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserIn(List values) { - addCriterion("create_user in", values, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserNotIn(List values) { - addCriterion("create_user not in", values, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserBetween(String value1, String value2) { - addCriterion("create_user between", value1, value2, "createUser"); - return (Criteria) this; - } - - public Criteria andCreateUserNotBetween(String value1, String value2) { - addCriterion("create_user not between", value1, value2, "createUser"); - 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/plugins/common/base/domain/PanelAppTemplateWithBLOBs.java b/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateWithBLOBs.java deleted file mode 100644 index 216c7592db..0000000000 --- a/backend/src/main/java/io/dataease/plugins/common/base/domain/PanelAppTemplateWithBLOBs.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.dataease.plugins.common.base.domain; - -import java.io.Serializable; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class PanelAppTemplateWithBLOBs extends PanelAppTemplate implements Serializable { - private String applicationInfo; - - private String panelInfo; - - private String viewsInfo; - - private String datasetInfo; - - private String datasetFieldsInfo; - - private String datasetTasksInfo; - - private String datasourceInfo; - - private String snapshot; - - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.java b/backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.java deleted file mode 100644 index bc4dff558c..0000000000 --- a/backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.dataease.plugins.common.base.mapper; - -import io.dataease.plugins.common.base.domain.PanelAppTemplate; -import io.dataease.plugins.common.base.domain.PanelAppTemplateExample; -import io.dataease.plugins.common.base.domain.PanelAppTemplateWithBLOBs; -import java.util.List; -import org.apache.ibatis.annotations.Param; - -public interface PanelAppTemplateMapper { - long countByExample(PanelAppTemplateExample example); - - int deleteByExample(PanelAppTemplateExample example); - - int deleteByPrimaryKey(String id); - - int insert(PanelAppTemplateWithBLOBs record); - - int insertSelective(PanelAppTemplateWithBLOBs record); - - List selectByExampleWithBLOBs(PanelAppTemplateExample example); - - List selectByExample(PanelAppTemplateExample example); - - PanelAppTemplateWithBLOBs selectByPrimaryKey(String id); - - int updateByExampleSelective(@Param("record") PanelAppTemplateWithBLOBs record, @Param("example") PanelAppTemplateExample example); - - int updateByExampleWithBLOBs(@Param("record") PanelAppTemplateWithBLOBs record, @Param("example") PanelAppTemplateExample example); - - int updateByExample(@Param("record") PanelAppTemplate record, @Param("example") PanelAppTemplateExample example); - - int updateByPrimaryKeySelective(PanelAppTemplateWithBLOBs record); - - int updateByPrimaryKeyWithBLOBs(PanelAppTemplateWithBLOBs record); - - int updateByPrimaryKey(PanelAppTemplate record); -} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.xml b/backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.xml deleted file mode 100644 index 5d6f1fe4e3..0000000000 --- a/backend/src/main/java/io/dataease/plugins/common/base/mapper/PanelAppTemplateMapper.xml +++ /dev/null @@ -1,470 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - - - - - - id, `name`, node_type, `level`, pid, version, update_time, update_user, create_time, - create_user - - - application_info, panel_info, views_info, dataset_info, dataset_fields_info, dataset_tasks_info, - datasource_info, snapshot - - - - - - delete from panel_app_template - where id = #{id,jdbcType=VARCHAR} - - - delete from panel_app_template - - - - - - insert into panel_app_template (id, `name`, node_type, - `level`, pid, version, - update_time, update_user, create_time, - create_user, application_info, panel_info, - views_info, dataset_info, dataset_fields_info, - dataset_tasks_info, datasource_info, - snapshot) - values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{nodeType,jdbcType=VARCHAR}, - #{level,jdbcType=INTEGER}, #{pid,jdbcType=VARCHAR}, #{version,jdbcType=VARCHAR}, - #{updateTime,jdbcType=BIGINT}, #{updateUser,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, - #{createUser,jdbcType=VARCHAR}, #{applicationInfo,jdbcType=LONGVARCHAR}, #{panelInfo,jdbcType=LONGVARCHAR}, - #{viewsInfo,jdbcType=LONGVARCHAR}, #{datasetInfo,jdbcType=LONGVARCHAR}, #{datasetFieldsInfo,jdbcType=LONGVARCHAR}, - #{datasetTasksInfo,jdbcType=LONGVARCHAR}, #{datasourceInfo,jdbcType=LONGVARCHAR}, - #{snapshot,jdbcType=LONGVARCHAR}) - - - insert into panel_app_template - - - id, - - - `name`, - - - node_type, - - - `level`, - - - pid, - - - version, - - - update_time, - - - update_user, - - - create_time, - - - create_user, - - - application_info, - - - panel_info, - - - views_info, - - - dataset_info, - - - dataset_fields_info, - - - dataset_tasks_info, - - - datasource_info, - - - snapshot, - - - - - #{id,jdbcType=VARCHAR}, - - - #{name,jdbcType=VARCHAR}, - - - #{nodeType,jdbcType=VARCHAR}, - - - #{level,jdbcType=INTEGER}, - - - #{pid,jdbcType=VARCHAR}, - - - #{version,jdbcType=VARCHAR}, - - - #{updateTime,jdbcType=BIGINT}, - - - #{updateUser,jdbcType=VARCHAR}, - - - #{createTime,jdbcType=BIGINT}, - - - #{createUser,jdbcType=VARCHAR}, - - - #{applicationInfo,jdbcType=LONGVARCHAR}, - - - #{panelInfo,jdbcType=LONGVARCHAR}, - - - #{viewsInfo,jdbcType=LONGVARCHAR}, - - - #{datasetInfo,jdbcType=LONGVARCHAR}, - - - #{datasetFieldsInfo,jdbcType=LONGVARCHAR}, - - - #{datasetTasksInfo,jdbcType=LONGVARCHAR}, - - - #{datasourceInfo,jdbcType=LONGVARCHAR}, - - - #{snapshot,jdbcType=LONGVARCHAR}, - - - - - - update panel_app_template - - - id = #{record.id,jdbcType=VARCHAR}, - - - `name` = #{record.name,jdbcType=VARCHAR}, - - - node_type = #{record.nodeType,jdbcType=VARCHAR}, - - - `level` = #{record.level,jdbcType=INTEGER}, - - - pid = #{record.pid,jdbcType=VARCHAR}, - - - version = #{record.version,jdbcType=VARCHAR}, - - - update_time = #{record.updateTime,jdbcType=BIGINT}, - - - update_user = #{record.updateUser,jdbcType=VARCHAR}, - - - create_time = #{record.createTime,jdbcType=BIGINT}, - - - create_user = #{record.createUser,jdbcType=VARCHAR}, - - - application_info = #{record.applicationInfo,jdbcType=LONGVARCHAR}, - - - panel_info = #{record.panelInfo,jdbcType=LONGVARCHAR}, - - - views_info = #{record.viewsInfo,jdbcType=LONGVARCHAR}, - - - dataset_info = #{record.datasetInfo,jdbcType=LONGVARCHAR}, - - - dataset_fields_info = #{record.datasetFieldsInfo,jdbcType=LONGVARCHAR}, - - - dataset_tasks_info = #{record.datasetTasksInfo,jdbcType=LONGVARCHAR}, - - - datasource_info = #{record.datasourceInfo,jdbcType=LONGVARCHAR}, - - - snapshot = #{record.snapshot,jdbcType=LONGVARCHAR}, - - - - - - - - update panel_app_template - set id = #{record.id,jdbcType=VARCHAR}, - `name` = #{record.name,jdbcType=VARCHAR}, - node_type = #{record.nodeType,jdbcType=VARCHAR}, - `level` = #{record.level,jdbcType=INTEGER}, - pid = #{record.pid,jdbcType=VARCHAR}, - version = #{record.version,jdbcType=VARCHAR}, - update_time = #{record.updateTime,jdbcType=BIGINT}, - update_user = #{record.updateUser,jdbcType=VARCHAR}, - create_time = #{record.createTime,jdbcType=BIGINT}, - create_user = #{record.createUser,jdbcType=VARCHAR}, - application_info = #{record.applicationInfo,jdbcType=LONGVARCHAR}, - panel_info = #{record.panelInfo,jdbcType=LONGVARCHAR}, - views_info = #{record.viewsInfo,jdbcType=LONGVARCHAR}, - dataset_info = #{record.datasetInfo,jdbcType=LONGVARCHAR}, - dataset_fields_info = #{record.datasetFieldsInfo,jdbcType=LONGVARCHAR}, - dataset_tasks_info = #{record.datasetTasksInfo,jdbcType=LONGVARCHAR}, - datasource_info = #{record.datasourceInfo,jdbcType=LONGVARCHAR}, - snapshot = #{record.snapshot,jdbcType=LONGVARCHAR} - - - - - - update panel_app_template - set id = #{record.id,jdbcType=VARCHAR}, - `name` = #{record.name,jdbcType=VARCHAR}, - node_type = #{record.nodeType,jdbcType=VARCHAR}, - `level` = #{record.level,jdbcType=INTEGER}, - pid = #{record.pid,jdbcType=VARCHAR}, - version = #{record.version,jdbcType=VARCHAR}, - update_time = #{record.updateTime,jdbcType=BIGINT}, - update_user = #{record.updateUser,jdbcType=VARCHAR}, - create_time = #{record.createTime,jdbcType=BIGINT}, - create_user = #{record.createUser,jdbcType=VARCHAR} - - - - - - update panel_app_template - - - `name` = #{name,jdbcType=VARCHAR}, - - - node_type = #{nodeType,jdbcType=VARCHAR}, - - - `level` = #{level,jdbcType=INTEGER}, - - - pid = #{pid,jdbcType=VARCHAR}, - - - version = #{version,jdbcType=VARCHAR}, - - - update_time = #{updateTime,jdbcType=BIGINT}, - - - update_user = #{updateUser,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=BIGINT}, - - - create_user = #{createUser,jdbcType=VARCHAR}, - - - application_info = #{applicationInfo,jdbcType=LONGVARCHAR}, - - - panel_info = #{panelInfo,jdbcType=LONGVARCHAR}, - - - views_info = #{viewsInfo,jdbcType=LONGVARCHAR}, - - - dataset_info = #{datasetInfo,jdbcType=LONGVARCHAR}, - - - dataset_fields_info = #{datasetFieldsInfo,jdbcType=LONGVARCHAR}, - - - dataset_tasks_info = #{datasetTasksInfo,jdbcType=LONGVARCHAR}, - - - datasource_info = #{datasourceInfo,jdbcType=LONGVARCHAR}, - - - snapshot = #{snapshot,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=VARCHAR} - - - update panel_app_template - set `name` = #{name,jdbcType=VARCHAR}, - node_type = #{nodeType,jdbcType=VARCHAR}, - `level` = #{level,jdbcType=INTEGER}, - pid = #{pid,jdbcType=VARCHAR}, - version = #{version,jdbcType=VARCHAR}, - update_time = #{updateTime,jdbcType=BIGINT}, - update_user = #{updateUser,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=BIGINT}, - create_user = #{createUser,jdbcType=VARCHAR}, - application_info = #{applicationInfo,jdbcType=LONGVARCHAR}, - panel_info = #{panelInfo,jdbcType=LONGVARCHAR}, - views_info = #{viewsInfo,jdbcType=LONGVARCHAR}, - dataset_info = #{datasetInfo,jdbcType=LONGVARCHAR}, - dataset_fields_info = #{datasetFieldsInfo,jdbcType=LONGVARCHAR}, - dataset_tasks_info = #{datasetTasksInfo,jdbcType=LONGVARCHAR}, - datasource_info = #{datasourceInfo,jdbcType=LONGVARCHAR}, - snapshot = #{snapshot,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=VARCHAR} - - - update panel_app_template - set `name` = #{name,jdbcType=VARCHAR}, - node_type = #{nodeType,jdbcType=VARCHAR}, - `level` = #{level,jdbcType=INTEGER}, - pid = #{pid,jdbcType=VARCHAR}, - version = #{version,jdbcType=VARCHAR}, - update_time = #{updateTime,jdbcType=BIGINT}, - update_user = #{updateUser,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=BIGINT}, - create_user = #{createUser,jdbcType=VARCHAR} - where id = #{id,jdbcType=VARCHAR} - - \ No newline at end of file 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 28ff78c646..0b89a6ce6b 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetGroupService.java @@ -137,7 +137,7 @@ public class DataSetGroupService { return ids; } - private void checkName(DatasetGroup datasetGroup) { + public void checkName(DatasetGroup datasetGroup) { DatasetGroupExample datasetGroupExample = new DatasetGroupExample(); DatasetGroupExample.Criteria criteria = datasetGroupExample.createCriteria(); if (StringUtils.isNotEmpty(datasetGroup.getPid())) { @@ -157,7 +157,7 @@ public class DataSetGroupService { } List list = datasetGroupMapper.selectByExample(datasetGroupExample); if (list.size() > 0) { - throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group")); + throw new RuntimeException(Translator.get("I18N_DATASET_GROUP_EXIST")); } } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index b0503f299c..460303a966 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -299,7 +299,7 @@ public class DataSetTableService { @DeCleaner(value = DePermissionType.DATASET, key = "sceneId") public DatasetTable save(DataSetTableRequest datasetTable) throws Exception { checkName(datasetTable); - if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())) { + if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())&&!"appApply".equalsIgnoreCase(datasetTable.getOptFrom())) { DataSetTableRequest dataSetTableRequest = new DataSetTableRequest(); BeanUtils.copyBean(dataSetTableRequest, datasetTable); getSQLPreview(dataSetTableRequest); @@ -317,7 +317,9 @@ public class DataSetTableService { // 添加表成功后,获取当前表字段和类型,抽象到dataease数据库 if (insert == 1) { - saveTableField(datasetTable); + if(datasetTable.getOptFrom()==null || !"appApply".equalsIgnoreCase(datasetTable.getOptFrom())){ + saveTableField(datasetTable); + } extractData(datasetTable); DeLogUtils.save(SysLogConstants.OPERATE_TYPE.CREATE, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null); } @@ -2868,4 +2870,19 @@ public class DataSetTableService { static private boolean hasVarible(String sql) { return sql.contains(SubstitutedParams); } + + public void createAppCustomDorisView(String datasetInfo,String tableId) throws Exception { + DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetInfo, DataTableInfoDTO.class); + createDorisView(TableUtils.tableName(tableId), getCustomViewSQL(dataTableInfoDTO, + dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()))); + } + + public void createAppUnionDorisView(String datasetInfo,String tableId) throws Exception { + // save field + DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetInfo, DataTableInfoDTO.class); + Map sqlMap = getUnionSQLDoris(dataTableInfoDTO); + String sql = (String) sqlMap.get("sql"); + // custom 创建doris视图 + createDorisView(TableUtils.tableName(tableId),sql); + } } diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index 26c94e30a7..0f9993c2f7 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -434,7 +434,7 @@ public class DatasourceService { }); } - private void checkName(String datasourceName, String type, String id) { + public void checkName(String datasourceName, String type, String id) { DatasourceExample example = new DatasourceExample(); DatasourceExample.Criteria criteria = example.createCriteria(); criteria.andNameEqualTo(datasourceName); diff --git a/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateLogService.java b/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateLogService.java new file mode 100644 index 0000000000..5d305c47f5 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateLogService.java @@ -0,0 +1,50 @@ +package io.dataease.service.panel; + +import com.alibaba.fastjson.JSON; +import com.google.gson.Gson; +import io.dataease.commons.constants.CommonConstants; +import io.dataease.commons.utils.AuthUtils; +import io.dataease.commons.utils.BeanUtils; +import io.dataease.controller.request.dataset.DataSetTableRequest; +import io.dataease.controller.request.panel.PanelAppTemplateApplyRequest; +import io.dataease.controller.request.panel.PanelAppTemplateRequest; +import io.dataease.controller.request.panel.PanelGroupRequest; +import io.dataease.dto.dataset.DataSetTaskDTO; +import io.dataease.plugins.common.base.domain.*; +import io.dataease.plugins.common.base.mapper.PanelAppTemplateLogMapper; +import io.dataease.plugins.common.base.mapper.PanelAppTemplateMapper; +import io.dataease.plugins.common.constants.DatasetType; +import io.dataease.service.chart.ChartViewFieldService; +import io.dataease.service.chart.ChartViewService; +import io.dataease.service.dataset.DataSetTableFieldsService; +import io.dataease.service.dataset.DataSetTableService; +import io.dataease.service.datasource.DatasourceService; +import org.apache.commons.lang3.StringUtils; +import org.pentaho.di.core.util.UUIDUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Author: wangjiahao + * Date: 2022/9/8 + * Description: + */ +@Service +public class PanelAppTemplateLogService { + + @Resource + private PanelAppTemplateLogMapper logMapper; + + public void newAppApplyLog(PanelAppTemplateLog appTemplateLog){ + appTemplateLog.setId(UUIDUtil.getUUIDAsString()); + appTemplateLog.setApplyTime(System.currentTimeMillis()); + appTemplateLog.setApplyPersion(AuthUtils.getUser().getUsername()); + logMapper.insert(appTemplateLog); + } +} diff --git a/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java b/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java index 1b70204257..775ba20898 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelAppTemplateService.java @@ -1,19 +1,35 @@ package io.dataease.service.panel; +import com.google.gson.Gson; import io.dataease.commons.constants.CommonConstants; +import io.dataease.commons.constants.PanelConstants; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.BeanUtils; +import io.dataease.controller.request.dataset.DataSetTableRequest; +import io.dataease.controller.request.panel.PanelAppTemplateApplyRequest; import io.dataease.controller.request.panel.PanelAppTemplateRequest; -import io.dataease.controller.request.panel.PanelTemplateRequest; -import io.dataease.dto.panel.PanelAppTemplateDTO; +import io.dataease.controller.request.panel.PanelGroupRequest; import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.PanelAppTemplateMapper; +import io.dataease.plugins.common.constants.DatasetType; +import io.dataease.service.chart.ChartViewFieldService; +import io.dataease.service.chart.ChartViewService; +import io.dataease.service.dataset.DataSetGroupService; +import io.dataease.service.dataset.DataSetTableFieldsService; +import io.dataease.service.dataset.DataSetTableService; +import io.dataease.service.datasource.DatasourceService; +import org.apache.commons.lang3.StringUtils; import org.pentaho.di.core.util.UUIDUtil; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Author: wangjiahao @@ -22,13 +38,36 @@ import java.util.List; */ @Service public class PanelAppTemplateService { + private static Gson gson = new Gson(); @Resource private PanelAppTemplateMapper panelAppTemplateMapper; + @Resource + private DatasourceService datasourceService; + @Resource + private ChartViewService chartViewService; + @Resource + private ChartViewFieldService chartViewFieldService; + @Resource + private DataSetTableService dataSetTableService; + @Resource + private DataSetTableFieldsService dataSetTableFieldsService; + @Resource + @Lazy + private PanelGroupService panelGroupService; + @Resource + private PanelViewService panelViewService; + @Resource + private DataSetGroupService dataSetGroupService; public List list(PanelAppTemplateRequest request){ PanelAppTemplateExample example = new PanelAppTemplateExample(); - example.createCriteria().andPidEqualTo(request.getPid()); + if(StringUtils.isNotEmpty(request.getPid())){ + example.createCriteria().andPidEqualTo(request.getPid()); + } + if(StringUtils.isNotEmpty(request.getNodeType())){ + example.createCriteria().andNodeTypeEqualTo(request.getNodeType()); + } return panelAppTemplateMapper.selectByExampleWithBLOBs(example); } @@ -38,11 +77,15 @@ public class PanelAppTemplateService { request.setCreateTime(System.currentTimeMillis()); PanelAppTemplateWithBLOBs requestTemplate = new PanelAppTemplateWithBLOBs(); BeanUtils.copyBean(requestTemplate,request); + if(StringUtils.isEmpty(requestTemplate.getNodeType())){ + requestTemplate.setNodeType("template"); + } panelAppTemplateMapper.insertSelective(requestTemplate); } public void update(PanelAppTemplateRequest request){ + nameCheck(CommonConstants.OPT_TYPE.UPDATE,request.getName(),request.getPid(),request.getId()); request.setUpdateUser(AuthUtils.getUser().getUsername()); request.setUpdateTime(System.currentTimeMillis()); PanelAppTemplateWithBLOBs requestTemplate = new PanelAppTemplateWithBLOBs(); @@ -50,8 +93,8 @@ public class PanelAppTemplateService { panelAppTemplateMapper.updateByPrimaryKeySelective(requestTemplate); } - public void delete(String templateAppId){ - panelAppTemplateMapper.deleteByPrimaryKey(templateAppId); + public void delete(String appTemplateId){ + panelAppTemplateMapper.deleteByPrimaryKey(appTemplateId); } public String nameCheck(PanelAppTemplateRequest request) { @@ -75,6 +118,160 @@ public class PanelAppTemplateService { return CommonConstants.CHECK_RESULT.EXIST_ALL; } } + @Transactional(rollbackFor = Exception.class) + public Map applyDatasource(List oldDatasourceList,List newDatasourceList) throws Exception{ + Map datasourceRelaMap = new HashMap<>(); + for(int i=0;i panelViewsInfo,Map chartViewsRelaMap,String panelId){ + Long time = System.currentTimeMillis(); + String userName = AuthUtils.getUser().getUsername(); + panelViewsInfo.forEach(panelView -> { + panelView.setId(UUIDUtil.getUUIDAsString()); + panelView.setPanelId(panelId); + panelView.setCreateTime(time); + panelView.setCreateBy(userName); + panelView.setChartViewId(chartViewsRelaMap.get(panelView.getChartViewId())); + panelViewService.save(panelView); + }); + } + @Transactional(rollbackFor = Exception.class) + public String applyPanel(PanelGroupRequest panelInfo,Map chartViewsRelaMap,String newPanelId,String panelName,String pid){ + panelInfo.setId(newPanelId); + panelInfo.setPid(pid); + panelInfo.setName(panelName); + panelInfo.setNodeType("panel"); + panelInfo.setPanelType("self"); + panelInfo.setCreateBy(AuthUtils.getUser().getUsername()); + panelInfo.setCreateTime(System.currentTimeMillis()); + panelGroupService.newPanelFromApp(panelInfo,chartViewsRelaMap); + return newPanelId; + } + @Transactional(rollbackFor = Exception.class) + public Map applyDataset(List datasetTablesInfo,Map datasourceRelaMap,String sceneId) throws Exception{ + Map datasetsRelaMap = new HashMap<>(); + for(DatasetTable datasetTable:datasetTablesInfo){ + String oldId = datasetTable.getId(); + datasetTable.setId(null); + datasetTable.setSceneId(sceneId); + datasetTable.setDataSourceId(datasourceRelaMap.get(datasetTable.getDataSourceId())); + DataSetTableRequest datasetRequest = new DataSetTableRequest(); + BeanUtils.copyBean(datasetRequest,datasetTable); + datasetRequest.setOptFrom("appApply"); + DatasetTable newDataset = dataSetTableService.save(datasetRequest); + datasetsRelaMap.put(oldId,newDataset.getId()); + } + return datasetsRelaMap; + } + @Transactional(rollbackFor = Exception.class) + public Map applyDatasetField(List datasetTableFieldsInfo ,Map datasetsRelaMap ){ + Map datasetFieldsRelaMap = new HashMap<>(); + for(DatasetTableField datasetTableField:datasetTableFieldsInfo){ + String oldId = datasetTableField.getId(); + datasetTableField.setTableId(datasetsRelaMap.get(datasetTableField.getTableId())); + DatasetTableField newTableField = dataSetTableFieldsService.save(datasetTableField); + datasetFieldsRelaMap.put(oldId,newTableField.getId()); + } + return datasetFieldsRelaMap; + } + @Transactional(rollbackFor = Exception.class) + public void resetCustomAndUnionDataset(List datasetTablesInfo, Map datasetRelaMap, Map datasetFieldsRelaMap) throws Exception{ + for(DatasetTable datasetTable:datasetTablesInfo ){ + if((DatasetType.CUSTOM.name().equalsIgnoreCase(datasetTable.getType())||DatasetType.UNION.name().equalsIgnoreCase(datasetTable.getType()))){ + datasetRelaMap.forEach((k,v)->{ + datasetTable.setInfo(datasetTable.getInfo().replaceAll(k,v)); + }); + datasetFieldsRelaMap.forEach((k,v)->{ + datasetTable.setInfo(datasetTable.getInfo().replaceAll(k,v)); + }); + if(1 == datasetTable.getMode()){ + if(DatasetType.CUSTOM.name().equalsIgnoreCase(datasetTable.getType())){ + dataSetTableService.createAppCustomDorisView(datasetTable.getInfo(),datasetTable.getId()); + }else if(DatasetType.UNION.name().equalsIgnoreCase(datasetTable.getType())){ + dataSetTableService.createAppUnionDorisView(datasetTable.getInfo(),datasetTable.getId()); + } + } + } + } + } + @Transactional(rollbackFor = Exception.class) + public Map applyViews(List chartViewsInfo,Map datasetsRelaMap,Map datasetFieldsRelaMap,String sceneId) throws Exception{ + Map chartViewsRelaMap = new HashMap<>(); + for(ChartViewWithBLOBs chartView:chartViewsInfo){ + String oldViewId = chartView.getId(); + // 替换datasetId + chartView.setTableId(datasetsRelaMap.get(chartView.getTableId())); + datasetsRelaMap.forEach((k,v)->{ + chartView.setXAxis(chartView.getXAxis().replaceAll(k,v)); + chartView.setXAxisExt(chartView.getXAxisExt().replaceAll(k,v)); + chartView.setYAxis(chartView.getYAxis().replaceAll(k,v)); + chartView.setYAxisExt(chartView.getYAxisExt().replaceAll(k,v)); + chartView.setExtStack(chartView.getExtStack().replaceAll(k,v)); + chartView.setExtBubble(chartView.getExtBubble().replaceAll(k,v)); + chartView.setCustomAttr(chartView.getCustomAttr().replaceAll(k,v)); + chartView.setCustomStyle(chartView.getCustomStyle().replaceAll(k,v)); + chartView.setCustomFilter(chartView.getCustomFilter().replaceAll(k,v)); + chartView.setDrillFields(chartView.getDrillFields().replaceAll(k,v)); + }); + //替换datasetFieldId + datasetFieldsRelaMap.forEach((k,v)->{ + chartView.setXAxis(chartView.getXAxis().replaceAll(k,v)); + chartView.setXAxisExt(chartView.getXAxisExt().replaceAll(k,v)); + chartView.setYAxis(chartView.getYAxis().replaceAll(k,v)); + chartView.setYAxisExt(chartView.getYAxisExt().replaceAll(k,v)); + chartView.setExtStack(chartView.getExtStack().replaceAll(k,v)); + chartView.setExtBubble(chartView.getExtBubble().replaceAll(k,v)); + chartView.setCustomAttr(chartView.getCustomAttr().replaceAll(k,v)); + chartView.setCustomStyle(chartView.getCustomStyle().replaceAll(k,v)); + chartView.setCustomFilter(chartView.getCustomFilter().replaceAll(k,v)); + chartView.setDrillFields(chartView.getDrillFields().replaceAll(k,v)); + }); + chartView.setId(null); + chartView.setSceneId(sceneId); + ChartViewWithBLOBs newOne = chartViewService.newOne(chartView); + chartViewsRelaMap.put(oldViewId,newOne.getId()); + } + return chartViewsRelaMap; + } + @Transactional(rollbackFor = Exception.class) + public Map applyViewsField(List chartViewFieldsInfo,Map chartViewsRelaMap,Map datasetsRelaMap,Map datasetFieldsRelaMap){ + Map chartViewFieldsRelaMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(chartViewFieldsInfo)){ + for(ChartViewField chartViewField:chartViewFieldsInfo){ + String oldChartFieldId = chartViewField.getId(); + chartViewField.setId(null); + //替换datasetId + chartViewField.setTableId(datasetsRelaMap.get(chartViewField.getTableId())); + //替换chartViewId + chartViewField.setChartId(chartViewsRelaMap.get(chartViewField.getId())); + //替换datasetFieldId + datasetFieldsRelaMap.forEach((k,v)->{ + chartViewField.setOriginName(chartViewField.getOriginName().replaceAll(k,v)); + }); + ChartViewField newChartViewField = chartViewFieldService.save(chartViewField); + chartViewFieldsRelaMap.put(oldChartFieldId,newChartViewField.getId()); + } + } + return chartViewFieldsRelaMap; + } + public void nameCheck(PanelAppTemplateApplyRequest request){ + panelGroupService.checkPanelName(request.getPanelName(),request.getPanelId(), PanelConstants.OPT_TYPE_UPDATE,null,null); + DatasetGroup datasetGroup = new DatasetGroup(); + datasetGroup.setPid(request.getDatasetGroupId()); + datasetGroup.setName(request.getDatasetGroupName()); + dataSetGroupService.checkName(datasetGroup); + request.getDatasourceList().stream().forEach(datasource -> { + datasourceService.checkName(datasource.getName(),datasource.getType(),null); + }); + + } } diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index feeb5792fe..f96c627f61 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -1,5 +1,6 @@ package io.dataease.service.panel; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; @@ -15,7 +16,9 @@ import io.dataease.dto.DatasourceDTO; import io.dataease.dto.PanelGroupExtendDataDTO; import io.dataease.dto.SysLogDTO; import io.dataease.dto.authModel.VAuthModelDTO; +import io.dataease.dto.chart.ChartGroupDTO; import io.dataease.dto.chart.ChartViewDTO; +import io.dataease.dto.dataset.DataSetGroupDTO; import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTaskDTO; import io.dataease.dto.panel.PanelExport2App; @@ -30,7 +33,9 @@ import io.dataease.listener.util.CacheUtils; import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.*; import io.dataease.plugins.common.constants.DeTypeConstants; +import io.dataease.service.chart.ChartGroupService; import io.dataease.service.chart.ChartViewService; +import io.dataease.service.dataset.DataSetGroupService; import io.dataease.service.dataset.DataSetTableService; import io.dataease.service.staticResource.StaticResourceService; import io.dataease.service.sys.SysAuthService; @@ -43,6 +48,7 @@ import org.pentaho.di.core.util.UUIDUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.Base64Utils; @@ -118,6 +124,16 @@ public class PanelGroupService { private ExtDataSetTaskMapper extDataSetTaskMapper; @Resource private ExtDataSourceMapper extDataSourceMapper; + @Resource + private PanelAppTemplateService panelAppTemplateService; + @Resource + private PanelAppTemplateMapper panelAppTemplateMapper; + @Resource + private PanelAppTemplateLogService appTemplateLogService; + @Resource + private ChartGroupService chartGroupService; + @Resource + private DataSetGroupService dataSetGroupService; public List tree(PanelGroupRequest panelGroupRequest) { String userId = String.valueOf(AuthUtils.getUser().getUserId()); @@ -221,7 +237,7 @@ public class PanelGroupService { } - private void checkPanelName(String name, String pid, String optType, String id, String nodeType) { + public void checkPanelName(String name, String pid, String optType, String id, String nodeType) { PanelGroupExample groupExample = new PanelGroupExample(); if (PanelConstants.OPT_TYPE_INSERT.equalsIgnoreCase(optType)) { groupExample.createCriteria().andPidEqualTo(pid).andNameEqualTo(name).andNodeTypeEqualTo(nodeType); @@ -231,7 +247,7 @@ public class PanelGroupService { List checkResult = panelGroupMapper.selectByExample(groupExample); if (CollectionUtils.isNotEmpty(checkResult)) { - DataEaseException.throwException(Translator.get("i18n_same_folder_can_not_repeat")); + DataEaseException.throwException(Translator.get("I18N_PANEL_EXIST")); } } @@ -360,34 +376,54 @@ public class PanelGroupService { newPanel.setId(newPanelId); newPanel.setCreateBy(AuthUtils.getUser().getUsername()); newPanel.setCreateTime(System.currentTimeMillis()); - //TODO copy panelView + // copy panelView extPanelViewMapper.copyFromPanel(newPanelId, sourcePanelId, copyId); - //TODO 复制视图 chart_view + // 复制视图 chart_view extChartViewMapper.chartCopyWithPanel(copyId); - //TODO 复制视图字段 chart_view_field + // 复制视图字段 chart_view_field extChartViewMapper.chartFiledCopyWithPanel(copyId); - //TODO 替换panel_data viewId 数据 + // 替换panel_data viewId 数据 List panelViewList = panelViewService.findPanelViews(copyId); - //TODO 复制模板缓存数据 + // 复制模板缓存数据 extPanelGroupExtendDataMapper.copyWithCopyId(copyId); if (CollectionUtils.isNotEmpty(panelViewList)) { String panelData = newPanel.getPanelData(); - //TODO 替换panel_data viewId 数据 并保存 + // 替换panel_data viewId 数据 并保存 for (PanelView panelView : panelViewList) { panelData = panelData.replaceAll(panelView.getCopyFromView(), panelView.getChartViewId()); } newPanel.setPanelData(panelData); - //TODO 复制跳转信息 copy panel_link_jump panel_link_jump_info panel_link_jump_target_view_info + // 复制跳转信息 copy panel_link_jump panel_link_jump_info panel_link_jump_target_view_info extPanelLinkJumpMapper.copyLinkJump(copyId); extPanelLinkJumpMapper.copyLinkJumpInfo(copyId); extPanelLinkJumpMapper.copyLinkJumpTarget(copyId); - //TODO 复制联动信息 copy panel_view_linkage_field panel_view_linkage + // 复制联动信息 copy panel_view_linkage_field panel_view_linkage extPanelViewLinkageMapper.copyViewLinkage(copyId); extPanelViewLinkageMapper.copyViewLinkageField(copyId); } panelGroupMapper.insertSelective(newPanel); return newPanelId; } + @Transactional(rollbackFor = Exception.class) + public String newPanelFromApp(PanelGroupRequest request,Map chartViewsRelaMap){ + String newPanelId = request.getId(); + String templateData = request.getPanelData(); + String staticResource = request.getStaticResource(); + Boolean mobileLayout = panelViewService.havaMobileLayout(templateData); + for(Map.Entry entry:chartViewsRelaMap.entrySet()){ + templateData = templateData.replaceAll(entry.getKey(),entry.getValue()); + } + request.setMobileLayout(mobileLayout); + request.setPanelData(templateData); + staticResourceService.saveFilesToServe(staticResource); + panelGroupMapper.insertSelective(request); + // 清理权限缓存 + clearPermissionCache(); + sysAuthService.copyAuth(newPanelId, SysAuthConstants.AUTH_SOURCE_TYPE_PANEL); + DeLogUtils.save(SysLogConstants.OPERATE_TYPE.CREATE, sourceType, newPanelId, request.getPid(), null, null); + this.removePanelAllCache(newPanelId); + return newPanelId; + } public String newPanel(PanelGroupRequest request) { @@ -442,7 +478,7 @@ public class PanelGroupService { chartView.setId(newViewId); chartView.setSceneId(newPanelId); chartView.setDataFrom(CommonConstants.VIEW_DATA_FROM.TEMPLATE); - //TODO 数据处理 1.替换viewId 2.加入panelView 数据(数据来源为template) 3.加入模板view data数据 + // 数据处理 1.替换viewId 2.加入panelView 数据(数据来源为template) 3.加入模板view data数据 templateData = templateData.replaceAll(originViewId, newViewId); panelViews.add(new PanelViewInsertDTO(newViewId, newPanelId, position)); viewsData.add(new PanelGroupExtendDataDTO(newPanelId, newViewId, originViewData)); @@ -737,19 +773,21 @@ public class PanelGroupService { } public PanelExport2App panelExport2AppCheck(String panelId) { - //TODO 1.获取所有视图信息 + //1.获取所有视图信息 List chartViewsInfo = panelViewService.findByPanelId(panelId); - //TODO 2.获取视图扩展字段信息 + //2.获取视图扩展字段信息 List chartViewFieldsInfo = extChartViewFieldMapper.findByPanelId(panelId); - //TODO 3.获取所有数据集信息 + //3.获取所有数据集信息 List datasetTablesInfo = extDataSetTableMapper.findByPanelId(panelId); - //TODO 4.获取所有数据集字段信息 + //4.获取所有数据集字段信息 List datasetTableFieldsInfo = extDataSetTableFieldMapper.findByPanelId(panelId); - //TODO 5.获取所有任务信息 + //5.获取所有任务信息 List dataSetTasksInfo = extDataSetTaskMapper.findByPanelId(panelId); - //TODO 6.获取所有数据源信息 + //6.获取所有数据源信息 List datasourceDTOS = extDataSourceMapper.findByPanelId(panelId); + List panelViews = panelViewService.findPanelViewsByPanelId(panelId); + //校验标准 1.存在视图且所有视图的数据来源必须是dataset 2.存在数据集且没有excel数据集 3.存在数据源且是单数据源 //1.view check if (CollectionUtils.isEmpty(chartViewsInfo)) { @@ -771,10 +809,72 @@ public class PanelGroupService { } else if (datasourceDTOS.size() > 1) { return new PanelExport2App("this panel should hava only one dataset"); } - return new PanelExport2App(chartViewsInfo, chartViewFieldsInfo, datasetTablesInfo, datasetTableFieldsInfo, dataSetTasksInfo, datasourceDTOS); + return new PanelExport2App(chartViewsInfo, chartViewFieldsInfo, datasetTablesInfo, datasetTableFieldsInfo, dataSetTasksInfo, datasourceDTOS,panelViews); } - public void appApply(PanelExport2App appApplyInfo){ + @Transactional(rollbackFor = Exception.class) + public String appApply(PanelAppTemplateApplyRequest request) throws Exception{ + //仪表板名称校验,数据集分组名称校验,数据源名称校验 + panelAppTemplateService.nameCheck(request); + String newPanelId = UUIDUtil.getUUIDAsString(); + // 新建数据集分组 + DatasetGroup newDatasetGroup = new DatasetGroup(); + newDatasetGroup.setPid(request.getDatasetGroupId()); + newDatasetGroup.setName(request.getDatasetGroupName()); + newDatasetGroup.setType("group"); + DataSetGroupDTO resultDatasetGroup = dataSetGroupService.save(newDatasetGroup); + + String asideDatasetGroupId = resultDatasetGroup.getId(); + //查询应用信息 + PanelAppTemplateWithBLOBs appInfo = panelAppTemplateMapper.selectByPrimaryKey(request.getAppTemplateId()); + //1.获取所有视图信息 + List chartViewsInfo = JSON.parseArray(appInfo.getChartViewsInfo(),ChartViewWithBLOBs.class); + //2.获取视图扩展字段信息 + List chartViewFieldsInfo = JSON.parseArray(appInfo.getChartViewFieldsInfo(),ChartViewField.class); + //3.获取所有数据集信息 + List datasetTablesInfo = JSON.parseArray(appInfo.getDatasetTablesInfo(),DatasetTable.class); + //4.获取所有数据集字段信息 + List datasetTableFieldsInfo = JSON.parseArray(appInfo.getDatasetTableFieldsInfo(),DatasetTableField.class); + //5.获取所有任务信息 + List dataSetTasksInfo = JSON.parseArray(appInfo.getDatasetTasksInfo(),DataSetTaskDTO.class); + //6.获取所有数据源信息 + List oldDatasourceInfo = JSON.parseArray(appInfo.getDatasourceInfo(),Datasource.class); + //获取仪表板信息 + PanelGroupRequest panelInfo = JSON.parseObject(appInfo.getPanelInfo(),PanelGroupRequest.class); + //获取仪表板视图信息 + List panelViewsInfo = JSON.parseArray(appInfo.getPanelViewsInfo(),PanelView.class); + + Map datasourceRelaMap = panelAppTemplateService.applyDatasource(oldDatasourceInfo,request.getDatasourceList()); + + Map datasetsRelaMap = panelAppTemplateService.applyDataset(datasetTablesInfo,datasourceRelaMap,asideDatasetGroupId); + + Map datasetFieldsRelaMap = panelAppTemplateService.applyDatasetField(datasetTableFieldsInfo,datasetsRelaMap); + + panelAppTemplateService.resetCustomAndUnionDataset(datasetTablesInfo,datasetsRelaMap,datasetFieldsRelaMap); + + Map chartViewsRelaMap = panelAppTemplateService.applyViews(chartViewsInfo,datasetsRelaMap,datasetFieldsRelaMap,newPanelId); + + panelAppTemplateService.applyViewsField(chartViewFieldsInfo,chartViewsRelaMap,datasetsRelaMap,datasetFieldsRelaMap); + + panelAppTemplateService.applyPanel(panelInfo,chartViewsRelaMap,newPanelId, request.getPanelName(), request.getPanelId()); + + panelAppTemplateService.applyPanelView(panelViewsInfo,chartViewsRelaMap,newPanelId); + + String newDatasourceId =datasourceRelaMap.entrySet().stream().findFirst().get().getValue(); + + String newDatasourceName = request.getDatasourceList().get(0).getName(); + + PanelAppTemplateLog templateLog = new PanelAppTemplateLog(); + templateLog.setPanelId(newPanelId); + templateLog.setSourcePanelName(request.getPanelName()); + templateLog.setDatasourceId(newDatasourceId); + templateLog.setSourceDatasourceName(newDatasourceName); + templateLog.setDatasetGroupId(asideDatasetGroupId); + templateLog.setSourceDatasetGroupName(request.getDatasetGroupName()); + templateLog.setAppTemplateId(appInfo.getId()); + templateLog.setAppTemplateName(appInfo.getName()); + appTemplateLogService.newAppApplyLog(templateLog); + return newPanelId; } } diff --git a/backend/src/main/java/io/dataease/service/panel/PanelViewService.java b/backend/src/main/java/io/dataease/service/panel/PanelViewService.java index 3a788e4605..1f457505be 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelViewService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelViewService.java @@ -19,6 +19,7 @@ import io.dataease.plugins.common.base.mapper.PanelViewMapper; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.pentaho.di.core.util.UUIDUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -44,8 +45,6 @@ public class PanelViewService { @Resource private ExtChartViewMapper extChartViewMapper; - private ExtPanelGroupMapper extPanelGroupMapper; - private final static String SCENE_TYPE = "scene"; public List groups() { @@ -173,4 +172,14 @@ public class PanelViewService { public List findByPanelId(String panelId) { return extChartViewMapper.findByPanelId(panelId); } + + public List findPanelViewsByPanelId(String panelId){ + PanelViewExample example = new PanelViewExample(); + example.createCriteria().andPanelIdEqualTo(panelId); + return panelViewMapper.selectByExample(example); + } + + public void save(PanelView panelView){ + panelViewMapper.insertSelective(panelView); + } } diff --git a/backend/src/main/java/io/dataease/service/panel/applog/AppLogManager.java b/backend/src/main/java/io/dataease/service/panel/applog/AppLogManager.java new file mode 100644 index 0000000000..4c2fa333b2 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/panel/applog/AppLogManager.java @@ -0,0 +1,184 @@ +package io.dataease.service.panel.applog; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import io.dataease.commons.constants.SysLogConstants; +import io.dataease.commons.utils.AuthUtils; +import io.dataease.controller.sys.request.LogTypeItem; +import io.dataease.dto.log.FolderItem; +import io.dataease.ext.ExtSysLogMapper; +import io.dataease.i18n.Translator; +import io.dataease.plugins.common.base.domain.Datasource; +import io.dataease.plugins.common.base.domain.SysLogWithBLOBs; +import io.dataease.plugins.common.dto.datasource.DataSourceType; +import io.dataease.service.datasource.DatasourceService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +@Component +public class AppLogManager { + + protected static final String contentFormat = "【%s】"; + + protected static final String positionFormat = "在【%s】"; + + protected static final String format = "给%s【%s】"; + + protected Gson gson = new Gson(); + + + protected Type type = new TypeToken>() {}.getType(); + + + + @Resource + private ExtSysLogMapper extSysLogMapper; + + @Resource + private DatasourceService datasourceService; + + + public String detailInfo(SysLogWithBLOBs vo) { + String sourceName = vo.getSourceName(); + String postion = null; + String operateTypeName = SysLogConstants.operateTypeName(vo.getOperateType()); + operateTypeName = Translator.get(operateTypeName); + String sourceTypeName = SysLogConstants.sourceTypeName(vo.getSourceType()); + sourceTypeName = Translator.get(sourceTypeName); + String result = operateTypeName + sourceTypeName + String.format(contentFormat, sourceName) + remarkInfo(vo); + + if ((postion = vo.getPosition()) != null) { + List folderItems = gson.fromJson(postion, type); + String template = folderItems.stream().map(folderItem -> folderItem.getName()).collect(Collectors.joining("/")); + String postionResult = String.format(positionFormat, template); + return postionResult + result; + } + return result; + } + + + + public String remarkInfo(SysLogWithBLOBs vo) { + String remakrk = null; + if ((remakrk = vo.getRemark()) != null) { + String targetTypeName = null; + List targetInfos = gson.fromJson(remakrk, type); + if (CollectionUtils.isNotEmpty(targetInfos)) { + String template = targetInfos.stream().map(folderItem -> folderItem.getName()).collect(Collectors.joining("/")); + FolderItem item = targetInfos.get(0); + Integer targetType = item.getType(); + targetTypeName = SysLogConstants.sourceTypeName(targetType); + targetTypeName = Translator.get(targetTypeName); + return String.format(format, targetTypeName, template); + } + } + return ""; + } + + + + private LogTypeItem parentIds(String id, Integer value) { + LogTypeItem result = new LogTypeItem(); + String typeValue = ""; + Boolean reversed = false; + switch (value) { + case 2: + typeValue = "dataset"; + break; + case 3: + typeValue = "panel"; + reversed = true; + break; + case 7: + typeValue = "dept"; + break; + case 11: + typeValue = "menu"; + break; + default: + break; + } + List ids = new ArrayList<>(); + if (StringUtils.isNotBlank(typeValue)) { + ids.addAll(AuthUtils.parentResources(id, typeValue)); + if (reversed) { + Collections.reverse(ids); + } + } + result.setParentIds(ids); + result.setTypeValue(typeValue); + return result; + } + + + private List parentInfos(List ids, Integer value){ + List folderItems = extSysLogMapper.idAndName(ids, value); + if (value == 3) { + folderItems.forEach(item -> { + if (StringUtils.equals("i18n_panel_list", item.getName())) { + item.setName(Translator.get(item.getName())); + } + }); + } + folderItems.forEach(item -> item.setType(value)); + return folderItems; + } + + public List justParents(String id, SysLogConstants.SOURCE_TYPE type) { + + Integer value = type.getValue(); + LogTypeItem typeItem = parentIds(id, value); + List ids = typeItem.getParentIds(); + ids = ids.stream().filter(item -> !StringUtils.equals(id, item)).collect(Collectors.toList()); + return parentInfos(ids, value); + } + + public List parentsAndSelf(String id, SysLogConstants.SOURCE_TYPE type) { + Integer value = type.getValue(); + LogTypeItem logTypeItem = parentIds(id, value); + if (CollectionUtils.isEmpty(logTypeItem.getParentIds())) { + logTypeItem.getParentIds().add(id); + } + return parentInfos(logTypeItem.getParentIds(), value); + } + + public FolderItem nameWithId(String id, Integer type) { + List ids = new ArrayList<>(); + ids.add(id); + List folderItems = extSysLogMapper.idAndName(ids, type); + if (CollectionUtils.isNotEmpty(folderItems)) { + return folderItems.get(0); + } + return null; + } + + public FolderItem dsTypeInfo(String typeId) { + ArrayList dataSourceTypes = new ArrayList<>(datasourceService.types()); + String name = null; + for (int i = 0; i < dataSourceTypes.size(); i++) { + if (dataSourceTypes.get(i).getType().equals(typeId)){ + name = dataSourceTypes.get(i).getName(); + break; + } + } + FolderItem folderItem = new FolderItem(); + folderItem.setId(typeId); + folderItem.setName(StringUtils.isNotBlank(name) ? name : typeId); + return folderItem; + } + + public FolderItem dsTypeInfoById(String dsId) { + Datasource datasource = datasourceService.get(dsId); + return dsTypeInfo(datasource.getType()); + } + + +} diff --git a/backend/src/main/java/io/dataease/service/panel/applog/AppLogQueryParam.java b/backend/src/main/java/io/dataease/service/panel/applog/AppLogQueryParam.java new file mode 100644 index 0000000000..9aee5afaf3 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/panel/applog/AppLogQueryParam.java @@ -0,0 +1,11 @@ +package io.dataease.service.panel.applog; + +import io.dataease.ext.query.GridExample; +import lombok.Data; + +import java.util.List; + +@Data +public class AppLogQueryParam extends GridExample { + +} diff --git a/backend/src/main/java/io/dataease/service/panel/applog/AppLogService.java b/backend/src/main/java/io/dataease/service/panel/applog/AppLogService.java new file mode 100644 index 0000000000..0c174f17a4 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/panel/applog/AppLogService.java @@ -0,0 +1,37 @@ +package io.dataease.service.panel.applog; + +import com.google.gson.Gson; +import io.dataease.controller.sys.request.KeyGridRequest; +import io.dataease.dto.SysLogDTO; +import io.dataease.dto.appTemplateMarket.AppLogGridDTO; +import io.dataease.ext.ExtAppLogMapper; +import io.dataease.ext.query.GridExample; +import io.dataease.plugins.common.base.mapper.PanelAppTemplateLogMapper; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +@Service +public class AppLogService { + + private Gson gson = new Gson(); + @Resource + private PanelAppTemplateLogMapper appLogMapper; + @Resource + private ExtAppLogMapper extAppLogMapper; + + + public List query(KeyGridRequest request) { + GridExample gridExample = request.convertExample(); + gridExample.setExtendCondition(request.getKeyWord()); + AppLogQueryParam logQueryParam = gson.fromJson(gson.toJson(gridExample), AppLogQueryParam.class); + List voLogs = extAppLogMapper.query(logQueryParam); + return voLogs; + } + + public void saveLog(SysLogDTO sysLogDTO) { + + } + + +} diff --git a/backend/src/main/resources/db/migration/V40__1.15.sql b/backend/src/main/resources/db/migration/V40__1.15.sql index 0399731308..4bdd63cb00 100644 --- a/backend/src/main/resources/db/migration/V40__1.15.sql +++ b/backend/src/main/resources/db/migration/V40__1.15.sql @@ -24,8 +24,13 @@ CREATE TABLE `task_instance` ( INSERT INTO `task_instance` (`task_id`) VALUES ('Datasource_check_status'); -INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (41, 1, 1, 1, '应用管理', 'system-template-app', 'panel/templateApp/index', 13, 'display-setting', 'panel/templateApp/index', 0, 0, 0, 'template:read', NULL, NULL, NULL, 1620444227389); +update sys_menu set menu_sort=10 where menu_id=1; +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (41, 1, 1, 1, '应用管理', 'system-app-template', 'panel/appTemplate/index', 13, 'sys-param', 'panel/appTemplate/index', 0, 0, 0, NULL, NULL, NULL, NULL, 1620444227389); +INSERT INTO `sys_menu` (`menu_id`, `pid`, `sub_count`, `type`, `title`, `name`, `component`, `menu_sort`, `icon`, `path`, `i_frame`, `cache`, `hidden`, `permission`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (203, 0, 0, 1, '应用市场', 'app-template-market', 'panel/appTemplateMarket/index', 6, 'dashboard', '/appTemplateMarket', 0, 0, 0, NULL, NULL, NULL, NULL, 1620444227389); +-- ---------------------------- +-- Table structure for panel_app_template +-- ---------------------------- DROP TABLE IF EXISTS `panel_app_template`; CREATE TABLE `panel_app_template` ( `id` varchar(50) NOT NULL, @@ -34,11 +39,14 @@ CREATE TABLE `panel_app_template` ( `level` int(8) DEFAULT NULL, `pid` varchar(255) DEFAULT NULL COMMENT '父级ID', `version` varchar(255) DEFAULT NULL COMMENT '版本', + `icon` varchar(1000) DEFAULT NULL, `application_info` longtext COMMENT '应用信息', `panel_info` longtext COMMENT '仪表板信息', - `views_info` longtext COMMENT '视图信息', - `dataset_info` longtext COMMENT '数据集信息', - `dataset_fields_info` longtext COMMENT '数据集字段信息', + `panel_views_info` longtext COMMENT '仪表板视图信息', + `chart_views_info` longtext COMMENT '视图信息', + `chart_view_fields_info` longtext COMMENT '视图计算字段信息', + `dataset_tables_info` longtext COMMENT '数据集信息', + `dataset_table_fields_info` longtext COMMENT '数据集字段信息', `dataset_tasks_info` longtext COMMENT '数据集任务信息', `datasource_info` longtext COMMENT '数据源信息', `snapshot` longtext, @@ -47,7 +55,28 @@ CREATE TABLE `panel_app_template` ( `create_time` bigint(13) DEFAULT NULL, `create_user` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; + +-- ---------------------------- +-- Table structure for panel_app_template_log +-- ---------------------------- +DROP TABLE IF EXISTS `panel_app_template_log`; +CREATE TABLE `panel_app_template_log` ( + `id` varchar(50) NOT NULL, + `app_template_id` varchar(50) DEFAULT NULL COMMENT '应用模板id', + `app_template_name` varchar(255) DEFAULT NULL COMMENT '原仪表板名称', + `datasource_id` varchar(50) DEFAULT NULL COMMENT '数据源ID', + `source_datasource_name` varchar(255) DEFAULT NULL COMMENT '原数据源名称', + `dataset_group_id` varchar(50) DEFAULT NULL COMMENT '数据集分组ID', + `source_dataset_group_name` varchar(255) DEFAULT NULL COMMENT '原数据集分组名称', + `panel_id` varchar(50) DEFAULT NULL COMMENT '仪表板ID', + `source_panel_name` varchar(255) DEFAULT NULL COMMENT '原仪表板名称', + `apply_time` bigint(13) DEFAULT NULL COMMENT '应用时间', + `apply_persion` varchar(255) DEFAULT NULL COMMENT '应用人', + `is_success` tinyint(1) DEFAULT '1' COMMENT '是否成功', + `remark` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; INSERT INTO `sys_menu` VALUES (800, 0, 0, 1, '数据集表单', 'dataset-form', 'dataset/form', 999, NULL, '/dataset-form', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL); diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index 034bab0a46..fe4db142b5 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -1,6 +1,8 @@ \u4E2A\u4EBA\u4FE1\u606F=Personal Information \u4EEA\u8868\u677F=Dashboard \u6A21\u677F\u5E02\u573A=Template Market +\u5E94\u7528\u5E02\u573A=App Market +\u5E94\u7528\u7BA1\u7406=Applications \u4FEE\u6539\u5BC6\u7801=Change Password \u521B\u5EFA\u7528\u6237=Create User \u521B\u5EFA\u7EC4\u7EC7=Create Organization @@ -220,4 +222,7 @@ I18N_USER_SOURCE_PWD_ERROR=Source password error I18N_USER_PWD_FORMAT_ERROR=Password format error I18N_DS_INVALID=Datasource is invalid. -I18N_DS_INVALID_TABLE=Datasource has invalid tables \ No newline at end of file +I18N_DS_INVALID_TABLE=Datasource has invalid tables + +I18N_PANEL_EXIST=The current panel name already exists under this directory +I18N_DATASET_GROUP_EXIST=The current dataset grouping name already exists under this directory diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 6aa870b885..c09261929f 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -1,6 +1,8 @@ \u4E2A\u4EBA\u4FE1\u606F=\u4E2A\u4EBA\u4FE1\u606F \u4EEA\u8868\u677F=\u4EEA\u8868\u677F \u6A21\u677F\u5E02\u573A=\u6A21\u677F\u5E02\u573A +\u5E94\u7528\u5E02\u573A=\u5E94\u7528\u5E02\u5834 +\u5E94\u7528\u7BA1\u7406=\u5E94\u7528\u7BA1\u7406 \u4FEE\u6539\u5BC6\u7801=\u4FEE\u6539\u5BC6\u7801 \u521B\u5EFA\u7528\u6237=\u521B\u5EFA\u7528\u6237 \u521B\u5EFA\u7EC4\u7EC7=\u521B\u5EFA\u7EC4\u7EC7 @@ -220,4 +222,7 @@ I18N_USER_SOURCE_PWD_ERROR=\u539F\u59CB\u5BC6\u7801\u9519\u8BEF I18N_USER_PWD_FORMAT_ERROR=\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF I18N_DS_INVALID=\u6570\u636E\u6E90\u65E0\u6548. -I18N_DS_INVALID_TABLE=\u6570\u636E\u6E90\u4E2D\u6709\u65E0\u6548\u7684\u8868 \ No newline at end of file +I18N_DS_INVALID_TABLE=\u6570\u636E\u6E90\u4E2D\u6709\u65E0\u6548\u7684\u8868 + +I18N_PANEL_EXIST=\u5F53\u524D\u4EEA\u8868\u677F\u540D\u79F0\u5728\u8BE5\u76EE\u5F55\u4E0B\u9762\u5DF2\u7ECF\u5B58\u5728 +I18N_DATASET_GROUP_EXIST=\u5F53\u524D\u6570\u636E\u96C6\u5206\u7EC4\u540D\u79F0\u5728\u8BE5\u76EE\u5F55\u4E0B\u9762\u5DF2\u7ECF\u5B58\u5728 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index d8fff127a1..e80cab88ef 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -1,6 +1,8 @@ \u4E2A\u4EBA\u4FE1\u606F=\u500B\u4EBA\u4FE1\u606F \u4EEA\u8868\u677F=\u5100\u8868\u677F \u6A21\u677F\u5E02\u573A=\u6A21\u677F\u5E02\u5834 +\u5E94\u7528\u5E02\u573A=\u5E94\u7528\u5E02\u5834 +\u5E94\u7528\u7BA1\u7406=\u5E94\u7528\u7BA1\u7406 \u4FEE\u6539\u5BC6\u7801=\u4FEE\u6539\u5BC6\u78BC \u521B\u5EFA\u7528\u6237=\u5275\u5EFA\u7528\u6236 \u521B\u5EFA\u7EC4\u7EC7=\u5275\u5EFA\u7D44\u7E54 @@ -216,4 +218,7 @@ I18N_USER_SOURCE_PWD_ERROR=\u539F\u59CB\u5BC6\u78BC\u932F\u8AA4 I18N_USER_PWD_FORMAT_ERROR=\u5BC6\u78BC\u683C\u5F0F\u932F\u8AA4 I18N_DS_INVALID=\u6578\u64DA\u6E90\u7121\u6548. -I18N_DS_INVALID_TABLE=\u6578\u64DA\u6E90\u4E2D\u6709\u7121\u6548\u7684\u8868 \ No newline at end of file +I18N_DS_INVALID_TABLE=\u6578\u64DA\u6E90\u4E2D\u6709\u7121\u6548\u7684\u8868 + +I18N_PANEL_EXIST=\u7576\u524D\u5100\u9336\u95C6\u540D\u7A31\u5728\u8A72\u76EE\u9304\u4E0B\u9762\u5DF2\u7D93\u5B58\u5728 +I18N_DATASET_GROUP_EXIST=\u7576\u524D\u6578\u64DA\u96C6\u5206\u7D44\u540D\u7A31\u5728\u8A72\u76EE\u9304\u4E0B\u9762\u5DF2\u7D93\u5B58\u5728 diff --git a/frontend/src/api/appTemplateMarket/index.js b/frontend/src/api/appTemplateMarket/index.js new file mode 100644 index 0000000000..98ef9f4ac9 --- /dev/null +++ b/frontend/src/api/appTemplateMarket/index.js @@ -0,0 +1,20 @@ +import request from '@/utils/request' + +export function searchAppTemplate(data) { + return request({ + url: '/appTemplate/find', + method: 'post', + loading: true, + hideMsg: true, + data + }) +} + +export function getCategories() { + return request({ + url: '/template/market/categories', + method: 'get', + hideMsg: true, + loading: true + }) +} diff --git a/frontend/src/api/appTemplateMarket/log.js b/frontend/src/api/appTemplateMarket/log.js new file mode 100644 index 0000000000..3a14b96f80 --- /dev/null +++ b/frontend/src/api/appTemplateMarket/log.js @@ -0,0 +1,28 @@ +import request from '@/utils/request' + +export function logGrid(page, size, data) { + return request({ + url: '/app/log/logGrid/' + page + '/' + size, + method: 'post', + data, + loading: true + }) +} + +export function opTypes() { + return request({ + url: '/api/log/opTypes', + method: 'post', + loading: true + }) +} + +export function exportExcel(data) { + return request({ + url: '/api/log/export', + method: 'post', + loading: true, + responseType: 'blob', + data + }) +} diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index 4b3f4696b4..abd442bb52 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -69,6 +69,15 @@ export function groupTree(data) { }) } +export function dsGroupTree(data) { + return request({ + url: '/dataset/group/tree', + method: 'post', + loading: true, + data + }) +} + export function listDatasource() { return request({ url: '/datasource/list', diff --git a/frontend/src/api/panel/panel.js b/frontend/src/api/panel/panel.js index 0b5a510ba1..e2e9277325 100644 --- a/frontend/src/api/panel/panel.js +++ b/frontend/src/api/panel/panel.js @@ -307,3 +307,12 @@ export function export2AppCheck(panelId){ loading: false }) } + +export function appApply(data) { + return request({ + url: 'panel/group/appApply', + method: 'post', + loading: true, + data + }) +} diff --git a/frontend/src/api/system/templateApp.js b/frontend/src/api/system/appTemplate.js similarity index 58% rename from frontend/src/api/system/templateApp.js rename to frontend/src/api/system/appTemplate.js index 58b05a720f..6e11252b57 100644 --- a/frontend/src/api/system/templateApp.js +++ b/frontend/src/api/system/appTemplate.js @@ -2,22 +2,32 @@ import request from '@/utils/request' export function save(data) { return request({ - url: '/templateApp/save', + url: '/appTemplate/save', data: data, method: 'post', loading: true }) } + +export function update(data) { + return request({ + url: '/appTemplate/update', + data: data, + method: 'post', + loading: true + }) +} + export function templateDelete(id) { return request({ - url: '/templateApp/delete/' + id, + url: '/appTemplate/delete/' + id, method: 'delete' }) } -export function showtemplateAppList(data) { +export function showappTemplateList(data) { return request({ - url: '/templateApp/templateAppList', + url: '/appTemplate/appTemplateList', data: data, method: 'post' }) @@ -25,14 +35,14 @@ export function showtemplateAppList(data) { export function findOne(id) { return request({ - url: '/templateApp/findOne/' + id, + url: '/appTemplate/findOne/' + id, method: 'get' }) } export function find(data) { return request({ - url: '/templateApp/find', + url: '/appTemplate/find', data: data, loading: true, method: 'post' @@ -41,7 +51,7 @@ export function find(data) { export function nameCheck(data) { return request({ - url: '/templateApp/nameCheck', + url: '/appTemplate/nameCheck', data: data, method: 'post' }) diff --git a/frontend/src/api/system/datasource.js b/frontend/src/api/system/datasource.js index 346bdadbf4..8588a7fac0 100644 --- a/frontend/src/api/system/datasource.js +++ b/frontend/src/api/system/datasource.js @@ -43,6 +43,7 @@ export function listDriverByType(type) { method: 'get' }) } + export function addDs(data) { return request({ url: 'datasource/add/', diff --git a/frontend/src/components/msgCfm/index.js b/frontend/src/components/msgCfm/index.js index 140c4e6615..7ccc95a8fb 100644 --- a/frontend/src/components/msgCfm/index.js +++ b/frontend/src/components/msgCfm/index.js @@ -11,8 +11,8 @@ export default { customClass, }); }, - handlerConfirm(options) { - let { title, content, type = 'danger', cb, confirmButtonText = this.$t('commons.delete'), showCancelButton = true, cancelButtonText = this.$t("commons.cancel"), cancelCb = () => {} } = options; + handlerConfirm(options,confirmButtonTextInfo) { + let { title, content, type = 'danger', cb, confirmButtonText = confirmButtonTextInfo?confirmButtonTextInfo:this.$t('commons.delete'), showCancelButton = true, cancelButtonText = this.$t("commons.cancel"), cancelCb = () => {} } = options; let text = content ? `${ this.$t(title) }
${ this.$t(content) }` : this.$t(title); const dangerouslyUseHTMLString = Boolean(content); let customClass = `de-confirm de-confirm-fail ${ dangerouslyUseHTMLString && 'de-use-html'}` diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 87cf5a7bf2..3e290a98e9 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -131,6 +131,7 @@ export default { default_login: 'Normal' }, commons: { + uninstall:'Uninstall', no_result: 'No Result', manage_member: 'Managing members', confirm_remove_cancel: 'Are you sure to delete the role?', @@ -2478,6 +2479,14 @@ export default { please_select_map: 'Please select a range of map' }, 'I18N_USER_TEMPLATE_ERROR': 'Template file error', - 'i18n_max_user_import_size': 'File size exceeds 10M' - + 'i18n_max_user_import_size': 'File size exceeds 10M', + app_template: { + app_manager: 'Application management', + app_upload: 'Upload app', + no_apps: 'No apps', + app_group_icon: 'Cover icon', + app_name: 'Application name', + search_by_keyword:'Search by keyword', + apply_logs:'Apply logs' + } } diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 4447e957a2..e21db2f6c9 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -131,6 +131,7 @@ export default { default_login: '普通登錄' }, commons: { + uninstall:'卸载', no_result: '没有找到相关内容', manage_member: '管理成員', user_confirm_remove_cancel: '確定將該用戶從角色中移除嗎?', @@ -2479,5 +2480,13 @@ export default { please_select_map: '請先選擇地圖範圍' }, 'I18N_USER_TEMPLATE_ERROR': '模版錯誤', - 'i18n_max_user_import_size': '文件最大不能超過10M' + 'i18n_max_user_import_size': '文件最大不能超過10M', + app_template: { + app_manager: '應用管理', + app_upload: '上傳應用', + no_apps: '暫無應用', + app_group_icon: '封面圖標', + app_name: '應用名稱', + search_by_keyword:'通過關鍵字搜索' + } } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index d43377e106..22a3f137f9 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -131,6 +131,7 @@ export default { default_login: '普通登录' }, commons: { + uninstall:'卸载', no_result: '没有找到相关内容', manage_member: '管理成员', confirm_remove_cancel: '确定删除该角色吗?', @@ -2479,5 +2480,13 @@ export default { please_select_map: '请先选择地图范围' }, 'I18N_USER_TEMPLATE_ERROR': '模版错误', - 'i18n_max_user_import_size': '文件最大不能超过10M' + 'i18n_max_user_import_size': '文件最大不能超过10M', + app_template: { + app_manager: '应用管理', + app_upload: '上传应用', + no_apps: '暂无应用', + app_group_icon: '封面图标', + app_name: '应用名称', + search_by_keyword:'通过关键字搜索' + } } diff --git a/frontend/src/views/panel/templateApp/component/TemplateImport.vue b/frontend/src/views/panel/appTemplate/component/TemplateImport.vue similarity index 74% rename from frontend/src/views/panel/templateApp/component/TemplateImport.vue rename to frontend/src/views/panel/appTemplate/component/TemplateImport.vue index 1ffc4e202d..d0a8ba6977 100644 --- a/frontend/src/views/panel/templateApp/component/TemplateImport.vue +++ b/frontend/src/views/panel/appTemplate/component/TemplateImport.vue @@ -9,7 +9,7 @@ :model="templateInfo" :rules="templateInfoRules" > - +
上传应用 + {{$t('app_template.app_upload')}} + @@ -399,7 +481,8 @@ export default { } } } -::v-deep .container-wrapper{ - padding: 0px!important; + +::v-deep .container-wrapper { + padding: 0px !important; } diff --git a/frontend/src/views/panel/appTemplateMarket/component/AppTemplateItem.vue b/frontend/src/views/panel/appTemplateMarket/component/AppTemplateItem.vue new file mode 100644 index 0000000000..10b8eec0f7 --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/component/AppTemplateItem.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/frontend/src/views/panel/appTemplateMarket/component/MarketPreview.vue b/frontend/src/views/panel/appTemplateMarket/component/MarketPreview.vue new file mode 100644 index 0000000000..f37a03cf45 --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/component/MarketPreview.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/frontend/src/views/panel/appTemplateMarket/component/TemplateMarketItem.vue b/frontend/src/views/panel/appTemplateMarket/component/TemplateMarketItem.vue new file mode 100644 index 0000000000..2ef56f02f9 --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/component/TemplateMarketItem.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/frontend/src/views/panel/appTemplateMarket/component/TemplateMarketPreviewItem.vue b/frontend/src/views/panel/appTemplateMarket/component/TemplateMarketPreviewItem.vue new file mode 100644 index 0000000000..40ebda677b --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/component/TemplateMarketPreviewItem.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/frontend/src/views/panel/appTemplateMarket/index.vue b/frontend/src/views/panel/appTemplateMarket/index.vue new file mode 100644 index 0000000000..44c7045b28 --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/index.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/frontend/src/views/panel/appTemplateMarket/log/filterUser.vue b/frontend/src/views/panel/appTemplateMarket/log/filterUser.vue new file mode 100644 index 0000000000..6e6ebe1700 --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/log/filterUser.vue @@ -0,0 +1,107 @@ + + + diff --git a/frontend/src/views/panel/appTemplateMarket/log/index.vue b/frontend/src/views/panel/appTemplateMarket/log/index.vue new file mode 100644 index 0000000000..6f2e1946b3 --- /dev/null +++ b/frontend/src/views/panel/appTemplateMarket/log/index.vue @@ -0,0 +1,392 @@ + + + + diff --git a/frontend/src/views/panel/list/PanelList.vue b/frontend/src/views/panel/list/PanelList.vue index be94388ca0..591cecf320 100644 --- a/frontend/src/views/panel/list/PanelList.vue +++ b/frontend/src/views/panel/list/PanelList.vue @@ -241,6 +241,11 @@ export default { components: { GrantAuth, LinkGenerate, EditPanel, TreeSelector }, data() { return { + responseSource:'panelQuery', + clearLocalStorage: [ + 'chart-tree', + 'dataset-tree' + ], historyRequestId: null, lastActiveNode: null, // 激活的节点 在这个节点下面动态放置子节点 lastActiveNodeData: null, @@ -378,7 +383,11 @@ export default { this.defaultTree(true) this.initCache() const routerParam = this.$router.currentRoute.params - if (routerParam && routerParam.nodeType === 'panel' && this.historyRequestId !== routerParam.requestId) { + if(routerParam && 'appApply'===routerParam.responseSource ){ + this.responseSource = routerParam.responseSource + this.lastActiveNode = routerParam + this.tree() + }else if (routerParam && routerParam.nodeType === 'panel' && this.historyRequestId !== routerParam.requestId) { this.historyRequestId = routerParam.requestId this.tree() this.edit(routerParam, null) @@ -387,6 +396,13 @@ export default { } }, methods: { + fromAppActive(){ + this.activeNodeAndClickOnly(this.lastActiveNode) + this.clearLocalStorage.forEach(item => { + localStorage.removeItem(item) + }) + this.responseSource='panelQuery' + }, newPanelFromMarket(panelInfo) { if (panelInfo) { this.tree() @@ -637,6 +653,9 @@ export default { if (!userCache) { this.tData = res.data } + if(this.responseSource==='appApply'){ + this.fromAppActive() + } if (this.filterText) { this.$nextTick(() => { this.$refs.panel_list_tree.filter(this.filterText) diff --git a/frontend/src/views/system/datasource/DsForm.vue b/frontend/src/views/system/datasource/DsForm.vue index ad60024787..40134db769 100644 --- a/frontend/src/views/system/datasource/DsForm.vue +++ b/frontend/src/views/system/datasource/DsForm.vue @@ -1,13 +1,60 @@