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(¶ms) + err = service.FinenessCheck(¶ms, 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