yinbentan
2024-07-16 30e38e3b2a55a4c9d503b7fbda303437865793be
controllers/fineness.go
@@ -3,6 +3,7 @@
import (
   "errors"
   "github.com/gin-gonic/gin"
   "github.com/shopspring/decimal"
   "gorm.io/gorm"
   "silkserver/controllers/request"
   "silkserver/controllers/response"
@@ -13,6 +14,7 @@
   "silkserver/pkg/logx"
   "silkserver/pkg/structx"
   "silkserver/service"
   "strings"
)
type FinenessController struct{}
@@ -44,35 +46,73 @@
      return
   }
   specArr := strings.Split(params.Spec, "/")
   start, _ := decimal.NewFromString(specArr[0])
   end, _ := decimal.NewFromString(specArr[1])
   silkStandard, err := service.GetSilkRankStandard(start, end)
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, err.Error())
      return
   }
   endCarMap, err := service.GetWorkshopEndCarMap(params.WorkshopNumber, params.WorkshopGroup)
   if len(endCarMap) == 0 {
      util.ResponseFormat(c, code.RequestParamError, "该车间未配置车号,请在车间管理中配置!")
      return
   }
   isNew := params.ID == 0
   err := models.WithTransaction(func(db *gorm.DB) error {
   err = models.WithTransaction(func(db *gorm.DB) error {
      search := models.NewFinenessRegisterSearch().SetOrm(db)
      if !isNew {
      if !isNew { // id不为空
         if err := models.NewFinenessItemSearch().SetOrm(db).SetFinenessRegisterID(params.ID).Delete(); err != nil {
            return err
         }
         return search.Save(&params)
      } else {
         return search.Create(&params)
      }
      return search.Create(&params)
   })
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "保存失败")
      return
   }
   err = service.FinenessCheck(&params, isNew)
   err = service.FinenessCheck(&params, silkStandard, endCarMap, isNew)
   if err != nil {
      logx.Errorf("service.FinenessCheck err:%v, finenessRegister:%+v", err, params)
      util.ResponseFormat(c, code.RequestParamError, "生成检验表失败")
      return
   }
   util.ResponseFormat(c, code.Success, "保存成功")
   util.ResponseFormat(c, code.Success, params)
}
func (slf FinenessController) ParamsCheck(params models.FinenessRegister) (err error) {
   if params.Spec == "" || !strings.Contains(params.Spec, "/") {
      return errors.New("规格格式不正确")
   }
   specArr := strings.Split(params.Spec, "/")
   _, err = decimal.NewFromString(specArr[0])
   if err != nil {
      return errors.New("规格格式不正确")
   }
   _, err = decimal.NewFromString(specArr[1])
   if err != nil {
      return errors.New("规格格式不正确")
   }
   if params.WorkshopNumber == "" || params.WorkshopGroup == 0 {
      return errors.New("车间车组参数缺失")
   }
   if len(params.FinenessList) == 0 {
      return errors.New("纤度列表缺失")
   }
   if params.ID == 0 {
      _, err = models.NewFinenessRegisterSearch().SetNumber(params.Number).First()
      if err != gorm.ErrRecordNotFound {
@@ -104,7 +144,7 @@
      return
   }
   list, total, err := models.NewFinenessRegisterSearch().SetKeyword(params.Keyword).SetPage(params.Page, params.PageSize).Find()
   list, total, err := models.NewFinenessRegisterSearch().SetKeyword(params.Keyword).SetPage(params.Page, params.PageSize).SetOrder("id desc").Find()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
@@ -160,12 +200,17 @@
      util.ResponseFormat(c, code.RequestParamError, "空的记录id")
      return
   }
   err := models.NewFinenessRegisterSearch().SetID(id).Delete()
   err := models.WithTransaction(func(db *gorm.DB) error {
      if err := models.NewFinenessItemSearch().SetOrm(db).SetFinenessRegisterID(id).Delete(); err != nil {
         return err
      }
      return models.NewFinenessRegisterSearch().SetOrm(db).SetID(id).Delete()
   })
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "删除失败")
      return
   }
   util.ResponseFormat(c, code.UpdateSuccess, "删除成功")
}
@@ -183,7 +228,7 @@
      return
   }
   list, total, err := models.NewFinenessCheckSearch().SetPage(params.Page, params.PageSize).Find()
   list, total, err := models.NewFinenessCheckSearch().SetPage(params.Page, params.PageSize).SetPreload().SetOrder("id desc").Find()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
@@ -196,7 +241,7 @@
// @Tags      纤度检验
// @Summary   纤度检验详情
// @Produce   application/json
// @Param     id  path string true  "字典信息"
// @Param     id  path string true  "纤度检验ID"
// @Success   200 {object} util.ResponseList{data=response.FinenessCheckInfo} "成功"
// @Router    /api-jl/v1/fineness/check/{id} [get]
func (slf FinenessController) CheckInfo(c *gin.Context) {
@@ -222,6 +267,42 @@
   resp.Items, err = models.NewFinenessCheckItemSearch().SetFinenessRegisterID(info.FinenessRegisterID).FindAll()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
   }
   util.ResponseFormat(c, code.Success, resp)
}
// CheckInfoByFinenessID
// @Tags      纤度检验
// @Summary   根据纤度登记ID获取纤度检验详情
// @Produce   application/json
// @Param     id  path string true  "纤度登记ID"
// @Success   200 {object} util.ResponseList{data=response.FinenessCheckInfo} "成功"
// @Router    /api-jl/v1/fineness/checkFinenessID/{id} [get]
func (slf FinenessController) CheckInfoByFinenessID(c *gin.Context) {
   idStr := c.Param("id")
   if idStr == "0" || idStr == "" {
      util.ResponseFormat(c, code.RequestParamError, "空的记录id")
      return
   }
   id := convertx.StringToUInt(idStr)
   if id == 0 {
      util.ResponseFormat(c, code.RequestParamError, "空的记录id")
      return
   }
   info, err := models.NewFinenessCheckSearch().SetFinenessRegisterID(id).SetPreload().First()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "检查表查找失败")
      return
   }
   resp := new(response.FinenessCheckInfo)
   resp.Info = info
   resp.Items, err = models.NewFinenessCheckItemSearch().SetFinenessRegisterID(info.FinenessRegisterID).FindAll()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "检查详情表查找失败")
      return
   }
@@ -273,33 +354,72 @@
// @Tags      纤度检验
// @Summary   纤度检验修改
// @Produce   application/json
// @Param     object  body   models.FinenessCheck true  "字典信息"
// @Param     object  body   response.FinenessCheckInfo true  "参数"
// @Param     Authorization   header string true "token"
// @Success   200 {object} util.Response "成功"
// @Router    /api-jl/v1/fineness/check [post]
// @Router    /api-jl/v1/fineness/check [PUT]
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
   }
   if params.Info == nil || params.Info.FinenessRegisterID == 0 || len(params.Items) == 0 {
      util.ResponseFormat(c, code.RequestParamError, "参数缺失")
      return
   }
   _, err := models.NewFinenessCheckSearch().SetID(params.ID).First()
   _, err := models.NewFinenessCheckSearch().SetID(params.Info.ID).First()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "检验记录不存在")
      return
   }
   err = service.FinenessReCheck(&params)
   check := params.Info
   finenessRegister, err := models.NewFinenessRegisterSearch().SetID(check.FinenessRegisterID).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
   }
   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, "保存成功")
}