5.3 KiB
5.3 KiB
智能项圈运单分配功能实现总结
已完成的功能
1. 数据库修改 ✅
- 创建了
添加项圈运单字段.sql文件 - 在
xq_client表添加了三个字段:delivery_idINT - 运单IDdelivery_numberVARCHAR(64) - 运单号license_plateVARCHAR(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 - 改用新的
deviceAllListAPI,同时显示耳标和项圈设备 - 更新设备编号显示逻辑:
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以容纳新按钮
功能特性
核心功能
-
智能项圈分配到运单
- 项圈设备可以通过"分配设备"功能分配到运单
- 分配时自动更新项圈的运单ID、运单号和车牌号
-
设备编号统一
- 项圈设备统一使用
sn字段作为设备编号 - 前后端保持一致,确保数据正确映射
- 项圈设备统一使用
-
设备状态判断
- 基于
delivery_number字段判断设备是否已分配 - 未分配显示"未分配",已分配显示实际运单号
- 基于
-
查看设备功能
- 支持同时查看运单下的耳标和项圈设备
- 自动区分设备类型并显示相应标签
-
运单状态管理
- 新增"编辑状态"按钮,可直接修改运单核验状态
- 支持三种状态:1-待核验、2-已核验、3-已完成
数据同步
- 分配设备时,
xq_client表的以下字段会自动更新:delivery_id:运单IDdelivery_number:运单号license_plate:车牌号(从运单的license_plate字段获取)
使用说明
1. 执行数据库脚本
# 在MySQL中执行
source 添加项圈运单字段.sql
2. 分配项圈到运单
- 进入"运送清单"页面
- 点击某个运单的"分配设备"按钮
- 在设备类型下拉框选择"智能项圈"或"全部设备"
- 勾选要分配的项圈设备
- 点击"保存"完成分配
3. 查看运单设备
- 在"运送清单"页面点击"查看设备"按钮
- 弹窗中会显示该运单的所有设备(耳标+项圈)
- 设备类型列会显示"智能耳标"或"智能项圈"
4. 修改运单状态
- 在"运送清单"页面点击"编辑状态"按钮
- 在弹出的输入框中输入状态值(1/2/3)
- 点击确定完成状态更新
技术要点
- 后端SQL优化:使用
ROW_NUMBER()窗口函数获取设备的最新运单关联 - 前端兼容性:支持多种字段名映射(deviceId/sn, isWare/is_wear)
- 权限控制:所有API都添加了
@SaCheckPermission权限验证 - 错误处理:完善的异常捕获和用户提示
测试建议
- 测试项圈设备分配功能
- 验证分配后
xq_client表字段是否正确更新 - 测试查看设备功能是否同时显示耳标和项圈
- 验证设备状态判断逻辑(未分配/已分配)
- 测试运单状态编辑功能
- 验证项圈设备编号显示是否使用sn字段