From 3032034d254fc15f06a1d4260f35c49f0ef1e12f Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期五, 02 八月 2024 11:57:33 +0800
Subject: [PATCH] 添加接口,添加新的薪资查询和修改接口

---
 models/payroll_constitute.go |  103 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 95 insertions(+), 8 deletions(-)

diff --git a/models/payroll_constitute.go b/models/payroll_constitute.go
index b920aec..4c1d179 100644
--- a/models/payroll_constitute.go
+++ b/models/payroll_constitute.go
@@ -4,12 +4,13 @@
 	"fmt"
 	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
+	"math/rand"
 	"silkserver/constvar"
 	"silkserver/pkg/mysqlx"
 )
 
 type (
-	// PayrollConstitute 鍏跺畠琛ヨ创銆佸鎯�
+	// PayrollConstitute 钖祫鍒嗙被椤�
 	PayrollConstitute struct {
 		BaseModelInt
 		Cycle         string           `json:"cycle" gorm:"index;size:20;not null;comment:缁熻鍛ㄦ湡(yyyy-MM)"` //鏈堜唤
@@ -18,17 +19,19 @@
 		WorkTypeID    uint             `json:"workTypeID" gorm:"type:bigint(20);not null;comment:宸ョID"`      //宸ョID
 		WorkType      WorkTypeManage   `json:"workType" gorm:"foreignKey:WorkTypeID;references:ID"`          //宸ョID
 		WorkTypeCode  constvar.JobType `json:"workTypeCode" gorm:"size:255;not null;comment:宸ョ浠g爜"`           //宸ョ浠g爜
-		WorkTypeName  string           `json:"workTypeName" gorm:"size:255;not null;comment:宸ョ鍚嶇О"`           //宸ョ鍚嶇О
+		WorkTypeName  string           `json:"workTypeName" gorm:"size:255;comment:宸ョ鍚嶇О"`                    //宸ョ鍚嶇О
 		SalaryPlanId  uint             `json:"salaryPlanId" gorm:"type:bigint(20);not null;comment:钖祫鏂规ID"`  //钖祫鏂规ID
 		SalaryPlan    SalaryPlan       `json:"subsidyTypeName" gorm:"foreignKey:SalaryPlanId;references:ID"` //钖祫鏂规
-		SalaryFormula string           `json:"salaryFormula" gorm:"size:255;not null;comment:钖祫鏂规(缈昏瘧)"`      //钖祫鏂规
+		SalaryFormula string           `json:"salaryFormula" gorm:"size:255;comment:钖祫鏂规(缈昏瘧)"`               //钖祫鏂规
 		Amount        decimal.Decimal  `json:"amount" gorm:"type:decimal(12,4);comment:閲戦"`                  // 閲戦
 		CreatedBy     string           `json:"createdBy" gorm:"size:255;not null;comment:娣诲姞鑰�"`               // 娣诲姞鑰�(auto,鐢ㄦ埛id)
 	}
 
 	PayrollConstituteSearch struct {
 		PayrollConstitute
-		Monthly  string
+		Monthly string
+		Keyword string
+
 		Order    string
 		PageNum  int
 		PageSize int
@@ -41,7 +44,7 @@
 	return "silk_payroll_constitute"
 }
 
-// NewPayrollConstituteSearch 鍏跺畠琛ヨ创
+// NewPayrollConstituteSearch 钖祫鍒嗙被椤�
 func NewPayrollConstituteSearch() *PayrollConstituteSearch {
 	return &PayrollConstituteSearch{Orm: mysqlx.GetDB()}
 }
@@ -81,6 +84,16 @@
 	return slf
 }
 
+func (slf *PayrollConstituteSearch) SetWorkTypeCode(workTypeCode string) *PayrollConstituteSearch {
+	slf.WorkTypeCode = constvar.JobType(workTypeCode)
+	return slf
+}
+
+func (slf *PayrollConstituteSearch) SetSalaryPlanId(salaryPlanId uint) *PayrollConstituteSearch {
+	slf.SalaryPlanId = salaryPlanId
+	return slf
+}
+
 func (slf *PayrollConstituteSearch) SetWorkerID(workerID string) *PayrollConstituteSearch {
 	slf.WorkerID = workerID
 	return slf
@@ -114,16 +127,25 @@
 		db = db.Where("work_type_id = ?", slf.WorkTypeID)
 	}
 
-	if slf.WorkerID != "" {
-		db = db.Where("worker_id = ?", slf.WorkerID)
+	if slf.WorkTypeCode != "" {
+		db = db.Where("work_type_code = ?", slf.WorkTypeCode)
 	}
 
 	if slf.WorkerID != "" {
 		db = db.Where("worker_id = ?", slf.WorkerID)
+	}
+
+	if slf.SalaryPlanId > 0 {
+		db = db.Where("salary_plan_id = ?", slf.SalaryPlanId)
 	}
 
 	if slf.CreatedBy != "" {
-		db = db.Where("created_by = ?", slf.SalaryPlanId)
+		db = db.Where("created_by = ?", slf.CreatedBy)
+	}
+
+	if slf.Keyword != "" {
+		key := "%" + slf.Keyword + "%"
+		db = db.Where("work_type_name like ?", key)
 	}
 
 	db.Where("1 = 1")
@@ -304,3 +326,68 @@
 
 	return records, nil
 }
+
+type ConstituteGroup struct {
+	Cycle        string           `json:"cycle"`        //鏈堜唤
+	WorkerID     string           `json:"workerId"`     //鍛樺伐ID
+	WorkTypeCode constvar.JobType `json:"workTypeCode"` //宸ョ浠g爜
+	SalaryPlanId uint             `json:"salaryPlanId"` //钖祫鏂规ID
+}
+
+// ConstituteGroup 鏈湀缁熻浜嗗伐璧勭殑浜哄憳
+func (slf *PayrollConstituteSearch) ConstituteGroup(cg *ConstituteGroup) ([]*ConstituteGroup, error) {
+	var (
+		records = make([]*ConstituteGroup, 0)
+		db      = slf.Orm.Table(slf.TableName())
+	)
+	db.Select("cycle,worker_id,work_type_code,salary_plan_id")
+	db.Where("cycle = ?", cg.Cycle)
+	if cg.WorkerID != "" {
+		db.Where("worker_id = ?", cg.WorkerID)
+	}
+	if cg.WorkTypeCode != "" {
+		db.Where("work_type_code = ?", cg.WorkTypeCode)
+	}
+	if cg.SalaryPlanId > 0 {
+		db.Where("salary_plan_id = ?", cg.SalaryPlanId)
+	}
+	db.Group("cycle,worker_id,work_type_code,salary_plan_id")
+
+	return records, db.Find(&records).Error
+}
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *PayrollConstituteSearch) InitDefaultData() error {
+	var (
+		db          = slf.Orm.Table(slf.TableName())
+		total int64 = 0
+	)
+	date := "2024-06"
+	if err := db.Where("cycle = ?", date).Count(&total).Error; err != nil {
+		return err
+	}
+	if total != 0 {
+		return nil
+	}
+	data := make([]*PayrollConstitute, 0)
+	workers, _ := NewWorkerSearch().FindNotTotal()
+	for _, record := range workers {
+		r := rand.Intn(10)
+		data = append(data, &PayrollConstitute{
+			Cycle:        date,
+			WorkerID:     record.ID,
+			WorkTypeID:   uint(r + 1),
+			WorkTypeCode: constvar.JobTypeArr[r],
+			WorkTypeName: constvar.JobTypeMap[constvar.JobTypeArr[r]],
+			SalaryPlanId: 7,
+			Amount:       decimal.NewFromInt32(int32(r * 100)),
+			CreatedBy:    "auto",
+		})
+	}
+	err := slf.CreateBatch(data)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}

--
Gitblit v1.8.0