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