| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 | package modelimport (	"time"	"gitee.com/xuyiping_admin/pkg/xerr"	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow")const DefaultUserId = 0type DataWarning struct {	Id                int64                          `json:"id"`	PastureId         int64                          `json:"pastureId"`	UserId            int64                          `json:"userId"`	Kind              pasturePb.DataWarningType_Kind `json:"kind"`	KindName          string                         `json:"kindName"`	Name              string                         `json:"name"`	Description       string                         `json:"description"`	DataValue         string                         `json:"dataValue"`	DataUpdateAt      int64                          `json:"dataUpdateAt"`	ConditionUpdateAt int64                          `json:"conditionUpdateAt"`	IsShow            pasturePb.IsShow_Kind          `json:"isShow"`	CreatedAt         int64                          `json:"createdAt"`	UpdatedAt         int64                          `json:"updatedAt"`}func (d *DataWarning) TableName() string {	return "data_warning"}func DataWarningInitData(pastureId int64, dataWarningList []*pasturePb.ConfigOptionsList) []*DataWarning {	res := make([]*DataWarning, 0)	for _, v := range dataWarningList {		res = append(res,			NewDataWarning(				pastureId,				DefaultUserId,				pasturePb.DataWarningType_Kind(v.Value),				pasturePb.IsShow_Ok,				&DataWarning{					Name:        v.Label,					Description: v.Props,				}))	}	return res}func (d *DataWarning) GetWarningColumn() (headers map[string]string, headerSort []string, err error) {	switch d.Kind {	case pasturePb.DataWarningType_Sale_Standard:		headers = map[string]string{			"cowId":              "编号",			"earNumber":          "牛号",			"penName":            "栏舍",			"admissionAge":       "在群天数",			"lastWeightAtFormat": "最后称重时间",			"currentWeight":      "当前体重(kg)",			"avgDailyWeight":     "日增重(kg)",		}		headerSort = []string{			"cowId",			"earNumber",			"penName",			"admissionAge",			"lastWeightAtFormat",			"currentWeight",			"avgDailyWeight",		}	case pasturePb.DataWarningType_UnPregnant_Mating_Time:		headers = map[string]string{			"cowId":              "编号",			"earNumber":          "牛号",			"penName":            "栏舍",			"birthAtFormat":      "出生日期",			"cowTypeName":        "牛只类型",			"dayAge":             "日龄",			"breedStatusName":    "繁殖状态",			"lastMatingAtFormat": "最近配种时间",			"matingTimes":        "配次",			"abortionTimes":      "流产次数",		}		headerSort = []string{			"cowId",			"earNumber",			"penName",			"birthAtFormat",			"cowTypeName",			"dayAge",			"breedStatusName",			"lastMatingAtFormat",			"matingTimes",			"abortionTimes",		}	case pasturePb.DataWarningType_Abortion_Time:		headers = map[string]string{			"cowId":                "编号",			"earNumber":            "牛号",			"penName":              "栏舍",			"lact":                 "胎次",			"matingAge":            "配后天数",			"breedStatusName":      "繁殖状态",			"abortionTimes":        "流产次数",			"lastAbortionAtFormat": "流产时间",			"matingTimes":          "配次",		}		headerSort = []string{			"cowId",			"earNumber",			"penName",			"lact",			"breedStatusName",			"matingAge",			"abortionTimes",			"lastAbortionAtFormat",			"matingTimes",		}	case pasturePb.DataWarningType_Over_Age_UnPaired_Young:		headers = map[string]string{			"cowId":         "编号",			"earNumber":     "牛号",			"penName":       "栏舍",			"birthAtFormat": "出生日期",			"dayAge":        "日龄",		}		headerSort = []string{			"cowId",			"earNumber",			"penName",			"birthAtFormat",			"dayAge",		}	case pasturePb.DataWarningType_Over_Age_UnPregnant_Young:		headers = map[string]string{			"cowId":              "编号",			"earNumber":          "牛号",			"penName":            "栏舍",			"birthAtFormat":      "出生日期",			"dayAge":             "日龄",			"breedStatusName":    "繁殖状态",			"lastMatingAtFormat": "配种日期",			"matingTimes":        "配次",			"abortionTimes":      "流产次数",		}		headerSort = []string{			"cowId",			"earNumber",			"penName",			"birthAtFormat",			"dayAge",			"breedStatusName",			"lastMatingAtFormat",			"matingTimes",			"abortionTimes",		}	case pasturePb.DataWarningType_Over_Month_UnSale:		headers = map[string]string{			"cowId":              "编号",			"earNumber":          "牛号",			"penName":            "栏舍",			"admissionAtFormat":  "入场日期",			"admissionAge":       "在群天数",			"avgDailyWeight":     "平均日增重",			"lastWeightAtFormat": "上次称重日期",			"currentWeight":      "上次体重",			"cowKindName":        "品种",		}		headerSort = []string{			"cowId",			"earNumber",			"penName",			"admissionAtFormat",			"admissionAge",			"avgDailyWeight",			"lastWeightAtFormat",			"currentWeight",			"cowKindName",		}	default:		return nil, nil, xerr.Custom("暂不支持该预警数据")	}	return headers, headerSort, nil}func NewDataWarningList(pastureId, userId int64, req []*pasturePb.WarningDataSet, warningMap map[pasturePb.DataWarningType_Kind]*DataWarning) []*DataWarning {	res := make([]*DataWarning, 0)	isAdd := make(map[pasturePb.DataWarningType_Kind]bool)	for _, v := range req {		if _, ok := isAdd[v.Kind]; ok {			continue		}		isAdd[v.Kind] = true		defaultDataWarning := warningMap[v.Kind]		res = append(res, NewDataWarning(pastureId, userId, v.Kind, v.IsShow, defaultDataWarning))	}	return res}func NewDataWarning(pastureId, userId int64, Kind pasturePb.DataWarningType_Kind, isShow pasturePb.IsShow_Kind, defaultDataWarning *DataWarning) *DataWarning {	kindName := pasturePb.DataWarningType_Kind_name[int32(Kind)]	return &DataWarning{		PastureId:   pastureId,		UserId:      userId,		Kind:        Kind,		KindName:    kindName,		Name:        defaultDataWarning.Name,		Description: defaultDataWarning.Description,		IsShow:      isShow,	}}type DataWarningSlice []*DataWarningfunc (d DataWarningSlice) ToPB() []*pasturePb.WarningDataShow {	res := make([]*pasturePb.WarningDataShow, 0)	for _, warningData := range d {		if warningData.DataValue == "0" {			continue		}		dataUpdateTimeFormat := ""		if warningData.DataUpdateAt > 0 {			dataUpdateTimeFormat = time.Unix(warningData.DataUpdateAt, 0).Local().Format(LayoutTime)		}		res = append(res, &pasturePb.WarningDataShow{			Name:                 warningData.Name,			Number:               warningData.DataValue,			Describe:             warningData.Description,			DataUpdateTimeFormat: dataUpdateTimeFormat,			Kind:                 warningData.Kind,		})	}	return res}type WarningDataPopResponse struct {	Code int32       `json:"code"`	Msg  string      `json:"msg"`	Data *WarningPop `json:"data"`}type WarningPop struct {	Title      string                         `json:"title"`	Kind       pasturePb.DataWarningType_Kind `json:"kind"`	Headers    map[string]string              `json:"headers"`	HeaderSort []string                       `json:"headerSort"`	Total      int32                          `json:"total"`	Page       int32                          `json:"page"`	PageSize   int32                          `json:"pageSize"`	DataList   interface{}                    `json:"list"`}
 |