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.
56 lines
1.2 KiB
56 lines
1.2 KiB
1 month ago
|
package common_models
|
||
|
|
||
|
import "encoding/json"
|
||
|
|
||
|
type Formula struct {
|
||
|
Id int `json:"id"`
|
||
|
Expression string `json:"expression"`
|
||
|
Params []FormulaParam `json:"params"`
|
||
|
IoFields IoFields `json:"ioFields"`
|
||
|
Type string `json:"type"`
|
||
|
}
|
||
|
|
||
|
// redis序列化
|
||
|
func (m *Formula) MarshalBinary() (data []byte, err error) {
|
||
|
return json.Marshal(m)
|
||
|
}
|
||
|
|
||
|
// redis序列化
|
||
|
func (m *Formula) UnmarshalBinary(data []byte) error {
|
||
|
return json.Unmarshal(data, m)
|
||
|
}
|
||
|
|
||
|
type FormulaParam struct {
|
||
|
Name string `json:"name"`
|
||
|
Alias string `json:"alias"`
|
||
|
Unit string `json:"unit"`
|
||
|
Default float64 `json:"default"`
|
||
|
}
|
||
|
|
||
|
type IoFields struct {
|
||
|
Input []ItemParam `json:"input"`
|
||
|
Output []ItemParam `json:"output"`
|
||
|
}
|
||
|
|
||
|
func (the *IoFields) GetInFieldUnit(Field string) string {
|
||
|
for _, InField := range the.Input {
|
||
|
if InField.Name == Field {
|
||
|
return InField.Unit
|
||
|
}
|
||
|
}
|
||
|
return ""
|
||
|
}
|
||
|
func (the *IoFields) GetOutFieldUnit(Field string) string {
|
||
|
for _, OutField := range the.Output {
|
||
|
if OutField.Name == Field {
|
||
|
return OutField.Unit
|
||
|
}
|
||
|
}
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
type ItemParam struct {
|
||
|
Name string `json:"name"`
|
||
|
Unit string `json:"unit"`
|
||
|
}
|