From 7392f08349f8df8c19422f164838d229e504cb06 Mon Sep 17 00:00:00 2001
From: 上海郢昱 <15922366+miu-haiqing@user.noreply.gitee.com>
Date: 星期二, 15 九月 2026 09:02:44 +0800
Subject: [PATCH] 日志路径名称修改
---
src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 159 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java b/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java
new file mode 100644
index 0000000..678eb5e
--- /dev/null
+++ b/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java
@@ -0,0 +1,159 @@
+package com.hwtd.mes.collect.service.impl;
+
+import com.hwtd.mes.collect.dto.DatabaseDTO;
+import com.hwtd.mes.collect.service.DataCollectionService;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.sql.*;
+import java.util.*;
+
+@Service
+@Slf4j
+public class DataCollectionServiceImpl implements DataCollectionService {
+
+ /**
+ * 澶勭悊mdb鏁版嵁搴撴帓闄ゅ瓧娈电被鍨�
+ */
+ private final static List<String> MDB_EXCLUDE_TYPES = Arrays.asList("java.sql.Blob");
+
+ @Override
+ public List<Map<String, Object>> getAccessData(DatabaseDTO databaseDTO) {
+ List<Map<String,Object>> list = new ArrayList<>();
+ try{
+ Properties prop = new Properties();
+ //璁剧疆缂栫爜
+ prop.put("charSet", "UTF-8");
+ prop.put("user", StringUtils.isNotBlank(databaseDTO.getUserName())?databaseDTO.getUserName():"");
+ prop.put("password", StringUtils.isNotBlank(databaseDTO.getPassword())?databaseDTO.getPassword():"");
+ //鏁版嵁鍦板潃
+ String dbUrl = "jdbc:ucanaccess://" + databaseDTO.getFilePath();
+ //寮曞叆椹卞姩
+ Class.forName("net.ucanaccess.jdbc.UcanaccessDriver").newInstance();
+ Connection conn = null;
+ PreparedStatement preparedStatement = null;
+ ResultSet rs = null;
+ //杩炴帴鏁版嵁搴撹祫婧�
+ conn = DriverManager.getConnection(dbUrl, prop);
+ try {
+ //閬嶅巻鑾峰彇澶氬紶琛ㄦ暟鎹�
+ String s = "SELECT "+databaseDTO.getPointColumns()+" FROM " + databaseDTO.getTableName() + " WHERE 1=1";
+ if(StringUtils.isNotBlank(databaseDTO.getMainColumn()) && StringUtils.isNotBlank(databaseDTO.getBatchCode())){
+ s+=" and " + databaseDTO.getMainColumn() + " = '" + databaseDTO.getBatchCode()+ "'";
+ }
+ if(StringUtils.isNotBlank(databaseDTO.getOrderColumn())){
+ String orderRule = StringUtils.isNotBlank(databaseDTO.getOrderRule())?databaseDTO.getOrderRule():"ASC";
+ s+=" ORDER BY " + databaseDTO.getOrderColumn() + " " + orderRule;
+ }
+ preparedStatement = conn.prepareStatement(s);
+ rs = preparedStatement.executeQuery();
+ ResultSetMetaData data = rs.getMetaData();
+ while (rs.next()) {
+ Map<String, Object> map = new HashMap<>();
+ for (int i = 1; i <= data.getColumnCount(); i++) {
+ //鍒楀悕
+ String columnName = data.getColumnName(i);
+ //鍒楀瓧娈电被鍨�
+ String columnClassName = data.getColumnClassName(i);
+ Object columnValue = null;
+ if(!MDB_EXCLUDE_TYPES.contains(columnClassName)){
+ columnValue = rs.getObject(i);
+ }
+ map.put(columnName, columnValue);
+ }
+ list.add(map);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ closeA1l(conn, preparedStatement, rs);
+ }
+ return list;
+ }catch (Exception e){
+ throw new RuntimeException("Access鏁版嵁搴撻噰闆嗗紓甯革細"+e.getMessage());
+ }
+ }
+
+ @Override
+ public List<Map<String, Object>> getPostgreSqlData(DatabaseDTO databaseDTO) {
+ List<Map<String, Object>> dataList = new ArrayList<>();
+ try{
+ String dbName = databaseDTO.getDatabaseName();
+ String user = databaseDTO.getUserName();
+ String password = databaseDTO.getPassword();
+ // 浠� GetFileDto 鑾峰彇鏁版嵁琛ㄥ悕锛屽搴斻�愭暟鎹簱琛ㄥ悕銆戝瓧娈�
+ String table = databaseDTO.getTableName();
+ // 妫�鏌ユ暟鎹簱鍚嶅拰琛ㄥ悕鏄惁涓虹┖
+ if (dbName == null || dbName.isEmpty() || table == null || table.isEmpty()) {
+ throw new RuntimeException("鏁版嵁搴撳悕鎴栬〃鍚嶄笉鑳戒负绌�");
+ }
+ // 鏁版嵁搴撹繛鎺ヤ俊鎭�
+ String url = String.format("jdbc:postgresql://%s:%s/%s",databaseDTO.getIpAddress(),databaseDTO.getServerPort(),dbName);
+ Connection connection = null;
+ PreparedStatement preparedStatement = null;
+ ResultSet resultSet = null;
+
+ HikariConfig config = new HikariConfig();
+ config.setJdbcUrl(url);
+ config.setUsername(user);
+ config.setPassword(password);
+ config.setMaximumPoolSize(10);
+ config.setConnectionTimeout(30000);
+
+ HikariDataSource ds = new HikariDataSource(config);
+ try {
+ // 寤虹珛杩炴帴
+ connection = ds.getConnection();
+ // 鏋勫缓鍩虹 SQL
+ String sql = "SELECT "+databaseDTO.getPointColumns()+" FROM "+table+" WHERE 1=1";
+ if(StringUtils.isNotBlank(databaseDTO.getMainColumn()) && StringUtils.isNotBlank(databaseDTO.getBatchCode())){
+ sql+=" AND (" + databaseDTO.getMainColumn() + " = TRIM('" + databaseDTO.getBatchCode()+ "')";
+ }
+ if(StringUtils.isNotBlank(databaseDTO.getOrderColumn())){
+ String orderRule = StringUtils.isNotBlank(databaseDTO.getOrderRule())?databaseDTO.getOrderRule():"ASC";
+ sql+=" ORDER BY " + databaseDTO.getOrderColumn() + " " + orderRule;
+ }
+ // 鍒涘缓 PreparedStatement 瀵硅薄鎵ц SQL
+ preparedStatement = connection.prepareStatement(sql);
+ resultSet = preparedStatement.executeQuery();
+ ResultSetMetaData metaData = resultSet.getMetaData();
+ int columnCount = metaData.getColumnCount();
+ // 閬嶅巻缁撴灉闆嗚幏鍙栨暟鎹�
+ while (resultSet.next()) {
+ Map<String, Object> rowData = new HashMap<>();
+ for (int i = 1; i <= columnCount; i++) {
+ String columnName = metaData.getColumnName(i);
+ rowData.put(columnName, resultSet.getObject(i));
+ }
+ dataList.add(rowData);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ closeA1l(connection, preparedStatement, resultSet);
+ }
+ return dataList;
+ }catch (Exception e){
+ throw new RuntimeException("PostgreSql鏁版嵁搴撻噰闆嗗紓甯革細"+e.getMessage());
+ }
+ }
+
+ private static void closeA1l(Connection conn, PreparedStatement preparedStatement, ResultSet rs) {
+ try {
+ if (null != rs) {
+ rs.close();
+ }
+ if (null != preparedStatement) {
+ preparedStatement.close();
+ }
+ if (null != conn) {
+ conn.close();
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
+}
--
Gitblit v1.9.3