出差与报销
这篇解决什么
出差申请和差旅报销是两张单、两条流程 key。读完能对上 oa_business_trip 和 oa_travel_reimburse,不要在出差 info 里直接改金额冒充报销。
先开模块,见 OA 功能设计。两张都是业务表单,日期是 LocalDate。
示意图:出差带行程行。报销用 tripId 挂出差,费用另表。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 出差 | /oa/business-trip,key oa_business_trip | ruoyi-office/yudao-module-oa/.../BusinessTripController.java |
| 报销 | /oa/travel-reimburse,key oa_travel_reimburse | TravelReimburseController.java |
| 表 | 单头 + 行程 / 费用 | oa_business_trip、oa_business_trip_item、oa_travel_reimburse、oa_travel_reimburse_item |
| 前端 | tripapply / tripreimburse 的 list/info | ruoyi-office-vben/apps/web-antd/src/views/oa/trip/ |
| 移动 | 两套创建页 | bpm-menu-config.ts |
OaBillTypeEnum:出差 109 / 报销 110。模型自定义路径分别对 tripapply/list|info 和 tripreimburse/list|info。
startDate / endDate 是纯日期,前端 YYYY-MM-DD。行程行有出发 / 到达城市和 transportType。报销行有 expenseType、amount、发票号。
报销 info 选出差时写 tripId、tripBillCode。列表筛 reimburseStatus 只是出差单上的标记,不是第三条流程 key。
移动权限都是 :create。附件按类型码 109 / 110 挂公共附件表。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
tripReason / totalDays | 事由与天数 | BusinessTripDO / TravelReimburseDO |
estimatedCost | 出差预估,不是实报 | BusinessTripDO |
tripId | 报销回挂出差 | TravelReimburseDO |
totalAmount / payStatus | 报销合计与支付 | 同上 |
预估不是实报
改 estimatedCost 不会生成报销单。实报走 /oa/travel-reimburse,金额在费用明细求和。
先有通过的出差再报
报销页用 trip-select-modal 选已有出差。不要手工填一个不存在的 tripId。
@RequestMapping("/oa/business-trip")
public class BusinessTripController { }
@TableName("oa_travel_reimburse")
public class TravelReimburseDO extends BaseDO { }配置与操作
出差走 OA → 出差管理 → 出差申请 的 list / info。行程行填城市和交通方式。预估费用不会生成报销单。
报销走差旅报销 list / info,用 trip-select-modal 选已通过的出差。金额在费用明细求和。日期都是 YYYY-MM-DD。

本系统截图:OA → 出差管理 → 出差申请。

本系统截图:出差申请 info。报销另开 oa_travel_reimburse。
