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 |  291 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 251 insertions(+), 40 deletions(-)

diff --git a/controllers/workshop_manage_controller.go b/controllers/workshop_manage_controller.go
index 527e1d8..c68422b 100644
--- a/controllers/workshop_manage_controller.go
+++ b/controllers/workshop_manage_controller.go
@@ -2,8 +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"
@@ -15,54 +17,167 @@
 
 // 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, "鍙傛暟瑙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, "淇濆瓨鎴愬姛")
 }
 
 // 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 [get]
+//	@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.ShouldBindQuery(&param)
+	err := c.BindJSON(&param)
 	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,12 +199,88 @@
 		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.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(&params)
+	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
@@ -107,7 +298,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
@@ -119,40 +310,60 @@
 	util.ResponseFormat(c, code.Success, groupMap)
 }
 
-// GetWorkshopManageCar
+// GetCarAndLevel
 //
 //	@Tags		绯荤粺璁剧疆/杞﹂棿绠$悊
-//	@Summary	鑾峰彇杞﹁締缂栧彿
+//	@Summary	鑾峰彇杞﹁締缂栧彿鍜岀瓑绾�
 //	@Produce	application/json
 //	@Param     Authorization	header string true "token"
 //	@Param		object	body		request.GetWorkshopManageCar	true	"鍙傛暟"
-//	@Success	200		{object}	util.ResponseList{data=[][]int}		"鎴愬姛"
-//	@Router		/api-jl/v1/system/getWorkshopManageCar [post]
-func (slf WorkshopManageController) GetWorkshopManageCar(c *gin.Context) {
+//	@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(&params)
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
 		return
 	}
-	all, err := models.NewWorkshopManageSearch().SetWorkshopNumber(params.WorkshopNumber).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
 	}
-	carNum := make([][]int, 0)
-	for _, manage := range all {
-		car := make([]int, 0)
-		i := manage.StartCarNumber
-		if manage.CarFlag == constvar.RightHalfCar {
-			i++
+	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
 		}
-		for ; i <= manage.EndCarNumber; i++ {
+		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)
 		}
 	}
-	util.ResponseFormat(c, code.Success, carNum)
+	data.Car = carNum
+
+	util.ResponseFormat(c, code.Success, data)
 }

--
Gitblit v1.8.0