| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 | 
							- package model
 
- import (
 
- 	"time"
 
- 	"github.com/nicksnyder/go-i18n/v2/i18n"
 
- 	"gitee.com/xuyiping_admin/pkg/xerr"
 
- 	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
 
- )
 
- const DefaultUserId = 0
 
- type 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(i18nTemplate *i18n.Localizer) (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:
 
- 		message, _ := i18nTemplate.Localize(&i18n.LocalizeConfig{
 
- 			MessageID: "dataWarning.notSupported",
 
- 		})
 
- 		return nil, nil, xerr.Custom(message)
 
- 	}
 
- 	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 []*DataWarning
 
- func (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"`
 
- }
 
 
  |