diff --git a/pom.xml b/pom.xml
index a0c10e3..4e254c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
smart
3.8.9
jar
-
+
zg
http://www.zg.vip
@@ -24,6 +24,9 @@
UTF-8
UTF-8
1.8
+ 1.8
+ 1.8
+
3.1.1
1.4.7
2.0.53
@@ -34,7 +37,8 @@
2.3.3
3.0.0
4.1.2
- 6.6.5
+
+ 5.8.5
2.3
9.0.102
@@ -82,11 +86,13 @@
-
-
-
-
-
+
@@ -218,6 +224,7 @@
poi-ooxml
${poi.version}
+
io.minio
@@ -274,21 +281,6 @@
ZMPrinter
4.4.7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
org.projectlombok
@@ -307,40 +299,44 @@
com.zg.SmartApplication
+
+
org.apache.maven.plugins
maven-compiler-plugin
+ 3.8.1
- 9
- 9
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+
-
-
- public
- aliyun nexus
- https://maven.aliyun.com/repository/public
-
- true
-
-
-
+
+
+ public
+ aliyun nexus
+ https://maven.aliyun.com/repository/public
+
+ true
+
+
+
-
-
- public
- aliyun nexus
- https://maven.aliyun.com/repository/public
-
- true
-
-
- false
-
-
-
+
+
+ public
+ aliyun nexus
+ https://maven.aliyun.com/repository/public
+
+ true
+
+
+ false
+
+
+
-
\ No newline at end of file
+
diff --git a/src/main/java/com/zg/framework/config/SecurityConfig.java b/src/main/java/com/zg/framework/config/SecurityConfig.java
index 5511de0..cd5729b 100644
--- a/src/main/java/com/zg/framework/config/SecurityConfig.java
+++ b/src/main/java/com/zg/framework/config/SecurityConfig.java
@@ -116,7 +116,7 @@ public class SecurityConfig
"/captchaImage",
"/user/**",
"/stat/**",
- "/query/jh/**",
+// "/query/jh/**",
"/wisdom/signature/**",
"/system/config/**",
"/AutoInventory/**",
@@ -124,12 +124,10 @@ public class SecurityConfig
"/photo/**",
"/wisdom/stock/**",
"/system/media/**",
- "/wisdom/**",
"/mock/**",
"/information/device/**",
"/MatchScan/**",
"/wisdom/task/**",
-// "/wisdom/stock/**",
// "/information/materialtype/**",
// "/information/warehousingtype/**",
// "/information/warehouseinfo/**",
diff --git a/src/main/java/com/zg/project/wisdom/controller/MediaUploadController.java b/src/main/java/com/zg/project/wisdom/controller/MediaUploadController.java
index a596f23..eba9a48 100644
--- a/src/main/java/com/zg/project/wisdom/controller/MediaUploadController.java
+++ b/src/main/java/com/zg/project/wisdom/controller/MediaUploadController.java
@@ -1,252 +1,3 @@
-//package com.zg.project.wisdom.controller;
-//
-//import com.zg.framework.web.domain.AjaxResult;
-//import org.apache.commons.lang3.StringUtils;
-//import org.springframework.http.MediaType;
-//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-//import org.springframework.util.unit.DataSize;
-//import org.springframework.web.bind.annotation.*;
-//import org.springframework.web.multipart.MultipartFile;
-//
-//import javax.annotation.Resource;
-//import java.io.IOException;
-//import java.io.InputStream;
-//import java.io.OutputStream;
-//import java.nio.file.*;
-//import java.util.*;
-//import java.util.concurrent.CompletableFuture;
-//import java.util.concurrent.Semaphore;
-//
-///**
-// * 多媒体上传控制器(支持图片与视频并行落盘)
-// */
-//@RestController
-//@RequestMapping("/system/media")
-//public class MediaUploadController {
-//
-// /** 根目录(如需配置化,可改为从 application.yml 读取) */
-// private static final Path ROOT_DIR = Paths.get("D:/uploads");
-//
-// /** 本次上传总大小限制:100MB */
-// private static final long MAX_TOTAL_BYTES = DataSize.ofMegabytes(100).toBytes();
-//
-// /** 图片/视频数量限制 */
-// private static final int MAX_IMAGE_COUNT = 100;
-// private static final int MAX_VIDEO_COUNT = 5;
-//
-// /** 单次请求内的并发上限(建议 2~4;默认 4) */
-// private static final int PER_REQUEST_CONCURRENCY = 4;
-//
-// /** 注入线程池 Bean:threadPoolTaskExecutor */
-// @Resource(name = "threadPoolTaskExecutor")
-// private ThreadPoolTaskExecutor executor;
-//
-// /**
-// * 上传接口
-// */
-// @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-// public AjaxResult upload(
-// @RequestParam("username") String username,
-// @RequestParam("nameBase") String nameBase,
-// @RequestParam(value = "imageNames", required = false) String imageNames,
-// @RequestParam(value = "videoNames", required = false) String videoNames,
-// @RequestPart(value = "images", required = false) MultipartFile[] images,
-// @RequestPart(value = "videos", required = false) MultipartFile[] videos
-// ) {
-// try {
-// // 1. 基础校验
-// if (StringUtils.isBlank(username)) {
-// return AjaxResult.error("username 不能为空");
-// }
-// if (StringUtils.isBlank(nameBase)) {
-// return AjaxResult.error("nameBase(命名信息)不能为空");
-// }
-//
-// int imageCount = images == null ? 0 : images.length;
-// int videoCount = videos == null ? 0 : videos.length;
-//
-// if (imageCount == 0 && videoCount == 0) {
-// return AjaxResult.error("请至少上传一张图片或一段视频");
-// }
-// if (imageCount > MAX_IMAGE_COUNT) {
-// return AjaxResult.error("图片最多支持上传 " + MAX_IMAGE_COUNT + " 张");
-// }
-// if (videoCount > MAX_VIDEO_COUNT) {
-// return AjaxResult.error("视频最多支持上传 " + MAX_VIDEO_COUNT + " 段");
-// }
-//
-// // 2. 总体积校验
-// long totalBytes = 0L;
-// if (images != null) for (MultipartFile f : images) totalBytes += safeSize(f);
-// if (videos != null) for (MultipartFile f : videos) totalBytes += safeSize(f);
-// if (totalBytes > MAX_TOTAL_BYTES) {
-// return AjaxResult.error("本次上传总大小超过 100 MB(约 " + (totalBytes / 1024 / 1024) + " MB)");
-// }
-//
-// // 3. 目标目录
-// String base = sanitize(nameBase);
-// String user = sanitize(username);
-// String folderName = base + "_" + user;
-// Path targetDir = ROOT_DIR.resolve(folderName).normalize();
-// if (!targetDir.startsWith(ROOT_DIR)) {
-// return AjaxResult.error("非法路径");
-// }
-// Files.createDirectories(targetDir);
-//
-// // 4. 解析前端传递的文件名
-// List imageNameList = new ArrayList<>();
-// List videoNameList = new ArrayList<>();
-//
-// if (StringUtils.isNotBlank(imageNames)) {
-// try {
-// imageNameList = Arrays.asList(imageNames.split(","));
-// } catch (Exception e) {
-// // 如果解析失败,使用空列表
-// imageNameList = new ArrayList<>();
-// }
-// }
-// if (StringUtils.isNotBlank(videoNames)) {
-// try {
-// videoNameList = Arrays.asList(videoNames.split(","));
-// } catch (Exception e) {
-// // 如果解析失败,使用空列表
-// videoNameList = new ArrayList<>();
-// }
-// }
-//
-// // 5. 并发落盘任务
-// int seq = 1;
-// List>> futures = new ArrayList<>();
-// Semaphore semaphore = new Semaphore(PER_REQUEST_CONCURRENCY);
-//
-// // 5.1 图片处理
-// if (images != null) {
-// for (int i = 0; i < images.length; i++) {
-// MultipartFile img = images[i];
-// if (img == null || img.isEmpty()) continue;
-//
-// // 使用前端传递的文件名,如果没有则从原始文件名获取扩展名
-// String originalName = i < imageNameList.size() ? imageNameList.get(i) : img.getOriginalFilename();
-// String ext = getExtension(originalName).toLowerCase(Locale.ROOT);
-// if (StringUtils.isBlank(ext)) {
-// ext = "jpg"; // 图片默认扩展名
-// }
-//
-// final String filename = String.format("%s%s%03d.%s", base, user, seq++, ext);
-// final Path dest = targetDir.resolve(filename).normalize();
-//
-// futures.add(CompletableFuture.supplyAsync(() -> {
-// acquire(semaphore);
-// try { return saveOne(img, dest, "image"); }
-// finally { semaphore.release(); }
-// }, executor));
-// }
-// }
-//
-// // 5.2 视频处理
-// if (videos != null) {
-// for (int i = 0; i < videos.length; i++) {
-// MultipartFile vid = videos[i];
-// if (vid == null || vid.isEmpty()) continue;
-//
-// // 使用前端传递的文件名,如果没有则从原始文件名获取扩展名
-// String originalName = i < videoNameList.size() ? videoNameList.get(i) : vid.getOriginalFilename();
-// String ext = getExtension(originalName).toLowerCase(Locale.ROOT);
-// if (StringUtils.isBlank(ext)) {
-// ext = "mp4"; // 视频默认扩展名
-// }
-//
-// final String filename = String.format("%s%s%03d.%s", base, user, seq++, ext);
-// final Path dest = targetDir.resolve(filename).normalize();
-//
-// futures.add(CompletableFuture.supplyAsync(() -> {
-// acquire(semaphore);
-// try { return saveOne(vid, dest, "video"); }
-// finally { semaphore.release(); }
-// }, executor));
-// }
-// }
-//
-// // 6. 等待完成并返回
-// List