From 9effa1fd02fcfb17a2726415efa830575ef45822 Mon Sep 17 00:00:00 2001
From: lishihai <dslsh@dscom>
Date: 星期一, 24 六月 2024 10:40:21 +0800
Subject: [PATCH] report物料导入BUG

---
 task/month_stats.go |   77 ++++++++++++++++++++++----------------
 1 files changed, 45 insertions(+), 32 deletions(-)

diff --git a/task/month_stats.go b/task/month_stats.go
index b89aa88..6d82bb4 100644
--- a/task/month_stats.go
+++ b/task/month_stats.go
@@ -12,21 +12,25 @@
 	"wms/service"
 )
 
-func MonthStats() {
+func MonthStats() (err error) {
 	//鍔犻攣锛屽彧闇�瑕佷竴涓繘绋嬭繍琛屾浠诲姟
 	var (
 		lockName  = "monthStats"
 		serviceID = "wms"
 	)
-	err := models.NewLockSearch().AcquireLock(lockName, serviceID)
+	err = models.NewLockSearch().AcquireLock(lockName, serviceID)
 	if err != nil {
 		logx.Errorf("MonthStats AcquireLock err:%v", err)
 		return
 	}
 	defer func() {
-		err := models.NewLockSearch().ReleaseLock(lockName, serviceID)
+		if err != nil {
+			service.SendAlarm("鏈堝害缁熻鎵ц澶辫触", "鎶ラ敊: "+err.Error())
+		}
+		err = models.NewLockSearch().ReleaseLock(lockName, serviceID)
 		if err != nil {
 			logx.Errorf("MonthStats ReleaseLock err:%v", err)
+			service.SendAlarm("鏈堝害缁熻鎵ц鎴愬姛瑙i攣澶辫触", err.Error())
 		}
 	}()
 
@@ -68,6 +72,12 @@
 		return
 	}
 	var record models.MonthStats
+
+	err = models.NewMonthStatsSearch().SetDate(date).Delete()
+	if err != nil {
+		return
+	}
+
 	for _, groupSum := range groupSumList {
 		productId := groupSum.Class
 		if productMap[productId] == nil {
@@ -94,13 +104,13 @@
 			inputMoreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList))
 			outputMoreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList))
 			for _, unitItem := range product.MoreUnitList {
-				moreValueArr = append(moreValueArr, models.UnitItems{
-					Amount:   amount.Mul(unitItem.Amount),
-					Unit:     unitItem.Unit,
-					Floating: unitItem.Floating,
-				})
-				bys, _ := json.Marshal(moreValueArr)
-				moreUnits = string(bys)
+				if !amount.IsZero() {
+					moreValueArr = append(moreValueArr, models.UnitItems{
+						Amount:   amount.Mul(unitItem.Amount),
+						Unit:     unitItem.Unit,
+						Floating: unitItem.Floating,
+					})
+				}
 
 				if !inputMap[productId].IsZero() {
 					inputMoreValueArr = append(inputMoreValueArr, models.UnitItems{
@@ -108,9 +118,6 @@
 						Unit:     unitItem.Unit,
 						Floating: unitItem.Floating,
 					})
-					bys, _ = json.Marshal(inputMoreValueArr)
-					inputMoreUnits = string(bys)
-
 				}
 
 				if !outputMap[productId].IsZero() {
@@ -119,16 +126,17 @@
 						Unit:     unitItem.Unit,
 						Floating: unitItem.Floating,
 					})
-					bys, _ = json.Marshal(outputMoreValueArr)
-					outputMoreUnits = string(bys)
-
 				}
 			}
-		}
-
-		err = models.NewMonthStatsSearch().SetDate(date).Delete()
-		if err != nil {
-			return
+			bys, _ := json.Marshal(moreValueArr)
+			if len(moreValueArr) > 0 {
+				fmt.Println(moreValueArr)
+			}
+			moreUnits = string(bys)
+			bys, _ = json.Marshal(inputMoreValueArr)
+			inputMoreUnits = string(bys)
+			bys, _ = json.Marshal(outputMoreValueArr)
+			outputMoreUnits = string(bys)
 		}
 
 		record.BeginMoreUnits = moreUnits
@@ -139,18 +147,20 @@
 				service.SendAlarm("鏈堝害缁熻鍒涘缓鏈湀澶辫触", fmt.Sprintf("NewMonthStatsSearch Create err:%v, record: %+v", err, record))
 			}
 
-			if oldRecordsMap[productId] != nil && (!inputMap[productId].IsZero() || !outputMap[productId].IsZero()) {
-				record.InputAmount = inputMap[productId]
-				record.InputMoreUnits = inputMoreUnits
-				record.OutputAmount = outputMap[productId]
-				record.OutputMoreUnits = outputMoreUnits
+			if oldRecordsMap[productId] != nil {
 				m := map[string]interface{}{
-					"input_amount":      inputMap[productId],
-					"input_more_units":  inputMoreUnits,
-					"output_amount":     outputMap[productId],
-					"output_more_units": outputMoreUnits,
-					"end_more_units":    moreUnits,
-					"end_amount":        amount,
+					"end_more_units": moreUnits,
+					"end_amount":     amount,
+				}
+				if !inputMap[productId].IsZero() || !outputMap[productId].IsZero() {
+					record.InputAmount = inputMap[productId]
+					record.InputMoreUnits = inputMoreUnits
+					record.OutputAmount = outputMap[productId]
+					record.OutputMoreUnits = outputMoreUnits
+					m["input_amount"] = inputMap[productId]
+					m["input_more_units"] = inputMoreUnits
+					m["output_amount"] = outputMap[productId]
+					m["output_more_units"] = outputMoreUnits
 				}
 				err = models.NewMonthStatsSearch().SetOrm(db).SetID(oldRecordsMap[productId].Id).UpdateByMap(m)
 				if err != nil {
@@ -161,6 +171,9 @@
 			return nil
 		})
 	}
+	if err == nil {
+		service.SendAlarm("鏈堝害缁熻鎵ц鎴愬姛", "")
+	}
 	return
 }
 

--
Gitblit v1.8.0