引言
随着企业规模的扩大和业务复杂度的提升,传统的办公自动化(OA)系统已无法满足特定行业的需求,例如物流运输行业中的拖车管理。拖车管理后台作为企业OA系统的一个重要模块,需要实现车辆调度、任务分配、状态跟踪、费用结算等功能。本文将介绍如何使用Java SpringBoot框架快速构建一个面向拖车管理场景的企业OA管理系统后台。
技术选型
- 后端框架:SpringBoot 2.7.x
- 持久层:MyBatis Plus + MySQL
- 安全框架:Spring Security + JWT
- 前端模板:Thymeleaf + Bootstrap(或前后端分离,RESTful API对接Vue/React)
- 工具库:Lombok、Hutool、Fastjson
- 构建工具:Maven
- 开发工具:IntelliJ IDEA
系统架构
采用经典的三层架构:
- 表现层(Controller):处理HTTP请求,返回JSON数据或视图。
- 业务逻辑层(Service):实现核心业务逻辑,如任务分配、状态流转。
- 数据访问层(Mapper):基于MyBatis Plus操作数据库。
系统使用Spring Security进行认证和授权,使用JWT实现无状态会话。日志使用Logback,API文档使用Swagger/Knife4j。
数据库设计(拖车管理相关表)
- 用户表(sysuser):id, username, password, realname, role_id, phone...
- 角色表(sysrole):id, rolename, role_desc
- 拖车表(truck):id, truckno(车牌号), model, capacity, status(空闲/占用/维修), driverid
- 司机表(driver):id, name, phone, license_no, username
- 任务表(task):id, taskno, truckid, driverid, startaddr, endaddr, cargoinfo, planstarttime, planendtime, actualstarttime, actualendtime, status(待分配/进行中/已完成/取消), fee, create_time
- 费用表(expense):id, taskid, feetype, amount, remark
- 操作日志表(operlog):id, userid, operation, method, params, ip, create_time
核心功能模块
1. 用户与权限管理
使用Spring Security + JWT实现登录认证和权限控制。不同角色(管理员、调度员、司机)具有不同的菜单和操作权限。
2. 拖车信息管理
提供拖车的增删改查功能,可以实时监控拖车状态(空闲、任务中、维修),并支持按照车牌号、状态等条件查询。
3. 司机管理
对司机信息进行维护,包括基本信息、驾驶证信息,并关联司机与拖车(可多个司机绑定同一拖车或司机与拖车一一对应)。
4. 任务调度管理
调度员可以创建运输任务,指定出发地、目的地、货物信息、计划时间等,并分配拖车和司机。任务状态会自动流转,例如从“待分配”到“进行中”再到“已完成”。
5. 状态跟踪与通知
任务开始、结束时,司机可通过司机端(APP或小程序)更新状态,后台实时更新。可集成WebSocket推送消息,或使用短信通知。
6. 费用管理
根据任务里程、货物重量等计算费用,支持录入其他费用(如过路费、油费),并可生成结算单。
7. 统计报表
使用ECharts展示拖车利用率、任务完成率、月度费用统计等,为管理层提供决策支持。
关键代码示例
1. SpringBoot启动类
@SpringBootApplication
@MapperScan("com.example.oa.mapper")
public class OaApplication {
public static void main(String[] args) {
SpringApplication.run(OaApplication.class, args);
}
}
2. 任务实体类(Task.java)
@Data
@TableName("task")
public class Task {
@TableId(type = IdType.AUTO)
private Long id;
private String taskNo;
private Long truckId;
private Long driverId;
private String startAddr;
private String endAddr;
private String cargoInfo;
private Date planStartTime;
private Date planEndTime;
private Date actualStartTime;
private Date actualEndTime;
private Integer status; // 0-待分配,1-进行中,2-已完成,3-取消
private BigDecimal fee;
private Date createTime;
// 省略getter/setter
}
3. 任务Controller(TaskController.java)
`java
@RestController
@RequestMapping("/api/task")
public class TaskController {
@Autowired
private TaskService taskService;
@PreAuthorize("hasAuthority('task:add')")
@PostMapping
public Result addTask(@RequestBody Task task) {
return taskService.addTask(task);
}
@PreAuthorize("hasAuthority('task:list')")
@GetMapping("/list")
public Result listTasks(@RequestParam Map
return taskService.queryPage(params);
}
@PreAuthorize("hasAuthority('task:update')")
@PutMapping
public Result updateTask(@RequestBody Task task) {
return taskService.updateTask(task);
}
// 其他接口:删除、启动任务、完成任务等
}`
4. 安全配置(SecurityConfig.java)
`java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JwtAuthenticationFilter jwtAuthenticationFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/api/auth/login").permitAll()
.anyRequest().authenticated()
.and()
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
}
}`
系统部署与运行
- 环境准备:JDK1.8+,MySQL5.7+,Maven3.6+
- 导入数据库脚本(schema.sql和data.sql)
- 修改application.yml中的数据库连接信息
- 运行
mvn spring-boot:run启动项目 - 前端使用Nginx部署Vue项目,或直接访问Thymeleaf页面
- 默认账号:admin/123456(管理员),调度员账号可自行创建
##
本文介绍了一个基于Java SpringBoot的企业OA管理系统中的拖车管理后台的设计与实现。通过合理的模块划分和技术选型,实现了用户权限、拖车管理、任务调度、费用管理等功能,能够有效提升拖车运营管理的效率。该系统具有良好的扩展性和可维护性,可在此基础上进一步定制开发。源码已上传至CSDN,感兴趣的朋友可以下载研究。
参考文献
[1] SpringBoot官方文档. https://spring.io/projects/spring-boot
[2] MyBatis Plus官方文档. https://baomidou.com
[3] 基于SpringBoot的物流管理系统设计与实现. 计算机工程与应用, 2022.
---
本文首发于CSDN博客,转载请注明出处。