1002
This commit is contained in:
parent
7da69a2b48
commit
3921d84177
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -4,5 +4,6 @@ import "enterprise/common/registry"
|
|||
|
||||
func init() {
|
||||
registry.RegisterSalaryCalculator("1000", NewSalaryCalculator1000)
|
||||
registry.RegisterSalaryCalculator("1002", NewSalaryCalculator1002)
|
||||
registry.RegisterSalaryCalculator("1000_wujiefeng", NewSalaryCalculator1000Wujiefeng)
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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, "")
|
||||
|
|
Loading…
Reference in New Issue