package controllers import ( "github.com/gin-gonic/gin" "gorm.io/gorm" "silkserver/constvar" "silkserver/controllers/request" "silkserver/controllers/response" "silkserver/extend/code" "silkserver/extend/util" "silkserver/models" "strconv" ) type WorkshopManageController struct { } // SaveWorkshopManage // // @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 param *request.AddWorkshopManage err := c.BindJSON(¶m) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } 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=[]response.WorkshopManage} "成功" // @Router /api-jl/v1/system/getWorkshopManageList [post] func (slf WorkshopManageController) GetWorkshopManageList(c *gin.Context) { var param request.GetWorkshopManage err := c.BindJSON(¶m) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } 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 } 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 // // @Tags 系统设置/车间管理 // @Summary 删除车间管理 // @Produce application/json // @Param id path string true "id" // @Success 200 {object} util.Response "成功" // @Router /api-jl/v1/system/deleteWorkshopManage/{id} [delete] func (slf WorkshopManageController) DeleteWorkshopManage(c *gin.Context) { id := c.Param("id") if id == "" { util.ResponseFormat(c, code.RequestParamError, "无效的id") return } atoi, err := strconv.Atoi(id) if err != nil { util.ResponseFormat(c, code.RequestParamError, "数据转换失败") return } 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 } util.ResponseFormat(c, code.Success, "删除成功") } // GetCarNumber // // @Tags 系统设置/车间管理 // @Summary 获取车辆编号 // @Produce application/json // @Param Authorization header string true "token" // @Param object body request.GetWorkshopManageCar true "参数" // @Success 200 {object} util.Response{data=[]int} "成功" // @Router /api-jl/v1/system/getCarNumber [post] func (slf WorkshopManageController) GetCarNumber(c *gin.Context) { var params request.GetWorkshopManageCar err := c.BindJSON(¶ms) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } all, err := models.NewWorkshopManageSearch(). SetType(constvar.Group).SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber). SetOrder("workshop_number,group_number,start_car_number").FindNotTotal() if err != nil { util.ResponseFormat(c, code.RequestParamError, "查找失败") return } //carNumbers := make([]int, 0) var ( startCarNumber = 0 endCarNumber = 0 startCarHalf = constvar.LeftHalfCar endCarHalf = constvar.RightHalfCar ) for _, manage := range all { if startCarNumber == 0 { startCarNumber = manage.StartCarNumber startCarHalf = manage.StartCarHalf endCarNumber = manage.EndCarNumber endCarHalf = manage.EndCarHalf continue } if manage.StartCarNumber < startCarNumber { startCarNumber = manage.StartCarNumber startCarHalf = manage.StartCarHalf } if manage.EndCarNumber > endCarNumber { endCarNumber = manage.EndCarNumber endCarHalf = manage.EndCarHalf } } m := make(map[string]interface{}) m["startCarNumber"] = startCarNumber m["startCarHalf"] = startCarHalf m["endCarNumber"] = endCarNumber m["endCarHalf"] = endCarHalf util.ResponseFormat(c, code.Success, m) } // GetWorkshopManageGroup // // @Tags 系统设置/车间管理 // @Summary 获取车间组别 // @Produce application/json // @Param Authorization header string true "token" // @Param number path string true "number" // @Success 200 {object} util.Response{data=map[int]int} "成功" // @Router /api-jl/v1/system/getWorkshopManageGroup/{number} [get] func (slf WorkshopManageController) GetWorkshopManageGroup(c *gin.Context) { number := c.Param("number") if number == "" { util.ResponseFormat(c, code.RequestParamError, "无效的编码") return } all, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(number).FindNotTotal() if err != nil { util.ResponseFormat(c, code.RequestParamError, "查找失败") return } groupMap := make(map[int]int) for _, manage := range all { groupMap[manage.GroupNumber] = manage.GroupNumber } util.ResponseFormat(c, code.Success, groupMap) } // GetCarAndLevel // // @Tags 系统设置/车间管理 // @Summary 获取车辆编号和等级 // @Produce application/json // @Param Authorization header string true "token" // @Param object body request.GetWorkshopManageCar true "参数" // @Success 200 {object} util.Response{data=response.CarAndLevel} "成功" // @Router /api-jl/v1/system/getCarAndLevel [post] func (slf WorkshopManageController) GetCarAndLevel(c *gin.Context) { var params request.GetWorkshopManageCar err := c.BindJSON(¶ms) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } 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, "车间分组查询失败") return } 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, "当前庄口、车间、组别下,没有纤度登记信息") return } util.ResponseFormat(c, code.RequestParamError, "纤度登记查询失败") return } first, err := models.NewFinenessCheckSearch().SetID(finenessRegisterList.FinenessCheckID).First() if err != nil { util.ResponseFormat(c, code.RequestParamError, "纤度检验查询失败") return } var data response.CarAndLevel data.Level = first.FinenessGrade carNum := make([][]int, 0) for _, workshop := range workshopManageList { car := make([]int, 0) i := workshop.StartCarNumber for ; i <= workshop.EndCarNumber; i++ { car = append(car, i) } if len(car) > 0 { carNum = append(carNum, car) } } data.Car = carNum util.ResponseFormat(c, code.Success, data) }