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.
266 lines
8.5 KiB
266 lines
8.5 KiB
|
4 years ago
|
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)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|