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.
261 lines
10 KiB
261 lines
10 KiB
package personnelapi
|
|
|
|
import (
|
|
"fmt"
|
|
"hr_server/models"
|
|
"hr_server/overall"
|
|
"hr_server/overall/overallhandle"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-06-16 09:00:47
|
|
@ 功能: 集团内部工作经历
|
|
@ 参数
|
|
|
|
#manKeyNum 员工Key
|
|
#contList 工作经历
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func EditWithinGroupWorkLog(manKeyNum int64, contList []insideHistoryer) {
|
|
defer synPro.Done()
|
|
if len(contList) > 0 && manKeyNum > 0 {
|
|
var topGroup int64 = 0 // 集团ID
|
|
var groupTopCont models.AdministrativeOrganization
|
|
groupTopCont.GetCont(map[string]interface{}{"superior": 0}, "id")
|
|
topGroup = groupTopCont.Id
|
|
//获取个人信息
|
|
var myCont models.PersonArchives
|
|
myCont.GetCont(map[string]interface{}{"key": manKeyNum}, "`company`", "`maindeparment`", "`admin_org`", "`sun_main_deparment`", "`position`", "`teamid`")
|
|
//1、判断是否存在集团工作经历
|
|
var oldLogId int64
|
|
overall.CONSTANT_DB_HR.Model(&models.InsideWorkHistory{}).Select("`id`").Where("`key` = ?", manKeyNum).Count(&oldLogId)
|
|
if oldLogId > 0 {
|
|
overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Delete(&models.InsideWorkHistory{})
|
|
}
|
|
//批量写入
|
|
var creadContList []models.InsideWorkHistory
|
|
zongLiang := len(contList)
|
|
for _, v := range contList {
|
|
weiYi := false
|
|
if zongLiang == 1 && myCont.EmpType > 11 {
|
|
weiYi = true
|
|
}
|
|
//写入员工入职离职时间
|
|
EmployeeOnboardingAndResignation(manKeyNum, v.ChangeType, v.StartTime, weiYi)
|
|
|
|
WorkShop := myCont.SunMainDeparment
|
|
if v.Workshop != "" {
|
|
var workShopCont models.AdministrativeOrganization
|
|
workShopErr := workShopCont.GetCont(map[string]interface{}{"kingdeeid": v.Workshop}, "id")
|
|
if workShopErr == nil {
|
|
WorkShop = workShopCont.Id //部室"`
|
|
}
|
|
}
|
|
WorkshopSection := myCont.AdminOrg
|
|
if v.WorkshopSection != "" {
|
|
var workShopSecCont models.AdministrativeOrganization
|
|
workShopSecErr := workShopSecCont.GetCont(map[string]interface{}{"kingdeeid": v.WorkshopSection}, "id")
|
|
if workShopSecErr == nil {
|
|
WorkshopSection = workShopSecCont.Id //工段"`
|
|
}
|
|
}
|
|
var wssCont models.AdministrativeOrganization
|
|
wssCont.GetCont(map[string]interface{}{"kingdeeid": v.WorkshopSection}, "id") //工段信息
|
|
if wssCont.Id == 0 {
|
|
wssCont.Id = myCont.AdminOrg
|
|
}
|
|
//集团
|
|
var groupContes models.AdministrativeOrganization
|
|
if v.Group != "" {
|
|
groupContes.GetCont(map[string]interface{}{"kingdeeid": v.Group}, "id")
|
|
if groupContes.Id == 0 {
|
|
groupContes.Id = topGroup
|
|
}
|
|
} else {
|
|
groupContes.Id = topGroup
|
|
}
|
|
//部门
|
|
var dempCont models.AdministrativeOrganization
|
|
dempCont.GetCont(map[string]interface{}{"kingdeeid": v.Department}, "id")
|
|
if dempCont.Id == groupContes.Id {
|
|
if wssCont.Id != 0 {
|
|
dempCont.Id = overallhandle.RecursionOrgLeve(wssCont.Id, 4)
|
|
}
|
|
}
|
|
if dempCont.Id == 0 {
|
|
dempCont.Id = myCont.MainDeparment
|
|
}
|
|
//公司
|
|
var compayCont models.AdministrativeOrganization
|
|
compayCont.GetCont(map[string]interface{}{"kingdeeid": v.Company}, "id")
|
|
if compayCont.Id == 0 {
|
|
compayCont.Id = myCont.Company
|
|
}
|
|
//职务
|
|
var postCont models.Position
|
|
postCont.GetCont(map[string]interface{}{"kingdeeid": v.Position}, "id")
|
|
if postCont.Id == 0 {
|
|
postCont.Id = myCont.Position
|
|
}
|
|
var creadCont models.InsideWorkHistory
|
|
creadCont.Key = manKeyNum //员工识别符"`
|
|
creadCont.Group = groupContes.Id //集团"`
|
|
creadCont.Company = compayCont.Id //公司"`
|
|
creadCont.Department = dempCont.Id // 部室"`
|
|
creadCont.WorkShop = WorkShop //二级部门或车间"`
|
|
creadCont.WorkshopSection = WorkshopSection //工段"`
|
|
creadCont.Position = postCont.Id //职位"`
|
|
creadCont.GradePositions = v.GradePositions //职等"`
|
|
startTime := time.Now().Unix()
|
|
if v.StartTime != "" {
|
|
var startTimeErr bool
|
|
startTime, startTimeErr = overallhandle.DateToTimeStamp(v.StartTime)
|
|
if !startTimeErr {
|
|
startTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.StartTime))
|
|
}
|
|
}
|
|
creadCont.StartTime = startTime //开始日期"`
|
|
|
|
state := 1
|
|
var endTime int64
|
|
if v.EndTime != "" {
|
|
if v.EndTime != "至今" && v.EndTime != "2199-12-31 00:00:00" && v.EndTime != "2199-12-31" && v.EndTime != "7258003200" {
|
|
var endTimeErr bool
|
|
endTime, endTimeErr = overallhandle.DateToTimeStamp(v.EndTime)
|
|
if !endTimeErr {
|
|
endTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.EndTime))
|
|
}
|
|
state = 2 //状态(1:启用;2:休眠;3:删除)"`
|
|
}
|
|
}
|
|
achangeTypeInted := changeTypeToInt(v.ChangeType)
|
|
if achangeTypeInted > 12 && achangeTypeInted <= 14 {
|
|
endTime = time.Now().Unix()
|
|
}
|
|
creadCont.EndTime = endTime //结束日期"`
|
|
creadCont.Team = myCont.TeamId //(1:长白;2:甲;3:乙;4:丙;5:丁)"`
|
|
WriteKingKeyWork(v.ChangeType, 2)
|
|
creadCont.ChangeType = changeTypeToInt(v.ChangeType) // 变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)"`
|
|
creadCont.Time = time.Now().Unix() //创建时间"`
|
|
creadCont.State = state //状态(1:启用;2:禁用;3:删除)"`
|
|
creadCont.AssignType = assignTypeToInt(v.AssignType) // 1、主职;2:兼职"`
|
|
creadContList = append(creadContList, creadCont)
|
|
}
|
|
if len(creadContList) > 0 {
|
|
overall.CONSTANT_DB_HR.Create(&creadContList)
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-06-16 09:40:31
|
|
@ 功能: 行政组织关系
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) UserAboutOrgList(c *gin.Context) {
|
|
var requestData overallhandle.ConstId
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
var workHistory []models.InsideWorkHistory
|
|
err = overall.CONSTANT_DB_HR.Where("`state` = 1 AND `end_time` = 0 AND `key` = ?", requestData.Id).Order("`assign_type` ASC").Order("`start_time` DESC").Find(&workHistory).Error
|
|
if err != nil {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
var sendList []SendOrgAboutPeople
|
|
for i := 0; i < len(workHistory); i++ {
|
|
var orgList []int64
|
|
var orgNameList []string
|
|
if !overallhandle.IsInTrue[int64](workHistory[i].Company, orgList) {
|
|
orgList = append(orgList, workHistory[i].Company)
|
|
var orgOne models.AdministrativeOrganization
|
|
orgOne.GetCont(map[string]interface{}{"`id`": workHistory[i].Company}, "`name`")
|
|
orgNameList = append(orgNameList, orgOne.Name)
|
|
}
|
|
if !overallhandle.IsInTrue[int64](workHistory[i].Department, orgList) {
|
|
orgList = append(orgList, workHistory[i].Department)
|
|
var orgTwo models.AdministrativeOrganization
|
|
orgTwo.GetCont(map[string]interface{}{"`id`": workHistory[i].Department}, "`name`")
|
|
orgNameList = append(orgNameList, orgTwo.Name)
|
|
}
|
|
if !overallhandle.IsInTrue[int64](workHistory[i].WorkShop, orgList) {
|
|
orgList = append(orgList, workHistory[i].WorkShop)
|
|
var orgTree models.AdministrativeOrganization
|
|
orgTree.GetCont(map[string]interface{}{"`id`": workHistory[i].WorkShop}, "`name`")
|
|
orgNameList = append(orgNameList, orgTree.Name)
|
|
}
|
|
if !overallhandle.IsInTrue[int64](workHistory[i].WorkshopSection, orgList) {
|
|
orgList = append(orgList, workHistory[i].WorkshopSection)
|
|
var orgTree models.AdministrativeOrganization
|
|
orgTree.GetCont(map[string]interface{}{"`id`": workHistory[i].WorkshopSection}, "`name`")
|
|
orgNameList = append(orgNameList, orgTree.Name)
|
|
}
|
|
var sendCont SendOrgAboutPeople
|
|
sendCont.Id = workHistory[i].Id //
|
|
sendCont.Key = workHistory[i].Key //员工识别符"`
|
|
sendCont.Group = workHistory[i].Group //集团
|
|
sendCont.Company = workHistory[i].Company //公司"`
|
|
sendCont.Department = workHistory[i].Department //部室"`
|
|
sendCont.WorkShop = workHistory[i].WorkShop //:二级部门或车间"`
|
|
sendCont.WorkshopSection = workHistory[i].WorkshopSection //工段"`
|
|
sendCont.Position = workHistory[i].Position //职位"`
|
|
sendCont.GradePositions = workHistory[i].GradePositions //职等"`
|
|
sendCont.StartTime = workHistory[i].StartTime //开始日期"`
|
|
sendCont.EndTime = workHistory[i].EndTime //结束日期"`
|
|
sendCont.Team = workHistory[i].Team //班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
|
|
sendCont.ChangeType = workHistory[i].ChangeType //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)"`
|
|
sendCont.Time = workHistory[i].Time //创建时间"`
|
|
sendCont.State = workHistory[i].State //状态(1:启用;2:禁用;3:删除)"`
|
|
sendCont.AssignType = workHistory[i].AssignType //1、主职;2:兼职"`
|
|
sendCont.JobId = workHistory[i].JobId //职务"`
|
|
if workHistory[i].Position != 0 {
|
|
var postCont models.Position
|
|
postCont.GetCont(map[string]interface{}{"`id`": workHistory[i].Position}, "`name`")
|
|
if workHistory[i].GradePositions != 0 {
|
|
sendCont.PostName = fmt.Sprintf("%v级%v", workHistory[i].GradePositions, postCont.Name)
|
|
} else {
|
|
sendCont.PostName = postCont.Name
|
|
}
|
|
}
|
|
if len(orgNameList) > 0 {
|
|
sendCont.OrgAllName = strings.Join(orgNameList, " / ")
|
|
}
|
|
sendCont.StartTimeStr = overallhandle.UnixTimeToDay(workHistory[i].StartTime, 4)
|
|
if workHistory[i].EndTime == 0 {
|
|
sendCont.EndTimeStr = "至今"
|
|
} else {
|
|
sendCont.EndTimeStr = overallhandle.UnixTimeToDay(workHistory[i].EndTime, 4)
|
|
}
|
|
|
|
sendList = append(sendList, sendCont)
|
|
}
|
|
overallhandle.Result(0, sendList, c)
|
|
}
|
|
|