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

5.3 KiB
Raw Blame History

智能项圈运单分配功能实现总结

已完成的功能

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_iddelivery_numberlicense_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
  • 更新佩戴状态判断:支持 isWareis_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. 执行数据库脚本

# 在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字段