# Service-Job 模块技术文档 ## 模块概述 Service-Job 是基于 Spring Boot 的微服务模块,主要负责任务调度、数据导出、物联网设备管理、商城接口、打印服务等核心业务功能。该模块采用命令驱动架构设计,通过 cmd 目录下的 **34个核心命令接口** 提供统一的服务接口。 ## 技术架构 ### 核心依赖 - **Spring Boot**: 微服务框架基础 - **Quartz**: 分布式任务调度引擎 - **Thymeleaf**: 模板引擎,用于报表生成和页面渲染 - **Maven**: 项目构建工具 ### 架构特点 - 命令驱动架构:所有业务逻辑通过 cmd 命令类实现 - 异步处理:数据导出采用队列机制异步处理 - 任务调度:基于 Quartz 实现定时任务管理 - 模块化设计:按业务领域划分命令类目录 ## 核心命令接口 Service-Job 模块共包含 **34个核心命令接口**,按业务领域分布在9个子目录中: ### 1. 数据导出模块 (export) - 1个接口 **ExportDataCmd** - 数据导出处理命令 - 服务编码: `export.exportData` - 功能: 异步数据导出,支持 Excel 格式 - 核心流程: - 验证项目ID和页面路径参数 - 创建用户下载文件记录 - 将导出任务加入队列异步处理 - 返回文件生成状态 ### 2. 物联网设备管理 (iot) 包含 13 个命令类,主要功能: **设备接入控制** - `GetOpenApiCmd` - 开放API获取 - `GetAdminOpenApiCmd` - 管理员开放API获取 - `PostOpenApiCmd` - 开放API提交 - `GetIotTokenCmd` - 物联网令牌获取 - `OpenAccessControlDoorCmd` - 门禁开门控制 **设备状态查询** - `ListAdminAccessControlCmd` - 门禁设备列表 - `ListAdminBarrierCmd` - 道闸设备列表 - `ListAdminChargeMachineCmd` - 充电桩设备列表 - `ListAdminMeterMachineCmd` - 计量表设备列表 **数据记录查询** - `ListAdminAccessControlInoutCmd` - 门禁进出记录 - `ListAdminCarInoutDetailCmd` - 车辆进出详情 - `ListAdminChargeMachineOrderCmd` - 充电订单记录 - `ListAdminMeterChargeCmd` - 计量收费记录 ### 3. 任务调度 (job) **RunJobCmd** - 任务运行命令 - 功能: 基于 Quartz 的任务调度执行 - 集成: 继承 TaskSystemQuartz 抽象类实现具体业务逻辑 ### 4. 商城服务 (mall) 包含 11 个命令类,主要功能: **商城基础服务** - `GetAdminMallOpenApiCmd` - 管理员商城API - `GetMallOpenApiCmd` - 商城开放API - `GetMallTokenCmd` - 商城令牌获取 **商品管理** - `ListProductGroupCmd` - 商品分组列表 - `ListProductSeckillCmd` - 秒杀商品列表 - `QueryMainCategoryCmd` - 主分类查询 - `QueryPhoneMainCategoryProductCmd` - 手机端商品查询 **业务查询** - `QueryCommunityRecommendCmd` - 项目推荐查询 - `QueryHousekeepingTypeCmd` - 家政类型查询 - `QueryShopTypeCmd` - 店铺类型查询 ### 5. 计量设备 (meterMachine) **ListMeterMachineCmd** - 计量设备列表 - 功能: 查询计量表设备信息 - 应用: 水电燃气等计量设备管理 ### 6. 业主服务 (owner) **业主设备管理** - `ListOwnerMachinesCmd` - 业主设备列表查询 - `QueryOwnerAcVideoUrlCmd` - 业主视频门禁URL查询 ### 7. 插件管理 (plugin) **GetPluginTokenCmd** - 插件令牌获取 - 功能: 为第三方插件提供认证令牌 - 应用: 插件系统集成 ### 8. 打印服务 (print) **票据打印** - `PrintAccountReceiptCmd` - 账户收据打印 - `PrintPayFeeDetailCmd` - 缴费明细打印 ### 9. 用户文件下载 (userDownloadFile) **下载文件管理** - `DeleteUserDownloadFileCmd` - 删除用户下载文件 - `ListUserDownloadFileCmd` - 用户下载文件列表查询 ## 任务调度实现 ### Quartz 调度框架 **TaskSystemQuartz** - 抽象任务调度基类 - 提供任务执行模板方法 - 支持任务状态管理和错误处理 - 集成项目和商户信息查询 **核心方法**: - `startTask(TaskDto taskDto)`: 任务启动入口,接收任务参数 - `process(TaskDto taskDto)`: 抽象业务处理方法 - `prepare(TaskDto taskDto)`: 前置处理钩子 - `after(TaskDto taskDto)`: 后置处理钩子 ### 数据导出队列机制 **ExportDataQueue** - 数据导出队列 - 基于 LinkedBlockingQueue 实现 - 支持异步处理导出任务 - 队列容量: 100个任务 - 超时时间: 3秒(添加任务时的等待超时) ## 部署配置 ### Maven 配置 ```xml com.java110 java110-service org.quartz-scheduler quartz org.springframework.boot spring-boot-starter-thymeleaf ``` ### 环境要求 - Java 1.8+ - Spring Boot 2.x - Maven 3.6+ ## 使用说明 ### 数据导出示例 ```java // 调用导出命令 JSONObject reqJson = new JSONObject(); reqJson.put("communityId", "123456"); reqJson.put("pagePath", "userList"); // 执行导出,返回文件生成状态 ``` ### 任务调度配置 继承 TaskSystemQuartz 实现具体业务逻辑: ```java public class CustomTask extends TaskSystemQuartz { @Override protected void process(TaskDto taskDto) throws Exception { // 实现具体业务逻辑 } } ``` ## 模块特点 1. **命令驱动**: 所有业务通过命令类实现,架构清晰 2. **异步处理**: 耗时操作采用队列异步处理 3. **调度灵活**: 基于 Quartz 的分布式任务调度 4. **扩展性强**: 模块化设计,易于扩展新功能 5. **错误处理**: 完善的异常处理和日志记录 ## 维护说明 - 新增命令类需在对应业务目录下创建 - 任务调度类需继承 TaskSystemQuartz - 数据导出需使用 ExportDataQueue 队列机制 - 所有命令类需使用 @Java110Cmd 注解注册服务编码