Files
MES/yawei-mes/.tasks/2025-09-26_新BOM模块后端实现总结.md
2026-04-02 10:39:03 +08:00

7.8 KiB
Raw Blame History

新BOM模块后端实现总结

概述

根据前端页面的功能需求和API接口调用完整实现了新BOM模块的后端代码包括数据表设计、实体类、Mapper接口、Service层和Controller层。

实现的功能

  1. 基础CRUD操作

    • 新增、修改、删除、查询BOM
    • BOM明细管理
    • 分页查询和条件筛选
  2. 高级功能

    • BOM复制
    • BOM版本管理
    • BOM成本计算和分析
    • BOM完整性验证
    • BOM树形结构查询
    • 替代料管理
    • 用量分析
    • 导入导出功能
  3. 状态管理

    • 草稿、已发布、已废弃三种状态
    • 版本发布和废弃操作

数据表结构

1. 新BOM主表 (md_new_bom)

CREATE TABLE `md_new_bom` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `material_id` bigint(20) NOT NULL COMMENT '产品物料ID',
  `product_code` varchar(100) NOT NULL COMMENT '产品编码',
  `product_name` varchar(200) NOT NULL COMMENT '产品名称',
  `specification` varchar(500) DEFAULT NULL COMMENT '规格型号',
  `version` varchar(50) NOT NULL COMMENT 'BOM版本',
  `bom_type` varchar(20) NOT NULL DEFAULT 'PRODUCTION' COMMENT 'BOM类型',
  `base_quantity` decimal(12,3) NOT NULL DEFAULT '1.000' COMMENT '基本数量',
  `unit_name` varchar(50) DEFAULT NULL COMMENT '单位名称',
  `total_cost` decimal(12,4) DEFAULT '0.0000' COMMENT '总成本',
  `material_cost` decimal(12,4) DEFAULT '0.0000' COMMENT '材料成本',
  `labor_cost` decimal(12,4) DEFAULT '0.0000' COMMENT '人工成本',
  `manufacturing_cost` decimal(12,4) DEFAULT '0.0000' COMMENT '制造费用',
  `status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0:草稿,1:已发布,2:已废弃)',
  `valid_from` date DEFAULT NULL COMMENT '有效期开始',
  `valid_to` date DEFAULT NULL COMMENT '有效期结束',
  `parent_id` bigint(20) DEFAULT NULL COMMENT '父级BOM ID',
  `has_children` tinyint(1) DEFAULT '0' COMMENT '是否有子级',
  `sort_order` int(11) DEFAULT '0' COMMENT '排序',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_product_version` (`material_id`, `version`),
  KEY `idx_material_id` (`material_id`),
  KEY `idx_bom_type` (`bom_type`),
  KEY `idx_status` (`status`),
  KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='新BOM主表';

2. 新BOM明细表 (md_new_bom_item)

CREATE TABLE `md_new_bom_item` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `bom_id` bigint(20) NOT NULL COMMENT 'BOM主表ID',
  `material_id` bigint(20) NOT NULL COMMENT '物料ID',
  `material_code` varchar(100) NOT NULL COMMENT '物料编码',
  `material_name` varchar(200) NOT NULL COMMENT '物料名称',
  `specification` varchar(500) DEFAULT NULL COMMENT '规格型号',
  `quantity` decimal(12,3) NOT NULL DEFAULT '1.000' COMMENT '用量',
  `unit_name` varchar(50) DEFAULT NULL COMMENT '单位名称',
  `loss_rate` decimal(5,2) DEFAULT '0.00' COMMENT '损耗率(%)',
  `unit_price` decimal(12,4) DEFAULT '0.0000' COMMENT '单价',
  `total_cost` decimal(12,4) DEFAULT '0.0000' COMMENT '小计成本',
  `material_type` varchar(20) DEFAULT 'PURCHASED' COMMENT '物料类型',
  `is_key_component` tinyint(1) DEFAULT '0' COMMENT '是否关键件',
  `supplier_id` bigint(20) DEFAULT NULL COMMENT '供应商ID',
  `supplier_name` varchar(200) DEFAULT NULL COMMENT '供应商名称',
  `alternative_materials` text DEFAULT NULL COMMENT '替代料信息',
  `process_route` varchar(500) DEFAULT NULL COMMENT '工艺路线',
  `sort_order` int(11) DEFAULT '0' COMMENT '排序',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_bom_id` (`bom_id`),
  KEY `idx_material_id` (`material_id`),
  KEY `idx_supplier_id` (`supplier_id`),
  KEY `idx_material_type` (`material_type`),
  CONSTRAINT `fk_bom_item_bom_id` FOREIGN KEY (`bom_id`) REFERENCES `md_new_bom` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='新BOM明细表';

3. 其他辅助表

  • md_new_bom_version: BOM版本历史表
  • md_new_bom_cost_analysis: BOM成本分析表
  • md_new_bom_substitute: 替代料关系表

后端代码结构

1. 实体类 (Domain)

  • NewBom.java - BOM主实体
  • NewBomItem.java - BOM明细实体
  • NewBomVersion.java - BOM版本实体
  • NewBomCostAnalysis.java - BOM成本分析实体

2. Mapper接口层

  • NewBomMapper.java - BOM主表数据访问接口
  • NewBomItemMapper.java - BOM明细表数据访问接口
  • 对应的XML映射文件
    • NewBomMapper.xml
    • NewBomItemMapper.xml

3. Service业务层

  • INewBomService.java - BOM业务接口
  • NewBomServiceImpl.java - BOM业务实现类

4. Controller控制层

  • NewBomController.java - BOM控制器

API接口列表

基础CRUD接口

  • GET /masterdata/newBom/list - 查询BOM列表
  • GET /masterdata/newBom/{id} - 获取BOM详情
  • POST /masterdata/newBom - 新增BOM
  • PUT /masterdata/newBom - 修改BOM
  • DELETE /masterdata/newBom/{ids} - 删除BOM

高级功能接口

  • POST /masterdata/newBom/copy/{id} - 复制BOM
  • POST /masterdata/newBom/export - 导出BOM
  • POST /masterdata/newBom/import - 导入BOM
  • GET /masterdata/newBom/tree/{parentId} - 获取BOM树结构
  • GET /masterdata/newBom/cost/{id} - 计算BOM成本
  • GET /masterdata/newBom/versions/{bomId} - 获取BOM版本历史
  • POST /masterdata/newBom/publish - 发布BOM版本
  • GET /masterdata/newBom/substitutes/{materialId} - 获取替代料列表
  • GET /masterdata/newBom/analysis/{id} - 获取BOM用量分析
  • GET /masterdata/newBom/validate/{id} - 验证BOM完整性

主要特性

1. 成本计算

  • 自动计算明细成本:用量 × 单价 × (1 + 损耗率/100)
  • 总成本 = 材料成本 + 人工成本 + 制造费用
  • 支持成本占比分析

2. 版本管理

  • 支持多版本BOM管理
  • 版本状态控制(草稿、已发布、已废弃)
  • 版本复制功能
  • 版本历史查询

3. 数据验证

  • BOM完整性验证
  • 唯一性约束(物料+版本)
  • 业务规则验证

4. 权限控制

  • 基于角色的权限控制
  • 细粒度操作权限
  • 数据安全保障

使用说明

  1. 执行数据表创建SQL语句
  2. 确保相关依赖项存在
    • Material物料表和相关服务
    • Supplier供应商表和相关服务
    • 权限管理系统
  3. 配置权限
    • masterdata:newBom:list - 查询权限
    • masterdata:newBom:add - 新增权限
    • masterdata:newBom:edit - 修改权限
    • masterdata:newBom:remove - 删除权限
    • masterdata:newBom:export - 导出权限
    • masterdata:newBom:import - 导入权限
    • 其他功能权限...

注意事项

  1. 数据完整性BOM明细与主表通过外键关联删除主表时会级联删除明细
  2. 版本控制已发布的BOM不能直接删除需要先废弃
  3. 成本计算:成本计算为实时计算,可考虑加入缓存机制
  4. 并发控制修改BOM时需要注意并发更新问题
  5. 性能优化:大量数据时建议添加适当索引

扩展建议

  1. 审批流程可以增加BOM审批流程
  2. 变更记录增加BOM变更历史记录
  3. 模板功能支持BOM模板功能
  4. 批量操作:支持批量导入导出明细
  5. 集成功能与ERP、PLM等系统集成