Appearance
设备类型管理
**本文引用的文件** - [DeviceTypeApi.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/api/DeviceTypeApi.java) - [DeviceTypeController.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/controller/DeviceTypeController.java) - [DeviceTypeService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/service/DeviceTypeService.java) - [DeviceTypeServiceImpl.java](file://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/DeviceTypeServiceImpl.java) - [DeviceTypeMapper.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/mapper/DeviceTypeMapper.java) - [DeviceTypeDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/client/entity/inner/DeviceTypeDo.java) - [DeviceTypeVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/client/entity/outer/DeviceTypeVo.java) - [DeviceTypeTreeVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/client/entity/outer/DeviceTypeTreeVo.java) - [DeviceTypeQueryVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/client/entity/query/DeviceTypeQueryVo.java) - [DeviceTypeImport.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/client/entity/excel/DeviceTypeImport.java) - [DeviceTypeImportVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/client/entity/excel/DeviceTypeImportVo.java) - [DeviceMainDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/device/DeviceMainDo.java) - [MaintenanceStandardsDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/device/MaintenanceStandardsDo.java) - [basicInfo.vue](file://app/devicemate-app/modules/equipment/basicInfo.vue) - [equipment.js](file://app/devicemate-app/store/modules/equipment.js)目录
简介
本技术文档围绕“设备类型管理”功能进行系统化梳理,覆盖设备分类体系的实现机制、数据模型设计、与设备主数据的关联关系、类型选择与校验机制、完整的RESTful API接口、树形结构查询、批量操作、导入导出流程、最佳实践与性能优化建议。文档以代码为依据,结合前后端交互与作业任务侧的设备主数据模型,帮助开发者与运维人员快速理解并高效使用该能力。
项目结构
设备类型管理位于“设备域(dm-device)”业务模块中,采用典型的分层架构:API接口定义、控制器、服务层、持久层与数据模型。前端通过统一网关调用后端接口,同时设备主数据在作业任务侧也有相应DO映射,用于下游统计与维护场景。
图示来源
- DeviceTypeApi.java:1-22
- DeviceTypeController.java:1-200
- DeviceTypeService.java:1-152
- DeviceTypeServiceImpl.java:1-800
- DeviceTypeMapper.java:1-23
- DeviceTypeDo.java:1-63
- DeviceTypeVo.java:1-106
- DeviceTypeTreeVo.java:1-28
- DeviceTypeQueryVo.java:1-57
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
- DeviceMainDo.java:1-47
- MaintenanceStandardsDo.java:1-85
- basicInfo.vue:98-150
- equipment.js:2-34
章节来源
- DeviceTypeController.java:1-200
- DeviceTypeService.java:1-152
- DeviceTypeServiceImpl.java:1-800
- DeviceTypeMapper.java:1-23
- DeviceTypeDo.java:1-63
- DeviceTypeVo.java:1-106
- DeviceTypeTreeVo.java:1-28
- DeviceTypeQueryVo.java:1-57
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
- DeviceMainDo.java:1-47
- MaintenanceStandardsDo.java:1-85
- basicInfo.vue:98-150
- equipment.js:2-34
核心组件
- 接口定义层:对外暴露设备类型相关API,如按物料查询设备类型等。
- 控制器层:接收请求、参数校验、调用服务层、返回统一结果封装。
- 服务层:实现业务逻辑,包括CRUD、树形查询、导入导出、附件上传、与物料主数据同步等。
- 持久层:MyBatis-Plus Mapper,提供分页与列表查询。
- 数据模型:DO(数据库实体)、VO(对外传输对象、树形结构、查询条件)、Excel导入模型。
- 前端集成:设备详情页调用后端接口,Vuex存储设备标识,支撑设备创建与关联。
章节来源
- DeviceTypeApi.java:1-22
- DeviceTypeController.java:1-200
- DeviceTypeService.java:1-152
- DeviceTypeServiceImpl.java:1-800
- DeviceTypeMapper.java:1-23
- DeviceTypeDo.java:1-63
- DeviceTypeVo.java:1-106
- DeviceTypeTreeVo.java:1-28
- DeviceTypeQueryVo.java:1-57
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
- basicInfo.vue:98-150
- equipment.js:2-34
架构总览
设备类型管理遵循“接口-控制器-服务-持久层”的分层设计,配合统一返回封装与Feign客户端调用,实现与文件中心、字典、物料主数据、仓库主数据等系统的解耦协作。
图示来源
- DeviceTypeController.java:178-198
- DeviceTypeServiceImpl.java:90-93
- DeviceTypeServiceImpl.java:190-208
- DeviceTypeServiceImpl.java:190-208
- DeviceTypeServiceImpl.java:297-313
- DeviceTypeServiceImpl.java:757-781
详细组件分析
数据模型设计
- 设备类型实体(DO)
- 字段:设备种类代号、设备种类名称、设备分类、设备名称、设备型号、设备产地、设备厂商、说明、序列号生成规范、是否同步物料主数据等。
- 用途:持久化存储与数据库表映射。
- 设备类型视图(VO)
- 字段:设备类型基础信息 + 附件/文件列表 + 仪表配置、安全提示、规格参数、备品备件/耗材列表 + 树节点扩展字段。
- 用途:对外传输与前端渲染。
- 树形结构(TreeVo)
- 字段:设备分类字典 + 设备类型列表。
- 用途:按分类聚合的树形展示。
- 查询条件(QueryVo)
- 字段:设备种类名称、设备分类、设备名称、设备型号、查询类型、物料编码、设备编号、部门名称、产品线集合、物料号、部门号集合等。
- 用途:支持多维筛选与去重查询。
- Excel导入模型
- DeviceTypeImport:导入模板字段(设备种类、设备分类、设备型号)。
- DeviceTypeImportVo:导入模板字段(物料编码、仓库名称等),并扩展行号与错误信息。
图示来源
- DeviceTypeDo.java:1-63
- DeviceTypeVo.java:1-106
- DeviceTypeTreeVo.java:1-28
- DeviceTypeQueryVo.java:1-57
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
章节来源
- DeviceTypeDo.java:1-63
- DeviceTypeVo.java:1-106
- DeviceTypeTreeVo.java:1-28
- DeviceTypeQueryVo.java:1-57
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
设备类型与设备主数据的关联关系
- 设备主数据(DeviceMainDo)包含设备种类代号(deviceTypeNo),用于在设备创建时与设备类型建立关联。
- 维保标准(MaintenanceStandardsDo)包含设备分类与设备种类代号,体现设备类型在维护维度的约束。
- 设备类型VO中包含仪表、安全提示、规格参数、备品备件/耗材等子项,这些信息在设备创建时可作为参考或默认值。
图示来源
章节来源
设备类型CRUD与树形查询
- CRUD:提供新增、更新、删除、批量删除、分页查询、列表查询、按设备类型代号查询等接口。
- 树形查询:支持按条件获取设备类型树与纯列表树,便于前端选择器渲染。
- 类型选择与验证:保存时对设备类型名称格式、唯一性、分类字典有效性进行校验;更新时避免重复组合;删除前进行依赖检查。
图示来源
- DeviceTypeController.java:42-102
- DeviceTypeServiceImpl.java:251-296
- DeviceTypeServiceImpl.java:90-93
- DeviceTypeServiceImpl.java:178-182
章节来源
设备类型导入导出
- 导入接口:支持Excel导入设备类型与关联物料信息,解析后进行校验与入库。
- 模板设计:DeviceTypeImport对应设备类型基础字段;DeviceTypeImportVo对应物料与仓库信息字段。
- 数据验证:字段长度限制、字典映射、重复性检查、错误信息回传。
- 导出:当前代码未提供专用导出接口,可通过分页查询+前端导出实现。
图示来源
- DeviceTypeController.java:190-198
- DeviceTypeServiceImpl.java:190-208
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
章节来源
- DeviceTypeController.java:190-198
- DeviceTypeServiceImpl.java:190-208
- DeviceTypeImport.java:1-47
- DeviceTypeImportVo.java:1-69
设备类型与设备创建时的选择与验证
- 前端设备详情页通过接口获取设备类型树与列表,供用户选择设备类型。
- 设备主数据包含设备类型代号字段,确保设备与类型强关联。
- 设备类型保存时对名称格式、唯一性、分类字典进行严格校验,防止脏数据进入系统。
图示来源
- basicInfo.vue:98-150
- DeviceTypeController.java:184-188
- DeviceTypeServiceImpl.java:211-222
- DeviceMainDo.java:32-33
章节来源
- basicInfo.vue:98-150
- DeviceTypeController.java:184-188
- DeviceTypeServiceImpl.java:211-222
- DeviceMainDo.java:32-33
依赖分析
- 控制器依赖服务接口,服务实现依赖Mapper、Feign客户端(文件中心、字典、物料主数据、仓库主数据)、Redis序列号生成器。
- 前端通过统一网关调用控制器接口,Vuex模块管理设备标识,支撑设备详情与创建流程。
- 作业任务侧的设备主数据与维保标准均依赖设备类型代号,形成从“类型—设备—标准”的完整链路。
图示来源
- DeviceTypeController.java:1-200
- DeviceTypeServiceImpl.java:1-800
- DeviceTypeMapper.java:1-23
- basicInfo.vue:98-150
- equipment.js:2-34
- DeviceMainDo.java:1-47
- MaintenanceStandardsDo.java:1-85
章节来源
- DeviceTypeController.java:1-200
- DeviceTypeServiceImpl.java:1-800
- DeviceTypeMapper.java:1-23
- basicInfo.vue:98-150
- equipment.js:2-34
- DeviceMainDo.java:1-47
- MaintenanceStandardsDo.java:1-85
性能考虑
- 分页查询:使用MyBatis-Plus Page与Mapper分页接口,避免一次性加载大量数据。
- 批量操作:批量删除限制数量上限,避免超大事务导致锁竞争与延迟。
- 缓存与序列号:通过Redis生成编号与序列号,减少数据库压力。
- 子数据联动:保存/更新时对仪表、安全提示、规格参数、备品备件/耗材进行批量处理,注意控制单次批量大小。
- 文件上传:上传完成后及时更新目标ID,避免悬挂文件占用存储。
故障排查指南
- 常见异常码与定位
- 参数缺失/非法:如必填字段为空、格式不合法、字典值无效等,抛出自定义异常并返回对应错误码。
- 重复冲突:设备类型名称+分类+型号组合重复,或名称格式不符合规则。
- 删除依赖:删除前需检查是否存在设备/计划等依赖,否则拒绝删除。
- 文件上传失败:检查文件中心返回码与业务键配置。
- 排查步骤
- 查看控制器日志与统一返回封装中的错误码。
- 核对服务层校验逻辑与Feign调用返回状态。
- 检查Redis序列号生成与字典缓存是否正常。
- 对批量操作进行限流与分批处理,避免超时与锁冲突。
章节来源
- DeviceTypeServiceImpl.java:251-296
- DeviceTypeServiceImpl.java:686-754
- DeviceTypeServiceImpl.java:784-800
结论
设备类型管理以清晰的分层架构与完善的校验机制为基础,结合树形查询、批量操作与导入导出能力,满足设备主数据治理与设备创建的类型选择需求。通过与文件中心、字典、物料主数据、仓库主数据的协同,形成从类型到设备再到维护标准的完整闭环。建议在生产环境中强化批量操作的并发控制与监控告警,并持续完善导入模板与校验规则,提升数据质量与用户体验。
附录
API接口清单(RESTful)
- 分页查询设备类型
- 方法:POST
- 路径:/deviceType/page
- 请求体:DeviceTypeQueryVo
- 响应体:分页结果(IPage<DeviceTypeVo>)
- 根据ID获取设备类型
- 方法:GET
- 路径:/deviceType/
- 响应体:DeviceTypeVo
- 获取设备类型列表
- 方法:POST
- 路径:/deviceType/findDeviceTypeList
- 请求体:DeviceTypeQueryVo
- 响应体:列表(List<DeviceTypeVo>)
- 根据设备类型代号获取设备类型
- 方法:GET
- 路径:/deviceType/findDeviceTypeByDeviceTypeNo
- 查询参数:deviceTypeNo
- 响应体:DeviceTypeVo
- 根据关联物料查询设备种类
- 方法:GET
- 路径:/deviceType/getDeviceTypeByPartNo
- 查询参数:partNo
- 响应体:DeviceTypeVo
- 新增设备类型
- 方法:POST
- 路径:/deviceType/add
- 请求体:DeviceTypeVo
- 响应体:通用结果封装
- 更新设备类型
- 方法:POST
- 路径:/deviceType/update
- 请求体:DeviceTypeVo
- 响应体:通用结果封装
- 删除设备类型
- 方法:POST
- 路径:/deviceType/
- 路径参数:id
- 响应体:通用结果封装
- 批量删除设备类型
- 方法:POST
- 路径:/deviceType/batchDelete
- 请求体:Long[]
- 响应体:通用结果封装
- 获取可用物料主数据列表
- 方法:GET
- 路径:/deviceType/queryPartMainList
- 响应体:List<PartMainVo>
- 获取可用仓库信息列表
- 方法:GET
- 路径:/deviceType/queryStoreMainList
- 响应体:List<StoreMainVo>
- 导入设备类型Excel
- 方法:POST
- 路径:/deviceType/importDeviceTypeExcel
- 请求参数:file(MultipartFile)
- 响应体:导入结果(ImportResultInfo)
- 上传设备图片
- 方法:POST
- 路径:/deviceType/upload/img
- 请求参数:multipartFile
- 响应体:LsscAttachmentVo
- 上传设备附件
- 方法:POST
- 路径:/deviceType/upload/file
- 请求参数:multipartFile
- 响应体:LsscAttachmentVo
- 删除设备图片
- 方法:GET
- 路径:/deviceType/del/img/
- 路径参数:id
- 响应体:通用结果封装
- 删除设备附件
- 方法:GET
- 路径:/deviceType/del/file/
- 路径参数:id
- 响应体:通用结果封装
- 上传安全提示图片
- 方法:POST
- 路径:/deviceType/upload/safetyTipsImg
- 请求参数:multipartFile
- 响应体:LsscAttachmentVo
- 删除安全提示图片
- 方法:GET
- 路径:/deviceType/del/safetyTipsImg/
- 路径参数:id
- 响应体:通用结果封装
- 根据条件获取设备类型树
- 方法:POST
- 路径:/deviceType/tree
- 请求体:DeviceTypeQueryVo
- 响应体:List<DeviceTypeTreeVo>
- 获取设备类型树列表
- 方法:POST
- 路径:/deviceType/treeList
- 响应体:List<DeviceTypeVo>
章节来源