package administrativeorganization import ( "hr_server/models" "hr_server/models/hrmodels" "hr_server/overall" "hr_server/overall/overallhandle" "regexp" "sort" "strconv" "github.com/gin-gonic/gin" ) /* * @ 作者: 秦东 @ 时间: 2023-08-22 08:56:17 @ 功能: 自定义表单专用行政组织树 @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrganizationApi) OrgTreeList(c *gin.Context) { var requestData overallhandle.PublicId[int64] c.ShouldBindJSON(&requestData) var orgContList []hrmodels.OrgCont err := overall.CONSTANT_DB_HR.Model(&hrmodels.OrgCont{}).Select("`id`,`name`,`superior`,`sort`,`state`").Where("state = ?", 1).Find(&orgContList).Error if err != nil && len(orgContList) < 1 { overallhandle.Result(0, "未获取到数据", c) return } var formOrgTreeList []CustomerFormCont for _, v := range orgContList { if !overallhandle.IsInTrue[int64](v.Id, []int64{281}) { var formOrgTreeCont CustomerFormCont formOrgTreeCont.Id = v.Id formOrgTreeCont.ParentId = v.Superior formOrgTreeCont.Name = v.Name formOrgTreeCont.Sort = v.Sort formOrgTreeCont.Status = v.State formOrgTreeCont.Remark = "" formOrgTreeList = append(formOrgTreeList, formOrgTreeCont) } } sort.Slice(formOrgTreeList, func(i, j int) bool { return formOrgTreeList[i].Sort < formOrgTreeList[j].Sort }) if requestData.Id == 0 { requestData.Id = 313 } govMapThree := GovOrgTreeForm(requestData.Id, formOrgTreeList) var snedCont SendOrgTreeAry dictAry := overallhandle.MapOutint() dictAry[0] = "停用" dictAry[1] = "正常" snedCont.Dict.Status = dictAry snedCont.List = govMapThree snedCont.PageInfo.Total = len(formOrgTreeList) overallhandle.Result(0, snedCont, c) } /* * @ 作者: 秦东 @ 时间: 2023-08-22 09:15:59 @ 功能: 表单行政组织树 @ 参数 # @ 返回值 # @ 方法原型 # */ func GovOrgTreeForm(parentId int64, govList []CustomerFormCont) (govMap []CustomerFormOrgTree) { for i := 0; i < len(govList); i++ { if govList[i].ParentId == parentId { var govCont CustomerFormOrgTree govCont.Id = govList[i].Id govCont.ParentId = govList[i].ParentId govCont.Name = govList[i].Name govCont.Sort = govList[i].Sort govCont.Status = govList[i].Status govCont.Remark = govList[i].Remark govCont.Children = GovOrgTreeForm(govList[i].Id, govList) govMap = append(govMap, govCont) } } return } /* * @ 作者: 秦东 @ 时间: 2023-08-23 09:45:34 @ 功能: 自定义表单搜索人员 @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrganizationApi) SearchUserList(c *gin.Context) { var requestData SearchUserCont c.ShouldBindJSON(&requestData) if requestData.PageInfo.PageIndex == 0 { requestData.PageInfo.PageIndex = 1 } if requestData.PageInfo.PageSize == 0 { requestData.PageInfo.PageSize = 20 } gormDb := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`id`").Where("`number` NOT LIKE ?", "%W%") if requestData.Name != "" { gormDb = gormDb.Where("number LIKE ? OR name LIKE ?", "%"+requestData.Name+"%", "%"+requestData.Name+"%") } if requestData.Department != 0 { var sunAry overallhandle.AllSunList[int64] sunAry.GetAllSunOrg(requestData.Department) sunAry.SunList = append(sunAry.SunList, requestData.Department) gormDb = gormDb.Where("admin_org IN ?", sunAry.SunList) } gormDb = gormDb.Where("emp_type BETWEEN ? AND ?", 1, 10) var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } var userList []CustomerFormUser var idAry []int64 err := gormDb.Order("company ASC,maindeparment ASC,admin_org ASC,position ASC").Limit(requestData.PageInfo.PageSize).Offset(overallhandle.LimitPage(requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize)).Find(&idAry).Error if err != nil || len(idAry) < 1 { overallhandle.ResultList(0, requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize, total, int64(len(userList)), userList, c) return } var manContList []models.ManCont err = overall.CONSTANT_DB_HR.Model(&models.ManCont{}).Select("`id`,`number`,`name`,`icon`,`icon_photo`,`admin_org`,`company`,`maindeparment`,`key`,`mobilephone`").Where("`id` IN ?", idAry).Find(&manContList).Error if err != nil || len(manContList) < 1 { overallhandle.ResultList(0, requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize, total, int64(len(userList)), userList, c) return } for _, v := range manContList { var userCont CustomerFormUser userCont.Id = v.Id //id"` userCont.UserKey = strconv.FormatInt(v.Key, 10) //userkey"` userCont.Number = v.Number //number"` userCont.Name = v.Name //name"` userCont.Icon = v.Icon //icon"` if v.Icon == "" && v.IconPhoto != "" { userCont.Icon = v.IconPhoto //icon"` } var orgIdMap []int64 userCont.Company = v.Company //company"` if v.Company != 0 { if !overallhandle.IsInTrue[int64](v.Company, orgIdMap) { orgIdMap = append(orgIdMap, v.Company) } // var getSpurDepart models.AdministrativeOrganization // getSpurDepart.GetCont(map[string]interface{}{"`id`": v.Company}, "name") // userCont.CompanyName = getSpurDepart.Name } userCont.MainDeparment = v.MainDeparment //maindeparment"` if v.MainDeparment != 0 { if !overallhandle.IsInTrue[int64](v.MainDeparment, orgIdMap) { orgIdMap = append(orgIdMap, v.MainDeparment) } // var getSpurDepartMain models.AdministrativeOrganization // getSpurDepartMain.GetCont(map[string]interface{}{"`id`": v.MainDeparment}, "name") // userCont.MainDeparmentName = getSpurDepartMain.Name //maindeparmentname"` } userCont.AdminOrg = v.AdminOrg //adminorg"` if v.AdminOrg != 0 { if !overallhandle.IsInTrue[int64](v.AdminOrg, orgIdMap) { orgIdMap = append(orgIdMap, v.AdminOrg) } // var orgCont models.AdministrativeOrganization // orgCont.GetCont(map[string]interface{}{"`id`": v.AdminOrg}, "name") // userCont.AdminOrgName = orgCont.Name //adminorgname"` } if len(orgIdMap) > 0 { var orgAllCont []models.AdministrativeOrganization overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", orgIdMap).Find(&orgAllCont) if len(orgAllCont) > 0 { for _, org := range orgAllCont { if org.Id == v.Company { userCont.CompanyName = org.Name } if org.Id == v.MainDeparment { userCont.MainDeparmentName = org.Name } if org.Id == v.AdminOrg { userCont.AdminOrgName = org.Name } } } } userCont.Tel = v.Mobilephone userList = append(userList, userCont) } overallhandle.ResultList(0, requestData.PageInfo.PageIndex, requestData.PageInfo.PageSize, total, int64(len(userList)), userList, c) } /* * @ 作者: 秦东 @ 时间: 2023-10-09 13:37:43 @ 功能:根据选定人员条件查询人员(自定义表单专用) @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrganizationApi) SearchUserCustomerFormList(c *gin.Context) { var requestData overallhandle.NameOverall err := c.ShouldBindJSON(&requestData) if err != nil || requestData.Name == "" { overallhandle.Result(100, err, c) return } reg1 := regexp.MustCompile(`\(([^)]+)\)`) jieguo := reg1.FindAllStringSubmatch(requestData.Name, -1) var userNumber []string if len(jieguo) > 0 { for _, v := range jieguo { vLen := len(v) if vLen > 0 { // numInt, _ := strconv.ParseInt(v[vLen-1], 10, 64) // fmt.Printf("%v: %v\n", v, numInt) if !overallhandle.IsInTrue[string](v[vLen-1], userNumber) { userNumber = append(userNumber, v[vLen-1]) } } } } var userList []CustomerFormUser if len(userNumber) < 1 { overallhandle.Result(0, userList, c) } var manContList []models.ManCont err = overall.CONSTANT_DB_HR.Model(&models.ManCont{}).Select("`id`,`number`,`name`,`icon`,`icon_photo`,`admin_org`,`company`,`maindeparment`,`key`,`mobilephone`").Where("`number` IN ?", userNumber).Find(&manContList).Error if err != nil || len(manContList) < 1 { overallhandle.Result(0, userList, c) return } for _, v := range manContList { var userCont CustomerFormUser userCont.Id = v.Id //id"` userCont.UserKey = strconv.FormatInt(v.Key, 10) //userkey"` userCont.Number = v.Number //number"` userCont.Name = v.Name //name"` userCont.Icon = v.Icon //icon"` if v.Icon == "" && v.IconPhoto != "" { userCont.Icon = v.IconPhoto //icon"` } var orgIdMap []int64 userCont.Company = v.Company //company"` if v.Company != 0 { if !overallhandle.IsInTrue[int64](v.Company, orgIdMap) { orgIdMap = append(orgIdMap, v.Company) } // var getSpurDepart models.AdministrativeOrganization // getSpurDepart.GetCont(map[string]interface{}{"`id`": v.Company}, "name") // userCont.CompanyName = getSpurDepart.Name } userCont.MainDeparment = v.MainDeparment //maindeparment"` if v.MainDeparment != 0 { if !overallhandle.IsInTrue[int64](v.MainDeparment, orgIdMap) { orgIdMap = append(orgIdMap, v.MainDeparment) } // var getSpurDepartMain models.AdministrativeOrganization // getSpurDepartMain.GetCont(map[string]interface{}{"`id`": v.MainDeparment}, "name") // userCont.MainDeparmentName = getSpurDepartMain.Name //maindeparmentname"` } userCont.AdminOrg = v.AdminOrg //adminorg"` if v.AdminOrg != 0 { if !overallhandle.IsInTrue[int64](v.AdminOrg, orgIdMap) { orgIdMap = append(orgIdMap, v.AdminOrg) } // var orgCont models.AdministrativeOrganization // orgCont.GetCont(map[string]interface{}{"`id`": v.AdminOrg}, "name") // userCont.AdminOrgName = orgCont.Name //adminorgname"` } if len(orgIdMap) > 0 { var orgAllCont []models.AdministrativeOrganization overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", orgIdMap).Find(&orgAllCont) if len(orgAllCont) > 0 { for _, org := range orgAllCont { if org.Id == v.Company { userCont.CompanyName = org.Name } if org.Id == v.MainDeparment { userCont.MainDeparmentName = org.Name } if org.Id == v.AdminOrg { userCont.AdminOrgName = org.Name } } } } userCont.Tel = v.Mobilephone userList = append(userList, userCont) } overallhandle.Result(0, userList, c) }