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.

331 lines
10 KiB

package administrativeorganization
import (
"hr_server/models"
"hr_server/models/hrmodels"
"hr_server/overall"
"hr_server/overall/overallhandle"
"regexp"
"sort"
"strconv"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2023-08-22 08:56:17
@ 功能: 自定义表单专用行政组织树
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (o *OrganizationApi) OrgTreeList(c *gin.Context) {
var requestData overallhandle.PublicId[int64]
c.ShouldBindJSON(&requestData)
var orgContList []hrmodels.OrgCont
err := overall.CONSTANT_DB_HR.Model(&hrmodels.OrgCont{}).Select("`id`,`name`,`superior`,`sort`,`state`").Where("state = ?", 1).Find(&orgContList).Error
if err != nil && len(orgContList) < 1 {
overallhandle.Result(0, "未获取到数据", c)
return
}
var formOrgTreeList []CustomerFormCont
for _, v := range orgContList {
if !overallhandle.IsInTrue[int64](v.Id, []int64{281}) {
var formOrgTreeCont CustomerFormCont
formOrgTreeCont.Id = v.Id
formOrgTreeCont.ParentId = v.Superior
formOrgTreeCont.Name = v.Name
formOrgTreeCont.Sort = v.Sort
formOrgTreeCont.Status = v.State
formOrgTreeCont.Remark = ""
formOrgTreeList = append(formOrgTreeList, formOrgTreeCont)
}
}
sort.Slice(formOrgTreeList, func(i, j int) bool {
return formOrgTreeList[i].Sort < formOrgTreeList[j].Sort
})
if requestData.Id == 0 {
requestData.Id = 313
}
govMapThree := GovOrgTreeForm(requestData.Id, formOrgTreeList)
var snedCont SendOrgTreeAry
dictAry := overallhandle.MapOutint()
dictAry[0] = "停用"
dictAry[1] = "正常"
snedCont.Dict.Status = dictAry
snedCont.List = govMapThree
snedCont.PageInfo.Total = len(formOrgTreeList)
overallhandle.Result(0, snedCont, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-08-22 09:15:59
@ 功能: 表单行政组织树
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func GovOrgTreeForm(parentId int64, govList []CustomerFormCont) (govMap []CustomerFormOrgTree) {
for i := 0; i < len(govList); i++ {
if govList[i].ParentId == parentId {
var govCont CustomerFormOrgTree
govCont.Id = govList[i].Id
govCont.ParentId = govList[i].ParentId
govCont.Name = govList[i].Name
govCont.Sort = govList[i].Sort
govCont.Status = govList[i].Status
govCont.Remark = govList[i].Remark
govCont.Children = GovOrgTreeForm(govList[i].Id, govList)
govMap = append(govMap, govCont)
}
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2023-08-23 09:45:34
@ 功能: 自定义表单搜索人员
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (o *OrganizationApi) SearchUserList(c *gin.Context) {
var requestData SearchUserCont
c.ShouldBindJSON(&requestData)
if requestData.PageInfo.PageIndex == 0 {
requestData.PageInfo.PageIndex = 1
}
if requestData.PageInfo.PageSize == 0 {
requestData.PageInfo.PageSize = 20
}
gormDb := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`id`").Where("`number` NOT LIKE ?", "%W%")
if requestData.Name != "" {
gormDb = gormDb.Where("number LIKE ? OR name LIKE ?", "%"+requestData.Name+"%", "%"+requestData.Name+"%")
}
if requestData.Department != 0 {
var sunAry overallhandle.AllSunList[int64]
sunAry.GetAllSunOrg(requestData.Department)
sunAry.SunList = append(sunAry.SunList, requestData.Department)
gormDb = gormDb.Where("admin_org IN ?", sunAry.SunList)
}
gormDb = gormDb.Where("emp_type BETWEEN ? AND ?", 1, 10)
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
var userList []CustomerFormUser
var idAry []int64
err := gormDb.Order("company ASC,maindeparment ASC,admin_org ASC,position ASC").Limit(requestData.PageInfo.PageSize).Offset(overallhandle.LimitPage(requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize)).Find(&idAry).Error
if err != nil || len(idAry) < 1 {
overallhandle.ResultList(0, requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize, total, int64(len(userList)), userList, c)
return
}
var manContList []models.ManCont
err = overall.CONSTANT_DB_HR.Model(&models.ManCont{}).Select("`id`,`number`,`name`,`icon`,`icon_photo`,`admin_org`,`company`,`maindeparment`,`key`,`mobilephone`").Where("`id` IN ?", idAry).Find(&manContList).Error
if err != nil || len(manContList) < 1 {
overallhandle.ResultList(0, requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize, total, int64(len(userList)), userList, c)
return
}
for _, v := range manContList {
var userCont CustomerFormUser
userCont.Id = v.Id //id"`
userCont.UserKey = strconv.FormatInt(v.Key, 10) //userkey"`
userCont.Number = v.Number //number"`
userCont.Name = v.Name //name"`
userCont.Icon = v.Icon //icon"`
if v.Icon == "" && v.IconPhoto != "" {
userCont.Icon = v.IconPhoto //icon"`
}
var orgIdMap []int64
userCont.Company = v.Company //company"`
if v.Company != 0 {
if !overallhandle.IsInTrue[int64](v.Company, orgIdMap) {
orgIdMap = append(orgIdMap, v.Company)
}
// var getSpurDepart models.AdministrativeOrganization
// getSpurDepart.GetCont(map[string]interface{}{"`id`": v.Company}, "name")
// userCont.CompanyName = getSpurDepart.Name
}
userCont.MainDeparment = v.MainDeparment //maindeparment"`
if v.MainDeparment != 0 {
if !overallhandle.IsInTrue[int64](v.MainDeparment, orgIdMap) {
orgIdMap = append(orgIdMap, v.MainDeparment)
}
// var getSpurDepartMain models.AdministrativeOrganization
// getSpurDepartMain.GetCont(map[string]interface{}{"`id`": v.MainDeparment}, "name")
// userCont.MainDeparmentName = getSpurDepartMain.Name //maindeparmentname"`
}
userCont.AdminOrg = v.AdminOrg //adminorg"`
if v.AdminOrg != 0 {
if !overallhandle.IsInTrue[int64](v.AdminOrg, orgIdMap) {
orgIdMap = append(orgIdMap, v.AdminOrg)
}
// var orgCont models.AdministrativeOrganization
// orgCont.GetCont(map[string]interface{}{"`id`": v.AdminOrg}, "name")
// userCont.AdminOrgName = orgCont.Name //adminorgname"`
}
if len(orgIdMap) > 0 {
var orgAllCont []models.AdministrativeOrganization
overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", orgIdMap).Find(&orgAllCont)
if len(orgAllCont) > 0 {
for _, org := range orgAllCont {
if org.Id == v.Company {
userCont.CompanyName = org.Name
}
if org.Id == v.MainDeparment {
userCont.MainDeparmentName = org.Name
}
if org.Id == v.AdminOrg {
userCont.AdminOrgName = org.Name
}
}
}
}
userCont.Tel = v.Mobilephone
userList = append(userList, userCont)
}
overallhandle.ResultList(0, requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize, total, int64(len(userList)), userList, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-10-09 13:37:43
@ 功能:根据选定人员条件查询人员(自定义表单专用)
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (o *OrganizationApi) SearchUserCustomerFormList(c *gin.Context) {
var requestData overallhandle.NameOverall
err := c.ShouldBindJSON(&requestData)
if err != nil || requestData.Name == "" {
overallhandle.Result(100, err, c)
return
}
reg1 := regexp.MustCompile(`\(([^)]+)\)`)
jieguo := reg1.FindAllStringSubmatch(requestData.Name, -1)
var userNumber []string
if len(jieguo) > 0 {
for _, v := range jieguo {
vLen := len(v)
if vLen > 0 {
// numInt, _ := strconv.ParseInt(v[vLen-1], 10, 64)
// fmt.Printf("%v: %v\n", v, numInt)
if !overallhandle.IsInTrue[string](v[vLen-1], userNumber) {
userNumber = append(userNumber, v[vLen-1])
}
}
}
}
var userList []CustomerFormUser
if len(userNumber) < 1 {
overallhandle.Result(0, userList, c)
}
var manContList []models.ManCont
err = overall.CONSTANT_DB_HR.Model(&models.ManCont{}).Select("`id`,`number`,`name`,`icon`,`icon_photo`,`admin_org`,`company`,`maindeparment`,`key`,`mobilephone`").Where("`number` IN ?", userNumber).Find(&manContList).Error
if err != nil || len(manContList) < 1 {
overallhandle.Result(0, userList, c)
return
}
for _, v := range manContList {
var userCont CustomerFormUser
userCont.Id = v.Id //id"`
userCont.UserKey = strconv.FormatInt(v.Key, 10) //userkey"`
userCont.Number = v.Number //number"`
userCont.Name = v.Name //name"`
userCont.Icon = v.Icon //icon"`
if v.Icon == "" && v.IconPhoto != "" {
userCont.Icon = v.IconPhoto //icon"`
}
var orgIdMap []int64
userCont.Company = v.Company //company"`
if v.Company != 0 {
if !overallhandle.IsInTrue[int64](v.Company, orgIdMap) {
orgIdMap = append(orgIdMap, v.Company)
}
// var getSpurDepart models.AdministrativeOrganization
// getSpurDepart.GetCont(map[string]interface{}{"`id`": v.Company}, "name")
// userCont.CompanyName = getSpurDepart.Name
}
userCont.MainDeparment = v.MainDeparment //maindeparment"`
if v.MainDeparment != 0 {
if !overallhandle.IsInTrue[int64](v.MainDeparment, orgIdMap) {
orgIdMap = append(orgIdMap, v.MainDeparment)
}
// var getSpurDepartMain models.AdministrativeOrganization
// getSpurDepartMain.GetCont(map[string]interface{}{"`id`": v.MainDeparment}, "name")
// userCont.MainDeparmentName = getSpurDepartMain.Name //maindeparmentname"`
}
userCont.AdminOrg = v.AdminOrg //adminorg"`
if v.AdminOrg != 0 {
if !overallhandle.IsInTrue[int64](v.AdminOrg, orgIdMap) {
orgIdMap = append(orgIdMap, v.AdminOrg)
}
// var orgCont models.AdministrativeOrganization
// orgCont.GetCont(map[string]interface{}{"`id`": v.AdminOrg}, "name")
// userCont.AdminOrgName = orgCont.Name //adminorgname"`
}
if len(orgIdMap) > 0 {
var orgAllCont []models.AdministrativeOrganization
overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", orgIdMap).Find(&orgAllCont)
if len(orgAllCont) > 0 {
for _, org := range orgAllCont {
if org.Id == v.Company {
userCont.CompanyName = org.Name
}
if org.Id == v.MainDeparment {
userCont.MainDeparmentName = org.Name
}
if org.Id == v.AdminOrg {
userCont.AdminOrgName = org.Name
}
}
}
}
userCont.Tel = v.Mobilephone
userList = append(userList, userCont)
}
overallhandle.Result(0, userList, c)
}