Browse Source

增加修改行政组织模块

v2_dev
超级管理员 3 years ago
parent
commit
a65ca900c0
  1. 38
      api/version1/personnelapi/controll.go
  2. 105
      api/version1/personnelapi/mancont.go
  3. 191
      api/version1/personnelapi/staff.go
  4. 454
      api/version1/personnelapi/staffarchives.go
  5. 4
      api/version1/personnelapi/type.go
  6. 73
      api/version1/personnelapi/types.go
  7. 5
      apirouter/personnel/people.go
  8. 3
      models/man_cont.go
  9. 6
      models/personarchives.go
  10. 5
      models/personnel_content.go
  11. 22
      overall/overallhandle/overall_handle.go

38
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 "预入职"
}
}
/*
学历

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

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

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

4
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"` //全行政组织
}
// 双职工

73
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"` //职务等级
}

5
apirouter/personnel/people.go

@ -51,6 +51,7 @@ 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) //编辑集团工作履历状态
@ -58,6 +59,10 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("archives_list_exporcsv", apiHandle.ArchivesListExporCsv) //导出人员信息
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) //编辑人员行政组织
}
}

3
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 {

6
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 {

5
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 {

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

Loading…
Cancel
Save