123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package model
- import (
- "time"
- "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() (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 []*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"`
- }
|