diff --git a/api/version1/personnelapi/controll.go b/api/version1/personnelapi/controll.go index 9170dc6..dea996e 100644 --- a/api/version1/personnelapi/controll.go +++ b/api/version1/personnelapi/controll.go @@ -248,6 +248,44 @@ func changeTypeToInt(emp string) int { return 1 } } +func changeTypeToStr(emp int) string { + switch emp { + case 1: + return "预入职" + case 2: + return "雇佣入职" + case 3: + return "转正" + case 4: + return "晋升" + case 5: + return "降级" + case 6: + return "职等调整" + case 7: + return "调动调入" + case 8: + return "跨公司调动调入" + case 9: + return "借调" + case 10: + return "平调" + case 11: + return "兼职" + case 12: + return "预离职" + case 13: + return "离职" + case 14: + return "退休" + case 15: + return "返聘" + case 16: + return "员工初始化" + default: + return "预入职" + } +} /* 学历 diff --git a/api/version1/personnelapi/mancont.go b/api/version1/personnelapi/mancont.go new file mode 100644 index 0000000..0709e15 --- /dev/null +++ b/api/version1/personnelapi/mancont.go @@ -0,0 +1,105 @@ +package personnelapi + +import ( + "hr_server/models" + "hr_server/overall/overallhandle" + "time" + + "github.com/gin-gonic/gin" +) + +/* +* +@ 作者: 秦东 +@ 时间: 2022-11-30 14:05:01 +@ 功能:编辑人员行政组织关系 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *StaffApi) EditManOrgCont(c *gin.Context) { + var requestData EditOrgPeople + err := c.ShouldBindJSON(&requestData) + if err != nil { + overallhandle.Result(1, err, c, "数据格式错误!") + return + } + if requestData.Id == "" { + overallhandle.Result(1, requestData, c, "参数错误!请检查后重新提交!") + return + } + if requestData.OrgId <= 0 { + overallhandle.Result(1, requestData, c, "请选择归属行政组织!") + return + } + if requestData.Position == 0 { + overallhandle.Result(1, requestData, c, "请选择归属岗位!") + return + } + if requestData.JobId == 0 { + overallhandle.Result(1, requestData, c, "请选择职务!") + return + } + if requestData.TeamId == 0 { + overallhandle.Result(1, requestData, c, "请选择班组!") + return + } + if requestData.JobLeve == 0 { + requestData.JobLeve = 3 + } + wher := map[string]interface{}{"`id`": requestData.Id} + var myCont models.PersonArchives + err = myCont.GetCont(wher, "`id`", "`admin_org`", "`position`", "`job_id`", "`job_leve`", "`teamid`") + if err != nil { + overallhandle.Result(1, err, c, "没有该人员信息!") + return + } + saveData := overallhandle.MapOut() + if requestData.OrgId != myCont.AdminOrg { + _, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(requestData.OrgId) + if companyId != 0 { + saveData["company"] = companyId + } + if departmentId != 0 { + saveData["maindeparment"] = departmentId + } + if sunDepartId != 0 { + saveData["sun_main_deparment"] = sunDepartId + } + saveData["admin_org"] = requestData.OrgId + } + if requestData.Position != myCont.Position { + saveData["position"] = requestData.Position + } + if requestData.JobId != myCont.JobId { + var jobCont models.DutiesClassLeve + jobCont.GetCont(map[string]interface{}{"`d_id`": requestData.Id}, "`c_id`") + saveData["job_class"] = jobCont.ClassId + saveData["job_id"] = requestData.JobId + } + if requestData.JobLeve != myCont.JobLeve { + saveData["job_leve"] = requestData.JobLeve + } + if requestData.TeamId != myCont.TeamId { + saveData["teamid"] = requestData.TeamId + } + if len(saveData) < 1 { + overallhandle.Result(0, saveData, c) + return + } + saveData["eite_time"] = time.Now().Unix() + err = myCont.EiteCont(wher, saveData) + if err != nil { + overallhandle.Result(106, err, c) + return + } + overallhandle.Result(0, err, c) +} diff --git a/api/version1/personnelapi/staff.go b/api/version1/personnelapi/staff.go index 9928850..f100724 100644 --- a/api/version1/personnelapi/staff.go +++ b/api/version1/personnelapi/staff.go @@ -1699,3 +1699,194 @@ func (s *StaffApi) AddPeopleCont(c *gin.Context) { // overallhandle.Result(0, addErr, c) // } } + +/* +* +@ 作者: 秦东 +@ 时间: 2022-11-30 09:29:27 +@ 功能: 计算资料完整度 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *StaffApi) GetPeopleDataIntegrity(c *gin.Context) { + var requestData overallhandle.GetId + c.ShouldBindJSON(&requestData) + if requestData.IdStr == "" && requestData.Id == 0 { + overallhandle.Result(101, requestData, c) + return + } + if requestData.IdStr != "" { + idInt, idErr := strconv.ParseInt(requestData.IdStr, 10, 64) + if idErr == nil { + requestData.Id = idInt + } + } + + var scoreVal float64 + + //计算主表 + var mainTable models.PersonArchives + err := mainTable.GetCont(map[string]interface{}{"`id`": requestData.Id}) + wher := map[string]interface{}{"`key`": mainTable.Key} + if err == nil { + var mainScore float64 + if mainTable.Number != "" { + mainScore = mainScore + 1 + } + if mainTable.Name != "" { + mainScore = mainScore + 1 + } + if mainTable.Icon != "" { + mainScore = mainScore + 1 + } + if mainTable.HireClass != 0 { + mainScore = mainScore + 1 + } + if mainTable.EmpType != 0 { + mainScore = mainScore + 1 + } + if mainTable.AdminOrg != 0 { + mainScore = mainScore + 1 + } + if mainTable.Position != 0 { + mainScore = mainScore + 1 + } + if mainTable.JobId != 0 { + mainScore = mainScore + 1 + } + if mainTable.JobClass != 0 { + mainScore = mainScore + 1 + } + if mainTable.JobLeve != 0 { + mainScore = mainScore + 1 + } + if mainTable.Wechat != "" || mainTable.WorkWechat != "" { + mainScore = mainScore + 1 + } + if mainTable.TeamId != 0 { + mainScore = mainScore + 1 + } + if mainScore == 12 { + scoreVal = scoreVal + 30 + } else { + scoreVal = scoreVal + (mainScore/12)*30 + fmt.Printf("main----121--->%v-------->%v\n", mainScore, (mainScore / 12)) + + } + fmt.Printf("main----12--->%v-------->%v\n", mainScore, scoreVal) + } + + //人员补充资料 + var manContTable models.PersonnelContent + err = manContTable.GetCont(wher) + if err == nil { + var mainScoreEs float64 + if manContTable.Idcardno != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Mobilephone != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Email != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Gender != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Birthday != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Myfolk != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Nativeplace != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Idcardstartdate != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Idcardenddate != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Idcardaddress != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.IdcardIssued != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Health != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Maritalstatus != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Currentresidence != "" { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Constellation != 0 { + mainScoreEs = mainScoreEs + 1 + } + + if manContTable.Isveterans == 1 { + if manContTable.Veteransnumber != "" { + mainScoreEs = mainScoreEs + 1 + } + } + if manContTable.Jobstartdate != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Entrydate != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Probationperiod != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.Planformaldate != 0 { + mainScoreEs = mainScoreEs + 1 + } + if manContTable.PoliticalOutlook != 0 { + mainScoreEs = mainScoreEs + 1 + } + if mainScoreEs == 21 { + scoreVal = scoreVal + 30 + } else { + scoreVal = scoreVal + (mainScoreEs/21)*30 + } + } + //判断是否有紧急联系人 + var emeContAct models.EmergencyContact + err = emeContAct.GetCont(wher, "`id`") + if err == nil { + scoreVal = scoreVal + 10 + } + //判断是否有家庭成员 + var familyMemCont models.FamilyMembers + err = familyMemCont.GetCont(wher, "`id`") + if err == nil { + scoreVal = scoreVal + 10 + } + //判断是否有教育经历 + var perEducationCont models.PersonnelEducation + err = perEducationCont.GetCont(wher, "`id`") + if err == nil { + scoreVal = scoreVal + 10 + } + //判断是否有工作经历 + var workHistory models.WorkHistory + err = workHistory.GetCont(wher, "`id`") + if err == nil { + scoreVal = scoreVal + 10 + } + fmt.Printf("scoreVal------->%v\n", scoreVal) + scoreVal = overallhandle.DecimalEs(scoreVal, 2) + overallhandle.Result(0, scoreVal, c) +} diff --git a/api/version1/personnelapi/staffarchives.go b/api/version1/personnelapi/staffarchives.go index a1f0ee5..ebf8f6f 100644 --- a/api/version1/personnelapi/staffarchives.go +++ b/api/version1/personnelapi/staffarchives.go @@ -7,6 +7,7 @@ import ( "hr_server/overall" "hr_server/overall/overallhandle" "strconv" + "strings" "time" "github.com/gin-gonic/gin" @@ -1533,11 +1534,35 @@ func (s *StaffApi) WorkHistoryList(c *gin.Context) { } var insideWorkHistoryList []models.WorkHistory gormDb := overall.CONSTANT_DB_HR.Model(&models.WorkHistory{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id) - err := gormDb.Order("`id` desc").Find(&insideWorkHistoryList).Error + err := gormDb.Order("`entrytime` desc").Order("`id` desc").Find(&insideWorkHistoryList).Error if err != nil { overallhandle.Result(107, err, c) } else { - overallhandle.Result(0, insideWorkHistoryList, c) + var sendDataList []outWorkHistory + for _, w := range insideWorkHistoryList { + var sendCont outWorkHistory + sendCont.Id = w.Id // + sendCont.Number = w.Number // 工号"` + sendCont.Key = w.Key // 身份识别"` + sendCont.Company = w.Company // 公司"` + sendCont.Deparment = w.Deparment // 部门"` + sendCont.Job = w.Job // 职务"` + sendCont.EntryTime = w.EntryTime // 入职时间"` + sendCont.Leavedate = w.Leavedate // 离职日期"` + sendCont.Witness = w.Witness // 证明人"` + sendCont.WitnessTel = w.WitnessTel // 证明人电话"` + sendCont.Remarks = w.Remarks // 备注"` + sendCont.Time = w.Time // 创建时间"` + sendCont.State = w.State // 状态(1:启用;2:禁用;3:删除)"` + sendCont.StartTime = overallhandle.UnixTimeToDay(w.EntryTime, 14) //开始时间 + endTimeStr := "至今" + if w.Leavedate != 0 { + endTimeStr = overallhandle.UnixTimeToDay(w.Leavedate, 14) + } + sendCont.EndTime = endTimeStr //结束时间 + sendDataList = append(sendDataList, sendCont) + } + overallhandle.Result(0, sendDataList, c) } } @@ -1555,7 +1580,28 @@ func (s *StaffApi) PersonnelEducationList(c *gin.Context) { if err != nil { overallhandle.Result(107, err, c) } else { - overallhandle.Result(0, insideWorkHistoryList, c) + var list []OutpersonCont + for _, v := range insideWorkHistoryList { + var cont OutpersonCont + cont.Id = v.Id //ID"` + cont.Number = v.Number //员工工号"` + cont.Education = v.Education // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"` + cont.GraduationSchool = v.GraduationSchool //毕业学校"` + cont.Subject = v.Subject //专业"` + cont.AdmissionTime = v.AdmissionTime //入学时间"` + cont.GraduationTime = v.GraduationTime //毕业时间"` + cont.Time = v.Time //写入时间"` + cont.Level = v.Level // 学历类型(1:普通;2:第一学历;3:最高学历)"` + cont.AcademicDegree = v.AcademicDegree // 学位(1:无;2:学士;3:硕士;4:博士)"` + cont.Key = v.Key //key"` + cont.State = v.State // 状态(1:启用;2:禁用;3:删除)"` + cont.AcademicDegreeCn = v.AcademicDegreeCn //学位中文说明"` + cont.EducationCn = v.EducationCn //学历中文说明"` + cont.AdmissionTimeStr = overallhandle.UnixTimeToDay(v.AdmissionTime, 14) + cont.GraduationTimeStr = overallhandle.UnixTimeToDay(v.GraduationTime, 14) + list = append(list, cont) + } + overallhandle.Result(0, list, c) } } @@ -1955,3 +2001,405 @@ func (s *StaffApi) ArchivesListExporCsv(c *gin.Context) { overallhandle.Result(1, filename, c) } } + +/** +@ 作者: 秦东 +@ 时间: 2022-11-27 10:04:01 +@ 功能: 获取单个人员档案 +@ 参数 + # +@ 返回值 + # +@ 方法原型 + # +*/ + +func (s *StaffApi) GetArchivesCon(c *gin.Context) { + var requestData overallhandle.GetId + c.ShouldBindJSON(&requestData) + if requestData.IdStr == "" && requestData.Id == 0 { + overallhandle.Result(101, requestData, c) + return + } + if requestData.IdStr != "" { + idInt, idErr := strconv.ParseInt(requestData.IdStr, 10, 64) + if idErr == nil { + requestData.Id = idInt + } + } + var satffCont models.ManCont + staffErr := satffCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) + if staffErr != nil { + overallhandle.Result(105, staffErr, c) + return + } + var staffCenter staffArchivesCont + staffCenter.ManCont = satffCont + staffCenter.IdStr = strconv.FormatInt(satffCont.Id, 10) + if satffCont.Birthday != 0 { + staffCenter.BirthdayTime = overallhandle.UnixTimeToDay(satffCont.Birthday, 14) //生日 + } + if satffCont.Idcardstartdate != 0 { + staffCenter.IdCardStartTimeData = overallhandle.UnixTimeToDay(satffCont.Idcardstartdate, 14) //身份证有效期开始时间 + } + if satffCont.Idcardenddate != 0 { + staffCenter.IdCardEndTimeData = overallhandle.UnixTimeToDay(satffCont.Idcardenddate, 14) //身份证有效期结束时间 + } + if satffCont.Entrydate != 0 { + staffCenter.EntrydateTime = overallhandle.UnixTimeToDay(satffCont.Entrydate, 14) //入职日期 + } + if satffCont.Planformaldate != 0 { + staffCenter.PlanformaldateTime = overallhandle.UnixTimeToDay(satffCont.Planformaldate, 14) //预计转正日期 + } + + if satffCont.Jobstartdate != 0 { + staffCenter.JobstartdateStr = overallhandle.UnixTimeToDay(satffCont.Jobstartdate, 14) //参加工作日期 + } + + if satffCont.Entrydate != 0 { + staffCenter.EntrydateStr = overallhandle.UnixTimeToDay(satffCont.Entrydate, 14) //入职日期 + } + + // if satffCont.Company != 0 { + // var groupInfos models.AdministrativeOrganization + // groupInfos.GetCont(map[string]interface{}{"`id`": satffCont.Company}, "`name`") + // staffCenter.CompanyName = groupInfos.Name + // } + // if satffCont.MainDeparment != 0 { + // var demperMainInfos models.AdministrativeOrganization + // demperMainInfos.GetCont(map[string]interface{}{"`id`": satffCont.MainDeparment}, "`name`") + // staffCenter.MainDeparmentName = demperMainInfos.Name + // } + // if satffCont.AdminOrg != 0 { + // var adminOrg models.AdministrativeOrganization + // adminOrg.GetCont(map[string]interface{}{"`id`": satffCont.AdminOrg}, "`name`") + // staffCenter.AdminOrgName = adminOrg.Name + // } + if satffCont.Position != 0 { + var postisInfo models.Position + postisInfo.GetCont(map[string]interface{}{"`id`": satffCont.Position}, "`name`", "`person_in_charge`") + staffCenter.PositionName = postisInfo.Name + staffCenter.PersonInCharge = postisInfo.PersonInCharge + } + if satffCont.JobClass != 0 { + var jobsInfo models.JobClass + jobsInfo.GetCont(map[string]interface{}{"`id`": satffCont.JobClass}, "`name`") + staffCenter.JobClassName = jobsInfo.Name + } + if satffCont.JobId != 0 { + var dutiresInfo models.Duties + dutiresInfo.GetCont(map[string]interface{}{"`id`": satffCont.JobId}, "`name`") + staffCenter.JobIdName = dutiresInfo.Name + } + + if satffCont.Company != 0 { + var comCont models.AdministrativeOrganization + comCont.GetCont(map[string]interface{}{"`id`": satffCont.Company}, "`name`") + staffCenter.CompanyName = comCont.Name //公司名称 + if overallhandle.IsInTrue[int64](satffCont.Company, staffCenter.AllOrgList) == false { + staffCenter.AllOrgList = append(staffCenter.AllOrgList, satffCont.Company) + } + + } + if satffCont.MainDeparment != 0 { + var mainDepartCont models.AdministrativeOrganization + mainDepartCont.GetCont(map[string]interface{}{"`id`": satffCont.MainDeparment}, "`name`") + staffCenter.MainDeparmentName = mainDepartCont.Name //主部门 + if overallhandle.IsInTrue[int64](satffCont.MainDeparment, staffCenter.AllOrgList) == false { + staffCenter.AllOrgList = append(staffCenter.AllOrgList, satffCont.MainDeparment) + } + } + if satffCont.SunMainDeparment != 0 { + var sunDepartCont models.AdministrativeOrganization + sunDepartCont.GetCont(map[string]interface{}{"`id`": satffCont.SunMainDeparment}, "`name`") + staffCenter.SunMainDeparmentName = sunDepartCont.Name //二级部门 + if overallhandle.IsInTrue[int64](satffCont.SunMainDeparment, staffCenter.AllOrgList) == false { + staffCenter.AllOrgList = append(staffCenter.AllOrgList, satffCont.SunMainDeparment) + } + } + if satffCont.TeamId != 0 { + var teamCont models.TeamGroup + teamCont.GetCont(map[string]interface{}{"`id`": satffCont.TeamId}, "`name`") + staffCenter.TeamName = teamCont.Name //班组名 + } + + if satffCont.Company != staffCenter.AdminOrg && satffCont.MainDeparment != staffCenter.AdminOrg && satffCont.SunMainDeparment != staffCenter.AdminOrg { + var orgCont models.AdministrativeOrganization + orgCont.GetCont(map[string]interface{}{"`id`": satffCont.AdminOrg}, "`name`") + staffCenter.WorkPostName = orgCont.Name //工段 + if overallhandle.IsInTrue[int64](satffCont.AdminOrg, staffCenter.AllOrgList) == false { + staffCenter.AllOrgList = append(staffCenter.AllOrgList, satffCont.AdminOrg) + } + } + + staffCenter.PoliticalOutlookName = overallhandle.PolitiToString(satffCont.PoliticalOutlook) + + overallhandle.Result(0, staffCenter, c) + // return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2022-11-27 10:28:31 +@ 功能: 获取员工主信息 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *StaffApi) GetPeopleMainCont(c *gin.Context) { + var requestData overallhandle.GetId + c.ShouldBindJSON(&requestData) + if requestData.IdStr == "" && requestData.Id == 0 { + overallhandle.Result(101, requestData, c) + return + } + if requestData.IdStr != "" { + idInt, idErr := strconv.ParseInt(requestData.IdStr, 10, 64) + if idErr == nil { + requestData.Id = idInt + } + } + var myCont models.PersonArchives + err := myCont.GetCont(map[string]interface{}{"`id`": requestData.Id}, "`id`", "`number`", "`name`", "`icon`", "`admin_org`", "`position`", "`teamid`", "`job_id`", "`job_class`", "`job_leve`", "`wechat`", "`work_wechat`", "`key`", "`company`", "`maindeparment`", "`sun_main_deparment`") + if err != nil { + overallhandle.Result(107, requestData, c) + return + } + var myInfo MyMainCont + myInfo.Id = strconv.FormatInt(myCont.Id, 10) + myInfo.Key = strconv.FormatInt(myCont.Key, 10) //员工key + myInfo.Number = myCont.Number //员工工号 + myInfo.Name = myCont.Name //姓名 + myInfo.Icon = myCont.Icon //头像 + myInfo.AdminOrg = myCont.AdminOrg //所属行政组织 + myInfo.TeamId = myCont.TeamId //班组 + myInfo.Position = myCont.Position //职位 + myInfo.JobClass = myCont.JobClass //职务分类 + myInfo.JobId = myCont.JobId //职务 + myInfo.JobLeve = myCont.JobLeve //职务等级 + myInfo.Wechat = myCont.Wechat //微信UserId"` + myInfo.WorkWechat = myCont.WorkWechat //`企业微信UserId"` + if myCont.Company != 0 { + var comCont models.AdministrativeOrganization + comCont.GetCont(map[string]interface{}{"`id`": myCont.Company}, "`name`") + myInfo.CompanyName = comCont.Name //公司名称 + } + if myCont.MainDeparment != 0 { + var mainDepartCont models.AdministrativeOrganization + mainDepartCont.GetCont(map[string]interface{}{"`id`": myCont.MainDeparment}, "`name`") + myInfo.MainDeparmentName = mainDepartCont.Name //主部门 + } + if myCont.SunMainDeparment != 0 { + var sunDepartCont models.AdministrativeOrganization + sunDepartCont.GetCont(map[string]interface{}{"`id`": myCont.SunMainDeparment}, "`name`") + myInfo.SunMainDeparmentName = sunDepartCont.Name //二级部门 + } + if myCont.TeamId != 0 { + var teamCont models.TeamGroup + teamCont.GetCont(map[string]interface{}{"`id`": myCont.TeamId}, "`name`") + myInfo.TeamName = teamCont.Name //班组名 + } + + if myCont.Company != myInfo.AdminOrg && myCont.MainDeparment != myInfo.AdminOrg && myCont.SunMainDeparment != myInfo.AdminOrg { + var orgCont models.AdministrativeOrganization + orgCont.GetCont(map[string]interface{}{"`id`": myCont.AdminOrg}, "`name`") + myInfo.WorkPostName = orgCont.Name //工段 + } + if myCont.Position != 0 { + var postCont models.Position + postCont.GetCont(map[string]interface{}{"`id`": myCont.Position}, "`name`") + myInfo.PositionName = postCont.Name //岗位名称 + } + if myCont.JobClass != 0 { + var jobClassCont models.JobClass + jobClassCont.GetCont(map[string]interface{}{"`id`": myCont.JobClass}, "`name`") + myInfo.JobClassName = jobClassCont.Name //职务分类 + } + if myCont.JobId != 0 { + var jobCont models.Duties + jobCont.GetCont(map[string]interface{}{"`id`": myCont.JobId}, "`name`") + myInfo.JobName = jobCont.Name //职务名称 + } + switch myCont.JobLeve { + case 1: + myInfo.JobLeveName = "一级" + case 2: + myInfo.JobLeveName = "二级" + case 3: + myInfo.JobLeveName = "三级" + default: + myInfo.JobLeveName = "" + } + var manContEs models.PersonnelContent + manContEs.GetCont(map[string]interface{}{"`key`": myCont.Key}, "`mobilephone`") + myInfo.Tel = manContEs.Mobilephone + overallhandle.Result(0, myInfo, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2022-11-29 13:28:34 +@ 功能: 获取集团内部工作经历列表 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *StaffApi) GetInsideWorkHistoryList(c *gin.Context) { + var requestData allocationOfRightsToRole + c.ShouldBindJSON(&requestData) + if requestData.Id == "" { + overallhandle.Result(101, requestData.Id, c) + return + } + var insideWorkHistoryList []models.InsideWorkHistory + gormDb := overall.CONSTANT_DB_HR.Model(&models.InsideWorkHistory{}).Where("`state` = 1 AND `key` = ?", requestData.Id) + err := gormDb.Order("end_time asc").Order("start_time desc").Order("`id` desc").Find(&insideWorkHistoryList).Error + if err != nil { + overallhandle.Result(107, err, c) + return + } + // orgId := + var sendData []outInsetWork + for _, v := range insideWorkHistoryList { + orgId := v.Group + if v.Company != 0 { + orgId = v.Company + } + if v.Department != 0 { + orgId = v.Department + } + if v.WorkShop != 0 { + orgId = v.WorkShop + } + if v.WorkshopSection != 0 { + orgId = v.WorkshopSection + } + _, companyId, departmentId, sunDepartId, workShopId := overallhandle.GetOrgStructure(orgId) + allOrgName := "" + if companyId != 0 { + var companyCont models.AdministrativeOrganization + errCom := companyCont.GetCont(map[string]interface{}{"`id`": companyId}, "`name`") + if errCom == nil { + allOrgName = companyCont.Name + } + } + if departmentId != 0 { + var departCont models.AdministrativeOrganization + errCom := departCont.GetCont(map[string]interface{}{"`id`": departmentId}, "`name`") + if errCom == nil { + if allOrgName != "" { + allOrgName = fmt.Sprintf("%v / %v", allOrgName, departCont.Name) + } else { + allOrgName = departCont.Name + } + } + } + if sunDepartId != 0 { + var sunDepartCont models.AdministrativeOrganization + errCom := sunDepartCont.GetCont(map[string]interface{}{"`id`": sunDepartId}, "`name`") + if errCom == nil { + if allOrgName != "" { + allOrgName = fmt.Sprintf("%v / %v", allOrgName, sunDepartCont.Name) + } else { + allOrgName = sunDepartCont.Name + } + } + } + if workShopId != 0 { + var workShopCont models.AdministrativeOrganization + errCom := workShopCont.GetCont(map[string]interface{}{"`id`": workShopId}, "`name`") + if errCom == nil { + if allOrgName != "" { + allOrgName = fmt.Sprintf("%v / %v", allOrgName, workShopCont.Name) + } else { + allOrgName = workShopCont.Name + } + } + } + + var snedCont outInsetWork + snedCont.StartTime = overallhandle.UnixTimeToDay(v.StartTime, 14) //开始时间 + endTimeStr := "至今" + if v.EndTime != 0 { + endTimeStr = overallhandle.UnixTimeToDay(v.EndTime, 14) + } + snedCont.EndTime = endTimeStr //结束时间 + snedCont.AllOrgName = allOrgName //性质组织全称 + snedCont.OrgId = orgId //行政组织ID + snedCont.PostId = v.Position //职务ID + snedCont.PostLevel = v.GradePositions //职务等级 + var postCont models.Position + postCont.GetCont(map[string]interface{}{"`id`": v.Position}, "`name`", "`superior`") + snedCont.PostName = postCont.Name //职务名称 + snedCont.TeamId = v.Team //班组ID + var teamCont models.TeamGroup + teamCont.GetCont(map[string]interface{}{"`id`": v.Team}, "`name`") + snedCont.TeamName = teamCont.Name //班组名称 + snedCont.ChangeType = v.ChangeType //调动类型 + snedCont.ChangeTypeName = changeTypeToStr(v.ChangeType) + snedCont.AssignType = v.AssignType //1、主职;2:兼职 + + // snedCont.SuperiorPostName string //上级职务名称 + // snedCont.SuperiorManName []string //上级人员 + // snedCont.SubordinatesCount int //下属熟练 + sendData = append(sendData, snedCont) + } + overallhandle.Result(0, sendData, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2022-11-29 14:51:58 +@ 功能: 获取职务名称,职务人员,下属数量 +@ 参数 + + #orgId 行政组织 + #postId 职务ID + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func getSuperiorPeopleAndSubMan(orgId, postId int64) (postName, manTitle string) { + var postCont models.Position + postCont.GetCont(map[string]interface{}{"`id`": postId}, "`id`", "`name`", "`administrative_organization`") + postName = postCont.Name + var orgAry []int64 + orgAry = append(orgAry, orgId) + if orgId != postCont.Id { + orgAry = append(orgAry, postCont.Id) + } + var manList []models.PersonArchives + err := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`number`", "`name`").Where("").Find(&manList).Error + if err == nil { + var nameAry []string + for _, v := range manList { + nameAry = append(nameAry, fmt.Sprintf("%v(%v)", v.Name, v.Number)) + } + manTitle = strings.Join(nameAry, ",") + } + return +} diff --git a/api/version1/personnelapi/type.go b/api/version1/personnelapi/type.go index 87ddd8a..2412eb0 100644 --- a/api/version1/personnelapi/type.go +++ b/api/version1/personnelapi/type.go @@ -298,6 +298,10 @@ type staffArchivesCont struct { JobstartdateStr string `json:"jobstartdatestr"` //参加工作日期"` EntrydateStr string `json:"entrydatestr" ` //`入职日期"` PersonInCharge int `json:"personincharge"` //负责人 + SunMainDeparmentName string `json:"sunmaindeparmentname"` //二级部门 + WorkPostName string `json:"workpostname"` //工段 + TeamName string `json:"teamname"` //班组名 + AllOrgList []int64 `json:"allorglist"` //全行政组织 } // 双职工 diff --git a/api/version1/personnelapi/types.go b/api/version1/personnelapi/types.go index e1b7a67..6b97a11 100644 --- a/api/version1/personnelapi/types.go +++ b/api/version1/personnelapi/types.go @@ -1,5 +1,7 @@ package personnelapi +import "hr_server/models" + //添加员工参数 type addKingdeePersonneles struct { Number string `json:"fnumber"` //工号1 @@ -111,3 +113,74 @@ type insideHistoryer struct { AssignType string `json:"assigntype"` // Grop string `json:"grop"` //工段 } + +//人员主档案信息 +type MyMainCont struct { + Id string `json:"id"` + Key string `json:"key"` //员工key + Number string `json:"number"` //员工工号 + Name string `json:"name"` //姓名 + Icon string `json:"icon"` //头像 + AdminOrg int64 `json:"adminorg"` //所属行政组织 + TeamId int64 `json:"teamid"` //班组 + Position int64 `json:"position"` //职位 + JobClass int64 `json:"jobclass"` //职务分类 + JobId int64 `json:"jobid"` //职务 + JobLeve int64 `json:"jobleve"` //职务等级 + Wechat string `json:"wechat"` //微信UserId"` + WorkWechat string `json:"workwechat"` //`企业微信UserId"` + CompanyName string `json:"companyname"` //公司名称 + MainDeparmentName string `json:"maindeparmentname" ` //主部门 + SunMainDeparmentName string `json:"sunmaindeparmentname"` //二级部门 + WorkPostName string `json:"workpostname"` //工段 + TeamName string `json:"teamname"` //班组名 + PositionName string `json:"positionname"` //岗位名称 + JobClassName string `json:"jobclassname"` //职务分类 + JobName string `json:"jobname"` //职务名称 + JobLeveName string `json:"joblevename"` + Tel string `json:"tel"` //联系电话 +} + +//输出学历 +type OutpersonCont struct { + models.PersonnelEducation + AdmissionTimeStr string `json:"admissiontimestr"` //入学时间 + GraduationTimeStr string `json:"graduationtimestr"` //毕业时间 +} + +//输出集团内部工作经历 +type outInsetWork struct { + StartTime string `json:"starttimg"` //开始时间 + EndTime string `json:"endtimg"` //结束时间 + AllOrgName string `json:"allorgname"` //性质组织全称 + OrgId int64 `json:"orgid"` //行政组织ID + PostId int64 `json:"postid"` //职务ID + PostName string `json:"postname"` //职务名称 + PostLevel int64 `json:"postnlevel"` //职务等级 + TeamId int64 `json:"teamid"` //班组ID + TeamName string `json:"teamname"` //班组名称 + ChangeType int `json:"changetype"` //调动类型 + ChangeTypeName string `json:"changetypename"` //调动类型 + AssignType int `json:"assigntype"` //1、主职;2:兼职 + SuperiorPostName string `json:"superiorpostname"` //上级职务名称 + SuperiorManName []string `json:"superiormanname"` //上级人员 + SubordinatesCount int `json:"subordinatescount"` //下属熟练 +} + +//输出集团内部工作经历 +type outWorkHistory struct { + models.WorkHistory + StartTime string `json:"starttimg"` //开始时间 + EndTime string `json:"endtimg"` //结束时间 + +} + +//编辑人员行政组织关系 +type EditOrgPeople struct { + Id string `json:"id"` + OrgId int64 `json:"orgid"` //行政组织 + Position int64 `json:"position"` //岗位 + TeamId int64 `json:"teamid"` //班组 + JobId int64 `json:"jobid"` //职务 + JobLeve int64 `json:"jobleve"` //职务等级 +} diff --git a/apirouter/personnel/people.go b/apirouter/personnel/people.go index e500012..ca31472 100644 --- a/apirouter/personnel/people.go +++ b/apirouter/personnel/people.go @@ -51,13 +51,18 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) { apiRouter.POST("editworkhistorystate", apiHandle.EditWorkHistoryState) //编辑工作履历状态 //集团工作履历 apiRouter.POST("insideworkhistorylist", apiHandle.InsideWorkHistoryList) //集团工作履历列表 + apiRouter.POST("getinsideworkhistorylist", apiHandle.GetInsideWorkHistoryList) //集团工作履历列表(新版) apiRouter.POST("addinsidehistory", apiHandle.AddInsideHistory) //添加集团工作履历 apiRouter.POST("eidtinsidehistoryworkcont", apiHandle.EidtInsideHistoryWorkCont) //编辑集团工作履历 apiRouter.POST("editordelinsideworkhistorystate", apiHandle.EditOrDelInsideWorkHistoryState) //编辑集团工作履历状态 apiRouter.POST("archives_list_exporcsv", apiHandle.ArchivesListExporCsv) //导出人员信息 - apiRouter.POST("add_people_cont", apiHandle.AddPeopleCont) //写入人员信息(新版) + apiRouter.POST("add_people_cont", apiHandle.AddPeopleCont) //写入人员信息(新版) + apiRouter.POST("get_archives_cont", apiHandle.GetArchivesCon) //获取人员基础信息(新版) + apiRouter.POST("get_people_main_cont", apiHandle.GetPeopleMainCont) //获取员工主信息 + apiRouter.POST("get_peo_data_integrity", apiHandle.GetPeopleDataIntegrity) //获取资料完整度 + apiRouter.POST("edit_man_org_cont", apiHandle.EditManOrgCont) //编辑人员行政组织 } } diff --git a/models/man_cont.go b/models/man_cont.go index 7acb4aa..9134c69 100644 --- a/models/man_cont.go +++ b/models/man_cont.go @@ -57,13 +57,14 @@ type ManCont struct { Probationperiod int `json:"probationperiod" gorm:"column:probationperiod;type:int(5) unsigned;default:0;comment:试用期"` Planformaldate int64 `json:"planformaldate" gorm:"column:planformaldate;type:bigint(20) unsigned;default:0;comment:预计转正日期"` PoliticalOutlook int `json:"politicaloutlook" gorm:"column:political_outlook;type:tinyint(3) unsigned;default:1;comment:政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)"` + NameUsedBefore string `json:"nameusedbefore" gorm:"column:name_used_before;type:varchar(255) unsigned;default:'';not null;comment:曾用名"` } func (ManCont *ManCont) TableName() string { return "man_cont" } -//获取职务分类内容 +// 获取职务分类内容 func (cont *ManCont) GetCont(whereMap interface{}, field ...string) (err error) { gormDb := overall.CONSTANT_DB_HR.Model(&cont) if len(field) > 0 { diff --git a/models/personarchives.go b/models/personarchives.go index a58b45b..0057d7e 100644 --- a/models/personarchives.go +++ b/models/personarchives.go @@ -5,7 +5,7 @@ import ( "strings" ) -//员工档案(主) +// 员工档案(主) type PersonArchives struct { Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"` Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;not null;comment:员工工号"` @@ -42,13 +42,13 @@ func (PersonArchives *PersonArchives) TableName() string { return "person_archives" } -//编辑员工档案 +// 编辑员工档案 func (PersonArchives *PersonArchives) EiteCont(whereMap interface{}, saveData interface{}) (err error) { err = overall.CONSTANT_DB_HR.Model(&PersonArchives).Where(whereMap).Updates(saveData).Error return } -//获取员工档案 +// 获取员工档案 func (cont *PersonArchives) GetCont(whereMap interface{}, field ...string) (err error) { gormDb := overall.CONSTANT_DB_HR.Model(&cont) if len(field) > 0 { diff --git a/models/personnel_content.go b/models/personnel_content.go index 4a4a76d..07664ef 100644 --- a/models/personnel_content.go +++ b/models/personnel_content.go @@ -42,19 +42,20 @@ type PersonnelContent struct { ConstellationingCn string `json:"constellationingcn" gorm:"column:constellationing_cn;type:varchar(50) unsigned;default:'';not null;comment:星座汉字说明"` PoliticalOutlookCn string `json:"politicaloutlookcn" gorm:"column:political_outlook_cn;type:varchar(50) unsigned;default:'';not null;comment:政治面貌汉字说明"` HealthCn string `json:"healthcn" gorm:"column:health_cn;type:varchar(50) unsigned;default:'';not null;comment:健康状况中文说明"` + NameUsedBefore string `json:"nameusedbefore" gorm:"column:name_used_before;type:varchar(255) unsigned;default:'';not null;comment:曾用名"` } func (PersonnelContent *PersonnelContent) TableName() string { return "personnel_content" } -//编辑职务分类内容 +// 编辑职务分类内容 func (PersonnelContent *PersonnelContent) EiteCont(whereMap interface{}, saveData interface{}) (err error) { err = overall.CONSTANT_DB_HR.Model(&PersonnelContent).Where(whereMap).Updates(saveData).Error return } -//获取职务分类内容 +// 获取职务分类内容 func (cont *PersonnelContent) GetCont(whereMap interface{}, field ...string) (err error) { gormDb := overall.CONSTANT_DB_HR.Model(&cont) if len(field) > 0 { diff --git a/overall/overallhandle/overall_handle.go b/overall/overallhandle/overall_handle.go index ec50df0..43e1dbc 100644 --- a/overall/overallhandle/overall_handle.go +++ b/overall/overallhandle/overall_handle.go @@ -769,3 +769,25 @@ func (a *AllSunList[int64]) GetAllSunOrg(superior int64) (err error) { } return } + +//浮点数保留小数 +/* +@value 浮点数值 +@weishu 要保留的小数位数 +*/ +func DecimalEs(value float64, weishu int) float64 { + switch weishu { + case 3: + value, _ = strconv.ParseFloat(fmt.Sprintf("%.3f", value), 64) + case 4: + value, _ = strconv.ParseFloat(fmt.Sprintf("%.4f", value), 64) + case 5: + value, _ = strconv.ParseFloat(fmt.Sprintf("%.5f", value), 64) + case 6: + value, _ = strconv.ParseFloat(fmt.Sprintf("%.6f", value), 64) + default: + value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", value), 64) + } + + return value +}