diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index 47a07ec..a2a8bed 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -20,7 +20,6 @@ import org.springframework.cache.annotation.EnableCaching;
@MapperScan("com.ruoyi.**.mapper")
@EnableCaching
public class RuoYiApplication {
-
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication application = new SpringApplication(RuoYiApplication.class);
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 3d95b2d..367c8f0 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -49,7 +49,8 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ #url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ url: jdbc:mysql://192.168.5.121:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: root
password: root
# 从库数据源
@@ -57,7 +58,8 @@ spring:
lazy: true
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ #url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ url: jdbc:mysql://192.168.5.121:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: root
password: root
# oracle:
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index 62d89d0..bcb390f 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -52,7 +52,8 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ #url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ url: jdbc:mysql://192.168.5.121:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: root
password: root
# 从库数据源
@@ -60,7 +61,8 @@ spring:
lazy: true
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ # url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+ url: jdbc:mysql://192.168.5.121:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: root
password: root
# oracle:
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 49b2b03..da14153 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -30,7 +30,6 @@ server:
servlet:
# 应用的访问路径
context-path: /
- # undertow 配置
undertow:
# HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的
max-http-post-size: -1
@@ -144,6 +143,12 @@ security:
- /index/JDList
- /jmreport/**
- /system/procedure/**
+ - /system/dict/data/type/**
+ - /system/proPlan/expiryProjects
+ - /system/proPlan/overdue
+ - /system/proPlan/list2
+ - /system/mrp/**
+ - /system/orderPro/**
# MyBatisPlus配置
# https://baomidou.com/config/
diff --git a/ruoyi-admin/src/test/java/com/ruoyi/RuoYiTestApplication.java b/ruoyi-admin/src/test/java/com/ruoyi/RuoYiTestApplication.java
new file mode 100644
index 0000000..49cad30
--- /dev/null
+++ b/ruoyi-admin/src/test/java/com/ruoyi/RuoYiTestApplication.java
@@ -0,0 +1,21 @@
+package com.ruoyi;
+
+import com.ruoyi.common.utils.FtpUtil;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+@SpringBootTest(classes=RuoYiApplication.class)
+public class RuoYiTestApplication {
+
+
+ @Test
+ public void asfsrfsf() throws FileNotFoundException {
+ FtpUtil.uploadFile("192.168.5.18", 8022, "admin", "hbyt2025", "", "test11/111111111/222222", "33333.dwg", new FileInputStream(new File("D:\\dwg\\111111111111111.dwg")));
+ }
+
+
+}
diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/ExcelSummaryTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/ExcelSummaryTest.java
index 1b0d7e1..98e7538 100644
--- a/ruoyi-admin/src/test/java/com/ruoyi/test/ExcelSummaryTest.java
+++ b/ruoyi-admin/src/test/java/com/ruoyi/test/ExcelSummaryTest.java
@@ -84,4 +84,4 @@ public class ExcelSummaryTest {
throw new RuntimeException("写入汇总 Excel 文件时出错", e);
}
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 837132c..a788a81 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -173,6 +173,11 @@
itextpdf
5.5.13
+
+ commons-beanutils
+ commons-beanutils
+ 1.9.4
+
org.lionsoul
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/KeepSpaceStringConverter.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/KeepSpaceStringConverter.java
new file mode 100644
index 0000000..319572d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/convert/KeepSpaceStringConverter.java
@@ -0,0 +1,106 @@
+package com.ruoyi.common.convert;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.converters.ReadConverterContext;
+import com.alibaba.excel.converters.WriteConverterContext;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.RichTextString;
+
+public class KeepSpaceStringConverter implements Converter {
+
+ private static boolean printedFields = false;
+ @Override
+ public Class> supportJavaTypeKey() {
+ return String.class;
+ }
+
+ @Override
+ public CellDataTypeEnum supportExcelTypeKey() {
+ return CellDataTypeEnum.STRING;
+ }
+
+ @Override
+ public String convertToJavaData(ReadConverterContext> context) {
+ // 打印所有可用字段(仅第一次)
+ if (!printedFields) {
+ System.out.println("KeepSpaceStringConverter - ReadConverterContext字段:");
+ java.lang.reflect.Field[] fields = context.getClass().getDeclaredFields();
+ for (java.lang.reflect.Field field : fields) {
+ System.out.println(" - " + field.getName() + " (" + field.getType().getSimpleName() + ")");
+ }
+ printedFields = true;
+ }
+
+ // 尝试通过readCellData字段获取底层的POI Cell
+ try {
+ java.lang.reflect.Field readCellDataField = context.getClass().getDeclaredField("readCellData");
+ readCellDataField.setAccessible(true);
+ ReadCellData> readCellData = (ReadCellData>) readCellDataField.get(context);
+
+ if (readCellData != null) {
+ // 打印ReadCellData的字段
+ System.out.println("KeepSpaceStringConverter - ReadCellData字段:");
+ java.lang.reflect.Field[] cellDataFields = readCellData.getClass().getDeclaredFields();
+ for (java.lang.reflect.Field field : cellDataFields) {
+ System.out.println(" - " + field.getName() + " (" + field.getType().getSimpleName() + ")");
+ }
+
+ // 尝试不同的字段名获取POI Cell
+ String[] possibleFieldNames = {"cell", "poiCell", "xssfCell", "xssfCellData"};
+
+ for (String fieldName : possibleFieldNames) {
+ try {
+ java.lang.reflect.Field cellField = readCellData.getClass().getDeclaredField(fieldName);
+ cellField.setAccessible(true);
+ Object cellObj = cellField.get(readCellData);
+
+ if (cellObj instanceof Cell) {
+ Cell poiCell = (Cell) cellObj;
+
+ if (poiCell.getCellType() == CellType.STRING) {
+ // 直接从POI Cell获取原始数据
+ RichTextString richTextString = poiCell.getRichStringCellValue();
+ String rawValue = richTextString.getString();
+
+ System.out.println("KeepSpaceStringConverter - POI原始数据: '" + rawValue + "'");
+ System.out.println("KeepSpaceStringConverter - POI数据长度: " + rawValue.length());
+
+ // 检查是否包含前后空格
+ if (!rawValue.equals(rawValue.trim())) {
+ System.out.println("KeepSpaceStringConverter - POI检测到前后空格!");
+ } else {
+ System.out.println("KeepSpaceStringConverter - POI没有检测到前后空格");
+ }
+
+ return rawValue;
+ }
+ }
+ } catch (NoSuchFieldException e) {
+ // 继续尝试下一个字段名
+ continue;
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ System.out.println("KeepSpaceStringConverter - 反射获取ReadCellData失败: " + e.getMessage());
+ }
+
+ // 如果反射失败,使用EasyExcel的方法
+ ReadCellData> cellData = context.getReadCellData();
+ String easyExcelValue = cellData.getStringValue();
+ System.out.println("KeepSpaceStringConverter - EasyExcel数据: '" + easyExcelValue + "'");
+ System.out.println("KeepSpaceStringConverter - EasyExcel数据长度: " + easyExcelValue.length());
+
+ return easyExcelValue;
+ }
+
+ @Override
+ public WriteCellData> convertToExcelData(WriteConverterContext context) {
+ return new WriteCellData<>(context.getValue());
+ }
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/poi/DynamicDataMapping.java b/ruoyi-common/src/main/java/com/ruoyi/common/poi/DynamicDataMapping.java
new file mode 100644
index 0000000..ac96a91
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/poi/DynamicDataMapping.java
@@ -0,0 +1,61 @@
+package com.ruoyi.common.poi;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 存放需要导出的动态数据
+ * @Author susu
+ * @Date 2024/2/19
+ */
+@Data
+public class DynamicDataMapping {
+
+ private String dataId;
+ private List