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