From 30e38e3b2a55a4c9d503b7fbda303437865793be Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期二, 16 七月 2024 20:08:30 +0800
Subject: [PATCH] 添加方法,根据纤度登记ID获取纤度检验详情

---
 service/fineness.go |   34 +++-------------------------------
 1 files changed, 3 insertions(+), 31 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)
 }

--
Gitblit v1.8.0