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.

251 lines
9.8 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
for _, v := range contList {
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:丁)"`
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)
}