7.8 KiB
7.8 KiB
新BOM模块后端实现总结
概述
根据前端页面的功能需求和API接口调用,完整实现了新BOM模块的后端代码,包括数据表设计、实体类、Mapper接口、Service层和Controller层。
实现的功能
-
基础CRUD操作
- 新增、修改、删除、查询BOM
- BOM明细管理
- 分页查询和条件筛选
-
高级功能
- BOM复制
- BOM版本管理
- BOM成本计算和分析
- BOM完整性验证
- BOM树形结构查询
- 替代料管理
- 用量分析
- 导入导出功能
-
状态管理
- 草稿、已发布、已废弃三种状态
- 版本发布和废弃操作
数据表结构
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.xmlNewBomItemMapper.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- 新增BOMPUT /masterdata/newBom- 修改BOMDELETE /masterdata/newBom/{ids}- 删除BOM
高级功能接口
POST /masterdata/newBom/copy/{id}- 复制BOMPOST /masterdata/newBom/export- 导出BOMPOST /masterdata/newBom/import- 导入BOMGET /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. 权限控制
- 基于角色的权限控制
- 细粒度操作权限
- 数据安全保障
使用说明
- 执行数据表创建SQL语句
- 确保相关依赖项存在:
- Material(物料)表和相关服务
- Supplier(供应商)表和相关服务
- 权限管理系统
- 配置权限:
masterdata:newBom:list- 查询权限masterdata:newBom:add- 新增权限masterdata:newBom:edit- 修改权限masterdata:newBom:remove- 删除权限masterdata:newBom:export- 导出权限masterdata:newBom:import- 导入权限- 其他功能权限...
注意事项
- 数据完整性:BOM明细与主表通过外键关联,删除主表时会级联删除明细
- 版本控制:已发布的BOM不能直接删除,需要先废弃
- 成本计算:成本计算为实时计算,可考虑加入缓存机制
- 并发控制:修改BOM时需要注意并发更新问题
- 性能优化:大量数据时建议添加适当索引
扩展建议
- 审批流程:可以增加BOM审批流程
- 变更记录:增加BOM变更历史记录
- 模板功能:支持BOM模板功能
- 批量操作:支持批量导入导出明细
- 集成功能:与ERP、PLM等系统集成