552 lines
17 KiB
Plaintext
552 lines
17 KiB
Plaintext
# 元利 MES 项目详细流程图
|
||
|
||
生成日期:2026-05-25
|
||
依据文档:`元利项目详细分析.md`
|
||
|
||
说明:
|
||
- 本文把 `元利项目详细分析.md` 中的页面、存储过程、SAP 调用、看板和新增隐性需求整理为可维护的 Mermaid 流程图。
|
||
- 图中页面路径以 `src/views/...` 为主,过程名称以文档分析到的 `CreateData(type, name, params)` 调用为主。
|
||
- `type=11` 通常表示查询/读取或通用执行,`type=12` 通常表示写入/业务动作,具体仍以后端实现为准。
|
||
|
||
## 1. 系统总体架构流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
U[用户/班组/计划/质检/设备/管理层] --> FE[Vue 2.7 前端页面]
|
||
FE --> ROUTE[动态菜单/路由/权限]
|
||
ROUTE --> PAGE[src/views 业务页面]
|
||
|
||
PAGE --> CD[CreateData type + procedure + params]
|
||
CD --> ED[ExecDatabase 统一后端接口]
|
||
ED --> SP[SQL Server 存储过程]
|
||
SP --> DB[(YL_MESDB)]
|
||
|
||
PAGE --> B1[src/api/b1s.js]
|
||
B1 --> SAP[SAP B1 Service Layer]
|
||
SP --> SAPDB[(SAP.SBO_YL 跨库/同步表)]
|
||
|
||
PAGE --> TM[tm 仓储/条码任务接口]
|
||
TM --> WMS[库存/条码任务服务]
|
||
|
||
DB --> VIEW[业务视图/报表视图]
|
||
VIEW --> PAGE
|
||
VIEW --> DASH[生产/装配/质检/机加/综合看板]
|
||
SAPDB --> VIEW
|
||
SAP --> PAGE
|
||
WMS --> PAGE
|
||
```
|
||
|
||
关键链路:
|
||
- 前端页面不直接写 SQL,而是通过 `CreateData` 组装过程名和参数。
|
||
- SAP 既有前端直接调用 B1 Service Layer,也有 SQL 跨库或同步表读取。
|
||
- 看板主要读存储过程和视图,本身通常不维护业务数据。
|
||
|
||
## 2. 登录、菜单、权限与页面访问流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[进入登录页 src/views/login] --> B[输入工号/密码]
|
||
B --> C[登录基础数据_人员信息_登陆检查密码]
|
||
C --> D{校验通过?}
|
||
D -- 否 --> E[提示登录失败]
|
||
D -- 是 --> F[写入 Token/用户信息]
|
||
F --> G[加载用户角色/菜单权限]
|
||
G --> H[登录基础数据_二级菜单/角色权限]
|
||
H --> I[生成动态路由]
|
||
I --> J[进入 Layout]
|
||
J --> K[侧边栏/标签页/AppMain]
|
||
K --> L[打开具体业务页面]
|
||
```
|
||
|
||
涉及页面:
|
||
- `src/views/login/index.vue`
|
||
- `src/views/layout/Layout.vue`
|
||
- `src/views/layout/components/Sidebar`
|
||
- `src/views/SystemMaintenance/MenuManagement`
|
||
- `src/views/SystemMaintenance/SystemRrolemaintenance`
|
||
|
||
## 3. 基础资料维护总流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[系统基础资料] --> B[人员/组织/角色]
|
||
A --> C[工位/设备/SAP Resource]
|
||
A --> D[班次/人员绑定]
|
||
A --> E[工序/物料/图纸/产品结构]
|
||
|
||
B --> B1[PersonnelManagement/OrgManagement/SystemRole]
|
||
B1 --> B2[人员、岗位、班组、权限]
|
||
|
||
C --> C1[WorkstationManagement]
|
||
C1 --> C2[维护工位]
|
||
C2 --> C3{是否同步 SAP Resource?}
|
||
C3 -- 是 --> C4[POST/PATCH /Resources]
|
||
C3 -- 否 --> C5[仅 MES 保存]
|
||
C4 --> C6[记录同步状态/失败原因]
|
||
C5 --> C6
|
||
|
||
C --> C7[DeviceInformation]
|
||
C7 --> C8[设备名称/型号/类型/工位/点检/能力]
|
||
|
||
D --> D1[ShiftManagement/PersonnelBinding]
|
||
D1 --> D2[班次规则/人员工位绑定]
|
||
|
||
E --> E1[ProcedureManagement]
|
||
E1 --> E2[工序基础数据]
|
||
E2 --> E3{是否同步 SAP RouteStages?}
|
||
E3 -- 是 --> E4[POST/PATCH /RouteStages]
|
||
E3 -- 否 --> E5[MES 本地维护]
|
||
```
|
||
|
||
维护口径:
|
||
- 缺勤人员不能由看板维护,必须来自班次/排班、人员工位绑定和实到来源。
|
||
- 设备 OEE 基础数据应分散在设备档案、工位、工艺、采集配置中维护,不应只靠看板公式。
|
||
|
||
## 4. 工艺、图纸、标准工艺、生产工艺流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[产品/物料/图纸基础] --> B[产品结构维护 CraftMaintain]
|
||
A --> C[零件图纸 PartDrawing]
|
||
A --> D[工艺图纸 ProcessDrawing]
|
||
A --> E[工序基础 ProcedureManagement]
|
||
|
||
B --> F[制定标准工艺 ProcessesDevelop]
|
||
C --> F
|
||
D --> F
|
||
E --> F
|
||
|
||
F --> G[标准工艺库]
|
||
G --> G1[工序顺序]
|
||
G --> G2[标准工时/准备工时]
|
||
G --> G3[是否关键工序]
|
||
|
||
G --> H[生产工艺 ProcessProduct]
|
||
H --> I{订单是否已有生产工艺?}
|
||
I -- 是 --> J[编辑订单级生产工艺]
|
||
I -- 否 --> K[按物料带出标准工艺草稿]
|
||
K --> L{用户保存?}
|
||
L -- 否 --> M[不写入生产工艺]
|
||
L -- 是 --> N[写入生产工艺库]
|
||
|
||
J --> O[启用/下发生产工艺]
|
||
N --> O
|
||
O --> P[生成任务可用工艺快照]
|
||
P --> Q[排产/报工/质检/看板读取]
|
||
```
|
||
|
||
关键结论:
|
||
- `关键工序` 应在标准工艺和生产工艺维护。
|
||
- 生产任务下发时应快照关键工序和标准工时,避免后续改标准工艺影响历史任务。
|
||
- 质检大屏、机加大屏只读取关键工序,不作为维护入口。
|
||
|
||
## 5. 生产订单、机加排产与 SAP 回写流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[SAP/MES 生产订单同步] --> B[MES_接口_生产计划]
|
||
B --> C[待排产 SelfMakePlan]
|
||
C --> D[选择订单/工序/设备/工位/时间]
|
||
D --> E[排产保存]
|
||
E --> F[MES_接口_生产计划_生产任务]
|
||
F --> G[任务排产状态=已排产]
|
||
|
||
E --> H{是否回写 SAP 生产订单日期?}
|
||
H -- 是 --> I[PATCH /ProductionOrders]
|
||
I --> J{SAP 回写成功?}
|
||
J -- 是 --> K[记录同步成功]
|
||
J -- 否 --> L[记录失败原因/待重试]
|
||
H -- 否 --> M[仅 MES 排产]
|
||
|
||
G --> N[已排产 SelfMakePlando/SelfMakePlandone]
|
||
N --> O[生产计划跟踪/及时开工/机加中心]
|
||
```
|
||
|
||
涉及页面:
|
||
- `PlanManagement/SelfMakePlan`
|
||
- `PlanManagement/SelfMakePlando`
|
||
- `PlanManagement/SelfMakePlandone`
|
||
- `ProductionManagement/ProductionPlanTrack`
|
||
- `AnomalousManagement/PunctualWork`
|
||
|
||
风险点:
|
||
- MES 排产成功但 SAP 回写失败时,需要保留同步状态和失败原因。
|
||
- 已排产页面新增历史工时、总工时后,必须明确工时来源是生产报工、质检、异常还是设备采集。
|
||
|
||
## 6. 装配排产、外购申请与 SAP 流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[装配/电气/系统相关订单] --> B[InstallMakePlan 待排产]
|
||
B --> C[选择装配任务/计划时间/优先级]
|
||
C --> D[保存装配排产]
|
||
D --> E[生成装配生产任务]
|
||
|
||
C --> F{需要采购申请?}
|
||
F -- 是 --> G[POST /PurchaseRequests]
|
||
G --> H{SAP 采购申请成功?}
|
||
H -- 是 --> I[记录 SAP 采购请求号]
|
||
H -- 否 --> J[记录失败/允许重试]
|
||
F -- 否 --> K[不生成采购申请]
|
||
|
||
D --> L{是否回写 SAP 生产订单?}
|
||
L -- 是 --> M[PATCH /ProductionOrders]
|
||
M --> N[同步派工/日期/说明]
|
||
L -- 否 --> O[仅 MES 保存]
|
||
|
||
E --> P[InstallMakePlanDo/装配中心/装配看板]
|
||
```
|
||
|
||
涉及页面:
|
||
- `PlanManagement/InstallMakePlan`
|
||
- `PlanManagement/InstallMakePlanDo`
|
||
- `ProductionManagement/AssemblyCenter`
|
||
- `装配任务看板`
|
||
|
||
新增需求影响:
|
||
- 发料齐套时间、装配完成时间、手续确认、送检状态会反向要求装配排产和装配中心补字段。
|
||
|
||
## 7. 机加生产执行流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[已排产机加任务] --> B[MachiningCenter 机加中心]
|
||
B --> C{任务是否可开工?}
|
||
C -- 否 --> C1[显示不可操作原因: 未齐套/上序未合格/异常/编程未完成/设备占用]
|
||
C -- 是 --> D[开始加工/开工]
|
||
|
||
D --> E[操作记录表写入开始时间/人员/设备]
|
||
E --> F[加工过程]
|
||
F --> G{是否异常?}
|
||
G -- 是 --> H[直接报异常]
|
||
H --> I[AbnormalControl 异常管控]
|
||
I --> F
|
||
|
||
F --> J[结束报工]
|
||
J --> K[写入 YL_加工中心_操作记录表]
|
||
K --> L[更新完成数量/工时/任务状态]
|
||
|
||
L --> M{是否需要质检?}
|
||
M -- 是 --> N[进入质检任务/序检/首检/终检]
|
||
M -- 否 --> O[进入下序或完成]
|
||
|
||
O --> P{是否入库/转序/外协?}
|
||
P -- 转序 --> A
|
||
P -- 入库 --> Q[入库/库存任务]
|
||
P -- 外协 --> R[外协流程]
|
||
```
|
||
|
||
涉及对象:
|
||
- `YL_加工中心_操作记录表`
|
||
- `MES_接口_生产计划_生产任务`
|
||
- `View_生产订单_MES`
|
||
- `ProductionManagement/MachiningCenter`
|
||
|
||
新增需求影响:
|
||
- 编程任务完成状态可能成为开工前置条件。
|
||
- 设备采集工时、程序工时、人工报工工时需要区分。
|
||
- 条码拣配会影响齐套、发料、可开工状态。
|
||
|
||
## 8. 装配中心执行流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[已排产装配任务] --> B[AssemblyCenter 装配中心]
|
||
B --> C[查询 SAP/MES 订单、物料、发料、齐套]
|
||
C --> D{发料/齐套是否满足?}
|
||
D -- 否 --> E[缺件/待发料/不可开工]
|
||
E --> F[缺件明细/预计可执行时间]
|
||
D -- 是 --> G[开始装配]
|
||
|
||
G --> H[装配报工/工时记录]
|
||
H --> I{是否产生异常?}
|
||
I -- 是 --> J[直接报异常 -> AbnormalControl]
|
||
I -- 否 --> K[继续装配]
|
||
|
||
K --> L[装配完成/更新任务状态]
|
||
L --> M{是否需要送检?}
|
||
M -- 是 --> N[送检/质检任务]
|
||
M -- 否 --> O[入库/发货/后续确认]
|
||
|
||
L --> P[手续确认报表]
|
||
P --> Q{手续确认完成?}
|
||
Q -- 否 --> R[待办保留]
|
||
Q -- 是 --> S[从待办消失]
|
||
|
||
O --> T[装配看板/生产任务看板]
|
||
```
|
||
|
||
关键新增字段:
|
||
- 发料齐套时间
|
||
- 装配完成时间
|
||
- 送检状态/送检时间
|
||
- 手续确认、确认人、确认时间
|
||
- 当前对应人员/当前对应内容
|
||
|
||
## 9. 质检业务流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[质检任务来源] --> A1[机加报工后待检]
|
||
A --> A2[装配送检]
|
||
A --> A3[采购入库检]
|
||
A --> A4[序检收检/外协收检]
|
||
A --> A5[退库/销售退货/其他入库]
|
||
|
||
A1 --> B[QualityCenter/CheckTask]
|
||
A2 --> B
|
||
A3 --> B
|
||
A4 --> B
|
||
A5 --> B
|
||
|
||
B --> C[录入检验结果]
|
||
C --> D{合格?}
|
||
D -- 是 --> E[合格数量/质检完成]
|
||
D -- 否 --> F[不合格处理 Unqualified]
|
||
|
||
F --> G{处置方式}
|
||
G -- 返工 --> H[回生产/返修]
|
||
G -- 报废 --> I[报废记录]
|
||
G -- 让步接收 --> J[让步接收字段]
|
||
G -- 复检 --> K[生成复检/再次检验]
|
||
|
||
E --> L{是否 SAP 收货/库存动作?}
|
||
L -- 是 --> M[PurchaseDeliveryNotes 或库存任务]
|
||
L -- 否 --> N[MES 本地完成]
|
||
|
||
J --> O[让步接收记录查询页]
|
||
E --> P[质检看板/及时检验/生产日报]
|
||
```
|
||
|
||
涉及页面:
|
||
- `QualityManagement/QualityCenter`
|
||
- `QualityManagement/CheckTask/processReceive`
|
||
- `QualityManagement/CheckTask/purchaseIncoming`
|
||
- `QualityManagement/CheckTask/final`
|
||
- `QualityManagement/Unqualified`
|
||
- `QualityManagement/QualityDetails`
|
||
|
||
新增需求影响:
|
||
- 及时检验要以生产完成/报工完成时间为起点。
|
||
- 关键工序要从工艺/任务快照读取。
|
||
- 让步接收记录页只查询,不应成为维护入口。
|
||
|
||
## 10. 外协业务流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[生产任务指派对象=外协] --> B[OutsourceMange 外协管理]
|
||
B --> C[生成外协任务/采购申请]
|
||
C --> D{是否提交 SAP 采购申请?}
|
||
D -- 是 --> E[POST /PurchaseRequests]
|
||
E --> F{SAP 成功?}
|
||
F -- 是 --> G[记录采购请求/单据关系]
|
||
F -- 否 --> H[记录失败/重试]
|
||
D -- 否 --> I[MES 本地外协任务]
|
||
|
||
G --> J[外协加工/供应商交付]
|
||
I --> J
|
||
J --> K[序检收检/外协收货]
|
||
K --> L[记录供应商/SAP采购收货单号/指派对象]
|
||
L --> M{质检合格?}
|
||
M -- 是 --> N[SAP PurchaseDeliveryNotes/入库]
|
||
M -- 否 --> O[不合格/返修/让步]
|
||
N --> P[外协报表/供应商质量统计]
|
||
O --> P
|
||
```
|
||
|
||
涉及页面:
|
||
- `ProductionManagement/OutsourceMange`
|
||
- `ProductionManagement/OutsourceSheet`
|
||
- `ProductionManagement/SaleOutsourceMange`
|
||
- `QualityManagement/CheckTask/processReceive`
|
||
|
||
关键修正:
|
||
- 供应商、SAP 采购收货单号、指派对象应在外协/序检收检链路维护,报表只消费这些字段。
|
||
|
||
## 11. 工时、SAP 工时校验与投料流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[报工/设备采集/质检/装配] --> B[工时来源汇总]
|
||
B --> B1[人工报工工时]
|
||
B --> B2[设备运行工时]
|
||
B --> B3[程序工时]
|
||
B --> B4[质检/装配/设计/编程工时]
|
||
|
||
B1 --> C[Workhours/Timesheet/WorkHoursCheck]
|
||
B2 --> C
|
||
B3 --> C
|
||
B4 --> C
|
||
|
||
C --> D[工时校验]
|
||
D --> E{是否提交 SAP?}
|
||
E -- 否 --> F[MES 工时报表/绩效]
|
||
E -- 是 --> G[GET /ProductionOrders]
|
||
G --> H[匹配 SAP 工序/资源]
|
||
H --> I[POST /InventoryGenExits 投料]
|
||
H --> J[PATCH /ProductionOrders 更新工序资源/工时]
|
||
I --> K{SAP 成功?}
|
||
J --> K
|
||
K -- 是 --> L[记录提交成功]
|
||
K -- 否 --> M[记录失败原因/允许重试]
|
||
```
|
||
|
||
涉及页面:
|
||
- `ProductionManagement/WorkHoursCheck`
|
||
- `ProductionManagement/WorkhoursEdit`
|
||
- `ProductionManagement/Workhours`
|
||
- `ProductionManagement/Timesheet`
|
||
|
||
风险点:
|
||
- 程序工时、设备工时、人工工时不是同一口径。
|
||
- 上 SAP 的工时要明确是否包含设计、编程、质检、装配、异常。
|
||
|
||
## 12. 异常管控流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[报工/质检/外协/装配/设计/编程页面] --> B[选择任务]
|
||
B --> C[点击报异常]
|
||
C --> D[带出任务/订单/工序/人员信息]
|
||
D --> E[填写异常类型/说明/附件]
|
||
E --> F[选择审批人 多选]
|
||
F --> G[保存异常]
|
||
G --> H[AbnormalControl 异常管控]
|
||
|
||
H --> I[审批人待办可见]
|
||
I --> J{任一审批人处理?}
|
||
J -- 否 --> K[异常未关闭]
|
||
J -- 是 --> L[记录实际处理人]
|
||
L --> M[异常进入下一状态/关闭]
|
||
|
||
K --> N[影响任务可操作性/及时开工/看板]
|
||
M --> O[任务恢复或结束]
|
||
```
|
||
|
||
关键规则:
|
||
- 多审批人不是会签,是多人可见、一人处理。
|
||
- 异常需要带业务域、任务、工序、责任部门,否则看板异常数会混淆。
|
||
|
||
## 13. 生产订单关闭与 SAP 状态同步流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[生产订单关闭 PlannOrderClose] --> B[查询可关闭订单]
|
||
B --> C[选择单个或批量订单]
|
||
C --> D[二次确认]
|
||
D --> E[逐单 PATCH /ProductionOrders]
|
||
E --> F{单据关闭成功?}
|
||
F -- 是 --> G[记录成功/更新 MES 状态]
|
||
F -- 否 --> H[记录失败原因]
|
||
H --> I[失败项重试]
|
||
G --> J[刷新关闭页]
|
||
H --> J
|
||
J --> K[影响排产页/生产中心/手续确认/看板]
|
||
```
|
||
|
||
要求:
|
||
- 批量关闭不应“一条失败全批失败”,应逐单记录成功/失败。
|
||
- 关闭结果要被排产、生产中心、装配看板、手续确认报表识别。
|
||
|
||
## 14. 看板数据汇总流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[主系统业务数据] --> B[统一视图/存储过程]
|
||
C[SAP 同步表/跨库表] --> B
|
||
D[设备采集缓存/历史] --> B
|
||
E[质检记录/报工记录] --> B
|
||
|
||
B --> P[生产任务看板]
|
||
B --> Q[装配任务看板]
|
||
B --> R[质检任务看板]
|
||
B --> S[机加设备生产运营看板]
|
||
B --> T[TableTV 工位监控]
|
||
B --> U[board_view 综合大屏]
|
||
|
||
P --> P1[齐套率/待排产/未及时开工/加急/未入库]
|
||
Q --> Q1[装配任务/发货状态/缺件/异常/缺勤]
|
||
R --> R1[未清/及时率/关键工序/当天完成]
|
||
S --> S1[设备状态/在制/关键工序/缺勤/OEE]
|
||
U --> U1[合同进度/工时/采购/库存/OEE]
|
||
```
|
||
|
||
看板治理规则:
|
||
- 看板只展示和钻取,不作为主维护入口。
|
||
- SAP 类指标必须有同步时间和同步状态。
|
||
- `GETDATE()` 型实时指标如要做日报/历史回看,应补统计日期或日快照。
|
||
- `board_view` 中 OEE、采购、库存等占位指标上线前必须接真实数据或隐藏。
|
||
|
||
## 15. 新增需求与维护入口判断流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[收到新增需求/新增字段] --> B{字段性质是什么?}
|
||
B -- 主数据 --> C[找基础维护页: 人员/班次/工位/设备/工序/工艺]
|
||
B -- 订单过程数据 --> D[找业务页: 计划/排产/装配/机加/质检]
|
||
B -- SAP 同步数据 --> E[找 SAP 同步表/接口/同步时间]
|
||
B -- 设备采集数据 --> F[找采集原始表/设备状态历史/任务绑定]
|
||
B -- 人工确认 --> G[待办页维护并记录确认人时间]
|
||
B -- 计算指标 --> H[统一视图/过程/快照]
|
||
|
||
C --> I{现有页面能承载?}
|
||
D --> I
|
||
E --> I
|
||
F --> I
|
||
G --> I
|
||
H --> I
|
||
|
||
I -- 是 --> J[扩展现有页面/过程]
|
||
I -- 否 --> K[新增维护页或业务页]
|
||
J --> L[同步菜单/权限/日志/历史策略]
|
||
K --> L
|
||
L --> M[检查影响看板/报表/SAP/历史数据]
|
||
M --> N[开发排期]
|
||
```
|
||
|
||
典型判断:
|
||
- 缺勤人员:先确认排班/应到和实到来源;没有维护入口则新增或扩展排班/出勤维护。
|
||
- 关键工序:在标准工艺和生产工艺维护,任务下发快照,看板只读取。
|
||
- 让步接收:质检中心维护,记录页只查询。
|
||
- OEE:设备采集、报工、质检、工艺标准工时共同计算,不是人工维护字段。
|
||
|
||
## 16. 端到端生产业务主流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[SAP/MES 生产订单] --> B[工艺准备]
|
||
B --> B1[标准工艺]
|
||
B1 --> B2[生产工艺]
|
||
B2 --> B3[任务工艺快照]
|
||
|
||
A --> C[计划排产]
|
||
C --> C1[机加排产]
|
||
C --> C2[装配排产]
|
||
C1 --> D[生产执行]
|
||
C2 --> E[装配执行]
|
||
|
||
D --> F[报工/工时/设备采集]
|
||
E --> G[装配报工/发料/齐套/送检]
|
||
|
||
F --> H[质检]
|
||
G --> H
|
||
H --> I{质量结果}
|
||
I -- 合格 --> J[入库/转序/交付]
|
||
I -- 不合格 --> K[返工/报废/让步接收/复检]
|
||
K --> D
|
||
|
||
J --> L[工时校验/SAP 投料/订单状态]
|
||
L --> M[订单关闭]
|
||
M --> N[报表/看板/日报]
|
||
|
||
D --> O[异常管控]
|
||
E --> O
|
||
H --> O
|
||
O --> N
|
||
|
||
N --> P[管理层 KPI/现场大屏/追溯查询]
|
||
```
|
||
|
||
这个主流程是后续所有新增需求的评估底图:任何新增字段都要判断它落在工艺准备、计划排产、生产执行、质检、入库交付、SAP 回写、看板报表中的哪一环。
|