From 1fab8f0f684d28ac8b996b345402b45e116eaed9 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期二, 30 四月 2024 17:30:51 +0800 Subject: [PATCH] 薪资报表查询与修改 --- task/salary_statistics.go | 27 +++++--- controllers/request/report_forms_request.go | 9 +++ models/salary_report_form.go | 29 +++++++++ controllers/report_forms_controller.go | 35 +++++++++++ models/salary_details.go | 16 +++++ router/router.go | 8 ++ 6 files changed, 112 insertions(+), 12 deletions(-) diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go index 42d20ff..719eb0d 100644 --- a/controllers/report_forms_controller.go +++ b/controllers/report_forms_controller.go @@ -15,7 +15,7 @@ // SalaryReportForms // // @Tags 鎶ヨ〃绠$悊 -// @Summary 钖祫鎶ヨ〃 +// @Summary 鑾峰彇钖祫鎶ヨ〃 // @Produce application/json // @Param object body request.SalaryReportForms true "鍙傛暟" // @Param Authorization header string true "token" @@ -28,7 +28,8 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - reportForms, total, err := models.NewSalaryReportFormSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetPreload(true).Find() + reportForms, total, err := models.NewSalaryReportFormSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword). + SetMonth(params.Month).SetPreload(true).Find() if err != nil { util.ResponseFormat(c, code.RequestParamError, err) return @@ -54,3 +55,33 @@ } util.ResponseFormatList(c, code.Success, data, total) } + +// UpdateSalaryReportForms +// +// @Tags 鎶ヨ〃绠$悊 +// @Summary 淇敼钖祫鎶ヨ〃 +// @Produce application/json +// @Param object body request.UpdateSalaryReportForms true "鍙傛暟" +// @Param Authorization header string true "token" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-jl/v1/forms/updateSalaryReportForms [post] +func (slf ReportFormsController) UpdateSalaryReportForms(c *gin.Context) { + var params request.UpdateSalaryReportForms + err := c.BindJSON(¶ms) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") + return + } + first, err := models.NewSalaryReportFormSearch().SetMonth(params.Month).SetWorkerId(params.WorkerId).First() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, err) + return + } + err = models.NewSalaryDetailsSearch().SetSalaryTypeId(params.SalaryTypeId).SetSalaryReportFormId(first.ID). + UpdateByMap(map[string]interface{}{"amount": params.Amount}) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏇存柊澶辫触") + return + } + util.ResponseFormat(c, code.RequestParamError, "鏇存柊鎴愬姛") +} diff --git a/controllers/request/report_forms_request.go b/controllers/request/report_forms_request.go index 399ade5..b92e026 100644 --- a/controllers/request/report_forms_request.go +++ b/controllers/request/report_forms_request.go @@ -1,7 +1,16 @@ package request +import "github.com/shopspring/decimal" + type SalaryReportForms struct { PageInfo Month string `json:"month"` Keyword string `json:"keyword"` } + +type UpdateSalaryReportForms struct { + WorkerId string `json:"workerId"` + SalaryTypeId uint `json:"salaryTypeId"` + Amount decimal.Decimal `json:"amount"` + Month string `json:"month"` +} diff --git a/models/salary_details.go b/models/salary_details.go index 9427d3c..2375126 100644 --- a/models/salary_details.go +++ b/models/salary_details.go @@ -48,12 +48,28 @@ return slf } +func (slf *SalaryDetailsSearch) SetSalaryReportFormId(salaryReportFormId uint) *SalaryDetailsSearch { + slf.SalaryReportFormId = salaryReportFormId + return slf +} + +func (slf *SalaryDetailsSearch) SetSalaryTypeId(salaryTypeId uint) *SalaryDetailsSearch { + slf.SalaryTypeId = salaryTypeId + return slf +} + func (slf *SalaryDetailsSearch) build() *gorm.DB { var db = slf.Orm.Table(slf.TableName()) if slf.Preload { db = db.Model(SalaryDetails{}).Preload("SalaryType") } + if slf.SalaryReportFormId != 0 { + db = db.Where("salary_report_form_id = ?", slf.SalaryReportFormId) + } + if slf.SalaryTypeId != 0 { + db = db.Where("salary_type_id = ?", slf.SalaryTypeId) + } return db } diff --git a/models/salary_report_form.go b/models/salary_report_form.go index a03738b..4c2c08e 100644 --- a/models/salary_report_form.go +++ b/models/salary_report_form.go @@ -59,6 +59,16 @@ return slf } +func (slf *SalaryReportFormSearch) SetMonth(month string) *SalaryReportFormSearch { + slf.Month = month + return slf +} + +func (slf *SalaryReportFormSearch) SetWorkerId(workerId string) *SalaryReportFormSearch { + slf.WorkerId = workerId + return slf +} + func (slf *SalaryReportFormSearch) build() *gorm.DB { var db = slf.Orm.Table(slf.TableName()) @@ -67,6 +77,12 @@ } if slf.Keyword != "" { db = db.Where("worker_name like ? or worker_id like ?", "%"+slf.Keyword+"%", "%"+slf.Keyword+"%") + } + if slf.Month != "" { + db = db.Where("month = ?", slf.Month) + } + if slf.WorkerId != "" { + db = db.Where("worker_id = ?", slf.WorkerId) } return db @@ -159,6 +175,19 @@ return records, nil } +func (slf *SalaryReportFormSearch) First() (*SalaryReportForm, error) { + var ( + record = new(SalaryReportForm) + db = slf.build() + ) + + if err := db.First(record).Error; err != nil { + return record, err + } + + return record, nil +} + func (slf *SalaryReportFormSearch) Count() (int64, error) { var ( total int64 diff --git a/router/router.go b/router/router.go index c325619..db4e582 100644 --- a/router/router.go +++ b/router/router.go @@ -133,5 +133,13 @@ wpApi.DELETE("deleteWorkerPositionInfo/:id", wpCtl.DeleteWorkerPositionInfo) //鍒犻櫎鏈哄彴淇℃伅 } + //鎶ヨ〃绠$悊 + formsApi := r.Group(urlPrefix + "/forms") + formsCtl := new(controllers.ReportFormsController) + { + formsApi.POST("salaryReportForms", formsCtl.SalaryReportForms) //鑾峰彇钖祫鎶ヨ〃 + formsApi.POST("updateSalaryReportForms", formsCtl.UpdateSalaryReportForms) //淇敼钖祫鎶ヨ〃 + } + return r } diff --git a/task/salary_statistics.go b/task/salary_statistics.go index 254e306..98eb269 100644 --- a/task/salary_statistics.go +++ b/task/salary_statistics.go @@ -1,6 +1,7 @@ package task import ( + "errors" "github.com/shopspring/decimal" "silkserver/constvar" "silkserver/models" @@ -37,6 +38,9 @@ attendances, err := models.NewAttendanceManageSearch().SetMonth(month).FindNotTotal() if err != nil { logx.Error("SalaryStatistics 鏌ヨ鑰冨嫟缁熻 err: " + err.Error()) + return + } + if len(attendances) == 0 { return } @@ -83,6 +87,9 @@ logx.Error("SalaryStatistics 鏌ヨ宸ョ鐨勮柂璧勬柟妗堝拰鏂板绫诲瀷 err: " + err.Error()) return } + if len(workTypeManages) == 0 { + return + } for _, form := range reportForms { details := make([]*models.SalaryDetails, 0) issueSalary := decimal.NewFromInt(0) @@ -127,8 +134,8 @@ var cars []models.WorkerPosition err := models.NewWorkerPositionSearch().Orm.Table("silk_worker_position").Where("worker_id = ? and start_date >= ? and "+ "end_date <= ?", workerId, start, end).Find(&cars).Error - if err != nil { - return data, err + if err != nil || len(cars) == 0 { + return data, errors.New("鏌ヨ鏈哄彴绠$悊鍑洪敊") } endCarMap := make(map[int]int) groupMap := make(map[int]int) @@ -155,8 +162,8 @@ var yield []models.YieldRegister err = models.NewYieldRegisterSearch().Orm.Table("silk_yield_register").Where("workshop_number in (?) and group_number "+ "in (?) and create_time >= ? and create_time <= ?", workshops, groups, start, end).Find(&yield).Error - if err != nil { - return data, err + if err != nil || len(yield) == 0 { + return data, errors.New("鏌ヨ浜ч噺鐧昏琛ㄥ嚭閿�") } yieldRegisterIds := make([]uint, 0) for _, register := range yield { @@ -164,8 +171,8 @@ } yieldMap := make(map[string]decimal.Decimal) items, err := models.NewYieldRegisterItemSearch().SetYieldRegisterIds(yieldRegisterIds).SetCarNumbers(endCars).FindNotTotal() - if err != nil { - return data, err + if err != nil || len(items) == 0 { + return data, errors.New("鏌ヨ浜ч噺鐧昏璇︽儏琛ㄥ嚭閿�") } for _, register := range yield { for _, item := range items { @@ -179,8 +186,8 @@ markets := make([]string, 0) err = models.NewFinenessRegisterSearch().Orm.Table("silk_fineness_register").Where("workshop_number in (?) and workshop_group "+ "in (?) and finish_date >= ? and finish_date <= ?", workshops, groups, start, end).Find(&fineness).Error - if err != nil { - return data, err + if err != nil || len(fineness) == 0 { + return data, errors.New("鏌ヨ绾ゅ害鐧昏琛ㄥ嚭閿�") } finenessIds := make([]uint, 0) for _, register := range fineness { @@ -190,8 +197,8 @@ var checkItems []models.FinenessCheckItem err = models.NewFinenessCheckItemSearch().Orm.Table("silk_fineness_check_item").Where("fineness_register_id in (?) and "+ "position in (?)", finenessIds, endCars).Find(&checkItems).Error - if err != nil { - return data, err + if err != nil || len(checkItems) == 0 { + return data, errors.New("鏌ヨ绾ゅ害鐧昏璇︽儏琛ㄥ嚭閿�") } checkMap := make(map[string]string) marketMap := make(map[string]string) -- Gitblit v1.8.0