From 68e4513231bfd7371ef7414cad4dcb348cf5469b Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期五, 12 四月 2024 16:11:22 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/silk/silkServer --- service/fineness.go | 37 ++++++++++++++++++++++++++++++++++--- controllers/request/fineness.go | 14 +++++++------- models/fineness_item.go | 2 +- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/controllers/request/fineness.go b/controllers/request/fineness.go index 0c3dbf9..ed2ee9b 100644 --- a/controllers/request/fineness.go +++ b/controllers/request/fineness.go @@ -5,25 +5,25 @@ ) type AddFinenessRegister struct { - ID uint `json:"id"` //id 娣诲姞鏃朵紶0 + ID uint `json:"id"` //id 娣诲姞鏃朵紶0 Number string `gorm:"type:varchar(255);not null;comment:缂栧彿" json:"number"` //缂栧彿 - FinishDate string `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"` //钀戒笣鏃堕棿 + FinishDate string `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"` //钀戒笣鏃堕棿 Workshop string `gorm:"type:varchar(255);not null;comment:杞﹂棿" json:"name"` //杞﹂棿 WorkshopGroup int `gorm:"type:int(11);not null;default:0;comment:杞︾粍" json:"workshopGroup"` //杞︾粍 Market string `gorm:"type:varchar(255);not null;comment:搴勫彛" json:"market"` //搴勫彛 Spec string `gorm:"type:varchar(255);not null;comment:瑙勬牸" json:"spec"` //瑙勬牸 Circle uint8 `gorm:"not null;comment:鍥炴暟" json:"circle"` //鍥炴暟 - TotalCircle uint8 `gorm:"not null;comment:鎬诲洖鏁�" json:"totalCircle"` //鎬诲洖鏁� - FinenessList []FinenessItem `json:"finenessList"` //绾ゅ害鏁扮粍 - SumFineness decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣绾ゅ害" json:"sumFineness"` //鍚堣绾ゅ害 - SumQuantity decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣鏁伴噺" json:"sumQuantity"` //鍚堣鏁伴噺 + TotalCircle uint8 `gorm:"not null;comment:鎬诲洖鏁�" json:"totalCircle"` //鎬诲洖鏁� + FinenessList []FinenessItem `json:"finenessList"` //绾ゅ害鏁扮粍 + SumFineness decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣绾ゅ害" json:"sumFineness"` //鍚堣绾ゅ害 + SumQuantity decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣鏁伴噺" json:"sumQuantity"` //鍚堣鏁伴噺 Position int `gorm:"not null;default:0;comment:杞﹀彿" json:"position"` //鏈�鍚庝竴涓溅鍙� } type FinenessItem struct { Position int8 `json:"position"` //杞﹀彿 Fineness float32 `json:"fineness"` //绾ゅ害 - Quantity decimal.Decimal `json:"quantity"` //鏁伴噺 + Quantity int `json:"quantity"` //鏁伴噺 Sum decimal.Decimal `json:"sum"` //鍚堣 } diff --git a/models/fineness_item.go b/models/fineness_item.go index 5b74633..fb73857 100644 --- a/models/fineness_item.go +++ b/models/fineness_item.go @@ -14,7 +14,7 @@ FinenessRegisterID uint `json:"finenessRegisterID"` Position int `json:"position"` //杞﹀彿 Fineness float32 `json:"fineness"` //绾ゅ害 - Quantity decimal.Decimal `json:"quantity"` //鏁伴噺 + Quantity int `json:"quantity"` //鏁伴噺 Sum decimal.Decimal `json:"sum"` //绾ゅ害鍚堣 } diff --git a/service/fineness.go b/service/fineness.go index 4731d49..52ea7f8 100644 --- a/service/fineness.go +++ b/service/fineness.go @@ -31,7 +31,9 @@ for _, finenessItem := range finenessRegister.FinenessList { roundedHalfFineness := ToRoundedHalfFineness(finenessItem.Fineness) fineness := decimal.NewFromFloat32(roundedHalfFineness) - allFinenessList = append(allFinenessList, fineness) + for i := 0; i < finenessItem.Quantity; i++ { + allFinenessList = append(allFinenessList, fineness) + } personFinenessList = append(personFinenessList, fineness) carCheckNumber++ if carCheckNumber == constvar.EveryPersonCarCheckNumber { @@ -67,10 +69,10 @@ if roundingItemMap[roundedHalfFineness] == nil { roundingItemMap[roundedHalfFineness] = &models.FinenessRoundingItem{ Fineness: fineness, - Quantity: 1, + Quantity: finenessItem.Quantity, } } else { - roundingItemMap[roundedHalfFineness].Quantity++ + roundingItemMap[roundedHalfFineness].Quantity += finenessItem.Quantity } } @@ -85,6 +87,7 @@ MarketProcessOrderNumber: "", Inspector: "", } + finenessCheck.TotalDeviation = TotalDeviation(allFinenessList, finenessCheck.AverageFineness) finenessCheck.FinenessGrade = CalcFinenessGrade(finenessCheck.Deviation, finenessCheck.TotalDeviation, finenessCheck.Cleanliness, finenessCheck.Purity, finenessCheck.TwiceChange, standardMap) err = models.WithTransaction(func(db *gorm.DB) error { @@ -231,3 +234,31 @@ finenessCheck.FinenessGrade = CalcFinenessGrade(finenessCheck.Deviation, finenessCheck.TotalDeviation, finenessCheck.Cleanliness, finenessCheck.Purity, finenessCheck.TwiceChange, standardMap) return } + +func TotalDeviation(numbers []decimal.Decimal, average decimal.Decimal) decimal.Decimal { + if len(numbers) < 2 { + return decimal.Zero + } + + n := len(numbers) + ratio := decimal.NewFromFloat(0.02) + length := decimal.NewFromInt(int64(n)).Mul(ratio).Ceil().IntPart() + if length >= int64(n) { + return decimal.Zero + } + + sort.Slice(numbers, func(i, j int) bool { + return numbers[i].LessThan(numbers[j]) + }) + + minPart := numbers[:length-1] + maxPart := numbers[length:] + + minAverage := utils.Average(minPart) + maxAverage := utils.Average(maxPart) + + minDiff := minAverage.Sub(average).Abs() + maxDiff := maxAverage.Sub(average).Abs() + + return decimal.Max(minDiff, maxDiff) +} -- Gitblit v1.8.0