返回作品

现场巡检系统

创建于 2025 年 6 月 17 日

标签
  • Java
  • Spring Boot
  • Spring Security
  • MyBatis-Plus
  • MySQL
  • Redis
  • Quartz
  • Vue 3
  • TypeScript
  • Vite
  • Element Plus
  • ECharts
  • 高德地图

项目介绍

这是一套面向园区、场馆、厂区等场景的现场巡检管理系统,基于芋道 yudao-boot-mini v2.6.0 深度定制而来。系统的核心思路是把”巡哪里、查什么、怎么记录、出了问题怎么办”这条巡检业务链路完整固化下来:管理人员先在后台把巡检标准整理成路径模板——一条路径由多个巡检点按顺序组成,每个巡检点下再挂若干巡检项目,项目可标记”必检”;随后将路径指派给具体的巡检人员。

巡检人员领取路径后即可开始现场巡检:按顺序逐个到达巡检点,逐项判定检查结果(未检查/正常/异常)并填写结果与检查时间,全程支持开始、暂停、恢复、完成的状态切换与耗时统计,巡检点进度实时可见。巡检中发现的异常可直接上报问题,附上图片视频并按普通/重要/紧急分级,进入”待处理→处理中→已处理”的流转闭环。所有巡检明细落库后,系统按日聚合最近 30 天的巡检完成次数与问题上报次数,形成趋势统计供管理层复盘。

项目架构

项目基于芋道 yudao-boot-mini v2.6.0 搭建(Spring Boot 2.7.18,JDK 8-11),延续其多模块结构:yudao-framework(安全、MyBatis、Redis 等基础组件)、yudao-module-system(系统管理)、yudao-module-infra(基础设施)、yudao-module-patrol(本次新增的巡检业务模块)、yudao-server(Web 入口容器)。技术栈为 Spring Boot + Spring Security + MyBatis-Plus + MySQL + Redis + Quartz,模块 pom 依赖数据权限、多租户、Excel 导出等框架 starter。

业务代码集中在 yudao-module-patrolcn.iocoder.yudao.module.patrol 包,分为 route(巡检路径)、record(巡检记录)、issue(问题上报)、statistics(统计)四组 Controller / Service / Mapper。数据库共 6 张 patrol_* 业务表:patrol_route(路径名称、描述、启停状态、指派人员 userId、巡检次数 checkCount)、patrol_point(巡检点名称、描述、经纬度、巡检顺序)、patrol_item(巡检项目名称、描述、是否必检)、patrol_record(路径、巡检人员、开始/结束时间、记录状态)、patrol_record_item(巡检明细:结果、状态、检查时间)、patrol_issue(问题描述、类型、优先级、图片/视频地址、处理人/处理结果)。路径创建与更新采用事务级联维护:先插主表,再遍历巡检点插入巡检点并逐项插入巡检项目;更新时先删旧点旧项再重建,保证模板一致性。

前端为 Vue 3.5 + TypeScript + Vite + Element Plus 2.9 的芋道管理后台,新增 views/xunchaapi/xuncha 两组代码。其中 utils/amap.ts 封装了高德地图能力(地图初始化、定位、轨迹点数据结构),路径管理页内置”地图选点”弹窗,点击地图即可为巡检点取经纬度坐标;views/xuncha/XCXJ 则是模拟移动端的现场巡检执行页,包含地图容器、巡检计时器、进度条与逐项检查表单。

核心功能

  • 巡检路径三级模板:巡检路径管理页支持路径 CRUD,每条路径下按顺序挂载多个巡检点,巡检点可在地图弹窗中选点获取经纬度;每个巡检点下再挂巡检项目并标记是否必检。路径支持启用/禁用、指派巡检人员(setUserId 接口)与巡检次数统计,分页接口支持按登录用户过滤(getListByUserId),实现”谁的路径谁执行”。
  • 现场巡检全流程执行:巡检执行端按路径领取任务,支持开始巡检、暂停、恢复、完成四种动作与”准备→进行中(可暂停)→已完成”的状态机;页面顶部实时显示耗时计时与巡检点进度(已完成/总数 + 进度条)。每个巡检点到达后逐项填写检查结果,结果状态区分为未检查、正常、异常三档并记录检查时间。
  • 巡检记录主从管理:巡检记录(patrol_record)与巡检明细(patrol_record_item)主子表存储,创建记录时遍历路径巡检点生成明细,更新采用”删除旧明细再插入新明细”的事务策略,删除记录时级联清理明细。记录分页强制将 inspectorId 设为当前登录用户(SecurityFrameworkUtils.getLoginUserId()),并在返回前按明细状态统计每单未检查/正常/异常数量;列表支持 Excel 导出。
  • 问题上报闭环:巡检中发现问题可即时上报,记录问题描述、类型与优先级(普通/重要/紧急),支持图片、视频上传(地址以逗号分隔存储);问题状态在待处理、处理中、已处理之间流转,处理时记录处理人、处理时间与处理结果,形成完整的处理留痕。
  • 巡检趋势统计:统计接口按天查询最近 30 天的已完成巡检记录数与问题上报数(Mapper 按时间范围 + 状态过滤),前端以 ECharts 折线图呈现月度巡检统计,并配套数据明细表格与导出按钮,便于管理层评估巡检执行量与问题密度。

功能截图

暂无运行截图。

快速上手

数据库初始化直接导入 250617-xunjian.sql(Navicat 全库导出,含 Quartz、系统表、业务表与演示数据)。演示数据自带完整巡检场景:多条巡检路径(如”测试巡查”、“测试巡查路径1”)、按顺序排列的巡检点(部分点位坐标为北京故宫区域,如”巡查午门""武英殿”)、巡检项目、已完成的巡检记录及带图片的问题上报记录,并包含 patrol_* 五组字典(路径状态、记录状态、明细状态、问题状态、问题优先级)与”巡检管理”菜单树,导入即可看到完整业务。

后端以 IDEA 打开 yudao-boot-mini-v2.6.0(jdk8-11) 目录,按芋道标准配置 application-druid.yml 数据库连接与 application.yaml 的 Redis 连接后启动 yudao-server,默认账号 admin / admin123。前端进入 yudao-ui-admin-vue3-v2.6.0 执行 pnpm installpnpm dev,登录后在”巡检管理”菜单下体验完整链路:先在巡检路径管理中用地图选点配置路径模板并指派人员,再到现场巡检功能(隐藏菜单,可手动配置路由访问)执行巡检,最后在巡检记录与统计页查看结果。

总结

这个项目的价值在于用一套”路径—巡检点—巡检项目”的三级模板把巡检标准固化为可执行、可追溯的数据模型,并用主从表结构天然承接了”一次巡检对应多条明细”的业务形态。高德地图选点让巡检点的地理位置真正进入系统,为后续轨迹纠偏、点位防漏检留出了空间;记录分页强制按登录用户过滤,从数据层面保证了巡检人员各查各单、责任清晰;问题上报携带图片视频与优先级分级,把现场异常从”口头反馈”升级为”带证据、可流转、有结果”的工单化记录;30 日趋势统计则让管理者对巡检执行量和问题密度一目了然。

从代码实现看,项目由芋道代码生成器驱动(SQL 中保留了 infra_codegen_table 的完整配置),主从表级联维护、状态机字段枚举、字典化管理都沿用了框架最佳实践,模块独立、风格统一,具备良好的可维护性与二次扩展基础。后续可扩展的方向包括:巡检轨迹实时上传与偏航提醒(前端已预留轨迹点上传 API 结构)、路径排班与到期提醒、问题处理超时升级机制,以及巡检结果与设备台账、工单系统的联动。