From cc7c2094568ea8f9d1697da5ed0a2c759ca81abd Mon Sep 17 00:00:00 2001 From: yinbentan <yinbentan@live.com> Date: 星期五, 30 八月 2024 17:18:30 +0800 Subject: [PATCH] 方法修改,修改薪资列表,添加分页查询 --- controllers/workshop_manage_controller.go | 310 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 293 insertions(+), 17 deletions(-) diff --git a/controllers/workshop_manage_controller.go b/controllers/workshop_manage_controller.go index 5b4b706..c68422b 100644 --- a/controllers/workshop_manage_controller.go +++ b/controllers/workshop_manage_controller.go @@ -2,7 +2,10 @@ 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" @@ -17,28 +20,102 @@ // @Tags 绯荤粺璁剧疆/杞﹂棿绠$悊 // @Summary 淇濆瓨杞﹂棿绠$悊 // @Produce application/json -// @Param object body models.WorkshopManage true "鍙傛暟" -// -// @Param Authorization header string true "token" -// +// @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(¶m) if err != nil { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") 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, "淇濆瓨鎴愬姛") } @@ -47,22 +124,60 @@ // @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 [get] +// @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.ShouldBindQuery(¶m) + err := c.BindJSON(¶m) if err != nil { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - list, total, err := models.NewWorkshopManageSearch().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 @@ -84,10 +199,171 @@ 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 } - util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎鎴愬姛") + 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, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") + 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, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") + 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) } -- Gitblit v1.8.0