HR管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
4.9 KiB

package personnelapi
import (
"hr_server/models/hrmodels"
"hr_server/overall"
"hr_server/overall/overallhandle"
"time"
)
/*
*
@ 作者: 秦东
@ 时间: 2023-06-20 14:23:27
@ 功能: 写入金蝶人员状态关键字
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func WriteKingKeyWork(name string, class int) {
var kingdeeCont hrmodels.KingdeeEmptype
err := kingdeeCont.GetCont(map[string]interface{}{"`name`": name, "`leibie`": class}, "`id`")
if err == nil {
return
}
if kingdeeCont.Id != 0 {
return
}
kingdeeCont.Name = name
kingdeeCont.LeiBie = class
kingdeeCont.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&kingdeeCont)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-06-20 15:05:11
@ 功能: 写入员工入职离职时间
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func EmployeeOnboardingAndResignation(userKey int64, changetype, starttime string, weiYi bool) {
entryList := []string{"预入职", "员工初始化"} //入职关键字
zhuanZheng := []string{"转正"} //转正关键字
depart := []string{"预离职", "离职", "批准辞职", "擅自离职", "即辞即走", "辞退", "培训期间离职"} //离职关键字
contract := []string{"合同到期"} //离职关键字
retire := []string{"退休"} //退休
if starttime != "" {
var manageDate overallhandle.DateTimeTotimes
manageDate.BaisStrToTime(starttime)
where := overallhandle.MapOut()
where["`userid`"] = userKey
if overallhandle.IsInTrue[string](changetype, entryList) {
//新入职
var newEntry hrmodels.UserEmpOnbRes
err := newEntry.GetCont(where, "`entry_time`")
if err != nil {
newEntry.UserId = userKey
newEntry.EntryTime = manageDate.AllTime
if weiYi {
newEntry.LeaveDate = manageDate.AllTime
}
newEntry.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&newEntry)
} else {
if manageDate.AllTime != newEntry.EntryTime {
editCont := overallhandle.MapOut()
editCont["`entry_time`"] = manageDate.AllTime
if weiYi {
editCont["`leave_date`"] = manageDate.AllTime
}
editCont["`time`"] = time.Now().Unix()
var newEditEntry hrmodels.UserEmpOnbRes
newEditEntry.EiteCont(where, editCont)
}
}
}
if overallhandle.IsInTrue[string](changetype, zhuanZheng) {
//转正
var newZhuanZheng hrmodels.UserEmpOnbRes
err := newZhuanZheng.GetCont(where, "`zhuan_zheng`")
if err != nil {
newZhuanZheng.UserId = userKey
newZhuanZheng.EntryTime = manageDate.AllTime
newZhuanZheng.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&newZhuanZheng)
} else {
if manageDate.AllTime != newZhuanZheng.EntryTime {
editCont := overallhandle.MapOut()
editCont["`zhuan_zheng`"] = manageDate.AllTime
editCont["`time`"] = time.Now().Unix()
var newEditZhuanZheng hrmodels.UserEmpOnbRes
newEditZhuanZheng.EiteCont(where, editCont)
}
}
}
if overallhandle.IsInTrue[string](changetype, depart) {
//离职
var newDepart hrmodels.UserEmpOnbRes
err := newDepart.GetCont(where, "`leave_date`")
if err != nil {
newDepart.UserId = userKey
newDepart.EntryTime = manageDate.AllTime
newDepart.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&newDepart)
} else {
if manageDate.AllTime != newDepart.EntryTime {
editCont := overallhandle.MapOut()
editCont["`leave_date`"] = manageDate.AllTime
editCont["`time`"] = time.Now().Unix()
var newEditDepart hrmodels.UserEmpOnbRes
newEditDepart.EiteCont(where, editCont)
}
}
}
if overallhandle.IsInTrue[string](changetype, contract) {
//合同到期
var newContract hrmodels.UserEmpOnbRes
err := newContract.GetCont(where, "`contract_time`")
if err != nil {
newContract.UserId = userKey
newContract.EntryTime = manageDate.AllTime
newContract.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&newContract)
} else {
if manageDate.AllTime != newContract.EntryTime {
editCont := overallhandle.MapOut()
editCont["`contract_time`"] = manageDate.AllTime
editCont["`time`"] = time.Now().Unix()
var newEditContract hrmodels.UserEmpOnbRes
newEditContract.EiteCont(where, editCont)
}
}
}
if overallhandle.IsInTrue[string](changetype, retire) {
//退休
var newRetire hrmodels.UserEmpOnbRes
err := newRetire.GetCont(where, "`retire_time`")
if err != nil {
newRetire.UserId = userKey
newRetire.EntryTime = manageDate.AllTime
newRetire.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&newRetire)
} else {
if manageDate.AllTime != newRetire.EntryTime {
editCont := overallhandle.MapOut()
editCont["`retire_time`"] = manageDate.AllTime
editCont["`time`"] = time.Now().Unix()
var newEditRetire hrmodels.UserEmpOnbRes
newEditRetire.EiteCont(where, editCont)
}
}
}
}
}