# ProcessProduct 生产工艺维护详细框图

分析对象：`src/views/ProcessManagement/ProcessProduct/index.vue`

## 1. 模块总览框图

```mermaid
flowchart TD
  U[工艺员/技术人员] --> P[ProcessProduct/index.vue<br/>生产工艺维护页面]

  subgraph UI[页面层]
    Q[查询区<br/>生产订单/销售订单/物料编码/物料名称/计划号<br/>任务状态/属性/下达日期/工艺状态]
    L[生产订单列表<br/>多选/分页/状态灯/编辑工艺]
    E[编辑生产工艺弹窗<br/>原料信息/图纸/保存/下发/工序维护]
    C[生产工艺拷贝弹窗<br/>标准工艺或生产工艺来源预览]
    PDF[图纸预览弹窗<br/>零件图纸/工艺图纸 PDF]
  end

  subgraph State[前端核心状态]
    tableData[tableData<br/>订单列表]
    selectedRow[selectedRow<br/>当前订单]
    multipleSelection[multipleSelection<br/>批量选中订单]
    tableData5[tableData5<br/>当前生产工艺明细]
    tableData4[tableData4/filteredTableData4<br/>工序基础库]
    tableData6[tableData6<br/>拷贝来源工艺预览]
    basedata[basedatagj/basedatajc/basedatacj<br/>量具/机床/车间]
    insertidx[insertidx<br/>插入占位行 id]
    itemdata[itemdata<br/>订单原料信息]
  end

  subgraph API[后台过程]
    A1[计划排产_生产订单_订单查询]
    A2[工艺管理_生产工艺_查询生产工艺]
    A3[MES_ProcessManagement_ProcessGet]
    A4[设备管理_设备信息_查询]
    A5[工艺管理_获取物料原料信息]
    A6[工艺管理_零件工序_生产工艺_*<br/>新增/编辑/插入/删除/上下移/批量生成]
    A7[工艺管理_生产工艺_*<br/>拷贝/启用/来源查询]
    A8[计划排产_生产订单_订单任务_*<br/>整套下发/单条下发]
    A9[工艺管理_图纸维护_查看图纸<br/>工艺管理_工艺维护_查看图纸]
    A10[车间生产管理工艺_零件工序_保存为标准工艺]
  end

  P --> Q
  P --> L
  P --> E
  P --> C
  P --> PDF

  Q -->|searchTable| A1 --> tableData --> L
  L -->|row-click| selectedRow
  L -->|selection-change| multipleSelection
  L -->|编辑工艺 editProcess| E

  E -->|getitemdata| A5 --> itemdata
  E -->|editProcesssearch| A2 --> tableData5
  E -->|getProcess| A3 --> tableData4
  E -->|getbasedata| A4 --> basedata
  E -->|工序维护| A6 --> tableData5
  E -->|保存/启用| A7
  E -->|保存为标准工艺| A10
  E -->|下发任务| A8
  E -->|零件/工艺图纸| A9 --> PDF

  C -->|copyData/searchTable2/searchTable4| A7 --> tableData6
  C -->|submitCopy| A7 --> tableData5
  multipleSelection -->|AllProductProcess| A6 --> tableData

  classDef ui fill:#E8F3FF,stroke:#2B6CB0,color:#111;
  classDef state fill:#FFF7E6,stroke:#C47F00,color:#111;
  classDef api fill:#EAF8EA,stroke:#2F855A,color:#111;
  classDef risk fill:#FFEAEA,stroke:#C53030,color:#111;
  class Q,L,E,C,PDF ui;
  class tableData,selectedRow,multipleSelection,tableData5,tableData4,tableData6,basedata,insertidx,itemdata state;
  class A1,A2,A3,A4,A5,A6,A7,A8,A9,A10 api;
```

## 2. 编辑生产工艺详细流程

```mermaid
flowchart TD
  S[用户点击订单行: 编辑工艺] --> R1[建议先设置 selectedRow = row<br/>当前源码依赖 row-click 已触发]
  R1 --> D1[打开 dialogcasual<br/>loading = true]

  D1 --> P1[getitemdata（row.订单编号）]
  P1 --> SP1[工艺管理_获取物料原料信息]
  SP1 --> F1{U_MoType == 机加件?}
  F1 -->|是| M1[写入 itemdata<br/>子件编码/名称/计划数量/材质/基本数量/存货量]
  F1 -->|否| M0[过滤掉]

  D1 --> P2[editProcesssearch（row）]
  P2 --> SP2[工艺管理_生产工艺_查询生产工艺<br/>入参: 物料编号, 订单编号]
  SP2 --> T5[tableData5 = 当前生产工艺明细]

  T5 --> P3[getProcess]
  P3 --> SP3[MES_ProcessManagement_ProcessGet<br/>入参: 工艺编号='']
  SP3 --> G1[tableData4/filteredTableData4<br/>左侧工序基础库]

  T5 --> P4[getbasedata]
  P4 --> SP4[设备管理_设备信息_查询]
  SP4 --> B1{按设备类型名称分类}
  B1 -->|量具| BJ[basedatagj<br/>工装量具选项]
  B1 -->|机床| BC[basedatajc<br/>指定机床选项]
  B1 -->|车间| BW[basedatacj<br/>车间选项]

  T5 --> P5[fninsertidx]
  P5 --> C1{存在空工艺名称行?}
  C1 -->|是| I1[insertidx = 空行 id<br/>左侧选工序时填入占位]
  C1 -->|否| I0[insertidx 保持或为 0]
  P5 --> C2{工卡量具/指定机床为逗号字符串?}
  C2 -->|是| I2[split，map Number<br/>转换为多选数组]
  C2 -->|否| I3[保持原值]

  I1 --> READY[编辑弹窗可操作]
  I0 --> READY
  I2 --> READY
  I3 --> READY

  READY --> OP1[查看图纸]
  READY --> OP2[新增/插入/删除/排序工序]
  READY --> OP3[编辑工时/设备/车间/属性/说明/备注]
  READY --> OP4[保存/启用]
  READY --> OP5[保存为标准工艺]
  READY --> OP6[整套或单条下发任务]

  classDef start fill:#E8F3FF,stroke:#2B6CB0,color:#111;
  classDef proc fill:#FFF7E6,stroke:#C47F00,color:#111;
  classDef api fill:#EAF8EA,stroke:#2F855A,color:#111;
  classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111;
  classDef output fill:#F0FFF4,stroke:#38A169,color:#111;
  class S,D1,READY start;
  class P1,P2,P3,P4,P5,R1,OP1,OP2,OP3,OP4,OP5,OP6 proc;
  class SP1,SP2,SP3,SP4 api;
  class F1,B1,C1,C2 decision;
  class M1,M0,T5,G1,BJ,BC,BW,I1,I0,I2,I3 output;
```

## 3. 工序维护与明细编辑流程

```mermaid
flowchart TD
  START[编辑生产工艺弹窗] --> LEFT[左侧工序基础库<br/>filteredTableData4]
  START --> RIGHT[右侧生产工艺明细<br/>tableData5]

  LEFT --> SEARCH[输入 processSearchName]
  SEARCH --> FILTER[filterProcess<br/>按 工艺名称 includes 过滤]
  FILTER --> LEFT

  LEFT --> CLICK[点击某个工序 editProcedure（row）]
  CLICK --> HASINSERT{insertidx 是否非 0?}
  HASINSERT -->|否: 普通新增| ADD[组装参数<br/>工艺编号/物料编号/计划数量/订单编号]
  ADD --> SPADD[工艺管理_零件工序_生产工艺_修改数据]
  SPADD --> RELOAD1[重新查询生产工艺]

  HASINSERT -->|是: 填入占位行| FILL[组装参数<br/>工艺编号/idd/计划数量/订单编号]
  FILL --> SPFILL[工艺管理_零件工序_生产工艺_编辑插入工序]
  SPFILL --> RELOAD1

  RIGHT --> EDIT[编辑字段<br/>准备工时/标准工时/工时合计<br/>工卡量具/指定机床/车间/属性<br/>工艺要求/备注]
  EDIT --> NORM[规范化工卡量具/指定机床<br/>数组/对象/字符串 -> 数组]
  NORM --> SPEDIT[工艺管理_零件工序_生产工艺_编辑]
  SPEDIT --> SILENT[当前无成功提示<br/>后台即时保存]

  RIGHT --> MOVEUP[上移工序]
  MOVEUP --> SPMU[工艺管理_零件工序_生产工艺_上移工序]
  RIGHT --> MOVEDOWN[下移工序]
  MOVEDOWN --> SPMD[工艺管理_零件工序_生产工艺_下移工序]
  RIGHT --> INSERT[插入工序]
  INSERT --> SPI[工艺管理_零件工序_生产工艺_插入工序<br/>生成空占位行]
  RIGHT --> DELETE[删除工序]
  DELETE --> SPD[工艺管理_零件工序_生产工艺_删除工序]

  SPMU --> RELOAD1
  SPMD --> RELOAD1
  SPI --> RELOAD1
  SPD --> RELOAD1

  RELOAD1 --> SPQUERY[工艺管理_生产工艺_查询生产工艺]
  SPQUERY --> NEWT5[刷新 tableData5]
  NEWT5 --> FN[fninsertidx<br/>识别占位行/转换多选字段]
  FN --> RIGHT

  classDef ui fill:#E8F3FF,stroke:#2B6CB0,color:#111;
  classDef action fill:#FFF7E6,stroke:#C47F00,color:#111;
  classDef api fill:#EAF8EA,stroke:#2F855A,color:#111;
  classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111;
  classDef output fill:#F0FFF4,stroke:#38A169,color:#111;
  class START,LEFT,RIGHT ui;
  class SEARCH,FILTER,CLICK,ADD,FILL,EDIT,NORM,MOVEUP,MOVEDOWN,INSERT,DELETE,RELOAD1,FN action;
  class SPADD,SPFILL,SPEDIT,SPMU,SPMD,SPI,SPD,SPQUERY api;
  class HASINSERT decision;
  class SILENT,NEWT5 output;
```

## 4. 批量生成、拷贝、保存、下发流程

```mermaid
flowchart TD
  subgraph Batch[批量生成生产工艺]
    B0[列表勾选订单] --> B1[AllProductProcess]
    B1 --> B2{multipleSelection.length >= 1?}
    B2 -->|否| BERR[提示: 请勾选数据]
    B2 -->|是| B3[过滤选中行<br/>标准工艺 == 1 且 生产工艺 != 1]
    B3 --> B4[拼接订单编号/物料编号/计划数量<br/>逗号字符串]
    B4 --> BSP[工艺管理_零件工序_生产工艺_批量生成生产工艺]
    BSP --> B5[刷新订单列表 searchTable]
  end

  subgraph Copy[工艺拷贝 当前入口被注释]
    C0[copyData 打开生产工艺拷贝弹窗] --> C1{processprodutc 勾选?}
    C1 -->|否: 标准工艺来源| C2[工艺管理_生产工艺_标准工艺拷贝<br/>获取候选零件]
    C2 --> C3[MES_ProcessManagement_ProcessBindGet<br/>预览标准工艺明细]
    C1 -->|是: 生产工艺来源| C4[工艺管理_生产工艺_生产工艺拷贝<br/>获取候选物料]
    C4 --> C5[工艺管理_制定标准工艺_拷贝生产工艺<br/>预览生产工艺明细]
    C3 --> C6[submitCopy]
    C5 --> C6
    C6 --> C7[工艺管理_生产工艺_工艺拷贝<br/>物料编号/零件图号/订单编号/计划数量/工艺类型]
    C7 --> C8{result == '1'?}
    C8 -->|是| COK[提示拷贝成功<br/>刷新当前生产工艺]
    C8 -->|否| CERR[提示拷贝失败]
  end

  subgraph Save[保存与沉淀]
    S0[保存按钮 saveProcess] --> S1[工艺管理_生产工艺_启用<br/>入参: 订单编号]
    S1 --> SOK[提示操作成功]
    S2[保存为标准工艺 processSave] --> S3[车间生产管理工艺_零件工序_保存为标准工艺<br/>入参: 物料编号/订单编号]
    S3 --> S4{result == '1'?}
    S4 -->|是| SOK2[提示保存成功]
    S4 -->|否| SERR2[提示保存失败]
  end

  subgraph Dispatch[任务下发]
    D0[整套下发 workprocess] --> D1{tableData5.length 小于 1?}
    D1 -->|是| DERR[提示下发失败]
    D1 -->|否| D2[计划排产_生产订单_订单任务_生产工艺任务下发<br/>订单编号/物料编号/计划数量]
    D2 --> D3{result != 0?}
    D3 -->|是| DOK[提示操作成功<br/>刷新列表/关闭弹窗]
    D3 -->|否| DOLD[提示已下发任务<br/>刷新列表/关闭弹窗]

    O0[单条下发 oneworkprocess（row）] --> O1[计划排产_生产订单_订单任务_单条生产工艺任务下发<br/>订单编号/物料编号/计划数量/工艺顺序]
    O1 --> OOK[提示操作成功<br/>刷新列表/不关闭弹窗]
  end

  classDef action fill:#FFF7E6,stroke:#C47F00,color:#111;
  classDef api fill:#EAF8EA,stroke:#2F855A,color:#111;
  classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111;
  classDef ok fill:#F0FFF4,stroke:#38A169,color:#111;
  classDef err fill:#FFEAEA,stroke:#C53030,color:#111;
  class B0,B1,B3,B4,B5,C0,C2,C3,C4,C5,C6,C7,S0,S2,D0,D2,O0 action;
  class BSP,C2,C3,C4,C5,C7,S1,S3,D2,O1 api;
  class B2,C1,C8,S4,D1,D3 decision;
  class COK,SOK,SOK2,DOK,DOLD,OOK ok;
  class BERR,CERR,SERR2,DERR err;
```

## 5. 后台过程关系框图

```mermaid
flowchart LR
  subgraph FE[前端方法]
    searchTable[searchTable<br/>订单列表查询]
    editProcess[editProcess/editProcesssearch<br/>打开编辑并查工艺]
    getitemdata[getitemdata<br/>查原料]
    getProcess[getProcess<br/>查工序基础库]
    getbasedata[getbasedata<br/>查设备基础数据]
    editProcedure[editProcedure/updateProcess/updateProcess2<br/>新增或编辑工序]
    orderOps[upOne/downOne/insertOne/deleteOne<br/>排序插入删除]
    copyOps[copyData/searchTable2/searchTable4/submitCopy<br/>工艺拷贝]
    saveOps[saveProcess/processSave<br/>启用/保存为标准工艺]
    dispatchOps[workprocess/oneworkprocess<br/>任务下发]
    drawingOps[getNum/getNum2<br/>图纸查看]
  end

  subgraph SP[存储过程/接口]
    sp1[计划排产_生产订单_订单查询]
    sp2[工艺管理_生产工艺_查询生产工艺]
    sp3[工艺管理_获取物料原料信息]
    sp4[MES_ProcessManagement_ProcessGet]
    sp5[设备管理_设备信息_查询]
    sp6[工艺管理_零件工序_生产工艺_修改数据]
    sp7[工艺管理_零件工序_生产工艺_编辑]
    sp8[工艺管理_零件工序_生产工艺_编辑插入工序]
    sp9[工艺管理_零件工序_生产工艺_上移工序/下移工序/插入工序/删除工序]
    sp10[工艺管理_生产工艺_生产工艺拷贝/标准工艺拷贝]
    sp11[MES_ProcessManagement_ProcessBindGet]
    sp12[工艺管理_制定标准工艺_拷贝生产工艺]
    sp13[工艺管理_生产工艺_工艺拷贝]
    sp14[工艺管理_生产工艺_启用]
    sp15[车间生产管理工艺_零件工序_保存为标准工艺]
    sp16[计划排产_生产订单_订单任务_生产工艺任务下发]
    sp17[计划排产_生产订单_订单任务_单条生产工艺任务下发]
    sp18[工艺管理_图纸维护_查看图纸]
    sp19[工艺管理_工艺维护_查看图纸]
    sp20[工艺管理_零件工序_生产工艺_批量生成生产工艺]
  end

  subgraph DB[业务数据对象]
    orderData[生产订单/计划排产数据]
    stdProcess[标准工艺库]
    productProcess[订单级生产工艺库]
    processBase[工序基础表]
    deviceBase[设备基础资料<br/>量具/机床/车间]
    materialData[物料原料/BOM/库存线索]
    drawingData[零件图纸/工艺图纸 PDF]
    taskData[生产任务/工序任务]
  end

  searchTable --> sp1 --> orderData
  editProcess --> sp2 --> productProcess
  getitemdata --> sp3 --> materialData
  getProcess --> sp4 --> processBase
  getbasedata --> sp5 --> deviceBase
  editProcedure --> sp6 --> productProcess
  editProcedure --> sp8 --> productProcess
  editProcedure --> sp2
  orderOps --> sp9 --> productProcess
  orderOps --> sp2
  editProcedure --> sp7 --> productProcess
  copyOps --> sp10 --> productProcess
  copyOps --> sp11 --> stdProcess
  copyOps --> sp12 --> productProcess
  copyOps --> sp13 --> productProcess
  saveOps --> sp14 --> productProcess
  saveOps --> sp15 --> stdProcess
  dispatchOps --> sp16 --> taskData
  dispatchOps --> sp17 --> taskData
  drawingOps --> sp18 --> drawingData
  drawingOps --> sp19 --> drawingData
  searchTable -.批量生成入口.-> sp20 --> productProcess

  classDef fe fill:#E8F3FF,stroke:#2B6CB0,color:#111;
  classDef sp fill:#EAF8EA,stroke:#2F855A,color:#111;
  classDef db fill:#FFF7E6,stroke:#C47F00,color:#111;
  class searchTable,editProcess,getitemdata,getProcess,getbasedata,editProcedure,orderOps,copyOps,saveOps,dispatchOps,drawingOps fe;
  class sp1,sp2,sp3,sp4,sp5,sp6,sp7,sp8,sp9,sp10,sp11,sp12,sp13,sp14,sp15,sp16,sp17,sp18,sp19,sp20 sp;
  class orderData,stdProcess,productProcess,processBase,deviceBase,materialData,drawingData,taskData db;
```

