package administrativeorganization
import (
"fmt"
"hr_server/models"
"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
}
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` = ?" , 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
}
// 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 )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 21 0 8 : 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 0 9 : 44 : 40
@ 功能 : 获取公司下的所有主行政部门
@ 参数
#
@ 返回值
#
* /
func ( o * OrganizationApi ) GetCompanyDeparment ( 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
}
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 ) . 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
// }
//获取行政组织
var orgList [ ] models . OrgContType
gormDb := overall . CONSTANT_DB_HR . 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
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 )
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`" ) . 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 . 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
}