# spindle-automatic **Repository Path**: rory-pd-yang/spindle-automatic ## Basic Information - **Project Name**: spindle-automatic - **Description**: 细纱机全自动接线调度系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-09 - **Last Updated**: 2026-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Based on the code map analysis, I can now generate the README. The original README provides good context, and I'll enhance it with more specific details from the code structure. # Spindle-Automatic 基于微服务架构的工业自动化调度系统,实现设备管理、任务调度、MQTT通信、状态机流程控制等功能。 ## 核心功能 - **设备管理**:支持AGV(自动导引车)和机器人设备的增删改查操作,支持设备状态监控和远程启停控制 - **任务调度**:集成Quartz框架实现定时任务调度,支持动态任务注册与管理 - **MQTT通信**:基于Paho实现与设备的双向MQTT消息交互,支持多主题消息分发和处理策略模式 - **状态机控制**:通过状态模式(State Pattern)实现复杂业务流程控制,包含审批、移动、执行、报警等多种状态流转 - **用户认证**:基于JWT实现身份验证和会话管理,集成Spring Security进行权限控制 - **操作日志**:通过AOP切面实现统一的操作日志记录和查询功能 ## 技术架构 | 技术组件 | 版本要求 | 说明 | |---------|---------|------| | Spring Boot | 2.x | 应用框架 | | MyBatis Plus | 3.x | ORM持久层框架 | | Quartz | 2.x+ | 定时任务调度 | | MQTT Paho | 1.x+ | IoT消息通信 | | Feign | - | 服务调用组件 | | JWT | - | 无状态认证 | | Caffeine Cache | - | 本地缓存 | | AspectJ AOP | - | 面向切面编程 | ## 模块说明 ### Spindle-Common(公共模块) - `config/` - 配置类:缓存配置、AOP配置、JWT属性、应用初始化 - `constants/` - 常量定义:认证常量、日期格式常量 - `domain/` - 通用领域对象:分页查询、分页结果、响应封装 - `exception/` - 异常处理:自定义异常体系、全局异常Advice - `log/` - 日志模块:操作日志切面、日志实体 - `pojo/` - 通用实体:车辆信息 - `utils/` - 工具类:Bean转换、JSON处理、JWT工具、缓存操作等 ### Spindle-Scheduler(业务模块) - `clients/` - Feign客户端:外部服务调用 - `config/` - 业务配置:MQTT连接、Quartz调度、安全配置 - `controller/` - REST接口:设备管理、用户管理、登录认证、流程控制等 - `mapper/` - 数据访问层:MyBatis接口定义 - `modbus/` - Modbus通信:工业设备TCP通信管理 - `pojo/` - 业务实体:AGV信息、机器人信息、任务信息、告警信息等 - `pojo/dto/` - 数据传输对象 - `pojo/entity/` - 数据库实体 - `pojo/seer/` - 第三方API响应实体(Seer机器人) - `service/` - 业务逻辑接口与实现 - `service/strategy/` - MQTT消息处理策略 - `state/` - 状态机实现 - `time/` - Quartz定时任务实现 ## 快速启动 ### 环境依赖 - JDK 1.8+ - MySQL 5.7+ - Redis - MQTT Broker (如Mosquitto) ### 启动步骤 1. **克隆项目** ```bash git clone https://gitee.com/rory-pd-yang/spindle-automatic.git ``` 2. **配置数据库** 编辑 `Spindle-Scheduler/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/spindle?useUnicode=true&characterEncoding=utf8 username: your_username password: your_password ``` 3. **配置Redis** ```yaml spring: redis: host: localhost port: 6379 ``` 4. **配置MQTT** ```yaml spring: mqtt: url: tcp://localhost:1883 client-id: spindle-client username: admin password: public default-topic: spindle/topic ``` 5. **初始化数据库** 执行SQL脚本创建所需的数据库表(表结构包括用户、设备、任务、操作日志等) 6. **编译运行** ```bash mvn clean install cd Spindle-Scheduler mvn spring-boot:run ``` ## API文档 部署完成后访问Swagger UI:`http://localhost:8080/swagger-ui.html` ### 主要接口模块 | 模块 | 路径 | 功能 | |-----|-----|------| | 登录认证 | `/auth/*` | 用户登录、Token校验、登出 | | 设备管理 | `/device/*` | AGV/机器人增删改查 | | 用户管理 | `/user/*` | 用户CRUD、启用/禁用 | | 系统日志 | `/sysLog/*` | 操作日志查询 | | 程序控制 | `/application/*` | 启动/停止应用 | | 关系绑定 | `/relation/*` | AGV与机器人绑定 | ## 配置说明 完整配置项请参考 `application.yml`,核心配置段: ```yaml server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://... username: ... password: ... redis: host: ... port: ... mqtt: url: tcp://localhost:1883 client-id: spindle-${random.value} username: admin password: public default-topic: spindle/topic qos: 1 connection-timeout: 30 keep-alive-interval: 60 automatic-reconnect: true spindle: auth: jwt: secret: your-secret-key expiration: 3600000 not-before: 2024-01-01 security: white-list: - /auth/login - /swagger/** ``` ## 目录结构 ``` spindle-automatic/ ├── Spindle-Common/ # 公共模块 │ └── src/main/java/com/wuxi/common/ │ ├── config/ # 配置类 │ ├── constants/ # 常量定义 │ ├── domain/ # 领域对象 │ ├── exception/ # 异常处理 │ ├── handler/ # 处理器接口 │ ├── log/ # 日志模块 │ ├── pojo/ # 通用实体 │ └── utils/ # 工具类 │ ├── Spindle-Scheduler/ # 业务模块 │ └── src/main/java/com/wuxi/scheduler/ │ ├── clients/ # Feign客户端 │ ├── config/ # 业务配置 │ ├── controller/ # 控制器 │ ├── filter/ # 请求过滤器 │ ├── handler/ # 消息处理器 │ ├── mapper/ # 数据访问 │ ├── modbus/ # Modbus通信 │ ├── pojo/ # 业务实体 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 数据库实体 │ │ └── seer/ # 第三方响应实体 │ ├── service/ # 业务服务 │ │ ├── impl/ # 服务实现 │ │ └── strategy/ # MQTT策略 │ ├── state/ # 状态机 │ ├── time/ # 定时任务 │ └── utils/ # 业务工具 │ └── pom.xml # Maven配置 ``` ## 开发指南 1. **Fork仓库** 2. **创建特性分支** ```bash git checkout -b feature/your-feature ``` 3. **提交代码** ```bash git commit -m '添加新功能' ``` 4. **推送请求** ```bash git push origin feature/your-feature ``` 5. **创建Pull Request** ## 许可证 本项目基于 Apache License 2.0 开源协议发布,详细条款请参见项目根目录 LICENSE 文件。 --- > 🚀 如有问题或建议,欢迎提交 Issue 或 Pull Request。