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) } } } }