Skip to content

classification 链路分析

源文件:docs/front end/dm/lemes-web/src/views/devicemate/information/classification/classification.vue

前端 API:docs/front end/dm/lemes-web/src/views/devicemate/api/information/classification/classification.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/DeviceIssuesController.java / 未识别

主表:classification

Vue 组件总览

组件层级路径角色是否主链路是否直接CRUD独立MD跳转一句话作用
indexindex主页面当前页查看承接 classification 页面主入口、列表查询,以及 2 个重点子组件的调度。
addClassificationindex > addClassification重点子组件查看承接新增表单录入、校验和提交。
editClassificationindex > editClassification重点子组件查看承接详情回显、字段修改和提交。
importFileindex > importFile业务化公共组件查看复用通用组件外壳,但当前页通过 :import-file-ajax 注入业务配置,承接Excel 导入。

辅助组件说明

  • boxSearch:负责查询条件区,支持搜索和清空事件触发。
  • iTable:负责通用列表渲染、分页、多选、排序和操作列承载。
  • dialogs:负责通用弹窗容器、确认和关闭交互,在 addClassification / editClassification / importFile 中复用。

技术图

classification 页面数据流图

  • Flow 布局:standardclassification 页面摘要图

  • Summary 布局:standard

1. 页面概览

  • 当前节点对应文件 docs/front end/dm/lemes-web/src/views/devicemate/information/classification/classification.vue
  • 当前节点识别到 3 个重点组件、9 个辅助组件。
  • 当前节点识别到 0 条业务页面跳转链路、6 个真实接口。
  • 搜索动作会把 filterList 同步到 searchFilter,并把页码重置为第 1 页。
  • 重置动作会清空查询条件,再走一次分页查询。
  • 表格排序会把前端排序字段写入 field / order,再触发服务端排序查询。

2. 上游入口

  • 当前节点是本次递归文档的根入口。

3. 业务页面跳转链路

  • 当前节点未识别出业务页面跳转链路。

4. 前端真实调用链

  • <boxSearch> @research / <el-input> @clear / <el-input> @clear / <el-input> @clear -> research -> getPageListAjax
  • <boxSearch> @reempty -> reempty -> getPageListAjax
  • <iTable> @size-change / <iTable> @current-change -> currentChange -> getPageListAjax
  • <el-button> @click -> deleteClassificationArr -> deviceIssuesDeleteAjax / getPageListAjax
  • <importFile> @importAction -> importAction -> getPageListAjax
  • activated 生命周期 -> activated -> getPageListAjax
  • <el-button> @click -> getTemplateData -> getTemplateList
  • mounted 生命周期 -> mounted -> getDictLists

5. 接口总览

methodpath功能所属节点前端触发后端入口
POST/dm-device/deviceIssues/page分页查询主页面<boxSearch> @research / <el-input> @clear / <el-input> @clear / <el-input> @clear -> research -> currentChange -> getPage -> getPageListAjaxpage
POST/dm-device/deviceIssues/add新增提交主页面
addClassification 新增页
父页 addFlag = true -> addClassification.vue approvalAction -> emit addAction -> 父页 addAction -> deviceIssuesAddAjaxadd
POST/dm-device/deviceIssues/update更新提交主页面
editClassification 编辑页
父页 updateDate = id / updateFlag = true -> editClassification.vue approvalAction -> emit updateAction -> 父页 updateSubmitAction -> deviceIssuesUpdateAjaxupdate
POST/dm-device/deviceIssues/importExcelExcel 导入主页面-importExcel
POST/dm-device/deviceIssues/batchDelete业务请求主页面<el-button> @click -> deleteClassificationArr -> deviceIssuesDeleteAjaxbatchDelete
POST/dm-device/deviceType/findDeviceTypeList业务请求addClassification 新增页
editClassification 编辑页
--

6. 接口详细说明

6.1 POST /dm-device/deviceIssues/page

接口信息

  • 请求地址:/dm-device/deviceIssues/page
  • 请求方式:POST
  • 功能简述:分页查询
  • 所属页面:主页面
  • 前端触发链路:
  • <boxSearch> @research / <el-input> @clear / <el-input> @clear / <el-input> @clear -> research -> currentChange -> getPage -> getPageListAjax
  • <boxSearch> @reempty -> reempty -> currentChange -> getPage -> getPageListAjax
  • <iTable> @size-change / <iTable> @current-change -> currentChange -> getPage -> getPageListAjax
  • <el-button> @click -> deleteClassificationArr -> currentChange -> getPage -> getPageListAjax
  • <importFile> @importAction -> importAction -> currentChange -> getPage -> getPageListAjax
  • activated 生命周期 -> activated -> currentChange -> getPage -> getPageListAjax
  • 后端入口:page
  • Service 方法:pages

入参

  • 参数位置:body
json
{
  "pageSize": 10,
  "pageNum": 1,
  "field": "",
  "order": "",
  "deviceClassify": "",
  "deviceTypeNo": "",
  "deviceTypeName": "",
  "issueClassify": "",
  "issueCode": "",
  "parentIssueCode": "",
  "description": ""
}
  • 当前链路未展开到更细的字段级定义。

出参

  • 外层响应: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
}
  • id

  • partNo

  • partCode

  • partName

  • bigCategory

  • smallCategory

  • sonCategory

  • spec

  • uom

  • controlType

  • currency

  • price

  • preferredSupplier

  • supplierNo

  • isPeriod

  • isLife

  • maxLife

  • maxLifeUom

  • useModel

  • preciousType

  • validFlag

  • description

  • packageNumber

  • serialRule

  • baseUrl

  • BaseController.getDataTable(IPage<?>) 会固定组装 rowstotal

  • 前端 ajax.js 会继续把 ResultData.data 解包后返回给页面。

后端逻辑链路

  1. 校验
  • Controller 入口为 page(@RequestBody IssuesClassificationQueryVo vo),由 @Validated 和请求对象注解触发基础参数校验。
  1. 预处理
  • 当前链路未识别出额外步骤。
  1. 核心业务
  • 当前链路未识别出额外步骤。
  1. 状态变更
  • 当前链路无数据库写操作。
  1. 数据影响
  • 库存、金额、业务状态都不会发生持久化变更;若有价格处理,仅作用于返回值或导出值。
  1. 收尾
  • Controller 通过 success(...) 返回框架统一成功响应。

数据链路

接口调用类型库名.表名mapper.pagesql作用(简写)
POST /dm-device/deviceIssues/page查询?.classificationMyBatis-Plus ServiceImpl.page按筛选条件分页查询物料主数据

数据流走向

  • 数据来源:
  • 前端页面通过 <boxSearch> @research / <el-input> @clear / <el-input> @clear / <el-input> @clear -> research -> currentChange -> getPage -> getPageListAjax 触发请求
  • 数据处理路径:
  • Controller:page
  • Service:pages
  • 数据落点:
  • ?.classification

备注

  • 前端请求路径含服务前缀 /dm-device,合理推断该前缀来自网关或服务路由。

6.2 POST /dm-device/deviceIssues/add

接口信息

  • 请求地址:/dm-device/deviceIssues/add
  • 请求方式:POST
  • 功能简述:新增提交
  • 所属页面:主页面 / addClassification 新增页
  • 前端触发链路:
  • 父页 addFlag = true -> addClassification.vue approvalAction -> emit addAction -> 父页 addAction -> deviceIssuesAddAjax
  • 后端入口:add
  • Service 方法:addIssuesClassification

入参

  • 参数位置:body
json
{
  "issueClassify": "",
  "description": ""
}
  • 当前链路未展开到更细的字段级定义。

出参

  • 外层响应:ResultData

  • 业务数据体:框架统一成功响应

  • 当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。

后端逻辑链路

  1. 校验
  • Controller 入口为 add(@Validated @RequestBody IssuesClassificationVo vo),由 @Validated 和请求对象注解触发基础参数校验。
  1. 预处理
  • 当前链路未识别出额外步骤。
  1. 核心业务
  • 当前链路未识别出额外步骤。
  1. 状态变更
  • 会向 part_main 插入一条新记录,并在有附件时回写附件 targetId
  1. 数据影响
  • 主表新增一条物料主数据;附件记录绑定到新生成的业务 id。
  1. 收尾
  • Controller 通过 success(...) 返回框架统一成功响应。

数据链路

接口调用类型库名.表名mapper.pagesql作用(简写)
POST /dm-device/deviceIssues/add新增?.classificationMyBatis-Plus save新增物料主数据

数据流走向

  • 数据来源:
  • 前端页面通过 父页 addFlag = true -> addClassification.vue approvalAction -> emit addAction -> 父页 addAction -> deviceIssuesAddAjax 触发请求
  • 数据处理路径:
  • Controller:add
  • Service:addIssuesClassification
  • 数据落点:
  • ?.classification

备注

  • 前端请求路径含服务前缀 /dm-device,合理推断该前缀来自网关或服务路由。

6.3 POST /dm-device/deviceIssues/update

接口信息

  • 请求地址:/dm-device/deviceIssues/update
  • 请求方式:POST
  • 功能简述:更新提交
  • 所属页面:主页面 / editClassification 编辑页
  • 前端触发链路:
  • 父页 updateDate = id / updateFlag = true -> editClassification.vue approvalAction -> emit updateAction -> 父页 updateSubmitAction -> deviceIssuesUpdateAjax
  • 后端入口:update
  • Service 方法:updateIssuesClassification

入参

  • 参数位置:body
json
{
  "id": "",
  "issueCode": "",
  "issueClassify": "",
  "description": ""
}
  • 当前链路未展开到更细的字段级定义。

出参

  • 外层响应:ResultData

  • 业务数据体:框架统一成功响应

  • 当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。

后端逻辑链路

  1. 校验
  • Controller 入口为 update(@Validated @RequestBody IssuesClassificationVo vo),由 @Validated 和请求对象注解触发基础参数校验。
  1. 预处理
  • 当前链路未识别出额外步骤。
  1. 核心业务
  • 当前链路未识别出额外步骤。
  1. 状态变更
  • 会更新 part_main 现有记录;若上传了新附件,会先删旧图再绑定新图。
  1. 数据影响
  • 主表更新既有物料主数据,附件关联可能被替换。
  1. 收尾
  • Controller 通过 success(...) 返回框架统一成功响应。

数据链路

接口调用类型库名.表名mapper.pagesql作用(简写)
POST /dm-device/deviceIssues/update更新?.classificationMyBatis-Plus updateById按 id 更新物料主数据

数据流走向

  • 数据来源:
  • 前端页面通过 父页 updateDate = id / updateFlag = true -> editClassification.vue approvalAction -> emit updateAction -> 父页 updateSubmitAction -> deviceIssuesUpdateAjax 触发请求
  • 数据处理路径:
  • Controller:update
  • Service:updateIssuesClassification
  • 数据落点:
  • ?.classification

备注

  • 前端请求路径含服务前缀 /dm-device,合理推断该前缀来自网关或服务路由。

6.4 POST /dm-device/deviceIssues/importExcel

接口信息

  • 请求地址:/dm-device/deviceIssues/importExcel
  • 请求方式:POST
  • 功能简述:Excel 导入
  • 所属页面:主页面
  • 后端入口:importExcel
  • Service 方法:importExcel

入参

  • 后端接口实际接收对象:MultipartFile
  • 参数位置:formData

已在源码中确认的有效字段包括:

  • file;类型:MultipartFile;说明:Excel 文件;校验:必填

出参

  • 外层响应:ResultData<ImportResultInfo>

  • 业务数据体:导入结果对象

  • 当前链路可证实返回导入成功/失败汇总,但未继续展开 ImportResultInfo 的全部字段定义。

后端逻辑链路

  1. 校验
  • 当前链路未识别出额外步骤。
  1. 预处理
  • 当前链路未识别出额外步骤。
  1. 核心业务
  • 当前链路未识别出额外步骤。
  1. 状态变更
  • 成功导入后会批量新增或更新 part_main
  1. 数据影响
  • 导入数据会对主表做批量 upsert。
  1. 收尾
  • Controller 通过 success(...) 返回框架统一成功响应。

数据链路

接口调用类型库名.表名mapper.pagesql作用(简写)
POST /dm-device/deviceIssues/importExcel更新?.classificationMyBatis-Plus saveOrUpdateBatch批量新增或更新物料主数据

数据流走向

  • 数据来源:
  • 前端页面通过 当前页面动作 触发请求
  • 数据处理路径:
  • Controller:importExcel
  • Service:importExcel
  • 数据落点:
  • ?.classification

备注

  • 前端请求路径含服务前缀 /dm-device,合理推断该前缀来自网关或服务路由。

6.5 POST /dm-device/deviceIssues/batchDelete

接口信息

  • 请求地址:/dm-device/deviceIssues/batchDelete
  • 请求方式:POST
  • 功能简述:业务请求
  • 所属页面:主页面
  • 前端触发链路:
  • <el-button> @click -> deleteClassificationArr -> deviceIssuesDeleteAjax
  • 后端入口:batchDelete
  • Service 方法:batchDelete

入参

  • 参数位置:unknown

  • 当前链路未展开到更细的字段级定义。

出参

  • 外层响应:ResultData

  • 业务数据体:框架统一成功响应

  • 当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。

后端逻辑链路

  1. 校验
  • Controller 入口为 batchDelete(@RequestBody Long[] ids),由 @Validated 和请求对象注解触发基础参数校验。
  1. 预处理
  • 当前链路未识别出额外步骤。
  1. 核心业务
  • 当前链路未识别出额外步骤。
  1. 状态变更
  • 当前链路未识别出额外步骤。
  1. 数据影响
  • 当前链路未识别出额外步骤。
  1. 收尾
  • Controller 通过 success(...) 返回框架统一成功响应。

数据链路

  • 当前链路未识别到明确数据库表操作。

数据流走向

  • 数据来源:
  • 前端页面通过 <el-button> @click -> deleteClassificationArr -> deviceIssuesDeleteAjax 触发请求
  • 数据处理路径:
  • Controller:batchDelete
  • Service:batchDelete
  • 数据落点:
  • 当前链路未识别到明确数据落点。

备注

  • 前端请求路径含服务前缀 /dm-device,合理推断该前缀来自网关或服务路由。

6.6 POST /dm-device/deviceType/findDeviceTypeList

接口信息

  • 请求地址:/dm-device/deviceType/findDeviceTypeList
  • 请求方式:POST
  • 功能简述:业务请求
  • 所属页面:addClassification 新增页 / editClassification 编辑页

入参

  • 参数位置:unknown

  • 当前链路未展开到更细的字段级定义。

出参

  • 外层响应:ResultData

  • 业务数据体:框架统一成功响应

  • 当前链路重点在业务动作与后端处理,公共包裹字段未继续展开。

后端逻辑链路

  1. 校验
  • 当前链路未识别出额外步骤。
  1. 预处理
  • 当前链路未识别出额外步骤。
  1. 核心业务
  • 当前链路未识别出额外步骤。
  1. 状态变更
  • 当前链路未识别出额外步骤。
  1. 数据影响
  • 当前链路未识别出额外步骤。
  1. 收尾
  • 当前链路未识别出额外步骤。

数据链路

  • 当前链路未识别到明确数据库表操作。

数据流走向

  • 数据来源:
  • 前端页面通过 当前页面动作 触发请求
  • 数据处理路径:
  • 数据落点:
  • 当前链路未识别到明确数据落点。

备注

  • 当前只定位到前端接口与后端落点文件,未从 Controller 中匹配到完全一致的方法映射。
  • 前端请求路径含服务前缀 /dm-device,合理推断该前缀来自网关或服务路由。

重点组件说明

组件:index

  • 角色:主页面
  • 层级路径:index
  • 是否直接CRUD:否
  • 一句话作用:承接 classification 页面主入口、列表查询,以及 2 个重点子组件的调度。
  • 业务动作:新增提交、删除提交、更新提交、Excel 导入
  • 下游重点组件:addClassification / editClassification / importFile

组件:addClassification

  • 角色:重点子组件
  • 层级路径:index > addClassification
  • 父组件:index
  • 是否直接CRUD:是
  • 一句话作用:承接新增表单录入、校验和提交。
  • 业务动作:新增提交
  • 详细说明:查看独立说明

组件:editClassification

  • 角色:重点子组件
  • 层级路径:index > editClassification
  • 父组件:index
  • 是否直接CRUD:是
  • 一句话作用:承接详情回显、字段修改和提交。
  • 业务动作:更新提交
  • 详细说明:查看独立说明

组件:importFile

  • 角色:业务化公共组件
  • 层级路径:index > importFile
  • 父组件:index
  • 是否直接CRUD:是
  • 一句话作用:复用通用组件外壳,但当前页通过 :import-file-ajax 注入业务配置,承接Excel 导入。
  • 业务动作:Excel 导入
  • 详细说明:不单独生成 MD,说明保留在当前主页面文档。

7. 子组件列表

8. 修改入口

  • 改当前节点逻辑:先看上游入口,再看组件总览和业务页面跳转链路,最后核对接口与后端落点。
  • 当前自动分析未识别出额外高风险点,但仍建议顺着子组件列表逐级核对。