package models

import (
	"time"
)

type PastureBodyRequest struct {
	PastureId int64          `json:"pasture_id"`
	Body      []*FeedFormula `json:"body"`
}

type FeedFormula struct {
	Id                 int64  `json:"id"`
	Name               string `json:"name"`
	Colour             string `json:"colour"`
	EncodeNumber       string `json:"encode_number"`
	CattleCategoryId   int32  `json:"cattle_category_id"`
	CattleCategoryName string `json:"cattle_category_name"`
	FormulaTypeId      int32  `json:"formula_type_id"`
	FormulaTypeName    string `json:"formula_type_name"`
	DataSourceId       int32  `json:"data_source_id"`
	DataSourceName     string `json:"data_source_name"`
	Remarks            string `json:"remarks"`
	Version            int64  `json:"version"`
	PastureId          int64  `json:"pasture_id"`
	PastureName        string `json:"pasture_name"`
	IsShow             int32  `json:"is_show"`
	IsModify           int32  `json:"is_modify"`
	IsDelete           int32  `json:"is_delete"`
	CreatedAt          int64  `json:"created_at"`
	UpdatedAt          int64  `json:"updated_at"`
}

type AnalysisAccuracyRequest struct {
	CattleParentCategoryId int32  `json:"cattle_Parent_Category_Id"`
	FeedFormulaId          int32  `json:"feed_formula_id"`
	StartDate              string `json:"start_date"`
	EndDate                string `json:"end_date"`   // 结束时间
	PastureId              int32  `json:"pasture_id"` //牧场id
}

type MixedFodderDataList struct {
	Iweight int64     `xorm:"iweight" json:"iweight"`
	Oweight int64     `xorm:"oweight" json:"oweight"`
	Lweight float64   `xorm:"lweight" json:"lweight"`
	MyDate  time.Time `xorm:"mydate" json:"mydate"`
}

type MixedFodderCorrectDataList struct {
	UseMixedFodderOptionNumber int32  `xorm:"use_mixed_fodder_option_number" json:"use_mixed_fodder_option_number"` // 已混料操作数
	Date                       string `xorm:"date" json:"date"`                                                     // 日期
	MixedCorrectNumber         int32  `xorm:"mixed_correct_number" json:"mixed_correct_number"`                     // 混料正确数
}

type SprinkleFodderCorrectDataList struct {
	UseSprinkleOptionNumber int32  `xorm:"use_sprinkle_option_number" json:"use_sprinkle_option_number"` // 已撒料操作数
	Date                    string `xorm:"date" json:"date"`                                             // 日期
	SprinkleCorrectNumber   int32  `xorm:"sprinkle_correct_number" json:"sprinkle_correct_number"`       // 撒料正确数
}

type AnalysisAccuracyResponse struct {
	MixedFodderAccurateRatio    []*PastureAnalysisAccuracyDataValue `json:"mixed_fodder_accurate_ratio"`    // 混料准确率
	MixedFodderCorrectRatio     []*PastureAnalysisAccuracyDataValue `json:"mixed_fodder_correct_ratio"`     // 混料正确率
	SprinkleFodderAccurateRatio []*PastureAnalysisAccuracyDataValue `json:"sprinkle_fodder_accurate_ratio"` // 撒料准确率
	SprinkleFodderCorrectRatio  []*PastureAnalysisAccuracyDataValue `json:"sprinkle_fodder_correct_ratio"`  // 撒料正确率
}

type PastureAnalysisAccuracyDataValue struct {
	DayTime string  `json:"day_time"`
	Ratio   float64 `json:"ratio"`
}

type ProcessAnalysisResponse struct {
	AddFeedTime  *ProcessAnalysisDataValue `json:"add_feed_time"` // 加料时间
	SprinkleTime *ProcessAnalysisDataValue `json:"sprinkle_time"` // 撒料时间
	StirTime     *ProcessAnalysisDataValue `json:"stir_time"`     // 搅拌延迟时间
}

type ProcessAnalysisDataValue struct {
	MaxValue        string `json:"max_value"`         // 最大时间
	MinValue        string `json:"min_value"`         // 最小时间
	MiddleValue     string `json:"middle_value"`      // 中位值时间
	DownMiddleValue string `json:"down_middle_value"` // 下4分位值
	UpMiddleValue   string `json:"up_middle_value"`   // 上4分位值
}

type ProcessData struct {
	Id              int64     `xorm:"id" json:"id"`
	ExecBeginTime   time.Time `xorm:"exec_begin_time" json:"exec_begin_time"`
	ExecEndTime     time.Time `xorm:"exec_end_time" json:"exec_end_time"`
	ExecProcessTime string    `xorm:"exec_process_time" json:"exec_process_time"`
	L2BeginTime     time.Time `xorm:"l2_begin_time"  json:"l2_begin_time"`
	L2EndTime       time.Time `xorm:"l2_end_time"  json:"l2_end_time"`
	L2ProcessTime   string    `xorm:"l2_process_time" json:"l2_process_time"`
}