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) }