数据 输入输出 处理
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.8 KiB

package adaptors
import (
"encoding/json"
"goInOut/consumers/AXYraw"
"goInOut/dbOperate"
"goInOut/models"
"log"
"time"
)
// Adaptor_Savoir_LastTheme 知物云 kafka theme数据 转换 es设备数据
type Adaptor_Savoir_LastTheme struct {
AXYraw.Info
Redis *dbOperate.RedisHelper
}
func (the Adaptor_Savoir_LastTheme) Transform(topic, rawMsg string) *models.EsTheme {
theme := models.SavoirTheme{}
err := json.Unmarshal([]byte(rawMsg), &theme)
if err != nil {
log.Printf("反序列化 异常 dev数据=%s", rawMsg)
return nil
}
return the.Theme2Es(theme)
}
func (the Adaptor_Savoir_LastTheme) Theme2Es(theme models.SavoirTheme) *models.EsTheme {
if theme.DataEmpty || len(theme.Data) == 0 {
bs, _ := json.Marshal(theme)
log.Printf("测点[%s]数据为空 => %s", theme.Station.Name, bs)
return nil
}
////log.Printf("设备[%s] 数据时间 %s", iotaData.DeviceId, iotaData.TriggerTime)
//deviceInfo := the.GetDeviceInfo(iotaData.DeviceId)
//
////查不到信息的数据
//if deviceInfo.Name == "" {
// log.Printf("设备[%s] 无deviceInfo信息 %s", iotaData.DeviceId, iotaData.TriggerTime)
// return nil
//}
//
Atime, err := time.Parse("2006-01-02T15:04:05.000+0800", theme.AcqTime)
if err != nil {
log.Printf("知物云 测点[%s] 数据时间 %s 解析错误", theme.Station.Name, theme.AcqTime)
return nil
}
themeData := &models.EsTheme{
SensorName: theme.Station.Name,
FactorName: theme.Station.Factor.Name,
FactorProtoCode: theme.Station.Factor.ProtoCode,
Data: theme.Data,
FactorProtoName: theme.Station.Factor.ProtoName,
Factor: theme.Station.Factor.Id,
CollectTime: Atime,
Sensor: theme.Station.Id,
Structure: theme.Station.Structure.Id,
IotaDevice: []string{},
CreateTime: time.Now(),
}
return themeData
}