From edf3066724ad442d6929210c830cb67c17277690 Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期四, 01 八月 2024 11:46:33 +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(¶ms)
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(¶ms)
+ 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(¶ms)
+ 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(¶ms)
+ 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