From cc7c2094568ea8f9d1697da5ed0a2c759ca81abd Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期五, 30 八月 2024 17:18:30 +0800
Subject: [PATCH] 方法修改,修改薪资列表,添加分页查询

---
 controllers/yield_register_controller.go |  197 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 194 insertions(+), 3 deletions(-)

diff --git a/controllers/yield_register_controller.go b/controllers/yield_register_controller.go
index 2c8ff8e..8eca9d8 100644
--- a/controllers/yield_register_controller.go
+++ b/controllers/yield_register_controller.go
@@ -2,9 +2,13 @@
 
 import (
 	"github.com/gin-gonic/gin"
+	"gorm.io/gorm"
+	"silkserver/constvar"
 	"silkserver/controllers/request"
 	"silkserver/extend/code"
 	"silkserver/extend/util"
+	"silkserver/models"
+	"silkserver/pkg/structx"
 )
 
 type YieldRegisterController struct {
@@ -15,14 +19,201 @@
 //	@Tags		鐢熶骇绠$悊/浜ч噺鐧昏琛�
 //	@Summary	淇濆瓨浜ч噺鐧昏琛�
 //	@Produce	application/json
-//	@Param		object	body		models.WorkshopManage	true	"鍙傛暟"
+//	@Param		object	body		request.YieldRegisterInfo	true	"鍙傛暟"
 //	@Success	200		{object}	util.Response		"鎴愬姛"
-//	@Router		/api-jl/v1/system/saveYieldRegister [post]
-func (slf WorkshopManageController) SaveYieldRegister(c *gin.Context) {
+//	@Router		/api-jl/v1/fineness/saveYieldRegister [post]
+func (slf YieldRegisterController) SaveYieldRegister(c *gin.Context) {
 	var params request.YieldRegisterInfo
+	var yield models.YieldRegister
 	err := c.BindJSON(&params)
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
 		return
 	}
+	err = structx.AssignTo(params, &yield)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲澶辫触")
+		return
+	}
+	circles := make([]*models.YieldRegisterCircle, 0)
+	for _, circle := range yield.Circles {
+		for _, circleInfo := range params.Circles {
+			if circle.CarNumber == circleInfo.CarNumber && circle.Circle == circleInfo.Circle {
+				for _, number := range circleInfo.PieceNumbers {
+					data := *circle
+					data.PieceNumber = number.PieceNumber
+					data.Value = number.Value
+					circles = append(circles, &data)
+				}
+			}
+		}
+	}
+	yield.Circles = circles
+	if yield.ID > 0 {
+		//鏇存柊
+		err = models.WithTransaction(func(db *gorm.DB) error {
+			err = models.NewYieldRegisterItemSearch().SetOrm(db).SetYieldRegisterId(yield.ID).Delete()
+			if err != nil {
+				return err
+			}
+			err = models.NewYieldRegisterCircleSearch().SetOrm(db).SetYieldRegisterId(yield.ID).Delete()
+			if err != nil {
+				return err
+			}
+			err = models.NewYieldRegisterSearch().SetOrm(db).Save(&yield)
+			return err
+		})
+
+		if err != nil {
+			util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
+			return
+		}
+	} else {
+		//淇濆瓨
+		count, _ := models.NewYieldRegisterSearch().SetNumber(yield.Number).Count()
+		if count > 0 {
+			util.ResponseFormat(c, code.RequestParamError, "缂栫爜宸插瓨鍦�")
+			return
+		}
+		err = models.NewYieldRegisterSearch().Create(&yield)
+		if err != nil {
+			util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
+			return
+		}
+	}
+	util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
+}
+
+// GetYieldRegisterList
+//
+//	@Tags		鐢熶骇绠$悊/浜ч噺鐧昏琛�
+//	@Summary	鑾峰彇浜ч噺鐧昏琛�
+//	@Produce	application/json
+//	@Param		object	body		request.GetYieldRegisterList	true	"鍙傛暟"
+//	@Success	200		{object}	util.ResponseList{data=[]models.YieldRegister}		"鎴愬姛"
+//	@Router		/api-jl/v1/fineness/getYieldRegisterList [post]
+func (slf YieldRegisterController) GetYieldRegisterList(c *gin.Context) {
+	var params request.GetYieldRegisterList
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	list, total, err := models.NewYieldRegisterSearch().SetPage(params.Page, params.PageSize).Find()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+		return
+	}
+	all, err := models.NewDictSearch().SetDictTypes([]constvar.DictType{constvar.DictTypeMarket, constvar.DictTypeWorkshop}).FindAll()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+		return
+	}
+	for _, register := range list {
+		for _, dict := range all {
+			if register.MarketId == dict.ID {
+				register.MarketName = dict.Name
+			}
+			if register.WorkshopNumber == dict.Number {
+				register.WorkshopName = dict.Name
+			}
+		}
+	}
+	util.ResponseFormatList(c, code.Success, list, total)
+}
+
+// GetYieldRegisterInfo
+//
+//	@Tags		鐢熶骇绠$悊/浜ч噺鐧昏琛�
+//	@Summary	鑾峰彇浜ч噺鐧昏琛ㄨ鎯�
+//	@Produce	application/json
+//	@Param		object	body		request.GetYieldRegisterList	true	"鍙傛暟"
+//	@Success	200		{object}	util.Response{data=request.YieldRegisterInfo}		"鎴愬姛"
+//	@Router		/api-jl/v1/fineness/getYieldRegisterInfo [post]
+func (slf YieldRegisterController) GetYieldRegisterInfo(c *gin.Context) {
+	var params request.GetYieldRegisterList
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	register, err := models.NewYieldRegisterSearch().SetPreload(true).SetNumber(params.Number).First()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+		return
+	}
+	var data request.YieldRegisterInfo
+	err = structx.AssignTo(register, &data)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲澶辫触")
+		return
+	}
+	circleInfos := make([]request.YieldRegisterCircleInfo, 0)
+	flagMap := make(map[int]bool)
+	for _, circle := range data.Circles {
+		//闃叉閲嶅
+		num := circle.CarNumber*10000 + circle.Circle*100
+		if flagMap[num] {
+			continue
+		}
+		ci := circle
+		for _, registerCircle := range register.Circles {
+			if circle.CarNumber == registerCircle.CarNumber && circle.Circle == registerCircle.Circle {
+				var pi request.PieceInfo
+				pi.PieceNumber = registerCircle.PieceNumber
+				pi.Value = registerCircle.Value
+				ci.PieceNumbers = append(ci.PieceNumbers, pi)
+			}
+		}
+		flagMap[num] = true
+		circleInfos = append(circleInfos, ci)
+	}
+	data.Circles = circleInfos
+	util.ResponseFormat(c, code.Success, data)
+}
+
+// DeleteYieldRegister
+//
+//	@Tags		鐢熶骇绠$悊/浜ч噺鐧昏琛�
+//	@Summary	鍒犻櫎浜ч噺鐧昏琛ㄨ褰�
+//	@Produce	application/json
+//	@Param		number	path		string			true	"number"
+//	@Success	200	{object}	util.Response	"鎴愬姛"
+//	@Router		/api-jl/v1/fineness/deleteYieldRegister/{number} [delete]
+func (slf YieldRegisterController) DeleteYieldRegister(c *gin.Context) {
+	number := c.Param("number")
+	if number == "" {
+		util.ResponseFormat(c, code.RequestParamError, "鏃犳晥鐨勭紪鐮�")
+		return
+	}
+	err := models.NewYieldRegisterSearch().SetNumber(number).Delete()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛")
+}
+
+// ChangeYieldRegister
+//
+//	@Tags		鐢熶骇绠$悊/浜ч噺鐧昏琛�
+//	@Summary	鍒囨崲浜ч噺鐧昏琛�
+//	@Produce	application/json
+//	@Param		object	body		request.ChangeYieldRegister	true	"鍙傛暟"
+//	@Success	200		{object}	util.Response{data=models.YieldRegister}		"鎴愬姛"
+//	@Router		/api-jl/v1/fineness/changeYieldRegister [post]
+func (slf YieldRegisterController) ChangeYieldRegister(c *gin.Context) {
+	var params request.ChangeYieldRegister
+	err := c.BindJSON(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	first, err := models.NewYieldRegisterSearch().SetGroupNumber(params.GroupNumber).SetCreateTime(params.CreateTime).
+		SetMarketId(params.MarketId).SetWorkshopNumber(params.WorkshopNumber).SetSpec(params.Spec).SetPreload(true).First()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, first)
 }

--
Gitblit v1.8.0