diff --git a/api/version1/administrativeorganization/govcont.go b/api/version1/administrativeorganization/govcont.go index 320cdff..4ea585c 100644 --- a/api/version1/administrativeorganization/govcont.go +++ b/api/version1/administrativeorganization/govcont.go @@ -1,6 +1,7 @@ package administrativeorganization import ( + "encoding/json" "fmt" "hr_server/models" "hr_server/overall" @@ -404,14 +405,18 @@ func (o *OrganizationApi) GetOrgAllSun(c *gin.Context) { */ func (o *OrganizationApi) GetCompanyDeparment(c *gin.Context) { var requestData overallhandle.GetId - c.ShouldBindJSON(&requestData) + 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, "没有查询到信息!") @@ -560,7 +565,7 @@ func OrgAndMAnThree(parentId int64, govAry []OrgAndPeople) []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) @@ -787,3 +792,479 @@ func GetAllOrgName(id, level int64, name string) (allName string) { } 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 + } + } + 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() + + 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 + 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 != 309 { + err = orgCont.GetCont(map[string]interface{}{"id": idInt}) + parenAry.SunList = append(parenAry.SunList, idInt) + parenAry.GetAllParentOrg(idInt, 3) + } 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, 3) //获取行政组织 + 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 + 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`").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.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) +} diff --git a/api/version1/administrativeorganization/position.go b/api/version1/administrativeorganization/position.go index 1f6b4d4..f4d7591 100644 --- a/api/version1/administrativeorganization/position.go +++ b/api/version1/administrativeorganization/position.go @@ -91,6 +91,101 @@ func (o *OrganizationApi) PositionList(c *gin.Context) { } } +/* +* +@ 作者: 秦东 +@ 时间: 2023-01-06 11:14:43 +@ 功能: 职位(岗位)列表及相关人员 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (o *OrganizationApi) PositionPeopleList(c *gin.Context) { + var requestData lookPositionList + c.ShouldBindJSON(&requestData) + if requestData.Page < 0 { + requestData.Page = 1 + } + if requestData.PageSize < 0 { + requestData.PageSize = 10 + } + // gormDb := overall.CONSTANT_DB_HR.Model(&models.JobClass{}).Select("").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type") + var positionType models.Position + gormDb := overall.CONSTANT_DB_HR.Table(fmt.Sprintf("%s p", positionType.TableName())).Select("p.*,d.name as dutiesname,d.number as dutiesnumber,ao.name as aoname,ao.number as aonumber,j.name as jobname").Joins("left join duties as d on d.id = p.duties").Joins("left join administrative_organization as ao on ao.id = p.administrative_organization").Joins("left join job_class as j on j.id = d.job_type") + if requestData.Name != "" { + gormDb = gormDb.Where("p.name LIKE ?", "%"+requestData.Name+"%") + } + if requestData.Number != "" { + gormDb = gormDb.Where("p.number LIKE ?", "%"+requestData.Number+"%") + } + if requestData.Duties != "" { + gormDb = gormDb.Where("p.duties = ?", requestData.Duties) + } + if requestData.Organization != "" { + orgIdInt, _ := strconv.ParseInt(requestData.Organization, 10, 64) + // orgIdList := overallhandle.GetDepartmentSun(orgIdInt, []int64{}) + // orgIdList = append(orgIdList, orgIdInt) + // gormDb = gormDb.Where("p.administrative_organization IN ?", orgIdList) + // fmt.Printf("所有子集--->%v\n", orgIdList) + + var sunAry overallhandle.AllSunList[int64] + sunAry.GetAllSunOrg(orgIdInt) + sunAry.SunList = append(sunAry.SunList, orgIdInt) + gormDb = gormDb.Where("p.administrative_organization IN ?", sunAry.SunList) + } + if requestData.InCharge != 0 { + gormDb = gormDb.Where("p.person_in_charge = ?", requestData.InCharge) + } + if requestData.Department != "" { + gormDb = gormDb.Where("p.department = ?", requestData.Department) + } + if requestData.State == 0 { + gormDb = gormDb.Where("p.state IN ?", []int{1, 2}) + } else { + gormDb = gormDb.Where("p.state = ?", requestData.State) + } + + var total int64 + totalErr := gormDb.Count(&total).Error + if totalErr != nil { + total = 0 + } + var positionAry []positionOutInfo + // errGorm := gormDb.Order("p.department DESC,p.duties DESC,p.duties ASC").Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&positionAry).Error + errGorm := gormDb.Order("p.id DESC").Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&positionAry).Error + for i, v := range positionAry { + var getSpur models.Position + getWhe := overallhandle.MapOut() + getWhe["id"] = v.Superior + // fmt.Printf("%v\n", v.Superior) + getSpur.GetCont(getWhe, "number", "name") + positionAry[i].SuperiorNumber = getSpur.Number + positionAry[i].SuperiorName = getSpur.Name + + var getSpurDepart models.AdministrativeOrganization + getWheDepart := overallhandle.MapOut() + getWheDepart["id"] = v.Department + getSpurDepart.GetCont(getWheDepart, "name") + positionAry[i].DepartmentName = getSpurDepart.Name + + positionAry[i].IdStr = strconv.FormatInt(v.Id, 10) + + } + if errGorm != nil { + overallhandle.Result(105, errGorm, c) + } else { + overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(positionAry)), positionAry, c) + } +} + // 添加职位(岗位) func (o *OrganizationApi) AddPositionCont(c *gin.Context) { var requestData addPositionInfo diff --git a/api/version1/administrativeorganization/type.go b/api/version1/administrativeorganization/type.go index fa9a888..f95f5c3 100644 --- a/api/version1/administrativeorganization/type.go +++ b/api/version1/administrativeorganization/type.go @@ -12,6 +12,7 @@ type OrganizationApi struct{} // 协程 var synPro = sync.WaitGroup{} +var synProes = sync.WaitGroup{} // 入口 func (o *OrganizationApi) Index(c *gin.Context) { @@ -268,3 +269,97 @@ type eitePositionInfoNes struct { overallhandle.GetId addPositionInfoNew } + +// 行政组织与个人列表 +type OrgAndEveryOnePeople struct { + Id string `json:"id"` //识别符 + OrgId int64 `json:"orgid"` //行政组织Id + Number string `json:"number"` //编号 + Name string `json:"name"` //姓名 + Superior string `json:"superior"` //上级 + Icon string `json:"icon"` //头像 + IconPhoto string `json:"icon_photo"` //头像 + Type int `json:"type"` //类型 1:行政组织;2:人员 + Key string `json:"key"` //列表识别 + Sort int `json:"sort"` //排序 +} + +// 授权协程操作 +type empowerSync struct { + orgAndPeopleList []OrgAndEveryOnePeople + mutext sync.RWMutex +} + +// 读取行政组织与个人列表协程数据 +func (d *empowerSync) readDataLock() []OrgAndEveryOnePeople { + d.mutext.RLock() + defer d.mutext.RUnlock() + return d.orgAndPeopleList +} + +type empowerSynces struct { + orgAndPeopleList []OrgAndEveryOnePeople + mutext sync.RWMutex +} + +func (d *empowerSynces) readDataLock() []OrgAndEveryOnePeople { + d.mutext.RLock() + defer d.mutext.RUnlock() + return d.orgAndPeopleList +} + +// 工作流审批节点获取部门和人员 +type empowerSyncDepartMan struct { + orgList []OrgAndEveryOnePeople + peopleList []OrgAndEveryOnePeople + mutext sync.RWMutex +} + +func (d *empowerSyncDepartMan) readDataLock() ([]OrgAndEveryOnePeople, []OrgAndEveryOnePeople) { + d.mutext.RLock() + defer d.mutext.RUnlock() + return d.orgList, d.peopleList +} + +// 输出行政组织与人员 +type OrgAndManThree struct { + OrgAndEveryOnePeople + Child []OrgAndManThree `json:"child"` //子栏目 +} + +// 审批节点选人结构输出 +type ShenPiXuanRen struct { + ChildDepartments []ChildDepartmentsCont `json:"childDepartments"` //行政组织列表 + Employees []EmployeesCont `json:"employees"` //人员列表 + TitleDepartments []TitleDepartmentsCont `json:"titleDepartments"` //选择面包屑 +} + +// 审批节点选人行政组织节点 +type ChildDepartmentsCont struct { + Id string `json:"id"` //行政组织ID + DepartmentKey string `json:"departmentKey"` //行政组织编码 + DepartmentName string `json:"departmentName"` //行政组织名称 + ParentId string `json:"parentId"` //上级ID + DepartmentNames string `json:"departmentNames"` //行政组织别名 +} + +// 审批节点选人人员节点 +type EmployeesCont struct { + Id string `json:"id"` + EmployeeName string `json:"employeeName"` //人员名称 + IsLeave string `json:"isLeave"` //行政组织名称 + Open string `json:"open"` //上级ID + Icon string `json:"icon"` //头像 + IconToBase64 string `json:"iconToBase64"` //头像 +} + +// 审批节点选择面包屑 +type TitleDepartmentsCont struct { + DepartmentId string `json:"departmentId"` //行政组织ID + ChildDepartmentsCont +} + +// 获取指定行政组织列表 +type OrgIdList struct { + OrgId []int64 `json:"orgid"` +} diff --git a/api/version1/personnelapi/controll.go b/api/version1/personnelapi/controll.go index 1a4b5f3..718dce7 100644 --- a/api/version1/personnelapi/controll.go +++ b/api/version1/personnelapi/controll.go @@ -310,14 +310,20 @@ func ducationToInt(emp string) int { return 5 case "函授专科": return 6 + case "专科": + return 7 case "大学专科": return 7 case "函授本科": return 8 + case "本科": + return 9 case "大学本科": return 9 case "硕士研究生": return 10 + case "研究生": + return 10 case "博士研究生": return 11 case "专家、教授": diff --git a/api/version1/personnelapi/kingdeenew.go b/api/version1/personnelapi/kingdeenew.go index fee2940..9162369 100644 --- a/api/version1/personnelapi/kingdeenew.go +++ b/api/version1/personnelapi/kingdeenew.go @@ -40,14 +40,17 @@ func (s *StaffApi) NewKingdee(c *gin.Context) { if manErr == nil { //已经存在!进行变动操作 manErr = eidtAddManContJinDie(manContent, requestData) + overallhandle.WriteLog("i", "已经存在!进行变动操作!", saveKingDee) } else { //不存在!进行新增操作 var oldSchool models.WorkMan oldSchool.GetCont(map[string]interface{}{"wm_number": requestData.Number}) manErr = newAddManContJinDie(oldSchool, requestData) + overallhandle.WriteLog("i", "不存在!进行新增操作!", manErr, saveKingDee) } if manErr != nil { overallhandle.Result(104, manErr, c) + overallhandle.WriteLog("e", "数据处理失败!", manErr, saveKingDee) return } overallhandle.WriteLog("t", "执行行人员信息对接对照结束!") @@ -303,7 +306,8 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonneles var manMainCont models.PersonArchives manMainCont.Number = manCont.Number manMainCont.Name = manCont.Name - manMainCont.Icon = manCont.Icon + // manMainCont.Icon = manCont.Icon + manMainCont.IconPhoto = manCont.Icon // hireTypesbd, hireTypesbdErr := overallhandle.StringToInt(manCont.HireType) // if hireTypesbdErr != nil { // hireTypesbd = 1 @@ -602,14 +606,35 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonneles) { } } if manCont.Iisdoubleworker != "" { - isdoulw, _ := overallhandle.StringToInt(manCont.Iisdoubleworker) - if isdoulw != manInfo.Isdoubleworker { - saveData["isdoubleworker"] = isdoulw + if manCont.Iisdoubleworker == "是" { + saveData["isdoubleworker"] = 1 + eidtDoubleWorkerNew(manKeyNum, manCont, 1) + } else { + isdoulw, isdoulwErr := overallhandle.StringToInt(manCont.Iisdoubleworker) + if isdoulwErr == nil { + if isdoulw == 0 { + isdoulw = 1 + } else { + isdoulw = 2 + } + } else { + isdoulw = 2 + } + + if isdoulw != manInfo.Isdoubleworker { + saveData["isdoubleworker"] = isdoulw + } + eidtDoubleWorkerNew(manKeyNum, manCont, isdoulw) } - eidtDoubleWorkerNew(manKeyNum, manCont, isdoulw) + } - if manCont.Isveterans != "" { + if manCont.Isveterans != "" && manCont.Isveterans != "0" { isveters, _ := overallhandle.StringToInt(manCont.Isveterans) + if isveters == 2 { + isveters = 1 + } else { + isveters = 2 + } if isveters != manInfo.Isveterans { saveData["isveterans"] = isveters } @@ -620,6 +645,11 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonneles) { } else { saveData["veteransnumber"] = "" } + } else { + if manCont.Veteransnumber != "" { + saveData["isveterans"] = 1 + saveData["veteransnumber"] = manCont.Veteransnumber + } } if manCont.WorkingDate != "" { workInData, workInDataErr := overallhandle.DateToTimeStamp(manCont.WorkingDate) @@ -682,7 +712,7 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonneles) { saveData["`time`"] = time.Now().Unix() manInfo.EiteCont(map[string]interface{}{"`key`": manInfo.Key}, saveData) } - fmt.Printf("editManAuxilia-----------1---------->%v\n", manErr) + fmt.Printf("editManAuxilia-----------1---------->%v\n", saveData) } else { fmt.Printf("editManAuxilia----------2----------->%v\n", manErr) manInfo.Key = manKeyNum @@ -759,13 +789,15 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonneles) { } else { manInfo.Isdoubleworker = 2 } - if manCont.Isveterans != "" { + if manCont.Isveterans != "" && manCont.Isveterans != "0" { issssveterans, _ := overallhandle.StringToInt(manCont.Isveterans) manInfo.Isveterans = issssveterans } else { manInfo.Isveterans = 2 } - + if manCont.Veteransnumber != "" { + manInfo.Isveterans = 1 + } manInfo.Veteransnumber = manCont.Veteransnumber // workInData := time.Now().Unix() var workInData int64 = 0 @@ -808,10 +840,11 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonneles) { manInfo.PoliticalOutlookCn = manCont.PoliticalOutlook overall.CONSTANT_DB_HR.Create(&manInfo) - if manCont.Iisdoubleworker == "1" && manCont.Iisdoubleworker == "是" { + if manCont.Iisdoubleworker == "0" || manCont.Iisdoubleworker == "是" { //编辑双职工 eidtDoubleWorkerNew(manKeyNum, manCont, 1) } + } } @@ -1147,6 +1180,7 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonneles) { } } //第一学历 + // fmt.Printf("第一学历------>%v\n", manCont.FirstGraduationSchool) if manCont.FirstGraduationSchool != "" { //第一学历 var perEduContFirst models.PersonnelEducation @@ -1227,13 +1261,16 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonneles) { } perEduContFirst.AdmissionTime = entranceTimeFirst // 入学时间"` graduationTimef := time.Now().Unix() - if manCont.HighestGraduationTime != "" { + if manCont.FirstGraduationTime != "" { graduationTimefErr := false - graduationTimef, _ = overallhandle.DateToTimeStamp(manCont.HighestGraduationTime) + graduationTimef, graduationTimefErr = overallhandle.DateToTimeStamp(manCont.FirstGraduationTime) if graduationTimefErr == false { - graduationTimef, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime)) + graduationTimef, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstGraduationTime)) } } + + // fmt.Printf("第一学历------>%v------>%v\n", graduationTimef, manCont.FirstGraduationTime) + perEduContFirst.GraduationTime = graduationTimef // 毕业时间"` perEduContFirst.Time = time.Now().Unix() // 写入时间"` // fitAcmicDgree, _ := overallhandle.StringToInt(manCont.FirstAcademicDegree) diff --git a/api/version1/personnelapi/mancont.go b/api/version1/personnelapi/mancont.go index a561d41..e125e9c 100644 --- a/api/version1/personnelapi/mancont.go +++ b/api/version1/personnelapi/mancont.go @@ -114,22 +114,30 @@ func (s *StaffApi) EditManOrgCont(c *gin.Context) { saveData["person_in_charge"] = requestData.PersonInCharge } - if len(requestData.OrgresList) > 0 { - jsonCont, jsonErr := json.Marshal(requestData.OrgresList) - if jsonErr == nil { - saveData["responsible_department_json"] = string(jsonCont) + if requestData.PersonInCharge == 1 { + if len(requestData.OrgresList) > 0 { + jsonCont, jsonErr := json.Marshal(requestData.OrgresList) + if jsonErr == nil { + saveData["responsible_department_json"] = string(jsonCont) + } } - } - if len(requestData.Resallorg) > 0 { - var orgResList []string - for i := 0; i < len(requestData.Resallorg); i++ { - resAllOrgIdStr := strconv.Itoa(requestData.Resallorg[i]) - if overallhandle.IsInTrue[string](resAllOrgIdStr, orgResList) == false { - orgResList = append(orgResList, resAllOrgIdStr) + } else { + saveData["responsible_department_json"] = "" + } + if requestData.PersonInCharge == 1 { + if len(requestData.Resallorg) > 0 { + var orgResList []string + for i := 0; i < len(requestData.Resallorg); i++ { + resAllOrgIdStr := strconv.Itoa(requestData.Resallorg[i]) + if overallhandle.IsInTrue[string](resAllOrgIdStr, orgResList) == false { + orgResList = append(orgResList, resAllOrgIdStr) + } } + orgResListStr := strings.Join(orgResList, ",") + saveData["responsible_department"] = orgResListStr } - orgResListStr := strings.Join(orgResList, ",") - saveData["responsible_department"] = orgResListStr + } else { + saveData["responsible_department"] = "" } // fmt.Printf("%v\n", saveData) // return diff --git a/api/version1/personnelapi/staffarchives.go b/api/version1/personnelapi/staffarchives.go index 9acaa28..88d98ba 100644 --- a/api/version1/personnelapi/staffarchives.go +++ b/api/version1/personnelapi/staffarchives.go @@ -2175,9 +2175,11 @@ func (s *StaffApi) GetArchivesCon(c *gin.Context) { ruleCont.GetCont(map[string]interface{}{"`id`": satffCont.Ruleid}, "`name`") staffCenter.RuleId = strconv.FormatInt(satffCont.Ruleid, 10) staffCenter.RuleName = ruleCont.Name + if satffCont.ResponsibleDepartmentJson != "" { + jsonErr := json.Unmarshal([]byte(satffCont.ResponsibleDepartmentJson), &staffCenter.OrgresList) + fmt.Printf("satffCont---------->%v---------->%v---------->%v\n", satffCont.ResponsibleDepartmentJson, satffCont, jsonErr) + } - jsonErr := json.Unmarshal([]byte(satffCont.ResponsibleDepartmentJson), &staffCenter.OrgresList) - fmt.Printf("satffCont---------->%v---------->%v---------->%v\n", satffCont.ResponsibleDepartmentJson, satffCont, jsonErr) overallhandle.Result(0, staffCenter, c) // return } diff --git a/api/version1/shiyan/shiyan.go b/api/version1/shiyan/shiyan.go index 6faca3e..509b2d1 100644 --- a/api/version1/shiyan/shiyan.go +++ b/api/version1/shiyan/shiyan.go @@ -2,6 +2,7 @@ package shiyan import ( "fmt" + "hr_server/api/jindie_docking/dockingorganization" "hr_server/api/version1/personnelapi" "hr_server/middleware/snowflake" "hr_server/models" @@ -39,7 +40,7 @@ func (s *ShiYan) ShiyanCont(c *gin.Context) { overallhandle.Result(0, eiteErr, c) } -//人员迁移 +// 人员迁移 func (s *ShiYan) PersonnelMigration(c *gin.Context) { var oldManCount int64 err := overall.CONSTANT_DB_Master.Model(&models.WorkMan{}).Where("wm_group = 3").Pluck("COALESCE(COUNT(wm_id), 0) as countid", &oldManCount).Error @@ -71,7 +72,7 @@ func (s *ShiYan) PersonnelMigration(c *gin.Context) { overallhandle.Result(0, outMap, c) } -//分片写入人员 +// 分片写入人员 func (p *peopleQianyi) writeUser(page, pagesize int) { // p.mutext.Lock() // defer p.mutext.Unlock() @@ -169,7 +170,7 @@ func (p *peopleQianyi) writeUser(page, pagesize int) { synPro.Done() } -//获取企业微信对照表 +// 获取企业微信对照表 func GetWorkWechatDuiZhao(openid string) (userInfoStruct models.WechatUsers, isTrue bool) { isTrue = false myErr := overall.CONSTANT_DB_Wechat.Where("userid = ?", openid).First(&userInfoStruct).Error @@ -179,7 +180,7 @@ func GetWorkWechatDuiZhao(openid string) (userInfoStruct models.WechatUsers, isT return } -//获取人员组织架构信息 +// 获取人员组织架构信息 func getUserOrgSchool(group, depart, workid, position int64) (gro, org, positionId int64, department string) { groupAry := map[int64]int64{3: 2} for gi, gv := range groupAry { @@ -248,7 +249,7 @@ func getUserOrgSchool(group, depart, workid, position int64) (gro, org, position return } -//获取组织架构对照 +// 获取组织架构对照 func getOrgSchool(id int64) (deparmentId, orgId int64) { var orgInfo outOrgCont err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("id,organization_type,superior").Where("schoole = ?", id).First(&orgInfo).Error @@ -270,7 +271,7 @@ func getOrgSchool(id int64) (deparmentId, orgId int64) { return } -//获取hr系统中的职务 +// 获取hr系统中的职务 func getHrPosition(posId int64) int64 { var id int64 err := overall.CONSTANT_DB_HR.Model(&models.Position{}).Select("id").Where("`school` = ?", posId).First(&id).Error @@ -280,7 +281,7 @@ func getHrPosition(posId int64) int64 { return 0 } -//获取职务相关属性 +// 获取职务相关属性 func getJobInfo(jobId int64) (cont jobAttber, err error) { var positionInfo models.Position // err = overall.CONSTANT_DB_HR.Table(fmt.Sprintf("%s p", positionInfo.TableName())).Select("p.id,p.number,p.name,p.person_in_charge,d.id as dutid,d.name as dutname,d.number as dutnumber,j.id as jobid,j.name as jobname").Joins("left join duties as d on d.id = p.duties").Joins("left join job_class as j on j.id = d.job_type").Where("`p`.`id` = ?", jobId).First(&cont).Error @@ -288,7 +289,7 @@ func getJobInfo(jobId int64) (cont jobAttber, err error) { return } -//视图操作 +// 视图操作 func (s *ShiYan) Shitu(c *gin.Context) { // var shituList []ShituType // err := overall.CONSTANT_DB_HR.Limit(20).Offset(21).Find(&shituList) @@ -305,7 +306,7 @@ func (s *ShiYan) Shitu(c *gin.Context) { overallhandle.Result(0, out, c) } -//人员状态数据对正 +// 人员状态数据对正 func (s *ShiYan) PeopleStatus(c *gin.Context) { var manList []models.PersonArchives err := overall.CONSTANT_DB_HR.Model(&manList).Select("`id`,`emp_type_name`").Find(&manList).Error @@ -319,3 +320,108 @@ func (s *ShiYan) PeopleStatus(c *gin.Context) { } overallhandle.Result(0, err, c) } + +/* +* +@ 作者: 秦东 +@ 时间: 2023-02-22 11:34:18 +@ 功能: 手动同步行政组织类型 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *ShiYan) HandMovementType(c *gin.Context) { + dockingorganization.GetOrgType() +} + +/* +* +@ 作者: 秦东 +@ 时间: 2023-02-22 11:37:00 +@ 功能: 手动同步职务类型 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *ShiYan) HandMovementJobType(c *gin.Context) { + dockingorganization.JobClass() +} + +/* +* +@ 作者: 秦东 +@ 时间: 2023-02-22 11:38:08 +@ 功能: 手动同步职务 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *ShiYan) HandMovementJob(c *gin.Context) { + dockingorganization.DutiesContrast() +} + +/* +* +@ 作者: 秦东 +@ 时间: 2023-02-22 11:39:28 +@ 功能: 手动同步行政组织 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *ShiYan) HandMovementOrgCont(c *gin.Context) { + dockingorganization.OrgAdmin() +} + +/* +* +@ 作者: 秦东 +@ 时间: 2023-02-22 11:39:28 +@ 功能: 手动同步职位 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (s *ShiYan) HandMovementPostCont(c *gin.Context) { + dockingorganization.Position() +} diff --git a/apirouter/organization/organization_group.go b/apirouter/organization/organization_group.go index 14aba6e..53df9fa 100644 --- a/apirouter/organization/organization_group.go +++ b/apirouter/organization/organization_group.go @@ -45,7 +45,13 @@ func (o *OrganizationRoute) InitRouterGroup(route *gin.RouterGroup) { apiRouter.POST("govthreeaboutman", apiHandle.GovThreeAboutMan) //行政组织树及相关人员 apiRouter.POST("search_org_people", apiHandle.SearchOrgAndPeople) //角色组织与人员搜索列表 + apiRouter.POST("get_org_everyone_people", apiHandle.GetOrgAndEveryOnePeople) //行政组织树及相关人员(新版) + apiRouter.POST("getcompanydeparment", apiHandle.GetCompanyDeparment) //获取当前行政组织的所有主行政部门 + + apiRouter.POST("basis_org_obtain_sonorg_and_man", apiHandle.BasisOrgObtainSonOrgAndMan) //根据行政组织编号获取组织及人员 + + apiRouter.POST("getappointorg", apiHandle.GetAppointOrg) //获取指定行政组织列表 //职位(岗位) apiRouter.POST("positionlist", apiHandle.PositionList) //职位(岗位)列表 apiRouter.POST("getpositioncont", apiHandle.GetPositionCont) //获取职位(岗位) @@ -60,6 +66,8 @@ func (o *OrganizationRoute) InitRouterGroup(route *gin.RouterGroup) { apiRouter.POST("addpositioncontnew", apiHandle.AddPositionContNew) //添加职位(岗位)新版 apiRouter.POST("get_my_posit_list", apiHandle.GetMyPositionList) //获取本岗位下的职位(岗位)列表不包含子行政组织 + apiRouter.POST("positionpeoplelist", apiHandle.PositionPeopleList) //职位(岗位)列表及相关人员 + //班组 apiRouter.POST("teamcontlist", apiHandle.TeamContList) //班组列表 apiRouter.POST("getteamcont", apiHandle.GetTeamCont) //获取班组 @@ -111,6 +119,8 @@ func (o *OrganizationRouteOpen) InitRouterGroup(route *gin.RouterGroup) { apiRouter.POST("search_org_people", apiHandle.SearchOrgAndPeople) //角色组织与人员搜索列表 apiRouter.POST("getcompanydeparment", apiHandle.GetCompanyDeparment) //获取当前行政组织的所有主行政部门 + + apiRouter.POST("basis_org_obtain_sonorg_and_man", apiHandle.BasisOrgObtainSonOrgAndMan) //根据行政组织编号获取组织及人员 //职位(岗位) apiRouter.POST("positionlist", apiHandle.PositionList) //职位(岗位)列表 apiRouter.POST("getpositioncont", apiHandle.GetPositionCont) //获取职位(岗位) diff --git a/apirouter/personnel/people.go b/apirouter/personnel/people.go index 994130d..e94e663 100644 --- a/apirouter/personnel/people.go +++ b/apirouter/personnel/people.go @@ -11,12 +11,13 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) { apiRouter := route.Group("staff") var apiHandle = version1.AppApiInlet.StaffApi { - apiRouter.GET("", apiHandle.Index) //入口 - apiRouter.POST("", apiHandle.Index) //入口 - apiRouter.POST("stafflist", apiHandle.StaffList) //人员列表 - apiRouter.POST("addstaff", apiHandle.AddStaff) //添加人员档案 - apiRouter.POST("allocationofrights", apiHandle.AllocationOfRights) //分配权限 - apiRouter.POST("archiveslist", apiHandle.ArchivesList) //人员列表(新) + apiRouter.GET("", apiHandle.Index) //入口 + apiRouter.POST("", apiHandle.Index) //入口 + apiRouter.POST("stafflist", apiHandle.StaffList) //人员列表 + apiRouter.POST("addstaff", apiHandle.AddStaff) //添加人员档案 + apiRouter.POST("allocationofrights", apiHandle.AllocationOfRights) //分配权限 + // apiRouter.POST("archiveslist", apiHandle.ArchivesList) //人员列表(新) + apiRouter.POST("archiveslist", apiHandle.ArchivesListWai) //人员列表(新) apiRouter.POST("archivescont", apiHandle.ArchivesCon) //个人档案 apiRouter.POST("kingdeehr", apiHandle.NewKingdee) //对接金蝶HR系统 apiRouter.POST("editpassword", apiHandle.EditPassWord) //修改密码 diff --git a/apirouter/shiyanrouter/shiyan.go b/apirouter/shiyanrouter/shiyan.go index ecfeca0..14f8c8e 100644 --- a/apirouter/shiyanrouter/shiyan.go +++ b/apirouter/shiyanrouter/shiyan.go @@ -6,7 +6,7 @@ import ( "github.com/gin-gonic/gin" ) -//组织架构 +// 组织架构 func (p *ShiyanApiRouter) InitRouterGroup(route *gin.RouterGroup) { apiRouter := route.Group("shiyan") var apiHandle = version1.AppApiInlet.ShiyanApi @@ -17,5 +17,11 @@ func (p *ShiyanApiRouter) InitRouterGroup(route *gin.RouterGroup) { apiRouter.POST("personnelmigration", apiHandle.PersonnelMigration) //人员迁移 apiRouter.POST("shitu", apiHandle.Shitu) apiRouter.POST("peoplestatus", apiHandle.PeopleStatus) //人员状态数据对正 + + apiRouter.POST("hand_movement_orgtype", apiHandle.HandMovementType) //手动同步行政组织类型 + apiRouter.POST("hand_movement_jobtype", apiHandle.HandMovementJobType) //手动同步职务类型 + apiRouter.POST("hand_movement_job", apiHandle.HandMovementJob) //手动同步职务类型 + apiRouter.POST("hand_movement_orgcont", apiHandle.HandMovementOrgCont) //手动同步行政组织 + apiRouter.POST("hand_movement_postcont", apiHandle.HandMovementPostCont) //手动同步职位 } } diff --git a/models/administrative_organization.go b/models/administrative_organization.go index 31ec8b7..a6eeb9f 100644 --- a/models/administrative_organization.go +++ b/models/administrative_organization.go @@ -5,7 +5,7 @@ import ( "strings" ) -//行政组织 +// 行政组织 type AdministrativeOrganization struct { Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"` Number string `json:"number" gorm:"column:number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"` @@ -26,13 +26,13 @@ func (AdministrativeOrganization *AdministrativeOrganization) TableName() string return "administrative_organization" } -//编辑行政组织内容 +// 编辑行政组织内容 func (cont *AdministrativeOrganization) EiteCont(whereMap interface{}, saveData interface{}) (err error) { err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error return } -//获取行政组织内容 +// 获取行政组织内容 func (cont *AdministrativeOrganization) GetCont(whereMap interface{}, field ...string) (err error) { gormDb := overall.CONSTANT_DB_HR.Model(&cont) if len(field) > 0 { @@ -44,13 +44,13 @@ func (cont *AdministrativeOrganization) GetCont(whereMap interface{}, field ...s return } -//根据条件获取总数 +// 根据条件获取总数 func (cont *AdministrativeOrganization) CountCont(whereMap interface{}) (countId int64) { overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Count(&countId) return } -//读取全部信息 +// 读取全部信息 func (cont *AdministrativeOrganization) ContMap(whereMap interface{}) (countAry []AdministrativeOrganization) { overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Find(&countAry) return diff --git a/overall/overallhandle/overall_handle.go b/overall/overallhandle/overall_handle.go index b00029f..6a91fd4 100644 --- a/overall/overallhandle/overall_handle.go +++ b/overall/overallhandle/overall_handle.go @@ -842,3 +842,42 @@ func GetYearOfMonthHaveDay(year, month int) (day int) { } return 28 } + +/* +* +@ 作者: 秦东 +@ 时间: 2023-01-29 11:37:59 +@ 功能: 获取行政组织父级列表 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *AllSunList[int64]) GetAllParentOrg(superior int64, level int) (err error) { + var orgAry models.OrgContType + gormDb := overall.CONSTANT_DB_HR.Model(&models.OrgContType{}).Select("`id`,`superior`,`level`").Where("`state` = 1 AND `id` = ?", superior) + if level != 0 { + gormDb = gormDb.Where("`level` > ?", level) + } + err = gormDb.First(&orgAry).Error + if err != nil { + return + } + idInt := int64(orgAry.Superior) + var fatherCont models.OrgContType + fatherCont.GetCont(map[string]interface{}{"`id`": idInt}, "`level`") + if orgAry.Superior != 0 && int64(fatherCont.Level) > int64(level) { + if IsInTrue[int64](idInt, a.SunList) == false { + a.SunList = append(a.SunList, idInt) + } + } + a.GetAllParentOrg(idInt, level) + return +} diff --git a/overall/overallhandle/type.go b/overall/overallhandle/type.go index 94ba331..72c9bb6 100644 --- a/overall/overallhandle/type.go +++ b/overall/overallhandle/type.go @@ -77,3 +77,8 @@ type EditState struct { State int `json:"state"` //状态 Constrain int `json:"constrain"` //强制执行 1:是;2:否 } + +//获取所有行政组织父级 +type GetParentAllOrg struct { + OrgList []models.AdministrativeOrganization `json:"org_list` //行政组织列表 +}