zhangqian
2024-04-29 440392a932fb2dc8118caf1f4996e7d8b72574a1
编辑纤度检验支持编辑明细并重新生成个人生丝等级
5个文件已修改
92 ■■■■■ 已修改文件
controllers/fineness.go 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/fineness.go 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/fineness.go
@@ -314,38 +314,71 @@
// @Tags      纤度检验
// @Summary   纤度检验修改
// @Produce   application/json
// @Param     object  body   models.FinenessCheck true  "字典信息"
// @Param     object  body   response.FinenessCheckInfo true  "字典信息"
// @Success   200 {object} util.Response "成功"
// @Router    /api-jl/v1/fineness/check [post]
func (slf FinenessController) CheckEdit(c *gin.Context) {
    var params models.FinenessCheck
    var params response.FinenessCheckInfo
    if err := c.BindJSON(&params); err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
        return
    }
    _, err := models.NewFinenessCheckSearch().SetID(params.ID).First()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "检验记录不存在")
        return
    }
    if params.FinenessRegisterID == 0 {
    if params.Info == nil || params.Info.FinenessRegisterID == 0 || len(params.Items) == 0 {
        util.ResponseFormat(c, code.RequestParamError, "参数缺失")
        return
    }
    err = service.FinenessReCheck(&params)
    _, err := models.NewFinenessCheckSearch().SetID(params.Info.ID).First()
    if err != nil {
        logx.Errorf("service.FinenessReCheck err:%v, finenessCheck:%+v", err, params)
        util.ResponseFormat(c, code.RequestParamError, "检验失败")
        util.ResponseFormat(c, code.RequestParamError, "检验记录不存在")
        return
    }
    check := params.Info
    finenessRegister, err := models.NewFinenessRegisterSearch().SetID(check.FinenessRegisterID).First()
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "纤度登记不存在")
        return
    }
    specArr := strings.Split(finenessRegister.Spec, "/")
    start, _ := decimal.NewFromString(specArr[0])
    end, _ := decimal.NewFromString(specArr[1])
    standardMap, err := service.GetSilkRankStandard(start, end)
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, err.Error())
        return
    }
    check.FinenessGrade = service.CalcFinenessGrade(check.Deviation, check.TotalDeviation, check.Cleanliness, check.Purity, check.TwiceChange, standardMap)
    items := params.Items
    for _, item := range items {
        if item.FinenessGrade != "" {
            item.FinenessGrade = service.CalcFinenessGrade(item.Deviation, item.TotalDeviation, item.Cleanliness, item.Purity, item.TwiceChange, standardMap)
        }
    }
    err = models.WithTransaction(func(db *gorm.DB) error {
        err = models.NewFinenessCheckSearch().SetOrm(db).Save(params.Info)
        if err != nil {
            return err
        }
        for _, item := range items {
            if item.FinenessGrade == "" {
                continue
            }
            err = models.NewFinenessCheckItemSearch().SetOrm(db).SetID(item.ID).UpdateByMap(map[string]interface{}{"fineness_grade": item.FinenessGrade})
            if err != nil {
                return err
            }
        }
        return nil
    })
    if err != nil {
        util.ResponseFormat(c, code.SaveFail, "保存失败")
        return
    }
    err = models.NewFinenessCheckSearch().Save(&params)
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "保存失败")
        return
    }
    util.ResponseFormat(c, code.Success, "保存成功")
}
docs/docs.go
@@ -414,7 +414,7 @@
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/models.FinenessCheck"
                            "$ref": "#/definitions/response.FinenessCheckInfo"
                        }
                    }
                ],
docs/swagger.json
@@ -402,7 +402,7 @@
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/models.FinenessCheck"
                            "$ref": "#/definitions/response.FinenessCheckInfo"
                        }
                    }
                ],
docs/swagger.yaml
@@ -1713,7 +1713,7 @@
        name: object
        required: true
        schema:
          $ref: '#/definitions/models.FinenessCheck'
          $ref: '#/definitions/response.FinenessCheckInfo'
      produces:
      - application/json
      responses:
service/fineness.go
@@ -8,7 +8,6 @@
    "silkserver/models"
    "silkserver/utils"
    "sort"
    "strings"
)
func FinenessCheck(finenessRegister *models.FinenessRegister, standardMap map[string]*Standard, endCarMap map[int]bool, isNew bool) (err error) {
@@ -225,22 +224,6 @@
    // 保留一位小数,并在整数情况下在小数点后加一个零
    result = float32(math.Round(float64(result)*10) / 10)
    return result
}
func FinenessReCheck(finenessCheck *models.FinenessCheck) (err error) {
    finenessRegister, err := models.NewFinenessRegisterSearch().SetID(finenessCheck.FinenessRegisterID).First()
    if err != nil {
        return err
    }
    specArr := strings.Split(finenessRegister.Spec, "/")
    start, _ := decimal.NewFromString(specArr[0])
    end, _ := decimal.NewFromString(specArr[1])
    standardMap, err := GetSilkRankStandard(start, end)
    if err != nil {
        return err
    }
    finenessCheck.FinenessGrade = CalcFinenessGrade(finenessCheck.Deviation, finenessCheck.TotalDeviation, finenessCheck.Cleanliness, finenessCheck.Purity, finenessCheck.TwiceChange, standardMap)
    return
}
func TotalDeviation(numbers []decimal.Decimal, average decimal.Decimal) decimal.Decimal {