引言
隨著企業規模的擴大和業務復雜度的提升,傳統的辦公自動化(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博客,轉載請注明出處。