1. 项目概述护工管理系统的现实需求与技术选型在老龄化社会加速发展的当下护工服务行业面临着前所未有的管理挑战。传统纸质记录、电话调度的方式已经无法满足现代医疗机构和养老机构对护工资源的高效管理需求。这正是我们团队选择开发护工管理便捷服务系统作为毕业设计的核心原因——通过信息化手段解决行业痛点。这个基于SpringBoot的全栈系统主要面向三类用户群体护工、护理机构管理员和病患家属。护工需要移动端接单、打卡和汇报工作管理员需要统筹调度、绩效评估和薪资结算家属则希望透明查看护理过程和评价服务质量。系统采用B/S架构设计前端使用Vue.jsElementUI实现响应式布局后端基于SpringBoot 2.7整合MyBatis-Plus和Redis数据库选用MySQL 8.0通过Swagger实现API文档自动化。技术选型心得SpringBoot的约定优于配置特性大幅减少了XML配置内嵌Tomcat简化部署流程Starter机制快速集成常用组件——这些特性对毕业设计这种有时间限制的项目尤为重要。2. 系统核心模块设计与实现2.1 权限控制与多角色登录系统采用RBAC基于角色的访问控制模型设计权限体系核心表包括sys_user、sys_role、sys_menu以及关联表。通过Spring Security结合JWT实现认证授权关键实现代码如下Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers(/login).anonymous() .anyRequest().authenticated() .and() .addFilter(new JwtAuthenticationFilter(authenticationManager())) .addFilter(new JwtAuthorizationFilter(authenticationManager())); } }遇到的典型问题及解决方案跨域问题通过自定义CorsFilter解决权限缓存不一致采用Redis缓存权限规则设置30分钟过期JWT续期通过RefreshToken机制实现无感刷新2.2 护工调度算法实现调度模块是系统的核心创新点我们设计了基于地理位置和服务匹配度的双层调度算法地理围栏筛选通过Redis GEO命令快速查找3公里范围内的护工redisTemplate.opsForGeo().radius(nurse:location, new Circle(new Point(lng, lat), new Distance(3, Metrics.KILOMETERS)));服务匹配度计算技能匹配40%权重历史评价30%权重当前负荷20%权重紧急程度10%权重调试技巧使用Google的S2 Geometry库优化地理计算性能将地球表面投影到二维平面进行处理比纯Haversine公式快15倍。2.3 工单状态机设计护工服务流程被建模为状态机使用Spring StateMachine实现[待接单] --(接单)-- [已预约] [已预约] --(开始服务)-- [服务中] [服务中] --(完成)-- [待评价] [待评价] --(评价)-- [已完成] [待接单] --(超时)-- [已取消]状态转换时触发对应业务逻辑接单推送通知给家属开始服务生成定位打卡记录完成触发薪资计算评价更新护工评分3. 关键技术实现细节3.1 实时定位与轨迹回放采用高德地图JS API实现前端展示后端使用MySQL存储轨迹点数据。为优化存储我们设计了分段压缩算法每30秒采集一次定位当连续5个点方向变化5度时只存储首尾点使用Base64编码压缩坐标串CREATE TABLE location_track ( id bigint NOT NULL AUTO_INCREMENT, order_id bigint NOT NULL, compressed_path text CHARACTER SET utf8mb4, start_time datetime NOT NULL, end_time datetime NOT NULL, PRIMARY KEY (id), INDEX idx_order (order_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;3.2 服务评价的NLP处理收集的评价文本通过阿里云NLP进行情感分析关键实现步骤数据清洗去除特殊符号、停用词情感打分获取-5负面到5正面的分数关键词提取识别耐心、专业等标签结果可视化使用ECharts生成雷达图3.3 微信小程序集成为方便护工移动端使用开发了配套小程序主要功能点扫码验证身份工单消息推送紧急呼叫按钮每日工作统计小程序与后端通过WSS协议保持长连接消息格式采用Protocol Buffers压缩message PushMsg { string msgId 1; MsgType type 2; string content 3; int64 timestamp 4; }4. 开发环境与调试技巧4.1 远程调试配置在IDEA中配置远程调试参数-agentlib:jdwptransportdt_socket, servery,suspendn,address5005Linux服务器需要开放端口并重启应用firewall-cmd --zonepublic --add-port5005/tcp --permanent firewall-cmd --reload避坑指南生产环境慎用远程调试建议通过日志和APM工具排查问题。我们项目中使用SkyWalking进行分布式追踪。4.2 数据库优化实践索引优化为高频查询字段添加组合索引ALTER TABLE service_order ADD INDEX idx_status_user (status, user_id);慢查询监控开启MySQL慢日志slow_query_log 1 slow_query_log_file /var/log/mysql/mysql-slow.log long_query_time 1连接池配置使用HikariCP并合理设置参数spring: datasource: hikari: maximum-pool-size: 20 idle-timeout: 30000 connection-timeout: 50005. 毕业设计答辩要点5.1 演示重点准备核心业务流程演示护工抢单过程服务轨迹回放评价分析看板技术亮点展示调度算法对比测试高并发压力测试结果前后端分离架构图创新点说明基于S2的地理围栏优化评价情感分析应用小程序离线功能设计5.2 常见问题应对与现有商业系统有什么区别突出毕业设计的轻量化和定制化特点展示针对小规模机构的优化设计如何保证数据安全说明MD5加盐加密方案介绍敏感数据脱敏处理提及定期备份策略系统能承受多大并发展示JMeter测试报告说明Redis缓存的作用讨论水平扩展方案6. 项目部署与运维6.1 容器化部署方案使用Docker Compose编排服务version: 3 services: app: image: nurse-system:1.0 ports: - 8080:8080 depends_on: - redis - mysql redis: image: redis:6-alpine ports: - 6379:6379 mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: root123 ports: - 3306:3306启动命令docker-compose up -d6.2 监控与告警配置Prometheus监控指标采集- job_name: nurse-system metrics_path: /actuator/prometheus static_configs: - targets: [app:8080]Grafana仪表盘配置接口成功率平均响应时间JVM内存使用数据库连接数异常告警规则示例groups: - name: example rules: - alert: HighErrorRate expr: rate(http_server_requests_seconds_count{status~5..}[5m]) 0.1 for: 10m7. 开发经验与改进方向在实际开发过程中有几个关键经验值得分享接口文档先行使用Swagger编写API文档后再开发减少前后端沟通成本。我们采用YAPI进行接口管理定义好请求/响应示例。分支策略优化主分支保护功能分支开发通过Merge Request进行代码审查。意外发现Git的rebase -i比普通merge更能保持提交历史整洁。测试数据生成用EasyRandom自动创建测试对象节省70%的测试准备时间。配合H2内存数据库实现快速单元测试。系统未来可改进的方向包括引入Elasticsearch实现工单全文检索增加排班冲突检测算法开发护工培训模块实现多平台消息推送整合这个项目从技术层面验证了SpringBoot在医疗信息化领域的适用性特别是在快速迭代和组件集成方面的优势。对于计算机专业毕业生而言完整经历需求分析、技术选型、编码实现到部署上线的全流程是非常有价值的实践锻炼。