68 lines
1.6 KiB
Go
Raw Normal View History

package service
import (
"context"
"github.com/muyuqingfeng/iloom/textile-service/internal/model"
"github.com/muyuqingfeng/iloom/textile-service/internal/repository"
)
type PlanWithSteps struct {
repository.PlanSummary
Steps []model.ProcessStep `json:"steps,omitempty"`
InventoryRecords []model.InventoryRecord `json:"inventory_records,omitempty"`
}
type PlanService struct {
repo *repository.PlanRepo
stepRepo *repository.StepRepo
invRepo *repository.InventoryRepo
}
func NewPlanService(repo *repository.PlanRepo, stepRepo *repository.StepRepo, invRepo *repository.InventoryRepo) *PlanService {
return &PlanService{repo: repo, stepRepo: stepRepo, invRepo: invRepo}
}
func (s *PlanService) List(ctx context.Context, companyID string) ([]PlanWithSteps, error) {
plans, err := s.repo.ListByFactory(ctx, companyID)
if err != nil {
return nil, err
}
result := make([]PlanWithSteps, 0, len(plans))
for _, p := range plans {
steps, err := s.stepRepo.GetByPlan(ctx, p.ID)
if err != nil {
return nil, err
}
result = append(result, PlanWithSteps{
PlanSummary: p,
Steps: steps,
})
}
return result, nil
}
func (s *PlanService) GetByID(ctx context.Context, planID, companyID string) (*PlanWithSteps, error) {
plan, err := s.repo.GetByID(ctx, planID)
if err != nil {
return nil, err
}
steps, err := s.stepRepo.GetByPlan(ctx, planID)
if err != nil {
return nil, err
}
records, err := s.invRepo.ListByPlan(ctx, planID)
if err != nil {
return nil, err
}
return &PlanWithSteps{
PlanSummary: *plan,
Steps: steps,
InventoryRecords: records,
}, nil
}