Files
cattleTransportation/智能项圈功能实现总结.md
2025-10-14 17:31:16 +08:00

133 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智能项圈运单分配功能实现总结
## 已完成的功能
### 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字段