69 lines
1.7 KiB
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]
|
|
}
|