yinbentan
2024-07-10 743614db00f9b8cd9a97997a743f9c161e493aea
controllers/workshop_manage_controller.go
@@ -3,6 +3,7 @@
import (
   "github.com/gin-gonic/gin"
   "gorm.io/gorm"
   "silkserver/constvar"
   "silkserver/controllers/request"
   "silkserver/controllers/response"
   "silkserver/extend/code"
@@ -16,41 +17,117 @@
// SaveWorkshopManage
//
//      @Tags      系统设置/车间管理
//      @Summary   保存车间管理
//      @Produce   application/json
//      @Param      object   body      models.WorkshopManage   true   "参数"
//    @Param     Authorization   header string true "token"
//      @Success   200      {object}   util.Response      "成功"
//      @Router      /api-jl/v1/system/saveWorkshopManage [post]
//   @Tags      系统设置/车间管理
//   @Summary   保存车间管理
//   @Produce   application/json
//   @Param     Authorization   header string true "token"
//   @Param      object   body   request.AddWorkshopManage   true   "参数"
//   @Success   200      {object}   util.Response      "成功"
//   @Router      /api-jl/v1/system/saveWorkshopManage [post]
func (slf WorkshopManageController) SaveWorkshopManage(c *gin.Context) {
   var workshop models.WorkshopManage
   err := c.BindJSON(&workshop)
   var param *request.AddWorkshopManage
   err := c.BindJSON(&param)
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
      return
   }
   if workshop.ID > 0 {
      err = models.NewWorkshopManageSearch().Save(&workshop)
   } else {
      err = models.NewWorkshopManageSearch().Create(&workshop)
   if param.StartCarNumber > param.EndCarNumber {
      util.ResponseFormat(c, code.RequestParamError, "结束车号不能小于开始车号")
      return
   }
   editIds := make([]uint, len(param.Details))
   for _, detail := range param.Details {
      if detail.StartCarNumber > detail.EndCarNumber {
         util.ResponseFormat(c, code.RequestParamError, "分组结束车号不能小于分组开始车号")
         return
      }
      if detail.EndCarNumber > param.EndCarNumber {
         util.ResponseFormat(c, code.RequestParamError, "分组结束车号不能大于结束车号")
         return
      }
      if detail.ID > 0 {
         editIds = append(editIds, detail.ID)
      }
   }
   info := models.WorkshopManage{
      WorkshopNumber: param.WorkshopNumber,
      WorkshopName:   param.WorkshopName,
      Type:           constvar.Workshop,
      GroupNumber:    param.GroupNumber,
      StartCarNumber: param.StartCarNumber,
      EndCarNumber:   param.EndCarNumber,
      CarFlag:        param.CarFlag,
      Notes:          param.Notes,
   }
   err = models.WithTransaction(func(tx *gorm.DB) error {
      if param.ID > 0 {
         info.ID = param.ID
         err = models.NewWorkshopManageSearch().Save(&info)
         if err != nil {
            return err
         }
         oldDetailsList, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(param.WorkshopNumber).SetGroupNumber(param.GroupNumber).FindNotTotal()
         if err != nil {
            return err
         }
         for _, oldDetails := range oldDetailsList {
            delFlag := true
            for _, editId := range editIds {
               if oldDetails.ID == editId {
                  delFlag = false
                  break
               }
            }
            if delFlag {
               err = models.NewWorkshopManageSearch().SetId(int(oldDetails.ID)).Delete()
               if err != nil {
                  return err
               }
            }
         }
      } else {
         err = models.NewWorkshopManageSearch().Create(&info)
      }
      if err != nil {
         return err
      }
      for _, detail := range param.Details {
         detail.Type = constvar.Group
         detail.WorkshopNumber = param.WorkshopNumber
         detail.WorkshopName = param.WorkshopName
         detail.ParentID = param.WorkshopNumber
         //detail.GroupNumber = param.Workshop.GroupNumber
         if detail.ID > 0 {
            err = models.NewWorkshopManageSearch().Save(&detail)
         } else {
            err = models.NewWorkshopManageSearch().Create(&detail)
         }
      }
      return nil
   })
   if err != nil {
      util.ResponseFormat(c, code.SaveFail, "保存失败")
      return
   }
   util.ResponseFormat(c, code.Success, "保存成功")
}
// GetWorkshopManageList
//
//      @Tags      系统设置/车间管理
//      @Summary   获取车间管理列表
//      @Produce   application/json
//    @Param     Authorization   header string true "token"
//      @Param      object   query      request.GetPriceStandard   true   "参数"
//      @Success   200      {object}   util.ResponseList{data=[]models.WorkshopManage}      "成功"
//      @Router      /api-jl/v1/system/getWorkshopManageList [post]
//   @Tags      系统设置/车间管理
//   @Summary   获取车间管理列表
//   @Produce   application/json
//   @Param     Authorization   header string true "token"
//   @Param      object   query      request.GetPriceStandard   true   "参数"
//   @Success   200      {object}   util.ResponseList{data=[]response.WorkshopManage}      "成功"
//   @Router      /api-jl/v1/system/getWorkshopManageList [post]
func (slf WorkshopManageController) GetWorkshopManageList(c *gin.Context) {
   var param request.GetWorkshopManage
   err := c.BindJSON(&param)
@@ -58,12 +135,49 @@
      util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
      return
   }
   list, total, err := models.NewWorkshopManageSearch().SetWorkshopName(param.WorkshopName).SetGroupNumber(param.GroupNumber).SetPage(param.Page, param.PageSize).Find()
   workshopManageSearch := models.NewWorkshopManageSearch()
   if param.Page > 0 && param.PageSize > 0 {
      workshopManageSearch.SetPage(param.Page, param.PageSize)
   }
   workshopManageSearch.SetType(constvar.Workshop).SetWorkshopName(param.WorkshopName).SetGroupNumber(param.GroupNumber)
   list, total, err := workshopManageSearch.SetOrder("workshop_number,group_number,start_car_number").Find()
   if err != nil {
      util.ResponseFormat(c, code.SelectError, "查询失败")
      return
   }
   util.ResponseFormatList(c, code.Success, list, total)
   workshopNumberArr := make([]string, len(list))
   for _, workshopManage := range list {
      workshopNumberArr = append(workshopNumberArr, workshopManage.WorkshopNumber)
   }
   details, _ := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumberArr(workshopNumberArr).
      SetOrder("workshop_number,group_number,start_car_number").FindNotTotal()
   var result []*response.WorkshopManage
   for _, info := range list {
      var infoTemp response.WorkshopManage
      infoTemp.ID = info.ID
      infoTemp.CreatedAt = info.CreatedAt
      infoTemp.UpdatedAt = info.UpdatedAt
      infoTemp.WorkshopNumber = info.WorkshopNumber
      infoTemp.WorkshopName = info.WorkshopName
      infoTemp.Type = info.Type
      infoTemp.ParentID = info.ParentID
      infoTemp.GroupNumber = info.GroupNumber
      infoTemp.StartCarNumber = info.StartCarNumber
      infoTemp.EndCarNumber = info.EndCarNumber
      infoTemp.CarFlag = info.CarFlag
      infoTemp.Notes = info.Notes
      var detailList []models.WorkshopManage
      for _, detail := range details {
         if info.WorkshopNumber == detail.WorkshopNumber && info.GroupNumber == detail.GroupNumber {
            detailList = append(detailList, *detail)
         }
      }
      infoTemp.Details = detailList
      result = append(result, &infoTemp)
   }
   util.ResponseFormatList(c, code.Success, result, total)
}
// DeleteWorkshopManage
@@ -85,7 +199,28 @@
      util.ResponseFormat(c, code.RequestParamError, "数据转换失败")
      return
   }
   err = models.NewWorkshopManageSearch().SetId(atoi).Delete()
   err = models.WithTransaction(func(tx *gorm.DB) error {
      first, err := models.NewWorkshopManageSearch().SetId(atoi).First()
      if err != nil {
         return err
      }
      if first.Type == constvar.Group {
         err = models.NewWorkshopManageSearch().SetId(atoi).Delete()
      } else if first.Type == constvar.Workshop {
         workshopManages, err := models.NewWorkshopManageSearch().SetWorkshopNumber(first.WorkshopNumber).SetGroupNumber(first.GroupNumber).FindNotTotal()
         if err != nil {
            return err
         }
         for _, detail := range workshopManages {
            err = models.NewWorkshopManageSearch().SetId(int(detail.ID)).Delete()
            if err != nil {
               return err
            }
         }
      }
      return nil
   })
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "删除失败")
      return
@@ -109,7 +244,9 @@
      util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
      return
   }
   all, err := models.NewWorkshopManageSearch().SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).FindAll()
   all, err := models.NewWorkshopManageSearch().
      SetType(constvar.Group).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).
      SetOrder("workshop_number,group_number,start_car_number").FindNotTotal()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
@@ -139,7 +276,7 @@
      util.ResponseFormat(c, code.RequestParamError, "无效的编码")
      return
   }
   all, err := models.NewWorkshopManageSearch().SetWorkshopNumber(number).FindAll()
   all, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(number).FindNotTotal()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
@@ -167,34 +304,37 @@
      util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
      return
   }
   all, err := models.NewWorkshopManageSearch().SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).FindAll()
   workshopManageList, err := models.NewWorkshopManageSearch().
      SetType(constvar.Group).SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).
      FindNotTotal()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      util.ResponseFormat(c, code.RequestParamError, "车间分组查询失败")
      return
   }
   fineness, err := models.NewFinenessRegisterSearch().SetWorkshopName(params.WorkshopName).SetWorkshopGroup(params.GroupNumber).
      SetMarket(params.MarketName).First()
   finenessRegisterList, err := models.NewFinenessRegisterSearch().
      SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetWorkshopGroup(params.GroupNumber).SetMarket(params.MarketName).
      First()
   if err != nil {
      if err == gorm.ErrRecordNotFound {
         util.ResponseFormat(c, code.RequestParamError, "当前庄口,车间,组别下,没有纤度登记信息")
         util.ResponseFormat(c, code.RequestParamError, "当前庄口、车间、组别下,没有纤度登记信息")
         return
      }
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      util.ResponseFormat(c, code.RequestParamError, "纤度登记查询失败")
      return
   }
   first, err := models.NewFinenessCheckSearch().SetID(fineness.FinenessCheckID).First()
   first, err := models.NewFinenessCheckSearch().SetID(finenessRegisterList.FinenessCheckID).First()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      util.ResponseFormat(c, code.RequestParamError, "纤度检验查询失败")
      return
   }
   var data response.CarAndLevel
   data.Level = first.FinenessGrade
   carNum := make([][]int, 0)
   for _, manage := range all {
   for _, workshop := range workshopManageList {
      car := make([]int, 0)
      i := manage.StartCarNumber
      for ; i <= manage.EndCarNumber; i++ {
      i := workshop.StartCarNumber
      for ; i <= workshop.EndCarNumber; i++ {
         car = append(car, i)
      }
      if len(car) > 0 {