package et_Info import ( "gitea.anxinyun.cn/container/common_models" "gitea.anxinyun.cn/container/common_utils" "gitea.anxinyun.cn/container/common_utils/configLoad" "log" "node/stages" ) type InfoHandler struct { configHelper *common_utils.ConfigHelper stage *stages.Stage } func NewInfoHandler() *InfoHandler { redisAddr := configLoad.LoadConfig().GetString("redis.address") the := &InfoHandler{ configHelper: common_utils.NewConfigHelper(redisAddr), stage: stages.NewStage("测点信息获取"), } the.stage.AddProcess(the.getStationInfo) return the } func (the *InfoHandler) GetStage() stages.Stage { return *the.stage } func (the *InfoHandler) getStationInfo(p *common_models.ProcessData) *common_models.ProcessData { s, err := the.configHelper.GetDeviceStationObjs(p.DeviceData.DeviceId) if err == nil && s != nil { p.Stations = s } else { //无法查询到完整的 重新获取 log.Printf("重获取设备[%s]的 DeviceStationObj", p.DeviceData.DeviceId) stationIds, err := the.configHelper.GetDeviceStationIds(p.DeviceData.DeviceId) if err != nil { log.Printf("err !!! GetDeviceStationIds =>%s", err.Error()) return p } p.Stations, err = the.configHelper.GetStations(stationIds...) the.getFormulaInfo(p) //补全 设备数据输入单位 p.DeviceData.RawUnit = p.DeviceData.DeviceInfo.DeviceMeta.GetOutputUnit() //存储测点obj if len(p.Stations) > 0 { go func() { errSet := the.configHelper.SetDeviceStationObjs(p.DeviceData.DeviceId, p.Stations) if errSet != nil { log.Printf("SetDeviceStationObjs 缓存异常 err=%s", errSet.Error()) } }() } } return p } func (the *InfoHandler) getFormulaInfo(p *common_models.ProcessData) { for i, _ := range p.Stations { deviceFactorProto, err := the.configHelper.GetDeviceFactorProto(p.Stations[i].Info.ProtoCode, p.DeviceData.DeviceInfo.DeviceMeta.Id) p.Stations[i].Info.Proto, err = the.configHelper.GetProto(p.Stations[i].Info.ProtoCode) if err != nil { panic(err) } for i2, device := range p.Stations[i].Info.Devices { formulaInfo, err := the.configHelper.GetFormulaInfo(device.FormulaId) if err == nil { p.Stations[i].Info.Devices[i2].FormulaInfo = formulaInfo p.Stations[i].Info.Devices[i2].DeviceFactorProto = deviceFactorProto } } } }