| | |
| | | // SalaryReportForms |
| | | // |
| | | // @Tags 报表管理 |
| | | // @Summary 薪资报表 |
| | | // @Summary 获取薪资报表 |
| | | // @Produce application/json |
| | | // @Param object body request.SalaryReportForms true "参数" |
| | | // @Param Authorization header string true "token" |
| | |
| | | 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 |
| | |
| | | } |
| | | 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, "参数解析失败,数据类型错误") |
| | | 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, "更新成功") |
| | | } |
| | |
| | | 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"` |
| | | } |
| | |
| | | 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 |
| | | } |
| | |
| | | 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()) |
| | | |
| | |
| | | } |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | | } |
| | |
| | | package task |
| | | |
| | | import ( |
| | | "errors" |
| | | "github.com/shopspring/decimal" |
| | | "silkserver/constvar" |
| | | "silkserver/models" |
| | |
| | | attendances, err := models.NewAttendanceManageSearch().SetMonth(month).FindNotTotal() |
| | | if err != nil { |
| | | logx.Error("SalaryStatistics 查询考勤统计 err: " + err.Error()) |
| | | return |
| | | } |
| | | if len(attendances) == 0 { |
| | | return |
| | | } |
| | | |
| | |
| | | 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) |
| | |
| | | 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) |
| | |
| | | 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 { |
| | |
| | | } |
| | | 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 { |
| | |
| | | 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 { |
| | |
| | | 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) |