From 6ade90dd5759d471d5209241252a8aa966a6f887 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Thu, 20 Jul 2023 16:57:56 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shandan-bianmu/src/main/resources/application-dev.yml | 3 ++- shandan-browser/src/main/resources/application-dev.yml | 3 ++- shandan-control/src/main/resources/application-dev.yml | 6 +----- shandan-desktop/src/main/resources/application-dev.yml | 3 +-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/shandan-bianmu/src/main/resources/application-dev.yml b/shandan-bianmu/src/main/resources/application-dev.yml index 632c336..d3d3248 100644 --- a/shandan-bianmu/src/main/resources/application-dev.yml +++ b/shandan-bianmu/src/main/resources/application-dev.yml @@ -50,4 +50,5 @@ project: # 日志级别 logging: level: - root: debug + com.keyware: debug + diff --git a/shandan-browser/src/main/resources/application-dev.yml b/shandan-browser/src/main/resources/application-dev.yml index faa93ca..f834bbb 100644 --- a/shandan-browser/src/main/resources/application-dev.yml +++ b/shandan-browser/src/main/resources/application-dev.yml @@ -50,4 +50,5 @@ project: logging: level: - root: debug + com.keyware: debug + diff --git a/shandan-control/src/main/resources/application-dev.yml b/shandan-control/src/main/resources/application-dev.yml index b3f625e..d3c2efa 100644 --- a/shandan-control/src/main/resources/application-dev.yml +++ b/shandan-control/src/main/resources/application-dev.yml @@ -25,10 +25,6 @@ spring: rest: uris: http://127.0.0.1:9200 -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - security: oauth2: client: @@ -51,4 +47,4 @@ project: logging: level: - root: debug + com.keyware: debug diff --git a/shandan-desktop/src/main/resources/application-dev.yml b/shandan-desktop/src/main/resources/application-dev.yml index 6d4f666..5c93897 100644 --- a/shandan-desktop/src/main/resources/application-dev.yml +++ b/shandan-desktop/src/main/resources/application-dev.yml @@ -48,7 +48,6 @@ security: user-authorization-uri: ${oauth.server.proxy}/oauth/authorize resource: user-info-uri: ${oauth.server.internal}/oauth/user/info - logging: level: - root: debug + com.keyware: debug From df430e8054325d8838a040f39b18877715ef9d8d Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Thu, 20 Jul 2023 17:11:15 +0800 Subject: [PATCH 02/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E7=BB=BC?= =?UTF-8?q?=E5=90=88=E6=B5=8F=E8=A7=88=E6=95=B0=E6=8D=AE=E8=A1=A8=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=9F=A5=E8=AF=A2=E9=A1=B5=E9=9D=A2=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shandan-browser/src/main/resources/static/js/meta_search.js | 1 + 1 file changed, 1 insertion(+) diff --git a/shandan-browser/src/main/resources/static/js/meta_search.js b/shandan-browser/src/main/resources/static/js/meta_search.js index 7cb5c05..24ddba2 100644 --- a/shandan-browser/src/main/resources/static/js/meta_search.js +++ b/shandan-browser/src/main/resources/static/js/meta_search.js @@ -36,6 +36,7 @@ layui.use(['dropdown', 'gtable', 'laydate', 'form'], function () { cols: [cols], limit: 20, toolbar: '#table-title', + request:{pageName: 'page', limitName: 'size'}, defaultToolbar: ['filter', 'print', 'exports', { title: '统计报表', layEvent: 'tong-ji', From 17721915aef796fb3f8e8fe9eebc294b5a289b4c Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Thu, 20 Jul 2023 17:51:15 +0800 Subject: [PATCH 03/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E7=BB=BC?= =?UTF-8?q?=E5=90=88=E6=B5=8F=E8=A7=88=E6=95=B0=E6=8D=AE=E8=A1=A8=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8A=A5=E8=A1=A8=E8=AF=B7=E6=B1=82=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/js/report.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/shandan-browser/src/main/resources/static/js/report.js b/shandan-browser/src/main/resources/static/js/report.js index ce31424..ec1d0b9 100644 --- a/shandan-browser/src/main/resources/static/js/report.js +++ b/shandan-browser/src/main/resources/static/js/report.js @@ -63,7 +63,7 @@ ReportComponent.prototype.openEchartsConfigLayer = function () { $('#echartsConfigForm').parent().css('overflow', 'visible') }, yes: function (index) { - _this.requestData(()=> layer.close(index)); + _this.requestData(() => layer.close(index)); } }); } @@ -203,12 +203,15 @@ ReportComponent.prototype.validate = function (formVal) { if (!formVal.aggregationType) { showErrorMsg('请设置聚合方式'); return; - } else { - if ((formVal.aggregationType == 'sum' || formVal.aggregationType == 'avg') && !formVal.fieldY) { - showErrorMsg('请设置聚合字段'); - return; - } } + if ((formVal.aggregationType == 'sum' || formVal.aggregationType == 'avg') && !formVal.fieldY) { + showErrorMsg('请设置聚合字段'); + return; + } + if(formVal.aggregationType == 'count' && !formVal.fieldY){ + formVal.fieldY = formVal.fieldX; + } + return true; } From 2cd1e16dd17772fd4c2555fedff5f177f595823d Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 21 Jul 2023 09:12:40 +0800 Subject: [PATCH 04/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E7=BC=96?= =?UTF-8?q?=E7=9B=AE=E7=B3=BB=E7=BB=9F=E4=B8=8B=E8=BD=BD=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A1=A8=E6=97=B6=E6=98=BE=E7=A4=BA=E4=B8=8D=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/static/js/business/directory/directory.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shandan-bianmu/src/main/resources/static/js/business/directory/directory.js b/shandan-bianmu/src/main/resources/static/js/business/directory/directory.js index 42f6f85..648ae98 100644 --- a/shandan-bianmu/src/main/resources/static/js/business/directory/directory.js +++ b/shandan-bianmu/src/main/resources/static/js/business/directory/directory.js @@ -251,6 +251,8 @@ function startRender() { }, }); + }else{ + showErrorMsg('数据表不支持下载'); } }) } From 2d69ed8072581d28739cb752a60da3f9ddebee0c Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 21 Jul 2023 10:29:07 +0800 Subject: [PATCH 05/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=89=8D?= =?UTF-8?q?=E7=AB=AFpost=E8=AF=B7=E6=B1=82=E4=B8=AD=E4=B8=8D=E5=8C=85?= =?UTF-8?q?=E5=90=ABpublicKey=E6=97=B6=E8=BF=9B=E8=A1=8C=E6=98=8E=E6=96=87?= =?UTF-8?q?=E6=8E=A5=E6=94=B6=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/keyware/shandan/frame/aspect/SafetyAspect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java b/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java index 7742803..6f7fec8 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java +++ b/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java @@ -80,7 +80,7 @@ public class SafetyAspect { Object result = joinPoint.proceed(AspectUtil.parseJoinPointArgs(joinPoint, request)); //执行方法之前解密,且只拦截post请求 - if ("post".equalsIgnoreCase(request.getMethod()) && !ServletFileUpload.isMultipartContent(request)) { + if ("post".equalsIgnoreCase(request.getMethod()) && !ServletFileUpload.isMultipartContent(request) && StringUtils.hasText(publicKey)) { // 返回之前对结果进行加密 //每次响应之前随机获取AES的key,加密data数据 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); From 61584709e382ece4f1f9cea53a9e67913d6060ad Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 21 Jul 2023 10:39:15 +0800 Subject: [PATCH 06/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86=E4=B8=AD=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=A1=A8=E5=8D=95=E6=97=B6=E7=9A=84=E8=AD=A6=E5=91=8A?= =?UTF-8?q?=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/view/dynamicForm/formList.html | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/shandan-basedata/src/main/resources/view/dynamicForm/formList.html b/shandan-basedata/src/main/resources/view/dynamicForm/formList.html index 597fcaf..448b1bf 100644 --- a/shandan-basedata/src/main/resources/view/dynamicForm/formList.html +++ b/shandan-basedata/src/main/resources/view/dynamicForm/formList.html @@ -14,10 +14,12 @@
@@ -79,7 +81,7 @@ openFormConfigLayer(id); break; case 'delete': - formDelete(id) + formDelete(data) break; } } @@ -100,7 +102,10 @@ cancel: function (index, layerObj) { let iframeWin = window[layerObj.find('iframe')[0]['name']]; if (iframeWin.isChange()) { - layer.confirm('关闭窗口将不会保存更改的内容,是否继续关闭?', {title: '关闭表单设计器', btn: ['关闭', '取消']}, function () { + layer.confirm('关闭窗口将不会保存更改的内容,是否继续关闭?', { + title: '关闭表单设计器', + btn: ['关闭', '取消'] + }, function () { layer.closeAll(); }) } else { @@ -132,10 +137,14 @@ /** * 删除表单 - * @param id + * @param data */ - function formDelete(id) { - layer.confirm('是否删除该表单?', {title: '删除确认', btn: ['删除', '取消']}, function (layIndex) { + function formDelete(data) { + const {id, formId} = data; + layer.confirm(`将同时删除以下数据库表:

是否继续删除?`, { + title: '删除确认', + btn: ['删除', '取消'] + }, function (layIndex) { postRequest(`${ctx}/dynamic-form/api/form/delete`, {id}).then(res => { layer.close(layIndex); res.flag ? showOkMsg('删除成功') : showErrorMsg(res.msg); From 9aeb184fb4bd75492f5e511f93d45404a4d9c6c5 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 21 Jul 2023 10:41:24 +0800 Subject: [PATCH 07/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=95=B0=E6=8D=AE=E5=90=8E=E7=AB=AF=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E5=9B=9E=E6=BB=9A=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dynacmicform/core/basic/services/DynamicFormService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java index 4afecec..27d871e 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java @@ -12,6 +12,7 @@ import com.keyware.shandan.dynacmicform.core.db.parser.TableInfoParser; import com.keyware.shandan.dynacmicform.core.db.pojo.Table; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -37,6 +38,7 @@ public class DynamicFormService { * @return boolean * @throws Exception 异常 */ + @Transactional(rollbackFor = Exception.class) public boolean saveForm(FormInfoPo form) throws Exception { FormInfoPo oldForm = formInfoService.getById(form.getId()); Table table = TableInfoParser.parseTable(form); @@ -70,6 +72,7 @@ public class DynamicFormService { * @param id * @return */ + @Transactional(rollbackFor = Exception.class) public boolean delete(Integer id) { FormInfoPo form = formInfoService.getById(id); boolean ok = formInfoService.removeById(id); From 0c2fa9586dde45c98f95c751f5e1f967243d8ceb Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 21 Jul 2023 14:36:30 +0800 Subject: [PATCH 08/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8A=A8=E6=80=81=E8=A1=A8=E5=8D=95=E6=97=B6=E5=AF=B9?= =?UTF-8?q?=E5=AF=B9=E5=8E=9F=E5=A7=8B=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=BF=9B=E8=A1=8C=E5=A4=87=E4=BB=BD=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=A2=9E=E5=8A=A0=E4=BA=8B=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DynamicFormController.java | 2 +- .../basic/services/DynamicDataService.java | 20 ++++--- .../basic/services/DynamicFormService.java | 37 ++++++++---- .../services/impl/FormInfoServiceImpl.java | 8 +++ .../dynacmicform/core/db/SqlHelper.java | 15 +++-- .../core/db/executor/SqlExecutor.java | 56 ++++++++++--------- .../control/config/DynamicFormListener.java | 3 + 7 files changed, 90 insertions(+), 51 deletions(-) diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/controller/DynamicFormController.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/controller/DynamicFormController.java index 35ef429..84710ef 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/controller/DynamicFormController.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/controller/DynamicFormController.java @@ -157,7 +157,7 @@ public class DynamicFormController { * @return 结果 */ @PostMapping("/api/form/delete") - public Result deleteFormInfo(int id) { + public Result deleteFormInfo(int id) throws Exception { return Result.of(dynamicFormService.delete(id)); } } diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicDataService.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicDataService.java index 401094e..76f1555 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicDataService.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicDataService.java @@ -14,6 +14,12 @@ import java.util.*; @Service public class DynamicDataService { + private final SqlExecutor sqlExecutor; + + public DynamicDataService(SqlExecutor sqlExecutor) { + this.sqlExecutor = sqlExecutor; + } + /** * 根据ID删除数据 @@ -25,7 +31,7 @@ public class DynamicDataService { */ public boolean deleteById(FormInfoPo form, Integer id) throws Exception { QueryParam param = QueryParam.builder().column("ID").eq(id).build(); - return SqlExecutor.executeUpdate(SqlHelper.deleteSql(form, param), id); + return sqlExecutor.executeUpdate(SqlHelper.deleteSql(form, param), id); } @@ -58,7 +64,7 @@ public class DynamicDataService { // 插入Sql,去除主键列 params.remove("ID"); LinkedHashMap data = new LinkedHashMap<>(params); - return SqlExecutor.executeUpdate(SqlHelper.insertSql(form, data), data.values().toArray()); + return sqlExecutor.executeUpdate(SqlHelper.insertSql(form, data), data.values().toArray()); } /** @@ -75,7 +81,7 @@ public class DynamicDataService { QueryParam queryParam = QueryParam.builder().column("ID").eq(id).build(); List paramValues = new ArrayList<>(dataMap.values()); paramValues.addAll(queryParam.getParamValues()); - return SqlExecutor.executeUpdate(SqlHelper.updateSql(form, dataMap, queryParam), paramValues.toArray()); + return sqlExecutor.executeUpdate(SqlHelper.updateSql(form, dataMap, queryParam), paramValues.toArray()); } /** @@ -88,7 +94,7 @@ public class DynamicDataService { */ public Map getById(FormInfoPo form, @NotNull Integer id) throws Exception { QueryParam param = QueryParam.builder().column("ID").eq(id).build(); - List> list = SqlExecutor.executeQuery(SqlHelper.selectSql(form, param), id); + List> list = sqlExecutor.executeQuery(SqlHelper.selectSql(form, param), id); if (list == null) { return null; } @@ -105,12 +111,12 @@ public class DynamicDataService { * @throws Exception - */ public Page> pageList(FormInfoPo form, QueryParam params) throws Exception { - List> countList = SqlExecutor.executeQuery(SqlHelper.countSql(form, params), params.getParamValues().toArray()); + List> countList = sqlExecutor.executeQuery(SqlHelper.countSql(form, params), params.getParamValues().toArray()); long count = 0; if (countList != null && countList.size() > 0) { count = (long) countList.get(0).get("COUNT"); } - List> dataList = SqlExecutor.executeQuery(SqlHelper.pageSelectSql(form, params), params.getParamValues().toArray()); + List> dataList = sqlExecutor.executeQuery(SqlHelper.pageSelectSql(form, params), params.getParamValues().toArray()); Page> page = new Page<>(params.getPage(), params.getPageSize(), count); page.setRecords(dataList); return page; @@ -124,6 +130,6 @@ public class DynamicDataService { * @throws Exception */ public List> list(FormInfoPo form) throws Exception { - return SqlExecutor.executeQuery(SqlHelper.selectSql(form, null)); + return sqlExecutor.executeQuery(SqlHelper.selectSql(form, null)); } } diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java index 27d871e..aa919be 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/DynamicFormService.java @@ -3,6 +3,7 @@ package com.keyware.shandan.dynacmicform.core.basic.services; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.keyware.shandan.common.util.DateUtil; import com.keyware.shandan.common.util.StringUtils; import com.keyware.shandan.dynacmicform.core.DynamicFormEventListener; import com.keyware.shandan.dynacmicform.core.basic.entity.FormInfoPo; @@ -22,11 +23,14 @@ import java.util.List; @Slf4j @Service public class DynamicFormService { + private final SqlExecutor sqlExecutor; private final FormInfoService formInfoService; - private final DynamicFormEventListener dynamicFormEventListener; - public DynamicFormService(FormInfoService formInfoService, DynamicFormEventListener dynamicFormEventListener) { + public DynamicFormService(SqlExecutor sqlExecutor, + FormInfoService formInfoService, + DynamicFormEventListener dynamicFormEventListener) { + this.sqlExecutor = sqlExecutor; this.formInfoService = formInfoService; this.dynamicFormEventListener = dynamicFormEventListener; } @@ -43,8 +47,8 @@ public class DynamicFormService { FormInfoPo oldForm = formInfoService.getById(form.getId()); Table table = TableInfoParser.parseTable(form); if (oldForm == null) { - String sql = SqlHelper.createSql(table); - SqlExecutor.execute(sql); + String sql = SqlHelper.tableCreateSql(table); + sqlExecutor.execute(sql); } else { Table oldTable = TableInfoParser.parseTable(oldForm); List alterSqlList = SqlHelper.alterTableDropColumnSql(oldTable, table); @@ -53,7 +57,7 @@ public class DynamicFormService { alterSqlList.addAll(SqlHelper.alterTableAddColumnSql(oldTable, table)); alterSqlList.addAll(SqlHelper.commentTableSql(oldTable, table)); alterSqlList.addAll(SqlHelper.commentColumnSql(oldTable, table)); - SqlExecutor.executeBatch(alterSqlList); + sqlExecutor.executeBatch(alterSqlList); } if (StringUtils.isBlank(form.getQueryConfig())) { generateQueryConfig(form); @@ -67,19 +71,30 @@ public class DynamicFormService { } /** - * 删除表单信息 + * 删除表单信息,逻辑删除,并对实际数据表进行重命名备份 * * @param id * @return */ @Transactional(rollbackFor = Exception.class) - public boolean delete(Integer id) { + public boolean delete(Integer id) throws Exception { FormInfoPo form = formInfoService.getById(id); - boolean ok = formInfoService.removeById(id); - if (ok) { - dynamicFormEventListener.onDrop(form); + if (form != null) { + // 对原始表结构进行重命名备份 + Table table = TableInfoParser.parseTable(form); + String newName = table.getName() + "_BACKUP_" + DateUtil.getFormatNowDate("yyyyMMddHHmmss"); + String sql = SqlHelper.tableRenameSql(table.getName(), newName); + sqlExecutor.execute(sql); + // 更新表名后进行逻辑删除 + form.setFormId(newName); + formInfoService.updateById(form); + boolean ok = formInfoService.removeById(id); + if (!ok) { + throw new RuntimeException("表单信息删除异常"); + } } - return ok; + dynamicFormEventListener.onDrop(form); + return true; } /** diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/impl/FormInfoServiceImpl.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/impl/FormInfoServiceImpl.java index bf40c33..12fbc29 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/impl/FormInfoServiceImpl.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/basic/services/impl/FormInfoServiceImpl.java @@ -5,6 +5,8 @@ import com.keyware.shandan.dynacmicform.core.basic.entity.FormInfoPo; import com.keyware.shandan.dynacmicform.core.basic.mapper.FormInfoMapper; import com.keyware.shandan.dynacmicform.core.basic.services.FormInfoService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; @@ -15,4 +17,10 @@ public class FormInfoServiceImpl extends ServiceImpl public boolean removeById(Serializable id) { return super.removeById(id); } + + /*@Override + @Transactional(rollbackFor = Exception.class, propagation = Propagation.SUPPORTS) + public boolean saveOrUpdate(FormInfoPo entity) { + return super.saveOrUpdate(entity); + }*/ } diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/SqlHelper.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/SqlHelper.java index ac9d068..7415843 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/SqlHelper.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/SqlHelper.java @@ -1,6 +1,7 @@ package com.keyware.shandan.dynacmicform.core.db; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; import com.keyware.shandan.common.util.StreamUtil; import com.keyware.shandan.common.util.StringUtils; import com.keyware.shandan.dynacmicform.core.basic.entity.FormInfoPo; @@ -23,7 +24,7 @@ public class SqlHelper { * @param table * @return */ - public static String createSql(Table table) { + public static String tableCreateSql(Table table) { StringBuilder sqlBuilder = new StringBuilder("CREATE TABLE "); sqlBuilder.append("\"").append(table.getName()).append("\" ("); @@ -46,13 +47,17 @@ public class SqlHelper { return sqlBuilder.toString(); } + public static String tableRenameSql(String oldTableName, String newTableName) { + return StrUtil.format("alter table \"{}\" rename to \"{}\"", oldTableName, newTableName); + } + /** * 修改表的sql * * @param columns 修改的列集合 * @return */ - public static List alterSql(Map> columns) { + public static List tableAlterSql(Map> columns) { List alterSqlList = new ArrayList<>(); return alterSqlList; @@ -64,10 +69,8 @@ public class SqlHelper { * @param table * @return */ - public static String dropSql(Table table) { - StringBuilder sqlBuilder = new StringBuilder(); - - return sqlBuilder.toString(); + public static String tableDropSql(Table table) { + return "DROP TABLE \"" + table.getName() + "\""; } /** diff --git a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/executor/SqlExecutor.java b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/executor/SqlExecutor.java index 534e0b5..fc3b560 100644 --- a/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/executor/SqlExecutor.java +++ b/shandan-basedata/src/main/java/com/keyware/shandan/dynacmicform/core/db/executor/SqlExecutor.java @@ -6,8 +6,10 @@ import com.keyware.shandan.common.util.StringUtils; import com.keyware.shandan.dynacmicform.config.spring.ContextHelper; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; import java.io.IOException; import java.io.Reader; @@ -15,19 +17,24 @@ import java.sql.Date; import java.sql.*; import java.util.*; +@Component public class SqlExecutor { private static final Logger log = LoggerFactory.getLogger(SqlExecutor.class); + private final SqlSession sqlSession; + + public SqlExecutor(SqlSession sqlSession) { + this.sqlSession = sqlSession; + } + /** * 检查SQL是否可以正常执行 * * @param sql sql * @return boolean */ - public static boolean validateQuery(String sql) { - // 获取SqlSessionFactory实例 - SqlSessionFactory sqlSessionFactory = getSessionFactory(); - try (SqlSession session = sqlSessionFactory.openSession(); Connection conn = session.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { + public boolean validateQuery(String sql) { + try (Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { ResultSet rs = stmt.executeQuery(); rs.close(); log.debug("==> {}", sql); @@ -38,15 +45,15 @@ public class SqlExecutor { } } - public static boolean execute(String sql) throws Exception { + public boolean execute(String sql) throws Exception { if (StringUtils.isEmpty(sql)) { return false; } - // 获取SqlSessionFactory实例 - SqlSessionFactory sqlSessionFactory = getSessionFactory(); log.debug("==> SQL: " + sql); - try (SqlSession session = sqlSessionFactory.openSession(); Connection conn = session.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { + try { + Connection conn = sqlSession.getConnection(); + PreparedStatement stmt = conn.prepareStatement(sql); return stmt.execute(); } catch (Exception e) { log.error("执行sql查询异常: " + sql, e); @@ -61,15 +68,15 @@ public class SqlExecutor { * @return * @throws SQLException */ - public static int[] executeBatch(Collection sqlList) throws SQLException { + public int[] executeBatch(Collection sqlList) throws SQLException { int[] count = new int[sqlList.size()]; if (sqlList.isEmpty()) { return count; } - SqlSessionFactory sqlSessionFactory = getSessionFactory(); PreparedStatement stmt = null; - try (SqlSession session = sqlSessionFactory.openSession(); Connection conn = session.getConnection()) { + try { + Connection conn = getConnection(); conn.setAutoCommit(false); for (String sql : sqlList) { if (StringUtils.hasText(sql)) { @@ -102,12 +109,11 @@ public class SqlExecutor { * @return boolean * @throws Exception - */ - public static boolean executeUpdate(String sql, Object... params) throws Exception { + public boolean executeUpdate(String sql, Object... params) throws Exception { if (StringUtils.isEmpty(sql)) { return false; } - // 获取SqlSessionFactory实例 - SqlSessionFactory sqlSessionFactory = getSessionFactory(); + log.debug("==> SQL: " + sql); // 替换单个?参数为多个,用于拼接IN参数 if (params != null && params.length > 0) { @@ -116,7 +122,9 @@ public class SqlExecutor { log.warn("更新参数集合数量过多, size={},请检查调用是否合理!", params.length); } } - try (SqlSession session = sqlSessionFactory.openSession(); Connection conn = session.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { + try { + Connection conn = getConnection(); + PreparedStatement stmt = conn.prepareStatement(sql); if (params != null && params.length > 0) { for (int i = 0; i < params.length; i++) { stmt.setObject(i + 1, params[i]); @@ -137,12 +145,11 @@ public class SqlExecutor { * @param sql * @return */ - public static List> executeQuery(String sql, Object... params) throws Exception { + public List> executeQuery(String sql, Object... params) throws Exception { if (StringUtils.isBlank(sql)) { return null; } - // 获取SqlSessionFactory实例 - SqlSessionFactory sqlSessionFactory = getSessionFactory(); + log.debug("==> SQL: " + sql); // 替换单个?参数为多个,用于拼接IN参数 if (params != null && params.length > 0) { @@ -151,7 +158,9 @@ public class SqlExecutor { log.warn("查询参数集合数量过多, size={},请检查调用是否合理!", params.length); } } - try (SqlSession session = sqlSessionFactory.openSession(); Connection conn = session.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { + try { + Connection conn = getConnection(); + PreparedStatement stmt = conn.prepareStatement(sql); if (params != null && params.length > 0) { for (int i = 0; i < params.length; i++) { stmt.setObject(i + 1, params[i]); @@ -186,13 +195,8 @@ public class SqlExecutor { } } - private static SqlSessionFactory getSessionFactory() { - SqlSessionFactory sqlSessionFactory = ContextHelper.getBean(SqlSessionFactory.class); - if (sqlSessionFactory == null) { - log.warn("无法获取SqlSessionFactory实例,SQL将不被执行。"); - throw new RuntimeException("获取SqlSessionFactory实例异常"); - } - return sqlSessionFactory; + private Connection getConnection() throws SQLException { + return sqlSession.getConfiguration().getEnvironment().getDataSource().getConnection(); } private static String clobRsConvert(Clob clob) { diff --git a/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java b/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java index 2ed27f2..e494ccd 100644 --- a/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java +++ b/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java @@ -7,8 +7,11 @@ import com.keyware.shandan.system.entity.SysMenu; import com.keyware.shandan.system.service.SysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; @Component +@Transactional(rollbackFor = Exception.class, propagation = Propagation.SUPPORTS) public class DynamicFormListener implements DynamicFormEventListener { @Autowired From c29293b2804dca038a97b6e50deebb9db1c15a37 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 21 Jul 2023 15:02:16 +0800 Subject: [PATCH 09/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=95=B0=E6=8D=AE=E8=A1=A8=E5=8D=95=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/view/dynamicForm/designForm.html | 2 +- .../src/main/resources/view/dynamicForm/formList.html | 8 ++++++++ .../shandan/control/config/DynamicFormListener.java | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/shandan-basedata/src/main/resources/view/dynamicForm/designForm.html b/shandan-basedata/src/main/resources/view/dynamicForm/designForm.html index d1a2786..37d9da7 100644 --- a/shandan-basedata/src/main/resources/view/dynamicForm/designForm.html +++ b/shandan-basedata/src/main/resources/view/dynamicForm/designForm.html @@ -62,7 +62,7 @@ postRequest(`${ctx}/dynamic-form/api/form/save`, params).then(res => { if (res.flag) { temp_data = params; - showOkMsg('保存成功'); + saveCallback && saveCallback(); } else { showErrorMsg(res.msg) } diff --git a/shandan-basedata/src/main/resources/view/dynamicForm/formList.html b/shandan-basedata/src/main/resources/view/dynamicForm/formList.html index 448b1bf..42890ac 100644 --- a/shandan-basedata/src/main/resources/view/dynamicForm/formList.html +++ b/shandan-basedata/src/main/resources/view/dynamicForm/formList.html @@ -99,6 +99,14 @@ */ function openFormDesignPage(id) { openMaxLayer(`${ctx}/dynamic-form/view/form/design?formId=${id}`, { + success: function(layero, index){ + let iframeWin = window[layero.find('iframe')[0]['name']]; + iframeWin.saveCallback = function(){ + formListTable.reload(); + showOkMsg('保存成功'); + layer.closeAll(); + } + }, cancel: function (index, layerObj) { let iframeWin = window[layerObj.find('iframe')[0]['name']]; if (iframeWin.isChange()) { diff --git a/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java b/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java index e494ccd..7b36259 100644 --- a/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java +++ b/shandan-control/src/main/java/com/keyware/shandan/control/config/DynamicFormListener.java @@ -24,7 +24,7 @@ public class DynamicFormListener implements DynamicFormEventListener { menu.setMenuId(form.getId().toString()); menu.setParentMenu(parentMenu); menu.setMenuParentId(parentMenu.getMenuId()); - menu.setMenuName(form.getFormName() + "管理"); + menu.setMenuName(form.getFormName()); menu.setMenuPath("/dynamic-data/view/data/list/" + form.getId()); menu.setSystem(parentMenu.getSystem()); menu.setMenuParentName(parentMenu.getMenuName()); From f6b3041dfa9566bc01730ab13edd424207667e4f Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 24 Jul 2023 11:52:33 +0800 Subject: [PATCH 10/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8=E7=BB=B4=E6=8A=A4=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=AD=97=E5=85=B8=E5=80=BC=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E7=BB=B4=E6=8A=A4=E6=97=B6=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E5=80=BC=E5=92=8C=E6=95=B0=E6=8D=AE=E5=BA=93=E9=A2=84?= =?UTF-8?q?=E8=AE=BE=E5=80=BC=E4=B8=8D=E4=B8=80=E6=A0=B7=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shandan/system/service/impl/SysDictServiceImpl.java | 2 +- .../src/main/resources/view/sys/dict/dictEdit.html | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysDictServiceImpl.java b/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysDictServiceImpl.java index f79747b..8661a0e 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysDictServiceImpl.java +++ b/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysDictServiceImpl.java @@ -33,7 +33,7 @@ public class SysDictServiceImpl extends BaseServiceImpl +
+ +
+ +
+
From a5113a829c05fd342a9bd2a3baccc7432ee7e832 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 24 Jul 2023 16:52:30 +0800 Subject: [PATCH 11/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E7=BB=BC?= =?UTF-8?q?=E5=90=88=E6=B5=8F=E8=A7=88=E5=AF=BC=E5=87=BA=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=9B=A0=E6=95=B0=E6=8D=AE=E8=A1=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=8C=85=E5=90=ABnull=E5=80=BC=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=90=8E=E5=8F=B0=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../browser/service/ExportComponent.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/ExportComponent.java b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/ExportComponent.java index 81272d5..c651e87 100644 --- a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/ExportComponent.java +++ b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/ExportComponent.java @@ -21,14 +21,12 @@ import com.keyware.shandan.system.service.SysFileService; import com.keyware.shandan.system.utils.SysSettingUtil; import lombok.AllArgsConstructor; -import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class ExportComponent { private final String exportId; @@ -107,9 +105,8 @@ public class ExportComponent { JSONObject col = (JSONObject) json; String comment = col.getString("comment"); String colName = col.getString("columnName"); - String name = StringUtils.hasTextByDefault(comment, colName); colNameList.add(colName); - return name; + return colName + (StringUtils.hasText(comment) ? "[" + comment + "]" : ""); }).toList(); // 添加第一行 @@ -118,7 +115,13 @@ public class ExportComponent { // 遍历数据 datas.forEach(data -> { // 遍历字段列名,获取对应数据并拼接成列的集合 - List cells = StreamUtil.as(colNameList).map(col -> data.get(col).toString()).toList(); + List cells = colNameList.stream().map(col -> { + Object value = data.get(col); + if (value == null) { + return ""; + } + return String.valueOf(value); + }).collect(Collectors.toList()); rowList.add(cells); }); @@ -189,7 +192,7 @@ public class ExportComponent { private void delete(String path) { File file = new File(path); - if(file.exists()){ + if (file.exists()) { file.delete(); } } From 0efbcae3e3f47bc73956187991e8b35d6d9c4be1 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Tue, 25 Jul 2023 13:57:41 +0800 Subject: [PATCH 12/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E7=BB=BC?= =?UTF-8?q?=E5=90=88=E6=B5=8F=E8=A7=88=E5=89=8D=E7=AB=AF=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E4=B8=AD=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=BA=E4=B8=A5=E6=A0=BC=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shandan-browser/src/main/resources/static/js/meta_search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shandan-browser/src/main/resources/static/js/meta_search.js b/shandan-browser/src/main/resources/static/js/meta_search.js index 24ddba2..dbf9bb1 100644 --- a/shandan-browser/src/main/resources/static/js/meta_search.js +++ b/shandan-browser/src/main/resources/static/js/meta_search.js @@ -195,7 +195,7 @@ layui.use(['dropdown', 'gtable', 'laydate', 'form'], function () { let id = $(this).data('id'); $condition_list.find(`li[id="li_${id}"]`).remove(); $condition_list.find(`li:first a[name="${LOGIC_JOIN}"]`).addClass("layui-hide").data('value', 'and'); - if ($condition_list.find('li').length == 0) { + if ($condition_list.find('li').length === 0) { $condition_list.find('p.condition-none').removeClass('layui-hide'); } }); From 5192c15e9cc0b91d5f1b36f4c986095dfafb55e8 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 21 Aug 2023 11:28:49 +0800 Subject: [PATCH 13/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=B0=86?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=9A=84=E5=AD=90=E7=BA=A7=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=B5=8B=E4=BA=88=E6=99=AE=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=90=8E=EF=BC=8C=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=9F=A5=E7=9C=8B=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bianmu/service/DirectoryTreeService.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java index 9e8eda5..bafaef7 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java +++ b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java @@ -53,15 +53,31 @@ public class DirectoryTreeService { if (StringUtils.hasText(pid)) { parentDir = directoryService.getById(pid); } + // 获取子级节点 List directoryList = getDirectoryList(parentDir, allChild, hasMetadata, busType); + // 审核状态 ReviewStatus status = StringUtils.hasText(reviewStatus) ? ReviewStatus.valueOf(reviewStatus) : null; + // 当前用户 SysUser user = SecurityUtil.getLoginSysUser(); + // 根据权限类型获取权限范围内的数据的ID集合 Set permisDis = "write".equals(permis) ? dirPermissionService.getByWritePermis(user) : dirPermissionService.getByReadPermis(user); + // 判断权限范围 List permisDirectoryList = StreamUtil.as(directoryList).filter(dir -> { - if (status == null) { - return permisDis.contains(dir.getId()); + if(dir.getReviewStatus() == status || status == null){ + boolean permisAllow = permisDis.contains(dir.getId()); + if(permisAllow){ + return true; + } + // 如果权限不允许,则需要判断当前节点的所有子级节点是否有允许的目录,如果有则需要返回到前端的树组件中 + Set childrenIds = getDirectoryList(dir, true, false, busType).stream().map(DirectoryVo::getId).collect(Collectors.toSet()); + for(String id : childrenIds){ + if(permisDis.contains(id)){ + return true; + } + } + return false; } - return dir.getReviewStatus() == status && permisDis.contains(dir.getId()); + return false; }).toList(); DirectoryParentBuilder dpb = new DirectoryParentBuilder(directoryList, permisDirectoryList); From d68ce219263d584b9fa1b172ad1131837a10a3c7 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 21 Aug 2023 11:29:19 +0800 Subject: [PATCH 14/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=B0=86?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=9A=84=E5=AD=90=E7=BA=A7=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=B5=8B=E4=BA=88=E6=99=AE=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=90=8E=EF=BC=8C=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=9F=A5=E7=9C=8B=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bianmu/service/DirectoryTreeService.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java index bafaef7..0049fa3 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java +++ b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java @@ -63,15 +63,18 @@ public class DirectoryTreeService { Set permisDis = "write".equals(permis) ? dirPermissionService.getByWritePermis(user) : dirPermissionService.getByReadPermis(user); // 判断权限范围 List permisDirectoryList = StreamUtil.as(directoryList).filter(dir -> { - if(dir.getReviewStatus() == status || status == null){ + if (dir.getReviewStatus() == status || status == null) { boolean permisAllow = permisDis.contains(dir.getId()); - if(permisAllow){ + if (permisAllow) { return true; } // 如果权限不允许,则需要判断当前节点的所有子级节点是否有允许的目录,如果有则需要返回到前端的树组件中 - Set childrenIds = getDirectoryList(dir, true, false, busType).stream().map(DirectoryVo::getId).collect(Collectors.toSet()); - for(String id : childrenIds){ - if(permisDis.contains(id)){ + Set childrenIds = getDirectoryList(dir, true, false, busType) + .stream() + .map(DirectoryVo::getId) + .collect(Collectors.toSet()); + for (String id : childrenIds) { + if (permisDis.contains(id)) { return true; } } @@ -103,9 +106,9 @@ public class DirectoryTreeService { */ private List getDirectoryList(DirectoryVo parentDir, boolean allChild, boolean hasResource, int busType) { QueryWrapper wrapper = new QueryWrapper<>(); - if(parentDir == null){ + if (parentDir == null) { wrapper.eq("ID", "ROOT"); - }else { + } else { wrapper.in(!hasResource, "DIRECTORY_TYPE", DirectoryType.DIRECTORY, DirectoryType.LINK_DIR).eq("IS_BASIC_DIR", busType); if (parentDir != null) { if (allChild) { From abd302931107142da65b61a4836aff4b2e742b69 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 21 Aug 2023 11:44:00 +0800 Subject: [PATCH 15/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=85=B3?= =?UTF-8?q?=E8=81=94=E7=9B=AE=E5=BD=95=E6=88=96=E6=96=87=E4=BB=B6=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=AD=90=E7=BA=A7=E7=9B=AE=E5=BD=95=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B2=A1=E6=9C=89=E5=85=B3=E8=81=94=E4=B8=8A=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shandan/bianmu/service/DirectoryTreeService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java index 0049fa3..a5434d8 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java +++ b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java @@ -63,6 +63,13 @@ public class DirectoryTreeService { Set permisDis = "write".equals(permis) ? dirPermissionService.getByWritePermis(user) : dirPermissionService.getByReadPermis(user); // 判断权限范围 List permisDirectoryList = StreamUtil.as(directoryList).filter(dir -> { + if (dir.getDirectoryType() == DirectoryType.FILE + || dir.getDirectoryType() == DirectoryType.LINK_FILE + || dir.getDirectoryType() == DirectoryType.METADATA + || dir.getDirectoryType() == DirectoryType.LINK_METADATA) { + return true; + } + if (dir.getReviewStatus() == status || status == null) { boolean permisAllow = permisDis.contains(dir.getId()); if (permisAllow) { From 9cb96f9dbf57c32a862726dabf1e4a27db016cea Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Tue, 22 Aug 2023 16:50:40 +0800 Subject: [PATCH 16/35] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E7=BB=BC?= =?UTF-8?q?=E5=90=88=E6=B5=8F=E8=A7=88=E7=B3=BB=E7=BB=9F=E4=B8=AD=E7=BD=AE?= =?UTF-8?q?=E6=A0=87=E6=A0=87=E7=AD=BE=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=95=B0=E6=8D=AE=E5=88=97=E8=A1=A8=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=AF=B9=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MetadataSearchService.java | 21 +++-- .../src/main/resources/static/js/browser.js | 84 ++++++++----------- .../src/main/resources/view/browser.html | 1 - .../js/common/layui/extend/datalabel.js | 57 ++++++++++--- .../shandan/bianmu/entity/LabelEntity.java | 4 + .../bianmu/mapper/LabelEntityMapper.java | 19 ++++- 6 files changed, 113 insertions(+), 73 deletions(-) diff --git a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java index 6340133..981b742 100644 --- a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java +++ b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java @@ -18,6 +18,7 @@ import org.springframework.util.Assert; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * @author Administrator @@ -81,17 +82,15 @@ public class MetadataSearchService { } break; case "markTag": - String tagText = item.getFieldValue(); - List tags = Arrays.asList(tagText.split(",")); - StringBuilder existsSql = new StringBuilder("select 1 from MARK_RECORD MR where MR.ENTITY_ID = V_DIRECTORY_RESOURCE.ID and ( 1 = 1 "); - tags.forEach(tagItem -> { - if (StringUtils.hasText(tagItem)) { - String[] arr = tagItem.split("-"); - existsSql.append(" and MR.MARK_VALUE like '%").append(arr[1]).append("%' "); - } - }); - existsSql.append(")"); - wrapper.exists(existsSql.toString()); + String tagIds = item.getFieldValue(); + List ids = Arrays.asList(tagIds.split(",")); + if (ids.size() > 0) { + StringBuilder existsSql = new StringBuilder("select 1 from (select ENTITY_ID, WM_CONCAT(LABEL_ID) LABEL_IDS from B_DATA_LABEL_ENTITY DLN where DLN.ENTITY_ID = V_DIRECTORY_RESOURCE.ID group by ENTITY_ID) tmp1"); + List andSqlList = ids.stream().map(id -> "tmp1.LABEL_IDS like '%" + id + "%'").collect(Collectors.toList()); + existsSql.append(" where ").append(String.join(" and ", andSqlList)); + wrapper.exists(existsSql.toString()); + } + break; default: } diff --git a/shandan-browser/src/main/resources/static/js/browser.js b/shandan-browser/src/main/resources/static/js/browser.js index 9107922..66da19e 100644 --- a/shandan-browser/src/main/resources/static/js/browser.js +++ b/shandan-browser/src/main/resources/static/js/browser.js @@ -8,16 +8,17 @@ */ // 目录树数据缓存 const dirCache = new Map(); -layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'dropdown', 'laydate', 'dict'], function () { +layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'dropdown', 'laydate', 'dict', 'datalabel'], function () { const listPage = layui.listPage, form = layui.form, element = layui.element, laydate = layui.laydate, - globalTree = layui.globalTree; + globalTree = layui.globalTree, + DataLabel = layui.datalabel; - let metaListTable, dirFileTable, tagSelector, tags = [], unchecked_tags = [], conditions = []; - - // 初始化 + let metaListTable, dirFileTable, tagSelector, tags = [], conditions = []; + const unchecked_tags = new Set(); + // 初始化 initDirectoryTree(); @@ -105,7 +106,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop * @param basicData */ function setCurrentPosition(basicData) { - let directoryPath = basicData.directoryPath.replaceAll('/', ' / '); + let directoryPath = basicData.directoryPath.replaceAll('/', ' / '); $('.current-position label').text(directoryPath); } @@ -273,15 +274,13 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop $('#condition-div').slideToggle(100, 'linear', conditionSlideToggle) }); - if (!tagSelector) { - tagSelector = new MarkerSelector('#mark-selector-input'); - } - tagSelector.bindBtnEvent() - tagSelector.onOkBtn(data => { - tags = data - setMarkTagInputValue(); - }); + $('#mark-selector-input').on('click', function () { + DataLabel.openChooseDialog(null, null, null, true).then((labels) => { + tags = labels || []; + setMarkTagInputValue(); + }) + }) // 监听标签点击事件 element.on('tab(condition-tab)', function (data) { // 点击后移除选中样式 @@ -296,6 +295,9 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop // 监听条件标签删除事件 element.on('tabDelete(condition-tab)', function (data) { let key = $(this).parent().data('key'); + if(key === 'markTag'){ + tags = []; + } let formVal = form.val('search-form'); formVal[key] = ''; form.val('search-form', formVal); @@ -310,7 +312,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop $('#condition-clear-btn').on('click', function () { $('#searchKeyInput').val(''); tags = []; - unchecked_tags = []; + unchecked_tags.clear(); conditions = []; beginSearch(); }); @@ -342,9 +344,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop function setMarkTagInputValue() { let temp = []; for (let tag of tags) { - let arr = tag.split('-'); - let text = tag.replace(arr[0] + '-' + arr[1] + '-', ''); - temp.push(text); + temp.push(tag.title); } $('#mark-selector-input').val(temp.join(', ')); } @@ -370,7 +370,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop let htm = ''; conditions = []; for (let key in formVal) { - if (key == 'searchKeyInput') continue; + if (key === 'searchKeyInput') continue; let fieldName = key, fieldValue = formVal[key], logicJudgement; // 如果fieldName是条件下拉框,则跳过 if (fieldName.startsWith('logic-') || fieldName === 'directoryId' || fieldName === 'metadataId') continue; @@ -397,11 +397,11 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop condition = '包含'; } - if (fieldName == 'secretLevel') { + if (fieldName === 'secretLevel') { hasText = $(`select[name="secretLevel"] option[value="${fieldValue}"]`).text(); - } else if (fieldName == 'dataFrom') { + } else if (fieldName === 'dataFrom') { hasText = $(`select[name="dataFrom"] option[value="${fieldValue}"]`).text(); - } else if (fieldName == 'dataType') { + } else if (fieldName === 'dataType') { hasText = $(`select[name="dataType"] option[value="${fieldValue}"]`).text(); } conditions.push({fieldName, fieldValue, logicJudgement}) @@ -409,40 +409,29 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop } } - let temp = []; + let tag_htm = ''; for (let tag of tags) { - let tag_arr = tag.split('-'); - let tag_type = tag_arr[1], tag_text = tag_arr[2], temp_tags = temp[tag_type]; - if (!temp_tags) { - temp_tags = [] + let checked = 'checked'; + if (unchecked_tags.has(tag.id + '')) { + checked = ''; } - temp_tags.push({id: tag_arr[0], text: tag_text}); - temp[tag_type] = temp_tags; + tag_htm += ``; } - - for (let type in temp) { - let tag_type = type, tag_items = temp[type], tag_htm = ''; - for (let item of tag_items) { - let val = item.id + '-' + item.text, checked = 'checked'; - if (unchecked_tags.includes(val)) { - checked = ''; - } - tag_htm += ``; - } - - htm += `
  • ${tag_type}:${tag_htm}
  • `; + if (tag_htm){ + htm += `
  • 置标标签:${tag_htm}
  • `; } + $('#condition-tab ul').html(htm); element.render('tab'); - $('#condition-tab ul li[data-key="markTag"] i').remove(); + $('#condition-tab ul li[data-key="markTag"] i').css({'margin-left': '-10px'}); form.render('checkbox'); $('li[data-key="markTag"] .layui-form-checkbox').on('click', function () { - let val = $(this).prev().val(), index = unchecked_tags.indexOf(val); - if (!$(this).hasClass('layui-form-checked')) { - unchecked_tags.push(val); - } else if (index > -1) { - unchecked_tags.splice(index, 1) + let val = $(this).prev().val(); + if(unchecked_tags.has(val)){ + unchecked_tags.delete(val); + }else{ + unchecked_tags.add(val); } beginSearch(); }) @@ -453,7 +442,6 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop } } - function beginSearch() { setMarkTagsValue() metaListTable.where.conditions = conditions; diff --git a/shandan-browser/src/main/resources/view/browser.html b/shandan-browser/src/main/resources/view/browser.html index f031ac5..3c069da 100644 --- a/shandan-browser/src/main/resources/view/browser.html +++ b/shandan-browser/src/main/resources/view/browser.html @@ -219,7 +219,6 @@ - + + + + + +
    + +
    +
    +
    +
    +
    +
      +
    • 数据资源注册表单
    • +
    • 文件上传表单
    • +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file From 5f912be20940f1efa0a807de6db2d88c01c568de Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Thu, 24 Aug 2023 15:10:45 +0800 Subject: [PATCH 20/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=96=B0update.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbsql/update/update202308.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dbsql/update/update202308.sql b/dbsql/update/update202308.sql index 5e12daa..75f1a62 100644 --- a/dbsql/update/update202308.sql +++ b/dbsql/update/update202308.sql @@ -16,10 +16,12 @@ CREATE TABLE "BIANMU"."SYS_FORM_CONFIG" "ID" INTEGER IDENTITY(1000, 1) NOT NULL, "FORM_TYPE" INTEGER, "FIELD_TITLE" VARCHAR2(50), + "SHOW_TITLE" VARCHAR2(50), "FIELD_TYPE" VARCHAR2(50), "DEFAULT_VALUE" VARCHAR2(50) DEFAULT '', "IS_REQUIRED" BIT DEFAULT 0, "IS_DISABLED" BIT DEFAULT 0, + "IS_SHOW" BIT DEFAULT 1, "SORT" INTEGER, "CREATE_USER" VARCHAR2(50), "CREATE_TIME" TIMESTAMP(6), @@ -38,6 +40,8 @@ COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."FORM_TYPE" IS '表单类型:1- COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."ID" IS '主键'; COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."IS_DISABLED" IS '是否必填:0-非必填,1-必填'; COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."IS_REQUIRED" IS '是否禁用:0-不禁用,1-禁用'; +COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."IS_SHOW" IS '是否显示'; COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."MODIFY_TIME" IS '修改时间'; COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."MODIFY_USER" IS '修改人'; +COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."SHOW_TITLE" IS '显示标题'; COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."SORT" IS '显示顺序'; From 7005a36be6cf2becc95116fbea52f52bdedabaa3 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Thu, 24 Aug 2023 17:53:20 +0800 Subject: [PATCH 21/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B5=84=E6=BA=90=E8=A1=A8=E7=BC=96=E8=BE=91=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=94=AF=E6=8C=81=E5=AD=97=E6=AE=B5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bianmu/controller/MetadataController.java | 8 +++++ .../static/js/business/metadata/edit.js | 3 +- .../view/business/metadata/metadataEdit.html | 31 ++++++++++++++++--- .../static/js/common/layui/extend/dict.js | 7 +++-- .../src/main/resources/view/common/head.html | 4 +++ .../shandan/frame/aspect/SafetyAspect.java | 15 +++++++-- .../shandan/system/entity/SysFormConfig.java | 10 ++++-- .../static/js/sys/form/formConfig.js | 13 +++----- 8 files changed, 70 insertions(+), 21 deletions(-) diff --git a/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java b/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java index ab02067..3c4aae5 100644 --- a/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java +++ b/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java @@ -14,7 +14,9 @@ import com.keyware.shandan.common.enums.SecretLevel; import com.keyware.shandan.common.util.StreamUtil; import com.keyware.shandan.common.util.StringUtils; import com.keyware.shandan.system.entity.SysFile; +import com.keyware.shandan.system.entity.SysFormConfig; import com.keyware.shandan.system.service.SysFileService; +import com.keyware.shandan.system.service.SysFormConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -46,6 +48,9 @@ public class MetadataController extends BaseController query = new QueryWrapper<>(); + query.eq("FORM_TYPE", 1); + mav.addObject("metadataFormConfig", formConfigService.list(query)); return mav; } diff --git a/shandan-bianmu/src/main/resources/static/js/business/metadata/edit.js b/shandan-bianmu/src/main/resources/static/js/business/metadata/edit.js index 64c0398..a32b978 100644 --- a/shandan-bianmu/src/main/resources/static/js/business/metadata/edit.js +++ b/shandan-bianmu/src/main/resources/static/js/business/metadata/edit.js @@ -276,9 +276,10 @@ layui.use(['form', 'layer', 'editPage', 'laytpl', 'laydate', 'element', 'table', layui.dict.setData('dict-secret-level', data); } + console.info(new Date().getTime()) //日期选择器 laydate.render({ - elem: '#collectionTime', + elem: 'input[name="collectionTime"]', type: 'datetime', value: new Date(), format: "yyyy-MM-dd HH:mm:ss" diff --git a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html index 292349c..7d23c0d 100644 --- a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html +++ b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html @@ -34,7 +34,27 @@
    -
    +
    + +
    + + + + +
    +
    +
    +
    - -
    + +
    @@ -147,6 +169,5 @@ {{# } }} - diff --git a/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js b/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js index e9c9d4b..4831e3f 100644 --- a/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js +++ b/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js @@ -52,6 +52,7 @@ layui.define(['form'], function (exports) { data = '';// 选中的数据 change;// 数据改变后的回调函数 readonly;// 是否只读 + disabled; // 是否禁用 width;// 宽度 constructor(type, options) { @@ -82,6 +83,7 @@ layui.define(['form'], function (exports) { this.change = options.onchange || function () { }; this.readonly = options.readonly; + this.disabled = options.disabled; this.width = options.width || 'fit-content'; // 开始渲染 @@ -249,7 +251,7 @@ layui.define(['form'], function (exports) { } let nodes_html = nodes.join(''); - return ``; + return ``; } /** @@ -304,11 +306,12 @@ layui.define(['form'], function (exports) { type = _elem.attr('dict-type'), dictType = _elem.attr('dict-component'), readonly = _elem.attr('readonly'), + disabled = _elem.attr('disabled'), data = _elem.attr('data'), width = _elem.attr('dict-width'), formFilter = getFormElementFilter(_elem); - let option = {elem, id, name, type, formFilter, readonly, data, width}; + let option = {elem, id, name, type, formFilter, readonly, disabled, data, width}; new DictComponent(dictType, option) }); } diff --git a/shandan-common/src/main/resources/view/common/head.html b/shandan-common/src/main/resources/view/common/head.html index 45f4b1b..cf88fe0 100644 --- a/shandan-common/src/main/resources/view/common/head.html +++ b/shandan-common/src/main/resources/view/common/head.html @@ -34,6 +34,10 @@ USER_ROLES.push(role.roleName); } } + + // 表单配置 + const METADATA_FORM_CONFIG = /*[[${metadataFormConfig}]]*/ []; + const FILEUPLOAD_FORM_CONFIG = /*[[${uploadFormConfig}]]*/ []; diff --git a/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java b/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java index 6f7fec8..85a0e98 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java +++ b/shandan-system/src/main/java/com/keyware/shandan/frame/aspect/SafetyAspect.java @@ -6,8 +6,10 @@ import com.keyware.shandan.common.entity.Result; import com.keyware.shandan.common.util.*; import com.keyware.shandan.frame.config.security.SecurityUtil; import com.keyware.shandan.frame.properties.CustomProperties; +import com.keyware.shandan.system.entity.SysFormConfig; import com.keyware.shandan.system.entity.SysRole; import com.keyware.shandan.system.entity.SysUser; +import com.keyware.shandan.system.service.SysFormConfigService; import com.keyware.shandan.system.service.SysRoleService; import com.keyware.shandan.system.utils.SysSettingUtil; import lombok.extern.slf4j.Slf4j; @@ -25,7 +27,9 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * AES + RSA 加解密AOP处理 @@ -44,6 +48,9 @@ public class SafetyAspect { @Autowired private SysRoleService sysRoleService; + @Autowired + private SysFormConfigService formConfigService; + /** * Pointcut 切入点 */ @@ -98,7 +105,7 @@ public class SafetyAspect { ModelAndView modelAndView = (ModelAndView) result; modelAndView.addObject("publicKey", RsaUtil.getPublicKey()); modelAndView.addObject("sys", SysSettingUtil.getCurrentSysSetting()); - SysUser loginUser = SecurityUtil.getLoginSysUser(); + SysUser loginUser = SecurityUtil.getLoginSysUser(); loginUser.setPassword(null); modelAndView.addObject("loginUser", loginUser); //登录用户角色信息 @@ -121,6 +128,10 @@ public class SafetyAspect { } //展示用户角色 modelAndView.addObject("userRole", userRoles.get(index)); + List formConfigList = formConfigService.list(); + + modelAndView.addObject("metadataFormConfig", formConfigList.stream().filter(conf -> conf.getFormType() == 1).collect(Collectors.toList())); + modelAndView.addObject("uploadFormConfig", formConfigList.stream().filter(conf -> conf.getFormType() == 2).collect(Collectors.toList())); setStaticResourceAddress(request, modelAndView); } return result; diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysFormConfig.java b/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysFormConfig.java index 2e82ca6..b6d4f83 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysFormConfig.java +++ b/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysFormConfig.java @@ -26,17 +26,21 @@ public class SysFormConfig extends BaseEntity { */ private Integer formType; /** - * 字段标题 + * 字段名 */ - private String fieldTitle; + private String fieldName; /** - * 字段标题 + * 字段显示标题 */ private String showTitle; /** * 字段类型 */ private String fieldType; + /** + * 数据字典类型,只有当fieldType为"dict"时才有效 + */ + private String dictType; /** * 默认值 */ diff --git a/shandan-system/src/main/resources/static/js/sys/form/formConfig.js b/shandan-system/src/main/resources/static/js/sys/form/formConfig.js index 2c9ead2..40f78a4 100644 --- a/shandan-system/src/main/resources/static/js/sys/form/formConfig.js +++ b/shandan-system/src/main/resources/static/js/sys/form/formConfig.js @@ -18,9 +18,10 @@ class FormConfigComponent { page: false, cols: [[ {field: 'id', hide: true}, - {field: 'fieldTitle', title: '字段'}, + {field: 'fieldName', title: '字段名'}, {field: 'showTitle', title: '显示的标题', edit: 'text'}, {field: 'fieldType', title: '字段类型', hide: true}, + {field: 'dictType', title: '数据字典', hide: true}, {field: 'defaultValue', title: '默认值', edit: 'text', hide: true}, { field: 'isRequired', @@ -68,14 +69,10 @@ class FormConfigComponent { } } - switchChangeListen({elem, value}) { + switchChangeListen({elem}) { const id = $(elem).attr('id'), name = $(elem).attr('name'); - this.dataMap.get(id)[name] = Boolean(value); - this.consoleDataMap(); - } - - consoleDataMap() { - console.info(this.dataMap); + const value = this.dataMap.get(id)[name]; + this.dataMap.get(id)[name] = !value; } } From c3aefcaafdd29c9a48c3d9600cb2533860513f9f Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Thu, 24 Aug 2023 19:19:56 +0800 Subject: [PATCH 22/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B5=84=E6=BA=90=E8=A1=A8=E5=88=97=E8=A1=A8=E9=A1=B5?= =?UTF-8?q?=E9=80=82=E9=85=8D=E8=A1=A8=E5=8D=95=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/js/business/metadata/metadata.js | 14 ++++++++++---- .../resources/static/js/sys/form/formConfig.js | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/shandan-bianmu/src/main/resources/static/js/business/metadata/metadata.js b/shandan-bianmu/src/main/resources/static/js/business/metadata/metadata.js index e8750e7..8dbf171 100644 --- a/shandan-bianmu/src/main/resources/static/js/business/metadata/metadata.js +++ b/shandan-bianmu/src/main/resources/static/js/business/metadata/metadata.js @@ -12,8 +12,11 @@ layui.use(['layer', 'listPage', 'form', 'dict'], function () { let height = $(document).height(); height = height < 650 ? height : height * 0.8; - let where = {metadataName: '', reviewStatus: '', useStatus: ''}; + + const fieldMap = new Map() + METADATA_FORM_CONFIG.forEach(conf=>fieldMap.set(conf.fieldName, conf)); + console.info(fieldMap); const listPage = layui.listPage.init({ deleteUrl: `${ctx}/business/metadata/delete`, table: { @@ -27,23 +30,26 @@ layui.use(['layer', 'listPage', 'form', 'dict'], function () { { field: 'metadataName', title: '数据名称', + hide: !fieldMap.get('metadataName').isShow, templet: data => `${data.metadataName}` }, - {field: 'metadataComment', title: '中文注释'}, + {field: 'metadataComment', title: '中文注释',hide: fieldMap.get('metadataName').isShow}, { field: 'secretLevel', title: '密级', + hide: !fieldMap.get('secretLevel').isShow, templet: data => layui.dict.getDictDesc('secret_level', data.secretLevel) }, - {field: 'themeTask', title: '主题任务'}, + {field: 'themeTask', title: '主题任务', hide: !fieldMap.get('themeTask').isShow}, { field: 'dataFrom', title: '数据来源', + hide: !fieldMap.get('dataFrom').isShow, width: 100, templet: data => layui.dict.getDictDesc('data_source', data.dataFrom) }, - {field: 'collectionTime', title: '任务时间', width: 180, align: 'center'}, + {field: 'collectionTime', title: '任务时间', width: 180, align: 'center',hide: !fieldMap.get('collectionTime').isShow}, { field: 'used', title: '关联状态', width: 120, align: 'center', templet: (data) => { if (data.used) { diff --git a/shandan-system/src/main/resources/static/js/sys/form/formConfig.js b/shandan-system/src/main/resources/static/js/sys/form/formConfig.js index 40f78a4..0eb040b 100644 --- a/shandan-system/src/main/resources/static/js/sys/form/formConfig.js +++ b/shandan-system/src/main/resources/static/js/sys/form/formConfig.js @@ -34,7 +34,7 @@ class FormConfigComponent { templet: (data) => renderSwitch('isDisabled', data) }, { - field: 'isDisabled', + field: 'isShow', title: '是否显示', templet: (data) => renderSwitch('isShow', data) }, From f3c8ee615f5bd2b300ba1371287e42566eb19897 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Fri, 25 Aug 2023 16:32:29 +0800 Subject: [PATCH 23/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B5=84=E6=BA=90=E8=A1=A8=E6=9F=A5=E7=9C=8B=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E9=80=82=E9=85=8D=E8=A1=A8=E5=8D=95=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/business/metadata/metadataEdit.html | 2 +- .../controller/MetadataCommonController.java | 10 +++ .../view/business/metadata/details.html | 72 ++++++++----------- 3 files changed, 39 insertions(+), 45 deletions(-) diff --git a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html index 7d23c0d..4170d31 100644 --- a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html +++ b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html @@ -40,7 +40,7 @@ query = new QueryWrapper<>(); + query.eq("FORM_TYPE", 1); + mav.addObject("metadataFormConfig", formConfigService.list(query)); return mav; } diff --git a/shandan-system/src/main/resources/view/business/metadata/details.html b/shandan-system/src/main/resources/view/business/metadata/details.html index e1563ab..41cc5ea 100644 --- a/shandan-system/src/main/resources/view/business/metadata/details.html +++ b/shandan-system/src/main/resources/view/business/metadata/details.html @@ -47,56 +47,40 @@
    - +
    - +
    -
    - -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - +
    +
    -
    -
    -
    -
    - -
    - + + + + + + + + +
    +
    Date: Sat, 26 Aug 2023 17:39:48 +0800 Subject: [PATCH 24/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8=E5=89=8D=E7=AB=AF=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=87=AA=E9=80=82=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/js/common/layui/extend/dict.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js b/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js index 4831e3f..7aa1e00 100644 --- a/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js +++ b/shandan-common/src/main/resources/static/js/common/layui/extend/dict.js @@ -84,7 +84,7 @@ layui.define(['form'], function (exports) { }; this.readonly = options.readonly; this.disabled = options.disabled; - this.width = options.width || 'fit-content'; + this.width = options.width || '100%'; // 开始渲染 this.render(); From e50a322314045b5006217ceb19a0c6e216674b56 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Sat, 26 Aug 2023 17:40:44 +0800 Subject: [PATCH 25/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E7=BD=AE?= =?UTF-8?q?=E6=A0=87=E6=A0=87=E7=AD=BE=E5=89=8D=E7=AB=AF=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=85=B6=E4=BB=96=E6=A0=87=E7=AD=BE=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=AE=BE=E7=BD=AE=E6=98=AF=E5=90=A6=E5=8F=AA=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/static/js/common/layui/extend/datalabel.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js b/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js index c32430d..05b90fb 100644 --- a/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js +++ b/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js @@ -249,8 +249,8 @@ layui.define(['globalTree'], function (exports) { }); } - function addOtherLabel(value) { - let template = `
    `; + function addOtherLabel(value, readonly) { + let template = `
    `; $('.other-label-item').append(template); let cid = _KEY + _CACHE.size, component = new Component(cid, $('.label-set-component.other-label:last')); @@ -272,15 +272,16 @@ layui.define(['globalTree'], function (exports) { function setData(dataArr = []) { for (let data of dataArr) { - let find = false; + let find = false, readonly = false; for (let component of _CACHE.values()) { + readonly = component.isReadOnly(); if (data.fieldTitle !== '其他标签' && data.fieldTitle === component.fieldTitle) { component.setData(data); find = true; } } if (!find) { - addOtherLabel(data); + addOtherLabel(data, readonly); } } } From 4f202749771d8d51f73fd1ce5cf1a465e49c8dec Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Sat, 26 Aug 2023 17:41:39 +0800 Subject: [PATCH 26/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=A1=A8=E5=8D=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=A0=B9=E6=8D=AE=E8=A1=A8=E5=8D=95=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bianmu/controller/MetadataController.java | 5 +- .../view/business/metadata/metadataEdit.html | 43 ----- .../resources/static/css/common/common.css | 13 ++ .../controller/MetadataCommonController.java | 5 +- .../mark/controller/MarkViewController.java | 2 +- .../shandan/mark/services/MarkService.java | 2 +- .../constants}/FormTypeEnum.java | 12 +- .../system/controller/SysFileController.java | 6 + .../system/service/SysFormConfigService.java | 5 + .../impl/SysFormConfigServiceImpl.java | 10 ++ .../resources/static/js/sys/file/dirUpload.js | 2 +- .../view/sys/file/dirUploadLayer.html | 149 ++++++------------ 12 files changed, 96 insertions(+), 158 deletions(-) rename shandan-system/src/main/java/com/keyware/shandan/{mark/constant => system/constants}/FormTypeEnum.java (72%) diff --git a/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java b/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java index 3c4aae5..6d5edf1 100644 --- a/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java +++ b/shandan-bianmu/src/main/java/com/keyware/shandan/bianmu/controller/MetadataController.java @@ -13,6 +13,7 @@ import com.keyware.shandan.common.entity.Result; import com.keyware.shandan.common.enums.SecretLevel; import com.keyware.shandan.common.util.StreamUtil; import com.keyware.shandan.common.util.StringUtils; +import com.keyware.shandan.system.constants.FormTypeEnum; import com.keyware.shandan.system.entity.SysFile; import com.keyware.shandan.system.entity.SysFormConfig; import com.keyware.shandan.system.service.SysFileService; @@ -98,9 +99,7 @@ public class MetadataController extends BaseController query = new QueryWrapper<>(); - query.eq("FORM_TYPE", 1); - mav.addObject("metadataFormConfig", formConfigService.list(query)); + mav.addObject("metadataFormConfig", formConfigService.listByFormType(FormTypeEnum.metadataEditForm)); return mav; } diff --git a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html index 4170d31..56c57cb 100644 --- a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html +++ b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html @@ -54,49 +54,6 @@ th:id="${'dict-'+field.fieldName}">
    -
    query = new QueryWrapper<>(); - query.eq("FORM_TYPE", 1); - mav.addObject("metadataFormConfig", formConfigService.list(query)); + mav.addObject("metadataFormConfig", formConfigService.listByFormType(FormTypeEnum.metadataEditForm)); return mav; } diff --git a/shandan-system/src/main/java/com/keyware/shandan/mark/controller/MarkViewController.java b/shandan-system/src/main/java/com/keyware/shandan/mark/controller/MarkViewController.java index 19cba39..0f1d607 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/mark/controller/MarkViewController.java +++ b/shandan-system/src/main/java/com/keyware/shandan/mark/controller/MarkViewController.java @@ -1,6 +1,6 @@ package com.keyware.shandan.mark.controller; -import com.keyware.shandan.mark.constant.FormTypeEnum; +import com.keyware.shandan.system.constants.FormTypeEnum; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/shandan-system/src/main/java/com/keyware/shandan/mark/services/MarkService.java b/shandan-system/src/main/java/com/keyware/shandan/mark/services/MarkService.java index b99b51a..b8fa53f 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/mark/services/MarkService.java +++ b/shandan-system/src/main/java/com/keyware/shandan/mark/services/MarkService.java @@ -1,7 +1,7 @@ package com.keyware.shandan.mark.services; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.keyware.shandan.mark.constant.FormTypeEnum; +import com.keyware.shandan.system.constants.FormTypeEnum; import com.keyware.shandan.mark.pojo.FormMark; import com.keyware.shandan.mark.pojo.MarkRecord; import com.keyware.shandan.mark.pojo.MarkType; diff --git a/shandan-system/src/main/java/com/keyware/shandan/mark/constant/FormTypeEnum.java b/shandan-system/src/main/java/com/keyware/shandan/system/constants/FormTypeEnum.java similarity index 72% rename from shandan-system/src/main/java/com/keyware/shandan/mark/constant/FormTypeEnum.java rename to shandan-system/src/main/java/com/keyware/shandan/system/constants/FormTypeEnum.java index 66e1b51..bb0cf37 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/mark/constant/FormTypeEnum.java +++ b/shandan-system/src/main/java/com/keyware/shandan/system/constants/FormTypeEnum.java @@ -1,5 +1,6 @@ -package com.keyware.shandan.mark.constant; +package com.keyware.shandan.system.constants; +import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.AllArgsConstructor; import lombok.Getter; @@ -16,16 +17,19 @@ public enum FormTypeEnum { /** * 数据资源注册表单 */ - metadataEditForm("数据资源注册表单"), + metadataEditForm(1,"数据资源注册表单"), /** * 文件上传表单 */ - fileUploadForm("文件上传表单"), + fileUploadForm(2, "文件上传表单"), /** * 文件夹上传表单 */ @Deprecated - dirUploadForm("文件夹上传表单"); + dirUploadForm(3, "文件夹上传表单"); + + @EnumValue + private final Integer value; /** * 描述 diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java b/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java index f60521e..547b942 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java +++ b/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java @@ -8,10 +8,12 @@ import com.keyware.shandan.common.controller.BaseController; import com.keyware.shandan.common.entity.Result; import com.keyware.shandan.common.util.FileDownload; import com.keyware.shandan.frame.properties.CustomProperties; +import com.keyware.shandan.system.constants.FormTypeEnum; import com.keyware.shandan.system.entity.SysFile; import com.keyware.shandan.system.entity.SysFileChunk; import com.keyware.shandan.system.entity.SysSetting; import com.keyware.shandan.system.service.SysFileService; +import com.keyware.shandan.system.service.SysFormConfigService; import com.keyware.shandan.system.service.SysSettingService; import com.keyware.shandan.system.utils.FileChunkUploadUtil; import org.apache.tomcat.util.http.ResponseUtil; @@ -57,12 +59,16 @@ public class SysFileController extends BaseController { + + List listByFormType(FormTypeEnum formTypeEnum); } diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysFormConfigServiceImpl.java b/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysFormConfigServiceImpl.java index e5a851f..a1bef17 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysFormConfigServiceImpl.java +++ b/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysFormConfigServiceImpl.java @@ -1,11 +1,15 @@ package com.keyware.shandan.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.keyware.shandan.system.constants.FormTypeEnum; import com.keyware.shandan.system.entity.SysFormConfig; import com.keyware.shandan.system.mapper.SysFormConfigMapper; import com.keyware.shandan.system.service.SysFormConfigService; import org.springframework.stereotype.Service; +import java.util.List; + /** * 系统表单配置服务实现类 * @@ -14,4 +18,10 @@ import org.springframework.stereotype.Service; */ @Service public class SysFormConfigServiceImpl extends ServiceImpl implements SysFormConfigService { + @Override + public List listByFormType(FormTypeEnum formTypeEnum) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("FORM_TYPE", formTypeEnum.getValue()); + return list(query); + } } diff --git a/shandan-system/src/main/resources/static/js/sys/file/dirUpload.js b/shandan-system/src/main/resources/static/js/sys/file/dirUpload.js index 35db2bf..dfc5396 100644 --- a/shandan-system/src/main/resources/static/js/sys/file/dirUpload.js +++ b/shandan-system/src/main/resources/static/js/sys/file/dirUpload.js @@ -129,7 +129,7 @@ layui.use(['layer', 'uploader', 'element', 'form', 'laydate', 'dict', 'datalabel function bindDatetimePlugins() { //日期选择器 laydate.render({ - elem: '#input-data', + elem: 'input[name="inputDate"]', format: "yyyy-MM-dd HH:mm:ss", type: 'datetime', value: new Date(), diff --git a/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html b/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html index e83768e..ea35db8 100644 --- a/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html +++ b/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html @@ -49,7 +49,11 @@ background-color: #FFF; border-top: 1px solid #eee; } - .star-mark{color: red; display: none} + + .star-mark { + color: red; + display: none + } @@ -60,109 +64,50 @@
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    - +
    +
    + +
    + + + + + + + + +
    -
    +
    Date: Sat, 26 Aug 2023 17:59:35 +0800 Subject: [PATCH 27/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B5=84=E6=BA=90=E8=A1=A8=E5=8D=95=E5=92=8C=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=A1=A8=E5=8D=95=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=BF=85=E5=A1=AB=E9=A1=B9=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/business/metadata/metadataEdit.html | 6 +++- .../resources/static/css/common/common.css | 5 +++ .../view/sys/file/dirUploadLayer.html | 33 +++---------------- 3 files changed, 15 insertions(+), 29 deletions(-) diff --git a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html index 56c57cb..af683cc 100644 --- a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html +++ b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html @@ -35,7 +35,11 @@
    - + +
    diff --git a/shandan-common/src/main/resources/static/css/common/common.css b/shandan-common/src/main/resources/static/css/common/common.css index 747ca97..1c19112 100644 --- a/shandan-common/src/main/resources/static/css/common/common.css +++ b/shandan-common/src/main/resources/static/css/common/common.css @@ -297,9 +297,14 @@ fieldset a, fieldset a:hover{ flex-flow: wrap; } .dynamic-form .layui-form-item{ + display: flex; + justify-content: center; width: calc(50% - 20px); margin-left: 10px; } +.dynamic-form .layui-form-label{ + width: 100px; +} .dynamic-form .layui-input-block{ margin-left: 0; flex: 1; diff --git a/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html b/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html index ea35db8..085b366 100644 --- a/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html +++ b/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html @@ -8,32 +8,10 @@ @@ -71,7 +44,11 @@ th:if="${field.isShow}" th:style="${field.fieldType == 'textarea' ? 'width: calc(100% - 30px);' : ''}" th:with="username=*{userName}"> - + +
    Date: Mon, 28 Aug 2023 10:29:18 +0800 Subject: [PATCH 28/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B5=84=E6=BA=90=E7=BC=96=E8=BE=91=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=92=8C=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=9C=A8=E6=B8=B2=E6=9F=93=E5=85=B6=E4=BB=96=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=97=B6=E6=A0=B7=E5=BC=8F=E9=94=99=E4=B9=B1=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/business/metadata/metadataEdit.html | 8 ++--- .../js/common/layui/extend/datalabel.js | 4 +-- .../view/sys/file/dirUploadLayer.html | 35 ++++++++++--------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html index af683cc..8d13fd3 100644 --- a/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html +++ b/shandan-bianmu/src/main/resources/view/business/metadata/metadataEdit.html @@ -69,10 +69,10 @@ th:data-label-title-path="${labelSet.labelTitlePath}">
    - -
    + +
    +
    +
    diff --git a/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js b/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js index 05b90fb..3ce5943 100644 --- a/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js +++ b/shandan-common/src/main/resources/static/js/common/layui/extend/datalabel.js @@ -250,8 +250,8 @@ layui.define(['globalTree'], function (exports) { } function addOtherLabel(value, readonly) { - let template = `
    `; - $('.other-label-item').append(template); + let template = `
    `; + $('.other-label-item.layui-input-block').append(template); let cid = _KEY + _CACHE.size, component = new Component(cid, $('.label-set-component.other-label:last')); diff --git a/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html b/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html index 085b366..b871de0 100644 --- a/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html +++ b/shandan-system/src/main/resources/view/sys/file/dirUploadLayer.html @@ -38,12 +38,13 @@
    + style="border: 1px solid #eee; padding-top:15px; margin-bottom: 50px;" + th:object="${@securityUtil.getLoginSysUser()}">
    + th:with="username=*{userName}">
    -
    +
    -
    +
    +
    +
    -
    - -
    +
    + +
    +
    +
    From 0e3cb15881d869cde995884e2ec0b49ee58dca4f Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 28 Aug 2023 10:30:34 +0800 Subject: [PATCH 29/35] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BC=96=E8=BE=91=E8=A1=A8=E5=8D=95=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=A1=A8=E5=8D=95=E9=85=8D=E7=BD=AE=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E6=B8=B2=E6=9F=93=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/sys/file/fileEditLayer.html | 159 +++++++----------- 1 file changed, 60 insertions(+), 99 deletions(-) diff --git a/shandan-system/src/main/resources/view/sys/file/fileEditLayer.html b/shandan-system/src/main/resources/view/sys/file/fileEditLayer.html index 917d1d5..f1d4192 100644 --- a/shandan-system/src/main/resources/view/sys/file/fileEditLayer.html +++ b/shandan-system/src/main/resources/view/sys/file/fileEditLayer.html @@ -15,10 +15,6 @@ .layui-form-item .layui-input-inline { width: 260px; } - .label-set-component{ - margin-left: 120px; - } - .star-mark{color: red; display: none} @@ -79,18 +91,23 @@
    当前位置:
    diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysTheadConfigController.java b/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysTheadConfigController.java new file mode 100644 index 0000000..cc2e3e6 --- /dev/null +++ b/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysTheadConfigController.java @@ -0,0 +1,42 @@ +package com.keyware.shandan.system.controller; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONUtil; +import com.keyware.shandan.common.entity.Result; +import com.keyware.shandan.common.util.StringUtils; +import com.keyware.shandan.system.entity.SysTheadConfig; +import com.keyware.shandan.system.service.SysTheadConfigService; +import org.springframework.security.core.Authentication; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 前端数据表格表头配置前端控制器 + * + * @author GuoXin + * @date 2023/8/30 + */ +@RestController +@RequestMapping("/sys/thead/config") +public class SysTheadConfigController { + private final SysTheadConfigService theadConfigService; + + public SysTheadConfigController(SysTheadConfigService theadConfigService) { + this.theadConfigService = theadConfigService; + } + + @PostMapping(value = "/api/save") + public Result save(String params, Authentication auth) { + JSONArray jsonArray = JSONUtil.parseArray(params); + List list = jsonArray.toList(SysTheadConfig.class); + list.forEach(item->{ + if(!StringUtils.hasText(item.getId())){ + item.genId(auth.getName()); + } + }); + return Result.of(theadConfigService.saveOrUpdateBatch(list)); + } +} diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysTheadConfig.java b/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysTheadConfig.java new file mode 100644 index 0000000..ae2e581 --- /dev/null +++ b/shandan-system/src/main/java/com/keyware/shandan/system/entity/SysTheadConfig.java @@ -0,0 +1,65 @@ +package com.keyware.shandan.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.OrderBy; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.keyware.shandan.common.entity.BaseEntity; +import com.keyware.shandan.common.util.MD5Util; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 前端数据表格表头配置实体类 + * + * @author GuoXin + * @date 2023/8/30 + */ +@Data +@Builder +@EqualsAndHashCode(callSuper = true) +@TableName("SYS_THEAD_CONFIG") +public class SysTheadConfig extends BaseEntity { + + private static final long serialVersionUID = 1480474706145625172L; + /** + * 主键 + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 数据表ID,对应前端页面上的layui中table组件的id + */ + private String tableId; + /** + * 列名 + */ + private String colName; + /** + * 列标题 + */ + private String colTitle; + /** + * 列顺序 + */ + @OrderBy(isDesc = false, sort = 2) + private Integer colSort; + /** + * 列宽度 + */ + private String colWidth; + /** + * 是否显示 + */ + @OrderBy(sort = 1) + private Boolean isShow; + /** + * 是否允许排序 + */ + private Boolean isSort; + + public void genId(String userName) { + this.id = MD5Util.getMD5(tableId + colName + userName); + } +} diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/mapper/SysTheadConfigMapper.java b/shandan-system/src/main/java/com/keyware/shandan/system/mapper/SysTheadConfigMapper.java new file mode 100644 index 0000000..8a7a15e --- /dev/null +++ b/shandan-system/src/main/java/com/keyware/shandan/system/mapper/SysTheadConfigMapper.java @@ -0,0 +1,15 @@ +package com.keyware.shandan.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.keyware.shandan.system.entity.SysTheadConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * 前端数据表格表头配置数据库操作映射接口 + * + * @author GuoXin + * @date 2023/8/30 + */ +@Mapper +public interface SysTheadConfigMapper extends BaseMapper { +} diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/service/SysTheadConfigService.java b/shandan-system/src/main/java/com/keyware/shandan/system/service/SysTheadConfigService.java new file mode 100644 index 0000000..77ec5c5 --- /dev/null +++ b/shandan-system/src/main/java/com/keyware/shandan/system/service/SysTheadConfigService.java @@ -0,0 +1,16 @@ +package com.keyware.shandan.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.keyware.shandan.system.entity.SysTheadConfig; + +import java.util.List; + +/** + * 前端数据表格表头配置数据库操作接口 + * + * @author GuoXin + * @date 2023/8/30 + */ +public interface SysTheadConfigService extends IService { + List listByCreateUser(String userId); +} diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysTheadConfigServiceImpl.java b/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysTheadConfigServiceImpl.java new file mode 100644 index 0000000..0676e04 --- /dev/null +++ b/shandan-system/src/main/java/com/keyware/shandan/system/service/impl/SysTheadConfigServiceImpl.java @@ -0,0 +1,78 @@ +package com.keyware.shandan.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.keyware.shandan.common.util.StringUtils; +import com.keyware.shandan.system.entity.SysTheadConfig; +import com.keyware.shandan.system.mapper.SysTheadConfigMapper; +import com.keyware.shandan.system.service.SysTheadConfigService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * 前端数据表格表头配置数据库操作接口实现类 + * + * @author GuoXin + * @date 2023/8/30 + */ +@Service +public class SysTheadConfigServiceImpl extends ServiceImpl implements SysTheadConfigService { + static final String resourceTableId = "browser_resource_table", fileTableId = "browser_file_table"; + static List defaultConfig = new ArrayList<>(); + + static { + SysTheadConfig.SysTheadConfigBuilder builder = SysTheadConfig.builder(); + // 初始化综合浏览系统资源查询数据表表头默认配置 + defaultConfig.add(builder.tableId(resourceTableId).colName("resourceName").colTitle("资源名称").colSort(1).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("resourceComment").colTitle("资源注释").colSort(2).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("directoryPath").colTitle("目录路径").colSort(3).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("themeTask").colTitle("主题任务").colSort(4).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("dataSource").colTitle("数据来源").colSort(5).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("taskTime").colTitle("任务时间").colSort(6).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("dataType").colTitle("数据类型").colSort(7).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("secretLevel").colTitle("数据密级").colSort(8).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(resourceTableId).colName("resourceType").colTitle("资源类型").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + // 初始化综合浏览系统文件全文检索数据表表头默认配置 + defaultConfig.add(builder.tableId(fileTableId).colName("fileName").colTitle("文件名称").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("fileType").colTitle("文件类型").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("fileSize").colTitle("文件大小").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("remark").colTitle("文件描述").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("exerciseData").colTitle("是否演训数据").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("entryStaff").colTitle("录入人员").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("equipmentModel").colTitle("装备型号").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("inputDate").colTitle("任务时间").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("source").colTitle("文件来源").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("taskCode").colTitle("任务代号").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("taskNature").colTitle("任务性质").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("troopCode").colTitle("部队代号").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("targetNumber").colTitle("目标/靶标类型").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("missileNumber").colTitle("导弹编号").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("themeTask").colTitle("主题任务").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + defaultConfig.add(builder.tableId(fileTableId).colName("secretLevel").colTitle("文件密级").colSort(9).colWidth("100").isShow(true).isSort(false).build()); + } + + @Override + public List listByCreateUser(String userId) { + if (StringUtils.hasText(userId)) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SysTheadConfig::getCreateUser, userId); + List list = list(query); + if (list.size() == 0) { + // 为默认数据生成包含用户主键的ID + defaultConfig.forEach(conf -> conf.genId(userId)); + return defaultConfig; + } + return list; + } + return Collections.emptyList(); + } + + @Override + public boolean saveOrUpdateBatch(Collection entityList, int batchSize) { + return super.saveOrUpdateBatch(entityList, batchSize); + } +} diff --git a/shandan-system/src/main/resources/static/js/sys/form/formConfig.js b/shandan-system/src/main/resources/static/js/sys/form/formConfig.js index 0eb040b..9badef6 100644 --- a/shandan-system/src/main/resources/static/js/sys/form/formConfig.js +++ b/shandan-system/src/main/resources/static/js/sys/form/formConfig.js @@ -53,7 +53,12 @@ class FormConfigComponent { }) } } + }); + + gtable.on(`edit(${elemId})`, ({field, value, data}) => { + this.dataMap.get(data.id)[field] = value; }) + // 监听switch按钮 form.on(`switch(${elemId}-switch)`, (data) => this.switchChangeListen(data));