zhangqian
2024-04-29 440392a932fb2dc8118caf1f4996e7d8b72574a1
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, "保存成功")
}