202504-Wms-MengYang/202504-Wms-MengYang-tp/wms_serve_mengyang/CLAUDE.md

9.5 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

项目概述

这是宝应梦阳托盘库WMS系统的Spring Boot后端服务专门处理托盘式仓库的入库、出库、库存管理和WCS系统集成。基于Spring Boot 3.3.5和Java 21开发采用MyBatis-Plus进行数据持久化支持与WCS设备系统的深度集成。

项目特点

TP托盘库版本特性

  • 专为托盘存储优化的算法策略
  • 支持大型货物的托盘化存储管理
  • 与BOX料箱库版本在业务逻辑上有所差异
  • 数据库schema针对托盘库场景设计

开发环境设置

基本构建命令

# 进入项目目录
cd 202504-Wms-MengYang-tp/wms_serve_mengyang

# 编译项目
mvn clean compile

# 打包项目
mvn clean package

# 运行项目
mvn spring-boot:run

# 使用Maven Wrapper
./mvnw spring-boot:run

# 跳过测试运行(项目配置默认跳过测试)
mvn clean package -Dmaven.test.skip=true

运行环境配置

数据库配置

  • 本地开发MySQL localhost:3306/wms_mengyang_tp注意使用tp数据库
  • 生产环境MySQL 10.18.58.21:3306/wms_yachi_nantong
  • 认证信息本地使用root/root生产使用user/user

应用配置

  • 服务端口12315
  • 应用名称wms_main
  • 文件上传限制单文件100MB总计1000MB
  • 当前配置:spring.profiles.active=online

Maven特殊配置

  • 项目默认跳过单元测试:maven-surefire-plugin.skip=true
  • 最终构建文件名:wms-box-server注意名称还是box-server但实际是tp版本
  • Java版本21 (source和target都是21)

核心架构

分层架构

系统采用标准的MVC三层架构

  • Controller层REST API接口包含mywms和wms两个模块
  • Service层业务逻辑层分为controller、business、api三个子模块
  • DAO层数据访问层使用MyBatis-Plus

核心业务模块

1. MyWMS核心控制器服务 (MyWmsControllerServiceImpl)

文件: src/main/java/com/wms_main/service/controller/serviceImpl/MyWmsControllerServiceImpl.java

核心功能:

  • 入库管理: createOrderIn() - 处理入库订单检查AGV锁定状态
  • 出库管理: createOrderOut() - 处理出库订单,执行深度策略分析
  • 库存查询: queryStock() - 按载具号/库位号查询库存
  • 入库口状态: queryAllowFeed() - 查询WCS和AGV状态
  • 出库口状态: queryCanOut() - 查询WCS和AGV状态

关键特征:

  • 防重复推送检查机制
  • AGV互锁机制防冲突
  • 深度策略自动分析
  • 完整异常处理流程

2. WCS API集成服务 (WcsApiServiceImpl)

文件: src/main/java/com/wms_main/service/api/serviceImpl/WcsApiServiceImpl.java

集成接口:

  • 堆垛机任务下发: sendStackerTask()
  • 载具释放控制: releaseVehicle()
  • 拣选任务管理: sendPickingTask()
  • 状态查询: queryCanFeed(), queryOutFeed()

⚠️ 重要: 当前WCS通信为调试模式实际HTTP调用被注释返回模拟数据

3. 任务控制服务 (TaskControllerServiceImpl)

文件: src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java

主要功能:

  • 入库任务请求: taskRequire()
  • 库位分配: choiceLocation()
  • 任务回馈: taskFeedback()
  • AGV锁定管理: lockAgv(), releaseAgv()

4. 深度策略服务 (IDepthStrategyService)

文件: src/main/java/com/wms_main/service/business/IDepthStrategyService.java

策略类型 (WmsDepthStrategyEnums):

  • DIRECT_OUT: 直接出库 (深度1)
  • SINGLE_TRANSFER: 单层移库 (深度2)
  • DOUBLE_TRANSFER: 双层移库 (深度3)
  • COMPLEX_TRANSFER: 复杂移库
  • NO_ACTION: 无需处理

5. AGV锁定服务 (IAgvLockService)

文件: src/main/java/com/wms_main/service/business/IAgvLockService.java

功能:

  • 单一入库口互锁
  • 超时锁定自动清理
  • 状态查询监控
  • 批量释放支持

数据库设计

核心数据表

  • t_app_order_in: 入库订单表
  • t_app_order_out: 出库订单表
  • t_app_stock: 库存信息表
  • t_app_task: WMS任务表
  • t_app_wcs_task: WCS任务表
  • t_app_agv_lock: AGV锁定表
  • t_app_location: 库位信息表
  • t_app_config: 系统配置表

MyBatis-Plus配置

  • 自动分页插件 (最大1000条)
  • 驼峰命名自动映射
  • 主键自动生成策略

API接口设计

MyWMS外部接口

控制器: src/main/java/com/wms_main/controller/mywms/MyWmsController.java

POST /mywms/orderIn      # 创建入库订单
POST /mywms/orderOut     # 创建出库订单  
POST /mywms/stock        # 查询库存信息
GET  /mywms/allowFeed    # 查询投料状态
GET  /mywms/allowOut     # 查询投料状态

测试文件: api-tests/MyWmsController.http

响应格式

{
  "success": true,
  "message": "操作成功",
  "data": {},
  "timestamp": "2024-01-01T12:00:00"
}

重要枚举类 (constant/enums/)

WMS业务枚举 (enums/wms/)

  • AppConfigKeyEnums - 系统配置项枚举
  • WmsDepthStrategyEnums - 深度策略枚举
  • WmsStockStatusEnums - 库存状态枚举
  • OrderStatusEnum - 订单状态枚举
  • WmsTaskTypeEnums - 任务类型枚举
  • WmsLocationTypeEnums - 货位类型枚举
  • WmsVehicleStatusEnums - 载具状态枚举

WCS集成枚举 (enums/wcs/)

  • WcsApiResponseCodeEnums - WCS API响应码
  • WcsStackerTaskTypeEnums - 堆垛机任务类型
  • WcsStackerTaskStatusEnums - 堆垛机任务状态

技术栈

核心依赖

  • Spring Boot Web 3.3.5 - REST API框架
  • Spring Boot Quartz - 定时任务调度
  • MyBatis-Plus 3.5.7 - ORM框架
  • MySQL Connector - 数据库连接
  • Lombok - 代码简化

工具库

  • Hutool 5.8.33 - Java工具类库
  • FastJSON 2.0.21 - JSON处理
  • EasyExcel 4.0.3 & EasyPOI 4.5.0 - Excel处理
  • Apache HttpClient 4.5.13 - HTTP客户端
  • Google Guava 33.3.1 - 集合工具

重要的文件路径

  • 主要工作目录202504-Wms-MengYang-tp/wms_serve_mengyang/
  • 日志存储wms_log/ (按日期和级别分类)
  • 数据库脚本db/wms_mengyang_tp.sql
  • MyBatis映射src/main/resources/mapper/

常见开发任务

启动应用

cd 202504-Wms-MengYang-tp/wms_serve_mengyang
mvn spring-boot:run

查看日志

# 查看今天的info日志
tail -f wms_log/info/$(date +%Y-%m-%d)/$(date +%Y-%m-%d).0.log

# 查看今天的error日志  
tail -f wms_log/error/$(date +%Y-%m-%d)/$(date +%Y-%m-%d).0.log

数据库操作

  • 使用MyBatis-Plus进行ORM操作
  • 支持批量操作和事务处理
  • 驼峰命名自动映射(map-underscore-to-camel-case: true)
  • ID生成策略assign_id

系统集成要点

WCS系统集成托盘库专用

  • TCP和HTTP双协议支持
  • 托盘堆垛机任务调度和状态同步
  • 托盘载具管理和追踪

任务调度系统

  • 基于Quartz的定时任务框架
  • 关键执行器针对托盘库场景优化
  • 任务状态实时监控

Excel处理

  • 后端EasyExcel 4.0.3 + EasyPOI 4.5.0
  • 支持托盘库相关的业务数据导入导出
  • 模板位置:excel/easypoi/excelTemplate/

TP与BOX版本的差异

主要区别

  1. 数据库schema:使用wms_mengyang_tp数据库
  2. 存储策略算法:针对托盘存储特点优化
  3. 设备集成:对接托盘库专用设备
  4. 业务规则:托盘的尺寸、重量、堆叠规则不同

开发注意事项

  • 在开发新功能时注意区分TP和BOX版本的业务差异
  • 深度策略算法需要考虑托盘的物理特性
  • WCS集成需要适配托盘库的设备类型

故障排除

常见问题

  1. 端口冲突确认12315端口未被占用
  2. 数据库连接检查MySQL服务状态和TP数据库配置
  3. 版本混淆确认操作的是TP版本而非BOX版本
  4. 日志分析:按级别查看对应日志目录

调试技巧

  • 使用RequestLogFilter查看API请求日志
  • 通过WmsControllerExceptionHandler统一异常处理
  • 检查定时任务执行状态:查看TAppJobs
  • 注意区分TP和BOX版本的业务逻辑差异

开发规范

代码约定

  • Controller层只处理HTTP请求业务逻辑在Service层
  • 使用DTO传输数据内部业务使用BO对象
  • 统一通过MyBatis-Plus的BaseMapper操作数据库
  • 所有业务异常继承RuntimeException并返回统一错误格式

WCS集成规范

  • WCS调用通过IWcsApiService统一管理
  • AGV操作必须使用锁定机制防冲突
  • 任务下发前检查设备状态和库位可用性
  • 调试时注意区分模拟数据和真实WCS调用

异常处理

  • 使用@ControllerAdvice全局异常处理
  • 业务异常返回统一MyWmsResponse格式
  • 记录详细错误日志便于问题定位

日志规范

  • 使用Slf4j进行日志记录
  • 关键业务操作记录INFO级别日志
  • 异常情况记录ERROR级别日志
  • 避免敏感信息出现在日志中

调试和监控

本地调试

  • 默认端口: 12315
  • H2控制台: 如果启用可通过/h2-console访问
  • 日志级别: 通过logback-spring.xml配置

数据库连接测试

# 测试数据库连接
mysql -h localhost -P 3306 -u root -p wms_mengyang_tp

# 查看关键表结构
DESCRIBE t_app_stock;
DESCRIBE t_app_order_in;

常见问题

  1. WCS连接失败: 检查WCS系统URL配置和网络连通性
  2. AGV锁定超时: 检查t_app_agv_lock表的锁定记录
  3. 深度策略错误: 检查库存状态和深度计算逻辑
  4. MySQL连接超时: 调整数据库连接池配置