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.
332 lines
10 KiB
332 lines
10 KiB
|
2 years ago
|
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)
|
||
|
|
}
|