package model import ( "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 []*DataWarningItems func (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 }