HR管理系统
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

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