68 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package management
 | ||
| 
 | ||
| import (
 | ||
| 	"strconv"
 | ||
| 
 | ||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
 | ||
| 	"github.com/labstack/echo/v4"
 | ||
| )
 | ||
| 
 | ||
| // TransferPigsAcrossBatches godoc
 | ||
| // @Summary      跨猪群调栏
 | ||
| // @Description  将指定数量的猪只从一个猪群的猪栏调动到另一个猪群的猪栏
 | ||
| // @Tags         猪群管理
 | ||
| // @Security     BearerAuth
 | ||
| // @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/transfer-across-batches/{sourceBatchID} [post]
 | ||
| func (c *PigBatchController) TransferPigsAcrossBatches(ctx echo.Context) error {
 | ||
| 	const action = "跨猪群调栏"
 | ||
| 	var req dto.TransferPigsAcrossBatchesRequest
 | ||
| 
 | ||
| 	return handleAPIRequest(
 | ||
| 		c, ctx, action, &req,
 | ||
| 		func(ctx echo.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 echo.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         猪群管理
 | ||
| // @Security     BearerAuth
 | ||
| // @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/transfer-within-batch/{id} [post]
 | ||
| func (c *PigBatchController) TransferPigsWithinBatch(ctx echo.Context) error {
 | ||
| 	const action = "群内调栏"
 | ||
| 	var req dto.TransferPigsWithinBatchRequest
 | ||
| 
 | ||
| 	return handleAPIRequest(
 | ||
| 		c, ctx, action, &req,
 | ||
| 		func(ctx echo.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
 | ||
| 	)
 | ||
| }
 |