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