Explorar el Código

Merge branch 'master' of https://gogs.dev.dazesoft.cn/dtm_organization/dtm

# Conflicts:
#	pom.xml
Zhu Jiaqi hace 2 meses
padre
commit
f86799512f
Se han modificado 35 ficheros con 151 adiciones y 136 borrados
  1. 0 0
      data/storage/入库数据/2025采购入库单_1119.xlsx
  2. 0 0
      data/storage/入库数据/产品资料.xlsx
  3. 0 0
      data/storage/半成品组装/半成品匹配成品编码明细.xlsx
  4. 0 0
      data/storage/半成品组装/组装明细 - 1107.xlsx
  5. 0 0
      data/storage/销售数据/2025年订单数据.xlsx
  6. 2 1
      dtm-admin/pom.xml
  7. 1 1
      dtm-admin/src/main/java/com/dtm/web/controller/storage/InventoryController.java
  8. 1 1
      dtm-admin/src/main/java/com/dtm/web/controller/storage/ProductController.java
  9. 1 1
      dtm-admin/src/main/java/com/dtm/web/controller/storage/RiskController.java
  10. 1 1
      dtm-admin/src/main/java/com/dtm/web/controller/storage/SemiProductController.java
  11. 1 1
      dtm-admin/src/main/java/com/dtm/web/controller/storage/StorageAgentController.java
  12. 1 1
      dtm-admin/src/main/java/com/dtm/web/controller/storage/StorageUploadController.java
  13. 2 2
      dtm-admin/src/main/resources/application.yml
  14. 2 2
      dtm-admin/src/main/resources/logback.xml
  15. 0 65
      dtm-order/pom.xml
  16. 0 40
      dtm-storage/pom.xml
  17. 10 0
      dtm-system/pom.xml
  18. 0 0
      dtm-system/src/main/java/com/dtm/storage/config/StorageSettings.java
  19. 0 0
      dtm-system/src/main/java/com/dtm/storage/model/AgentChatMessage.java
  20. 0 0
      dtm-system/src/main/java/com/dtm/storage/model/AgentChatRequest.java
  21. 0 0
      dtm-system/src/main/java/com/dtm/storage/model/AssemblyRecord.java
  22. 0 0
      dtm-system/src/main/java/com/dtm/storage/model/ProductInfo.java
  23. 0 0
      dtm-system/src/main/java/com/dtm/storage/model/PurchaseRecord.java
  24. 0 0
      dtm-system/src/main/java/com/dtm/storage/model/SalesRecord.java
  25. 0 0
      dtm-system/src/main/java/com/dtm/storage/service/InventoryService.java
  26. 119 0
      dtm-system/src/main/java/com/dtm/storage/service/InventoryUploadTaskService.java
  27. 0 0
      dtm-system/src/main/java/com/dtm/storage/service/ProductService.java
  28. 0 0
      dtm-system/src/main/java/com/dtm/storage/service/RiskService.java
  29. 0 0
      dtm-system/src/main/java/com/dtm/storage/service/SemiProductService.java
  30. 1 1
      dtm-system/src/main/java/com/dtm/storage/service/StorageAgentService.java
  31. 9 4
      dtm-system/src/main/java/com/dtm/storage/service/StorageDataLoader.java
  32. 0 0
      dtm-system/src/main/java/com/dtm/storage/service/StorageUploadService.java
  33. 0 0
      dtm-system/src/main/java/com/dtm/storage/util/ExcelSheet.java
  34. 0 0
      dtm-system/src/main/java/com/dtm/storage/util/ExcelUtils.java
  35. 0 15
      pom.xml

+ 0 - 0
dtm-storage/data/入库数据/2025采购入库单_1119.xlsx → data/storage/入库数据/2025采购入库单_1119.xlsx


+ 0 - 0
dtm-storage/data/入库数据/产品资料.xlsx → data/storage/入库数据/产品资料.xlsx


+ 0 - 0
dtm-storage/data/半成品组装/半成品匹配成品编码明细.xlsx → data/storage/半成品组装/半成品匹配成品编码明细.xlsx


+ 0 - 0
dtm-storage/data/半成品组装/组装明细 - 1107.xlsx → data/storage/半成品组装/组装明细 - 1107.xlsx


+ 0 - 0
dtm-storage/data/销售数据/2025年订单数据.xlsx → data/storage/销售数据/2025年订单数据.xlsx


+ 2 - 1
dtm-admin/pom.xml

@@ -50,9 +50,10 @@
             <artifactId>dtm-framework</artifactId>
         </dependency>
 
+        <!-- 系统模块(包含 storage / order 服务) -->
         <dependency>
             <groupId>com.dtm</groupId>
-            <artifactId>dtm-storage</artifactId>
+            <artifactId>dtm-system</artifactId>
         </dependency>
 
         <dependency>

+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/controller/InventoryController.java → dtm-admin/src/main/java/com/dtm/web/controller/storage/InventoryController.java

@@ -1,4 +1,4 @@
-package com.dtm.storage.controller;
+package com.dtm.web.controller.storage;
 
 import com.dtm.common.annotation.Anonymous;
 import com.dtm.common.core.domain.AjaxResult;

+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/controller/ProductController.java → dtm-admin/src/main/java/com/dtm/web/controller/storage/ProductController.java

@@ -1,4 +1,4 @@
-package com.dtm.storage.controller;
+package com.dtm.web.controller.storage;
 
 import com.dtm.common.annotation.Anonymous;
 import com.dtm.common.core.domain.AjaxResult;

+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/controller/RiskController.java → dtm-admin/src/main/java/com/dtm/web/controller/storage/RiskController.java

@@ -1,4 +1,4 @@
-package com.dtm.storage.controller;
+package com.dtm.web.controller.storage;
 
 import com.dtm.common.annotation.Anonymous;
 import com.dtm.common.core.domain.AjaxResult;

+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/controller/SemiProductController.java → dtm-admin/src/main/java/com/dtm/web/controller/storage/SemiProductController.java

@@ -1,4 +1,4 @@
-package com.dtm.storage.controller;
+package com.dtm.web.controller.storage;
 
 import com.dtm.common.annotation.Anonymous;
 import com.dtm.common.core.domain.AjaxResult;

+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/controller/StorageAgentController.java → dtm-admin/src/main/java/com/dtm/web/controller/storage/StorageAgentController.java

@@ -1,4 +1,4 @@
-package com.dtm.storage.controller;
+package com.dtm.web.controller.storage;
 
 import com.dtm.common.annotation.Anonymous;
 import com.dtm.common.core.domain.AjaxResult;

+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/controller/StorageUploadController.java → dtm-admin/src/main/java/com/dtm/web/controller/storage/StorageUploadController.java

@@ -1,4 +1,4 @@
-package com.dtm.storage.controller;
+package com.dtm.web.controller.storage;
 
 import com.dtm.common.annotation.Anonymous;
 import com.dtm.common.core.domain.AjaxResult;

+ 2 - 2
dtm-admin/src/main/resources/application.yml

@@ -111,13 +111,13 @@ flask:
 # 仓储分析数据目录
 storage:
   data:
-    path: ../dtm-storage/data
+    path: ../data/storage
 
 # Zhipu AI (GLM) configuration
 zhipu:
   api-key: 00105ddcf726404d98bba234f46965c6.suVDfihhEahnWDFh
   base-url: https://open.bigmodel.cn/api/paas/v4/chat/completions
-  model: glm-4.7-flash
+  model: GLM-4-Flash
   temperature: 0.4
   max-tokens: 1024
   timeout-ms: 30000

+ 2 - 2
dtm-admin/src/main/resources/logback.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <!-- 日志存放路径 -->
-	<property name="log.path" value="/home/ruoyi/logs" />
+	<property name="log.path" value="${user.dir}/logs" />
     <!-- 日志输出格式 -->
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
@@ -90,4 +90,4 @@
     <logger name="sys-user" level="info">
         <appender-ref ref="sys-user"/>
     </logger>
-</configuration> 
+</configuration> 

+ 0 - 65
dtm-order/pom.xml

@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dtm_java</artifactId>
-        <groupId>com.dtm</groupId>
-        <version>3.9.0</version>
-    </parent>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>dtm-order</artifactId>
-
-    <description>
-        订单监测模块
-    </description>
-
-    <dependencies>
-        <!-- 通用工具与注解 -->
-        <dependency>
-            <groupId>com.dtm</groupId>
-            <artifactId>dtm-common</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>javax.annotation</groupId>
-            <artifactId>javax.annotation-api</artifactId>
-            <version>1.3.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-csv</artifactId>
-            <version>1.10.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 40
dtm-storage/pom.xml

@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dtm_java</artifactId>
-        <groupId>com.dtm</groupId>
-        <version>3.9.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>dtm-storage</artifactId>
-
-    <description>
-        ²Ö´¢¿â´æ·ÖÎöÄ£¿é
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.dtm</groupId>
-            <artifactId>dtm-common</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

+ 10 - 0
dtm-system/pom.xml

@@ -45,6 +45,16 @@
             <version>1.3.2</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/config/StorageSettings.java → dtm-system/src/main/java/com/dtm/storage/config/StorageSettings.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/model/AgentChatMessage.java → dtm-system/src/main/java/com/dtm/storage/model/AgentChatMessage.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/model/AgentChatRequest.java → dtm-system/src/main/java/com/dtm/storage/model/AgentChatRequest.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/model/AssemblyRecord.java → dtm-system/src/main/java/com/dtm/storage/model/AssemblyRecord.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/model/ProductInfo.java → dtm-system/src/main/java/com/dtm/storage/model/ProductInfo.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/model/PurchaseRecord.java → dtm-system/src/main/java/com/dtm/storage/model/PurchaseRecord.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/model/SalesRecord.java → dtm-system/src/main/java/com/dtm/storage/model/SalesRecord.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/service/InventoryService.java → dtm-system/src/main/java/com/dtm/storage/service/InventoryService.java


+ 119 - 0
dtm-system/src/main/java/com/dtm/storage/service/InventoryUploadTaskService.java

@@ -0,0 +1,119 @@
+package com.dtm.storage.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.time.Instant;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+@Service
+public class InventoryUploadTaskService {
+    private final StorageUploadService uploadService;
+    private final ConcurrentMap<String, TaskRecord> tasks = new ConcurrentHashMap<>();
+
+    public InventoryUploadTaskService(StorageUploadService uploadService) {
+        this.uploadService = uploadService;
+    }
+
+    public Map<String, Object> submit(MultipartFile purchaseFile,
+                                      MultipartFile salesFile,
+                                      MultipartFile assemblyFile,
+                                      MultipartFile productFile,
+                                      MultipartFile semiMappingFile) {
+        String taskId = UUID.randomUUID().toString().replace("-", "");
+        TaskRecord record = new TaskRecord(taskId);
+        tasks.put(taskId, record);
+
+        runTask(record, purchaseFile, salesFile, assemblyFile, productFile, semiMappingFile);
+        return record.toMap();
+    }
+
+    public Map<String, Object> getTask(String taskId) {
+        TaskRecord record = tasks.get(taskId);
+        return record == null ? null : record.toMap();
+    }
+
+    private void runTask(TaskRecord record,
+                         MultipartFile purchaseFile,
+                         MultipartFile salesFile,
+                         MultipartFile assemblyFile,
+                         MultipartFile productFile,
+                         MultipartFile semiMappingFile) {
+        record.status = "running";
+        record.message = "文件已上传,正在处理库存数据";
+        record.startedAt = Instant.now().toString();
+        try {
+            Map<String, Object> result = uploadService.uploadFiles(
+                    purchaseFile,
+                    salesFile,
+                    assemblyFile,
+                    productFile,
+                    semiMappingFile
+            );
+            record.status = "success";
+            record.message = "库存数据处理完成";
+            record.result = result;
+            record.count = parseCount(result);
+            record.files = result == null ? null : result.get("files");
+        } catch (Exception e) {
+            record.status = "failed";
+            record.message = e.getMessage() == null ? "库存数据处理失败" : e.getMessage();
+        } finally {
+            record.finishedAt = Instant.now().toString();
+        }
+    }
+
+    private Integer parseCount(Map<String, Object> result) {
+        if (result == null) {
+            return 0;
+        }
+        Object countObj = result.get("count");
+        if (countObj instanceof Number) {
+            return ((Number) countObj).intValue();
+        }
+        if (countObj instanceof String) {
+            try {
+                return Integer.parseInt(((String) countObj).trim());
+            } catch (NumberFormatException ignored) {
+            }
+        }
+        return 0;
+    }
+
+    private static class TaskRecord {
+        private final String taskId;
+        private final String createdAt;
+        private volatile String startedAt;
+        private volatile String finishedAt;
+        private volatile String status;
+        private volatile String message;
+        private volatile Map<String, Object> result;
+        private volatile Integer count;
+        private volatile Object files;
+
+        private TaskRecord(String taskId) {
+            this.taskId = taskId;
+            this.createdAt = Instant.now().toString();
+            this.status = "pending";
+            this.message = "文件已上传,等待后台处理";
+        }
+
+        private Map<String, Object> toMap() {
+            Map<String, Object> data = new LinkedHashMap<>();
+            data.put("taskId", taskId);
+            data.put("status", status);
+            data.put("message", message);
+            data.put("createdAt", createdAt);
+            data.put("startedAt", startedAt);
+            data.put("finishedAt", finishedAt);
+            data.put("result", result);
+            data.put("count", count == null ? 0 : count);
+            data.put("files", files);
+            return data;
+        }
+    }
+}

+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/service/ProductService.java → dtm-system/src/main/java/com/dtm/storage/service/ProductService.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/service/RiskService.java → dtm-system/src/main/java/com/dtm/storage/service/RiskService.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/service/SemiProductService.java → dtm-system/src/main/java/com/dtm/storage/service/SemiProductService.java


+ 1 - 1
dtm-storage/src/main/java/com/dtm/storage/service/StorageAgentService.java → dtm-system/src/main/java/com/dtm/storage/service/StorageAgentService.java

@@ -51,7 +51,7 @@ public class StorageAgentService {
     @Value("${zhipu.base-url:https://open.bigmodel.cn/api/paas/v4/chat/completions}")
     private String baseUrl;
 
-    @Value("${zhipu.model:glm-4.7-flash}")
+    @Value("${zhipu.model:GLM-4-Flash}")
     private String model;
 
     @Value("${zhipu.temperature:0.4}")

+ 9 - 4
dtm-storage/src/main/java/com/dtm/storage/service/StorageDataLoader.java → dtm-system/src/main/java/com/dtm/storage/service/StorageDataLoader.java

@@ -323,14 +323,19 @@ public class StorageDataLoader {
             }
         }
 
-        Path direct = Paths.get(System.getProperty("user.dir"), "dtm-storage", "data");
+        Path direct = Paths.get(System.getProperty("user.dir"), "data", "storage");
         if (Files.exists(direct)) {
             return direct;
         }
 
-        Path parent = Paths.get(System.getProperty("user.dir"), "..", "dtm-storage", "data").normalize();
-        if (Files.exists(parent)) {
-            return parent;
+        Path legacy = Paths.get(System.getProperty("user.dir"), "dtm-storage", "data");
+        if (Files.exists(legacy)) {
+            return legacy;
+        }
+
+        Path legacyParent = Paths.get(System.getProperty("user.dir"), "..", "dtm-storage", "data").normalize();
+        if (Files.exists(legacyParent)) {
+            return legacyParent;
         }
 
         Path fallback = Paths.get(System.getProperty("user.dir"), "data");

+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/service/StorageUploadService.java → dtm-system/src/main/java/com/dtm/storage/service/StorageUploadService.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/util/ExcelSheet.java → dtm-system/src/main/java/com/dtm/storage/util/ExcelSheet.java


+ 0 - 0
dtm-storage/src/main/java/com/dtm/storage/util/ExcelUtils.java → dtm-system/src/main/java/com/dtm/storage/util/ExcelUtils.java


+ 0 - 15
pom.xml

@@ -211,19 +211,6 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
-            <!-- 通用工具-->
-<!--            <dependency>-->
-<!--                <groupId>com.dtm</groupId>-->
-<!--                <artifactId>dtm-order</artifactId>-->
-<!--                <version>${ruoyi.version}</version>-->
-<!--            </dependency>-->
-
-            <dependency>
-                <groupId>com.dtm</groupId>
-                <artifactId>dtm-storage</artifactId>
-                <version>${ruoyi.version}</version>
-            </dependency>
-
             <dependency>
                 <groupId>com.dtm</groupId>
                 <artifactId>dtm-common</artifactId>
@@ -237,8 +224,6 @@
         <module>dtm-admin</module>
         <module>dtm-framework</module>
         <module>dtm-system</module>
-<!--        <module>dtm-order</module>-->
-        <module>dtm-storage</module>
         <module>dtm-quartz</module>
         <module>dtm-generator</module>
         <module>dtm-common</module>