# 生产计划组件开发实施文档 ## 1. 业务描述 ### 1.1 业务背景 生产计划管理是车间生产管理的核心模块,用于跟踪和监控生产任务的执行情况。该组件需要展示生产计划的详细信息,包括订单号、产品名称、零件名称、工序、设备分配、计划数量、完成日期等关键信息。 ### 1.2 业务目标 - 提供生产计划的查询和展示功能 - 支持按订单号、零件名称、工序、设备等条件进行筛选 - 展示生产进度和完成情况 - 支持分页查询 ### 1.3 业务流程 ```mermaid flowchart TD A[用户进入生产计划页面] --> B[选择查询月份] B --> C[输入筛选条件] C --> D[点击查询按钮] D --> E[调用存储过程查询数据] E --> F[返回查询结果] F --> G[展示生产计划列表] ``` --- ## 2. 技术方案 ### 2.1 技术选型 | 分类 | 技术 | 版本 | | :--- | :--- | :--- | | 前端框架 | Vue.js | 2.x | | UI组件库 | Element UI | 2.x | | 构建工具 | Webpack | 4.x | | 后端语言 | C# | .NET Framework | | 数据库 | SQL Server | 2016+ | ### 2.2 架构设计 #### 2.2.1 架构分层 ```mermaid flowchart LR A[前端展示层] --> B[API接口层] B --> C[业务逻辑层] C --> D[数据访问层] D --> E[数据库] ``` #### 2.2.2 模块划分 | 模块 | 职责 | 说明 | | :--- | :--- | :--- | | 视图层 | 生产计划列表展示 | Vue组件 | | 数据层 | 数据查询与处理 | API调用 | | 业务层 | 存储过程执行 | SQL存储过程 | | 数据层 | 数据持久化 | 视图与表 | --- ## 3. 数据库设计 ### 3.1 涉及的数据库表 #### 3.1.1 车间生产管理_零件工序_视图 | 字段名 | 类型 | 长度 | 说明 | | :--- | :--- | :--- | :--- | | 零件名称 | nvarchar | 50 | 零件名称 | | 数量 | int | - | 订单数量 | | 工序 | nvarchar | 50 | 工序名称 | | 操作者 | nvarchar | 50 | 操作人员 | | 加工设备 | nvarchar | 100 | 加工设备 | | 材料 | nvarchar | 100 | 使用材料 | | 派工日期 | datetime | - | 派工日期 | | 已完成数 | int | - | 已完成数量 | | 订单号 | nvarchar | 50 | 订单编号 | | 产品名称 | nvarchar | 100 | 产品名称 | | 零件图号 | nvarchar | 50 | 零件图号 | | 工序流水号 | int | - | 工序流水号(主键) | | 工艺计划流水号 | int | - | 工艺计划流水号 | | 质检数 | int | - | 质检数量 | | 不良数 | int | - | 不良数量 | | 工序顺序 | int | - | 工序顺序 | | 工艺要求 | nvarchar | 500 | 工艺要求 | | 工序状态 | nvarchar | 20 | 工序状态 | | 考核状态 | nvarchar | 20 | 考核状态 | | 机床名称 | nvarchar | 50 | 机床名称 | | 工位号 | nvarchar | 20 | 工位号 | | 被派工人员 | nvarchar | 50 | 被派工人员 | | 外协数量 | int | - | 外协数量 | | 到货数量 | int | - | 到货数量 | | 工艺编号 | nvarchar | 50 | 工艺编号 | | 订单流水号 | int | - | 订单流水号 | | 订单类型 | nvarchar | 20 | 订单类型 | | 已分配数 | int | - | 已分配数量 | | 分配数 | int | - | 分配数量 | | 最大分配数 | int | - | 最大分配数量 | | 精工期限 | datetime | - | 精工期限 | | 是否为报废补投件 | bit | - | 是否为报废补投件 | | 代号 | nvarchar | 50 | 代号 | | 定额工时 | decimal | - | 定额工时 | | 准结工时 | decimal | - | 准结工时 | | 物料编码 | nvarchar | 50 | 物料编码 | | 是否加急 | bit | - | 是否加急 | | 计划完成日期 | datetime | - | 计划完成日期 | | 计划开始日期 | datetime | - | 计划开始日期 | #### 3.1.2 车间生产管理工艺_零件工序_任务分配 | 字段名 | 类型 | 长度 | 说明 | | :--- | :--- | :--- | :--- | | 工艺任务流水号 | int | - | 主键 | | 工序流水号 | int | - | 关联零件工序视图 | | 数量 | int | - | 计划数量 | | 人员编号 | int | - | 操作人员编号 | | 设备流水号 | int | - | 设备流水号 | | 分配时间 | datetime | - | 分配时间 | | 完工期限 | datetime | - | 完工期限 | | 已领数量 | int | - | 已领数量 | | 加工数量 | int | - | 已加工数量 | | 是否加工中 | bit | - | 是否正在加工 | | 调拨员编号 | int | - | 调拨员编号 | | 计划完成日期 | datetime | - | 计划完成日期 | | 计划开始日期 | datetime | - | 计划开始日期 | #### 3.1.3 基础数据_设备工位点检表 | 字段名 | 类型 | 长度 | 说明 | | :--- | :--- | :--- | :--- | | 设备流水号 | int | - | 主键 | | 工位号 | nvarchar | 20 | 工位号 | | 设备名称 | nvarchar | 100 | 设备名称 | ### 3.2 视图定义 #### 车间生产管理_生产计划_视图(逻辑视图) 该视图为生产计划查询的核心视图,关联以下表: - `车间生产管理工艺_零件工序_任务分配` - `车间生产管理_零件工序_视图` - `基础数据_设备工位点检表` **查询逻辑:** ```sql SELECT dbo.车间生产管理_零件工序_视图.订单号, dbo.车间生产管理_零件工序_视图.产品名称, dbo.车间生产管理_零件工序_视图.零件名称, dbo.车间生产管理_零件工序_视图.工序, dbo.基础数据_设备工位点检表.工位号 + N':' + dbo.基础数据_设备工位点检表.设备名称 AS 设备, dbo.车间生产管理_零件工序_视图.数量 AS 订单数, dbo.车间生产管理工艺_零件工序_任务分配.数量 AS 计划数, CONVERT(varchar(10), dbo.车间生产管理工艺_零件工序_任务分配.计划完成日期, 23) AS 计划完成日期, dbo.车间生产管理工艺_零件工序_任务分配.数量 - dbo.车间生产管理工艺_零件工序_任务分配.加工数量 AS 剩余数, dbo.车间生产管理_零件工序_视图.零件图号, dbo.车间生产管理_零件工序_视图.工序顺序, CONVERT(varchar(10), dbo.车间生产管理工艺_零件工序_任务分配.计划开始日期, 23) AS 计划开始日期, dbo.基础数据_设备工位点检表.设备名称 FROM dbo.车间生产管理工艺_零件工序_任务分配 INNER JOIN dbo.车间生产管理_零件工序_视图 ON dbo.车间生产管理工艺_零件工序_任务分配.工序流水号 = dbo.车间生产管理_零件工序_视图.工序流水号 INNER JOIN dbo.基础数据_设备工位点检表 ON dbo.车间生产管理工艺_零件工序_任务分配.设备流水号 = dbo.基础数据_设备工位点检表.设备流水号 ``` --- ## 4. 存储过程设计 ### 4.1 车间生产管理_生产计划_查询数据 **功能:** 根据筛选条件分页查询生产计划数据 **参数说明:** | 参数名 | 类型 | 长度 | 说明 | 默认值 | | :--- | :--- | :--- | :--- | :--- | | @合同编号_check | bit | - | 是否按合同编号筛选 | null | | @合同编号 | nvarchar | 50 | 合同编号 | null | | @零件名称_check | bit | - | 是否按零件名称筛选 | null | | @零件名称 | nvarchar | 50 | 零件名称 | null | | @工序名称_check | bit | - | 是否按工序名称筛选 | null | | @工序名称 | nvarchar | 50 | 工序名称 | null | | @设备_check | bit | - | 是否按设备筛选 | null | | @设备 | nvarchar | 50 | 设备名称 | null | | @月份 | nvarchar | 50 | 查询月份(格式:yyyy-MM) | - | **存储过程代码:** ```sql ALTER PROCEDURE [dbo].[车间生产管理_生产计划_查询数据] @合同编号_check bit = null, @合同编号 nvarchar(50) = null, @零件名称_check bit = null, @零件名称 nvarchar(50) = null, @工序名称_check bit = null, @工序名称 nvarchar(50) = null, @设备_check bit = null, @设备 nvarchar(50) = null, @月份 nvarchar(50) AS declare @年 nvarchar(50) declare @月 nvarchar(50) select @年 = left(@月份,4) select @月 = SUBSTRING(@月份,CHARINDEX('-',@月份)+1,len(@月份)-charindex('-',@月份)) declare @selectStr nvarchar(4000) declare @selectStrWhere nvarchar(4000) set @selectStr = 'select * from 车间生产管理_生产计划_视图 ' set @selectStrWhere = 'where 年份=@年 and 月份=@月 ' if(@零件名称_check = 1) set @selectStrWhere = @selectStrWhere+' and 零件名称+零件图号 like + ''%'' + @零件名称 + ''%'' ' if(@合同编号_check = 1) set @selectStrWhere = @selectStrWhere+' and 订单号 like + ''%'' + @合同编号 + ''%'' ' if(@工序名称_check = 1) set @selectStrWhere = @selectStrWhere+' and 工序 like + ''%'' + @工序名称 + ''%'' ' if(@设备_check = 1) set @selectStrWhere = @selectStrWhere+' and 设备 like + ''%'' + @设备 + ''%'' ' set @selectStr = @selectStr+@selectStrWhere EXEC sp_executesql @selectStr, N'@零件名称 nvarchar(50),@合同编号 nvarchar(50),@工序名称 nvarchar(50),@设备 nvarchar(50),@年 int,@月 int ', @零件名称,@合同编号,@工序名称,@设备,@年,@月 ``` --- ## 5. 前端组件设计 ### 5.1 组件结构 **文件路径:** `src/views/SeikoWorkshop/ProductionPlan/index.vue` ### 5.2 功能模块 #### 5.2.1 查询区域 | 控件 | 类型 | 绑定字段 | 说明 | | :--- | :--- | :--- | :--- | | 月份选择器 | el-date-picker | monthValue | 选择查询月份(必填) | | 订单编号输入框 | el-input | orderNumberTypeValue | 按订单编号筛选 | | 零件名称输入框 | el-input | partNameValue | 按零件名称或图号筛选 | | 产品名称输入框 | el-input | productNameValue | 按产品名称筛选 | | 状态下拉框 | el-select | statusValue | 按状态筛选(待料/生产中/已完成) | | 查询按钮 | el-button | - | 触发查询 | #### 5.2.2 表格展示区域 | 列名 | 宽度 | 说明 | 特殊处理 | | :--- | :--- | :--- | :--- | | 序号 | 50px | 行号 | 固定列 | | 状态 | 60px | 订单状态 | 标签展示,不同状态不同颜色 | | 订单编号 | 140px | 订单编号 | 固定列 | | 收货人 | 80px | 收货人 | 固定列 | | 投产日期 | 80px | 投产日期 | - | | 订单交货日期 | 100px | 订单交货日期 | - | | 数量 | 60px | 订单数量 | - | | 产品名称 | 120px | 产品名称 | - | | 规格型号 | 140px | 规格型号 | - | | 零件名称 | 120px | 零件名称 | - | | 零件图号 | 120px | 零件图号 | - | | 毛坯类型 | 100px | 毛坯类型 | - | | 完成率 | 80px | 完成率 | - | | 当前状态 | 80px | 当前状态 | - | | OP010~OP110 | 60px | 各工序状态 | - | #### 5.2.3 分页区域 | 功能 | 说明 | | :--- | :--- | | 总条数 | 显示查询结果总数 | | 每页条数选择 | 支持10/20/30/40/100 | | 页码跳转 | 支持上一页/下一页/直接跳转 | ### 5.3 数据交互流程 ```mermaid sequenceDiagram participant 前端 as Vue组件 participant API as API接口 participant 数据库 as SQL Server 前端->>前端: 用户输入筛选条件 前端->>前端: 调用searchTable1()方法 前端->>API: 调用CreateData()创建请求参数 API->>数据库: 执行存储过程车间生产管理_生产计划_查询数据 数据库-->>API: 返回查询结果 API-->>前端: 返回response数据 前端->>前端: 更新tableData2和total 前端->>前端: 渲染表格和分页 ``` ### 5.4 关键代码说明 #### 5.4.1 数据参数构造 ```javascript var param = [] param[0] = ['订单编号', this.orderNumberTypeValue] param[1] = ['订单编号_check', orderNumberTypeValue_check] param[2] = ['零件名称_check', partNameValue_check] param[3] = ['零件名称', this.partNameValue] param[4] = ['产品名称_check', productNameValue_check] param[5] = ['产品名称', this.productNameValue] param[6] = ['状态_check', statusValue_check] param[7] = ['状态', this.statusValue] param[8] = ['月份', this.monthValue] ``` #### 5.4.2 数据请求调用 ```javascript var Data = this.CreateData('11', '车间生产管理_生产计划_查询数据', param, this.pageSize, this.pageCurrent) this.ExecDatabase(Data).then(response => { this.tableData2 = response.data.rows this.total = response.data.total }) ``` --- ## 6. 详细工作步骤 ### 6.1 数据库层开发 | 步骤 | 任务 | 负责人 | 预计时间 | 状态 | | :--- | :--- | :--- | :--- | :--- | | 1 | 创建/确认视图`车间生产管理_生产计划_视图` | DBA | 1天 | - | | 2 | 创建/更新存储过程`车间生产管理_生产计划_查询数据` | DBA | 0.5天 | - | | 3 | 测试存储过程执行结果 | DBA | 0.5天 | - | ### 6.2 前端组件开发 | 步骤 | 任务 | 负责人 | 预计时间 | 状态 | | :--- | :--- | :--- | :--- | :--- | | 1 | 创建查询区域UI(日期选择器、输入框、下拉框) | 前端开发 | 0.5天 | - | | 2 | 创建表格展示区域(列定义、样式、状态标签) | 前端开发 | 1天 | - | | 3 | 实现分页功能(页码切换、条数选择) | 前端开发 | 0.5天 | - | | 4 | 实现数据查询逻辑(参数构造、API调用) | 前端开发 | 1天 | - | | 5 | 联调测试(接口对接、数据展示验证) | 前端开发 | 1天 | - | ### 6.3 测试与上线 | 步骤 | 任务 | 负责人 | 预计时间 | 状态 | | :--- | :--- | :--- | :--- | :--- | | 1 | 功能测试(查询、筛选、分页) | 测试人员 | 1天 | - | | 2 | 性能测试(大数据量查询) | 测试人员 | 0.5天 | - | | 3 | Bug修复 | 开发人员 | 0.5天 | - | | 4 | 代码评审 | 技术负责人 | 0.5天 | - | | 5 | 上线部署 | 运维人员 | 0.5天 | - | --- ## 7. 注意事项 ### 7.1 数据库注意事项 1. 确保视图`车间生产管理_生产计划_视图`包含`年份`和`月份`字段用于筛选 2. 存储过程使用动态SQL,需注意SQL注入风险 3. 建议对查询结果添加索引优化性能 ### 7.2 前端注意事项 1. 月份为必填项,需添加非空校验 2. 表格列较多,需设置合理的宽度和滚动 3. 状态标签颜色需根据业务需求调整 ### 7.3 安全注意事项 1. 输入参数需进行校验和过滤 2. 敏感数据需进行脱敏处理 3. API调用需携带认证信息 --- ## 8. 附录 ### 8.1 状态映射表 | 状态值 | 显示文本 | 标签类型 | | :--- | :--- | :--- | | 待料 | 待料 | warning | | 生产中 | 生产中 | success | | 已完成 | 已完成 | info | ### 8.2 日期格式说明 - 月份格式:`yyyy-M`(如:2024-01) - 日期格式:`yyyy-MM-dd`(如:2024-01-15) ### 8.3 文件路径汇总 | 文件类型 | 文件路径 | | :--- | :--- | | 前端组件 | `src/views/SeikoWorkshop/ProductionPlan/index.vue` | | API配置 | `src/assets/img/api/ManufacturingCenter/ProductionPlanQuery.js` | | 图标文件 | `src/icons/svg/ProductionPlan.svg` |