|  | @@ -77,7 +77,7 @@ const (
 | 
	
		
			
				|  |  |  	CattleCategoryParent_FATTEN_CAW    CattleCategoryParent_Kind = 2 // 育肥牛
 | 
	
		
			
				|  |  |  	CattleCategoryParent_RESERVE_CAW   CattleCategoryParent_Kind = 3 // 后备牛
 | 
	
		
			
				|  |  |  	CattleCategoryParent_DRY_CAW       CattleCategoryParent_Kind = 4 // 干奶牛
 | 
	
		
			
				|  |  | -	CattleCategoryParent_PERINATAL_CAW CattleCategoryParent_Kind = 5 // 泌乳牛
 | 
	
		
			
				|  |  | +	CattleCategoryParent_PERINATAL_CAW CattleCategoryParent_Kind = 5 // 围产牛
 | 
	
		
			
				|  |  |  	CattleCategoryParent_OTHER_CAW     CattleCategoryParent_Kind = 6 // 其他
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -387,6 +387,58 @@ func (DataSource_Kind) EnumDescriptor() ([]byte, []int) {
 | 
	
		
			
				|  |  |  	return file_backend_operation_enum_proto_rawDescGZIP(), []int{6, 0}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +type FormulaType_Kind int32
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const (
 | 
	
		
			
				|  |  | +	FormulaType_INVALID               FormulaType_Kind = 0 // 无
 | 
	
		
			
				|  |  | +	FormulaType_FEED_FORMULA          FormulaType_Kind = 1 // 饲喂配方
 | 
	
		
			
				|  |  | +	FormulaType_PREMIXED_FORMULA      FormulaType_Kind = 2 // 预混配方
 | 
	
		
			
				|  |  | +	FormulaType_SUPPLEMENTARY_FORMULA FormulaType_Kind = 3 // 补料配方
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Enum value maps for FormulaType_Kind.
 | 
	
		
			
				|  |  | +var (
 | 
	
		
			
				|  |  | +	FormulaType_Kind_name = map[int32]string{
 | 
	
		
			
				|  |  | +		0: "INVALID",
 | 
	
		
			
				|  |  | +		1: "FEED_FORMULA",
 | 
	
		
			
				|  |  | +		2: "PREMIXED_FORMULA",
 | 
	
		
			
				|  |  | +		3: "SUPPLEMENTARY_FORMULA",
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	FormulaType_Kind_value = map[string]int32{
 | 
	
		
			
				|  |  | +		"INVALID":               0,
 | 
	
		
			
				|  |  | +		"FEED_FORMULA":          1,
 | 
	
		
			
				|  |  | +		"PREMIXED_FORMULA":      2,
 | 
	
		
			
				|  |  | +		"SUPPLEMENTARY_FORMULA": 3,
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (x FormulaType_Kind) Enum() *FormulaType_Kind {
 | 
	
		
			
				|  |  | +	p := new(FormulaType_Kind)
 | 
	
		
			
				|  |  | +	*p = x
 | 
	
		
			
				|  |  | +	return p
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (x FormulaType_Kind) String() string {
 | 
	
		
			
				|  |  | +	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (FormulaType_Kind) Descriptor() protoreflect.EnumDescriptor {
 | 
	
		
			
				|  |  | +	return file_backend_operation_enum_proto_enumTypes[7].Descriptor()
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (FormulaType_Kind) Type() protoreflect.EnumType {
 | 
	
		
			
				|  |  | +	return &file_backend_operation_enum_proto_enumTypes[7]
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (x FormulaType_Kind) Number() protoreflect.EnumNumber {
 | 
	
		
			
				|  |  | +	return protoreflect.EnumNumber(x)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Deprecated: Use FormulaType_Kind.Descriptor instead.
 | 
	
		
			
				|  |  | +func (FormulaType_Kind) EnumDescriptor() ([]byte, []int) {
 | 
	
		
			
				|  |  | +	return file_backend_operation_enum_proto_rawDescGZIP(), []int{7, 0}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // 字段类型
 | 
	
		
			
				|  |  |  type IsShow struct {
 | 
	
		
			
				|  |  |  	state         protoimpl.MessageState
 | 
	
	
		
			
				|  | @@ -658,6 +710,44 @@ func (*DataSource) Descriptor() ([]byte, []int) {
 | 
	
		
			
				|  |  |  	return file_backend_operation_enum_proto_rawDescGZIP(), []int{6}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +type FormulaType struct {
 | 
	
		
			
				|  |  | +	state         protoimpl.MessageState
 | 
	
		
			
				|  |  | +	sizeCache     protoimpl.SizeCache
 | 
	
		
			
				|  |  | +	unknownFields protoimpl.UnknownFields
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (x *FormulaType) Reset() {
 | 
	
		
			
				|  |  | +	*x = FormulaType{}
 | 
	
		
			
				|  |  | +	if protoimpl.UnsafeEnabled {
 | 
	
		
			
				|  |  | +		mi := &file_backend_operation_enum_proto_msgTypes[7]
 | 
	
		
			
				|  |  | +		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
	
		
			
				|  |  | +		ms.StoreMessageInfo(mi)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (x *FormulaType) String() string {
 | 
	
		
			
				|  |  | +	return protoimpl.X.MessageStringOf(x)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (*FormulaType) ProtoMessage() {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (x *FormulaType) ProtoReflect() protoreflect.Message {
 | 
	
		
			
				|  |  | +	mi := &file_backend_operation_enum_proto_msgTypes[7]
 | 
	
		
			
				|  |  | +	if protoimpl.UnsafeEnabled && x != nil {
 | 
	
		
			
				|  |  | +		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
	
		
			
				|  |  | +		if ms.LoadMessageInfo() == nil {
 | 
	
		
			
				|  |  | +			ms.StoreMessageInfo(mi)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return ms
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	return mi.MessageOf(x)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Deprecated: Use FormulaType.ProtoReflect.Descriptor instead.
 | 
	
		
			
				|  |  | +func (*FormulaType) Descriptor() ([]byte, []int) {
 | 
	
		
			
				|  |  | +	return file_backend_operation_enum_proto_rawDescGZIP(), []int{7}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  var File_backend_operation_enum_proto protoreflect.FileDescriptor
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var file_backend_operation_enum_proto_rawDesc = []byte{
 | 
	
	
		
			
				|  | @@ -702,9 +792,15 @@ var file_backend_operation_enum_proto_rawDesc = []byte{
 | 
	
		
			
				|  |  |  	0x49, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x47, 0x52, 0x4f, 0x55,
 | 
	
		
			
				|  |  |  	0x4e, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x43, 0x45,
 | 
	
		
			
				|  |  |  	0x4c, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x52,
 | 
	
		
			
				|  |  | -	0x4f, 0x4d, 0x5f, 0x50, 0x41, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x03, 0x42, 0x0f, 0x5a, 0x0d,
 | 
	
		
			
				|  |  | -	0x2e, 0x3b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x62, 0x62, 0x06, 0x70,
 | 
	
		
			
				|  |  | -	0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
	
		
			
				|  |  | +	0x4f, 0x4d, 0x5f, 0x50, 0x41, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x03, 0x22, 0x65, 0x0a, 0x0b,
 | 
	
		
			
				|  |  | +	0x46, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x4b,
 | 
	
		
			
				|  |  | +	0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00,
 | 
	
		
			
				|  |  | +	0x12, 0x10, 0x0a, 0x0c, 0x46, 0x45, 0x45, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x55, 0x4c, 0x41,
 | 
	
		
			
				|  |  | +	0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x46,
 | 
	
		
			
				|  |  | +	0x4f, 0x52, 0x4d, 0x55, 0x4c, 0x41, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x55, 0x50, 0x50,
 | 
	
		
			
				|  |  | +	0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x52, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x55, 0x4c,
 | 
	
		
			
				|  |  | +	0x41, 0x10, 0x03, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x3b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
 | 
	
		
			
				|  |  | +	0x6f, 0x6e, 0x50, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var (
 | 
	
	
		
			
				|  | @@ -719,8 +815,8 @@ func file_backend_operation_enum_proto_rawDescGZIP() []byte {
 | 
	
		
			
				|  |  |  	return file_backend_operation_enum_proto_rawDescData
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -var file_backend_operation_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
 | 
	
		
			
				|  |  | -var file_backend_operation_enum_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
 | 
	
		
			
				|  |  | +var file_backend_operation_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
 | 
	
		
			
				|  |  | +var file_backend_operation_enum_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
 | 
	
		
			
				|  |  |  var file_backend_operation_enum_proto_goTypes = []interface{}{
 | 
	
		
			
				|  |  |  	(IsShow_Kind)(0),               // 0: backend.operation.IsShow.Kind
 | 
	
		
			
				|  |  |  	(CattleCategoryParent_Kind)(0), // 1: backend.operation.CattleCategoryParent.Kind
 | 
	
	
		
			
				|  | @@ -729,13 +825,15 @@ var file_backend_operation_enum_proto_goTypes = []interface{}{
 | 
	
		
			
				|  |  |  	(JumpDelaType_Kind)(0),         // 4: backend.operation.JumpDelaType.Kind
 | 
	
		
			
				|  |  |  	(ForagePlanType_Kind)(0),       // 5: backend.operation.ForagePlanType.Kind
 | 
	
		
			
				|  |  |  	(DataSource_Kind)(0),           // 6: backend.operation.DataSource.Kind
 | 
	
		
			
				|  |  | -	(*IsShow)(nil),                 // 7: backend.operation.IsShow
 | 
	
		
			
				|  |  | -	(*CattleCategoryParent)(nil),   // 8: backend.operation.CattleCategoryParent
 | 
	
		
			
				|  |  | -	(*ForageCategoryParent)(nil),   // 9: backend.operation.ForageCategoryParent
 | 
	
		
			
				|  |  | -	(*ForageSource)(nil),           // 10: backend.operation.ForageSource
 | 
	
		
			
				|  |  | -	(*JumpDelaType)(nil),           // 11: backend.operation.JumpDelaType
 | 
	
		
			
				|  |  | -	(*ForagePlanType)(nil),         // 12: backend.operation.ForagePlanType
 | 
	
		
			
				|  |  | -	(*DataSource)(nil),             // 13: backend.operation.DataSource
 | 
	
		
			
				|  |  | +	(FormulaType_Kind)(0),          // 7: backend.operation.FormulaType.Kind
 | 
	
		
			
				|  |  | +	(*IsShow)(nil),                 // 8: backend.operation.IsShow
 | 
	
		
			
				|  |  | +	(*CattleCategoryParent)(nil),   // 9: backend.operation.CattleCategoryParent
 | 
	
		
			
				|  |  | +	(*ForageCategoryParent)(nil),   // 10: backend.operation.ForageCategoryParent
 | 
	
		
			
				|  |  | +	(*ForageSource)(nil),           // 11: backend.operation.ForageSource
 | 
	
		
			
				|  |  | +	(*JumpDelaType)(nil),           // 12: backend.operation.JumpDelaType
 | 
	
		
			
				|  |  | +	(*ForagePlanType)(nil),         // 13: backend.operation.ForagePlanType
 | 
	
		
			
				|  |  | +	(*DataSource)(nil),             // 14: backend.operation.DataSource
 | 
	
		
			
				|  |  | +	(*FormulaType)(nil),            // 15: backend.operation.FormulaType
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  var file_backend_operation_enum_proto_depIdxs = []int32{
 | 
	
		
			
				|  |  |  	0, // [0:0] is the sub-list for method output_type
 | 
	
	
		
			
				|  | @@ -835,14 +933,26 @@ func file_backend_operation_enum_proto_init() {
 | 
	
		
			
				|  |  |  				return nil
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		file_backend_operation_enum_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 | 
	
		
			
				|  |  | +			switch v := v.(*FormulaType); i {
 | 
	
		
			
				|  |  | +			case 0:
 | 
	
		
			
				|  |  | +				return &v.state
 | 
	
		
			
				|  |  | +			case 1:
 | 
	
		
			
				|  |  | +				return &v.sizeCache
 | 
	
		
			
				|  |  | +			case 2:
 | 
	
		
			
				|  |  | +				return &v.unknownFields
 | 
	
		
			
				|  |  | +			default:
 | 
	
		
			
				|  |  | +				return nil
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	type x struct{}
 | 
	
		
			
				|  |  |  	out := protoimpl.TypeBuilder{
 | 
	
		
			
				|  |  |  		File: protoimpl.DescBuilder{
 | 
	
		
			
				|  |  |  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
	
		
			
				|  |  |  			RawDescriptor: file_backend_operation_enum_proto_rawDesc,
 | 
	
		
			
				|  |  | -			NumEnums:      7,
 | 
	
		
			
				|  |  | -			NumMessages:   7,
 | 
	
		
			
				|  |  | +			NumEnums:      8,
 | 
	
		
			
				|  |  | +			NumMessages:   8,
 | 
	
		
			
				|  |  |  			NumExtensions: 0,
 | 
	
		
			
				|  |  |  			NumServices:   0,
 | 
	
		
			
				|  |  |  		},
 |