zhangqian
2024-04-09 4f9f21d3c72d724f3cf41939e4d48a46de0848d8
纤度登记表增加登记表id,修改登记时先删除检验记录再生成新的检验记录
5个文件已修改
70 ■■■■ 已修改文件
controllers/fineness.go 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/fineness.go 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/fineness_check.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/fineness_check_item.go 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/fineness.go 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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, "生成检验表失败")
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
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")
    }
models/fineness_check_item.go
@@ -12,10 +12,10 @@
    // FinenessCheckItem 纤度检验明细
    FinenessCheckItem struct {
        gorm.Model
        FinenessRegisterID uint `gorm:"not null;comment:纤度登记表ID" json:"finenessRegisterID"` //纤度登记表ID
        //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:纤度登记表ID" json:"finenessRegisterID"` //纤度登记表ID
        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"`   //总差
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
}