enterprise/common/model/staff_salary.go

69 lines
1.7 KiB
Go

package model
import (
"encoding/json"
butil "enterprise/base/util"
"github.com/smbrave/goutil"
"github.com/spf13/cast"
"strings"
)
type StaffSalary struct {
Id int64
CorpId int64
UserId int64
UserName string
Month string
Salary float64
AttendSalary float64
TargetSalary float64
AwardSalary float64
OtherSalary float64
ShouldDay int
AttendDay float64
HolidayDay float64
SocialDeduct float64
HouseDeduct float64
PersonalDeduct float64
OtherDeduct float64
CreateTime int64
UpdateTime int64
Extra string
Comment string
}
func (s *StaffSalary) GetShouldSalary() float64 {
return butil.FloatCut(s.AttendSalary + s.TargetSalary + s.AwardSalary + s.OtherSalary)
}
func (s *StaffSalary) GetRealSalary() float64 {
return butil.FloatCut(s.AttendSalary + s.TargetSalary + s.AwardSalary + s.OtherSalary -
s.SocialDeduct - s.HouseDeduct - s.PersonalDeduct - s.OtherDeduct)
}
func (s *StaffSalary) SetExtra(key string, value interface{}) {
var extra map[string]interface{}
json.Unmarshal([]byte(s.Extra), &extra)
extra[key] = value
s.Extra = goutil.EncodeJSON(extra)
}
type StaffSalarySort []*StaffSalary
func (s StaffSalarySort) Len() int {
return len(s)
}
func (s StaffSalarySort) Less(i, j int) bool {
var iExtra map[string]string
var jExtra map[string]string
json.Unmarshal([]byte(s[i].Extra), &iExtra)
json.Unmarshal([]byte(s[j].Extra), &jExtra)
return cast.ToInt64(strings.ReplaceAll(iExtra["entryDate"], "-", "")) < cast.ToInt64(strings.ReplaceAll(jExtra["entryDate"], "-", ""))
}
func (s StaffSalarySort) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}