mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 14:55:42 +00:00
feat(BE-281): unfinished uniformity and create project flock triger productwarehouse and add new filtering lookup
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
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"
|
||||
)
|
||||
|
||||
type UniformitySamplingDTO struct {
|
||||
ChickQtyOfWeight float64 `json:"chick_qty_of_weight"`
|
||||
MeanWeight float64 `json:"mean_weight"`
|
||||
MeanDown float64 `json:"mean_down"`
|
||||
MeanUp float64 `json:"mean_up"`
|
||||
}
|
||||
|
||||
type UniformityResultDTO struct {
|
||||
UniformQty float64 `json:"uniform_qty"`
|
||||
OutsideQty float64 `json:"outside_qty"`
|
||||
Uniformity float64 `json:"uniformity"`
|
||||
Cv float64 `json:"cv"`
|
||||
}
|
||||
|
||||
type UniformityDetailItemDTO struct {
|
||||
Id int `json:"id"`
|
||||
Weight float64 `json:"weight"`
|
||||
Range string `json:"range"`
|
||||
}
|
||||
|
||||
type UniformityVerificationDTO struct {
|
||||
Sampling UniformitySamplingDTO `json:"sampling"`
|
||||
Result UniformityResultDTO `json:"result"`
|
||||
UniformityDetails []UniformityDetailItemDTO `json:"uniformity_details"`
|
||||
}
|
||||
|
||||
type UniformityInfoDTO struct {
|
||||
Tanggal string `json:"tanggal"`
|
||||
LokasiFarm string `json:"lokasi_farm"`
|
||||
ProjectFlock string `json:"project_flock"`
|
||||
Kandang string `json:"kandang"`
|
||||
FileName string `json:"file_name"`
|
||||
}
|
||||
|
||||
type UniformityDetailDTO struct {
|
||||
Id uint `json:"id"`
|
||||
InfoUmum UniformityInfoDTO `json:"info_umum"`
|
||||
Sampling UniformitySamplingDTO `json:"sampling"`
|
||||
Result UniformityResultDTO `json:"result"`
|
||||
UniformityDetails []UniformityDetailItemDTO `json:"uniformity_details"`
|
||||
}
|
||||
|
||||
type UniformityListDTO struct {
|
||||
Id uint `json:"id"`
|
||||
ProjectFlockKandangId uint `json:"project_flock_kandang_id"`
|
||||
LocationName string `json:"location_name"`
|
||||
FlockName string `json:"flock_name"`
|
||||
KandangName string `json:"kandang_name"`
|
||||
AppliedAt *time.Time `json:"applied_at"`
|
||||
Week int `json:"week"`
|
||||
Status string `json:"status"`
|
||||
Uniformity float64 `json:"uniformity"`
|
||||
Cv float64 `json:"cv"`
|
||||
ChickQtyOfWeight float64 `json:"chick_qty_of_weight"`
|
||||
UniformQty float64 `json:"uniform_qty"`
|
||||
MeanUp float64 `json:"mean_up"`
|
||||
MeanDown float64 `json:"mean_down"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
CreatedBy uint `json:"created_by"`
|
||||
LatestApproval *approvalDTO.ApprovalRelationDTO `json:"latest_approval"`
|
||||
}
|
||||
|
||||
func NewDocumentForResponse(name string) *entity.Document {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
return &entity.Document{Name: name}
|
||||
}
|
||||
|
||||
func ToUniformityVerificationDTO(calc service.UniformityCalculation) UniformityVerificationDTO {
|
||||
return UniformityVerificationDTO{
|
||||
Sampling: toUniformitySamplingDTO(calc),
|
||||
Result: toUniformityResultDTO(calc),
|
||||
UniformityDetails: toUniformityDetailItemsDTO(calc),
|
||||
}
|
||||
}
|
||||
|
||||
func ToUniformityDetailDTO(
|
||||
entityData entity.ProjectFlockKandangUniformity,
|
||||
calc service.UniformityCalculation,
|
||||
document *entity.Document,
|
||||
) UniformityDetailDTO {
|
||||
info := UniformityInfoDTO{
|
||||
Tanggal: formatUniformityDate(entityData.UniformDate),
|
||||
LokasiFarm: resolveLocationName(entityData.ProjectFlockKandang),
|
||||
ProjectFlock: resolveProjectFlockName(entityData.ProjectFlockKandang),
|
||||
Kandang: resolveKandangName(entityData.ProjectFlockKandang),
|
||||
FileName: "",
|
||||
}
|
||||
if document != nil {
|
||||
info.FileName = document.Name
|
||||
}
|
||||
|
||||
return UniformityDetailDTO{
|
||||
Id: entityData.Id,
|
||||
InfoUmum: info,
|
||||
Sampling: toUniformitySamplingDTO(calc),
|
||||
Result: toUniformityResultDTO(calc),
|
||||
UniformityDetails: toUniformityDetailItemsDTO(calc),
|
||||
}
|
||||
}
|
||||
|
||||
func ToUniformityListDTOs(items []entity.ProjectFlockKandangUniformity) []UniformityListDTO {
|
||||
result := make([]UniformityListDTO, len(items))
|
||||
for i, item := range items {
|
||||
var latestApproval *approvalDTO.ApprovalRelationDTO
|
||||
status := "Pengajuan"
|
||||
if item.LatestApproval != nil {
|
||||
mapped := approvalDTO.ToApprovalDTO(*item.LatestApproval)
|
||||
latestApproval = &mapped
|
||||
if mapped.StepName != "" {
|
||||
status = mapped.StepName
|
||||
}
|
||||
}
|
||||
|
||||
result[i] = UniformityListDTO{
|
||||
Id: item.Id,
|
||||
ProjectFlockKandangId: item.ProjectFlockKandangId,
|
||||
LocationName: resolveLocationName(item.ProjectFlockKandang),
|
||||
FlockName: resolveProjectFlockName(item.ProjectFlockKandang),
|
||||
KandangName: resolveKandangName(item.ProjectFlockKandang),
|
||||
AppliedAt: item.UniformDate,
|
||||
Week: item.Week,
|
||||
Status: status,
|
||||
Uniformity: item.Uniformity,
|
||||
Cv: item.Cv,
|
||||
ChickQtyOfWeight: item.ChickQtyOfWeight,
|
||||
UniformQty: item.UniformQty,
|
||||
MeanUp: item.MeanUp,
|
||||
MeanDown: item.MeanDown,
|
||||
CreatedAt: item.CreatedAt,
|
||||
CreatedBy: item.CreatedBy,
|
||||
LatestApproval: latestApproval,
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func toUniformitySamplingDTO(calc service.UniformityCalculation) UniformitySamplingDTO {
|
||||
return UniformitySamplingDTO{
|
||||
ChickQtyOfWeight: calc.ChickQtyOfWeight,
|
||||
MeanWeight: calc.MeanWeight,
|
||||
MeanDown: calc.MeanDown,
|
||||
MeanUp: calc.MeanUp,
|
||||
}
|
||||
}
|
||||
|
||||
func toUniformityResultDTO(calc service.UniformityCalculation) UniformityResultDTO {
|
||||
return UniformityResultDTO{
|
||||
UniformQty: calc.UniformQty,
|
||||
OutsideQty: calc.OutsideQty,
|
||||
Uniformity: calc.Uniformity,
|
||||
Cv: calc.Cv,
|
||||
}
|
||||
}
|
||||
|
||||
func toUniformityDetailItemsDTO(calc service.UniformityCalculation) []UniformityDetailItemDTO {
|
||||
result := make([]UniformityDetailItemDTO, len(calc.Details))
|
||||
for i, item := range calc.Details {
|
||||
result[i] = UniformityDetailItemDTO{
|
||||
Id: item.Id,
|
||||
Weight: item.Weight,
|
||||
Range: item.Range,
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func resolveLocationName(pfk entity.ProjectFlockKandang) string {
|
||||
if pfk.Kandang.Id != 0 && pfk.Kandang.Location.Id != 0 {
|
||||
return pfk.Kandang.Location.Name
|
||||
}
|
||||
if pfk.ProjectFlock.Id != 0 && pfk.ProjectFlock.Location.Id != 0 {
|
||||
return pfk.ProjectFlock.Location.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func resolveProjectFlockName(pfk entity.ProjectFlockKandang) string {
|
||||
if pfk.ProjectFlock.Id != 0 {
|
||||
return pfk.ProjectFlock.FlockName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func resolveKandangName(pfk entity.ProjectFlockKandang) string {
|
||||
if pfk.Kandang.Id != 0 {
|
||||
return pfk.Kandang.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func formatUniformityDate(date *time.Time) string {
|
||||
if date == nil || date.IsZero() {
|
||||
return ""
|
||||
}
|
||||
return date.Format("2006-01-02")
|
||||
}
|
||||
Reference in New Issue
Block a user