| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package iotDb
- import (
- "IotAdmin/app/iot/models"
- "IotAdmin/core/logger"
- "IotAdmin/iot/constant"
- iotLog "IotAdmin/iot/log"
- iotMap "IotAdmin/iot/map"
- iotStruct "IotAdmin/iot/struct"
- "errors"
- "gorm.io/gorm"
- )
- // LoadDtuDeviceMap 加载DTU设备
- func LoadDtuDeviceMap() error {
- iotMap.MapDtuDevice.Clean()
- deviceArr := make([]models.IotDevice, 0)
- for _, db := range dbMap {
- gatewayArr := make([]models.IotDevice, 0)
- d := &models.IotDevice{}
- err := db.Model(d).Select("id,sn,name,type,mode,status,cycle").Where("type = ? AND status = ?", constant.IotDeviceTypeGateway, constant.IotDeviceOnline).Find(&gatewayArr).Error
- if err != nil {
- continue
- }
- deviceArr = append(deviceArr, gatewayArr...)
- err = loadDtuDeviceMap(db, &deviceArr)
- if err != nil {
- return err
- }
- }
- return nil
- }
- func loadDtuDeviceMap(db *gorm.DB, arr *[]models.IotDevice) error {
- if len(*arr) == 0 {
- return nil
- }
- for _, v := range *arr {
- err := addDtuDevice(db, v)
- if err != nil {
- return err
- }
- }
- return nil
- }
- func addDtuDevice(db *gorm.DB, device models.IotDevice) error {
- if device.Type != constant.IotDeviceTypeGateway {
- return errors.New("type is not gateway")
- }
- children := make([]models.IotDevice, 0)
- db.Model(&models.IotDevice{}).Select("id,sn,status,dsn,protocol,address,bm_yz,other_config").Where("parent_id = ? AND status = ?", device.Id, constant.IotDeviceOnline).Find(&children)
- if len(children) == 0 {
- return nil
- }
- cfg := device.ToDtuConfig(&children)
- var dtu = &iotStruct.DtuDevice{
- SN: device.Sn,
- Name: device.Name,
- Config: cfg,
- Logger: logger.NewHelper(iotLog.SetupDeviceLogger(device.Sn)),
- }
- logger.Infof("加载DTU设备: %s %v", dtu.SN, dtu.Config)
- dtu.Logger.Infof("加载DTU设备 %v", *dtu.Config)
- iotMap.MapDtuDevice.Add(device.Sn, dtu)
- return nil
- }
|