# 电池复投管理

## 1. 功能概述

电池复投管理用于将生产中产生的 NG（不良）电池重新激活，使其恢复正常生产状态，继续按工艺流程流转。

**主要功能：**

- 电池验证：输入电池条码，系统校验电池是否符合复投条件
- 复投激活：将符合条件的 NG 电池重新激活，恢复为正常生产状态

**对应功能截图**：
![图片：电池复投管理功能截图](/public/image/process_model/图片：工艺模型功能截图.png)

## 2. 术语说明

| 术语 | 定义 |
|------|------|
| NG 电池 | 生产过程中因质量检测判定为不良的电池 |
| 复投 | 将 NG 电池重新激活，使其恢复正常生产 |
| 电池条码 | 电池的唯一标识编号 |
| 激活状态 | 电池当前是否处于可流转生产的状态 |
| 托盘 | 承载电池的生产容器 |
| 批次 | 电池所属的生产批次 |

## 3. 电池复投逻辑流程

```mermaid
sequenceDiagram
    participant 用户
    participant 前端页面
    participant 后端服务
    participant Workerman

    用户->>前端页面: 输入电池条码，点击验证数据
    前端页面->>后端服务: 请求验证电池信息

    后端服务->>后端服务: 校验1: 电池是否存在于系统
    alt 电池不存在
        后端服务-->>前端页面: 提示电池不存在
        前端页面-->>用户: 展示异常信息
    end

    后端服务->>后端服务: 校验2: 电池批次是否全部一致
    alt 批次不一致
        后端服务-->>前端页面: 提示批次不一致
        前端页面-->>用户: 展示异常信息
    end

    后端服务->>后端服务: 校验3: 电池是否绑定激活中的托盘
    alt 托盘仍在激活中
        后端服务-->>前端页面: 提示托盘激活中
        前端页面-->>用户: 展示异常信息
    end

    后端服务->>后端服务: 校验4: 电池是否为NG状态
    alt 不是NG电池
        后端服务-->>前端页面: 提示不是NG电池
        前端页面-->>用户: 展示异常信息
    end

    后端服务->>后端服务: 校验5: 电池是否为未激活状态
    alt 电池已激活
        后端服务-->>前端页面: 提示电池已激活
        前端页面-->>用户: 展示异常信息
    end

    后端服务-->>前端页面: 验证通过，返回电池详情
    前端页面-->>用户: 展示电池信息表格

    用户->>前端页面: 核对信息，点击复投激活
    前端页面-->>用户: 弹出确认提示
    用户->>前端页面: 点击确定

    前端页面->>Workerman: 发送复投激活指令
    Workerman->>Workerman: 复制电池数据生成新纪录
    Workerman->>Workerman: 清除NG标记和档位信息
    Workerman->>Workerman: 重新激活电池
    Workerman-->>前端页面: 返回激活成功
    前端页面-->>用户: 提示复投成功，电池恢复流转
```

**关键验证规则：**

| 验证项 | 规则说明 |
|--------|---------|
| 电池是否存在 | 输入的每条电池条码必须在系统中存在 |
| 批次一致性 | 所有输入的电池必须属于同一生产批次 |
| 托盘状态 | 如果电池绑定在托盘上，托盘不能处于激活状态 |
| NG 状态 | 电池必须带有 NG 标记，普通电池不可复投 |
| 激活状态 | 电池当前必须处于未激活状态，已激活的电池不可复投 |

## 4. 操作步骤

### 4.1 验证电池

1. 进入【生产监控】→【电池复投管理】
2. 在输入框中录入电池条码：
   - 方式一：直接在输入框中输入多个电池条码，以逗号分隔
   - 方式二：点击输入框右侧的 **📄** 按钮，在弹出的多行输入框中每行输入一个电池条码，点击确定
3. 点击 **【验证数据】** 按钮
4. 系统校验电池信息，校验通过后在下方表格展示电池详情

**表格字段说明：**

| 字段 | 说明 |
|------|------|
| 电池条码 | 电池的唯一标识编号 |
| 批次 | 电池所属的生产批次 |
| 托盘 | 电池绑定的托盘编号 |
| 流水号 | 电池的生产流水号 |
| 激活状态 | "激活"或"未激活" |
| 档位类型 | 电池的档位分类 |
| 档位 | 电池的档位信息 |
| 上一工序 | 电池最近完成的工序 |
| 当前工序 | 电池接下来要流转的工序 |

### 4.2 执行复投激活

1. 验证通过后，核对表格中的电池信息
2. 点击 **【复投激活】** 按钮
3. 系统弹出确认提示："确认后电池将激活，激活后只能从当前工序开始生产，不能重新做上一工序"
4. 点击 **确定** 完成复投

**【重要】**：
- 复投激活后，电池的 NG 标记会被清除，档位信息也会被清除
- 电池激活后只能从当前工序继续流转，无法退回上一工序
- 此操作不可逆，请在确认后执行

**对应功能截图**：
![图片：复投激活截图](/public/image/process_model/图片：工序单元列表截图.png)

## 5. 常见异常提示

| 提示信息 | 原因 | 处理建议 |
|---------|------|---------|
| 电池不存在 BATTERY_MAP 数据 | 电池条码输入错误或未在系统中登记 | 检查条码是否正确 |
| 电池的批次与第一个不一致 | 输入了不同批次的电池 | 确保同一批次电池一起复投 |
| 电池绑定的托盘仍在激活中 | 电池所在托盘还在生产中 | 等待托盘完成后再操作 |
| 该条码必须是未激活状态且为 NG 电池 | 电池不满足复投条件 | 只有 NG 且未激活的电池才能复投 |
| 电池在批次中是激活的，不需要重新激活 | 电池已经是激活状态 | 无需操作 |
| 电池没有 NG 信息，不是 NG 电池 | 电池为正常品 | 正常电池无需复投 |
