| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package initialize
- import (
- "log"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- "wails-app/internal/service/uhf"
- )
- // InitUHFReaders 批量初始化所有UHF设备(多设备)
- func InitUHFReaders() {
- log.Println("开始批量初始化UHF设备连接...")
- // 1. 查询所有启用的设备
- var devices []dao.UHFReader
- if err := global.GVA_DB.Where("is_active = ?", true).Find(&devices).Error; err != nil {
- log.Printf("查询UHF设备失败:%v", err)
- return
- }
- if len(devices) == 0 {
- log.Println("无启用的UHF设备,跳过初始化")
- return
- }
- // 2. 转换为指针切片(适配批量连接)
- devicePtrs := make([]*dao.UHFReader, 0, len(devices))
- for i := range devices {
- devicePtrs = append(devicePtrs, &devices[i])
- }
- // 3. 批量连接
- errMap := uhf.BatchConnect(devicePtrs)
- // 4. 处理连接结果
- successCount := 0
- for deviceCode, err := range errMap {
- if err != nil {
- log.Printf("设备[%s]批量连接失败:%v", deviceCode, err)
- // 更新离线状态
- global.GVA_DB.Model(&dao.UHFReader{}).Where("device_code = ?", deviceCode).Update("status", "offline")
- } else {
- successCount++
- global.GVA_DB.Model(&dao.UHFReader{}).Where("device_code = ?", deviceCode).Update("status", "online")
- }
- }
- log.Printf("UHF设备批量初始化完成:成功[%d],失败[%d],总计[%d]",
- successCount, len(errMap)-successCount, len(devices))
- // 5. 设置全局消息回调(处理所有设备的接收数据)
- uhf.ConnManager.SetRecvCallback(func(deviceCode string, data []byte) {
- // 这里写你的业务逻辑:比如解析UHF标签数据、入库、推送等
- log.Printf("业务层处理设备[%s]数据:%s", deviceCode, string(data))
- // 示例:保存到数据库/推送到消息队列/调用其他服务
- })
- }
|