mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-24 07:15:43 +00:00
feat: Refactor closing services and add ClosingKeuanganService
- Updated ClosingRoutes to include ClosingKeuanganService. - Removed GetClosingKeuangan method from ClosingService interface and its implementation. - Introduced new ClosingKeuanganService with GetClosingKeuangan method to handle financial logic. - Implemented detailed logging and error handling in the new service. - Added GetTotalWeightProducedFromUniformityByProjectFlockID method in RecordingRepository to support weight calculations. - Enhanced the logic for fetching and classifying product usage data by flags. - Built comprehensive DTO responses for HPP and Profit Loss sections.
This commit is contained in:
@@ -44,6 +44,7 @@ type RecordingRepository interface {
|
||||
GetEggSummaryByRecording(tx *gorm.DB, recordingID uint) (totalQty float64, totalWeightGrams float64, err error)
|
||||
GetCumulativeEggQtyByProjectFlockKandang(tx *gorm.DB, projectFlockKandangId uint, recordTime time.Time) (float64, error)
|
||||
GetFcrStandardNumber(tx *gorm.DB, fcrId uint, currentWeightKg float64) (float64, bool, error)
|
||||
GetTotalWeightProducedFromUniformityByProjectFlockID(ctx context.Context, projectFlockID uint) (float64, error)
|
||||
GetProductionWeightAndQtyByProjectFlockID(ctx context.Context, projectFlockID uint) (totalWeight float64, totalQty float64, err error)
|
||||
GetTotalDepletionByProjectFlockID(ctx context.Context, projectFlockID uint) (totalDepletion float64, err error)
|
||||
GetLatestAvgWeightByProjectFlockID(ctx context.Context, projectFlockID uint) (avgWeight float64, err error)
|
||||
@@ -548,3 +549,31 @@ func nextRecordingDay(days []int) int {
|
||||
|
||||
return len(normalized) + 1
|
||||
}
|
||||
|
||||
// GetTotalWeightProducedFromUniformityByProjectFlockID calculates total weight produced from uniformity data
|
||||
// It takes the latest uniformity record per kandang and calculates: SUM(mean_weight * chick_qty_of_weight / 1000)
|
||||
func (r *RecordingRepositoryImpl) GetTotalWeightProducedFromUniformityByProjectFlockID(ctx context.Context, projectFlockID uint) (float64, error) {
|
||||
if projectFlockID == 0 {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
var result struct {
|
||||
TotalWeight float64
|
||||
}
|
||||
|
||||
err := r.DB().WithContext(ctx).
|
||||
Table("project_flock_kandang_uniformity").
|
||||
Select("COALESCE(SUM(mean_weight * chick_qty_of_weight / 1000), 0) as total_weight").
|
||||
Joins("JOIN ("+
|
||||
" SELECT pfku.project_flock_kandang_id, MAX(pfku.id) as latest_id "+
|
||||
" FROM project_flock_kandang_uniformity pfku "+
|
||||
" JOIN project_flock_kandangs pfk ON pfk.id = pfku.project_flock_kandang_id "+
|
||||
" WHERE pfk.project_flock_id = ? "+
|
||||
" AND pfku.deleted_at IS NULL "+
|
||||
" GROUP BY pfku.project_flock_kandang_id "+
|
||||
") latest ON latest.project_flock_kandang_id = project_flock_kandang_uniformity.project_flock_kandang_id "+
|
||||
"AND project_flock_kandang_uniformity.id = latest.latest_id").
|
||||
Scan(&result).Error
|
||||
|
||||
return result.TotalWeight, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user