From 7dd6097d42d6d6f254a84ab0111bac70f0358660 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 30 四月 2024 10:20:40 +0800 Subject: [PATCH] 加一些注释 --- service/fineness.go | 34 +--------------- service/silk_rank.go | 4 +- utils/mathx.go | 36 +++++++++++++++++ 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/service/fineness.go b/service/fineness.go index d5e3663..04a2a08 100644 --- a/service/fineness.go +++ b/service/fineness.go @@ -44,11 +44,11 @@ } carCheckNumber++ - if carCheckNumber == constvar.EveryPersonCarCheckNumber { + if carCheckNumber == constvar.EveryPersonCarCheckNumber { //姣忎汉姣忚溅鍙峰彇涓や釜涓濓紝鎵�浠ユ瘡涓や釜绛変簬涓�涓溅鍙凤紝瀛樹竴琛� models.FinenessCheckItem carCheckNumber = 0 if endCarMap[finenessItem.Position] { //璧板埌浜嗘煇涓汉鏈�鍚庣殑杞﹀彿,姣忎汉绠椾竴娆″亸宸拰绛夌骇 deviation = utils.Deviation(personFinenessList) - totalDeviation = TotalDeviation(personFinenessList, utils.Average(personFinenessList)) + totalDeviation = utils.TotalDeviation(personFinenessList, utils.Average(personFinenessList)) finenessGrade = CalcFinenessGrade(deviation, totalDeviation, decimal.Zero, decimal.Zero, decimal.Zero, standardMap) personFinenessList = personFinenessList[:0] } else { @@ -73,7 +73,7 @@ MarketProcessOrderNumber: "", Inspector: "", } - finenessCheck.TotalDeviation = TotalDeviation(allFinenessList, finenessCheck.AverageFineness) + finenessCheck.TotalDeviation = utils.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 { @@ -229,32 +229,4 @@ // 淇濈暀涓�浣嶅皬鏁帮紝骞跺湪鏁存暟鎯呭喌涓嬪湪灏忔暟鐐瑰悗鍔犱竴涓浂 result = float32(math.Round(float64(result)*10) / 10) return result -} - -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) } diff --git a/service/silk_rank.go b/service/silk_rank.go index 6d76999..dcd96f7 100644 --- a/service/silk_rank.go +++ b/service/silk_rank.go @@ -26,8 +26,8 @@ type ValueType int const ( - ValueTypeSmallerBetter ValueType = 0 //鍊兼寜鍗囧簭鎺掑悕锛堝�艰秺澶э紝绛夌骇瓒婇珮锛� - ValueTypeGreaterBetter ValueType = 1 //鍊兼寜闄嶅簭鎺掑悕锛堝�艰秺灏忥紝绛夌骇瓒婁綆锛� + ValueTypeSmallerBetter ValueType = 0 //鍊兼寜鍗囧簭鎺掑悕锛堝�艰秺灏忥紝绛夌骇瓒婇珮锛� + ValueTypeGreaterBetter ValueType = 1 //鍊兼寜闄嶅簭鎺掑悕锛堝�艰秺澶э紝绛夌骇瓒婇珮锛� ) var sortTypeMap = map[constvar.CheckItem]ValueType{ diff --git a/utils/mathx.go b/utils/mathx.go index 3bbf646..f43ead9 100644 --- a/utils/mathx.go +++ b/utils/mathx.go @@ -1,7 +1,11 @@ package utils -import "github.com/shopspring/decimal" +import ( + "github.com/shopspring/decimal" + "sort" +) +// Average 鍙栧钩鍧囧�� func Average(numbers []decimal.Decimal) decimal.Decimal { if len(numbers) == 0 { return decimal.Decimal{} @@ -16,6 +20,7 @@ return sum.Div(decimal.NewFromInt(int64(len(numbers)))) } +// Deviation 鍋忓樊 func Deviation(numbers []decimal.Decimal) decimal.Decimal { if len(numbers) == 0 || len(numbers) == 1 { return decimal.Decimal{} @@ -28,3 +33,32 @@ } return diffSquaredSum.Div(decimal.NewFromInt(int64(len(numbers)))) } + +// TotalDeviation 鎬诲樊 +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 := Average(minPart) + maxAverage := Average(maxPart) + + minDiff := minAverage.Sub(average).Abs() + maxDiff := maxAverage.Sub(average).Abs() + + return decimal.Max(minDiff, maxDiff) +} -- Gitblit v1.8.0