| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | package modelimport (	"time"	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow")type EventWeight struct {	ID            int64  `json:"id"`	PastureId     int64  `json:"pastureId"`	CowId         int64  `json:"cowId"`	EarNumber     string `json:"earNumber"`	DayAge        int32  `json:"dayAge"`	LactationDay  int64  `json:"lactationDay"`	PenId         int32  `json:"penId"`	Lact          int32  `json:"lact"`	Weight        int32  `json:"weight"`	Height        int32  `json:"height"`	WeightAt      int64  `json:"weightAt"`	Remarks       string `json:"remarks"`	OperationId   int32  `json:"operationId"`	OperationName string `json:"operationName"`	MessageId     int64  `json:"messageId"`	MessageName   string `json:"messageName"`	CreatedAt     int64  `json:"created_at"`	UpdatedAt     int64  `json:"updated_at"`}func (c *EventWeight) TableName() string {	return "event_weight"}func NewEventWeight(pastureId int64, cow *Cow, currentUser *SystemUser, item *pasturePb.EventWeight) *EventWeight {	return &EventWeight{		PastureId:     pastureId,		CowId:         cow.Id,		EarNumber:     cow.EarNumber,		Weight:        int32(item.Weight * 1000),		Height:        item.Height,		Lact:          cow.Lact,		DayAge:        cow.GetDayAge(),		WeightAt:      int64(item.WeightAt),		Remarks:       item.Remarks,		MessageId:     currentUser.Id,		MessageName:   currentUser.Name,		OperationId:   item.OperationId,		OperationName: item.OperationName,	}}type EventWeightSlice []*EventWeightfunc (e EventWeightSlice) ToPB() []*pasturePb.CowGrowthCurveData {	res := make([]*pasturePb.CowGrowthCurveData, len(e))	for i, v := range e {		weightAtFormat := ""		if v.WeightAt > 0 {			weightAtFormat = time.Unix(v.WeightAt, 0).Format(LayoutTime)		}		avgWeight := float32(0)		if i > 0 {			avgWeight = float32(v.Weight-e[i-1].Weight) / float32(v.WeightAt-e[i-1].WeightAt) / 24 / 1000		}		res[i] = &pasturePb.CowGrowthCurveData{			Weight:          float32(v.Weight) / 1000,			WeightAtFormat:  weightAtFormat,			AvgWeight:       0,              // 平均体重			DayAddWeight:    0,              // 日增重			AvgDayAddWeight: avgWeight,      // 阶段日增重			MonthAddWeight:  avgWeight * 30, // 月增重		}	}	return res}
 |