From 660cf208968dd150f84a44d3bfbac2f9265ae36d Mon Sep 17 00:00:00 2001 From: guoxin <371864209@qq.com> Date: Sat, 9 Sep 2023 17:11:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=EF=BC=9A=E7=BB=BC=E5=90=88?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E8=B5=84=E6=BA=90=E6=9F=A5=E8=AF=A2=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=85=A8=E5=AD=97=E7=AC=A6=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MetadataSearchService.java | 16 +++++--- .../src/main/resources/static/js/browser.js | 38 ++++++++++++------- .../src/main/resources/view/browser.html | 1 + 3 files changed, 37 insertions(+), 18 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 a60ffe1..01a7f2b 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 @@ -81,14 +81,20 @@ public class MetadataSearchService { case "metadataName": if (StringUtils.hasText(item.getFieldValue())) { for (String value : item.getFieldValue().split(" ")) { - wrapper.and(StringUtils.hasText(value.trim()), qw -> qw.like("RESOURCE_NAME", value.trim()).or().like("RESOURCE_COMMENT", value.trim())); + wrapper.and(StringUtils.hasText(value.trim()), qw -> { + if ("eq".equals(item.getLogicJudgement())) { + qw.eq("RESOURCE_NAME", value.trim())/*.or().eq("RESOURCE_COMMENT", value.trim())*/; + }else{ + qw.like("RESOURCE_NAME", value.trim())/*.or().like("RESOURCE_COMMENT", value.trim())*/; + } + }); } } break; case "markTag": String tagIds = item.getFieldValue(); List ids = Arrays.asList(tagIds.split(",")); - if (ids.size() > 0) { + if (!ids.isEmpty()) { 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)); @@ -103,12 +109,12 @@ public class MetadataSearchService { // 排序设置 SearchResultSort sort = condition.getSort(); - if(sort != null && sort.getSort() != null ){ + if (sort != null && sort.getSort() != null) { // 通过反射获取资源类字段注解中的数据库表相关的列名 Field field = ReflectUtil.getField(DirectoryResource.class, sort.getField().trim()); - if(field != null){ + if (field != null) { TableField tableField = field.getAnnotation(TableField.class); - if(tableField != null && StringUtils.hasText(tableField.value())){ + if (tableField != null && StringUtils.hasText(tableField.value())) { queryWrapper.orderBy(true, sort.getSort().equalsIgnoreCase("asc"), tableField.value()); } } diff --git a/shandan-browser/src/main/resources/static/js/browser.js b/shandan-browser/src/main/resources/static/js/browser.js index 7e5da0d..3315115 100644 --- a/shandan-browser/src/main/resources/static/js/browser.js +++ b/shandan-browser/src/main/resources/static/js/browser.js @@ -17,7 +17,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop DataLabel = layui.datalabel; const tHeadSetLayer = new THeadSetLayer(layui); - let metaListTable, dirFileTable, tagSelector, tags = [], conditions = []; + let metaListTable, dirFileTable, tagSelector, tags = [], conditions = [], preciseQuery = ''; const unchecked_tags = new Set(); // 初始化 initDirectoryTree(); @@ -152,6 +152,9 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop if (_table.where.conditions && _table.where.conditions.length > 0) { let formVal = form.val('search-form'); formVal = Object.assign(formVal, whereConditionToFormValue(_table.where)); + if(preciseQuery === 'eq'){ + formVal['preciseQuery'] = 'eq'; + } form.val('search-form', formVal); // $('div[lay-event="export"]').show(); } @@ -219,9 +222,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop url: `${ctx}/search/full/file?metaId=${id}`, height: 'full-110', request: {pageName: 'page', limitName: 'size'}, - defaultToolbar: [ - {title: '列表配置', layEvent: 'theadSet2', icon: 'layui-icon-cols'} - ], + defaultToolbar: [{title: '列表配置', layEvent: 'theadSet2', icon: 'layui-icon-cols'}], autoSort: false, limit: 30, method: 'get', @@ -319,17 +320,26 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop , range: '至' }); + form.on('checkbox(precise-query)', function ({value, othis}) { + preciseQuery = othis.hasClass('layui-form-checked') ? value : ''; + setSearchKeyCondition($('#searchKeyInput').val(), preciseQuery === 'eq' ? 'eq' : 'like'); + }); + $('#searchKeyInput').on('change', function () { + let value = $(this).val(); + setSearchKeyCondition(value, preciseQuery === 'eq' ? 'eq' : 'like'); + }) + + function setSearchKeyCondition(value, logic){ let where = metaListTable.where || {}; let conditions = where.conditions || []; - let value = $(this).val(); conditions = conditions.filter(item => item.fieldName !== 'metadataName') if (value && value.trim()) { - conditions.push({fieldName: 'metadataName', fieldValue: value.trim(), logicJudgement: 'like'}) + conditions.push({fieldName: 'metadataName', fieldValue: value.trim(), logicJudgement: logic}) } where.conditions = conditions; metaListTable.where = where; - }) + } } function setMarkTagInputValue() { @@ -364,7 +374,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop if (key === 'searchKeyInput') continue; let fieldName = key, fieldValue = formVal[key], logicJudgement; // 如果fieldName是条件下拉框,则跳过 - if (fieldName.startsWith('logic-') || fieldName === 'directoryId' || fieldName === 'metadataId') continue; + if (fieldName.startsWith('logic-') || fieldName === 'directoryId' || fieldName === 'metadataId' || fieldName === 'preciseQuery') continue; let hasText = fieldValue.trim(); if (hasText) { @@ -565,7 +575,7 @@ class THeadSetLayer { }) } - static filterConfigData(tableId){ + static filterConfigData(tableId) { return theadConfig.filter(item => item.tableId === tableId); } @@ -583,7 +593,9 @@ class THeadSetLayer { targetNumber: data => DICT.getText('target_type', data.targetNumber) || data.targetNumber || '', secretLevel: data => DICT.getText('secret_level', data.secretLevel) || data.secretLevel || '', exerciseData: data => data.exerciseData ? '是' : '否', - resourceType: data => data.resourceType === 'file' ? '文件' : '数据库表' + resourceType: data => data.resourceType === 'file' ? '文件' : '数据库表', + fileSize: data => { + } } // 遍历配置项转换为列 @@ -591,7 +603,7 @@ class THeadSetLayer { const {colName, colTitle, colWidth, isShow, isSort} = conf; const width = !colWidth ? undefined : (Number.isInteger(colWidth) ? parseInt(colWidth) : colWidth); let col = {field: colName, title: colTitle, width, sort: isSort, hide: !isShow} - if(templets[colName]){ + if (templets[colName]) { col['templet'] = templets[colName]; } return col; @@ -599,9 +611,9 @@ class THeadSetLayer { // 设置操作列 let operateCol = {fixed: 'right', title: '操作', toolbar: '', width: 100, align: 'center'}; - if(tableId === 'dirMetadataTable'){ + if (tableId === 'dirMetadataTable') { operateCol.toolbar = '#rowToolBar' - }else if(tableId === 'dirFileTable'){ + } else if (tableId === 'dirFileTable') { operateCol.toolbar = '#fileRowToolBar' } cols.push(operateCol); diff --git a/shandan-browser/src/main/resources/view/browser.html b/shandan-browser/src/main/resources/view/browser.html index 08f1aac..3509ffe 100644 --- a/shandan-browser/src/main/resources/view/browser.html +++ b/shandan-browser/src/main/resources/view/browser.html @@ -90,6 +90,7 @@
+