猪栏信息接口增加猪栏当前存栏量

This commit is contained in:
2025-10-23 10:52:40 +08:00
parent db32c37318
commit c1f71050e9
11 changed files with 104 additions and 53 deletions

View File

@@ -4,6 +4,8 @@ import (
"errors"
"fmt"
"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
domain_pig "git.huangwc.com/pig/pig-farm-controller/internal/domain/pig"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository"
@@ -22,8 +24,8 @@ type PigFarmService interface {
// Pen methods
CreatePen(penNumber string, houseID uint, capacity int) (*models.Pen, error)
GetPenByID(id uint) (*models.Pen, error)
ListPens() ([]models.Pen, error)
GetPenByID(id uint) (*dto.PenResponse, error)
ListPens() ([]*dto.PenResponse, error)
UpdatePen(id uint, penNumber string, houseID uint, capacity int, status models.PenStatus) (*models.Pen, error)
DeletePen(id uint) error
// UpdatePenStatus 更新猪栏状态
@@ -35,13 +37,15 @@ type pigFarmService struct {
farmRepository repository.PigFarmRepository
penRepository repository.PigPenRepository
batchRepository repository.PigBatchRepository
uow repository.UnitOfWork // 工作单元,用于事务管理
pigBatchService domain_pig.PigBatchService // Add domain PigBatchService dependency
uow repository.UnitOfWork // 工作单元,用于事务管理
}
// NewPigFarmService 创建一个新的 PigFarmService 实例
func NewPigFarmService(farmRepository repository.PigFarmRepository,
penRepository repository.PigPenRepository,
batchRepository repository.PigBatchRepository,
pigBatchService domain_pig.PigBatchService,
uow repository.UnitOfWork,
logger *logs.Logger) PigFarmService {
return &pigFarmService{
@@ -49,6 +53,7 @@ func NewPigFarmService(farmRepository repository.PigFarmRepository,
farmRepository: farmRepository,
penRepository: penRepository,
batchRepository: batchRepository,
pigBatchService: pigBatchService,
uow: uow,
}
}
@@ -132,12 +137,64 @@ func (s *pigFarmService) CreatePen(penNumber string, houseID uint, capacity int)
return pen, err
}
func (s *pigFarmService) GetPenByID(id uint) (*models.Pen, error) {
return s.penRepository.GetPenByID(id)
func (s *pigFarmService) GetPenByID(id uint) (*dto.PenResponse, error) {
pen, err := s.penRepository.GetPenByID(id)
if err != nil {
return nil, err
}
currentPigCount, err := s.pigBatchService.GetCurrentPigsInPen(id)
if err != nil {
s.logger.Errorf("获取猪栏 %d 存栏量失败: %v", id, err)
currentPigCount = 0 // 如果获取计数时出错则默认为0
}
response := &dto.PenResponse{
ID: pen.ID,
PenNumber: pen.PenNumber,
HouseID: pen.HouseID,
Capacity: pen.Capacity,
Status: pen.Status,
CurrentPigCount: currentPigCount,
}
if pen.PigBatchID != nil {
response.PigBatchID = pen.PigBatchID
}
return response, nil
}
func (s *pigFarmService) ListPens() ([]models.Pen, error) {
return s.penRepository.ListPens()
func (s *pigFarmService) ListPens() ([]*dto.PenResponse, error) {
pens, err := s.penRepository.ListPens()
if err != nil {
return nil, err
}
var response []*dto.PenResponse
for _, pen := range pens {
currentPigCount, err := s.pigBatchService.GetCurrentPigsInPen(pen.ID)
if err != nil {
s.logger.Errorf("获取猪栏 %d 存栏量失败: %v", pen.ID, err)
currentPigCount = 0 // 如果获取计数时出错则默认为0
}
penResponse := &dto.PenResponse{
ID: pen.ID,
PenNumber: pen.PenNumber,
HouseID: pen.HouseID,
Capacity: pen.Capacity,
Status: pen.Status,
CurrentPigCount: currentPigCount,
}
if pen.PigBatchID != nil {
penResponse.PigBatchID = pen.PigBatchID
}
response = append(response, penResponse)
}
return response, nil
}
func (s *pigFarmService) UpdatePen(id uint, penNumber string, houseID uint, capacity int, status models.PenStatus) (*models.Pen, error) {