From 00c9712299f3c0bd585356473374995a7e608aa6 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Mon, 11 Dec 2023 18:30:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../tenant/api/importexport/ExportApi.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java b/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java index f5b6ae30..8393e473 100644 --- a/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java +++ b/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java @@ -18,6 +18,7 @@ package neatlogic.module.tenant.api.importexport; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.common.constvalue.ApiParamType; +import neatlogic.framework.exception.type.ParamIrregularException; import neatlogic.framework.importexport.core.ImportExportHandler; import neatlogic.framework.importexport.core.ImportExportHandlerFactory; import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; @@ -28,6 +29,7 @@ import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateBinaryStreamApiComponentBase; import neatlogic.framework.util.FileUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -69,22 +71,38 @@ public class ExportApi extends PrivateBinaryStreamApiComponentBase { if (importExportHandler == null) { throw new ImportExportHandlerNotFoundException(type); } + if (primaryKey instanceof String) { + String str = (String) primaryKey; + if (StringUtils.length(str) != 32) { + try { + primaryKey = Long.valueOf(str); + } catch (NumberFormatException e) { + throw new ParamIrregularException("primaryKey"); + } + } + } if (!importExportHandler.checkExportAuth(primaryKey)) { throw new ExportNoAuthException(); } - String fileName = FileUtil.getEncodedFileName(primaryKey + ".pak"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); - response.setHeader("Content-Disposition", " attachment; filename=\"" + fileName + "\""); List dependencyBaseInfoList = new ArrayList<>(); - try (ZipOutputStream zipos = new ZipOutputStream(response.getOutputStream())) { + ZipOutputStream zipos = null; + try { + zipos = new ZipOutputStream(response.getOutputStream()); ImportExportVo importExportVo = importExportHandler.exportData(primaryKey, dependencyBaseInfoList, zipos); + String fileName = FileUtil.getEncodedFileName(importExportHandler.getType().getText() + "-" + importExportVo.getName() + "(" + importExportVo.getPrimaryKey() + ").pak"); + response.setHeader("Content-Disposition", " attachment; filename=\"" + fileName + "\""); importExportVo.setDependencyBaseInfoList(dependencyBaseInfoList); zipos.putNextEntry(new ZipEntry(importExportVo.getPrimaryKey() + ".json")); zipos.write(JSONObject.toJSONBytes(importExportVo)); zipos.closeEntry(); } catch (Exception e) { + if (zipos != null) { + zipos.closeEntry(); + } logger.error(e.getMessage(), e); + throw e; } return null; } -- Gitee From 51fdae8be71e27126e226817eab9de381de58751 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Mon, 11 Dec 2023 20:11:58 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../MatrixColumnDataSearchForBatchApi.java | 170 ++++++++++++++++++ .../tenant/api/test/JdbcExampleApi.java | 77 ++++++++ .../tenant/api/test/MyBatisExampleApi.java | 40 +++++ 3 files changed, 287 insertions(+) create mode 100644 src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java create mode 100644 src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java create mode 100644 src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java diff --git a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java new file mode 100644 index 00000000..3b84cd3d --- /dev/null +++ b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java @@ -0,0 +1,170 @@ +package neatlogic.module.tenant.api.matrix; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.common.constvalue.ApiParamType; +import neatlogic.framework.common.dto.ValueTextVo; +import neatlogic.framework.exception.type.ParamNotExistsException; +import neatlogic.framework.matrix.constvalue.SearchExpression; +import neatlogic.framework.matrix.core.IMatrixDataSourceHandler; +import neatlogic.framework.matrix.core.MatrixDataSourceHandlerFactory; +import neatlogic.framework.matrix.core.MatrixPrivateDataSourceHandlerFactory; +import neatlogic.framework.matrix.dao.mapper.MatrixMapper; +import neatlogic.framework.matrix.dto.*; +import neatlogic.framework.matrix.exception.MatrixAttributeNotFoundException; +import neatlogic.framework.matrix.exception.MatrixDataSourceHandlerNotFoundException; +import neatlogic.framework.matrix.exception.MatrixNotFoundException; +import neatlogic.framework.restful.annotation.*; +import neatlogic.framework.restful.constvalue.OperationTypeEnum; +import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +@Service + +@OperationType(type = OperationTypeEnum.SEARCH) +public class MatrixColumnDataSearchForBatchApi extends PrivateApiComponentBase { + + @Resource + private MatrixMapper matrixMapper; + + @Override + public String getName() { + return "批量矩阵属性数据查询-下拉接口"; + } + + + @Override + public boolean disableReturnCircularReferenceDetect() { + return true; + } + + @Input({ + @Param(name = "searchParamList", type = ApiParamType.JSONARRAY, isRequired = true, minSize = 1, desc = "查询参数列表") + }) + @Output({ + @Param(name = "list", type = ApiParamType.JSONARRAY, desc = "查询结果列表") + }) + @Description(desc = "批量矩阵属性数据查询-下拉接口") + @Override + public Object myDoService(JSONObject paramObj) throws Exception { + JSONArray resultList = new JSONArray(); + JSONArray searchParamList = paramObj.getJSONArray("searchParamList"); + for (int i = 0; i < searchParamList.size(); i++) { + JSONObject searchParamObj = searchParamList.getJSONObject(i); + if (MapUtils.isEmpty(searchParamObj)) { + continue; + } + String matrixUuid = searchParamObj.getString("matrixUuid"); + if (StringUtils.isBlank(matrixUuid)) { + throw new ParamNotExistsException("searchParamList[" + i + "].matrixUuid"); + } + String valueField = searchParamObj.getString("valueField"); + if (StringUtils.isBlank(valueField)) { + throw new ParamNotExistsException("searchParamList[" + i + "].valueField"); + } + String textField = searchParamObj.getString("textField"); + if (StringUtils.isBlank(textField)) { + throw new ParamNotExistsException("searchParamList[" + i + "].textField"); + } + JSONArray defaultValue = searchParamObj.getJSONArray("defaultValue"); + if (CollectionUtils.isEmpty(defaultValue)) { + throw new ParamNotExistsException("searchParamList[" + i + "].defaultValue"); + } + MatrixVo matrixVo = MatrixPrivateDataSourceHandlerFactory.getMatrixVo(matrixUuid); + if (matrixVo == null) { + matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); + if (matrixVo == null) { + throw new MatrixNotFoundException(matrixUuid); + } + } + IMatrixDataSourceHandler matrixDataSourceHandler = MatrixDataSourceHandlerFactory.getHandler(matrixVo.getType()); + if (matrixDataSourceHandler == null) { + throw new MatrixDataSourceHandlerNotFoundException(matrixVo.getType()); + } + + List matrixAttributeList = matrixDataSourceHandler.getAttributeList(matrixVo); + if (CollectionUtils.isEmpty(matrixAttributeList)) { + continue; + } + Set notNullColumnSet = new HashSet<>(); + List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); + if (!attributeList.contains(valueField)) { + throw new MatrixAttributeNotFoundException(matrixVo.getName(), valueField); + } + notNullColumnSet.add(valueField); + if (!attributeList.contains(textField)) { + throw new MatrixAttributeNotFoundException(matrixVo.getName(), textField); + } + notNullColumnSet.add(textField); + List columnList = new ArrayList<>(); + columnList.add(valueField); + columnList.add(textField); + JSONObject resultObj = new JSONObject(); + resultObj.put("matrixUuid", matrixUuid); + resultObj.put("valueField", valueField); + resultObj.put("textField", textField); + List dataList = new ArrayList<>(); + List textList = new ArrayList<>(); + List defaultValueFilterList = new ArrayList<>(); + for (int j = 0; j < defaultValue.size(); j++) { + Object defaultValueObject = defaultValue.get(j); + if (defaultValueObject instanceof JSONObject) { + JSONObject defaultValueObj = (JSONObject) defaultValueObject; + String value = defaultValueObj.getString("value"); + String text = defaultValueObj.getString("text"); + dataList.add(new ValueTextVo(value, text)); + } else if (defaultValueObject instanceof String) { + String defaultValueStr = (String) defaultValueObject; + MatrixDefaultValueFilterVo matrixDefaultValueFilterVo = new MatrixDefaultValueFilterVo( + null, + new MatrixKeywordFilterVo(valueField, SearchExpression.EQ.getExpression(), defaultValueStr) + ); + defaultValueFilterList.add(matrixDefaultValueFilterVo); + textList.add(defaultValueStr); + } + } + if (CollectionUtils.isNotEmpty(defaultValueFilterList)) { + MatrixDataVo dataVo = new MatrixDataVo(); + dataVo.setMatrixUuid(matrixUuid); + dataVo.setColumnList(columnList); + dataVo.setNotNullColumnList(new ArrayList<>(notNullColumnSet)); + dataVo.setDefaultValueFilterList(defaultValueFilterList); + List> list = matrixDataSourceHandler.searchTableDataNew(dataVo); + for (String text : textList) { + for (Map e : list) { + String textStr = null; + JSONObject textObj = e.get(textField); + if (MapUtils.isNotEmpty(textObj)) { + textStr = textObj.getString("text"); + } + if (!Objects.equals(textStr, text)) { + continue; + } + String valueStr = null; + JSONObject valueObj = e.get(valueField); + if (MapUtils.isNotEmpty(valueObj)) { + valueStr = valueObj.getString("value"); + } + dataList.add(new ValueTextVo(valueStr, textStr)); + break; + } + } + } + resultObj.put("dataList", dataList); + resultList.add(resultObj); + } + return resultList; + } + + @Override + public String getToken() { + return "matrix/column/data/search/forbatch"; + } +} diff --git a/src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java b/src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java new file mode 100644 index 00000000..70da09e1 --- /dev/null +++ b/src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java @@ -0,0 +1,77 @@ +package neatlogic.module.tenant.api.test; + +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.restful.annotation.Description; +import neatlogic.framework.restful.annotation.Input; +import neatlogic.framework.restful.annotation.Output; +import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; +import org.springframework.stereotype.Component; + +import java.sql.*; + +@Component +public class JdbcExampleApi extends PrivateApiComponentBase { + @Override + public String getName() { + return "JDBC连接数据库"; + } + + @Input({}) + @Output({}) + @Description(desc = "JDBC连接数据库") + @Override + public Object myDoService(JSONObject paramObj) throws Exception { + // 数据库连接参数 + String url = "jdbc:mysql://192.168.1.93:2881/oceanbase"; + String username = "root"; + String password = "root123"; +// String url = "jdbc:mysql://192.168.3.90:4000/neatlogic"; +// String username = "root"; +// String password = "neatlogic@901"; + // 加载驱动程序 + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + return null; + } + + // 建立连接 + try (Connection connection = DriverManager.getConnection(url, username, password)) { + DatabaseMetaData metaData = connection.getMetaData(); + String databaseProductName = metaData.getDatabaseProductName(); + String databaseProductVersion = metaData.getDatabaseProductVersion(); + int databaseMajorVersion = metaData.getDatabaseMajorVersion(); + int databaseMinorVersion = metaData.getDatabaseMinorVersion(); + String driverVersion = metaData.getDriverVersion(); + String driverName = metaData.getDriverName(); + System.out.println("driverName = " + driverName); + System.out.println("driverVersion = " + driverVersion); + System.out.println("databaseMinorVersion = " + databaseMinorVersion);//0 + System.out.println("databaseMajorVersion = " + databaseMajorVersion);//8 + System.out.println("databaseProductVersion = " + databaseProductVersion);// 8.0.11-TiDB-v7.4.0 + System.out.println("databaseProductName = " + databaseProductName);// MySQL + // 创建 Statement 对象来执行 SQL 语句 + Statement statement = connection.createStatement(); + // 执行 SQL 查询并获取结果集 + ResultSet resultSet = statement.executeQuery("SELECT @@version"); + // 处理结果集 + while (resultSet.next()) { +// System.out.println("ID: " + resultSet.getInt("user_id")); + System.out.println("Name: " + resultSet.getString(1)); +// System.out.println("Email: " + resultSet.getString("email")); + } + // 关闭结果集和连接 + resultSet.close(); + statement.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + @Override + public String getToken() { + return "jdbc"; + } +} diff --git a/src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java b/src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java new file mode 100644 index 00000000..21f432bd --- /dev/null +++ b/src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java @@ -0,0 +1,40 @@ +package neatlogic.module.tenant.api.test; + +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.restful.annotation.Description; +import neatlogic.framework.restful.annotation.Input; +import neatlogic.framework.restful.annotation.Output; +import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; +import neatlogic.module.tenant.dao.mapper.TestMapper; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class MyBatisExampleApi extends PrivateApiComponentBase { + + @Resource + TestMapper testMapper; + + @Override + public String getName() { + return "mybatis test"; + } + @Input({}) + @Output({}) + @Description(desc = "mybatis test") + @Override + public Object myDoService(JSONObject paramObj) throws Exception { +// Map map = testMapper.selectTColumn(); +// System.out.println("map = " + map); +// for (Map.Entry entry : map.entrySet()) { +// System.out.println("key = " + entry.getKey() + " -> " + entry.getValue().getClass().getName()); +// } + return null; + } + + @Override + public String getToken() { + return "mybatis/test"; + } +} -- Gitee From 264e3773b9362e611c52c12234f936b515078449 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Tue, 12 Dec 2023 10:37:33 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../module/tenant/api/importexport/ExportApi.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java b/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java index 8393e473..8694028b 100644 --- a/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java +++ b/src/main/java/neatlogic/module/tenant/api/importexport/ExportApi.java @@ -87,20 +87,17 @@ public class ExportApi extends PrivateBinaryStreamApiComponentBase { response.setContentType("application/vnd.ms-excel;charset=utf-8"); List dependencyBaseInfoList = new ArrayList<>(); - ZipOutputStream zipos = null; - try { - zipos = new ZipOutputStream(response.getOutputStream()); + try (ZipOutputStream zipos = new ZipOutputStream(response.getOutputStream())) { + dependencyBaseInfoList.add(new ImportExportBaseInfoVo(type, primaryKey)); ImportExportVo importExportVo = importExportHandler.exportData(primaryKey, dependencyBaseInfoList, zipos); String fileName = FileUtil.getEncodedFileName(importExportHandler.getType().getText() + "-" + importExportVo.getName() + "(" + importExportVo.getPrimaryKey() + ").pak"); response.setHeader("Content-Disposition", " attachment; filename=\"" + fileName + "\""); + dependencyBaseInfoList.remove(0); importExportVo.setDependencyBaseInfoList(dependencyBaseInfoList); zipos.putNextEntry(new ZipEntry(importExportVo.getPrimaryKey() + ".json")); zipos.write(JSONObject.toJSONBytes(importExportVo)); zipos.closeEntry(); } catch (Exception e) { - if (zipos != null) { - zipos.closeEntry(); - } logger.error(e.getMessage(), e); throw e; } -- Gitee From 23dd260421ba94fa2c12e38ae88785dc3c8186e6 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Tue, 12 Dec 2023 11:41:34 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../MatrixColumnDataSearchForBatchApi.java | 170 ------------------ .../tenant/api/test/JdbcExampleApi.java | 77 -------- .../tenant/api/test/MyBatisExampleApi.java | 40 ----- 3 files changed, 287 deletions(-) delete mode 100644 src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java delete mode 100644 src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java delete mode 100644 src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java diff --git a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java deleted file mode 100644 index 3b84cd3d..00000000 --- a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForBatchApi.java +++ /dev/null @@ -1,170 +0,0 @@ -package neatlogic.module.tenant.api.matrix; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.common.constvalue.ApiParamType; -import neatlogic.framework.common.dto.ValueTextVo; -import neatlogic.framework.exception.type.ParamNotExistsException; -import neatlogic.framework.matrix.constvalue.SearchExpression; -import neatlogic.framework.matrix.core.IMatrixDataSourceHandler; -import neatlogic.framework.matrix.core.MatrixDataSourceHandlerFactory; -import neatlogic.framework.matrix.core.MatrixPrivateDataSourceHandlerFactory; -import neatlogic.framework.matrix.dao.mapper.MatrixMapper; -import neatlogic.framework.matrix.dto.*; -import neatlogic.framework.matrix.exception.MatrixAttributeNotFoundException; -import neatlogic.framework.matrix.exception.MatrixDataSourceHandlerNotFoundException; -import neatlogic.framework.matrix.exception.MatrixNotFoundException; -import neatlogic.framework.restful.annotation.*; -import neatlogic.framework.restful.constvalue.OperationTypeEnum; -import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -@Service - -@OperationType(type = OperationTypeEnum.SEARCH) -public class MatrixColumnDataSearchForBatchApi extends PrivateApiComponentBase { - - @Resource - private MatrixMapper matrixMapper; - - @Override - public String getName() { - return "批量矩阵属性数据查询-下拉接口"; - } - - - @Override - public boolean disableReturnCircularReferenceDetect() { - return true; - } - - @Input({ - @Param(name = "searchParamList", type = ApiParamType.JSONARRAY, isRequired = true, minSize = 1, desc = "查询参数列表") - }) - @Output({ - @Param(name = "list", type = ApiParamType.JSONARRAY, desc = "查询结果列表") - }) - @Description(desc = "批量矩阵属性数据查询-下拉接口") - @Override - public Object myDoService(JSONObject paramObj) throws Exception { - JSONArray resultList = new JSONArray(); - JSONArray searchParamList = paramObj.getJSONArray("searchParamList"); - for (int i = 0; i < searchParamList.size(); i++) { - JSONObject searchParamObj = searchParamList.getJSONObject(i); - if (MapUtils.isEmpty(searchParamObj)) { - continue; - } - String matrixUuid = searchParamObj.getString("matrixUuid"); - if (StringUtils.isBlank(matrixUuid)) { - throw new ParamNotExistsException("searchParamList[" + i + "].matrixUuid"); - } - String valueField = searchParamObj.getString("valueField"); - if (StringUtils.isBlank(valueField)) { - throw new ParamNotExistsException("searchParamList[" + i + "].valueField"); - } - String textField = searchParamObj.getString("textField"); - if (StringUtils.isBlank(textField)) { - throw new ParamNotExistsException("searchParamList[" + i + "].textField"); - } - JSONArray defaultValue = searchParamObj.getJSONArray("defaultValue"); - if (CollectionUtils.isEmpty(defaultValue)) { - throw new ParamNotExistsException("searchParamList[" + i + "].defaultValue"); - } - MatrixVo matrixVo = MatrixPrivateDataSourceHandlerFactory.getMatrixVo(matrixUuid); - if (matrixVo == null) { - matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); - if (matrixVo == null) { - throw new MatrixNotFoundException(matrixUuid); - } - } - IMatrixDataSourceHandler matrixDataSourceHandler = MatrixDataSourceHandlerFactory.getHandler(matrixVo.getType()); - if (matrixDataSourceHandler == null) { - throw new MatrixDataSourceHandlerNotFoundException(matrixVo.getType()); - } - - List matrixAttributeList = matrixDataSourceHandler.getAttributeList(matrixVo); - if (CollectionUtils.isEmpty(matrixAttributeList)) { - continue; - } - Set notNullColumnSet = new HashSet<>(); - List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); - if (!attributeList.contains(valueField)) { - throw new MatrixAttributeNotFoundException(matrixVo.getName(), valueField); - } - notNullColumnSet.add(valueField); - if (!attributeList.contains(textField)) { - throw new MatrixAttributeNotFoundException(matrixVo.getName(), textField); - } - notNullColumnSet.add(textField); - List columnList = new ArrayList<>(); - columnList.add(valueField); - columnList.add(textField); - JSONObject resultObj = new JSONObject(); - resultObj.put("matrixUuid", matrixUuid); - resultObj.put("valueField", valueField); - resultObj.put("textField", textField); - List dataList = new ArrayList<>(); - List textList = new ArrayList<>(); - List defaultValueFilterList = new ArrayList<>(); - for (int j = 0; j < defaultValue.size(); j++) { - Object defaultValueObject = defaultValue.get(j); - if (defaultValueObject instanceof JSONObject) { - JSONObject defaultValueObj = (JSONObject) defaultValueObject; - String value = defaultValueObj.getString("value"); - String text = defaultValueObj.getString("text"); - dataList.add(new ValueTextVo(value, text)); - } else if (defaultValueObject instanceof String) { - String defaultValueStr = (String) defaultValueObject; - MatrixDefaultValueFilterVo matrixDefaultValueFilterVo = new MatrixDefaultValueFilterVo( - null, - new MatrixKeywordFilterVo(valueField, SearchExpression.EQ.getExpression(), defaultValueStr) - ); - defaultValueFilterList.add(matrixDefaultValueFilterVo); - textList.add(defaultValueStr); - } - } - if (CollectionUtils.isNotEmpty(defaultValueFilterList)) { - MatrixDataVo dataVo = new MatrixDataVo(); - dataVo.setMatrixUuid(matrixUuid); - dataVo.setColumnList(columnList); - dataVo.setNotNullColumnList(new ArrayList<>(notNullColumnSet)); - dataVo.setDefaultValueFilterList(defaultValueFilterList); - List> list = matrixDataSourceHandler.searchTableDataNew(dataVo); - for (String text : textList) { - for (Map e : list) { - String textStr = null; - JSONObject textObj = e.get(textField); - if (MapUtils.isNotEmpty(textObj)) { - textStr = textObj.getString("text"); - } - if (!Objects.equals(textStr, text)) { - continue; - } - String valueStr = null; - JSONObject valueObj = e.get(valueField); - if (MapUtils.isNotEmpty(valueObj)) { - valueStr = valueObj.getString("value"); - } - dataList.add(new ValueTextVo(valueStr, textStr)); - break; - } - } - } - resultObj.put("dataList", dataList); - resultList.add(resultObj); - } - return resultList; - } - - @Override - public String getToken() { - return "matrix/column/data/search/forbatch"; - } -} diff --git a/src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java b/src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java deleted file mode 100644 index 70da09e1..00000000 --- a/src/main/java/neatlogic/module/tenant/api/test/JdbcExampleApi.java +++ /dev/null @@ -1,77 +0,0 @@ -package neatlogic.module.tenant.api.test; - -import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.restful.annotation.Description; -import neatlogic.framework.restful.annotation.Input; -import neatlogic.framework.restful.annotation.Output; -import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import org.springframework.stereotype.Component; - -import java.sql.*; - -@Component -public class JdbcExampleApi extends PrivateApiComponentBase { - @Override - public String getName() { - return "JDBC连接数据库"; - } - - @Input({}) - @Output({}) - @Description(desc = "JDBC连接数据库") - @Override - public Object myDoService(JSONObject paramObj) throws Exception { - // 数据库连接参数 - String url = "jdbc:mysql://192.168.1.93:2881/oceanbase"; - String username = "root"; - String password = "root123"; -// String url = "jdbc:mysql://192.168.3.90:4000/neatlogic"; -// String username = "root"; -// String password = "neatlogic@901"; - // 加载驱动程序 - try { - Class.forName("com.mysql.cj.jdbc.Driver"); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - return null; - } - - // 建立连接 - try (Connection connection = DriverManager.getConnection(url, username, password)) { - DatabaseMetaData metaData = connection.getMetaData(); - String databaseProductName = metaData.getDatabaseProductName(); - String databaseProductVersion = metaData.getDatabaseProductVersion(); - int databaseMajorVersion = metaData.getDatabaseMajorVersion(); - int databaseMinorVersion = metaData.getDatabaseMinorVersion(); - String driverVersion = metaData.getDriverVersion(); - String driverName = metaData.getDriverName(); - System.out.println("driverName = " + driverName); - System.out.println("driverVersion = " + driverVersion); - System.out.println("databaseMinorVersion = " + databaseMinorVersion);//0 - System.out.println("databaseMajorVersion = " + databaseMajorVersion);//8 - System.out.println("databaseProductVersion = " + databaseProductVersion);// 8.0.11-TiDB-v7.4.0 - System.out.println("databaseProductName = " + databaseProductName);// MySQL - // 创建 Statement 对象来执行 SQL 语句 - Statement statement = connection.createStatement(); - // 执行 SQL 查询并获取结果集 - ResultSet resultSet = statement.executeQuery("SELECT @@version"); - // 处理结果集 - while (resultSet.next()) { -// System.out.println("ID: " + resultSet.getInt("user_id")); - System.out.println("Name: " + resultSet.getString(1)); -// System.out.println("Email: " + resultSet.getString("email")); - } - // 关闭结果集和连接 - resultSet.close(); - statement.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - return null; - } - - @Override - public String getToken() { - return "jdbc"; - } -} diff --git a/src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java b/src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java deleted file mode 100644 index 21f432bd..00000000 --- a/src/main/java/neatlogic/module/tenant/api/test/MyBatisExampleApi.java +++ /dev/null @@ -1,40 +0,0 @@ -package neatlogic.module.tenant.api.test; - -import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.restful.annotation.Description; -import neatlogic.framework.restful.annotation.Input; -import neatlogic.framework.restful.annotation.Output; -import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import neatlogic.module.tenant.dao.mapper.TestMapper; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -@Component -public class MyBatisExampleApi extends PrivateApiComponentBase { - - @Resource - TestMapper testMapper; - - @Override - public String getName() { - return "mybatis test"; - } - @Input({}) - @Output({}) - @Description(desc = "mybatis test") - @Override - public Object myDoService(JSONObject paramObj) throws Exception { -// Map map = testMapper.selectTColumn(); -// System.out.println("map = " + map); -// for (Map.Entry entry : map.entrySet()) { -// System.out.println("key = " + entry.getKey() + " -> " + entry.getValue().getClass().getName()); -// } - return null; - } - - @Override - public String getToken() { - return "mybatis/test"; - } -} -- Gitee