feat(BE-281): fixing recording error, fixing limit upload uniformity and purchase, add filter and statistic uniformity

This commit is contained in:
ragilap
2026-01-07 20:26:27 +07:00
parent 90f363bfdb
commit a2d2c4269a
14 changed files with 847 additions and 430 deletions
@@ -5,7 +5,11 @@ import (
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
approvalDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/approvals/dto"
service "gitlab.com/mbugroup/lti-api.git/internal/modules/production/uniformities/services"
utypes "gitlab.com/mbugroup/lti-api.git/internal/modules/production/uniformities/types"
validation "gitlab.com/mbugroup/lti-api.git/internal/modules/production/uniformities/validations"
"gitlab.com/mbugroup/lti-api.git/internal/utils"
"github.com/gofiber/fiber/v2"
)
type UniformitySamplingDTO struct {
@@ -49,13 +53,13 @@ type UniformityInfoDTO struct {
}
type UniformityDetailDTO struct {
Id uint `json:"id"`
InfoUmum UniformityInfoDTO `json:"info_umum"`
Sampling UniformitySamplingDTO `json:"sampling"`
Result UniformityResultDTO `json:"result"`
Standard *UniformityStandardDTO `json:"standard"`
Id uint `json:"id"`
InfoUmum UniformityInfoDTO `json:"info_umum"`
Sampling UniformitySamplingDTO `json:"sampling"`
Result UniformityResultDTO `json:"result"`
Standard *UniformityStandardDTO `json:"standard"`
LatestApproval *approvalDTO.ApprovalRelationDTO `json:"latest_approval"`
UniformityDetails []UniformityDetailItemDTO `json:"uniformity_details"`
UniformityDetails []UniformityDetailItemDTO `json:"uniformity_details"`
}
type UniformityListDTO struct {
@@ -76,6 +80,7 @@ type UniformityListDTO struct {
MeanDown float64 `json:"mean_down"`
StandardMeanWeight *float64 `json:"standard_mean_weight"`
StandardUniformity *float64 `json:"standard_uniformity"`
ChartData *utypes.UniformityChartData `json:"chart_data,omitempty"`
CreatedBy uint `json:"created_by"`
LatestApproval *approvalDTO.ApprovalRelationDTO `json:"latest_approval"`
}
@@ -87,7 +92,7 @@ func NewDocumentForResponse(name string) *entity.Document {
return &entity.Document{Name: name}
}
func ToUniformityVerificationDTO(calc service.UniformityCalculation) UniformityVerificationDTO {
func ToUniformityVerificationDTO(calc utypes.UniformityCalculation) UniformityVerificationDTO {
return UniformityVerificationDTO{
Sampling: toUniformitySamplingDTO(calc),
Result: toUniformityResultDTO(calc),
@@ -97,7 +102,7 @@ func ToUniformityVerificationDTO(calc service.UniformityCalculation) UniformityV
func ToUniformityDetailDTO(
entityData entity.ProjectFlockKandangUniformity,
calc service.UniformityCalculation,
calc utypes.UniformityCalculation,
document *entity.Document,
documentURL string,
standard *UniformityStandardDTO,
@@ -171,8 +176,9 @@ func ToUniformityListDTOs(items []entity.ProjectFlockKandangUniformity) []Unifor
func ToUniformityListDTOsWithStandard(
items []entity.ProjectFlockKandangUniformity,
standards map[uint]service.UniformityStandard,
standards map[uint]utypes.UniformityStandard,
documentNames map[uint]string,
charts map[uint]utypes.UniformityChartData,
) []UniformityListDTO {
result := ToUniformityListDTOs(items)
if len(result) == 0 || len(standards) == 0 {
@@ -180,6 +186,10 @@ func ToUniformityListDTOsWithStandard(
if name, ok := documentNames[result[i].Id]; ok {
result[i].FileName = name
}
if chart, ok := charts[result[i].Id]; ok {
chartCopy := chart
result[i].ChartData = &chartCopy
}
}
return result
}
@@ -192,11 +202,15 @@ func ToUniformityListDTOsWithStandard(
if name, ok := documentNames[result[i].Id]; ok {
result[i].FileName = name
}
if chart, ok := charts[result[i].Id]; ok {
chartCopy := chart
result[i].ChartData = &chartCopy
}
}
return result
}
func toUniformitySamplingDTO(calc service.UniformityCalculation) UniformitySamplingDTO {
func toUniformitySamplingDTO(calc utypes.UniformityCalculation) UniformitySamplingDTO {
return UniformitySamplingDTO{
ChickQtyOfWeight: calc.ChickQtyOfWeight,
MeanWeight: calc.MeanWeight,
@@ -205,7 +219,7 @@ func toUniformitySamplingDTO(calc service.UniformityCalculation) UniformitySampl
}
}
func toUniformityResultDTO(calc service.UniformityCalculation) UniformityResultDTO {
func toUniformityResultDTO(calc utypes.UniformityCalculation) UniformityResultDTO {
return UniformityResultDTO{
UniformQty: calc.UniformQty,
OutsideQty: calc.OutsideQty,
@@ -214,7 +228,7 @@ func toUniformityResultDTO(calc service.UniformityCalculation) UniformityResultD
}
}
func toUniformityDetailItemsDTO(calc service.UniformityCalculation) []UniformityDetailItemDTO {
func toUniformityDetailItemsDTO(calc utypes.UniformityCalculation) []UniformityDetailItemDTO {
result := make([]UniformityDetailItemDTO, len(calc.Details))
for i, item := range calc.Details {
result[i] = UniformityDetailItemDTO{
@@ -254,5 +268,18 @@ func formatUniformityDate(date *time.Time) string {
if date == nil || date.IsZero() {
return ""
}
return date.Format("2006-01-02")
return utils.FormatDate(*date)
}
func BuildUniformityFilters(query *validation.Query) fiber.Map {
if query == nil {
return fiber.Map{}
}
return fiber.Map{
"project_flock_kandang_id": query.ProjectFlockKandangId,
"start_date": query.StartDate,
"end_date": query.EndDate,
"with_chart": query.WithChart,
"status": "Pengajuan",
}
}