猪栏信息接口增加猪栏当前存栏量
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user