liujiandao
2024-04-30 1fab8f0f684d28ac8b996b345402b45e116eaed9
薪资报表查询与修改
6个文件已修改
124 ■■■■■ 已修改文件
controllers/report_forms_controller.go 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/request/report_forms_request.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/salary_details.go 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/salary_report_form.go 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/router.go 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
task/salary_statistics.go 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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, "参数解析失败,数据类型错误")
        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(&params)
    if err != nil {
        util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
        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, "更新成功")
}
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"`
}
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
}
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
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
}
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)