|
|
|
package common_models
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Factor struct {
|
|
|
|
Id int `json:"id"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
ProtoCode string `json:"protoCode"`
|
|
|
|
ProtoName string `json:"protoName"`
|
|
|
|
Items []ProtoItem `json:"items"`
|
|
|
|
Units map[string]string `json:"units"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// redis序列化
|
|
|
|
func (f *Factor) MarshalBinary() (data []byte, err error) {
|
|
|
|
return json.Marshal(f)
|
|
|
|
}
|
|
|
|
|
|
|
|
// redis序列化
|
|
|
|
func (f *Factor) UnmarshalBinary(data []byte) error {
|
|
|
|
return json.Unmarshal(data, f)
|
|
|
|
}
|
|
|
|
|
|
|
|
type ProtoItem struct {
|
|
|
|
Id int `json:"id"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
FieldName string `json:"field_name"`
|
|
|
|
UnitName string `json:"unit_name"`
|
|
|
|
Precision int `json:"precision"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type Proto struct {
|
|
|
|
Code string `json:"code"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
Items []ProtoItem `json:"items"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *Factor) GetProtoItem(fieldName string) *ProtoItem {
|
|
|
|
for _, item := range f.Items {
|
|
|
|
if item.FieldName == fieldName {
|
|
|
|
return &item
|
|
|
|
}
|
|
|
|
}
|
|
|
|
log.Printf("无匹配字段 %s 的ProtoItem", fieldName)
|
|
|
|
return &ProtoItem{}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetFieldNames 获取监测原型监测项
|
|
|
|
func (f *Factor) GetFieldNames() []string {
|
|
|
|
var names []string
|
|
|
|
for _, protoItem := range f.Items {
|
|
|
|
names = append(names, protoItem.FieldName)
|
|
|
|
}
|
|
|
|
return names
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p *Proto) GetProtoItem(fieldName string) *ProtoItem {
|
|
|
|
if fieldName == "" {
|
|
|
|
return &ProtoItem{}
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, item := range p.Items {
|
|
|
|
if item.FieldName == fieldName {
|
|
|
|
return &item
|
|
|
|
}
|
|
|
|
}
|
|
|
|
log.Printf("无匹配字段 %s 的ProtoItem", fieldName)
|
|
|
|
return &ProtoItem{}
|
|
|
|
}
|
|
|
|
|
|
|
|
// redis序列化
|
|
|
|
func (p *Proto) MarshalBinary() (data []byte, err error) {
|
|
|
|
return json.Marshal(p)
|
|
|
|
}
|
|
|
|
|
|
|
|
// redis序列化
|
|
|
|
func (p *Proto) UnmarshalBinary(data []byte) error {
|
|
|
|
return json.Unmarshal(data, p)
|
|
|
|
}
|