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.
275 lines
5.7 KiB
275 lines
5.7 KiB
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)
|
|
}
|
|
}
|
|
}
|
|
|