From 2716487d13f3521adeb25a48aa07a89f885d32c7 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期一, 09 十月 2023 09:36:08 +0800
Subject: [PATCH] 仓库功能修改

---
 controllers/warehouse.go |   56 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 47 insertions(+), 9 deletions(-)

diff --git a/controllers/warehouse.go b/controllers/warehouse.go
index 8606ee1..01c1ba3 100644
--- a/controllers/warehouse.go
+++ b/controllers/warehouse.go
@@ -54,7 +54,36 @@
 		return
 	}
 	params.LocationId = locationId
-	if err := models.NewWarehouseSearch().Create(&params); err != nil {
+	err = models.WithTransaction(func(tx *gorm.DB) error {
+		err := models.NewWarehouseSearch().SetOrm(tx).Create(&params)
+		if err != nil {
+			return err
+		}
+		//鍒涘缓涓変釜榛樿鎿嶄綔绫诲瀷
+		var types []*models.OperationType
+		inType := &models.OperationType{
+			Name:              params.Name + "-鍏ュ簱",
+			BaseOperationType: constvar.BaseOperationTypeIncoming,
+			WarehouseId:       params.Id,
+		}
+		types = append(types, inType)
+		outType := &models.OperationType{
+			Name:              params.Name + "-鍑哄簱",
+			BaseOperationType: constvar.BaseOperationTypeOutgoing,
+			WarehouseId:       params.Id,
+		}
+		types = append(types, outType)
+		internalType := &models.OperationType{
+			Name:              params.Name + "-鍐呴儴璋冩嫧",
+			BaseOperationType: constvar.BaseOperationTypeInternal,
+			WarehouseId:       params.Id,
+		}
+		types = append(types, internalType)
+		err = models.NewOperationTypeSearch().SetOrm(tx).CreateBatch(types)
+		return err
+	})
+	if err != nil {
+		_ = models.NewLocationSearch().SetID(locationId).Delete()
 		logx.Errorf("warehouse create err: %v", err)
 		util.ResponseFormat(c, code.SaveFail, "鎻掑叆澶辫触")
 		return
@@ -174,22 +203,31 @@
 		return
 	}
 
-	//鍒犻櫎浣嶇疆淇℃伅
 	first, err := models.NewWarehouseSearch().SetID(id).First()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鑾峰彇浠撳簱淇℃伅澶辫触")
 		return
 	}
-	err = models.NewLocationSearch().SetID(first.LocationId).Delete()
+	err = models.WithTransaction(func(tx *gorm.DB) error {
+		//鍒犻櫎浣嶇疆淇℃伅
+		err = models.NewLocationSearch().SetOrm(tx).SetJointName(first.Code).Delete()
+		if err != nil {
+			return err
+		}
+		//鍒犻櫎鎿嶄綔绫诲瀷
+		err = models.NewOperationTypeSearch().SetOrm(tx).SetWarehouseId(first.Id).Delete()
+		if err != nil {
+			return err
+		}
+		//鍒犻櫎浠撳簱
+		err = models.NewWarehouseSearch().SetOrm(tx).SetID(id).Delete()
+		return err
+	})
 	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎浣嶇疆淇℃伅澶辫触")
+		util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎浠撳簱澶辫触")
 		return
 	}
-	err = models.NewWarehouseSearch().SetID(id).Delete()
-	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎浠撳簱淇℃伅澶辫触")
-		return
-	}
+
 	util.ResponseFormat(c, code.UpdateSuccess, "鍒犻櫎鎴愬姛")
 }
 

--
Gitblit v1.8.0