package management import ( "strconv" "git.huangwc.com/pig/pig-farm-controller/internal/app/dto" "github.com/gin-gonic/gin" ) // TransferPigsAcrossBatches godoc // @Summary 跨猪群调栏 // @Description 将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏 // @Tags 猪批次管理 // @Accept json // @Produce json // @Param sourceBatchID path int true "源猪批次ID" // @Param body body dto.TransferPigsAcrossBatchesRequest true "跨群调栏请求信息" // @Success 200 {object} controller.Response "调栏成功" // @Router /api/v1/pig-batches/{sourceBatchID}/transfer-across-batches [post] func (c *PigBatchController) TransferPigsAcrossBatches(ctx *gin.Context) { const action = "跨猪群调栏" var req dto.TransferPigsAcrossBatchesRequest handleAPIRequest( c, ctx, action, &req, func(ctx *gin.Context, operatorID uint, primaryID uint, req *dto.TransferPigsAcrossBatchesRequest) error { // primaryID 在这里是 sourceBatchID return c.service.TransferPigsAcrossBatches(primaryID, req.DestBatchID, req.FromPenID, req.ToPenID, req.Quantity, operatorID, req.Remarks) }, "调栏成功", func(ctx *gin.Context) (uint, error) { // 自定义ID提取器,从 ":sourceBatchID" 路径参数提取 idParam := ctx.Param("sourceBatchID") parsedID, err := strconv.ParseUint(idParam, 10, 32) if err != nil { return 0, err } return uint(parsedID), nil }, ) } // TransferPigsWithinBatch godoc // @Summary 群内调栏 // @Description 将指定数量的猪只在同一个猪群的不同猪栏间调动 // @Tags 猪批次管理 // @Accept json // @Produce json // @Param id path int true "猪批次ID" // @Param body body dto.TransferPigsWithinBatchRequest true "群内调栏请求信息" // @Success 200 {object} controller.Response "调栏成功" // @Router /api/v1/pig-batches/{id}/transfer-within-batch [post] func (c *PigBatchController) TransferPigsWithinBatch(ctx *gin.Context) { const action = "群内调栏" var req dto.TransferPigsWithinBatchRequest handleAPIRequest( c, ctx, action, &req, func(ctx *gin.Context, operatorID uint, primaryID uint, req *dto.TransferPigsWithinBatchRequest) error { // primaryID 在这里是 batchID return c.service.TransferPigsWithinBatch(primaryID, req.FromPenID, req.ToPenID, req.Quantity, operatorID, req.Remarks) }, "调栏成功", nil, // 默认从 ":id" 路径参数提取ID ) }