diff --git a/.gitignore b/.gitignore
index 9154f4c..c2dc098 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,63 @@
-# ---> Java
-# Compiled class file
-*.class
+######################################################################
+# Build Tools
-# Log file
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### JRebel ###
+rebel.xml
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Build and Release Folders
+bin-debug/
+bin-release/
+[Oo]bj/
+[Bb]in/
+
+# Executables
+*.swf
+*.air
+*.ipa
+*.apk
+
+######################################################################
+# Others
*.log
+*.xml.versionsBackup
+*.swp
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-replay_pid*
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml
+# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
+# should NOT be excluded as they contain compiler settings and other important
+# information for Eclipse / Flash Builder.
diff --git a/doc/分离打包操作步骤.md b/doc/分离打包操作步骤.md
new file mode 100644
index 0000000..bf5e021
--- /dev/null
+++ b/doc/分离打包操作步骤.md
@@ -0,0 +1,145 @@
+# RuoYi 项目分离打包(Thin JAR)操作步骤(Windows/Maven)
+
+本文档说明如何将 `ruoyi-admin` 模块配置为“分离打包(thin jar)”,即将应用 jar 与第三方依赖分离:应用 jar 位于 `dist` 目录,依赖位于 `dist/lib` 目录。这样首次部署上传完整包,后续升级只需替换应用 jar 即可,部署效率更高。
+
+## 1. 背景与目标
+- 背景:Spring Boot 默认使用 `spring-boot-maven-plugin` 的 `repackage` 打出“fat jar”,依赖被打入 `BOOT-INF/lib`,包体较大。
+- 目标:禁用 `repackage`,通过 `maven-dependency-plugin` 将依赖复制到外部 `lib` 目录;借助 `maven-jar-plugin` 在 Manifest 写入 `Class-Path` 指向 `lib/`,让 `java -jar` 能直接加载外部依赖。
+
+## 2. 关键配置改动(已完成)
+修改文件:`ruoyi-admin/pom.xml`
+
+### 2.1 输出目录属性
+```xml
+
+
+ ${project.build.directory}/dist
+
+
+```
+原因:统一控制产物输出到 `target/dist`,便于部署与运维。
+
+### 2.2 禁用 Spring Boot fat jar
+```xml
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.1.RELEASE
+
+ true
+ true
+
+
+```
+原因:避免将依赖打入应用包,转为外部依赖的运行方式。
+
+### 2.3 复制运行时依赖到 `dist/lib`
+```xml
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+ ${outDir}/lib
+ false
+ false
+ runtime
+
+
+
+
+```
+原因:仅复制运行期所需依赖至 `dist/lib`,与应用 jar 解耦,后续升级更轻量。
+
+### 2.4 生成“瘦身 jar”并写入 Manifest
+```xml
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.3.0
+
+ ${outDir}
+
+
+ com.ruoyi.RuoYiApplication
+ true
+ lib/
+
+
+
+
+```
+原因:
+- 指定 `Main-Class` 确保 `java -jar` 可直接启动。
+- 写入 `Class-Path` 指向 `lib/`,JVM 自动加载外部依赖,无需手动 `-cp`。
+- 输出到 `dist`,形成 `dist/ruoyi-admin.jar` 与 `dist/lib/*` 的部署结构。
+
+## 3. 打包步骤(Windows)
+- 在项目根目录执行:
+```powershell
+mvn clean package -pl ruoyi-admin -am
+```
+- 参数解释:
+ - `-pl ruoyi-admin`:仅打包入口模块;
+ - `-am`:自动构建其依赖模块。
+
+完成后产物位于:
+- 应用包:`ruoyi-admin/target/dist/ruoyi-admin.jar`
+- 依赖库:`ruoyi-admin/target/dist/lib/*`
+
+## 4. 运行与部署
+- 本地启动(在 `dist` 目录执行):
+```powershell
+cd ruoyi-admin\target\dist
+java -jar ruoyi-admin.jar
+```
+- 常用参数:
+ - 指定端口:`java -jar ruoyi-admin.jar --server.port=8011`
+ - 指定环境:`java -jar ruoyi-admin.jar --spring.profiles.active=prod`
+ - JVM 内存:`java -Xms512m -Xmx1024m -jar ruoyi-admin.jar`
+
+- 部署建议:将整个 `dist` 目录复制到服务器。例如 `/opt/ruoyi-admin/dist`,保持结构:
+```
+dist/
+ ├─ ruoyi-admin.jar
+ └─ lib/
+ ├─ spring-*.jar
+ ├─ mybatis-*.jar
+ └─ ...
+```
+
+## 5. 升级与回滚
+- 升级:若仅业务代码变更(依赖不变),直接替换 `ruoyi-admin.jar`,无需动 `lib/`。
+- 依赖变更:同时替换 `lib/` 中对应的 jar。
+- 回滚:保留上一个版本的 `dist` 备份,出现问题时整体替换目录。
+
+## 6. 常见问题与排查
+- 启动报错“找不到或无法加载主类”:
+ - 检查 Manifest 是否包含 `Main-Class: com.ruoyi.RuoYiApplication`。
+ - 确认 jar 输出在 `dist`(非默认 `target`)。
+- `ClassNotFoundException`:
+ - 确认 `lib/` 目录存在并非空;Manifest 中 `Class-Path` 正确写入 `lib/` 前缀。
+- 端口占用:
+ - 使用 `--server.port=XXXX` 指定新端口或释放占用端口。
+- SQLServer 驱动:
+ - 该驱动会被复制到 `lib/`,无需额外操作;配置按 `application.yml` 正常生效。
+
+## 7. 可选增强(资源分离)
+若静态资源或 MyBatis XML 较多,可将资源也分离到外部目录(进一步缩小应用 jar 大小)。
+- 做法:使用 `maven-resources-plugin` 将 `src/main/resources` 中的资源复制到 `dist/resources`;
+- 运行时通过 `--spring.config.additional-location` 或自定义类路径加载资源;
+- 注意:此举需要评估资源加载路径与框架期望,默认不启用以避免影响现有行为。
+
+## 8. 验证清单
+- 打包成功,存在 `dist/ruoyi-admin.jar` 与 `dist/lib/*`。
+- 直接运行 `java -jar ruoyi-admin.jar` 正常启动(端口默认 `application.yml` 配置)。
+- 在只替换 `ruoyi-admin.jar` 的情况下,功能正常且无需重新上传依赖。
+
+---
+维护者备注:本文档面向 Windows 环境与 Maven 构建;若需 Linux 服务化(systemd)、日志目录与数据目录外置等扩展,请在此基础上追加部署规范。
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/port/service/impl/SendTimerServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/port/service/impl/SendTimerServiceImpl.java
index 35e25b5..922e391 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/port/service/impl/SendTimerServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/port/service/impl/SendTimerServiceImpl.java
@@ -30,6 +30,8 @@ import com.ruoyi.project.in.trayCodeMsg.domain.TrayCodeMsg;
import com.ruoyi.project.in.trayCodeMsg.domain.TrayCodeMsgFinish;
import com.ruoyi.project.in.trayCodeMsg.mapper.TrayCodeMsgMapper;
import com.ruoyi.project.out.outStock.domain.OutStockout;
+import com.ruoyi.project.out.outStock.domain.OutStockoutFinish;
+import com.ruoyi.project.out.outStock.mapper.OutStockoutFinishMapper;
import com.ruoyi.project.out.outStock.service.impl.OutStockoutServiceImpl;
import com.ruoyi.web.port.domain.*;
import com.ruoyi.project.bas.deliveryRecord.domain.DeliveryRecord;
@@ -81,6 +83,9 @@ public class SendTimerServiceImpl implements ISendTimerService {
@Autowired
private OutStockoutServiceImpl outStockoutServiceImpl;
+ @Autowired
+ private OutStockoutFinishMapper outStockoutFinishMapper;
+
//创建值为22的抽样出库枚举
private final String SAMPLE_OUT_STOCK = "22";
@@ -1111,15 +1116,11 @@ public class SendTimerServiceImpl implements ISendTimerService {
barCodes.add(barCode);
qty = qty.add(new BigDecimal(interfaceReturnData.getStockDetailQuantity()));
}
-
}
- OutStockout outStockout = outStockoutServiceImpl.selectOutStockoutByStockoutId(fill_no);
- if (outStockout.getOutType().equals(SAMPLE_OUT_STOCK)){
- if (!trayCodes.isEmpty()) {
- inReturn.setTrayCode(trayCodes.get(0));
- }else {
- inReturn.setTrayCode("notFoundTrayCode");
- }
+ if (!trayCodes.isEmpty()) {
+ inReturn.setTrayCode(trayCodes.get(0));
+ }else {
+ inReturn.setTrayCode("notFoundTrayCode");
}
inReturn.setFromWH(interfaceReturnDataList.get(0).getFromWH());
inReturn.setToWH(interfaceReturnDataList.get(0).getToWH());
diff --git a/ruoyi-admin/src/test/java/com/ruoyi/web/port/service/impl/MapperTest.java b/ruoyi-admin/src/test/java/com/ruoyi/web/port/service/impl/MapperTest.java
index 282af56..6170f51 100644
--- a/ruoyi-admin/src/test/java/com/ruoyi/web/port/service/impl/MapperTest.java
+++ b/ruoyi-admin/src/test/java/com/ruoyi/web/port/service/impl/MapperTest.java
@@ -39,7 +39,7 @@ public class MapperTest {
@Test
public void testUserMapper() {
// 测试内容
- sendTimerService.interfaceReturnDataOut("1","1");
+// sendTimerService.interfaceReturnDataOut("1","1");
}