From 4af540bc284454a6889ded0e8c99c40ae9516e0a Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 30 七月 2024 14:45:53 +0800
Subject: [PATCH] 修正保存物料总库存的多单位

---
 controllers/product_controller.go |    1 +
 models/material.go                |   18 +++++++++++++++++-
 service/operation.go              |    3 ++-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index eb8890c..fa48b5f 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -803,6 +803,7 @@
 				return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鎶ュ簾锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愭姤搴熸搷浣�", v.Product.Name, v.Product.Amount.String(), v.Amount.String()))
 			}
 			listDetails[k].Product.Amount = listDetails[k].Product.Amount.Sub(v.Amount)
+			listDetails[k].Product.StockMoreUnitList = service.SubMoreUnit(listDetails[k].Product.StockMoreUnitList, v.MoreUnitList)
 			if err := tx.Save(&listDetails[k].Product).Error; err != nil {
 				return err
 			}
diff --git a/models/material.go b/models/material.go
index 75e15d3..f28215e 100644
--- a/models/material.go
+++ b/models/material.go
@@ -80,7 +80,9 @@
 		ReorderRuleNum          int64           `json:"reorderRuleNum"`
 		MoreUnit                *bool           `json:"moreUnit" gorm:"type:tinyint(1);default:false;comment:鍚姩澶氬崟浣�"`
 		MoreUnitList            []UnitItems     `json:"moreUnitList" gorm:"-"`
-		MoreUnitValue           string          `json:"-" gorm:"type:varchar(255);comment:澶氬崟浣嶅��"`
+		MoreUnitValue           string          `json:"-" gorm:"type:varchar(255);comment:澶氬崟浣嶅��"` //澶氬崟浣嶆崲绠楁瘮渚�
+		StockMoreUnitList       []UnitItems     `json:"-" gorm:"-"`                              //澶氬崟浣嶅瓨鍌ㄧ殑鍊�
+		StockMoreUnitValue      string          `json:"-" gorm:"type:varchar(512);comment:澶氬崟浣嶅��"` //澶氬崟浣嶅瓨鍌ㄧ殑鍊�
 		GrossWeight             decimal.Decimal `json:"grossWeight" gorm:"type:decimal(20,3);comment:姣涢噸"`
 		NetWeight               decimal.Decimal `json:"netWeight" gorm:"type:decimal(20,3);comment:鍑�閲�"`
 		GrossUnit               string          `json:"grossUnit" gorm:"type:varchar(255);comment:姣涢噸鍗曚綅"`
@@ -177,6 +179,20 @@
 		}
 		slf.MoreUnitValue = string(str)
 	}
+	if len(slf.StockMoreUnitList) != 0 {
+		items := make([]UnitItems, 0)
+		for k, item := range slf.StockMoreUnitList {
+			if item.Unit != "" && !item.Amount.IsZero() {
+				items = append(items, slf.StockMoreUnitList[k])
+			}
+		}
+
+		str, err := json.Marshal(items)
+		if err != nil {
+			return err
+		}
+		slf.StockMoreUnitValue = string(str)
+	}
 	return
 }
 
diff --git a/service/operation.go b/service/operation.go
index 514bdc8..a86aabe 100644
--- a/service/operation.go
+++ b/service/operation.go
@@ -125,7 +125,7 @@
 	var details []*models.OperationDetails
 	for k, v := range listDetails {
 		listDetails[k].Product.Amount = listDetails[k].Product.Amount.Add(v.Amount)
-		listDetails[k].Product.MoreUnitList = AddMoreUnit(listDetails[k].Product.MoreUnitList, v.MoreUnitList)
+		listDetails[k].Product.StockMoreUnitList = AddMoreUnit(listDetails[k].Product.StockMoreUnitList, v.MoreUnitList)
 		if err := tx.Save(&listDetails[k].Product).Error; err != nil {
 			return err
 		}
@@ -249,6 +249,7 @@
 			return errors.New(fmt.Sprintf("浜у搧锛�%v, 澶氬崟浣嶆暟閲忎笉澶燂紝鏃犳硶瀹屾垚鍑哄簱鎿嶄綔", v.Product.Name))
 		}
 		listDetails[k].Product.Amount = listDetails[k].Product.Amount.Sub(v.Amount)
+		listDetails[k].Product.StockMoreUnitList = SubMoreUnit(listDetails[k].Product.StockMoreUnitList, v.MoreUnitList)
 		if err := models.NewMaterialSearch().SetOrm(tx).Save(&listDetails[k].Product); err != nil {
 			return err
 		}

--
Gitblit v1.8.0