package administrativeorganization
import (
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"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 )
}
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
// 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)
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 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 )
}