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