From 4f9f21d3c72d724f3cf41939e4d48a46de0848d8 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 09 四月 2024 15:09:08 +0800
Subject: [PATCH] 纤度登记表增加登记表id,修改登记时先删除检验记录再生成新的检验记录

---
 models/fineness_check_item.go |    8 ++--
 service/fineness.go           |   21 +++++++++-
 controllers/fineness.go       |    7 ++-
 models/fineness_check.go      |    9 ++++
 models/fineness.go            |   25 ++++++------
 5 files changed, 50 insertions(+), 20 deletions(-)

diff --git a/controllers/fineness.go b/controllers/fineness.go
index b675bcf..5203bba 100644
--- a/controllers/fineness.go
+++ b/controllers/fineness.go
@@ -43,10 +43,13 @@
 		util.ResponseFormat(c, code.RequestParamError, err.Error())
 		return
 	}
+
+	isNew := params.ID == 0
+
 	err := models.WithTransaction(func(db *gorm.DB) error {
 		search := models.NewFinenessRegisterSearch().SetOrm(db)
 
-		if params.ID != 0 {
+		if !isNew {
 			if err := models.NewFinenessItemSearch().SetOrm(db).SetFinenessRegisterID(params.ID).Delete(); err != nil {
 				return err
 			}
@@ -59,7 +62,7 @@
 		util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
 	}
 
-	err = service.FinenessCheck(&params)
+	err = service.FinenessCheck(&params, isNew)
 	if err != nil {
 		logx.Errorf("service.FinenessCheck err:%v, finenessRegister:%+v", err, params)
 		util.ResponseFormat(c, code.RequestParamError, "鐢熸垚妫�楠岃〃澶辫触")
diff --git a/models/fineness.go b/models/fineness.go
index 39cda4f..c82e5a5 100644
--- a/models/fineness.go
+++ b/models/fineness.go
@@ -11,18 +11,19 @@
 	// FinenessRegister 绾ゅ害鐧昏
 	FinenessRegister struct {
 		gorm.Model
-		Number        string          `gorm:"type:varchar(255);not null;comment:缂栧彿" json:"number"`             //缂栧彿
-		FinishDate    string          `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"`       //钀戒笣鏃堕棿
-		Workshop      string          `gorm:"type:varchar(255);not null;comment:杞﹂棿" json:"name"`               //杞﹂棿
-		WorkshopGroup int             `gorm:"type:int(11);not null;default:0;comment:杞︾粍" json:"workshopGroup"` //杞︾粍
-		Market        string          `gorm:"type:varchar(255);not null;comment:搴勫彛" json:"market"`             //搴勫彛
-		Spec          string          `gorm:"type:varchar(255);not null;comment:瑙勬牸" json:"spec"`               //瑙勬牸
-		Circle        uint8           `gorm:"not null;default:0;comment:鍥炴暟" json:"circle"`                     //鍥炴暟
-		TotalCircle   uint8           `gorm:"not null;default:0;comment:鎬诲洖鏁�" json:"totalCircle"`               //鎬诲洖鏁�
-		FinenessList  []FinenessItem  `gorm:"foreignkey:FinenessRegisterID;references:ID" json:"finenessList"`
-		SumFineness   decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣绾ゅ害" json:"sumFineness"`
-		SumQuantity   decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣鏁伴噺" json:"sumQuantity"`
-		Position      int             `gorm:"not null;default:0;comment:杞﹀彿" json:"position"` //鏈�鍚庝竴涓溅鍙�
+		Number          string          `gorm:"type:varchar(255);not null;comment:缂栧彿" json:"number"`             //缂栧彿
+		FinenessCheckID uint            `gorm:"not null;comment:绾ゅ害妫�楠岃〃ID" json:"finenessCheckID"`                 //绾ゅ害妫�楠岃〃ID
+		FinishDate      string          `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"`       //钀戒笣鏃堕棿
+		Workshop        string          `gorm:"type:varchar(255);not null;comment:杞﹂棿" json:"name"`               //杞﹂棿
+		WorkshopGroup   int             `gorm:"type:int(11);not null;default:0;comment:杞︾粍" json:"workshopGroup"` //杞︾粍
+		Market          string          `gorm:"type:varchar(255);not null;comment:搴勫彛" json:"market"`             //搴勫彛
+		Spec            string          `gorm:"type:varchar(255);not null;comment:瑙勬牸" json:"spec"`               //瑙勬牸
+		Circle          uint8           `gorm:"not null;default:0;comment:鍥炴暟" json:"circle"`                     //鍥炴暟
+		TotalCircle     uint8           `gorm:"not null;default:0;comment:鎬诲洖鏁�" json:"totalCircle"`               //鎬诲洖鏁�
+		FinenessList    []FinenessItem  `gorm:"foreignkey:FinenessRegisterID;references:ID" json:"finenessList"`
+		SumFineness     decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣绾ゅ害" json:"sumFineness"`
+		SumQuantity     decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣鏁伴噺" json:"sumQuantity"`
+		Position        int             `gorm:"not null;default:0;comment:杞﹀彿" json:"position"` //鏈�鍚庝竴涓溅鍙�
 	}
 	FinenessRegisterSearch struct {
 		FinenessRegister
diff --git a/models/fineness_check.go b/models/fineness_check.go
index 5620fee..0544afe 100644
--- a/models/fineness_check.go
+++ b/models/fineness_check.go
@@ -68,6 +68,11 @@
 	return slf
 }
 
+func (slf *FinenessCheckSearch) SetFinenessRegisterID(id uint) *FinenessCheckSearch {
+	slf.FinenessRegisterID = id
+	return slf
+}
+
 func (slf *FinenessCheckSearch) SetKeyword(keyword string) *FinenessCheckSearch {
 	slf.Keyword = keyword
 	return slf
@@ -88,6 +93,10 @@
 		db = db.Where("number like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
 	}
 
+	if slf.FinenessRegisterID != 0 {
+		db = db.Where("fineness_register_id = ?", slf.FinenessRegisterID)
+	}
+
 	if slf.Preload {
 		db = db.Model(&FinenessCheck{}).Preload("FinenessRegister")
 	}
diff --git a/models/fineness_check_item.go b/models/fineness_check_item.go
index 80e4217..6c8eeb3 100644
--- a/models/fineness_check_item.go
+++ b/models/fineness_check_item.go
@@ -12,10 +12,10 @@
 	// FinenessCheckItem 绾ゅ害妫�楠屾槑缁�
 	FinenessCheckItem struct {
 		gorm.Model
-		FinenessRegisterID uint `gorm:"not null;comment:绾ゅ害鐧昏琛↖D" json:"finenessRegisterID"` //绾ゅ害鐧昏琛↖D
-		//FinenessCheckID       uint                    `gorm:"not null;comment:绾ゅ害妫�楠岃〃ID" json:"finenessCheckID"`    //绾ゅ害妫�楠岃〃ID
-		Position              int                     `json:"position"`                       //杞﹀彿
-		FinenessRoundingItems []*FinenessRoundingItem `json:"finenessRoundingItems" gorm:"-"` //绾ゅ害鍒楄〃
+		FinenessRegisterID    uint                    `gorm:"not null;comment:绾ゅ害鐧昏琛↖D" json:"finenessRegisterID"` //绾ゅ害鐧昏琛↖D
+		FinenessCheckID       uint                    `gorm:"not null;comment:绾ゅ害妫�楠岃〃ID" json:"finenessCheckID"`    //绾ゅ害妫�楠岃〃ID
+		Position              int                     `json:"position"`                                           //杞﹀彿
+		FinenessRoundingItems []*FinenessRoundingItem `json:"finenessRoundingItems" gorm:"-"`                     //绾ゅ害鍒楄〃
 		FinenessRounding      string                  `json:"-"`
 		Deviation             decimal.Decimal         `gorm:"type:decimal(12,2);not null;comment:鍋忓樊" json:"deviation"`        //鍋忓樊
 		TotalDeviation        decimal.Decimal         `gorm:"type:decimal(12,2);not null;comment:鎬诲樊" json:"totalDeviation"`   //鎬诲樊
diff --git a/service/fineness.go b/service/fineness.go
index 863c71f..6128727 100644
--- a/service/fineness.go
+++ b/service/fineness.go
@@ -10,7 +10,7 @@
 	"sort"
 )
 
-func FinenessCheck(finenessRegister *models.FinenessRegister) (err error) {
+func FinenessCheck(finenessRegister *models.FinenessRegister, isNew bool) (err error) {
 	standardMap, err := GetSilkRankStandard()
 	if err != nil {
 		return err
@@ -88,11 +88,28 @@
 	finenessCheck.FinenessGrade = CalcFinenessGrade(finenessCheck.Deviation, finenessCheck.TotalDeviation, finenessCheck.Cleanliness, finenessCheck.Purity, finenessCheck.TwiceChange, standardMap)
 
 	err = models.WithTransaction(func(db *gorm.DB) error {
+		if !isNew {
+			err = models.NewFinenessCheckSearch().SetOrm(db).SetFinenessRegisterID(finenessRegister.ID).Delete()
+			if err != nil {
+				return err
+			}
+			err = models.NewFinenessCheckItemSearch().SetOrm(db).SetFinenessRegisterID(finenessRegister.ID).Delete()
+			if err != nil {
+				return err
+			}
+		}
 		err := models.NewFinenessCheckSearch().SetOrm(db).Create(&finenessCheck)
 		if err != nil {
 			return err
 		}
-		return models.NewFinenessCheckItemSearch().SetOrm(db).CreateBatch(finenessCheckItems)
+		for _, v := range finenessCheckItems {
+			v.FinenessCheckID = finenessCheck.ID
+		}
+		err = models.NewFinenessCheckItemSearch().SetOrm(db).CreateBatch(finenessCheckItems)
+		if err != nil {
+			return err
+		}
+		return models.NewFinenessRegisterSearch().SetOrm(db).SetID(finenessRegister.ID).UpdateByMap(map[string]interface{}{"fineness_check_id": finenessCheck.ID})
 	})
 	return err
 }

--
Gitblit v1.8.0