HR管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

321 lines
11 KiB

package administrativeorganization
import (
"fmt"
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"time"
"github.com/gin-gonic/gin"
)
//职位(岗位)列表
func (o *OrganizationApi) PositionList(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 = ?", requestData.Number)
}
if requestData.Duties != "" {
gormDb = gormDb.Where("p.duties = ?", requestData.Duties)
}
if requestData.Organization != "" {
gormDb = gormDb.Where("p.administrative_organization = ?", requestData.Organization)
}
if requestData.InCharge != 0 {
gormDb = gormDb.Where("p.person_in_charge = ?", requestData.InCharge)
}
if requestData.Department != "" {
gormDb = gormDb.Where("p.department = ?", requestData.Department)
}
gormDb = gormDb.Where("p.state IN ?", []int{1, 2})
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
var positionAry []positionOutInfo
errGorm := gormDb.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
}
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
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, err, c)
return
}
if requestData.Number == "" {
overallhandle.Result(101, requestData.Number, c, "职位编码不能为空!")
return
}
if requestData.Name == "" {
overallhandle.Result(101, requestData.Name, c, "职位名称不能为空!")
return
}
var dutiesId int64 = 0
if requestData.Duties == "" {
overallhandle.Result(101, requestData.Duties, c, "请指定该职位的职务!")
return
} else {
dutiesId, _ = strconv.ParseInt(requestData.Duties, 10, 64)
}
var organizationId int64 = 0
if requestData.Organization == "" {
overallhandle.Result(101, requestData.Organization, c, "请指定该职位归属的行政组织!")
return
} else {
organizationId, _ = strconv.ParseInt(requestData.Organization, 10, 64)
}
var superiorInt int64 = 0
if requestData.Superior != "" {
superiorInt, _ = strconv.ParseInt(requestData.Superior, 10, 64)
}
if requestData.InCharge == 0 {
requestData.InCharge = 2
}
var departmentId int64 = 0
if requestData.Department == "" {
overallhandle.Result(101, requestData.Organization, c, "请指定该职位归属的部门!")
return
} else {
departmentId, _ = strconv.ParseInt(requestData.Department, 10, 64)
}
var positionCont models.Position
//判断编号是否已经存在
isNumExit := overallhandle.MapOut()
isNumExit["number"] = requestData.Number
judgeNumErr := positionCont.GetCont(isNumExit)
if judgeNumErr == nil {
overallhandle.Result(101, isNumExit, c, "该编号已经存在!请不要重复使用!")
return
}
//判断岗位名称是否已经存在
isExit := overallhandle.MapOut()
isExit["department"] = departmentId
isExit["name"] = requestData.Name
judgeErr := positionCont.GetCont(isExit)
if judgeErr == nil {
overallhandle.Result(101, isExit, c, "该职位在本部门下已经存在!请不要重复添加")
return
}
positionCont.Number = requestData.Number
positionCont.Name = requestData.Name
positionCont.Duties = dutiesId
positionCont.AdministrativeOrganization = organizationId
positionCont.Superior = superiorInt
positionCont.PersonInCharge = requestData.InCharge
positionCont.Department = departmentId
positionCont.State = 1
positionCont.Time = time.Now().Unix()
addDataErr := overall.CONSTANT_DB_HR.Create(&positionCont).Error
if addDataErr != nil {
overallhandle.Result(104, addDataErr, c)
} else {
overallhandle.Result(0, positionCont, c)
}
}
//获取职位(岗位)详情
func (o *OrganizationApi) GetPositionCont(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 positionType models.Position
var postCont positionOutInfo
dbErr := overall.CONSTANT_DB_HR.Model(&positionType).Select("position.*,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 = position.duties").Joins("left join administrative_organization as ao on ao.id = position.administrative_organization").Joins("left join job_class as j on j.id = d.job_type").Where("position.id = ?", requestData.Id).First(&postCont).Error
if dbErr != nil {
overallhandle.Result(105, dbErr, c)
} else {
var getSpur models.Position
getWhe := overallhandle.MapOut()
getWhe["id"] = postCont.Superior
fmt.Printf("%v\n", postCont.Superior)
getSpur.GetCont(getWhe, "number", "name")
postCont.SuperiorNumber = getSpur.Number
postCont.SuperiorName = getSpur.Name
overallhandle.Result(0, postCont, c)
}
}
//编辑职位(岗位)
func (o *OrganizationApi) EitePositionCont(c *gin.Context) {
var requestData eitePositionInfo
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.Position
judgeErr := govCont.GetCont(whereAry)
if judgeErr != nil {
overallhandle.Result(107, judgeErr, c)
return
}
saveData := overallhandle.MapOut()
saveData["time"] = time.Now().Unix()
if requestData.Number != "" && requestData.Number != govCont.Number {
isNumExit := overallhandle.MapOut()
isNumExit["number"] = requestData.Number
var govContNum models.Position
judgeNumErr := govContNum.GetCont(isNumExit, "id", "number")
if judgeNumErr == nil {
overallhandle.Result(101, isNumExit, c, "该编号已经存在!请不要重复使用!")
return
}
saveData["number"] = requestData.Number
}
departIsTrue := false
if requestData.Department != "" && requestData.Department != strconv.FormatInt(govCont.Department, 10) {
departIsTrue = true
saveData["department"] = requestData.Department
}
if requestData.Name != "" && requestData.Name != govCont.Name {
if departIsTrue == true {
//判断岗位名称是否已经存在
departmentId, _ := strconv.ParseInt(requestData.Department, 10, 64)
isExit := overallhandle.MapOut()
isExit["department"] = departmentId
isExit["name"] = requestData.Name
var govContName models.Position
judgeErr := govContName.GetCont(isExit, "id", "department", "name")
if judgeErr == nil {
overallhandle.Result(101, isExit, c, "该职位在本部门下已经存在!请不要重复添加")
return
}
}
saveData["name"] = requestData.Name
}
if requestData.Duties != "" && requestData.Duties != strconv.FormatInt(govCont.Duties, 10) {
saveData["duties"] = requestData.Duties
}
if requestData.Organization != "" && requestData.Organization != strconv.FormatInt(govCont.AdministrativeOrganization, 10) {
saveData["administrative_organization"] = requestData.Organization
}
if requestData.Superior != "" && requestData.Superior != strconv.FormatInt(govCont.Superior, 10) {
saveData["superior"] = requestData.Superior
}
if requestData.InCharge != 0 {
saveData["person_in_charge"] = requestData.InCharge
}
eiteErr := govCont.EiteCont(whereAry, saveData)
if eiteErr != nil {
overallhandle.Result(106, eiteErr, c)
} else {
overallhandle.Result(0, saveData, c)
}
}
//编辑职位(岗位)状态或删除
func (o *OrganizationApi) EitePositionStateOrDel(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.Position
//判断行政组织是否存在
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)
}
}
}
}