133 lines
5.3 KiB
Markdown
133 lines
5.3 KiB
Markdown
|
|
# 智能项圈运单分配功能实现总结
|
|||
|
|
|
|||
|
|
## 已完成的功能
|
|||
|
|
|
|||
|
|
### 1. 数据库修改 ✅
|
|||
|
|
- 创建了 `添加项圈运单字段.sql` 文件
|
|||
|
|
- 在 `xq_client` 表添加了三个字段:
|
|||
|
|
- `delivery_id` INT - 运单ID
|
|||
|
|
- `delivery_number` VARCHAR(64) - 运单号
|
|||
|
|
- `license_plate` VARCHAR(64) - 车牌号
|
|||
|
|
|
|||
|
|
### 2. 后端Java代码修改 ✅
|
|||
|
|
|
|||
|
|
#### 2.1 XqClient实体类更新
|
|||
|
|
- 文件:`tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/entity/XqClient.java`
|
|||
|
|
- 添加了 `deliveryId` 字段映射
|
|||
|
|
|
|||
|
|
#### 2.2 XqClientMapper查询SQL修改
|
|||
|
|
- 文件:`tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/mapper/XqClientMapper.java`
|
|||
|
|
- 修改了 `selectXqClientListWithRelations` 方法,将 `xc.sn AS deviceId` 返回,统一使用sn作为设备编号
|
|||
|
|
- 修改了 `selectUnassignedXqClientList` 方法,同样使用sn作为deviceId
|
|||
|
|
|
|||
|
|
#### 2.3 设备分配逻辑更新
|
|||
|
|
- 文件:`tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/controller/DeliveryController.java`
|
|||
|
|
- 在 `updateDeviceDeliveryInfo` 方法中,为项圈设备添加了 `deliveryId` 字段的更新
|
|||
|
|
- 现在分配项圈时会同时更新:`delivery_id`、`delivery_number`、`license_plate`
|
|||
|
|
|
|||
|
|
#### 2.4 新增查看所有设备API
|
|||
|
|
- 文件:`tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/controller/DeliveryDeviceController.java`
|
|||
|
|
- 新增 `/deliveryDevice/pageDeviceList` 接口
|
|||
|
|
- 同时查询耳标(type=2)和项圈(type=3)设备
|
|||
|
|
- 返回统一的设备列表,包含 `deviceType` 字段区分设备类型
|
|||
|
|
|
|||
|
|
#### 2.5 新增运单状态更新API
|
|||
|
|
- 文件:`tradeCattle/aiotagro-cattle-trade/src/main/java/com/aiotagro/cattletrade/business/controller/DeliveryController.java`
|
|||
|
|
- 新增 `/delivery/updateStatus` 接口
|
|||
|
|
- 支持更新运单的核验状态(1-待核验 2-已核验 3-已完成)
|
|||
|
|
|
|||
|
|
### 3. 前端代码修改 ✅
|
|||
|
|
|
|||
|
|
#### 3.1 分配设备对话框优化
|
|||
|
|
- 文件:`pc-cattle-transportation/src/views/shipping/assignDialog.vue`
|
|||
|
|
- 修改项圈设备编号映射,优先使用 `sn` 字段:`deviceId: item.sn || item.deviceId`
|
|||
|
|
- 确保项圈设备状态判断基于 `delivery_number` 字段
|
|||
|
|
|
|||
|
|
#### 3.2 查看设备对话框增强
|
|||
|
|
- 文件:`pc-cattle-transportation/src/views/shipping/lookDialog.vue`
|
|||
|
|
- 改用新的 `deviceAllList` API,同时显示耳标和项圈设备
|
|||
|
|
- 更新设备编号显示逻辑:`scope.row.deviceId || scope.row.sn`
|
|||
|
|
- 更新佩戴状态判断:支持 `isWare` 和 `is_wear` 两种字段
|
|||
|
|
|
|||
|
|
#### 3.3 新增API接口定义
|
|||
|
|
- 文件:`pc-cattle-transportation/src/api/shipping.js`
|
|||
|
|
- 新增 `deviceAllList` 函数:查看运单所有设备
|
|||
|
|
- 新增 `updateDeliveryStatus` 函数:更新运单状态
|
|||
|
|
|
|||
|
|
#### 3.4 运送清单列表功能增强
|
|||
|
|
- 文件:`pc-cattle-transportation/src/views/shipping/loadingOrder.vue`
|
|||
|
|
- 添加"编辑状态"按钮到操作列
|
|||
|
|
- 实现 `editStatus` 方法,弹出输入框修改运单状态
|
|||
|
|
- 操作列宽度调整为420px以容纳新按钮
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
### 核心功能
|
|||
|
|
1. **智能项圈分配到运单**
|
|||
|
|
- 项圈设备可以通过"分配设备"功能分配到运单
|
|||
|
|
- 分配时自动更新项圈的运单ID、运单号和车牌号
|
|||
|
|
|
|||
|
|
2. **设备编号统一**
|
|||
|
|
- 项圈设备统一使用 `sn` 字段作为设备编号
|
|||
|
|
- 前后端保持一致,确保数据正确映射
|
|||
|
|
|
|||
|
|
3. **设备状态判断**
|
|||
|
|
- 基于 `delivery_number` 字段判断设备是否已分配
|
|||
|
|
- 未分配显示"未分配",已分配显示实际运单号
|
|||
|
|
|
|||
|
|
4. **查看设备功能**
|
|||
|
|
- 支持同时查看运单下的耳标和项圈设备
|
|||
|
|
- 自动区分设备类型并显示相应标签
|
|||
|
|
|
|||
|
|
5. **运单状态管理**
|
|||
|
|
- 新增"编辑状态"按钮,可直接修改运单核验状态
|
|||
|
|
- 支持三种状态:1-待核验、2-已核验、3-已完成
|
|||
|
|
|
|||
|
|
### 数据同步
|
|||
|
|
- 分配设备时,`xq_client` 表的以下字段会自动更新:
|
|||
|
|
- `delivery_id`:运单ID
|
|||
|
|
- `delivery_number`:运单号
|
|||
|
|
- `license_plate`:车牌号(从运单的 `license_plate` 字段获取)
|
|||
|
|
|
|||
|
|
## 使用说明
|
|||
|
|
|
|||
|
|
### 1. 执行数据库脚本
|
|||
|
|
```bash
|
|||
|
|
# 在MySQL中执行
|
|||
|
|
source 添加项圈运单字段.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 分配项圈到运单
|
|||
|
|
1. 进入"运送清单"页面
|
|||
|
|
2. 点击某个运单的"分配设备"按钮
|
|||
|
|
3. 在设备类型下拉框选择"智能项圈"或"全部设备"
|
|||
|
|
4. 勾选要分配的项圈设备
|
|||
|
|
5. 点击"保存"完成分配
|
|||
|
|
|
|||
|
|
### 3. 查看运单设备
|
|||
|
|
1. 在"运送清单"页面点击"查看设备"按钮
|
|||
|
|
2. 弹窗中会显示该运单的所有设备(耳标+项圈)
|
|||
|
|
3. 设备类型列会显示"智能耳标"或"智能项圈"
|
|||
|
|
|
|||
|
|
### 4. 修改运单状态
|
|||
|
|
1. 在"运送清单"页面点击"编辑状态"按钮
|
|||
|
|
2. 在弹出的输入框中输入状态值(1/2/3)
|
|||
|
|
3. 点击确定完成状态更新
|
|||
|
|
|
|||
|
|
## 技术要点
|
|||
|
|
|
|||
|
|
1. **后端SQL优化**:使用 `ROW_NUMBER()` 窗口函数获取设备的最新运单关联
|
|||
|
|
2. **前端兼容性**:支持多种字段名映射(deviceId/sn, isWare/is_wear)
|
|||
|
|
3. **权限控制**:所有API都添加了 `@SaCheckPermission` 权限验证
|
|||
|
|
4. **错误处理**:完善的异常捕获和用户提示
|
|||
|
|
|
|||
|
|
## 测试建议
|
|||
|
|
|
|||
|
|
- [ ] 测试项圈设备分配功能
|
|||
|
|
- [ ] 验证分配后 `xq_client` 表字段是否正确更新
|
|||
|
|
- [ ] 测试查看设备功能是否同时显示耳标和项圈
|
|||
|
|
- [ ] 验证设备状态判断逻辑(未分配/已分配)
|
|||
|
|
- [ ] 测试运单状态编辑功能
|
|||
|
|
- [ ] 验证项圈设备编号显示是否使用sn字段
|
|||
|
|
|