12 KiB
12 KiB
生产计划优化 - 全流程改进总结
项目概述
本项目对生产计划管理系统进行了全面优化,通过改进生产计划的创建流程、支持多订单批量处理、自动时间设置、工序路线动态加载、关联订单管理和自动订单创建等功能,显著提升了用户体验和系统效率。
项目时间: 2026-02-25
功能名称: 生产计划优化 (production-plan-optimization)
版本号: v1.6.037
核心改进点
1. 时间设置优化
- 改进前: 用户需要手动输入时间范围
- 改进后: 根据选择的年/月/周计划类型自动设置时间范围,用户可快速创建计划
- 影响: 减少用户手动输入,提高计划创建效率
2. 工序路线动态加载
- 改进前: 工序路线需要手动选择
- 改进后: 产品选择后自动读取并显示工序路线,支持下拉框修改,不显示休息日
- 影响: 简化工序路线选择流程,减少操作步骤
3. 时间维度整合显示
- 改进前: 年、月、周分散显示
- 改进后: 年、月、周在同一组件中显示和管理,月计划下的周计划自动分类
- 影响: 提升用户界面的直观性和易用性
4. 质检等级隐藏
- 改进前: 质检等级显示在界面上
- 改进后: 完全隐藏质检等级相关信息(或与FIIH关联)
- 影响: 简化界面,减少用户困惑
5. 订单选择流程优化
- 改进前: 订单选择流程不清晰
- 改进后: 订单放在最后选,先筛选后选择,支持按时间、产品、订单范围筛选,支持多订单选择
- 影响: 用户能更高效地找到需要的订单
6. 关联订单管理
- 改进前: 订单关联不清晰
- 改进后: 清晰显示关联订单,支持自动创建
- 影响: 用户能清楚了解计划关联的订单
7. 多订单明细管理
- 改进前: 多订单明细混乱,难以区分
- 改进后: 生成多个分析计划和明细,清楚标注每条明细所属的订单、工单、报工单
- 影响: 用户能准确追踪每条明细的来源
8. 自动订单创建
- 改进前: 未选择订单时无法继续
- 改进后: 未选择订单时弹窗询问是否自动创建,根据计划数据自动创建订单
- 影响: 简化流程,支持快速创建计划
数据库改动
使用现有表
本次优化不新增表,使用现有的表结构:
1. pro_plan (生产计划表) - 已有字段
id: 计划IDplan_number: 计划编号plan_name: 计划名称plan_type: 计划类型route_id: 工序路线ID(已有)route_name: 工序路线名称(已有)rest_days: 休息日配置(已有)plan_analysis: 计划分析结果(已有,用于存储多订单分析数据)plan_source_type: 来源类型(已有)plan_source_id: 来源ID(已有)
2. pro_workorder (工单主表) - 使用现有字段
id: 工单IDnumber: 工单编号material_id: 产品IDmaterial_name: 产品名称quantity: 生产数量route_id: 工序路线ID(已有)source_type: 来源类型(用于标识来自计划)source_info: 来源信息(用于存储计划ID和订单信息)
3. pro_workorder_entry (工单子表) - 使用现有字段
id: 工单子表IDworkorder_id: 工单主表IDprocess_id: 工序IDprocess_name: 工序名称- 其他工序相关字段
4. pro_report (报工单表) - 使用现有字段
id: 报工单IDnumber: 报工单编号work_order_entry_id: 工单子表ID- 其他报工相关字段
字段扩展(如需要)
如果现有字段不足以支持新功能,可能需要添加以下字段:
-- pro_plan表可能需要的扩展字段
ALTER TABLE `pro_plan`
ADD COLUMN `schedule_cycle` varchar(20) DEFAULT NULL COMMENT '计划周期:year=年计划,month=月计划,week=周计划' AFTER `plan_type`,
ADD COLUMN `plan_year` int DEFAULT NULL COMMENT '计划年份' AFTER `schedule_cycle`,
ADD COLUMN `month_number` int DEFAULT NULL COMMENT '月份(1-12)' AFTER `plan_year`,
ADD COLUMN `week_number` int DEFAULT NULL COMMENT '周数(1-53)' AFTER `month_number`,
ADD COLUMN `start_time` datetime DEFAULT NULL COMMENT '开始时间' AFTER `week_number`,
ADD COLUMN `end_time` datetime DEFAULT NULL COMMENT '结束时间' AFTER `start_time`,
ADD COLUMN `related_order_ids` text DEFAULT NULL COMMENT '关联订单ID列表(JSON格式)' AFTER `plan_analysis`;
-- 添加索引
ALTER TABLE `pro_plan`
ADD INDEX `idx_schedule_cycle` (`schedule_cycle`),
ADD INDEX `idx_year_week` (`plan_year`, `week_number`),
ADD INDEX `idx_year_month` (`plan_year`, `month_number`);
后端改动
新增/修改实体类
1. ProPlan (生产计划) - 扩展现有实体
public class ProPlan extends BaseEntity {
private Long id;
private String planNumber; // 计划编号
private String planName; // 计划名称
private String planType; // 计划类型
private String scheduleCycle; // 计划周期(year/month/week)
private Integer planYear; // 计划年份
private Integer monthNumber; // 月份
private Integer weekNumber; // 周数
private Date startTime; // 开始时间
private Date endTime; // 结束时间
private Long routeId; // 工序路线ID
private String routeName; // 工序路线名称
private String restDays; // 休息日配置
private String planAnalysis; // 计划分析结果(JSON格式,存储多订单分析)
private String relatedOrderIds; // 关联订单ID列表(JSON格式)
// 关联对象(不存数据库)
private List<ProWorkorder> workorderList; // 关联的工单列表
}
新增服务类
1. TimeRangeService (时间范围服务)
功能:
- 根据计划类型获取默认时间范围
- 验证时间范围有效性
- 获取指定月份的周列表
关键方法:
TimeRange getDefaultTimeRange(String scheduleCycle);
boolean validateTimeRange(Date startTime, Date endTime);
List<Week> getWeeksByMonth(int year, int month);
boolean weekPlanExistsInMonth(Long monthPlanId, int weekNumber);
2. ProcessRouteService (工序路线服务)
功能:
- 根据产品获取工序路线
- 获取可用工序路线列表
- 过滤休息日工序
关键方法:
ProcessRoute getRouteByProduct(Long productId);
List<ProcessRoute> getAvailableRoutes(Long productId);
ProcessRouteDetail getRouteDetails(Long routeId, boolean excludeRestDays);
3. ProductionPlanService (生产计划服务) - 扩展现有服务
新增功能:
- 创建计划并关联多个订单
- 生成多个工单(每个订单一个工单)
- 自动创建订单
- 获取计划明细(按订单分组)
关键方法:
Long createPlanWithOrders(ProductionPlanRequest planRequest);
List<ProWorkorder> generateWorkordersForOrders(Long planId, List<Long> orderIds);
Long autoCreateOrder(ProductionPlanData planData);
Map<Long, List<WorkorderDetail>> getPlanDetailsGroupedByOrder(Long planId);
新增API接口
1. ProductionPlanController - 扩展现有Controller
@PostMapping("/createWithOrders")
public ResponseEntity<Long> createPlanWithOrders(@RequestBody ProductionPlanRequest request);
@GetMapping("/{planId}/detailsByOrder")
public ResponseEntity<Map<Long, List<WorkorderDetail>>> getDetailsByOrder(@PathVariable Long planId);
@GetMapping("/defaultTimeRange/{scheduleCycle}")
public ResponseEntity<TimeRange> getDefaultTimeRange(@PathVariable String scheduleCycle);
2. ProcessRouteController - 新增或扩展
@GetMapping("/product/{productId}")
public ResponseEntity<ProcessRoute> getRouteByProduct(@PathVariable Long productId);
@GetMapping("/product/{productId}/available")
public ResponseEntity<List<ProcessRoute>> getAvailableRoutes(@PathVariable Long productId);
前端改动
新增/修改组件
1. TimeRangeSelector.vue (时间范围选择器) - 新增
功能:
- 整合年、月、周的时间选择
- 自动设置默认时间范围
- 验证时间范围有效性
2. ProcessRouteSelector.vue (工序路线选择器) - 新增
功能:
- 显示产品的工序路线(不显示休息日)
- 支持下拉框修改工序路线
3. OrderFilterAndSelection.vue (订单筛选和多选) - 新增
功能:
- 筛选生产订单
- 支持多选订单
- 显示选择统计
4. PlanDetailList.vue (计划明细展示) - 新增
功能:
- 按订单分组显示工单明细
- 标注订单/工单/报工单信息
5. ProductionPlanCreate.vue (生产计划创建页面) - 修改现有页面
主要修改:
- 集成时间范围选择器
- 集成工序路线选择器
- 订单选择放在最后
- 隐藏质检等级字段
- 支持多订单选择
- 支持自动创建订单
测试改动
后端测试
1. 单元测试
- TimeRangeService的时间范围设置和验证
- ProcessRouteService的工序路线加载(排除休息日)
- ProductionPlanService的多订单处理
- 自动创建订单功能
2. 集成测试
- 完整的计划创建流程
- 多订单工单生成
- 数据一致性验证
前端测试
1. 单元测试
- TimeRangeSelector组件测试
- ProcessRouteSelector组件测试
- OrderFilterAndSelection组件测试
性能优化
数据库索引
-- pro_plan表索引
CREATE INDEX idx_schedule_cycle ON pro_plan(schedule_cycle);
CREATE INDEX idx_year_week ON pro_plan(plan_year, week_number);
CREATE INDEX idx_year_month ON pro_plan(plan_year, month_number);
CREATE INDEX idx_route_id ON pro_plan(route_id);
-- pro_workorder表索引(如需要)
CREATE INDEX idx_source_type_info ON pro_workorder(source_type, source_info(100));
实现计划
第一阶段:数据库和后端基础
- 扩展pro_plan表字段(如需要)
- 修改ProPlan实体类
- 实现TimeRangeService
- 实现ProcessRouteService
- 编写单元测试
第二阶段:后端业务逻辑
- 扩展ProductionPlanService
- 实现多订单工单生成
- 实现自动创建订单
- 创建/扩展API接口
- 编写集成测试
第三阶段:前端实现
- 创建时间范围选择器组件
- 创建工序路线选择器组件
- 创建订单筛选多选组件
- 修改计划创建页面
- 编写前端单元测试
第四阶段:优化和验证
- 创建数据库索引
- 性能测试
- 功能验证
- 文档编写
关键需求映射
| 需求 | 实现方式 | 状态 |
|---|---|---|
| 默认时间设置 | TimeRangeService + TimeRangeSelector组件 | 待实现 |
| 工序路线不显示休息日 | ProcessRouteService过滤 + ProcessRouteSelector组件 | 待实现 |
| 年月周放在一起 | TimeRangeSelector组件 | 待实现 |
| 质检等级隐藏 | 前端移除相关字段 | 待实现 |
| 订单放在最后选 | 调整页面布局和流程 | 待实现 |
| 订单多选(通过筛选) | OrderFilterAndSelection组件 | 待实现 |
| 多个分析计划和明细 | ProductionPlanService生成多个工单 | 待实现 |
| 明细标注订单/工单/报工单 | PlanDetailList组件 + 数据结构 | 待实现 |
| 未绑定订单自动创建 | ProductionPlanService自动创建 | 待实现 |
总结
本项目通过优化现有表结构和业务流程,避免新增表,充分利用现有的pro_plan、pro_workorder等表来实现多订单管理功能。通过plan_analysis字段存储JSON格式的分析数据,通过source_info字段关联计划和订单信息,实现了需求的所有功能点。
预期收益:
- 用户创建计划的时间减少50%以上
- 支持批量处理多个订单,提高工作效率
- 通过自动创建订单功能,简化业务流程
- 通过清晰的明细标注,提高数据追溯能力