package model

import (
	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
)

type AnalysisAccuracy struct {
	Id                       int64                                 `json:"id"`
	PastureId                int64                                 `json:"pasture_id"`
	PastureName              string                                `json:"pasture_name"`
	FeedFormulaId            int64                                 `json:"feed_formula_id"`
	FeedFormulaName          string                                `json:"feed_formula_name"`
	CattleParentCategoryId   operationPb.CattleCategoryParent_Kind `json:"cattle_parent_category_id"`
	CattleParentCategoryName string                                `json:"cattle_parent_category_name"`
	IWeight                  int64                                 `json:"iweight"`
	LWeight                  int64                                 `json:"lweight"`
	OWeight                  int64                                 `json:"oweight"`
	ActualWeightMinus        int64                                 `json:"actual_weight_minus"`
	AllowRatio               int64                                 `json:"allow_ratio"`
	Alweight                 int64                                 `json:"alweight"`
	DateDay                  string                                `json:"date_day"`
	CreatedAt                int64                                 `json:"created_at"`
	UpdateAt                 int64                                 `json:"update_at"`
}

func (c *AnalysisAccuracy) TableName() string {
	return "analysis_accuracy"
}

type SearchAnalysisAccuracyResponse1 struct {
	Code int32                  `json:"code"`
	Msg  string                 `json:"msg"`
	Data *AnalysisAccuracyData1 `json:"data"`
}

type AnalysisAccuracyData1 struct {
	Table *Table  `json:"table"`
	Chart *Chart1 `json:"chart"`
}

type Chart1 struct {
	MixedFodderAccurateRatio    *PastureTopData1 `json:"mixed_fodder_accurate_ratio"`
	MixedFodderCorrectRatio     *PastureTopData1 `json:"mixed_fodder_correct_ratio"`
	SprinkleFodderAccurateRatio *PastureTopData1 `json:"sprinkle_fodder_accurate_ratio"`
	SprinkleFodderCorrectRatio  *PastureTopData1 `json:"sprinkle_fodder_correct_ratio"`
}

type PastureTopData1 struct {
	MaxValue    string    `json:"max_value"`    // 最高值
	MiddleValue string    `json:"middle_value"` // 中位值
	MinValue    string    `json:"min_value"`    // 最低值
	TopOneName  string    `json:"top_one_name"` // 最高值牧场名称
	Title       []string  `json:"title"`
	Ratio       []float64 `json:"ratio"`
}

type SearchAnalysisAccuracyResponse struct {
	Code int32                 `json:"code"`
	Msg  string                `json:"msg"`
	Data *AnalysisAccuracyData `json:"data"`
}

type AnalysisAccuracyData struct {
	Chart *Chart `json:"chart"`
	Table *Table `json:"table"`
}

type Table struct {
	TitleList []*TableList `json:"title_list"`
	DataList  *DataList    `json:"data_list"`
}

type TableList struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type DataList struct {
	MixedFodderAccurateRatio    []map[string]string `json:"mixed_fodder_accurate_ratio"`
	MixedFodderCorrectRatio     []map[string]string `json:"mixed_fodder_correct_ratio"`
	SprinkleFodderAccurateRatio []map[string]string `json:"sprinkle_fodder_accurate_ratio"`
	SprinkleFodderCorrectRatio  []map[string]string `json:"sprinkle_fodder_correct_ratio"`
}

type Chart struct {
	MixedFodderAccurateRatio    *CommonValueRatio `json:"mixed_fodder_accurate_ratio"`
	MixedFodderCorrectRatio     *CommonValueRatio `json:"mixed_fodder_correct_ratio"`
	SprinkleFodderAccurateRatio *CommonValueRatio `json:"sprinkle_fodder_accurate_ratio"`
	SprinkleFodderCorrectRatio  *CommonValueRatio `json:"sprinkle_fodder_correct_ratio"`
}

type CommonValueRatio struct {
	MaxValue    string     `json:"max_value"`    // 最高值
	MiddleValue string     `json:"middle_value"` // 中位值
	MinValue    string     `json:"min_value"`    // 最低值
	TopOneName  string     `json:"top_one_name"` // 最高值牧场名称
	DataList    [][]string `json:"data_list"`    // 数据集合
	PastureName []string   `json:"pasture_name"` // 牧场名称集合
	PastureIds  []int32    `json:"pasture_ids"`
	DateDay     []string   `json:"date_day"` // 日期集合
}

type GetPastureTopResponse struct {
	Code int32       `json:"code"`
	Msg  string      `json:"msg"`
	Data *PastureTop `json:"data"`
}

type PastureTop struct {
	MixedFodderAccurateRatio    []*PastureTopData `json:"mixed_fodder_accurate_ratio"`
	MixedFodderCorrectRatio     []*PastureTopData `json:"mixed_fodder_correct_ratio"`
	SprinkleFodderAccurateRatio []*PastureTopData `json:"sprinkle_fodder_accurate_ratio"`
	SprinkleFodderCorrectRatio  []*PastureTopData `json:"sprinkle_fodder_correct_ratio"`
}

type PastureTopData struct {
	PastureId   int64   `json:"pasture_id"`
	PastureName string  `json:"pasture_name"`
	Ratio       float64 `json:"ratio"`
}

type ExecTimeResponse struct {
	Code int32             `json:"code"`
	Msg  string            `json:"msg"`
	Data *ExecTimeDataList `json:"data"`
}

type ExecTimeDataList struct {
	Chart     *ExecTimeDataListChart `json:"chart"`
	TableList []map[string]string    `json:"table_list"`
}

type ExecTimeDataListChart struct {
	Title        []string   `json:"title"`
	AddFeedTime  [][]string `json:"add_feed_time"`
	SprinkleTime [][]string `json:"sprinkle_time"`
	StirTime     [][]string `json:"stir_time"`
}

type PastureExecTimeData struct {
	Code int32         `json:"code"`
	Msg  string        `json:"msg"`
	Data *ExecTimeData `json:"data"`
}

type ExecTimeData struct {
	AddFeedTime  *ExecTimeDetail `json:"add_feed_time"`
	SprinkleTime *ExecTimeDetail `json:"sprinkle_time"`
	StirTime     *ExecTimeDetail `json:"stir_time"`
}

type ExecTimeDetail struct {
	MaxValue        string `json:"max_value"`
	MinValue        string `json:"min_value"`
	MiddleValue     string `json:"middle_value"`
	DownMiddleValue string `json:"down_middle_value"`
	UpMiddleValue   string `json:"up_middle_value"`
}

type SprinkleFeedTimeResponse struct {
	Code int32                 `json:"code"`
	Msg  string                `json:"msg"`
	Data *SprinkleFeedTimeData `json:"data"`
}

type SprinkleFeedTimeData struct {
	Chart     *SprinkleFeedTimeChart   `json:"chart"`
	TableList []*SprinkleFeedTimeTable `json:"table_list"`
}

type SprinkleFeedTimeChart struct {
	Title              []string  `json:"title"`
	SprinkleNumberList [][]int32 `json:"sprinkle_number_list"`
}

type SprinkleFeedTimeTable struct {
	PastureName             string `json:"pasture_name"`               // 牧场名称
	BarnName                string `json:"barn_name"`                  // 栏舍名称
	ClassNumber             string `json:"class_number"`               // 班次名称
	RealitySprinkleFeedTime string `json:"reality_sprinkle_feed_time"` // 时间撒料时间
}

type PastureSprinkleStatisticsDataList struct {
	Code int32                         `json:"code"`
	Msg  string                        `json:"msg"`
	Data []*SprinkleStatisticsDataList `json:"data"`
}

type SprinkleStatisticsDataList struct {
	FBarId      int32  `json:"f_bar_id"`
	FName       string `json:"f_name"`
	InTime      string `json:"in_time"`
	ProcessTime string `json:"process_time"`
	Times       int32  `json:"times"`
}

type PastureDayTimeRatio struct {
	PastureId   int64   `json:"pasture_id"`
	PastureName string  `json:"pasture_name"`
	DayTime     string  `json:"day_time"`
	Ratio       float64 `json:"ratio"`
}