# 生产工单工序 - 前端联调方案 ## 涉及页面 - 生产工单列表页面 - 生产工单详情/编辑页面(新增工序 Tab) ## 业务流程与数据带入 1. **创建工单** → 自动根据产品关联的工艺路线生成工序列表 2. **编辑工单** → 可手动调整工序(增删改) 3. **产品变更** → 自动重新生成工序(先删后插) ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | /mes/pro/work-order-process/list-by-work-order-id | 获取工单工序列表 | | POST | /mes/pro/work-order-process/create | 新增工序 | | PUT | /mes/pro/work-order-process/update | 更新工序 | | DELETE | /mes/pro/work-order-process/delete | 删除工序 | ### 1. 获取工单工序列表 **请求:** ``` GET /mes/pro/work-order-process/list-by-work-order-id?workOrderId=29 ``` **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 工序ID | | workOrderId | Long | 工单ID | | processId | Long | 工序编号 | | processCode | String | 工序编码 | | processName | String | 工序名称 | | sort | Integer | 序号 | | nextProcessId | Long | 下一道工序编号 | | nextProcessName | String | 下一道工序名称 | | linkType | Integer | 与下一道工序关系(0=开始-开始, 1=结束-结束, 2=开始-结束, 3=结束-开始) | | prepareTime | Integer | 准备时间(分钟) | | waitTime | Integer | 等待时间(分钟) | | colorCode | String | 甘特图显示颜色 | | keyFlag | Boolean | 是否关键工序 | | checkFlag | Boolean | 是否质检工序 | | backflushFlag | Boolean | 是否倒冲 | | outputItemId | Long | 产出产品物料编号 | | outputItemCode | String | 产出产品物料编码 | | outputItemName | String | 产出产品物料名称 | | remark | String | 备注 | **响应示例:** ```json { "code": 0, "data": [ { "id": 1, "workOrderId": 29, "processId": 10, "processCode": "GX_001", "processName": "拉丝", "sort": 1, "nextProcessId": 11, "nextProcessName": "绞线", "linkType": 3, "prepareTime": 1, "waitTime": 1, "colorCode": "#00AEF3", "keyFlag": false, "checkFlag": false, "backflushFlag": true, "outputItemId": 42, "outputItemCode": "M001", "outputItemName": "铝单线", "remark": "" }, { "id": 2, "workOrderId": 29, "processId": 11, "processCode": "GX_002", "processName": "绞线", "sort": 2, "nextProcessId": null, "nextProcessName": null, "linkType": 1, "prepareTime": 1, "waitTime": 1, "colorCode": "#00AEF3", "keyFlag": true, "checkFlag": false, "backflushFlag": true, "outputItemId": 43, "outputItemCode": "M002", "outputItemName": "钢芯铝绞线", "remark": "" } ], "msg": "操作成功" } ``` ### 2. 新增工序 **请求:** ``` POST /mes/pro/work-order-process/create ``` **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | workOrderId | Long | 是 | 生产工单编号 | | processId | Long | 是 | 工序编号(选择工序) | | sort | Integer | 是 | 序号 | | linkType | Integer | 否 | 与下一道工序关系 | | prepareTime | Integer | 否 | 准备时间(分钟) | | waitTime | Integer | 否 | 等待时间(分钟) | | colorCode | String | 否 | 甘特图显示颜色 | | keyFlag | Boolean | 否 | 是否关键工序(默认 false) | | checkFlag | Boolean | 否 | 是否质检工序(默认 false) | | backflushFlag | Boolean | 否 | 是否倒冲(默认 true) | | outputItemId | Long | 否 | 产出产品物料编号 | | remark | String | 否 | 备注 | **响应:** `{ "code": 0, "data": 1, "msg": "操作成功" }` ### 3. 更新工序 **请求:** ``` PUT /mes/pro/work-order-process/update ``` **请求参数:** 同新增,额外包含 `id` 字段 **响应:** `{ "code": 0, "msg": "操作成功" }` ### 4. 删除工序 **请求:** ``` DELETE /mes/pro/work-order-process/delete?id=1 ``` **响应:** `{ "code": 0, "msg": "操作成功" }` ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | sort | 列表、表单 | 序号,必填,同一工单内唯一 | | processCode/processName | 列表、表单 | 工序编码/名称,选择工序时带入(调用 `/mes/pro/process/simple-list`) | | keyFlag | 列表、表单 | 是否关键工序,单选框,同一工单只能有一个关键工序 | | checkFlag | 列表、表单 | 是否质检工序,单选框 | | backflushFlag | 列表、表单 | 是否倒冲,单选框,默认 true | | prepareTime/waitTime | 表单 | 准备/等待时间,数字输入,单位:分钟 | | colorCode | 表单 | 甘特图颜色,颜色选择器,默认 #00AEF3 | | outputItemCode/outputItemName | 表单 | 产出物料,物料选择器(调用 `/md/item/simple-list`),为空时默认用工单的成品 | | linkType | 表单 | 工序关系,下拉选择(0=开始-开始, 1=结束-结束, 2=开始-结束, 3=结束-开始) | | remark | 表单 | 备注,文本输入 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 创建工单 | 根据产品关联的工艺路线自动生成工序列表(如果产品有工艺路线) | | 更换产品 | 自动重新生成工序(先删除旧工序,再生成新工序) | | 新增工序 | 校验序号唯一、工序唯一;关键工序只能有一个 | | 删除工序 | 删除后自动重建工序链(nextProcessId) | | 编辑工序 | 修改序号后自动重建工序链 | | 产品无工艺路线 | 不生成工序,工序列表为空,用户可手动添加 | ## 接口调用时序 ### 创建工单场景 1. 用户填写工单信息,选择产品 2. 提交创建请求 → `POST /mes/pro/work-order/create` 3. 后端自动生成 BOM 和工序 4. 用户进入工单详情 → 可查看自动生成的工序列表 ### 编辑工序场景 1. 用户进入工单详情,切换到"工序"Tab 2. 调用 `GET /mes/pro/work-order-process/list-by-work-order-id` 获取工序列表 3. 用户可进行: - 新增工序:弹出表单,选择工序,填写参数 → `POST /create` - 编辑工序:点击行,修改参数 → `PUT /update` - 删除工序:点击删除按钮 → `DELETE /delete` ## 关联数据获取接口 ### 工序选择 ``` GET /mes/pro/process/simple-list ``` 返回启用状态的工序列表,用于下拉选择。 **响应示例:** ```json { "code": 0, "data": [ { "id": 10, "code": "GX_001", "name": "拉丝" }, { "id": 11, "code": "GX_002", "name": "绞线" } ] } ``` ### 物料选择 ``` GET /md/item/simple-list ``` 返回启用状态的物料列表,用于产出物料选择。 ## 注意事项 - 工单工序数据独立于工艺路线,创建后可灵活调整,不会影响原始工艺路线 - 工序的 `nextProcessId` 由后端自动维护,前端无需处理 - 关键工序(keyFlag=true)每个工单只能有一个,新增/编辑时需校验 - 产品变更会重新生成工序,原有手动调整会丢失 - 权限复用工单权限:`mes:pro-work-order:query`(查询)、`mes:pro-work-order:update`(增删改) - 工序选择使用 `/mes/pro/process/simple-list` 接口 - 物料选择使用 `/md/item/simple-list` 接口