| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | package modelimport (	"fmt"	"strconv"	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow")const (	FieldName = "day_age")type DataWarningItems struct {	Id          int64                 `json:"id"`	PastureId   int64                 `json:"pastureId"`	UserId      int64                 `json:"userId"`	WarningId   int64                 `json:"warningId"`	GroupId     int32                 `json:"groupId"`	FieldName   string                `json:"fieldName"`	FieldDesc   string                `json:"fieldDesc"`	Operator    string                `json:"operator"`	Value       string                `json:"value"`	IsCondition pasturePb.IsShow_Kind `json:"isCondition"`	IsShow      pasturePb.IsShow_Kind `json:"isShow"`	CreatedAt   int64                 `json:"createdAt"`	UpdatedAt   int64                 `json:"updatedAt"`}func (d *DataWarningItems) TableName() string {	return "data_warning_items"}var DefaultDataWarningItemsMap = map[pasturePb.DataWarningType_Kind][]*pasturePb.WarningDataSet{	pasturePb.DataWarningType_Sale_Standard: {		{			GroupId:   1,			FieldName: "admission_age",			FieldDesc: "在群天数",			Operator:  ">=",			Value:     "100",			IsShow:    pasturePb.IsShow_Ok,		},		{			GroupId:   1,			FieldName: "current_weight",			FieldDesc: "体重",			Operator:  ">=",			Value:     "700",			IsShow:    pasturePb.IsShow_Ok,		},	},	pasturePb.DataWarningType_UnPregnant_Mating_Time: {		{			GroupId:   1,			FieldName: "mating_times",			FieldDesc: "配次",			Operator:  ">",			Value:     "2",			IsShow:    pasturePb.IsShow_Ok,		},	},	pasturePb.DataWarningType_Abortion_Time: {		{			GroupId:   1,			FieldName: "abortion_times",			FieldDesc: "流产次数",			Operator:  ">",			Value:     "3",			IsShow:    pasturePb.IsShow_Ok,		},	},	pasturePb.DataWarningType_Over_Age_UnPaired_Young: {		{			GroupId:   1,			FieldName: "day_age",			FieldDesc: "月龄",			Operator:  ">=",			Value:     "150",			IsShow:    pasturePb.IsShow_Ok,		},	},	pasturePb.DataWarningType_Over_Age_UnPregnant_Young: {		{			GroupId:   1,			FieldName: "day_age",			FieldDesc: "月龄",			Operator:  ">=",			Value:     "660",			IsShow:    pasturePb.IsShow_Ok,		},		{			GroupId:   2,			FieldName: "cow_type",			FieldDesc: "牛只类型",			Operator:  "=",			Value:     fmt.Sprintf("%d", pasturePb.CowType_Fattening_Calf),			IsShow:    pasturePb.IsShow_Ok,		},		{			GroupId:   2,			FieldName: "cow_type",			FieldDesc: "牛只类型",			Operator:  "=",			Value:     fmt.Sprintf("%d", pasturePb.CowType_Reserve_Calf),			IsShow:    pasturePb.IsShow_Ok,		},		{			GroupId:   3,			FieldName: "is_pregnant",			FieldDesc: "是否怀孕",			Operator:  "=",			Value:     fmt.Sprintf("%d", pasturePb.IsShow_No),			IsShow:    pasturePb.IsShow_Ok,		},	},	pasturePb.DataWarningType_Over_Month_UnSale: {		{			GroupId:   1,			FieldName: "day_age",			FieldDesc: "月龄",			Operator:  ">=",			Value:     "540",			IsShow:    pasturePb.IsShow_Ok,		},		{			GroupId:   2,			FieldName: "purpose_kind",			FieldDesc: "用途",			Operator:  "=",			Value:     fmt.Sprintf("%d", pasturePb.Purpose_Fatten),			IsShow:    pasturePb.IsShow_Ok,		},	},}func DataWarningItemsInitData(pastureId int64, dataWarning *DataWarning) []*DataWarningItems {	dataWarningItems := make([]*DataWarningItems, 0)	for _, v := range DefaultDataWarningItemsMap[dataWarning.Kind] {		dataWarningItems = append(dataWarningItems, NewDataWarningItems(pastureId, DefaultUserId, dataWarning, v))	}	return dataWarningItems}func NewDataWarningItems(pastureId, userId int64, dataWarning *DataWarning, req *pasturePb.WarningDataSet) *DataWarningItems {	if req.FieldName == FieldName {		v1, _ := strconv.ParseInt(req.Value, 10, 64)		req.Value = fmt.Sprintf("%d", v1*30)	}	return &DataWarningItems{		PastureId: pastureId,		UserId:    userId,		WarningId: dataWarning.Id,		GroupId:   req.GroupId,		FieldName: req.FieldName,		FieldDesc: req.FieldDesc,		Operator:  req.Operator,		Value:     req.Value,		IsShow:    req.IsShow,	}}type DataWarningItemsSlice []*DataWarningItemsfunc (d DataWarningItemsSlice) ToPB(dataWarning []*DataWarning) []*pasturePb.WarningDataSet {	res := make([]*pasturePb.WarningDataSet, 0)	for _, v := range d {		name := ""		kind := pasturePb.DataWarningType_Invalid		for _, w := range dataWarning {			if w.Id == v.WarningId {				name = w.Name				kind = w.Kind			}		}		if name == "" || v.Id <= 0 || v.IsCondition == pasturePb.IsShow_Ok {			continue		}		if v.FieldName == FieldName {			v1, _ := strconv.ParseInt(v.Value, 10, 64)			v.Value = fmt.Sprintf("%d", v1/30)		}		res = append(res, &pasturePb.WarningDataSet{			Id:        int32(v.Id),			WarningId: int32(v.WarningId),			GroupId:   v.GroupId,			Name:      name,			Kind:      kind,			FieldDesc: v.FieldDesc,			FieldName: v.FieldName,			Operator:  v.Operator,			Value:     v.Value,			IsShow:    v.IsShow,		})	}	return res}
 |