package personnelapi import ( "hr_server/models" "hr_server/models/hrmodels" "hr_server/overall" "hr_server/overall/overallhandle" "sort" "strconv" "github.com/gin-gonic/gin" ) /* * @ 作者: 秦东 @ 时间: 2024-05-24 13:55:03 @ 功能: 根据行政组织ID获取当前行政组织人员及子行政组织 @ 参数 # @ 返回值 # @ 方法原型 # */ func (s *StaffApi) GainSunOrgAndUser(c *gin.Context) { var requestData overallhandle.ConstId err := c.ShouldBindJSON(&requestData) if err != nil { requestData.Id = "309" } if requestData.Id == "" { requestData.Id = "309" } var sendInfo OrgGainPeopel orgIdInt, _ := strconv.ParseInt(requestData.Id, 10, 64) synPro.Add(1) go sendInfo.GainAllFatherOrg(orgIdInt) synPro.Add(1) go sendInfo.GainOrgPeopel(orgIdInt) synPro.Add(1) go sendInfo.GainOrgSunOrgList(orgIdInt) synPro.Wait() var sendData SendOrgGainPeopel sendData.OrgList = sendInfo.OrgList sendData.OrgUserList = append(sendData.OrgUserList, sendInfo.SunOrgList...) sendData.OrgUserList = append(sendData.OrgUserList, sendInfo.UserList...) overallhandle.Result(0, sendData, c) } /* * @ 作者: 秦东 @ 时间: 2024-05-24 14:33:28 @ 功能: 获取当前行政组织直接子级行政组织 @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrgGainPeopel) GainOrgSunOrgList(orgId int64) { defer synPro.Done() var orgList []models.AdministrativeOrganization overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`name`").Where("`state` = 1 AND `superior` = ?", orgId).Find(&orgList) if len(orgList) > 0 { for _, v := range orgList { var user UserOrgRole user.Id = strconv.FormatInt(v.Id, 10) user.Title = v.Name user.Img = "" user.IsPick = 2 user.Types = 2 o.SunOrgList = append(o.SunOrgList, user) } } } /* * @ 作者: 秦东 @ 时间: 2024-05-24 14:23:46 @ 功能: 获取当前行政组织下得人员信息 @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrgGainPeopel) GainOrgPeopel(orgId int64) { defer synPro.Done() var prople []models.PersonArchives err := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`key`,`number`,`name`,`icon`,`admin_org`,`icon_photo`").Where("`admin_org` = ? AND `emp_type` BETWEEN ? AND ? ", orgId, 1, 10).Find(&prople).Error if err == nil && len(prople) > 0 { for _, v := range prople { var user UserOrgRole user.Id = strconv.FormatInt(v.Key, 10) user.Title = v.Name user.Img = v.Icon if v.IconPhoto != "" { user.Img = v.IconPhoto } user.IsPick = 2 user.Types = 1 o.UserList = append(o.UserList, user) } } } /* * @ 作者: 秦东 @ 时间: 2024-05-24 14:04:20 @ 功能: 获取所有父级行政组织 @ 参数 #orgId 行政组织ID @ 返回值 # @ 方法原型 # */ func (o *OrgGainPeopel) GainAllFatherOrg(orgId int64) { defer synPro.Done() var sunAry overallhandle.AllSunList[int64] sunAry.GetAllParentOrg(orgId, 2) sunAry.SunList = append(sunAry.SunList, orgId) if len(sunAry.SunList) > 0 { var orgList []hrmodels.OrgCont err := overall.CONSTANT_DB_HR.Model(&hrmodels.OrgCont{}).Select("`id`,`name`,`level`").Where("`id` IN ?", sunAry.SunList).Find(&orgList).Error if err == nil { sort.Slice(orgList, func(i, j int) bool { return orgList[i].Level < orgList[j].Level }) for _, v := range orgList { var orgInfo OrgCrumb orgInfo.Id = strconv.FormatInt(v.Id, 10) orgInfo.Title = v.Name o.OrgList = append(o.OrgList, orgInfo) } } } } /* * @ 作者: 秦东 @ 时间: 2024-05-27 08:33:09 @ 功能: 搜索行政组织及人员 @ 参数 # @ 返回值 # @ 方法原型 # */ func (s *StaffApi) SearchOrgUser(c *gin.Context) { var requestData overallhandle.NameOverall err := c.ShouldBindJSON(&requestData) var sendData SendOrgGainPeopel if err != nil { overallhandle.Result(0, sendData, c) return } if requestData.Name == "" { overallhandle.Result(0, sendData, c) return } var sendInfo OrgGainPeopel synPro.Add(1) go sendInfo.SearchOrgCont(requestData.Name) synPro.Add(1) go sendInfo.SearchPeopleCont(requestData.Name) synPro.Wait() sendData.OrgUserList = append(sendData.OrgUserList, sendInfo.SunOrgList...) sendData.OrgUserList = append(sendData.OrgUserList, sendInfo.UserList...) overallhandle.Result(0, sendData, c) } /* * @ 作者: 秦东 @ 时间: 2024-05-27 08:51:49 @ 功能: 搜索人员 @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrgGainPeopel) SearchPeopleCont(name string) { defer synPro.Done() var prople []models.PersonArchives err := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`key`,`number`,`name`,`icon`,`admin_org`,`icon_photo`").Where("(`name` Like ? OR `number` Like ?) AND `emp_type` BETWEEN ? AND ? ", "%"+name+"%", "%"+name+"%", 1, 10).Find(&prople).Error if err == nil && len(prople) > 0 { for _, v := range prople { var user UserOrgRole user.Id = strconv.FormatInt(v.Key, 10) user.Title = v.Name user.Img = v.Icon if v.IconPhoto != "" { user.Img = v.IconPhoto } user.IsPick = 2 user.Types = 1 o.UserList = append(o.UserList, user) } } } /* * @ 作者: 秦东 @ 时间: 2024-05-27 08:40:51 @ 功能: 搜索行政组织名称 @ 参数 #name 行政组织名称 @ 返回值 # @ 方法原型 # */ func (o *OrgGainPeopel) SearchOrgCont(name string) { defer synPro.Done() var orgList []hrmodels.OrgCont overall.CONSTANT_DB_HR.Model(&hrmodels.OrgCont{}).Select("`id`,`name`").Where("`state` = 1 AND level > 3 AND `name` LIKE ?", "%"+name+"%").Find(&orgList) if len(orgList) > 0 { for _, v := range orgList { var user UserOrgRole user.Id = strconv.FormatInt(v.Id, 10) user.Title = v.Name user.Img = "" user.IsPick = 2 user.Types = 2 o.SunOrgList = append(o.SunOrgList, user) } } }