From 6da8ee2f471792e9bd21839b99c9dc925c76242e Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期一, 11 三月 2024 13:48:43 +0800
Subject: [PATCH] 保存生丝定级标准

---
 models/raw_silk_rank_standard.go          |   16 +++++++-
 controllers/request/system_set.go         |   26 ++++++++++++
 controllers/response/raw_silk_standard.go |    1 
 controllers/raw_silk_standard.go          |   61 ++++++++++++++++++++++++++++++
 router/router.go                          |    3 +
 5 files changed, 103 insertions(+), 4 deletions(-)

diff --git a/controllers/raw_silk_standard.go b/controllers/raw_silk_standard.go
index 823619c..7659034 100644
--- a/controllers/raw_silk_standard.go
+++ b/controllers/raw_silk_standard.go
@@ -2,11 +2,13 @@
 
 import (
 	"github.com/gin-gonic/gin"
+	"gorm.io/gorm"
 	"silkserver/controllers/request"
 	"silkserver/controllers/response"
 	"silkserver/extend/code"
 	"silkserver/extend/util"
 	"silkserver/models"
+	"silkserver/pkg/snowflake"
 	"strconv"
 )
 
@@ -108,6 +110,7 @@
 		var dr response.DynamicsRank
 		dr.RankName = standard.RankName
 		dr.RankValue = standard.RankValue
+		dr.RankProp = standard.RankProp
 		rankStandard, ok := m[standard.LineId]
 		if !ok {
 			rankStandard.LineId = standard.LineId
@@ -127,3 +130,61 @@
 	}
 	util.ResponseFormat(c, code.Success, data)
 }
+
+// SaveRankStandard
+//
+//	@Tags		绯荤粺璁剧疆/鐢熶笣瀹氱骇鏍囧噯
+//	@Summary	淇濆瓨鐢熶笣瀹氱骇鏍囧噯
+//	@Produce	application/json
+//	@Param		object	body		request.SaveRankStandard	true	"鍙傛暟"
+//	@Success	200		{object}	util.Response		"鎴愬姛"
+//	@Router		/api-jl/v1/system/saveRankStandard [post]
+func (slf RawSilkStandardController) SaveRankStandard(c *gin.Context) {
+	var rankStandard request.SaveRankStandard
+	err := c.BindJSON(&rankStandard)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	batch := make([]*models.RawSilkRankStandard, 0)
+	for _, standard := range rankStandard.RankStandard {
+		var rank models.RawSilkRankStandard
+		if standard.LineId == "" {
+			rank.LineId = snowflake.GenerateIdStr()
+		} else {
+			rank.LineId = standard.LineId
+		}
+		rank.CheckItem = standard.CheckItem
+		rank.StartFineness = standard.StartFineness
+		rank.EndFineness = standard.EndFineness
+		rank.RankA = standard.RankA
+		rank.RankB = standard.RankB
+		rank.RankC = standard.RankC
+		for _, dynamicsRank := range standard.DynamicsRanks {
+			rs := rank
+			rs.RankProp = dynamicsRank.RankProp
+			rs.RankName = dynamicsRank.RankName
+			rs.RankValue = dynamicsRank.RankValue
+			batch = append(batch, &rs)
+		}
+	}
+
+	err = models.WithTransaction(func(db *gorm.DB) error {
+		err = models.NewRawSilkRankStandardSearch().SetOrm(db).DeleteAll()
+		if err != nil {
+			return err
+		}
+		if len(batch) > 0 {
+			err = models.NewRawSilkRankStandardSearch().SetOrm(db).CreateBatch(batch)
+			if err != nil {
+				return err
+			}
+		}
+		return nil
+	})
+	if err != nil {
+		util.ResponseFormat(c, code.SaveFail, "淇濆瓨澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
+}
diff --git a/controllers/request/system_set.go b/controllers/request/system_set.go
index c87cd33..c7cb7d3 100644
--- a/controllers/request/system_set.go
+++ b/controllers/request/system_set.go
@@ -1,6 +1,9 @@
 package request
 
-import "silkserver/constvar"
+import (
+	"github.com/shopspring/decimal"
+	"silkserver/constvar"
+)
 
 type GetDictList struct {
 	PageInfo
@@ -25,6 +28,27 @@
 	KeyWord string `json:"keyWord"`
 }
 
+type SaveRankStandard struct {
+	RankStandard []RankStandard `json:"rankStandard"`
+}
+
+type RankStandard struct {
+	LineId        string             `json:"lineId"`        //琛宨d
+	CheckItem     constvar.CheckItem `json:"checkItem"`     //妫�鏌ラ」鐩悕绉�
+	StartFineness decimal.Decimal    `json:"startFineness"` //寮�濮嬬氦搴�
+	EndFineness   decimal.Decimal    `json:"endFineness"`   //缁撴潫绾ゅ害
+	RankA         decimal.Decimal    `json:"rankA"`         //閲庣氦
+	RankB         decimal.Decimal    `json:"rankB"`         //澶ч噹
+	RankC         decimal.Decimal    `json:"rankC"`         //鐗归噹
+	DynamicsRanks []DynamicsRank     `json:"dynamicsRanks"`
+}
+
+type DynamicsRank struct {
+	RankProp  string          `json:"rankProp"`  //鍓嶇紑key
+	RankName  string          `json:"rankName"`  //绛夌骇鍚嶇О
+	RankValue decimal.Decimal `json:"rankValue"` //绛夌骇鍊�
+}
+
 // ---------------------------------------杞﹂棿---------------------------------
 type GetWorkshopManage struct {
 	PageInfo
diff --git a/controllers/response/raw_silk_standard.go b/controllers/response/raw_silk_standard.go
index b9bb7db..4c6890e 100644
--- a/controllers/response/raw_silk_standard.go
+++ b/controllers/response/raw_silk_standard.go
@@ -17,6 +17,7 @@
 }
 
 type DynamicsRank struct {
+	RankProp  string          `json:"rankProp"`  //鍓嶇紑key
 	RankName  string          `json:"rankName"`  //绛夌骇鍚嶇О
 	RankValue decimal.Decimal `json:"rankValue"` //绛夌骇鍊�
 }
diff --git a/models/raw_silk_rank_standard.go b/models/raw_silk_rank_standard.go
index fdc2770..4ecf2e3 100644
--- a/models/raw_silk_rank_standard.go
+++ b/models/raw_silk_rank_standard.go
@@ -19,6 +19,7 @@
 		RankA         decimal.Decimal    `json:"rankA" gorm:"type:decimal(20,4);comment:閲庣氦"`
 		RankB         decimal.Decimal    `json:"rankB" gorm:"type:decimal(20,4);comment:澶ч噹"`
 		RankC         decimal.Decimal    `json:"rankC" gorm:"type:decimal(20,4);comment:鐗归噹"`
+		RankProp      string             `json:"rankProp" gorm:"type:varchar(255);comment:鍓嶇紑key"`
 		RankName      string             `json:"rankName" gorm:"type:varchar(255);comment:绛夌骇鍚嶇О"`
 		RankValue     decimal.Decimal    `json:"rankValue" gorm:"type:decimal(20,4);comment:绛夌骇鍊�"`
 	}
@@ -68,6 +69,17 @@
 	return nil
 }
 
+// CreateBatch 鎵归噺鎻掑叆
+func (slf *RawSilkRankStandardSearch) CreateBatch(records []*RawSilkRankStandard) error {
+	var db = slf.build()
+
+	if err := db.Create(&records).Error; err != nil {
+		return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+	}
+
+	return nil
+}
+
 func (slf *RawSilkRankStandardSearch) FindNotTotal() ([]*RawSilkRankStandard, error) {
 	var (
 		records = make([]*RawSilkRankStandard, 0)
@@ -91,10 +103,10 @@
 	return nil
 }
 
-func (slf *RawSilkRankStandardSearch) Delete() error {
+func (slf *RawSilkRankStandardSearch) DeleteAll() error {
 	var db = slf.build()
 
-	if err := db.Unscoped().Delete(&RawSilkRankStandard{}).Error; err != nil {
+	if err := db.Where("1=1").Delete(&RawSilkRankStandard{}).Error; err != nil {
 		return err
 	}
 
diff --git a/router/router.go b/router/router.go
index 3201fc2..8e8214f 100644
--- a/router/router.go
+++ b/router/router.go
@@ -39,7 +39,8 @@
 		systemApi.POST("savePriceStandard", rawSilkController.SavePriceStandard)           //淇濆瓨鐢熶笣瀹氫环鏍囧噯
 		systemApi.DELETE("deletePriceStandard/:id", rawSilkController.DeletePriceStandard) //鍒犻櫎鐢熶笣瀹氫环鏍囧噯
 		//鐢熶笣瀹氫环
-		systemApi.GET("getRankStandard", rawSilkController.GetRankStandard)
+		systemApi.GET("getRankStandard", rawSilkController.GetRankStandard)    //鑾峰彇鐢熶笣瀹氱骇鏍囧噯
+		systemApi.POST("saveRankStandard", rawSilkController.SaveRankStandard) //淇濆瓨鐢熶笣瀹氱骇鏍囧噯
 		//杞﹂棿绠$悊
 		systemApi.GET("getWorkshopManageList", workshopController.GetWorkshopManageList)      //鑾峰彇杞﹂棿绠$悊鍒楄〃
 		systemApi.POST("saveWorkshopManage", workshopController.SaveWorkshopManage)           //淇濆瓨杞﹂棿绠$悊

--
Gitblit v1.8.0