From 3921d84177dedeb2eb9fc8842181bade940c297d Mon Sep 17 00:00:00 2001 From: jiangyong Date: Wed, 5 Mar 2025 10:11:07 +0800 Subject: [PATCH] 1002 --- server/controller/staff.go | 27 ++++++++-------- server/service/staff_salary.go | 26 ++++++++-------- service/salary_calculator/init.go | 1 + .../salary_calculator_1000.go | 1 + .../salary_calculator_1002.go | 31 +++++++++++++++++++ service/staff_salary.go | 11 +++++++ 6 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 service/salary_calculator/salary_calculator_1002.go diff --git a/server/controller/staff.go b/server/controller/staff.go index b2aa505..abfefde 100644 --- a/server/controller/staff.go +++ b/server/controller/staff.go @@ -5,6 +5,7 @@ import ( "enterprise/server/session" "enterprise/worker" "github.com/gin-gonic/gin" + "github.com/spf13/cast" "net/http" "strings" "time" @@ -16,6 +17,11 @@ type Staff struct { func (s *Staff) Salary(ctx *gin.Context) { month := ctx.Query("month") tp := ctx.Query("type") + + cid := cast.ToInt64(ctx.Query("cid")) + if cid == 0 { + cid = 1000 + } if month == "" { month = time.Now().AddDate(0, -1, 0).Format("200601") } @@ -26,24 +32,19 @@ func (s *Staff) Salary(ctx *gin.Context) { serv := new(service.StaffSalary) if tp == service.StaffSalaryTypeAgent { - serv.Agent(month, ctx) + serv.Agent(cid, month, ctx) } else if tp == service.StaffSalaryTypeBank { - serv.Bank(month, ctx) + serv.Bank(cid, month, ctx) } else { - serv.Summary(month, ctx) + serv.Summary(cid, month, ctx) } } -func (s *Staff) SalaryHistory(ctx *gin.Context) { - -} - -func (s *Staff) SyncStaffInfo(ctx *gin.Context) { - - ctx.JSON(http.StatusOK, session.NewRspOk()) -} - func (s *Staff) SyncStaffSalary(ctx *gin.Context) { - go new(worker.Staff).SyncStaffSalary(1000, "") + corpId := cast.ToInt64(ctx.Query("cid")) + if corpId == 0 { + corpId = 1000 + } + go new(worker.Staff).SyncStaffSalary(corpId, "") ctx.JSON(http.StatusOK, session.NewRspOk()) } diff --git a/server/service/staff_salary.go b/server/service/staff_salary.go index d77b9b6..4a70a7a 100644 --- a/server/service/staff_salary.go +++ b/server/service/staff_salary.go @@ -26,9 +26,9 @@ var ( type StaffSalary struct { } -func (s *StaffSalary) Agent(month string, ctx *gin.Context) { +func (s *StaffSalary) Agent(cid int64, month string, ctx *gin.Context) { xls := ctx.Query("xls") - staffSalarys, err := dao.NewStaffSalaryDao().Query(1000, 0, month) + staffSalarys, err := dao.NewStaffSalaryDao().Query(cid, 0, month) if err != nil { panic(config.ErrDb.New().Append(err)) } @@ -69,15 +69,15 @@ func (s *StaffSalary) Agent(month string, ctx *gin.Context) { } else { links := make([]map[string]string, 0) links = append(links, map[string]string{ - "url": "/staff/salary?type=agent&xls=1", + "url": "/staff/salary?type=agent&xls=1&cid=" + cast.ToString(cid), "name": "下载", }) links = append(links, map[string]string{ - "url": "/staff/salary?type=bank", + "url": "/staff/salary?type=bank&cid=" + cast.ToString(cid), "name": "银行", }) links = append(links, map[string]string{ - "url": "/staff/salary?type=summary", + "url": "/staff/salary?type=summary&cid=" + cast.ToString(cid), "name": "汇总", }) ctx.HTML(http.StatusOK, "salary.html", gin.H{ @@ -89,9 +89,9 @@ func (s *StaffSalary) Agent(month string, ctx *gin.Context) { } } -func (s *StaffSalary) Bank(month string, ctx *gin.Context) { +func (s *StaffSalary) Bank(cid int64, month string, ctx *gin.Context) { xls := ctx.Query("xls") - staffSalarys, err := dao.NewStaffSalaryDao().Query(1000, 0, month) + staffSalarys, err := dao.NewStaffSalaryDao().Query(cid, 0, month) if err != nil { panic(config.ErrDb.New().Append(err)) } @@ -130,15 +130,15 @@ func (s *StaffSalary) Bank(month string, ctx *gin.Context) { } else { links := make([]map[string]string, 0) links = append(links, map[string]string{ - "url": "/staff/salary?type=bank&xls=1", + "url": "/staff/salary?type=bank&xls=1&cid=" + cast.ToString(cid), "name": "下载", }) links = append(links, map[string]string{ - "url": "/staff/salary?type=summary", + "url": "/staff/salary?type=summary&cid=" + cast.ToString(cid), "name": "汇总", }) links = append(links, map[string]string{ - "url": "/staff/salary?type=agent", + "url": "/staff/salary?type=agent&cid=" + cast.ToString(cid), "name": "代理", }) ctx.HTML(http.StatusOK, "salary.html", gin.H{ @@ -150,7 +150,7 @@ func (s *StaffSalary) Bank(month string, ctx *gin.Context) { } } -func (s *StaffSalary) Summary(month string, ctx *gin.Context) { +func (s *StaffSalary) Summary(cid int64, month string, ctx *gin.Context) { xls := ctx.Query("xls") staffSalarys, err := dao.NewStaffSalaryDao().Query(1000, 0, month) if err != nil { @@ -240,11 +240,11 @@ func (s *StaffSalary) Summary(month string, ctx *gin.Context) { } else { links := make([]map[string]string, 0) links = append(links, map[string]string{ - "url": "/staff/salary?type=bank", + "url": "/staff/salary?type=bank&cid=" + cast.ToString(cid), "name": "银行", }) links = append(links, map[string]string{ - "url": "/staff/salary?type=agent", + "url": "/staff/salary?type=agent&cid=" + cast.ToString(cid), "name": "代理", }) ctx.HTML(http.StatusOK, "salary.html", gin.H{ diff --git a/service/salary_calculator/init.go b/service/salary_calculator/init.go index 88b8f53..9f8f312 100644 --- a/service/salary_calculator/init.go +++ b/service/salary_calculator/init.go @@ -4,5 +4,6 @@ import "enterprise/common/registry" func init() { registry.RegisterSalaryCalculator("1000", NewSalaryCalculator1000) + registry.RegisterSalaryCalculator("1002", NewSalaryCalculator1002) registry.RegisterSalaryCalculator("1000_wujiefeng", NewSalaryCalculator1000Wujiefeng) } diff --git a/service/salary_calculator/salary_calculator_1000.go b/service/salary_calculator/salary_calculator_1000.go index 75b944d..ebacd61 100644 --- a/service/salary_calculator/salary_calculator_1000.go +++ b/service/salary_calculator/salary_calculator_1000.go @@ -43,6 +43,7 @@ func (s *SalaryCalculator1000) Calculate(salary *model.StaffSalary) { if userConfig.SalaryCalcutor == SalaryCalculatorOperation { s.operationCalculate(salary) } + } func (s *SalaryCalculator1000) operationCalculate(salary *model.StaffSalary) { diff --git a/service/salary_calculator/salary_calculator_1002.go b/service/salary_calculator/salary_calculator_1002.go new file mode 100644 index 0000000..644805f --- /dev/null +++ b/service/salary_calculator/salary_calculator_1002.go @@ -0,0 +1,31 @@ +package salary_calculator + +import ( + "enterprise/common/model" + "enterprise/common/registry" + "github.com/spf13/cast" +) + +type SalaryCalculator1002 struct { + corp *model.Corp + user *model.StaffUser +} + +func NewSalaryCalculator1002(corp *model.Corp, user *model.StaffUser) registry.SalaryCalculator { + return &SalaryCalculator1002{ + corp: corp, + user: user, + } +} + +func (s *SalaryCalculator1002) Calculate(salary *model.StaffSalary) { + userSlary := s.user.GetSalary() + if s.user.Status == model.StaffUserStatusAttach { //挂靠直接算工资 + salary.AttendSalary = cast.ToFloat64(userSlary.Base) + salary.TargetSalary = cast.ToFloat64(userSlary.Target) + return + } + + salary.AttendSalary = cast.ToFloat64(userSlary.Base) * (salary.AttendDay / float64(salary.ShouldDay)) + salary.TargetSalary = cast.ToFloat64(userSlary.Target) +} diff --git a/service/staff_salary.go b/service/staff_salary.go index a47e1e1..53a694b 100644 --- a/service/staff_salary.go +++ b/service/staff_salary.go @@ -1,6 +1,7 @@ package service import ( + butil "enterprise/base/util" "enterprise/common/dao" "enterprise/common/model" "enterprise/common/registry" @@ -83,9 +84,19 @@ func (s *StaffSalary) CalcSalary(salary *model.StaffSalary, month string) (*mode if calculator != nil { calculator.Calculate(salary) } + s.formatFloat(salary) return salary, nil } +func (s *StaffSalary) formatFloat(salary *model.StaffSalary) { + salary.AwardSalary = butil.FloatCut(salary.AwardSalary) + salary.AttendSalary = butil.FloatCut(salary.AttendSalary) + salary.TargetSalary = butil.FloatCut(salary.TargetSalary) + salary.OtherSalary = butil.FloatCut(salary.OtherSalary) + salary.AttendDay = butil.FloatCut(salary.AttendDay) + salary.HolidayDay = butil.FloatCut(salary.HolidayDay) +} + func (s *StaffSalary) getRealVacationDay(month string) (float64, float64) { // 休假申请 approveVacations, err := dao.NewApprovalVacationDao().GetByUsername(s.user.CorpId, s.user.Username, month, "")