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