Appearance
order 链路分析
源文件:
docs/front end/dm/lemes-web/src/views/devicemate/repair/order/order.vue前端 API:
docs/front end/dm/lemes-web/src/views/devicemate/api/repair/order/index.js后端落点:
lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/controller/RepairWorkOrdersController.java/lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/service/impl/RepairWorkOrdersServiceImpl.java主表:
repair_work_orders
Vue 组件总览
| 组件 | 层级路径 | 角色 | 是否主链路 | 是否直接CRUD | 独立MD | 跳转 | 一句话作用 |
|---|---|---|---|---|---|---|---|
index | index | 主页面 | 是 | 否 | 当前页 | 查看 | 承接 order 页面主入口、列表查询和业务操作入口。 |
辅助组件说明
boxSearch:负责查询条件区,支持搜索和清空事件触发。iTable:负责通用列表渲染、分页、多选、排序和操作列承载。dialogs:负责通用弹窗容器、确认和关闭交互。
技术图

Flow 布局:
standard
Summary 布局:
standard
1. 页面概览
- 当前节点对应文件
docs/front end/dm/lemes-web/src/views/devicemate/repair/order/order.vue。 - 当前节点识别到 0 个重点组件、5 个辅助组件。
- 当前节点识别到 1 条业务页面跳转链路、6 个真实接口。
- 页面激活时会先加载字典数据,再自动触发首屏分页查询。
- 搜索动作会把
filterList同步到searchFilter,并把页码重置为第 1 页。 - 重置动作会清空查询条件,再走一次分页查询。
- 表格排序会把前端排序字段写入
field/order,再触发服务端排序查询。 - 导出动作会把当前筛选条件、排序字段以及勾选 ids 一起传给导出接口。
2. 上游入口
detail通过 方法closeCurrentPage跳转到当前页,路由为/default/devicemate/repair/order/order。
3. 业务页面跳转链路
- 方法
goDetail->/default/devicemate/repair/order/detail->detail,参数workOrderNo/type。
4. 前端真实调用链
- <boxSearch> @research -> research ->
pageAjax - <boxSearch> @reempty -> reempty ->
pageAjax - <iTable> @size-change / <iTable> @current-change -> currentChange ->
pageAjax - <el-button> @click -> closeOrderHander ->
orderStatusUpdateAjax/statisticsWorkOrderAjax/pageAjax - <el-button> @click -> exportAction ->
exportExcelAjax - activated 生命周期 -> activated ->
statisticsWorkOrderAjax/pageAjax
5. 接口总览
| method | path | 功能 | 所属节点 | 前端触发 | 后端入口 |
|---|---|---|---|---|---|
| POST | /dm-device/repairWorkOrders/page | 分页查询 | 主页面 | <boxSearch> @research -> research -> currentChange -> getPage -> pageAjax | page |
| POST | /dm-device/repairWorkOrders/exportExcel | Excel 导出 | 主页面 | <el-button> @click -> exportAction -> exportExcelAjax | exportExcel |
| POST | /dm-device/repairWorkOrders/orderStatusUpdate | 业务请求 | 主页面 | <el-button> @click -> closeOrderHander -> orderStatusUpdateAjax | orderStatusUpdate |
| POST | /dm-device/repairWorkOrders/save | 业务请求 | 主页面 | - | save |
| POST | /dm-device/repairWorkOrders/statisticsWorkOrder | 业务请求 | 主页面 | <el-button> @click -> closeOrderHander -> getStatisticsWorkOrderAjax -> statisticsWorkOrderAjax | statisticsWorkOrder |
| POST | /dm-device/repairWorkOrders/upload/errorImg | 业务请求 | 主页面 | - | errorImg |
6. 接口详细说明
6.1 POST /dm-device/repairWorkOrders/page
接口信息
- 请求地址:
/dm-device/repairWorkOrders/page - 请求方式:
POST - 功能简述:分页查询
- 所属页面:主页面
- 前端触发链路:
- <boxSearch> @research -> research -> currentChange -> getPage -> pageAjax
- <boxSearch> @reempty -> reempty -> currentChange -> getPage -> pageAjax
- <iTable> @size-change / <iTable> @current-change -> currentChange -> getPage -> pageAjax
- <el-button> @click -> closeOrderHander -> currentChange -> getPage -> pageAjax
- activated 生命周期 -> activated -> currentChange -> getPage -> pageAjax
- 后端入口:
page - Service 方法:
pages
入参
- 后端接口实际接收对象:
RepairWorkOrdersQueryVo - 参数位置:
body
json
{
"pageSize": 10,
"pageNum": 1,
"field": "",
"order": "",
"workOrderNo": "",
"deviceCode": "",
"lineNo": "",
"urgencyDegree": "",
"orderStatus": "",
"createTimeStart": "",
"createTimeEnd": "",
"signInTimeStart": "",
"signInTimeEnd": "",
"repairTimeStart": "",
"repairTimeEnd": "",
"productLineSet": ""
}已在源码中确认的有效字段包括:
field;类型:String;来源:前端当前页面实际发送/可发送order;类型:String;来源:前端当前页面实际发送/可发送factoryNo;类型:String;来源:后端对象支持,当前页面未发送Ids;类型:Set<Long>;说明:id集合;来源:后端对象支持,当前页面未发送workOrderNo;类型:String;说明:工单单号;校验:长度不超过 50;来源:前端当前页面实际发送/可发送deviceCode;类型:String;说明:设备识别码;校验:长度不超过 50;来源:前端当前页面实际发送/可发送deviceNo;类型:String;说明:设备代号;校验:长度不超过 50;来源:后端对象支持,当前页面未发送lineNo;类型:String;说明:线体代号;校验:长度不超过 50;来源:前端当前页面实际发送/可发送urgencyDegree;类型:Integer;说明:紧急程度;校验:必填;来源:前端当前页面实际发送/可发送orderStatus;类型:Integer;说明:工单状态;校验:必填;来源:前端当前页面实际发送/可发送signInTimeStart;类型:Date;说明:签到时间-开始;来源:前端当前页面实际发送/可发送signInTimeEnd;类型:Date;说明:签到时间-结束;来源:前端当前页面实际发送/可发送repairTimeStart;类型:Date;说明:维修时间-开始;来源:前端当前页面实际发送/可发送repairTimeEnd;类型:Date;说明:维修时间-结束;来源:前端当前页面实际发送/可发送deptList;类型:List<String>;说明:部门代号;来源:后端对象支持,当前页面未发送excutorNo;类型:String;来源:后端对象支持,当前页面未发送queryData;类型:String;说明:app维修工单搜索检索条件;来源:后端对象支持,当前页面未发送statusSet;类型:Set;来源:后端对象支持,当前页面未发送productLineSet;类型:Set<String>;说明:产品线集合;来源:前端当前页面实际发送/可发送lineVoList;类型:Set<String>;说明:线体集合;来源:后端对象支持,当前页面未发送isStat;类型:Integer;说明:是否统计类接口 1、是 其他、否;来源:后端对象支持,当前页面未发送deviceTypeNames;类型:List<String>;说明:设备种类集合;来源:后端对象支持,当前页面未发送deviceClassifys;类型:List<Integer>;来源:后端对象支持,当前页面未发送deviceTypeNos;类型:List<String>;来源:后端对象支持,当前页面未发送deviceTypeVoList;类型:List<DeviceTypeVo>;来源:后端对象支持,当前页面未发送deviceNos;类型:List<String>;来源:后端对象支持,当前页面未发送secondsDiff;类型:int;来源:后端对象支持,当前页面未发送issueCode;类型:String;来源:后端对象支持,当前页面未发送issueName;类型:String;来源:后端对象支持,当前页面未发送issueClassify;类型:Long;来源:后端对象支持,当前页面未发送deviceClassify;类型:Integer;来源:后端对象支持,当前页面未发送deviceTypeName;类型:String;来源:后端对象支持,当前页面未发送deviceTypeNo;类型:String;来源:后端对象支持,当前页面未发送
出参
- 外层响应:ResultData,前端实际消费的是 data 中的 rows / total。
- 业务数据体:rows + total
json
{
"rows": [
{
"id": 1,
"partNo": "...",
"partCode": "...",
"partName": "...",
"bigCategory": "...",
"smallCategory": "...",
"sonCategory": "...",
"spec": "...",
"uom": "...",
"controlType": "...",
"currency": "...",
"price": "...",
"preferredSupplier": "...",
"supplierNo": "...",
"isPeriod": "...",
"isLife": "...",
"maxLife": "...",
"maxLifeUom": "...",
"useModel": "...",
"preciousType": "...",
"validFlag": "...",
"description": "...",
"packageNumber": "...",
"serialRule": "..."
}
],
"total": 0
}idpartNopartCodepartNamebigCategorysmallCategorysonCategoryspecuomcontrolTypecurrencypricepreferredSuppliersupplierNoisPeriodisLifemaxLifemaxLifeUomuseModelpreciousTypevalidFlagdescriptionpackageNumberserialRulebaseUrlBaseController.getDataTable(IPage<?>)会固定组装rows与total。前端
ajax.js会继续把ResultData.data解包后返回给页面。
后端逻辑链路
- 校验
- Controller 入口为
page(@RequestBody RepairWorkOrdersQueryVo vo),由@Validated和请求对象注解触发基础参数校验。 - 已确认的长度校验字段:
workOrderNo、deviceCode、deviceNo、lineNo、urgencyDegree、orderStatus。
- 预处理
- 当前链路未识别出额外步骤。
- 核心业务
- 调用文件服务批量查询附件,再拼接前端展示用
baseUrl。
- 状态变更
- 当前链路无数据库写操作。
- 数据影响
- 库存、金额、业务状态都不会发生持久化变更;若有价格处理,仅作用于返回值或导出值。
- 收尾
- 当前链路未识别出额外步骤。
数据链路
| 接口 | 调用类型 | 库名.表名 | mapper.page | sql作用(简写) |
|---|---|---|---|---|
POST /dm-device/repairWorkOrders/page | 查询 | ?.repair_work_orders | MyBatis-Plus ServiceImpl.page | 按筛选条件分页查询物料主数据 |
POST /dm-device/repairWorkOrders/page | 远程读取 | ?.附件数据 | fileClient.listFile | 批量查询附件并补充图片地址 |
数据流走向
- 数据来源:
- 前端页面通过 <boxSearch> @research -> research -> currentChange -> getPage -> pageAjax 触发请求
- 数据处理路径:
- Controller:
page - Service:
pages - 调用文件服务批量查询附件,再拼接前端展示用
baseUrl。 - 数据落点:
- ?.repair_work_orders
- ?.附件数据
备注
- 当前
/page主链没有走自定义 Mapper XML,而是走 MyBatis-Plus 通用分页查询。 - 前端请求路径含服务前缀
/dm-device,合理推断该前缀来自网关或服务路由。
6.2 POST /dm-device/repairWorkOrders/exportExcel
接口信息
- 请求地址:
/dm-device/repairWorkOrders/exportExcel - 请求方式:
POST - 功能简述:Excel 导出
- 所属页面:主页面
- 前端触发链路:
- <el-button> @click -> exportAction -> exportExcelAjax
- 后端入口:
exportExcel - Service 方法:
exportExcel
入参
- 后端接口实际接收对象:
RepairWorkOrdersQueryVo - 参数位置:
body
json
{
"ids": [],
"field": "",
"order": "",
"workOrderNo": "",
"deviceCode": "",
"lineNo": "",
"urgencyDegree": "",
"orderStatus": "",
"reportTime": "",
"signInTime": "",
"repairTime": "",
"productLineSet": ""
}已在源码中确认的有效字段包括:
field;类型:String;来源:前端导出动作实际可发送order;类型:String;来源:前端导出动作实际可发送factoryNo;类型:String;来源:后端对象支持,当前导出动作未发送Ids;类型:Set<Long>;说明:id集合;来源:后端对象支持,当前导出动作未发送workOrderNo;类型:String;说明:工单单号;校验:长度不超过 50;来源:前端导出动作实际可发送deviceCode;类型:String;说明:设备识别码;校验:长度不超过 50;来源:前端导出动作实际可发送deviceNo;类型:String;说明:设备代号;校验:长度不超过 50;来源:后端对象支持,当前导出动作未发送lineNo;类型:String;说明:线体代号;校验:长度不超过 50;来源:前端导出动作实际可发送urgencyDegree;类型:Integer;说明:紧急程度;校验:必填;来源:前端导出动作实际可发送orderStatus;类型:Integer;说明:工单状态;校验:必填;来源:前端导出动作实际可发送signInTimeStart;类型:Date;说明:签到时间-开始;来源:后端对象支持,当前导出动作未发送signInTimeEnd;类型:Date;说明:签到时间-结束;来源:后端对象支持,当前导出动作未发送repairTimeStart;类型:Date;说明:维修时间-开始;来源:后端对象支持,当前导出动作未发送repairTimeEnd;类型:Date;说明:维修时间-结束;来源:后端对象支持,当前导出动作未发送deptList;类型:List<String>;说明:部门代号;来源:后端对象支持,当前导出动作未发送excutorNo;类型:String;来源:后端对象支持,当前导出动作未发送queryData;类型:String;说明:app维修工单搜索检索条件;来源:后端对象支持,当前导出动作未发送statusSet;类型:Set;来源:后端对象支持,当前导出动作未发送productLineSet;类型:Set<String>;说明:产品线集合;来源:前端导出动作实际可发送lineVoList;类型:Set<String>;说明:线体集合;来源:后端对象支持,当前导出动作未发送isStat;类型:Integer;说明:是否统计类接口 1、是 其他、否;来源:后端对象支持,当前导出动作未发送deviceTypeNames;类型:List<String>;说明:设备种类集合;来源:后端对象支持,当前导出动作未发送deviceClassifys;类型:List<Integer>;来源:后端对象支持,当前导出动作未发送deviceTypeNos;类型:List<String>;来源:后端对象支持,当前导出动作未发送deviceTypeVoList;类型:List<DeviceTypeVo>;来源:后端对象支持,当前导出动作未发送deviceNos;类型:List<String>;来源:后端对象支持,当前导出动作未发送secondsDiff;类型:int;来源:后端对象支持,当前导出动作未发送issueCode;类型:String;来源:后端对象支持,当前导出动作未发送issueName;类型:String;来源:后端对象支持,当前导出动作未发送issueClassify;类型:Long;来源:后端对象支持,当前导出动作未发送deviceClassify;类型:Integer;来源:后端对象支持,当前导出动作未发送deviceTypeName;类型:String;来源:后端对象支持,当前导出动作未发送deviceTypeNo;类型:String;来源:后端对象支持,当前导出动作未发送
出参
外层响应:文件下载流
业务数据体:Excel 二进制响应
前端通过下载服务直接处理文件响应,不经过普通 JSON 列表渲染。
后端逻辑链路
- 校验
- Controller 入口为
exportExcel(@RequestBody RepairWorkOrdersQueryVo vo, HttpServletResponse response),由@Validated和请求对象注解触发基础参数校验。
- 预处理
- 当前链路未识别出额外步骤。
- 核心业务
- 把查询结果转成 Excel 视图对象后导出文件。
- 状态变更
- 当前链路无数据库写操作。
- 数据影响
- 库存、金额、业务状态都不会发生持久化变更;若有价格处理,仅作用于返回值或导出值。
- 收尾
- 当前链路未识别出额外步骤。
数据链路
| 接口 | 调用类型 | 库名.表名 | mapper.page | sql作用(简写) |
|---|---|---|---|---|
POST /dm-device/repairWorkOrders/exportExcel | 查询 | ?.repair_work_orders | MyBatis-Plus ServiceImpl.list | 按筛选条件导出物料主数据 |
数据流走向
- 数据来源:
- 前端页面通过 <el-button> @click -> exportAction -> exportExcelAjax 触发请求
- 数据处理路径:
- Controller:
exportExcel - Service:
exportExcel - 把查询结果转成 Excel 视图对象后导出文件。
- 数据落点:
- ?.repair_work_orders
备注
- 前端请求路径含服务前缀
/dm-device,合理推断该前缀来自网关或服务路由。
6.3 POST /dm-device/repairWorkOrders/orderStatusUpdate
接口信息
- 请求地址:
/dm-device/repairWorkOrders/orderStatusUpdate - 请求方式:
POST - 功能简述:业务请求
- 所属页面:主页面
- 前端触发链路:
- <el-button> @click -> closeOrderHander -> orderStatusUpdateAjax
- 后端入口:
orderStatusUpdate - Service 方法:
orderStatusUpdate
入参
参数位置:
unknown当前链路未展开到更细的字段级定义。
出参
外层响应:ResultData
业务数据体:框架统一成功响应
当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。
后端逻辑链路
- 校验
- Controller 入口为
orderStatusUpdate(@Valid @RequestBody WorkOrdersUpdate orderUpdate),由@Validated和请求对象注解触发基础参数校验。
- 预处理
- Service 内先构造
LambdaQueryWrapper作为条件容器。
- 核心业务
- 当前链路未识别出额外步骤。
- 状态变更
- 当前链路未识别出额外步骤。
- 数据影响
- 当前链路未识别出额外步骤。
- 收尾
- 当前链路未识别出额外步骤。
数据链路
- 当前链路未识别到明确数据库表操作。
数据流走向
- 数据来源:
- 前端页面通过 <el-button> @click -> closeOrderHander -> orderStatusUpdateAjax 触发请求
- 数据处理路径:
- Controller:
orderStatusUpdate - Service:
orderStatusUpdate - 数据落点:
- 当前链路未识别到明确数据落点。
备注
- 前端请求路径含服务前缀
/dm-device,合理推断该前缀来自网关或服务路由。
6.4 POST /dm-device/repairWorkOrders/save
接口信息
- 请求地址:
/dm-device/repairWorkOrders/save - 请求方式:
POST - 功能简述:业务请求
- 所属页面:主页面
- 后端入口:
save - Service 方法:
saveRepairWorkOrders
入参
参数位置:
unknown当前链路未展开到更细的字段级定义。
出参
外层响应:ResultData
业务数据体:框架统一成功响应
当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。
后端逻辑链路
- 校验
- Controller 入口为
save(@Valid @RequestBody RepairWorkOrdersVo workOrdersVo),由@Validated和请求对象注解触发基础参数校验。
- 预处理
- Service 内先构造
LambdaQueryWrapper作为条件容器。
- 核心业务
- 当前链路未识别出额外步骤。
- 状态变更
- 当前链路未识别出额外步骤。
- 数据影响
- 当前链路未识别出额外步骤。
- 收尾
- 当前链路未识别出额外步骤。
数据链路
| 接口 | 调用类型 | 库名.表名 | mapper.page | sql作用(简写) |
|---|---|---|---|---|
POST /dm-device/repairWorkOrders/save | 远程写入 | ?.附件数据 | fileClient.updateFile | 回写附件 targetId,绑定业务对象 |
数据流走向
- 数据来源:
- 前端页面通过 当前页面动作 触发请求
- 数据处理路径:
- Controller:
save - Service:
saveRepairWorkOrders - 数据落点:
- ?.附件数据
备注
- 前端请求路径含服务前缀
/dm-device,合理推断该前缀来自网关或服务路由。
6.5 POST /dm-device/repairWorkOrders/statisticsWorkOrder
接口信息
- 请求地址:
/dm-device/repairWorkOrders/statisticsWorkOrder - 请求方式:
POST - 功能简述:业务请求
- 所属页面:主页面
- 前端触发链路:
- <el-button> @click -> closeOrderHander -> getStatisticsWorkOrderAjax -> statisticsWorkOrderAjax
- activated 生命周期 -> activated -> getStatisticsWorkOrderAjax -> statisticsWorkOrderAjax
- 后端入口:
statisticsWorkOrder - Service 方法:
statisticsWorkOrder
入参
参数位置:
unknown当前链路未展开到更细的字段级定义。
出参
外层响应:ResultData
业务数据体:框架统一成功响应
当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。
后端逻辑链路
- 校验
- Controller 入口为
statisticsWorkOrder(@RequestBody RepairWorkOrdersQueryVo vo),由@Validated和请求对象注解触发基础参数校验。
- 预处理
- 当前链路未识别出额外步骤。
- 核心业务
- 当前链路未识别出额外步骤。
- 状态变更
- 当前链路未识别出额外步骤。
- 数据影响
- 当前链路未识别出额外步骤。
- 收尾
- 当前链路未识别出额外步骤。
数据链路
- 当前链路未识别到明确数据库表操作。
数据流走向
- 数据来源:
- 前端页面通过 <el-button> @click -> closeOrderHander -> getStatisticsWorkOrderAjax -> statisticsWorkOrderAjax 触发请求
- 数据处理路径:
- Controller:
statisticsWorkOrder - Service:
statisticsWorkOrder - 数据落点:
- 当前链路未识别到明确数据落点。
备注
- 前端请求路径含服务前缀
/dm-device,合理推断该前缀来自网关或服务路由。
6.6 POST /dm-device/repairWorkOrders/upload/errorImg
接口信息
- 请求地址:
/dm-device/repairWorkOrders/upload/errorImg - 请求方式:
POST - 功能简述:业务请求
- 所属页面:主页面
- 后端入口:
errorImg - Service 方法:
errorImg
入参
参数位置:
unknown当前链路未展开到更细的字段级定义。
出参
外层响应:ResultData
业务数据体:框架统一成功响应
当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。
后端逻辑链路
- 校验
- 当前链路未识别出额外步骤。
- 预处理
- 当前链路未识别出额外步骤。
- 核心业务
- 文件上传接口会把文件直接转发给文件服务并返回附件元数据。
- 状态变更
- 当前链路未识别出额外步骤。
- 数据影响
- 当前链路未识别出额外步骤。
- 收尾
- 当前链路未识别出额外步骤。
数据链路
| 接口 | 调用类型 | 库名.表名 | mapper.page | sql作用(简写) |
|---|---|---|---|---|
POST /dm-device/repairWorkOrders/upload/errorImg | 远程写入 | ?.附件数据 | fileClient.uploadFile | 上传附件到文件服务 |
数据流走向
- 数据来源:
- 前端页面通过 当前页面动作 触发请求
- 数据处理路径:
- Controller:
errorImg - Service:
errorImg - 文件上传接口会把文件直接转发给文件服务并返回附件元数据。
- 数据落点:
- ?.附件数据
备注
- 前端请求路径含服务前缀
/dm-device,合理推断该前缀来自网关或服务路由。
重点组件说明
组件:index
- 角色:主页面
- 层级路径:
index - 是否直接CRUD:否
- 一句话作用:承接 order 页面主入口、列表查询和业务操作入口。
- 业务动作:新增提交
7. 子组件列表
detail:路由路径/default/devicemate/repair/order/detail
8. 修改入口
- 改当前节点逻辑:先看上游入口,再看组件总览和业务页面跳转链路,最后核对接口与后端落点。
- 改跳页逻辑:不仅要改当前页的方法和参数,还要同步检查目标页文档是否受影响。
- 当前自动分析未识别出额外高风险点,但仍建议顺着子组件列表逐级核对。