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.
1886 lines
60 KiB
1886 lines
60 KiB
package administrativeorganization
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"hr_server/grocerystore"
|
|
"hr_server/models"
|
|
"hr_server/models/hrmodels"
|
|
"hr_server/overall"
|
|
"hr_server/overall/overallhandle"
|
|
"sort"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 行政组织
|
|
func (o *OrganizationApi) GovList(c *gin.Context) {
|
|
var requestData govListType
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Page < 0 {
|
|
requestData.Page = 1
|
|
}
|
|
if requestData.PageSize < 0 {
|
|
requestData.PageSize = 10
|
|
}
|
|
var govClassMap []outGovCont
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("administrative_organization.*,aot.name as classname,aot.level").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type")
|
|
if requestData.State != 0 {
|
|
gormDb = gormDb.Where("administrative_organization.state = ?", requestData.State)
|
|
} else {
|
|
gormDb = gormDb.Where("administrative_organization.state IN ?", []int{1, 2})
|
|
}
|
|
if requestData.Name != "" {
|
|
gormDb = gormDb.Where("(administrative_organization.name LIKE ? OR administrative_organization.abbreviation LIKE ?)", "%"+requestData.Name+"%", "%"+requestData.Name+"%")
|
|
}
|
|
if requestData.Number != "" {
|
|
gormDb = gormDb.Where("administrative_organization.number LIKE ?", "%"+requestData.Number+"%")
|
|
}
|
|
if requestData.Level != 0 {
|
|
gormDb = gormDb.Where("aot.level = ?", requestData.Level)
|
|
}
|
|
if requestData.GovClass != "" {
|
|
gormDb = gormDb.Where("administrative_organization.organization_type = ?", requestData.GovClass)
|
|
}
|
|
if requestData.Superior != "" {
|
|
// gormDb = gormDb.Where("administrative_organization.superior = ?", requestData.Superior)
|
|
superiorInt, _ := strconv.ParseInt(requestData.Superior, 10, 64)
|
|
var sunAry overallhandle.AllSunList[int64]
|
|
sunAry.GetAllSunOrg(superiorInt)
|
|
gormDb = gormDb.Where("administrative_organization.superior = ? OR administrative_organization.`id` IN ?", requestData.Superior, sunAry.SunList)
|
|
}
|
|
var total int64
|
|
totalErr := gormDb.Count(&total).Error
|
|
if totalErr != nil {
|
|
total = 0
|
|
}
|
|
errGorm := gormDb.Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&govClassMap).Error
|
|
if errGorm != nil {
|
|
overallhandle.Result(105, errGorm, c)
|
|
} else {
|
|
overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(govClassMap)), govClassMap, c)
|
|
}
|
|
}
|
|
|
|
// 添加行政组织
|
|
func (o *OrganizationApi) AddGovCont(c *gin.Context) {
|
|
var requestData addGovInfo
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Name == "" {
|
|
overallhandle.Result(101, requestData.Name, c, "行政组织名称为空!")
|
|
return
|
|
}
|
|
var superiorId int64 = 0
|
|
if requestData.Superior != "" {
|
|
superiorInt, _ := strconv.ParseInt(requestData.Superior, 10, 64)
|
|
superiorId = superiorInt
|
|
} else {
|
|
overallhandle.Result(101, requestData.Superior, c, "请指定归属上级!")
|
|
return
|
|
}
|
|
var govClassId int64 = 0
|
|
if requestData.GovClass == "" {
|
|
overallhandle.Result(101, requestData.GovClass, c, "请指定归属行政组织类型!")
|
|
return
|
|
} else {
|
|
govClassIdInt, _ := strconv.ParseInt(requestData.GovClass, 10, 64)
|
|
govClassId = govClassIdInt
|
|
}
|
|
// if requestData.WechatId == 0 {
|
|
// requestData.WechatId = 1
|
|
// }
|
|
var name string
|
|
judgeErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`name`").Where("`organization_type` IN ? AND `name` = ?", []int{1, 2}, requestData.Name).First(&name).Error
|
|
if judgeErr == nil {
|
|
overallhandle.Result(103, name, c)
|
|
return
|
|
}
|
|
var saveData models.AdministrativeOrganization
|
|
saveData.Name = requestData.Name
|
|
saveData.Superior = superiorId
|
|
saveData.OrganizationType = govClassId
|
|
saveData.Abbreviation = requestData.Abbreviation
|
|
saveData.Time = time.Now().Unix()
|
|
saveData.State = 1
|
|
saveData.WechatOrganizationId = int64(requestData.WechatId)
|
|
if requestData.Number != "" {
|
|
saveData.Number = requestData.Number
|
|
} else {
|
|
//获取首字母
|
|
govFirstWords := overallhandle.GetGovFirstWords(requestData.Name, requestData.Abbreviation, requestData.GovClass, requestData.Superior)
|
|
saveData.Number = overallhandle.CreateNumber(govFirstWords, requestData.Superior)
|
|
}
|
|
saveErr := overall.CONSTANT_DB_HR.Create(&saveData).Error
|
|
if saveErr == nil {
|
|
overallhandle.Result(0, saveData, c)
|
|
} else {
|
|
overallhandle.Result(104, saveErr, c)
|
|
}
|
|
}
|
|
|
|
// 获取行政组织详情
|
|
func (o *OrganizationApi) GetGovCont(c *gin.Context) {
|
|
var requestData overallhandle.GetId
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
overallhandle.Result(101, err, c, "行政组织类别Id不能为空!")
|
|
return
|
|
}
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
whereAry := overallhandle.MapOut()
|
|
whereAry["id"] = requestData.Id
|
|
var Contents models.AdministrativeOrganization
|
|
dbErr := Contents.GetCont(whereAry)
|
|
// dbErr := overall.CONSTANT_DB_HR.Where("`id` = ?", requestData.Id).First(&Contents).Error
|
|
if dbErr != nil {
|
|
overallhandle.Result(105, dbErr, c)
|
|
} else {
|
|
overallhandle.Result(0, Contents, c)
|
|
}
|
|
}
|
|
|
|
// 编辑行政组织
|
|
func (o *OrganizationApi) EiteGovCont(c *gin.Context) {
|
|
var requestData eiteGovInfo
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
overallhandle.Result(101, err, c, "行政类别Id不能为空!")
|
|
return
|
|
}
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
whereAry := overallhandle.MapOut()
|
|
whereAry["id"] = requestData.Id
|
|
var govCont models.AdministrativeOrganization
|
|
judgeErr := govCont.GetCont(whereAry)
|
|
if judgeErr != nil {
|
|
overallhandle.Result(107, judgeErr, c)
|
|
return
|
|
}
|
|
saveData := overallhandle.MapOut()
|
|
saveData["time"] = time.Now().Unix()
|
|
if requestData.Name != "" && requestData.Name != govCont.Name {
|
|
saveData["name"] = requestData.Name
|
|
}
|
|
if requestData.Superior != "" && requestData.Superior != strconv.FormatInt(govCont.Superior, 10) {
|
|
saveData["superior"] = requestData.Superior
|
|
}
|
|
|
|
if requestData.GovClass != "" && requestData.GovClass != strconv.FormatInt(govCont.OrganizationType, 10) {
|
|
saveData["organization_type"] = requestData.GovClass
|
|
}
|
|
if requestData.Abbreviation != "" && requestData.Abbreviation != govCont.Abbreviation {
|
|
saveData["abbreviation"] = requestData.Abbreviation
|
|
}
|
|
if requestData.WechatId != 0 && int64(requestData.WechatId) != govCont.WechatOrganizationId {
|
|
saveData["wechat_organization_id"] = requestData.WechatId
|
|
}
|
|
if requestData.Number != "" && requestData.Number != govCont.Number {
|
|
if requestData.Superior != "" && requestData.Superior != strconv.FormatInt(govCont.Superior, 10) {
|
|
//获取首字母
|
|
govFirstWords := overallhandle.GetGovFirstWords(requestData.Name, requestData.Abbreviation, requestData.GovClass, requestData.Superior)
|
|
saveData["number"] = overallhandle.CreateNumber(govFirstWords, requestData.Superior)
|
|
} else if requestData.Superior != "" {
|
|
saveData["number"] = requestData.Number
|
|
}
|
|
}
|
|
eiteErr := govCont.EiteCont(whereAry, saveData)
|
|
if eiteErr != nil {
|
|
overallhandle.Result(106, eiteErr, c)
|
|
} else {
|
|
overallhandle.Result(0, saveData, c)
|
|
}
|
|
}
|
|
|
|
// 编辑行政组织状态或删除
|
|
func (o *OrganizationApi) EiteGovStateOrDel(c *gin.Context) {
|
|
var requestData EiteJobStateDel
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
overallhandle.Result(101, err, c, "行政类别Id不能为空!")
|
|
return
|
|
}
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
if requestData.State == 0 {
|
|
requestData.State = 1
|
|
}
|
|
|
|
whereAry := overallhandle.MapOut()
|
|
whereAry["id"] = requestData.Id
|
|
|
|
var jobClassInfo models.AdministrativeOrganization
|
|
//判断行政组织是否存在
|
|
judgeExist := jobClassInfo.GetCont(whereAry)
|
|
if judgeExist != nil {
|
|
overallhandle.Result(107, judgeExist, c)
|
|
return
|
|
}
|
|
saveData := overallhandle.MapOut()
|
|
saveData["time"] = time.Now().Unix()
|
|
saveData["state"] = requestData.State
|
|
|
|
if requestData.State != 3 {
|
|
eiteErr := jobClassInfo.EiteCont(whereAry, saveData)
|
|
if eiteErr != nil {
|
|
overallhandle.Result(106, eiteErr, c)
|
|
} else {
|
|
overallhandle.Result(0, saveData, c)
|
|
}
|
|
} else {
|
|
if requestData.IsTrue != 1 {
|
|
//软删除
|
|
eiteErr := jobClassInfo.EiteCont(whereAry, saveData)
|
|
if eiteErr != nil {
|
|
overallhandle.Result(106, eiteErr, c)
|
|
} else {
|
|
overallhandle.Result(0, saveData, c)
|
|
}
|
|
} else {
|
|
//硬删除
|
|
delErr := overall.CONSTANT_DB_HR.Where(whereAry).Delete(&jobClassInfo)
|
|
if delErr == nil {
|
|
overallhandle.Result(0, saveData, c)
|
|
} else {
|
|
overallhandle.Result(108, delErr, c)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// 行政组织树
|
|
func (o *OrganizationApi) GovThree(c *gin.Context) {
|
|
var requestData govThreeType
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
requestData.Id = 0
|
|
}
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
var govMap overallhandle.MenuList
|
|
//API Token数据
|
|
redisFileKey := fmt.Sprintf("Org:OrgContList:%v_%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, "orgcont")
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
orgList, orgErr := redisClient.SMEMBERS(redisFileKey)
|
|
// fmt.Printf("requ---------------->%v--------------->%v\n", orgList, orgErr)
|
|
if orgErr != nil || len(orgList) < 1 {
|
|
// fmt.Printf("requestData---------------->%v\n", requestData)
|
|
// gormDb := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("administrative_organization.*,aot.name as classname,aot.level").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type").Where("administrative_organization.`state` IN ?", []int{1, 2}).Where("administrative_organization.id NOT IN ?", []int{312, 293, 305, 306, 307})
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("administrative_organization.*,aot.name as classname,aot.level").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type").Where("administrative_organization.`state` = ?", 1)
|
|
if requestData.All == 0 {
|
|
requestData.Id = 312
|
|
gormDb = gormDb.Where("administrative_organization.id NOT IN ?", []int{312, 293, 305, 306, 307})
|
|
}
|
|
if requestData.Level != 0 {
|
|
gormDb = gormDb.Where("aot.level <= ?", requestData.Level)
|
|
}
|
|
err := gormDb.Find(&govMap).Error
|
|
if err != nil {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
redisClient.SetRedisTime(86400)
|
|
for _, v := range govMap {
|
|
vJsonStr, jsonErr := json.Marshal(v)
|
|
if jsonErr == nil {
|
|
redisClient.Sadd(redisFileKey, string(vJsonStr))
|
|
}
|
|
}
|
|
} else {
|
|
if requestData.All == 0 {
|
|
requestData.Id = 312
|
|
}
|
|
for _, v := range orgList {
|
|
var redisCont overallhandle.OutGovCont
|
|
jsonErr := json.Unmarshal([]byte(v), &redisCont)
|
|
if jsonErr == nil {
|
|
govMap = append(govMap, redisCont)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// fmt.Printf("id==========>%v", govMap)
|
|
// govMap.GovRecursion(requestData.Id, 0)
|
|
// fmt.Printf("govAry---------------->%v\n", govMap)
|
|
govMapThree := overallhandle.GovThreeList(requestData.Id, govMap)
|
|
overallhandle.Result(0, govMapThree, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-21 08:59:34
|
|
@ 功能: 行政组织树(全)
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GovThreeIng(c *gin.Context) {
|
|
var requestData govThreeType
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
requestData.Id = 0
|
|
}
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
// fmt.Printf("requestData---------------->%v\n", requestData)
|
|
var govMap overallhandle.MenuList
|
|
// gormDb := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("administrative_organization.*,aot.name as classname,aot.level").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type").Where("administrative_organization.`state` IN ?", []int{1, 2}).Where("administrative_organization.id NOT IN ?", []int{312, 293, 305, 306, 307})
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("administrative_organization.*,aot.name as classname,aot.level").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type").Where("administrative_organization.`state` BETWEEN ? AND ?", 1, 2)
|
|
if requestData.All == 0 {
|
|
requestData.Id = 312
|
|
gormDb = gormDb.Where("administrative_organization.id NOT IN ?", []int{312, 293, 305, 306, 307})
|
|
}
|
|
if requestData.Level != 0 {
|
|
gormDb = gormDb.Where("aot.level <= ?", requestData.Level)
|
|
}
|
|
err := gormDb.Find(&govMap).Error
|
|
if err != nil {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
// fmt.Printf("id==========>%v", govMap)
|
|
// govMap.GovRecursion(requestData.Id, 0)
|
|
// fmt.Printf("govAry---------------->%v\n", requestData.Id)
|
|
govMapThree := overallhandle.GovThreeList(requestData.Id, govMap)
|
|
overallhandle.Result(0, govMapThree, c)
|
|
}
|
|
|
|
// 获取当前行政组织的所有子类
|
|
func (o *OrganizationApi) GetOrgAllSun(c *gin.Context) {
|
|
var requestData overallhandle.GetId
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
requestData.Id = 0
|
|
}
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
// fmt.Printf("\nrequestData---->%v\n", requestData)
|
|
var idAry []int64
|
|
// idAry = overallhandle.GetDepartmentSun(requestData.Id, idAry)
|
|
// idAry = append(idAry, requestData.Id)
|
|
|
|
var sunAry overallhandle.AllSunList[int64]
|
|
sunAry.GetAllSunOrg(requestData.Id)
|
|
sunAry.SunList = append(sunAry.SunList, requestData.Id)
|
|
idAry = sunAry.SunList
|
|
|
|
//获取行政组织信息
|
|
var orgList []models.AdministrativeOrganization
|
|
if len(idAry) < 1 {
|
|
overallhandle.Result(101, orgList, c, "没有查询到信息!")
|
|
return
|
|
}
|
|
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`state` = 1 AND `id` IN ?", idAry).Find(&orgList).Error
|
|
if err != nil {
|
|
overallhandle.Result(101, err, c, "没有查询到信息!")
|
|
return
|
|
}
|
|
overallhandle.Result(0, orgList, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-10-26 09:44:40
|
|
@ 功能: 获取公司下的所有主行政部门
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GetCompanyDeparment(c *gin.Context) {
|
|
var requestData overallhandle.GetId
|
|
errddd := c.ShouldBindJSON(&requestData)
|
|
sdfgg, _ := json.Marshal(requestData)
|
|
fmt.Printf("获取值------1----->%v----->%v----->%v\n", requestData, string(sdfgg), errddd)
|
|
if requestData.Id == 0 && requestData.IdStr == "" {
|
|
requestData.Id = 0
|
|
}
|
|
// fmt.Printf("获取值----2------->%v\n", requestData)
|
|
if requestData.IdStr != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.IdStr, 10, 64)
|
|
requestData.Id = idInt64
|
|
}
|
|
// fmt.Printf("获取值----3------->%v\n", requestData)
|
|
orgId := getOrgIdList(requestData.Id)
|
|
if len(orgId) < 1 {
|
|
overallhandle.Result(101, orgId, c, "没有查询到信息!")
|
|
return
|
|
}
|
|
|
|
for i := 0; i < len(orgId); i++ {
|
|
sunOrgId := getOrgIdList(orgId[i])
|
|
if len(sunOrgId) > 0 {
|
|
orgId = overallhandle.HeBingArray(orgId, sunOrgId)
|
|
}
|
|
}
|
|
var orgList []models.AdministrativeOrganization
|
|
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`state` = 1 AND `id` IN ?", orgId).Order("sort").Find(&orgList).Error
|
|
if err != nil {
|
|
overallhandle.Result(101, err, c, "没有查询到信息!")
|
|
return
|
|
}
|
|
overallhandle.Result(0, orgList, c)
|
|
}
|
|
|
|
// 获取行政组织ID
|
|
func getOrgIdList(orgId int64) (orgIdList []int64) {
|
|
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`").Where("`state` = 1 AND `ispower` = 1 AND `organization_type` > 2 AND `superior` = ?", orgId).Find(&orgIdList).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-16 14:04:17
|
|
@ 功能:
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GovThreeAboutMan(c *gin.Context) {
|
|
var requestData OrgAndMAnThreeType
|
|
c.ShouldBindJSON(&requestData)
|
|
// if requestData.Id == "" {
|
|
// overallhandle.Result(101, requestData, c, "行政类别Id不能为空!")
|
|
// return
|
|
// }
|
|
redisFileKey := fmt.Sprintf("OrgPost:OrgAndPeople:%v_%v_%v%v%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, "OrgUserTree", requestData.Id, requestData.All, requestData.Level)
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
orgErr, orgUserList := redisClient.Get(redisFileKey)
|
|
var jsonErr error
|
|
if orgErr == true && orgUserList != "" {
|
|
var orgManCont orgPeopleCont
|
|
jsonErr = json.Unmarshal([]byte(orgUserList), &orgManCont)
|
|
outputDataAry := overallhandle.MapOut()
|
|
outputDataAry["three"] = orgManCont.Three
|
|
outputDataAry["list"] = orgManCont.List
|
|
overallhandle.Result(0, outputDataAry, c)
|
|
}
|
|
if jsonErr != nil || orgErr == false {
|
|
//获取行政组织
|
|
var orgList []models.OrgContType
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.OrgContType{}).Select("`id`,`numbe`,`name`,`superior`,`state`,`typename`,`level`").Where("`state` = ? ", 1)
|
|
if requestData.All == 0 {
|
|
requestData.Id = "312"
|
|
gormDb = gormDb.Where("`id` NOT IN ?", []int{312, 293, 305, 306, 307})
|
|
}
|
|
if requestData.Level != 0 {
|
|
gormDb = gormDb.Where("`level` <= ?", requestData.Level)
|
|
}
|
|
|
|
err := gormDb.Find(&orgList).Error
|
|
if err != nil {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
var total int64
|
|
totalErr := gormDb.Count(&total).Error
|
|
if totalErr != nil {
|
|
total = 0
|
|
}
|
|
pageSize := 1
|
|
//计算分协程数据基数
|
|
switch {
|
|
case total > 10 && total <= 10000:
|
|
pageSize = 100
|
|
case total > 10000:
|
|
pageSize = 1000
|
|
default:
|
|
pageSize = 1
|
|
}
|
|
// overallhandle.Result(0, pageSize, c)
|
|
// return
|
|
var sendDataList []OrgAndPeople //组装分组信息
|
|
var allOrgAndPeople synProReadData
|
|
for i, v := range orgList {
|
|
var sendDataCont OrgAndPeople
|
|
sendDataCont.Id = strconv.FormatInt(v.Id, 10) //行政组织Id或人员Key
|
|
sendDataCont.Name = v.Name //行政组织名称或人员名称
|
|
sendDataCont.Number = v.Number //行政组织编号或人员编号
|
|
sendDataCont.OrgId = strconv.FormatInt(v.Id, 10) //行政组织ID
|
|
// sendDataCont.Icon = "" //行政组织头像或人员头像
|
|
sendDataCont.ParentId = strconv.FormatInt(v.Superior, 10) //上级
|
|
sendDataCont.IsMan = 1 //是部门还是个人(1:行政组织;2:人员)
|
|
sendDataCont.Sort = 2
|
|
if (i+1)%pageSize == 0 {
|
|
sendDataList = append(sendDataList, sendDataCont)
|
|
synPro.Add(1)
|
|
go allOrgAndPeople.GetOrgAboutPeople(sendDataList) //协程处理行政组织下的人员信息
|
|
sendDataList = []OrgAndPeople{}
|
|
// fmt.Printf("执行一次---------->%v\n", i)
|
|
} else {
|
|
sendDataList = append(sendDataList, sendDataCont)
|
|
}
|
|
allOrgAndPeople.OrgAndPeopleList = append(allOrgAndPeople.OrgAndPeopleList, sendDataCont)
|
|
}
|
|
if len(sendDataList) > 0 { //判断盈余分组数据
|
|
synPro.Add(1)
|
|
go allOrgAndPeople.GetOrgAboutPeople(sendDataList)
|
|
}
|
|
synPro.Wait()
|
|
// fmt.Printf("%v\n", len(allOrgAndPeople.OrgAndPeopleList))
|
|
for oi, _ := range allOrgAndPeople.OrgAndPeopleList {
|
|
allOrgAndPeople.OrgAndPeopleList[oi].Identify = oi + 1
|
|
}
|
|
|
|
idInt, _ := strconv.ParseInt(requestData.Id, 10, 64)
|
|
sort.Slice(allOrgAndPeople.OrgAndPeopleList, func(i, j int) bool {
|
|
return allOrgAndPeople.OrgAndPeopleList[i].Sort < allOrgAndPeople.OrgAndPeopleList[j].Sort
|
|
})
|
|
// var outputDataList []OrgAndPeople
|
|
// fmt.Printf("idInt------------------>%v\n", idInt)
|
|
govMapThree := OrgAndMAnThree(idInt, allOrgAndPeople.OrgAndPeopleList)
|
|
outputDataAry := overallhandle.MapOut()
|
|
outputDataAry["three"] = govMapThree
|
|
outputDataAry["list"] = allOrgAndPeople.OrgAndPeopleList
|
|
var orgManCont orgPeopleCont
|
|
orgManCont.List = allOrgAndPeople.OrgAndPeopleList
|
|
orgManCont.Three = govMapThree
|
|
sendStr, _ := json.Marshal(orgManCont)
|
|
redisClient.SetRedisTime(86400)
|
|
redisClient.Set(redisFileKey, string(sendStr))
|
|
overallhandle.Result(0, outputDataAry, c)
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-16 15:23:41
|
|
@ 功能: 递归人员行政树
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func OrgAndMAnThree(parentId int64, govAry []OrgAndPeople) []OrgAndPeopleThree {
|
|
orgAndMAnMap := []OrgAndPeopleThree{}
|
|
for _, v := range govAry {
|
|
// var zhucont govThree
|
|
parentIdInt, _ := strconv.ParseInt(v.ParentId, 10, 64)
|
|
// fmt.Printf("------------->%v---->%v\n", parentIdInt, parentId)
|
|
if parentIdInt == parentId {
|
|
orgIdInt, _ := strconv.ParseInt(v.OrgId, 10, 64)
|
|
child := OrgAndMAnThree(orgIdInt, govAry)
|
|
|
|
var node OrgAndPeopleThree
|
|
node.Id = v.Id //行政组织Id或人员Key
|
|
node.Name = v.Name //行政组织名称或人员名称
|
|
node.Number = v.Number //行政组织编号或人员编号
|
|
node.Icon = v.Icon //行政组织头像或人员头像
|
|
node.ParentId = v.ParentId //上级
|
|
node.OrgId = v.OrgId //所属行政组织
|
|
node.IsMan = v.IsMan //是部门还是个人(1:行政组织;2:人员)
|
|
node.Child = child
|
|
node.Sort = v.Sort
|
|
node.Identify = v.Identify
|
|
orgAndMAnMap = append(orgAndMAnMap, node)
|
|
|
|
}
|
|
|
|
}
|
|
return orgAndMAnMap
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-16 14:41:26
|
|
@ 功能: 获取行政组织相关人员
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func (s *synProReadData) GetOrgAboutPeople(orgList []OrgAndPeople) {
|
|
defer synPro.Done()
|
|
countList := len(orgList)
|
|
if countList > 0 {
|
|
var orgId []string
|
|
for i := 0; i < countList; i++ {
|
|
if overallhandle.IsInTrue[string](orgList[i].Id, orgId) == false {
|
|
orgId = append(orgId, orgList[i].Id)
|
|
}
|
|
}
|
|
var peopleList []models.PersonArchives
|
|
err := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`key`,`number`,`name`,`icon`,`admin_org`,`icon_photo`").Where("`state` = ? AND `admin_org` IN ? AND `emp_type` BETWEEN ? AND ? ", 1, orgId, 1, 10).Find(&peopleList).Error
|
|
if err == nil {
|
|
if len(peopleList) > 0 {
|
|
for _, v := range peopleList {
|
|
s.MakePeopleToOrg(v, orgList)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-16 15:05:40
|
|
@ 功能: 组装人员与行政组织的关联信息
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func (s *synProReadData) MakePeopleToOrg(manCont models.PersonArchives, orgList []OrgAndPeople) {
|
|
for _, v := range orgList {
|
|
orgIdStr := strconv.FormatInt(manCont.AdminOrg, 10)
|
|
if v.Id == orgIdStr {
|
|
var sendDataCont OrgAndPeople
|
|
sendDataCont.Id = strconv.FormatInt(manCont.Key, 10) //行政组织Id或人员Key
|
|
sendDataCont.Name = manCont.Name //行政组织名称或人员名称
|
|
sendDataCont.Number = manCont.Number //行政组织编号或人员编号
|
|
sendDataCont.OrgId = "-1" //行政组织ID
|
|
sendDataCont.Icon = manCont.Icon //行政组织头像或人员头像
|
|
sendDataCont.ParentId = v.Id //上级
|
|
sendDataCont.IsMan = 2 //是部门还是个人(1:行政组织;2:人员)
|
|
sendDataCont.Sort = 1
|
|
sendDataCont.IconBase64 = manCont.IconPhoto
|
|
sendDataCont.AllName = fmt.Sprintf("%v(%v)", manCont.Name, manCont.Number)
|
|
s.OrgAndPeopleList = append(s.OrgAndPeopleList, sendDataCont)
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-18 14:28:19
|
|
@ 功能: 角色组织与人员搜索列表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) SearchOrgAndPeople(c *gin.Context) {
|
|
var requestData NameVal
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
if requestData.Name == "" {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
var sendPeopleContList []OrgAndPeople
|
|
var sendOrgContList []OrgAndPeople
|
|
//搜索人
|
|
var peopleList []models.PersonArchives
|
|
gormDbMan := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`key`,`number`,`name`,`icon`,`admin_org`").Where("`state` = ? AND `emp_type` BETWEEN ? AND ? ", 1, 1, 10)
|
|
if requestData.Name != "" {
|
|
gormDbMan = gormDbMan.Where("`name` LIKE ?", "%"+requestData.Name+"%")
|
|
}
|
|
Identify := 1
|
|
err = gormDbMan.Find(&peopleList).Error
|
|
if err == nil {
|
|
for _, v := range peopleList {
|
|
var sendDataCont OrgAndPeople
|
|
sendDataCont.Id = strconv.FormatInt(v.Key, 10) //行政组织Id或人员Key
|
|
sendDataCont.Name = v.Name //行政组织名称或人员名称
|
|
sendDataCont.Number = v.Number //行政组织编号或人员编号
|
|
sendDataCont.OrgId = "-1" //行政组织ID
|
|
sendDataCont.Icon = v.Icon //行政组织头像或人员头像
|
|
sendDataCont.ParentId = strconv.FormatInt(v.AdminOrg, 10) //上级
|
|
sendDataCont.IsMan = 2 //是部门还是个人(1:行政组织;2:人员)
|
|
sendDataCont.Sort = 1
|
|
sendDataCont.Identify = Identify
|
|
sendDataCont.AllName = fmt.Sprintf("%v(%v)", v.Name, v.Number)
|
|
sendPeopleContList = append(sendPeopleContList, sendDataCont)
|
|
Identify++
|
|
}
|
|
}
|
|
//搜索行政组织
|
|
var orgList []models.OrgContType
|
|
gormDbOrg := overall.CONSTANT_DB_HR.Model(&models.OrgContType{}).Select("`id`,`numbe`,`name`,`superior`,`level`").Where("`state` = ?", 1)
|
|
if requestData.Name != "" {
|
|
gormDbOrg = gormDbOrg.Where("`name` LIKE ?", "%"+requestData.Name+"%")
|
|
}
|
|
err = gormDbOrg.Find(&orgList).Error
|
|
if err == nil {
|
|
for _, v := range orgList {
|
|
sendName := GetAllOrgName(v.Id, v.Level, v.Name)
|
|
|
|
var sendDataOrgCont OrgAndPeople
|
|
sendDataOrgCont.Id = strconv.FormatInt(v.Id, 10) //行政组织Id或人员Key
|
|
sendDataOrgCont.Name = v.Name //行政组织名称或人员名称
|
|
sendDataOrgCont.Number = v.Number //行政组织编号或人员编号
|
|
sendDataOrgCont.OrgId = strconv.FormatInt(v.Id, 10) //行政组织ID
|
|
// sendDataOrgCont.Icon = "" //行政组织头像或人员头像
|
|
sendDataOrgCont.ParentId = strconv.FormatInt(v.Superior, 10) //上级
|
|
sendDataOrgCont.IsMan = 1 //是部门还是个人(1:行政组织;2:人员)
|
|
sendDataOrgCont.Sort = 2
|
|
sendDataOrgCont.AllName = sendName
|
|
sendDataOrgCont.Identify = Identify
|
|
sendOrgContList = append(sendOrgContList, sendDataOrgCont)
|
|
Identify++
|
|
}
|
|
}
|
|
outPutData := overallhandle.MapOut()
|
|
outPutData["people"] = sendPeopleContList
|
|
outPutData["org"] = sendOrgContList
|
|
overallhandle.Result(0, outPutData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-11-18 15:07:18
|
|
@ 功能: 获取名称
|
|
@ 参数
|
|
|
|
#id 行政组织ID
|
|
#level 等级
|
|
#name 名称
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
*/
|
|
func GetAllOrgName(id, level int64, name string) (allName string) {
|
|
if level <= 3 {
|
|
allName = name
|
|
} else {
|
|
_, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(id)
|
|
var comCont models.AdministrativeOrganization
|
|
comCont.GetCont(map[string]interface{}{"`id`": companyId}, "`name`")
|
|
switch level {
|
|
case 4:
|
|
allName = fmt.Sprintf("%v / %v", name, comCont.Name)
|
|
case 5:
|
|
var mainDepartCont models.AdministrativeOrganization
|
|
mainDepartCont.GetCont(map[string]interface{}{"`id`": departmentId}, "`name`")
|
|
allName = fmt.Sprintf("%v / %v / %v", name, mainDepartCont.Name, comCont.Name)
|
|
case 6:
|
|
if departmentId != sunDepartId {
|
|
var mainDepartCont models.AdministrativeOrganization
|
|
mainDepartCont.GetCont(map[string]interface{}{"`id`": departmentId}, "`name`")
|
|
var sunDepartCont models.AdministrativeOrganization
|
|
sunDepartCont.GetCont(map[string]interface{}{"`id`": sunDepartId}, "`name`")
|
|
allName = fmt.Sprintf("%v / %v / %v / %v", name, sunDepartCont.Name, mainDepartCont.Name, comCont.Name)
|
|
} else {
|
|
if departmentId != companyId {
|
|
var mainDepartCont models.AdministrativeOrganization
|
|
mainDepartCont.GetCont(map[string]interface{}{"`id`": departmentId}, "`name`")
|
|
allName = fmt.Sprintf("%v / %v / %v", name, mainDepartCont.Name, comCont.Name)
|
|
} else {
|
|
allName = fmt.Sprintf("%v / %v", name, comCont.Name)
|
|
}
|
|
|
|
}
|
|
|
|
default:
|
|
allName = name
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-19 10:41:34
|
|
@ 功能: 获取行政组织及相关人员
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GetOrgAndEveryOnePeople(c *gin.Context) {
|
|
var requestData OrgAndMAnThreeType
|
|
c.ShouldBindJSON(&requestData)
|
|
|
|
//获取行政组织
|
|
var sunAry overallhandle.AllSunList[int64]
|
|
var orgIdList []int64
|
|
var origin int64
|
|
isNotIn := 0
|
|
if requestData.All == 0 {
|
|
if requestData.Id == "" {
|
|
origin = 0
|
|
isNotIn = 1
|
|
orgIdList = []int64{312, 293, 305, 306, 307}
|
|
} else {
|
|
idInt64, _ := strconv.ParseInt(requestData.Id, 10, 64)
|
|
origin = idInt64
|
|
sunAry.GetAllSunOrg(idInt64)
|
|
orgIdList = sunAry.SunList
|
|
}
|
|
} else {
|
|
if requestData.Id != "" {
|
|
idInt64, _ := strconv.ParseInt(requestData.Id, 10, 64)
|
|
origin = idInt64
|
|
sunAry.GetAllSunOrg(idInt64)
|
|
orgIdList = sunAry.SunList
|
|
}
|
|
}
|
|
if !overallhandle.IsInTrue[int64](origin, orgIdList) {
|
|
orgIdList = append(orgIdList, origin)
|
|
}
|
|
fmt.Printf("获取行政组织--->%v\n", orgIdList)
|
|
var orgAndPeopleListCont empowerSync //启用协程结构体
|
|
synPro.Add(1)
|
|
go orgAndPeopleListCont.GetOrgList(isNotIn, orgIdList, requestData.Level) //获取行政组织
|
|
synPro.Add(1)
|
|
go orgAndPeopleListCont.GetPeopleList(isNotIn, orgIdList) //获取人员
|
|
synPro.Wait()
|
|
orgAndManList := orgAndPeopleListCont.readDataLock()
|
|
|
|
sort.Slice(orgAndManList, func(i, j int) bool {
|
|
return orgAndManList[i].Type < orgAndManList[j].Type
|
|
})
|
|
|
|
sendList := OrgAndManNewThree(origin, orgAndManList)
|
|
|
|
overallhandle.Result(0, sendList, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-19 11:18:39
|
|
@ 功能: 获取行政组织(协程)
|
|
@ 参数
|
|
|
|
#orgId 行政组织ID
|
|
#level 获取等级
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#func (e *empowerSync) GetOrgList(orgId []int64, level int)
|
|
*/
|
|
func (e *empowerSync) GetOrgList(isNotIn int, orgId []int64, level int) {
|
|
e.mutext.Lock()
|
|
defer e.mutext.Unlock()
|
|
var orgList []models.AdministrativeOrganization
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`number`,`name`,`superior`").Where("`state` = ? ", 1)
|
|
if len(orgId) > 0 {
|
|
if isNotIn == 1 {
|
|
gormDb = gormDb.Where("`id` NOT IN ?", orgId)
|
|
} else {
|
|
gormDb = gormDb.Where("`id` IN ?", orgId)
|
|
}
|
|
}
|
|
if level != 0 {
|
|
gormDb = gormDb.Where("`level` <= ?", level)
|
|
}
|
|
err := gormDb.Find(&orgList).Error
|
|
if err == nil && len(orgList) > 0 {
|
|
for _, v := range orgList {
|
|
var orgCont OrgAndEveryOnePeople
|
|
orgCont.Id = strconv.FormatInt(v.Id, 10) //识别符
|
|
orgCont.OrgId = v.Id
|
|
orgCont.Number = v.Number //编号
|
|
orgCont.Name = v.Name //姓名
|
|
orgCont.Superior = strconv.FormatInt(v.Superior, 10) //上级
|
|
orgCont.Type = 1
|
|
orgCont.Key = fmt.Sprintf("A%v", v.Id)
|
|
e.orgAndPeopleList = append(e.orgAndPeopleList, orgCont)
|
|
}
|
|
}
|
|
synPro.Done()
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-19 11:24:44
|
|
@ 功能: 获取人员(协程)
|
|
@ 参数
|
|
|
|
#orgId 行政组织ID
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (e *empowerSync) GetPeopleList(isNotIn int, orgId []int64) {
|
|
e.mutext.Lock()
|
|
defer e.mutext.Unlock()
|
|
var peopleList []models.PersonArchives
|
|
gormDnMan := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`key`,`number`,`name`,`icon`,`icon_photo`,`admin_org`").Where("`state` = 1 AND `emp_type` BETWEEN ? AND ?", 1, 10)
|
|
if len(orgId) > 0 {
|
|
if isNotIn == 1 {
|
|
gormDnMan = gormDnMan.Where("`admin_org` NOT IN ?", orgId)
|
|
} else {
|
|
gormDnMan = gormDnMan.Where("`admin_org` IN ?", orgId)
|
|
}
|
|
|
|
}
|
|
err := gormDnMan.Find(&peopleList).Error
|
|
if err == nil && len(peopleList) > 0 {
|
|
for _, v := range peopleList {
|
|
var peopleCont OrgAndEveryOnePeople
|
|
peopleCont.Id = strconv.FormatInt(v.Key, 10) //识别符
|
|
peopleCont.OrgId = -1
|
|
peopleCont.Number = v.Number //编号
|
|
peopleCont.Name = v.Name //姓名
|
|
peopleCont.Superior = strconv.FormatInt(v.AdminOrg, 10) //上级
|
|
peopleCont.Icon = v.Icon
|
|
peopleCont.IconPhoto = v.IconPhoto
|
|
peopleCont.Type = 2
|
|
peopleCont.Key = fmt.Sprintf("U%v", v.Key)
|
|
e.orgAndPeopleList = append(e.orgAndPeopleList, peopleCont)
|
|
}
|
|
}
|
|
synPro.Done()
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-19 14:28:48
|
|
@ 功能: 新版人员与行政组织树
|
|
@ 参数
|
|
|
|
#parentId 上级ID
|
|
#govAry 数据
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#func OrgAndManNewThree(parentId int64, govAry []OrgAndEveryOnePeople) []OrgAndManThree
|
|
*/
|
|
func OrgAndManNewThree(parentId int64, govAry []OrgAndEveryOnePeople) []OrgAndManThree {
|
|
orgAndMAnMap := []OrgAndManThree{}
|
|
for _, v := range govAry {
|
|
// var zhucont govThree
|
|
parentIdInt, _ := strconv.ParseInt(v.Superior, 10, 64)
|
|
// fmt.Printf("------------->%v---->%v\n", parentIdInt, parentId)
|
|
if parentIdInt == parentId {
|
|
|
|
child := OrgAndManNewThree(v.OrgId, govAry)
|
|
|
|
var node OrgAndManThree
|
|
node.Id = v.Id //识别符
|
|
node.OrgId = v.OrgId
|
|
node.Number = v.Number //编号
|
|
node.Name = v.Name //姓名
|
|
node.Superior = v.Superior //上级
|
|
node.Icon = v.Icon
|
|
node.IconPhoto = v.IconPhoto
|
|
node.Type = v.Type
|
|
node.Key = v.Key
|
|
if len(child) > 0 {
|
|
node.Child = child
|
|
}
|
|
|
|
orgAndMAnMap = append(orgAndMAnMap, node)
|
|
|
|
}
|
|
|
|
}
|
|
return orgAndMAnMap
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-29 09:26:04
|
|
@ 功能: 根据行政组织编号获取组织及人员
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) BasisOrgObtainSonOrgAndMan(c *gin.Context) {
|
|
var requestData overallhandle.ConstId
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
//获取当前行政组织信息
|
|
var orgCont models.AdministrativeOrganization
|
|
isNotIn := 0
|
|
var idList []int64
|
|
|
|
var parenAry overallhandle.AllSunList[int64]
|
|
|
|
if requestData.Id != "" {
|
|
idInt, _ := strconv.ParseInt(requestData.Id, 10, 64)
|
|
|
|
idList = []int64{idInt}
|
|
if idInt != 313 {
|
|
err = orgCont.GetCont(map[string]interface{}{"id": idInt})
|
|
parenAry.SunList = append(parenAry.SunList, idInt)
|
|
parenAry.GetAllParentOrg(idInt, 2)
|
|
} else {
|
|
|
|
}
|
|
|
|
} else {
|
|
isNotIn = 1
|
|
idList = []int64{312, 293, 305, 306, 307}
|
|
err = fmt.Errorf("获取全部内容")
|
|
}
|
|
var sendData ShenPiXuanRen
|
|
// fmt.Printf("组织id列表------------》%v\n", parenAry.SunList)
|
|
if len(parenAry.SunList) > 0 {
|
|
var orgAndPeopleListTitleCont empowerSynces //启用协程结构体
|
|
synProes.Add(1)
|
|
go orgAndPeopleListTitleCont.BasisOrgDirectOrgIng(parenAry.SunList) //获取行政组织
|
|
synProes.Wait()
|
|
orgTitleList := orgAndPeopleListTitleCont.readDataLock()
|
|
sort.SliceStable(orgTitleList, func(i, j int) bool {
|
|
return orgTitleList[i].Sort < orgTitleList[j].Sort
|
|
})
|
|
for _, ov := range orgTitleList {
|
|
var titleDepartCont TitleDepartmentsCont
|
|
titleDepartCont.DepartmentId = ov.Id //行政组织ID
|
|
titleDepartCont.Id = ov.Id //行政组织ID
|
|
titleDepartCont.DepartmentKey = ov.Number //行政组织编码
|
|
titleDepartCont.DepartmentName = ov.Name //行政组织名称
|
|
titleDepartCont.ParentId = ov.Superior //上级ID
|
|
titleDepartCont.DepartmentNames = ov.Name //行政组织别名
|
|
sendData.TitleDepartments = append(sendData.TitleDepartments, titleDepartCont)
|
|
}
|
|
|
|
}
|
|
|
|
var orgAndPeopleListCont empowerSyncDepartMan //启用协程结构体
|
|
synPro.Add(1)
|
|
go orgAndPeopleListCont.BasisOrgDirectOrg(isNotIn, idList, 2) //获取行政组织
|
|
synPro.Add(1)
|
|
go orgAndPeopleListCont.GetPeopleListIng(isNotIn, idList) //获取人员
|
|
synPro.Wait()
|
|
orgList, manList := orgAndPeopleListCont.readDataLock()
|
|
if len(orgList) > 0 {
|
|
for _, org := range orgList {
|
|
var orgShenPi ChildDepartmentsCont
|
|
orgShenPi.Id = org.Id //行政组织ID
|
|
orgShenPi.DepartmentKey = org.Number //行政组织编码
|
|
orgShenPi.DepartmentName = org.Name //行政组织名称
|
|
orgShenPi.ParentId = org.Superior //上级ID
|
|
orgShenPi.DepartmentNames = org.Name //行政组织别名
|
|
sendData.ChildDepartments = append(sendData.ChildDepartments, orgShenPi)
|
|
}
|
|
}
|
|
if len(manList) > 0 {
|
|
for _, man := range manList {
|
|
var employess EmployeesCont
|
|
employess.Id = man.Id
|
|
employess.EmployeeName = man.Name //人员名称
|
|
employess.IsLeave = "0" //行政组织名称
|
|
employess.Open = "false" //上级ID
|
|
employess.Icon = man.Icon
|
|
employess.IconToBase64 = man.IconPhoto
|
|
employess.Wechat = man.Wechat
|
|
employess.Departmentid = man.DepartmentId //部门ID
|
|
employess.DepartmentName = man.DepartmentName //部门名称
|
|
employess.Postid = man.PostId //岗位ID
|
|
employess.PostName = man.PostName //岗位名称
|
|
employess.Tema = man.Tema //班组Id
|
|
employess.TemaName = man.TemaName //班组名称
|
|
sendData.Employees = append(sendData.Employees, employess)
|
|
}
|
|
}
|
|
// outMap := overallhandle.MapOut()
|
|
// outMap["sendData"] = sendData
|
|
// outMap["orgList"] = orgList
|
|
// outMap["manList"] = manList
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-19 11:24:44
|
|
@ 功能: 获取人员(协程)
|
|
@ 参数
|
|
|
|
#orgId 行政组织ID
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (e *empowerSyncDepartMan) GetPeopleListIng(isNotIn int, orgId []int64) {
|
|
e.mutext.Lock()
|
|
defer e.mutext.Unlock()
|
|
var peopleList []models.PersonArchives
|
|
gormDnMan := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`key`,`number`,`name`,`icon`,`icon_photo`,`admin_org`,`wechat`,`work_wechat`,`position`,`teamid`").Where("`state` = 1 AND `emp_type` BETWEEN ? AND ?", 1, 10)
|
|
if len(orgId) > 0 {
|
|
if isNotIn == 1 {
|
|
gormDnMan = gormDnMan.Where("`admin_org` NOT IN ?", orgId)
|
|
} else {
|
|
gormDnMan = gormDnMan.Where("`admin_org` IN ?", orgId)
|
|
}
|
|
|
|
}
|
|
err := gormDnMan.Find(&peopleList).Error
|
|
if err == nil && len(peopleList) > 0 {
|
|
for _, v := range peopleList {
|
|
var peopleCont OrgAndEveryOnePeople
|
|
peopleCont.Id = strconv.FormatInt(v.Key, 10) //识别符
|
|
peopleCont.OrgId = -1
|
|
peopleCont.Number = v.Number //编号
|
|
peopleCont.Name = v.Name //姓名
|
|
peopleCont.Superior = strconv.FormatInt(v.AdminOrg, 10) //上级
|
|
peopleCont.Icon = v.Icon
|
|
peopleCont.IconPhoto = v.IconPhoto
|
|
peopleCont.Type = 2
|
|
peopleCont.Wechat = v.Wechat
|
|
if v.WorkWechat != "" {
|
|
peopleCont.Wechat = v.WorkWechat
|
|
}
|
|
peopleCont.Key = fmt.Sprintf("U%v", v.Key)
|
|
|
|
_, _, companyId, _, _ := overallhandle.GetOrgStructure(v.AdminOrg)
|
|
if companyId != 0 {
|
|
var orgCont models.AdministrativeOrganization
|
|
orgCont.GetCont(map[string]interface{}{"`id`": companyId}, "`name`")
|
|
peopleCont.DepartmentId = companyId //分厂Id
|
|
peopleCont.DepartmentName = orgCont.Name //分厂名称
|
|
}
|
|
//获取岗位
|
|
if v.Position != 0 {
|
|
var postCont models.Position
|
|
postCont.GetCont(map[string]interface{}{"`id`": v.Position}, "`name`")
|
|
peopleCont.PostId = v.Position //职务Id
|
|
peopleCont.PostName = postCont.Name //职务名称
|
|
}
|
|
if v.TeamId != 0 {
|
|
var teamCont models.TeamGroup
|
|
teamCont.GetCont(map[string]interface{}{"`id`": v.TeamId}, "`name`")
|
|
peopleCont.Tema = v.TeamId //班组Id
|
|
peopleCont.TemaName = teamCont.Name //班组名称
|
|
}
|
|
e.peopleList = append(e.peopleList, peopleCont)
|
|
}
|
|
}
|
|
synPro.Done()
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-01-29 09:54:05
|
|
@ 功能: 根据行政组织ID获取直接下级
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (e *empowerSyncDepartMan) BasisOrgDirectOrg(isNotIn int, orgId []int64, level int) {
|
|
e.mutext.Lock()
|
|
defer e.mutext.Unlock()
|
|
var orgList []models.OrgContType
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.OrgContType{}).Select("`id`,`numbe`,`name`,`superior`").Where("`state` = ? ", 1)
|
|
if len(orgId) > 0 {
|
|
if isNotIn == 1 {
|
|
gormDb = gormDb.Where("`id` NOT IN ?", orgId)
|
|
} else {
|
|
gormDb = gormDb.Where("`superior` IN ?", orgId)
|
|
}
|
|
}
|
|
if level != 0 {
|
|
gormDb = gormDb.Where("`level` > ?", level)
|
|
}
|
|
err := gormDb.Find(&orgList).Error
|
|
listCount := len(orgList)
|
|
if err == nil && listCount > 0 {
|
|
for i, v := range orgList {
|
|
var orgCont OrgAndEveryOnePeople
|
|
orgCont.Id = strconv.FormatInt(v.Id, 10) //识别符
|
|
orgCont.OrgId = v.Id
|
|
orgCont.Number = v.Number //编号
|
|
orgCont.Name = v.Name //行政组织名称
|
|
orgCont.Superior = strconv.FormatInt(v.Superior, 10) //上级
|
|
orgCont.Type = 1
|
|
orgCont.Key = fmt.Sprintf("A%v", v.Id)
|
|
orgCont.Sort = listCount - i
|
|
e.orgList = append(e.orgList, orgCont)
|
|
}
|
|
}
|
|
synPro.Done()
|
|
}
|
|
func (e *empowerSynces) BasisOrgDirectOrgIng(orgId []int64) {
|
|
e.mutext.Lock()
|
|
defer e.mutext.Unlock()
|
|
listCount := len(orgId)
|
|
if listCount > 0 {
|
|
for i, v := range orgId {
|
|
var orgContOld models.AdministrativeOrganization
|
|
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`number`,`name`,`superior`").Where("`id` = ? ", v).First(&orgContOld).Error
|
|
if err == nil {
|
|
var orgCont OrgAndEveryOnePeople
|
|
orgCont.Id = strconv.FormatInt(orgContOld.Id, 10) //识别符
|
|
orgCont.OrgId = orgContOld.Id
|
|
orgCont.Number = orgContOld.Number //编号
|
|
orgCont.Name = orgContOld.Name //行政组织名称
|
|
orgCont.Superior = strconv.FormatInt(orgContOld.Superior, 10) //上级
|
|
orgCont.Type = 1
|
|
orgCont.Key = fmt.Sprintf("A%v", orgContOld.Id)
|
|
orgCont.Sort = listCount - i
|
|
e.orgAndPeopleList = append(e.orgAndPeopleList, orgCont)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
synProes.Done()
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-02-15 10:46:22
|
|
@ 功能: 获取指定行政组织列表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GetAppointOrg(c *gin.Context) {
|
|
var requestData OrgIdList
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if len(requestData.OrgId) < 1 {
|
|
overallhandle.Result(1, err, c, "请选择行政组织!")
|
|
return
|
|
}
|
|
var orgList []models.AdministrativeOrganization
|
|
err = overall.CONSTANT_DB_HR.Where("`id` IN ?", requestData.OrgId).Find(&orgList).Error
|
|
if err != nil || len(orgList) < 1 {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
overallhandle.Result(0, orgList, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-04-22 15:56:42
|
|
@ 功能:
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) BasisOrgAllPeople(c *gin.Context) {
|
|
var requestData overallhandle.ConstId
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == "" {
|
|
overallhandle.Result(101, err, c)
|
|
return
|
|
}
|
|
orgInt, _ := strconv.ParseInt(requestData.Id, 10, 64)
|
|
var sunAry overallhandle.AllSunList[int64]
|
|
sunAry.GetAllSunOrg(orgInt)
|
|
sunAry.SunList = append(sunAry.SunList, orgInt)
|
|
var userList []models.PersonArchives
|
|
err = overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Where("emp_type BETWEEN 1 AND 10 AND admin_org IN ?", sunAry.SunList).Find(&userList).Error
|
|
if err != nil {
|
|
overallhandle.Result(105, err, c)
|
|
return
|
|
}
|
|
var sendContList []OrgAllPeopleList
|
|
for _, v := range userList {
|
|
var sendCont OrgAllPeopleList
|
|
sendCont.Id = strconv.FormatInt(v.Id, 10) //id"`
|
|
sendCont.Number = v.Number //number"`
|
|
sendCont.Name = v.Name //name"`
|
|
sendCont.Icon = v.Icon //icon"`
|
|
sendCont.Adminorg = strconv.FormatInt(v.AdminOrg, 10) //adminorg"`
|
|
sendCont.Teamid = strconv.FormatInt(v.TeamId, 10) //teamid"`
|
|
sendCont.Position = strconv.FormatInt(v.Position, 10) //position"`
|
|
sendCont.Wechat = v.Wechat //wechat"`
|
|
if v.WorkWechat != "" {
|
|
sendCont.Wechat = v.WorkWechat
|
|
}
|
|
sendCont.Key = strconv.FormatInt(v.Key, 10) //key"`
|
|
sendCont.Iconphoto = v.IconPhoto //iconphoto"`
|
|
sendContList = append(sendContList, sendCont)
|
|
}
|
|
overallhandle.Result(0, sendContList, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-06-05 11:53:21
|
|
@ 功能:
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GovNewThreeIng(c *gin.Context) {
|
|
var requestData SearchOrgCont
|
|
c.ShouldBindJSON(&requestData)
|
|
var orgContList []hrmodels.OrgCont
|
|
gotmDb := overall.CONSTANT_DB_HR.Model(&hrmodels.OrgCont{}).Where("state IN ?", []int{1, 2})
|
|
if requestData.KeyWords != "" {
|
|
gotmDb = gotmDb.Where("name LIKE ? OR number LIKE ?", "%"+requestData.KeyWords+"%", "%"+requestData.KeyWords+"%")
|
|
}
|
|
if requestData.Class != 0 {
|
|
gotmDb = gotmDb.Where("organization_type = ?", requestData.Class)
|
|
}
|
|
err := gotmDb.Find(&orgContList).Error
|
|
if err != nil && len(orgContList) < 1 {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
if requestData.KeyWords != "" || requestData.Class != 0 {
|
|
var govMap []SendOrgTreeList
|
|
for i := 0; i < len(orgContList); i++ {
|
|
var govCont SendOrgTreeList
|
|
govCont.Id = orgContList[i].Id //
|
|
govCont.Number = orgContList[i].Number //行政编码"`
|
|
govCont.Name = orgContList[i].Name //组织名称"`
|
|
govCont.Superior = orgContList[i].Superior //上级ID"`
|
|
govCont.OrganizationType = orgContList[i].OrganizationType //行政组织类型"`
|
|
govCont.Abbreviation = orgContList[i].Abbreviation //行政组织简称"`
|
|
govCont.Time = orgContList[i].Time //创建时间"`
|
|
govCont.State = orgContList[i].State //状态(1:启用;2:禁用;3:删除)"`
|
|
govCont.WechatOrganizationId = orgContList[i].WechatOrganizationId //微信组织架构对照码"`
|
|
govCont.SuperiorSun = orgContList[i].SuperiorSun //级联ID"`
|
|
govCont.Schoole = orgContList[i].Schoole //原知行学院对照码"`
|
|
govCont.KingdeeId = orgContList[i].KingdeeId //金蝶对照ID"`
|
|
govCont.IsPower = orgContList[i].IsPower //是否为实权部门"`
|
|
govCont.Sort = orgContList[i].Sort //排序"`
|
|
govCont.TypeName = orgContList[i].TypeName //'类型名称"`
|
|
govCont.Level = orgContList[i].Level //级别"`
|
|
if orgContList[i].State == 1 {
|
|
govCont.Status = true
|
|
} else {
|
|
govCont.Status = false
|
|
}
|
|
govMap = append(govMap, govCont)
|
|
}
|
|
overallhandle.Result(0, govMap, c)
|
|
} else {
|
|
if requestData.OrgId == 0 {
|
|
requestData.OrgId = 313
|
|
}
|
|
govMapThree := GovOrgTree(requestData.OrgId, orgContList)
|
|
overallhandle.Result(0, govMapThree, c)
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-06-05 13:24:19
|
|
@ 功能: 行政组织树
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func GovOrgTree(parentId int64, govList []hrmodels.OrgCont) (govMap []SendOrgTreeList) {
|
|
|
|
for i := 0; i < len(govList); i++ {
|
|
if govList[i].Superior == parentId {
|
|
var govCont SendOrgTreeList
|
|
govCont.Id = govList[i].Id //
|
|
govCont.Number = govList[i].Number //行政编码"`
|
|
govCont.Name = govList[i].Name //组织名称"`
|
|
govCont.Superior = govList[i].Superior //上级ID"`
|
|
govCont.OrganizationType = govList[i].OrganizationType //行政组织类型"`
|
|
govCont.Abbreviation = govList[i].Abbreviation //行政组织简称"`
|
|
govCont.Time = govList[i].Time //创建时间"`
|
|
govCont.State = govList[i].State //状态(1:启用;2:禁用;3:删除)"`
|
|
govCont.WechatOrganizationId = govList[i].WechatOrganizationId //微信组织架构对照码"`
|
|
govCont.SuperiorSun = govList[i].SuperiorSun //级联ID"`
|
|
govCont.Schoole = govList[i].Schoole //原知行学院对照码"`
|
|
govCont.KingdeeId = govList[i].KingdeeId //金蝶对照ID"`
|
|
govCont.IsPower = govList[i].IsPower //是否为实权部门"`
|
|
govCont.Sort = govList[i].Sort //排序"`
|
|
govCont.TypeName = govList[i].TypeName //'类型名称"`
|
|
govCont.Level = govList[i].Level //级别"`
|
|
if govList[i].State == 1 {
|
|
govCont.Status = true
|
|
} else {
|
|
govCont.Status = false
|
|
}
|
|
govCont.Child = GovOrgTree(govList[i].Id, govList)
|
|
govMap = append(govMap, govCont)
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// 添加行政组织
|
|
func (o *OrganizationApi) NewAddGovCont(c *gin.Context) {
|
|
var requestData addGovInfoNew
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Name == "" {
|
|
overallhandle.Result(101, requestData.Name, c, "行政组织名称为空!")
|
|
return
|
|
}
|
|
var superiorId int64 = 0
|
|
if requestData.Superior != "" {
|
|
superiorInt, _ := strconv.ParseInt(requestData.Superior, 10, 64)
|
|
superiorId = superiorInt
|
|
} else {
|
|
overallhandle.Result(101, requestData.Superior, c, "请指定归属上级!")
|
|
return
|
|
}
|
|
var govClassId int64 = 0
|
|
if requestData.GovClass == "" {
|
|
overallhandle.Result(101, requestData.GovClass, c, "请指定归属行政组织类型!")
|
|
return
|
|
} else {
|
|
govClassIdInt, _ := strconv.ParseInt(requestData.GovClass, 10, 64)
|
|
govClassId = govClassIdInt
|
|
}
|
|
var wechatIdVal int64 = 0
|
|
if requestData.WechatId != "" {
|
|
wechatIdVal, _ = strconv.ParseInt(requestData.WechatId, 10, 64)
|
|
// requestData.WechatId = 1
|
|
}
|
|
var name string
|
|
judgeErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`name`").Where("`organization_type` IN ? AND `name` = ?", []int{1, 2}, requestData.Name).First(&name).Error
|
|
if judgeErr == nil {
|
|
overallhandle.Result(103, name, c)
|
|
return
|
|
}
|
|
var saveData models.AdministrativeOrganization
|
|
saveData.Name = requestData.Name
|
|
saveData.Superior = superiorId
|
|
saveData.OrganizationType = govClassId
|
|
saveData.Abbreviation = requestData.Abbreviation
|
|
saveData.Time = time.Now().Unix()
|
|
saveData.State = 1
|
|
// saveData.WechatOrganizationId = int64(requestData.WechatId)
|
|
saveData.WechatOrganizationId = wechatIdVal
|
|
if requestData.Number != "" {
|
|
saveData.Number = requestData.Number
|
|
} else {
|
|
//获取首字母
|
|
govFirstWords := overallhandle.GetGovFirstWords(requestData.Name, requestData.Abbreviation, requestData.GovClass, requestData.Superior)
|
|
saveData.Number = overallhandle.CreateNumber(govFirstWords, requestData.Superior)
|
|
}
|
|
saveErr := overall.CONSTANT_DB_HR.Create(&saveData).Error
|
|
if saveErr == nil {
|
|
overallhandle.Result(0, saveData, c)
|
|
} else {
|
|
overallhandle.Result(104, saveErr, c)
|
|
}
|
|
}
|
|
|
|
// 编辑行政组织
|
|
func (o *OrganizationApi) NewEiteGovCont(c *gin.Context) {
|
|
var requestData NewEiteGovInfo
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 {
|
|
overallhandle.Result(101, err, c, "行政类别Id不能为空!")
|
|
return
|
|
}
|
|
|
|
whereAry := overallhandle.MapOut()
|
|
whereAry["id"] = requestData.Id
|
|
var govCont models.AdministrativeOrganization
|
|
judgeErr := govCont.GetCont(whereAry)
|
|
if judgeErr != nil {
|
|
overallhandle.Result(107, judgeErr, c)
|
|
return
|
|
}
|
|
saveData := overallhandle.MapOut()
|
|
saveData["time"] = time.Now().Unix()
|
|
if requestData.Name != "" && requestData.Name != govCont.Name {
|
|
saveData["name"] = requestData.Name
|
|
}
|
|
if requestData.Superior != "" && requestData.Superior != strconv.FormatInt(govCont.Superior, 10) {
|
|
saveData["superior"] = requestData.Superior
|
|
}
|
|
|
|
if requestData.GovClass != "" && requestData.GovClass != strconv.FormatInt(govCont.OrganizationType, 10) {
|
|
saveData["organization_type"] = requestData.GovClass
|
|
}
|
|
if requestData.Abbreviation != "" && requestData.Abbreviation != govCont.Abbreviation {
|
|
saveData["abbreviation"] = requestData.Abbreviation
|
|
}
|
|
if requestData.WechatId != "" {
|
|
wechatIdInt, _ := strconv.ParseInt(requestData.WechatId, 10, 64)
|
|
if wechatIdInt != govCont.WechatOrganizationId {
|
|
saveData["wechat_organization_id"] = wechatIdInt
|
|
}
|
|
} else {
|
|
saveData["wechat_organization_id"] = 0
|
|
}
|
|
if requestData.Number != "" && requestData.Number != govCont.Number {
|
|
if requestData.Superior != "" && requestData.Superior != strconv.FormatInt(govCont.Superior, 10) {
|
|
//获取首字母
|
|
govFirstWords := overallhandle.GetGovFirstWords(requestData.Name, requestData.Abbreviation, requestData.GovClass, requestData.Superior)
|
|
saveData["number"] = overallhandle.CreateNumber(govFirstWords, requestData.Superior)
|
|
} else if requestData.Superior != "" {
|
|
saveData["number"] = requestData.Number
|
|
}
|
|
}
|
|
eiteErr := govCont.EiteCont(whereAry, saveData)
|
|
if eiteErr != nil {
|
|
overallhandle.Result(106, eiteErr, c)
|
|
} else {
|
|
overallhandle.Result(0, saveData, c)
|
|
}
|
|
}
|
|
|
|
// 改变行政组织状态
|
|
func (o *OrganizationApi) NewEiteGovStateOrDel(c *gin.Context) {
|
|
var requestData DelOrgStatus
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 {
|
|
overallhandle.Result(1, err, c, "未知行政组织!请检查!")
|
|
return
|
|
}
|
|
if requestData.Status == 0 {
|
|
requestData.Status = 1
|
|
}
|
|
if requestData.IsTrue == 0 {
|
|
requestData.IsTrue = 2
|
|
}
|
|
where := overallhandle.MapOut()
|
|
where["`id`"] = requestData.Id
|
|
var orgCont models.AdministrativeOrganization
|
|
err = orgCont.GetCont(where, "`id`", "`name`", "`superior`")
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "未知行政组织!请检查!")
|
|
return
|
|
}
|
|
|
|
editCont := overallhandle.MapOut()
|
|
editCont["state"] = requestData.Status
|
|
editCont["time"] = time.Now().Unix()
|
|
if requestData.Status != 3 {
|
|
if requestData.Status == 1 {
|
|
//获取所有上级
|
|
var fatherOrg overallhandle.AllSunList[int64]
|
|
fatherOrg.GetAllFatherOrg(orgCont.Superior)
|
|
fatherOrg.SunList = append(fatherOrg.SunList, orgCont.Id)
|
|
err = overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`id` IN ? AND state BETWEEN ? AND ?", fatherOrg.SunList, 1, 2).Updates(editCont).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
} else {
|
|
//获取所有下级
|
|
var orgSun overallhandle.AllSunList[int64]
|
|
orgSun.GetAllSunOrg(orgCont.Id)
|
|
orgSun.SunList = append(orgSun.SunList, orgCont.Id)
|
|
err = overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`id` IN ? AND state BETWEEN ? AND ?", orgSun.SunList, 1, 2).Updates(editCont).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
}
|
|
} else {
|
|
if requestData.IsTrue == 1 {
|
|
//获取所有下级
|
|
var orgSun overallhandle.AllSunList[int64]
|
|
orgSun.GetAllSunOrg(orgCont.Id)
|
|
orgSun.SunList = append(orgSun.SunList, orgCont.Id)
|
|
var curryMan int64
|
|
overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`id`").Where("admin_org IN ?", orgSun.SunList).Count(&curryMan)
|
|
if curryMan > 0 {
|
|
if requestData.Status == 1 {
|
|
var fatherOrg overallhandle.AllSunList[int64]
|
|
fatherOrg.GetAllFatherOrg(orgCont.Superior)
|
|
fatherOrg.SunList = append(fatherOrg.SunList, orgCont.Id)
|
|
err = overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`id` IN ? AND state BETWEEN ? AND ?", fatherOrg.SunList, 1, 2).Updates(editCont).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
} else {
|
|
err = overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`id` IN ? AND state BETWEEN ? AND ?", orgSun.SunList, 1, 2).Updates(editCont).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
}
|
|
} else {
|
|
err = overall.CONSTANT_DB_HR.Where("`id` IN ?", orgSun.SunList).Delete(&models.AdministrativeOrganization{}).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
}
|
|
} else {
|
|
if requestData.Status == 1 {
|
|
var fatherOrg overallhandle.AllSunList[int64]
|
|
fatherOrg.GetAllFatherOrg(orgCont.Superior)
|
|
fatherOrg.SunList = append(fatherOrg.SunList, orgCont.Id)
|
|
err = overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`id` IN ? AND state BETWEEN ? AND ?", fatherOrg.SunList, 1, 2).Updates(editCont).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
} else {
|
|
//获取所有下级
|
|
var orgSun overallhandle.AllSunList[int64]
|
|
orgSun.GetAllSunOrg(orgCont.Id)
|
|
orgSun.SunList = append(orgSun.SunList, orgCont.Id)
|
|
err = overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`id` IN ? AND state BETWEEN ? AND ?", orgSun.SunList, 1, 2).Updates(editCont).Error
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
overallhandle.Result(0, err, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-07-01 09:13:10
|
|
@ 功能: 获取行政组织直接下属
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (o *OrganizationApi) GetOrgChiled(c *gin.Context) {
|
|
var requestData overallhandle.PublicId[int64]
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == 0 {
|
|
overallhandle.Result(1, err, c, "请提交行政组织ID")
|
|
return
|
|
}
|
|
var orgList []models.AdministrativeOrganization
|
|
err = overall.CONSTANT_DB_HR.Where("`state` = 1 AND `superior` = ?", requestData.Id).Find(&orgList).Error
|
|
if err != nil {
|
|
overallhandle.Result(107, err, c)
|
|
return
|
|
}
|
|
var sendList []AdminOrgSend
|
|
for _, v := range orgList {
|
|
var sendCont AdminOrgSend
|
|
sendCont.Id = v.Id //
|
|
sendCont.Number = v.Number //行政编码"`
|
|
sendCont.Name = v.Name //组织名称"`
|
|
sendCont.Superior = v.Superior //上级ID"`
|
|
sendCont.OrganizationType = v.OrganizationType //行政组织类型"`
|
|
sendCont.Abbreviation = v.Abbreviation //行政组织简称"`
|
|
sendCont.Time = v.Time //创建时间"`
|
|
sendCont.State = v.State //状态(1:启用;2:禁用;3:删除)"`
|
|
sendCont.WechatOrganizationId = v.WechatOrganizationId //20微信组织架构对照码"`
|
|
sendCont.SuperiorSun = v.SuperiorSun //级联ID"`
|
|
sendCont.Schoole = v.Schoole //原知行学院对照码"`
|
|
sendCont.KingdeeId = v.KingdeeId //金蝶对照ID"`
|
|
sendCont.IsPower = v.IsPower // 是否为实权部门"`
|
|
sendCont.Sort = v.Sort //是否为实权部门"`
|
|
sendCont.IsChild = judgeIsChild(v.Id)
|
|
sendList = append(sendList, sendCont)
|
|
}
|
|
sendOrgList := overallhandle.MapOut()
|
|
sendOrgList["list"] = sendList
|
|
userKey := c.Request.Header.Get("user-key")
|
|
myCont, myErr := overallhandle.GetCreetUserCont(userKey)
|
|
if myErr == nil {
|
|
sendOrgList["current"] = myCont.Company
|
|
} else {
|
|
sendOrgList["current"] = 309
|
|
}
|
|
var parenAry overallhandle.AllSunList[int64]
|
|
parenAry.SunList = append(parenAry.SunList, requestData.Id)
|
|
parenAry.GetAllParentOrg(requestData.Id, 2)
|
|
fmt.Printf("父级--->%v\n", parenAry.SunList)
|
|
var orgAndPeopleListTitleCont empowerSynces //启用协程结构体
|
|
synProes.Add(1)
|
|
go orgAndPeopleListTitleCont.BasisOrgDirectOrgIng(parenAry.SunList) //获取行政组织
|
|
synProes.Wait()
|
|
orgTitleList := orgAndPeopleListTitleCont.readDataLock()
|
|
sort.SliceStable(orgTitleList, func(i, j int) bool {
|
|
return orgTitleList[i].Sort < orgTitleList[j].Sort
|
|
})
|
|
var tabval []TitleDepartmentsCont
|
|
if len(parenAry.SunList) > 0 && requestData.Id != 313 {
|
|
|
|
for _, ov := range orgTitleList {
|
|
var titleDepartCont TitleDepartmentsCont
|
|
titleDepartCont.DepartmentId = ov.Id //行政组织ID
|
|
titleDepartCont.Id = ov.Id //行政组织ID
|
|
titleDepartCont.DepartmentKey = ov.Number //行政组织编码
|
|
titleDepartCont.DepartmentName = ov.Name //行政组织名称
|
|
titleDepartCont.ParentId = ov.Superior //上级ID
|
|
titleDepartCont.DepartmentNames = ov.Name //行政组织别名
|
|
tabval = append(tabval, titleDepartCont)
|
|
}
|
|
}
|
|
sendOrgList["tabval"] = tabval
|
|
|
|
overallhandle.Result(0, sendOrgList, c)
|
|
}
|
|
|
|
// 判断是否有子集
|
|
func judgeIsChild(orgId int64) (isTrue bool) {
|
|
isTrue = false
|
|
var countid int64
|
|
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`state` = 1 AND `superior` = ?", orgId).Count(&countid).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
if countid > 0 {
|
|
isTrue = true
|
|
}
|
|
return
|
|
}
|
|
|