package administrativeorganization import ( "fmt" "hr_server/models" "hr_server/overall" "hr_server/overall/overallhandle" "strconv" "time" "github.com/gin-gonic/gin" ) // 职务 func (o *OrganizationApi) DutiesList(c *gin.Context) { var requestData dutiesListType c.ShouldBindJSON(&requestData) // err := c.ShouldBindJSON(&requestData) // if err != nil { // overallhandle.Result(100, err, c) // return // } if requestData.Page < 0 { requestData.Page = 1 } if requestData.PageSize < 0 { requestData.PageSize = 10 } var dutiesList []dutiesOutCont gormDb := overall.CONSTANT_DB_HR.Model(&models.Duties{}).Select("duties.*,job_class.name as classname").Joins("left join job_class on job_class.id = duties.job_type") if requestData.Name != "" { gormDb = gormDb.Where("duties.name LIKE ?", "%"+requestData.Name+"%") } if requestData.JobId != "" { gormDb = gormDb.Where("duties.job_type = ?", requestData.JobId) } if requestData.State != 0 { gormDb = gormDb.Where("duties.state = ?", requestData.State) } else { gormDb = gormDb.Where("duties.state IN ?", []int{1, 2}) } var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } errGorm := gormDb.Order("`weight` ASC").Order("`id` DESC").Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&dutiesList).Error if errGorm != nil { overallhandle.Result(105, errGorm, c) } else { for i, v := range dutiesList { if v.State == 1 { dutiesList[i].Status = true } else { dutiesList[i].Status = false } } overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(dutiesList)), dutiesList, c) } } // 添加职务 func (o *OrganizationApi) AddDutiesCont(c *gin.Context) { var requestData addDutiesInfo err := c.ShouldBindJSON(&requestData) if err != nil { overallhandle.Result(100, err, c) return } if requestData.Name == "" { overallhandle.Result(101, err, c, "职务名称为空!") return } if requestData.JobType == "" { overallhandle.Result(101, err, c, "请指定归属职务类型!") return } if requestData.Weight == 0 { requestData.Weight = 1 } var name string judgeErr := overall.CONSTANT_DB_HR.Model(&models.Duties{}).Select("`name`").Where("`name` = ?", requestData.Name).First(&name).Error if judgeErr == nil { overallhandle.Result(103, name, c) return } var saveData models.Duties saveData.Name = requestData.Name jobTypeId, _ := strconv.ParseInt(requestData.JobType, 10, 64) saveData.JobType = jobTypeId saveData.Weight = requestData.Weight saveData.Time = time.Now().Unix() saveData.State = 1 if requestData.Number == "" { requestData.Number = getDutiesNumber() } saveData.Number = requestData.Number saveErr := overall.CONSTANT_DB_HR.Create(&saveData).Error if saveErr == nil { overallhandle.Result(0, saveData, c) } else { overallhandle.Result(104, saveErr, c) } } // 获取职务编号 func getDutiesNumber() (number string) { var countId int64 overall.CONSTANT_DB_HR.Model(&models.Duties{}).Select("`id`").Pluck("COALESCE(COUNT(`id`), 0) as countid", &countId) versioNum := "0001" if countId != 0 { countId++ // chuShu := 10000 // if countId > 9999 { // chuShu = 100000000 // } // versioNumStr := strconv.FormatFloat(countId/float64(chuShu), 'f', -1, 64) // versioNumAry := strings.Split(versioNumStr, ".") // if len(versioNumAry) == 2 { // versioNum = versioNumAry[1] // } if countId > 9999 { versioNum = overallhandle.ZeroFillByStr(strconv.FormatInt(countId, 10), 8, true) } else { versioNum = overallhandle.ZeroFillByStr(strconv.FormatInt(countId, 10), 4, true) } } number = fmt.Sprintf("ZW%v%v", overallhandle.UnixTimeToDay(time.Now().Unix(), 20), versioNum) return } // 获取职务详情 func (o *OrganizationApi) GetDutiesCont(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 } var duriesCont dutiesOutCont dbErr := overall.CONSTANT_DB_HR.Select("duties.*,job_class.name as classname").Where("duties.id = ?", requestData.Id).Joins("left join job_class on job_class.id = duties.job_type").First(&duriesCont).Error if dbErr != nil { overallhandle.Result(105, dbErr, c) } else { overallhandle.Result(0, duriesCont, c) } } // 修改职务 func (o *OrganizationApi) EiteDutiesInfo(c *gin.Context) { var requestData eiteDutiesCont err := c.ShouldBindJSON(&requestData) if err != nil { overallhandle.Result(100, err, c) return } if requestData.Id == 0 { overallhandle.Result(101, err, c, "职务分类Id不能为空!") return } whereData := overallhandle.MapOut() whereData["id"] = requestData.Id //判断职务是否存在 var dutiesInfo models.Duties judgeErr := overall.CONSTANT_DB_HR.Where(whereData).First(&dutiesInfo).Error if judgeErr != nil { overallhandle.Result(107, err, c) return } saveData := overallhandle.MapOut() saveData["time"] = time.Now().Unix() if requestData.Name != "" && requestData.Name != dutiesInfo.Name { var name string judgeErr := overall.CONSTANT_DB_HR.Model(&models.Duties{}).Select("`name`").Where("`name` = ?", requestData.Name).First(&name).Error if judgeErr == nil { overallhandle.Result(103, name, c, name) return } else { saveData["name"] = requestData.Name } } if requestData.JobType != "" { saveData["job_type"] = requestData.JobType } if requestData.Weight != 0 { saveData["weight"] = requestData.Weight } saveDataErr := dutiesInfo.EiteCont(whereData, saveData) if saveDataErr == nil { overallhandle.Result(0, saveData, c) } else { overallhandle.Result(106, saveDataErr, c) } } // 编辑状态或删除 func (o *OrganizationApi) EiteDutiesStatOrDel(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 } whereMap := overallhandle.MapOut() whereMap["id"] = requestData.Id var joInfo models.Duties //判断职务类型是否存在 judgeExist := overall.CONSTANT_DB_HR.Where(whereMap).First(&joInfo).Error 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 := joInfo.EiteCont(whereMap, saveData) if eiteErr != nil { overallhandle.Result(106, eiteErr, c) } else { overallhandle.Result(0, saveData, c) } } else { if requestData.IsTrue != 1 { //软删除 eiteErr := joInfo.EiteCont(whereMap, saveData) if eiteErr != nil { overallhandle.Result(106, eiteErr, c) } else { overallhandle.Result(0, saveData, c) } } else { //硬删除 delErr := overall.CONSTANT_DB_HR.Where(whereMap).Delete(&joInfo) if delErr == nil { overallhandle.Result(0, saveData, c) } else { overallhandle.Result(108, delErr, c) } } } } /* * @ 作者: 秦东 @ 时间: 2023-06-09 09:04:32 @ 功能: 编辑状态或删除职务信息 @ 参数 # @ 返回值 # @ 方法原型 # */ func (o *OrganizationApi) EditOrDelDutiesStatus(c *gin.Context) { var requestData DutiesEditOrDel err := c.ShouldBindJSON(&requestData) if err != nil { overallhandle.Result(100, err, c) return } if len(requestData.Id) < 1 { overallhandle.Result(101, err, c) return } if requestData.Status == 0 { requestData.Status = 1 } if requestData.IsTrue == 0 { requestData.IsTrue = 2 } var inUseCont int64 overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`id`").Where("`job_id` IN ?", requestData.Id).Count(&inUseCont) editDutiesInfo := overallhandle.MapOut() editDutiesInfo["`time`"] = time.Now().Unix() editDutiesInfo["`state`"] = requestData.Status if inUseCont > 0 { err = overall.CONSTANT_DB_HR.Model(&models.Duties{}).Where("`id` IN ?", requestData.Id).Updates(editDutiesInfo).Error if err != nil { overallhandle.Result(106, err, c) return } } else { if requestData.IsTrue == 1 { err = overall.CONSTANT_DB_HR.Where("`id` IN ?", requestData.Id).Delete(&models.Duties{}).Error if err != nil { overallhandle.Result(106, err, c) return } } else { err = overall.CONSTANT_DB_HR.Model(&models.Duties{}).Where("`id` IN ?", requestData.Id).Updates(editDutiesInfo).Error if err != nil { overallhandle.Result(106, err, c) return } } } overallhandle.Result(0, err, c) }