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.

265 lines
8.5 KiB

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