686 lines
18 KiB
JavaScript
686 lines
18 KiB
JavaScript
import http from '../utils/http';
|
||
import {PaginationDTO, Response} from '../enums';
|
||
|
||
// --- Typedefs for Feed Management ---
|
||
|
||
// --- Nutrient ---
|
||
|
||
/**
|
||
* @typedef {object} NutrientRawMaterialDTO
|
||
* @property {number} id - 原料ID
|
||
* @property {string} name - 原料名称
|
||
* @property {number} value - 该原料中此营养素的含量
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} NutrientResponse
|
||
* @property {number} id
|
||
* @property {string} name
|
||
* @property {string} description
|
||
* @property {Array<NutrientRawMaterialDTO>} raw_materials - 包含此营养的原料列表
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} ListNutrientResponse
|
||
* @property {Array<NutrientResponse>} list
|
||
* @property {PaginationDTO} pagination
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} NutrientsParams
|
||
* @property {string} [name] - 按营养名称模糊查询
|
||
* @property {string} [raw_material_name] - 按原料名称模糊查询
|
||
* @property {string} [order_by] - 排序字段,例如 "id DESC"
|
||
* @property {number} [page]
|
||
* @property {number} [page_size]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} CreateNutrientRequest
|
||
* @property {string} name - 营养素名称
|
||
* @property {string} [description] - 描述
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdateNutrientRequest
|
||
* @property {string} name - 营养素名称
|
||
* @property {string} [description] - 描述
|
||
*/
|
||
|
||
// --- PigAgeStage ---
|
||
|
||
/**
|
||
* @typedef {object} PigAgeStageResponse
|
||
* @property {number} id
|
||
* @property {string} name
|
||
* @property {string} description
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} ListPigAgeStageResponse
|
||
* @property {Array<PigAgeStageResponse>} list
|
||
* @property {PaginationDTO} pagination
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} PigAgeStagesParams
|
||
* @property {string} [name] - 按名称模糊查询
|
||
* @property {string} [order_by] - 排序字段,例如 "id DESC"
|
||
* @property {number} [page]
|
||
* @property {number} [page_size]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} CreatePigAgeStageRequest
|
||
* @property {string} name - 年龄阶段名称
|
||
* @property {string} [description] - 阶段描述
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdatePigAgeStageRequest
|
||
* @property {string} name - 年龄阶段名称
|
||
* @property {string} [description] - 阶段描述
|
||
*/
|
||
|
||
// --- PigBreed ---
|
||
|
||
/**
|
||
* @typedef {object} PigBreedResponse
|
||
* @property {number} id
|
||
* @property {string} name
|
||
* @property {string} [description]
|
||
* @property {string} [parent_info]
|
||
* @property {string} [appearance_features]
|
||
* @property {string} [breed_advantages]
|
||
* @property {string} [breed_disadvantages]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} ListPigBreedResponse
|
||
* @property {Array<PigBreedResponse>} list
|
||
* @property {PaginationDTO} pagination
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} PigBreedsParams
|
||
* @property {string} [name] - 按名称模糊查询
|
||
* @property {string} [order_by] - 排序字段,例如 "id DESC"
|
||
* @property {number} [page]
|
||
* @property {number} [page_size]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} CreatePigBreedRequest
|
||
* @property {string} name - 品种名称
|
||
* @property {string} [description] - 其他描述
|
||
* @property {string} [parent_info] - 父母信息
|
||
* @property {string} [appearance_features] - 外貌特征
|
||
* @property {string} [breed_advantages] - 品种优点
|
||
* @property {string} [breed_disadvantages] - 品种缺点
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdatePigBreedRequest
|
||
* @property {string} name - 品种名称
|
||
* @property {string} [description] - 其他描述
|
||
* @property {string} [parent_info] - 父母信息
|
||
* @property {string} [appearance_features] - 外貌特征
|
||
* @property {string} [breed_advantages] - 品种优点
|
||
* @property {string} [breed_disadvantages] - 品种缺点
|
||
*/
|
||
|
||
// --- PigType ---
|
||
|
||
/**
|
||
* @typedef {object} PigNutrientRequirementDTO
|
||
* @property {number} id
|
||
* @property {number} nutrient_id
|
||
* @property {string} nutrient_name
|
||
* @property {number} min_requirement
|
||
* @property {number} max_requirement
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} PigTypeResponse
|
||
* @property {number} id
|
||
* @property {number} breed_id
|
||
* @property {string} breed_name
|
||
* @property {number} age_stage_id
|
||
* @property {string} age_stage_name
|
||
* @property {string} [description]
|
||
* @property {number} [min_days]
|
||
* @property {number} [max_days]
|
||
* @property {number} [min_weight]
|
||
* @property {number} [max_weight]
|
||
* @property {number} [daily_gain_weight]
|
||
* @property {number} [daily_feed_intake]
|
||
* @property {Array<PigNutrientRequirementDTO>} pig_nutrient_requirements
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} ListPigTypeResponse
|
||
* @property {Array<PigTypeResponse>} list
|
||
* @property {PaginationDTO} pagination
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} PigTypesParams
|
||
* @property {number} [age_stage_id] - 关联的猪年龄阶段ID
|
||
* @property {string} [age_stage_name] - 关联的猪年龄阶段名称 (用于模糊查询)
|
||
* @property {number} [breed_id] - 关联的猪品种ID
|
||
* @property {string} [breed_name] - 关联的猪品种名称 (用于模糊查询)
|
||
* @property {string} [order_by] - 排序字段,例如 "id DESC"
|
||
* @property {number} [page]
|
||
* @property {number} [page_size]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} CreatePigTypeRequest
|
||
* @property {number} breed_id
|
||
* @property {number} age_stage_id
|
||
* @property {string} [description]
|
||
* @property {number} [min_days]
|
||
* @property {number} [max_days]
|
||
* @property {number} [min_weight]
|
||
* @property {number} [max_weight]
|
||
* @property {number} [daily_gain_weight]
|
||
* @property {number} [daily_feed_intake]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdatePigTypeRequest
|
||
* @property {number} breed_id
|
||
* @property {number} age_stage_id
|
||
* @property {string} [description]
|
||
* @property {number} [min_days]
|
||
* @property {number} [max_days]
|
||
* @property {number} [min_weight]
|
||
* @property {number} [max_weight]
|
||
* @property {number} [daily_gain_weight]
|
||
* @property {number} [daily_feed_intake]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} PigNutrientRequirementItem
|
||
* @property {number} nutrient_id - 营养素ID
|
||
* @property {number} [min_requirement] - 最低营养需求量
|
||
* @property {number} [max_requirement] - 最高营养需求量
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdatePigTypeNutrientRequirementsRequest
|
||
* @property {Array<PigNutrientRequirementItem>} nutrient_requirements - 新的营养需求列表
|
||
*/
|
||
|
||
// --- RawMaterial ---
|
||
|
||
/**
|
||
* @typedef {object} RawMaterialNutrientItem
|
||
* @property {number} nutrient_id - 营养素ID
|
||
* @property {number} value - 含量值,必须大于等于0
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdateRawMaterialNutrientsRequest
|
||
* @property {Array<RawMaterialNutrientItem>} nutrients
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} RawMaterialNutrientDTO
|
||
* @property {number} id
|
||
* @property {number} nutrient_id
|
||
* @property {string} nutrient_name
|
||
* @property {number} value
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} RawMaterialResponse
|
||
* @property {number} id
|
||
* @property {string} name
|
||
* @property {string} description
|
||
* @property {Array<RawMaterialNutrientDTO>} raw_material_nutrients
|
||
* @property {number} [reference_price] - 参考价格(kg/元)
|
||
* @property {number} [max_addition_ratio] - 最大添加比例(%)
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} ListRawMaterialResponse
|
||
* @property {Array<RawMaterialResponse>} list
|
||
* @property {PaginationDTO} pagination
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} RawMaterialsParams
|
||
* @property {string} [name] - 按原料名称模糊查询
|
||
* @property {string} [nutrient_name] - 按营养名称模糊查询
|
||
* @property {number} [max_reference_price] - 参考价格最大值
|
||
* @property {number} [min_reference_price] - 参考价格最小值
|
||
* @property {string} [order_by] - 排序字段,例如 "id DESC"
|
||
* @property {number} [page]
|
||
* @property {number} [page_size]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} CreateRawMaterialRequest
|
||
* @property {string} name - 原料名称
|
||
* @property {string} [description] - 描述
|
||
* @property {number} [reference_price] - 参考价格(kg/元)
|
||
* @property {number} [max_addition_ratio] - 最大添加比例(%)
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdateRawMaterialRequest
|
||
* @property {string} name - 原料名称
|
||
* @property {string} [description] - 描述
|
||
* @property {number} [reference_price] - 参考价格(kg/元)
|
||
* @property {number} [max_addition_ratio] - 最大添加比例(%)
|
||
*/
|
||
|
||
// --- Recipe ---
|
||
|
||
/**
|
||
* @typedef {object} RecipeIngredientDto
|
||
* @property {number} raw_material_id - 原料ID
|
||
* @property {number} [percentage] - 原料在配方中的百分比 (0-100之间)
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} RecipeResponse
|
||
* @property {number} id
|
||
* @property {string} name
|
||
* @property {string} description
|
||
* @property {Array<RecipeIngredientDto>} recipe_ingredients
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} ListRecipeResponse
|
||
* @property {Array<RecipeResponse>} list
|
||
* @property {PaginationDTO} pagination
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} RecipesParams
|
||
* @property {string} [name] - 按名称模糊查询
|
||
* @property {string} [order_by] - 排序字段,例如 "id DESC"
|
||
* @property {number} [page]
|
||
* @property {number} [page_size]
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} CreateRecipeRequest
|
||
* @property {string} name - 配方名称
|
||
* @property {string} [description] - 配方描述
|
||
* @property {Array<RecipeIngredientDto>} [recipe_ingredients] - 配方原料组成
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} UpdateRecipeRequest
|
||
* @property {string} name - 配方名称
|
||
* @property {string} [description] - 配方描述
|
||
* @property {Array<RecipeIngredientDto>} [recipe_ingredients] - 配方原料组成
|
||
*/
|
||
|
||
/**
|
||
* @typedef {object} GenerateRecipeResponse
|
||
* @property {number} id - 新生成的配方ID
|
||
* @property {string} name - 新生成的配方名称
|
||
* @property {string} description - 新生成的配方描述
|
||
*/
|
||
|
||
|
||
// --- API Functions ---
|
||
|
||
// --- Nutrient ---
|
||
|
||
/**
|
||
* 获取营养种类列表
|
||
* @param {NutrientsParams} params - 查询参数
|
||
* @returns {Promise<Response<ListNutrientResponse>>}
|
||
*/
|
||
export const getNutrients = (params) => {
|
||
return http.get('/api/v1/feed/nutrients', {params});
|
||
};
|
||
|
||
/**
|
||
* 创建营养种类
|
||
* @param {CreateNutrientRequest} data - 请求体
|
||
* @returns {Promise<Response<NutrientResponse>>}
|
||
*/
|
||
export const createNutrient = (data) => {
|
||
return http.post('/api/v1/feed/nutrients', data);
|
||
};
|
||
|
||
/**
|
||
* 获取营养种类详情
|
||
* @param {number} id - 营养种类ID
|
||
* @returns {Promise<Response<NutrientResponse>>}
|
||
*/
|
||
export const getNutrientById = (id) => {
|
||
return http.get(`/api/v1/feed/nutrients/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 更新营养种类
|
||
* @param {number} id - 营养种类ID
|
||
* @param {UpdateNutrientRequest} data - 请求体
|
||
* @returns {Promise<Response<NutrientResponse>>}
|
||
*/
|
||
export const updateNutrient = (id, data) => {
|
||
return http.put(`/api/v1/feed/nutrients/${id}`, data);
|
||
};
|
||
|
||
/**
|
||
* 删除营养种类
|
||
* @param {number} id - 营养种类ID
|
||
* @returns {Promise<Response>}
|
||
*/
|
||
export const deleteNutrient = (id) => {
|
||
return http.delete(`/api/v1/feed/nutrients/${id}`);
|
||
};
|
||
|
||
// --- PigAgeStage ---
|
||
|
||
/**
|
||
* 获取猪年龄阶段列表
|
||
* @param {PigAgeStagesParams} params - 查询参数
|
||
* @returns {Promise<Response<ListPigAgeStageResponse>>}
|
||
*/
|
||
export const getPigAgeStages = (params) => {
|
||
return http.get('/api/v1/feed/pig-age-stages', {params});
|
||
};
|
||
|
||
/**
|
||
* 创建猪年龄阶段
|
||
* @param {CreatePigAgeStageRequest} data - 请求体
|
||
* @returns {Promise<Response<PigAgeStageResponse>>}
|
||
*/
|
||
export const createPigAgeStage = (data) => {
|
||
return http.post('/api/v1/feed/pig-age-stages', data);
|
||
};
|
||
|
||
/**
|
||
* 获取猪年龄阶段详情
|
||
* @param {number} id - 猪年龄阶段ID
|
||
* @returns {Promise<Response<PigAgeStageResponse>>}
|
||
*/
|
||
export const getPigAgeStageById = (id) => {
|
||
return http.get(`/api/v1/feed/pig-age-stages/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 更新猪年龄阶段
|
||
* @param {number} id - 猪年龄阶段ID
|
||
* @param {UpdatePigAgeStageRequest} data - 请求体
|
||
* @returns {Promise<Response<PigAgeStageResponse>>}
|
||
*/
|
||
export const updatePigAgeStage = (id, data) => {
|
||
return http.put(`/api/v1/feed/pig-age-stages/${id}`, data);
|
||
};
|
||
|
||
/**
|
||
* 删除猪年龄阶段
|
||
* @param {number} id - 猪年龄阶段ID
|
||
* @returns {Promise<Response>}
|
||
*/
|
||
export const deletePigAgeStage = (id) => {
|
||
return http.delete(`/api/v1/feed/pig-age-stages/${id}`);
|
||
};
|
||
|
||
// --- PigBreed ---
|
||
|
||
/**
|
||
* 获取猪品种列表
|
||
* @param {PigBreedsParams} params - 查询参数
|
||
* @returns {Promise<Response<ListPigBreedResponse>>}
|
||
*/
|
||
export const getPigBreeds = (params) => {
|
||
return http.get('/api/v1/feed/pig-breeds', {params});
|
||
};
|
||
|
||
/**
|
||
* 创建猪品种
|
||
* @param {CreatePigBreedRequest} data - 请求体
|
||
* @returns {Promise<Response<PigBreedResponse>>}
|
||
*/
|
||
export const createPigBreed = (data) => {
|
||
return http.post('/api/v1/feed/pig-breeds', data);
|
||
};
|
||
|
||
/**
|
||
* 获取猪品种详情
|
||
* @param {number} id - 猪品种ID
|
||
* @returns {Promise<Response<PigBreedResponse>>}
|
||
*/
|
||
export const getPigBreedById = (id) => {
|
||
return http.get(`/api/v1/feed/pig-breeds/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 更新猪品种
|
||
* @param {number} id - 猪品种ID
|
||
* @param {UpdatePigBreedRequest} data - 请求体
|
||
* @returns {Promise<Response<PigBreedResponse>>}
|
||
*/
|
||
export const updatePigBreed = (id, data) => {
|
||
return http.put(`/api/v1/feed/pig-breeds/${id}`, data);
|
||
};
|
||
|
||
/**
|
||
* 删除猪品种
|
||
* @param {number} id - 猪品种ID
|
||
* @returns {Promise<Response>}
|
||
*/
|
||
export const deletePigBreed = (id) => {
|
||
return http.delete(`/api/v1/feed/pig-breeds/${id}`);
|
||
};
|
||
|
||
// --- PigType ---
|
||
|
||
/**
|
||
* 获取猪类型列表
|
||
* @param {PigTypesParams} params - 查询参数
|
||
* @returns {Promise<Response<ListPigTypeResponse>>}
|
||
*/
|
||
export const getPigTypes = (params) => {
|
||
return http.get('/api/v1/feed/pig-types', {params});
|
||
};
|
||
|
||
/**
|
||
* 创建猪类型
|
||
* @param {CreatePigTypeRequest} data - 请求体
|
||
* @returns {Promise<Response<PigTypeResponse>>}
|
||
*/
|
||
export const createPigType = (data) => {
|
||
return http.post('/api/v1/feed/pig-types', data);
|
||
};
|
||
|
||
/**
|
||
* 获取猪类型详情
|
||
* @param {number} id - 猪类型ID
|
||
* @returns {Promise<Response<PigTypeResponse>>}
|
||
*/
|
||
export const getPigTypeById = (id) => {
|
||
return http.get(`/api/v1/feed/pig-types/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 更新猪类型
|
||
* @param {number} id - 猪类型ID
|
||
* @param {UpdatePigTypeRequest} data - 请求体
|
||
* @returns {Promise<Response<PigTypeResponse>>}
|
||
*/
|
||
export const updatePigType = (id, data) => {
|
||
return http.put(`/api/v1/feed/pig-types/${id}`, data);
|
||
};
|
||
|
||
/**
|
||
* 删除猪类型
|
||
* @param {number} id - 猪类型ID
|
||
* @returns {Promise<Response>}
|
||
*/
|
||
export const deletePigType = (id) => {
|
||
return http.delete(`/api/v1/feed/pig-types/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 全量更新猪类型的营养需求
|
||
* @param {number} id - 猪类型ID
|
||
* @param {UpdatePigTypeNutrientRequirementsRequest} data - 新的营养需求列表
|
||
* @returns {Promise<Response<PigTypeResponse>>}
|
||
*/
|
||
export const updatePigTypeNutrientRequirements = (id, data) => {
|
||
return http.put(`/api/v1/feed/pig-types/${id}/nutrient-requirements`, data);
|
||
};
|
||
|
||
// --- RawMaterial ---
|
||
|
||
/**
|
||
* 获取原料列表
|
||
* @param {RawMaterialsParams} params - 查询参数
|
||
* @returns {Promise<Response<ListRawMaterialResponse>>}
|
||
*/
|
||
export const getRawMaterials = (params) => {
|
||
return http.get('/api/v1/feed/raw-materials', {params});
|
||
};
|
||
|
||
/**
|
||
* 创建原料
|
||
* @param {CreateRawMaterialRequest} data - 请求体
|
||
* @returns {Promise<Response<RawMaterialResponse>>}
|
||
*/
|
||
export const createRawMaterial = (data) => {
|
||
return http.post('/api/v1/feed/raw-materials', data);
|
||
};
|
||
|
||
/**
|
||
* 获取原料详情
|
||
* @param {number} id - 原料ID
|
||
* @returns {Promise<Response<RawMaterialResponse>>}
|
||
*/
|
||
export const getRawMaterialById = (id) => {
|
||
return http.get(`/api/v1/feed/raw-materials/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 更新原料
|
||
* @param {number} id - 原料ID
|
||
* @param {UpdateRawMaterialRequest} data - 请求体
|
||
* @returns {Promise<Response<RawMaterialResponse>>}
|
||
*/
|
||
export const updateRawMaterial = (id, data) => {
|
||
return http.put(`/api/v1/feed/raw-materials/${id}`, data);
|
||
};
|
||
|
||
/**
|
||
* 删除原料
|
||
* @param {number} id - 原料ID
|
||
* @returns {Promise<Response>}
|
||
*/
|
||
export const deleteRawMaterial = (id) => {
|
||
return http.delete(`/api/v1/feed/raw-materials/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 全量更新原料的营养成分
|
||
* @param {number} id - 原料ID
|
||
* @param {UpdateRawMaterialNutrientsRequest} data - 新的营养成分列表
|
||
* @returns {Promise<Response<RawMaterialResponse>>}
|
||
*/
|
||
export const updateRawMaterialNutrients = (id, data) => {
|
||
return http.put(`/api/v1/feed/raw-materials/${id}/nutrients`, data);
|
||
};
|
||
|
||
// --- Recipe ---
|
||
|
||
/**
|
||
* 获取配方列表
|
||
* @param {RecipesParams} params - 查询参数
|
||
* @returns {Promise<Response<ListRecipeResponse>>}
|
||
*/
|
||
export const getRecipes = (params) => {
|
||
return http.get('/api/v1/feed/recipes', {params});
|
||
};
|
||
|
||
/**
|
||
* 创建配方
|
||
* @param {CreateRecipeRequest} data - 请求体
|
||
* @returns {Promise<Response<RecipeResponse>>}
|
||
*/
|
||
export const createRecipe = (data) => {
|
||
return http.post('/api/v1/feed/recipes', data);
|
||
};
|
||
|
||
/**
|
||
* 获取配方详情
|
||
* @param {number} id - 配方ID
|
||
* @returns {Promise<Response<RecipeResponse>>}
|
||
*/
|
||
export const getRecipeById = (id) => {
|
||
return http.get(`/api/v1/feed/recipes/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 更新配方
|
||
* @param {number} id - 配方ID
|
||
* @param {UpdateRecipeRequest} data - 请求体
|
||
* @returns {Promise<Response<RecipeResponse>>}
|
||
*/
|
||
export const updateRecipe = (id, data) => {
|
||
return http.put(`/api/v1/feed/recipes/${id}`, data);
|
||
};
|
||
|
||
/**
|
||
* 删除配方
|
||
* @param {number} id - 配方ID
|
||
* @returns {Promise<Response>}
|
||
*/
|
||
export const deleteRecipe = (id) => {
|
||
return http.delete(`/api/v1/feed/recipes/${id}`);
|
||
};
|
||
|
||
/**
|
||
* 使用系统中所有可用的原料一键生成配方
|
||
* @param {number} pigTypeId - 猪类型ID
|
||
* @returns {Promise<Response<GenerateRecipeResponse>>}
|
||
*/
|
||
export const generateRecipeFromAllMaterials = (pigTypeId) => {
|
||
return http.post(`/api/v1/feed/recipes/generate-from-all-materials/${pigTypeId}`);
|
||
};
|
||
|
||
|
||
export const FeedApi = {
|
||
getNutrients,
|
||
createNutrient,
|
||
getNutrientById,
|
||
updateNutrient,
|
||
deleteNutrient,
|
||
getPigAgeStages,
|
||
createPigAgeStage,
|
||
getPigAgeStageById,
|
||
updatePigAgeStage,
|
||
deletePigAgeStage,
|
||
getPigBreeds,
|
||
createPigBreed,
|
||
getPigBreedById,
|
||
updatePigBreed,
|
||
deletePigBreed,
|
||
getPigTypes,
|
||
createPigType,
|
||
getPigTypeById,
|
||
updatePigType,
|
||
deletePigType,
|
||
updatePigTypeNutrientRequirements,
|
||
getRawMaterials,
|
||
createRawMaterial,
|
||
getRawMaterialById,
|
||
updateRawMaterial,
|
||
deleteRawMaterial,
|
||
updateRawMaterialNutrients,
|
||
getRecipes,
|
||
createRecipe,
|
||
getRecipeById,
|
||
updateRecipe,
|
||
deleteRecipe,
|
||
generateRecipeFromAllMaterials,
|
||
};
|