Browse Source

修改屏蔽人员

v2_dev
超级管理员 3 years ago
parent
commit
330887f63d
  1. 6
      api/version1/administrativeorganization/govcont.go
  2. 183
      api/version1/administrativeorganization/orgpost.go
  3. 31
      api/version1/administrativeorganization/type.go
  4. 19
      api/version1/personnelapi/kingdeenew.go
  5. 2
      api/version1/personnelapi/types.go
  6. 2
      apirouter/organization/organization_group.go
  7. 1
      models/administrative_organization.go
  8. 61
      overall/overallhandle/overall_handle.go

6
api/version1/administrativeorganization/govcont.go

@ -411,12 +411,12 @@ func (o *OrganizationApi) GetCompanyDeparment(c *gin.Context) {
if requestData.Id == 0 && requestData.IdStr == "" {
requestData.Id = 0
}
fmt.Printf("获取值----2------->%v\n", requestData)
// 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)
// fmt.Printf("获取值----3------->%v\n", requestData)
orgId := getOrgIdList(requestData.Id)
if len(orgId) < 1 {
overallhandle.Result(101, orgId, c, "没有查询到信息!")
@ -430,7 +430,7 @@ func (o *OrganizationApi) GetCompanyDeparment(c *gin.Context) {
}
}
var orgList []models.AdministrativeOrganization
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`state` = 1 AND `id` IN ?", orgId).Find(&orgList).Error
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

183
api/version1/administrativeorganization/orgpost.go

@ -0,0 +1,183 @@
package administrativeorganization
import (
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"sort"
"strconv"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2023-02-24 09:36:28
@ 功能: 获取行政组织与岗位树
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (o *OrganizationApi) GetOrgAndPostThree(c *gin.Context) {
var requestData OrgAndMAnThreeType
c.ShouldBindJSON(&requestData)
//获取行政组织
var orgList []models.OrgContType
gormDb := overall.CONSTANT_DB_HR.Where("`state` = ? ", 1)
if requestData.All == 0 {
// requestData.Id = "309"
gormDb = gormDb.Where("`id` NOT IN ?", []int{312, 293, 305, 306, 307})
}
if requestData.Level != 0 {
gormDb = gormDb.Where("`level` <= ?", requestData.Level)
}
// departmentId := overallhandle.RecursionOrgLeveEs(282, 282, 3)
// overallhandle.Result(2555646, departmentId, c)
// return
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
}
var contList []OutPutOrgAndPost
var syncOrgToPost OrgAndPostSync
for i, v := range orgList {
var sendCont OutPutOrgAndPost
sendCont.Id = strconv.FormatInt(v.Id, 10)
sendCont.Number = v.Number
sendCont.Name = v.Name
sendCont.Superior = v.Superior
sendCont.Attribute = 1
sendCont.Sort = 1
sendCont.OrgId = strconv.FormatInt(v.Id, 10)
if (i+1)%pageSize == 0 {
contList = append(contList, sendCont)
synProes.Add(1)
go syncOrgToPost.GetPostInfoList(contList)
contList = []OutPutOrgAndPost{}
} else {
contList = append(contList, sendCont)
}
}
if len(contList) > 0 { //判断盈余分组数据
synProes.Add(1)
go syncOrgToPost.GetPostInfoList(contList)
}
synProes.Wait()
allOrgAndPostContList := syncOrgToPost.readDataLock()
sort.Slice(allOrgAndPostContList, func(i, j int) bool {
return allOrgAndPostContList[i].Sort < allOrgAndPostContList[j].Sort
})
sort.Slice(allOrgAndPostContList, func(i, j int) bool {
return allOrgAndPostContList[i].Superior < allOrgAndPostContList[j].Superior
})
var allNumber []string
for _, v := range allOrgAndPostContList {
allNumber = append(allNumber, v.Number)
}
sendList := OrgAndPostThreeList(requestData.Id, allOrgAndPostContList)
outputDataAry := overallhandle.MapOut()
outputDataAry["count"] = len(allOrgAndPostContList)
outputDataAry["list"] = sendList
outputDataAry["allnumber"] = allNumber
overallhandle.Result(0, outputDataAry, c)
}
// 合成树形结构
func OrgAndPostThreeList(superiorId string, contList []OutPutOrgAndPost) *[]OutPutOrgAndPostLoop {
three := []OutPutOrgAndPostLoop{}
for _, v := range contList {
supIdStr := strconv.FormatInt(v.Superior, 10)
if superiorId == supIdStr {
child := OrgAndPostThreeList(v.OrgId, contList)
var node OutPutOrgAndPostLoop
node.Id = v.Id
node.Number = v.Number
node.Name = v.Name
node.Superior = v.Superior
node.Attribute = v.Attribute
node.Sort = v.Sort
node.OrgId = v.OrgId
node.OrgName = v.OrgName
node.DepartId = v.DepartId
node.DepartName = v.DepartName
node.Child = child
three = append(three, node)
}
}
return &three
}
// 获取岗位列表
func (o *OrgAndPostSync) GetPostInfoList(contList []OutPutOrgAndPost) {
o.mutext.Lock()
defer o.mutext.Unlock()
var orgId []string
for _, v := range contList {
if overallhandle.IsInTrue[string](v.Id, orgId) == false {
orgId = append(orgId, v.Id)
o.orgAndPostList = append(o.orgAndPostList, v)
}
}
if len(orgId) > 0 {
var postContList []models.Position
err := overall.CONSTANT_DB_HR.Model(&models.Position{}).Select("`id`,`number`,`name`,`administrative_organization`,`superior`").Where("`state` = 1 AND `administrative_organization` IN ?", orgId).Find(&postContList).Error
if err == nil {
for _, v := range postContList {
// _, _, departmentId, _, _ := overallhandle.GetOrgStructure(v.AdministrativeOrganization)
departmentId := overallhandle.RecursionOrgLeveEs(v.AdministrativeOrganization, v.AdministrativeOrganization, 3)
var departCont models.AdministrativeOrganization
departCont.GetCont(map[string]interface{}{"`id`": departmentId}, "`name`")
var sendCont OutPutOrgAndPost
sendCont.Id = strconv.FormatInt(v.Id, 10)
sendCont.Number = v.Number
sendCont.Name = v.Name
sendCont.Superior = v.AdministrativeOrganization
sendCont.Attribute = 2
sendCont.Sort = 2
sendCont.OrgId = "-1"
sendCont.DepartId = strconv.FormatInt(departmentId, 10)
sendCont.DepartName = departCont.Name
if departmentId == v.AdministrativeOrganization {
sendCont.OrgName = departCont.Name
} else {
var orgCont models.AdministrativeOrganization
orgCont.GetCont(map[string]interface{}{"`id`": v.AdministrativeOrganization}, "`name`")
sendCont.OrgName = orgCont.Name
}
o.orgAndPostList = append(o.orgAndPostList, sendCont)
}
}
}
synProes.Done()
}

31
api/version1/administrativeorganization/type.go

@ -363,3 +363,34 @@ type TitleDepartmentsCont struct {
type OrgIdList struct {
OrgId []int64 `json:"orgid"`
}
// 输出行政组织与岗位结构体
type OutPutOrgAndPost struct {
Id string `json:"id"` //ID
Number string `json:"number"` //编号
Name string `json:"name"` //名称
Superior int64 `json:"superior"` //上级
OrgId string `json:"orgid"` //行政组织Id
Attribute int `json:"attribute"` //属性 1:行政组织;2:岗位i
Sort int `json:"sort"` //排序
OrgName string `json:"orgname"` //行政组织名称
DepartId string `json:"departid"` //主责部门
DepartName string `json:"departname"` //主责部门名称
}
// 循环输出
type OutPutOrgAndPostLoop struct {
OutPutOrgAndPost
Child *[]OutPutOrgAndPostLoop `json:"child"` //下级
}
type OrgAndPostSync struct {
orgAndPostList []OutPutOrgAndPost
mutext sync.RWMutex
}
func (o *OrgAndPostSync) readDataLock() []OutPutOrgAndPost {
o.mutext.RLock()
defer o.mutext.RUnlock()
return o.orgAndPostList
}

19
api/version1/personnelapi/kingdeenew.go

@ -35,6 +35,7 @@ func (s *StaffApi) NewKingdee(c *gin.Context) {
overallhandle.WriteLog("i", "KingDee对接数据!", saveKingDee)
// kingdeeErr := overall.CONSTANT_DB_HR.Create(&saveKingDee).Error
// overallhandle.WriteLog("w", "KingDee写入数据库状态!", kingdeeErr)
if requestData.Number != "200019" && requestData.Number != "200008" {
var manContent models.PersonArchives
manErr := manContent.GetCont(map[string]interface{}{"`number`": requestData.Number})
if manErr == nil {
@ -55,6 +56,11 @@ func (s *StaffApi) NewKingdee(c *gin.Context) {
}
overallhandle.WriteLog("t", "执行行人员信息对接对照结束!")
overallhandle.Result(0, manErr, c)
} else {
overallhandle.WriteLog("t", "特殊人员信息对接对照结束!")
overallhandle.Result(0, nil, c)
}
}
/*
@ -90,6 +96,14 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
}
if manCont.PersonInCharge == 0 {
manCont.PersonInCharge = 2
}
if manCont.PersonInCharge != perArcInfo.PersonInCharge && perArcInfo.PersonInCharge != 1 {
eidtManCont["`person_in_charge`"] = manCont.PersonInCharge
}
if manCont.HireType != "" {
hireTypes, hireTypesErr := overallhandle.StringToInt(manCont.HireType)
if hireTypesErr != nil {
@ -315,7 +329,10 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonneles
// manMainCont.HireClass = hireTypesbd
manMainCont.HireClass = hireTypeToInt(manCont.HireType)
manMainCont.HireClassName = manCont.HireType
if manCont.PersonInCharge == 0 {
manCont.PersonInCharge = 2
}
manMainCont.PersonInCharge = manCont.PersonInCharge
// empType, empTypeErr := overallhandle.StringToInt(manCont.EmpType)
// if empTypeErr != nil {
// empType = 1

2
api/version1/personnelapi/types.go

@ -86,6 +86,8 @@ type addKingdeePersonneles struct {
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
//集团内工作履历
InsideWorkHistory []insideHistoryer `json:"insideworkhistory"` //工作履历
PersonInCharge int `json:"personInCharge"` //部门负责人(1:是;2:否)
}
//家庭成员

2
apirouter/organization/organization_group.go

@ -45,6 +45,8 @@ func (o *OrganizationRoute) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("govthreeaboutman", apiHandle.GovThreeAboutMan) //行政组织树及相关人员
apiRouter.POST("search_org_people", apiHandle.SearchOrgAndPeople) //角色组织与人员搜索列表
apiRouter.POST("get_organdpost_three", apiHandle.GetOrgAndPostThree) //获取行政组织与岗位树
apiRouter.POST("get_org_everyone_people", apiHandle.GetOrgAndEveryOnePeople) //行政组织树及相关人员(新版)
apiRouter.POST("getcompanydeparment", apiHandle.GetCompanyDeparment) //获取当前行政组织的所有主行政部门

1
models/administrative_organization.go

@ -20,6 +20,7 @@ type AdministrativeOrganization struct {
Schoole int64 `json:"schoole" gorm:"column:schoole;type:bigint(20) unsigned;default:0;not null;comment:原知行学院对照码"`
KingdeeId string `json:"kingdeeid" gorm:"column:kingdeeid;type:varchar(255) unsigned;default:'';comment:金蝶对照ID"`
IsPower int `json:"ispower" gorm:"column:ispower;type:int(1) unsigned;default:2;not null;comment:是否为实权部门"`
Sort int `json:"sort" gorm:"column:sort;type:int(6) unsigned;default:100;not null;comment:是否为实权部门"`
}
func (AdministrativeOrganization *AdministrativeOrganization) TableName() string {

61
overall/overallhandle/overall_handle.go

@ -288,6 +288,39 @@ func GetGroupOrDepartPower(parentId int64, departId ...int64) int64 {
return orgCont.Id
}
// 获取集团或第一实权部门
func GetGroupOrDepartPoweres(parentId int64, departId ...int64) int64 {
var orgCont models.AdministrativeOrganization
err := orgCont.GetCont(map[string]interface{}{"id": parentId}, "id", "organization_type", "superior", "ispower")
if err != nil {
return parentId
}
// jsonCCC, _ := json.Marshal(orgCont)
// fmt.Printf("orgCont------->%v\n", string(jsonCCC))
if len(departId) > 0 {
if orgCont.IsPower == 1 {
// fmt.Printf("orgCont---1---->%v---->%v\n", string(jsonCCC), orgCont.Id)
return orgCont.Id
}
return GetGroupOrDepartPoweres(orgCont.Superior, 1)
} else {
if orgCont.OrganizationType <= 3 {
// fmt.Printf("orgCont---2---->%v\n", string(jsonCCC))
return orgCont.Id
}
return GetGroupOrDepartPoweres(orgCont.Superior)
}
// if len(departId) > 0 {
// fmt.Printf("orgCont----4--->%v\n", orgCont.Superior)
// GetGroupOrDepartPower(orgCont.Superior, 1)
// } else {
// fmt.Printf("orgCont----5--->%v\n", orgCont.Superior)
// GetGroupOrDepartPower(orgCont.Superior)
// }
// fmt.Printf("orgCont----3--->%v\n", string(jsonCCC))
return orgCont.Id
}
// ZeroFillByStr
// @Description: 字符串补零
// @param str :需要操作的字符串
@ -699,7 +732,12 @@ func RecursionOrgLeve(superior int64, leve int64) (groupId int64) {
return
}
if orgMap.Level <= leve {
if orgMap.Level == leve {
groupId = superior
} else {
groupId = orgMap.Id
}
return
} else {
groupId = RecursionOrgLeve(orgMap.Superior, leve)
@ -707,6 +745,29 @@ func RecursionOrgLeve(superior int64, leve int64) (groupId int64) {
return
}
func RecursionOrgLeveEs(oldId, superior, leve int64) (groupId int64) {
if leve == 0 {
leve = 1
}
var orgMap models.OrgContType
err := orgMap.GetCont(map[string]interface{}{"`id`": superior, "`state`": 1}, "`id`", "`superior`", "`level`")
if err != nil {
return
}
if orgMap.Level <= leve {
if orgMap.Level == leve {
groupId = oldId
} else {
groupId = orgMap.Id
}
return
} else {
groupId = RecursionOrgLeveEs(orgMap.Id, orgMap.Superior, leve)
}
return
}
// 获取集团、公司、部门、二级部门、工段
func GetOrgStructure(orgId int64) (groupId, companyId, departmentId, sunDepartId, workShopId int64) {
var orgContTypeInfo models.OrgContType

Loading…
Cancel
Save