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.
339 lines
12 KiB
339 lines
12 KiB
package positionkpi
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"gin_server_admin/commonus"
|
|
"gin_server_admin/global"
|
|
"gin_server_admin/model/assessmentmodel"
|
|
"gin_server_admin/model/common/response"
|
|
"gin_server_admin/model/hrsystem"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 岗位指标操作
|
|
// 入口
|
|
func (a *ApiMethod) Index(c *gin.Context) {
|
|
outPut := commonus.MapOut()
|
|
response.Result(0, outPut, "角色管理入口获取成功", c)
|
|
}
|
|
|
|
// 添加岗位指标
|
|
func (a *ApiMethod) AddPostTarget(c *gin.Context) {
|
|
var requestData addPostTarget
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Title == "" {
|
|
response.Result(100, requestData, "请输入指标名称!", c)
|
|
return
|
|
}
|
|
if requestData.Type == 0 {
|
|
requestData.Type = 2
|
|
}
|
|
if requestData.ScoringMethod == 0 {
|
|
requestData.ScoringMethod = 1
|
|
}
|
|
if requestData.RelevantDepartments == "" {
|
|
response.Result(101, requestData, "请选择该指标归属部门!", c)
|
|
return
|
|
}
|
|
if len(requestData.DepartmentsPost) < 1 {
|
|
response.Result(102, requestData, "请选择该指标归属岗位!", c)
|
|
return
|
|
}
|
|
if requestData.Dimension == "" {
|
|
response.Result(103, requestData, "请选择指标归属维度!", c)
|
|
return
|
|
}
|
|
if requestData.Unit == "" {
|
|
response.Result(104, requestData, "请输入该指标计算单位!", c)
|
|
return
|
|
}
|
|
if requestData.Cycle == 0 {
|
|
requestData.Cycle = 1
|
|
}
|
|
if requestData.CycleAttr == 0 {
|
|
requestData.CycleAttr = 1
|
|
}
|
|
|
|
var saveData assessmentmodel.PostTarget
|
|
saveData.Title = requestData.Title //标题"`
|
|
saveData.Type = requestData.Type //1:定性考核;2:定量考核"`
|
|
saveData.State = 1 //状态(1:启用;2:禁用;3:删除)"`
|
|
saveData.Time = time.Now().Unix() //创建时间"`
|
|
saveData.Share = 2 //1:共用;2:私用"`
|
|
departmentId, _ := strconv.ParseInt(requestData.RelevantDepartments, 10, 64)
|
|
saveData.ReleDepart = departmentId //相关部门"`
|
|
saveData.DepartmentsPost = strings.Join(requestData.DepartmentsPost, ",") //相关岗位"`
|
|
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
|
|
saveData.Dimension = dimensionId //维度"`
|
|
saveData.Key = commonus.GetFileNumberEs() //UUID"`
|
|
saveData.Report = strings.Join(requestData.Report, ",") //上报人"`
|
|
saveData.Unit = requestData.Unit //单位"`
|
|
saveData.Cycle = requestData.Cycle //1:班;2:天;3:周;4:月;5:季度;6:年"`
|
|
saveData.Cycleattr = requestData.CycleAttr //辅助计数"`
|
|
saveData.ScoringMethod = requestData.ScoringMethod //计分方式(1:自动;2:手动)"`
|
|
saveData.VisibleRange = strings.Join(requestData.VisibleRange, ",") //可见范围"`
|
|
saveData.VisibleGroup = strings.Join(requestData.VisibleGroup, ",") //可见范围(集团)"`
|
|
err := global.GVA_DB_Performanceappraisal.Create(&saveData).Error
|
|
if err != nil {
|
|
response.Result(105, err.Error(), "数据写入失败!", c)
|
|
return
|
|
}
|
|
response.Result(0, saveData, "数据写入成功!", c)
|
|
}
|
|
|
|
// 编辑岗位指标
|
|
func (a *ApiMethod) EditPostTarget(c *gin.Context) {
|
|
var requestData editPostTargetCont
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Id == "" {
|
|
response.Result(100, requestData, "请输入指标名称!", c)
|
|
return
|
|
}
|
|
where := commonus.MapOut()
|
|
where["`id`"] = requestData.Id
|
|
var postTargetCont assessmentmodel.PostTarget
|
|
err := postTargetCont.GetCont(where)
|
|
if err != nil {
|
|
response.Result(100, requestData, "该指标不存在!", c)
|
|
return
|
|
}
|
|
saveData := commonus.MapOut()
|
|
if requestData.Title != "" && requestData.Title != postTargetCont.Title {
|
|
saveData["title"] = requestData.Title
|
|
}
|
|
if requestData.Type != 0 && requestData.Type != postTargetCont.Type {
|
|
saveData["type"] = requestData.Type
|
|
}
|
|
if requestData.ScoringMethod != 0 && requestData.ScoringMethod != postTargetCont.ScoringMethod {
|
|
saveData["scoring_method"] = requestData.ScoringMethod
|
|
}
|
|
if requestData.RelevantDepartments != "" {
|
|
departmentId, _ := strconv.ParseInt(requestData.RelevantDepartments, 10, 64)
|
|
if departmentId != postTargetCont.ReleDepart {
|
|
saveData["rele_depart"] = departmentId
|
|
}
|
|
|
|
}
|
|
if len(requestData.DepartmentsPost) > 0 {
|
|
departPostStr := strings.Join(requestData.DepartmentsPost, ",")
|
|
if departPostStr != postTargetCont.DepartmentsPost {
|
|
saveData["departments_post"] = departPostStr
|
|
}
|
|
}
|
|
if requestData.Dimension != "" {
|
|
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
|
|
if dimensionId != postTargetCont.Dimension {
|
|
saveData["dimension"] = dimensionId
|
|
}
|
|
}
|
|
if len(requestData.Report) > 0 {
|
|
reportStr := strings.Join(requestData.Report, ",")
|
|
if reportStr != postTargetCont.Report {
|
|
saveData["report"] = reportStr
|
|
}
|
|
}
|
|
if requestData.Unit != "" && requestData.Unit != postTargetCont.Unit {
|
|
saveData["unit"] = requestData.Unit
|
|
}
|
|
if requestData.Cycle != 0 && requestData.Cycle != postTargetCont.Cycle {
|
|
saveData["cycle"] = requestData.Cycle
|
|
}
|
|
if requestData.CycleAttr != 0 && requestData.CycleAttr != postTargetCont.Cycleattr {
|
|
saveData["cycleattr"] = requestData.CycleAttr
|
|
}
|
|
|
|
if len(requestData.VisibleRange) > 0 {
|
|
visibleRangeStr := strings.Join(requestData.VisibleRange, ",")
|
|
if visibleRangeStr != postTargetCont.VisibleRange {
|
|
saveData["visible_range"] = visibleRangeStr
|
|
}
|
|
}
|
|
if len(requestData.VisibleGroup) > 0 {
|
|
visibleGroupStr := strings.Join(requestData.VisibleGroup, ",")
|
|
if visibleGroupStr != postTargetCont.VisibleGroup {
|
|
saveData["visible_group"] = visibleGroupStr
|
|
}
|
|
}
|
|
if len(saveData) > 0 {
|
|
saveData["time"] = time.Now().Unix()
|
|
saveErr := postTargetCont.EditCont(where, saveData)
|
|
if saveErr != nil {
|
|
response.Result(101, saveErr, "数据编辑失败!", c)
|
|
} else {
|
|
response.Result(0, saveData, "数据编辑成功!", c)
|
|
}
|
|
} else {
|
|
response.Result(0, saveData, "数据编辑成功!", c)
|
|
}
|
|
}
|
|
|
|
// 编辑岗位指标状态
|
|
func (a *ApiMethod) EditState(c *gin.Context) {
|
|
var requestData editState
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Id == "" {
|
|
response.Result(100, requestData, "请输入指标名称!", c)
|
|
return
|
|
}
|
|
if requestData.State == 0 {
|
|
requestData.State = 1
|
|
}
|
|
if requestData.IsTrue == 0 {
|
|
requestData.IsTrue = 2
|
|
}
|
|
where := commonus.MapOut()
|
|
where["`id`"] = requestData.Id
|
|
var postTargetCont assessmentmodel.PostTarget
|
|
err := postTargetCont.GetCont(where)
|
|
if err != nil {
|
|
response.Result(100, requestData, "该指标不存在!", c)
|
|
return
|
|
}
|
|
saveData := commonus.MapOut()
|
|
saveData["`state`"] = requestData.State
|
|
if requestData.State != 3 {
|
|
saveErr := postTargetCont.EditCont(where, saveData)
|
|
if saveErr != nil {
|
|
response.Result(101, saveErr, "数据编辑失败!", c)
|
|
return
|
|
}
|
|
} else {
|
|
if requestData.IsTrue == 1 {
|
|
err := postTargetCont.DelCont(where)
|
|
if err != nil {
|
|
response.Result(101, err, "数据编辑失败!", c)
|
|
return
|
|
}
|
|
} else {
|
|
saveErr := postTargetCont.EditCont(where, saveData)
|
|
if saveErr != nil {
|
|
response.Result(101, saveErr, "数据编辑失败!", c)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
if postTargetCont.Type == 1 {
|
|
if requestData.State != 3 {
|
|
eidtDingXing(postTargetCont.Id, requestData.State)
|
|
} else {
|
|
if requestData.IsTrue == 1 {
|
|
var postSunTargetInfo assessmentmodel.PostSunTarget
|
|
postSunTargetInfo.DelCont(map[string]interface{}{"`parent_id`": postTargetCont.Id})
|
|
var postDetailsInfo assessmentmodel.PostTargetDetails
|
|
postDetailsInfo.DelCont(map[string]interface{}{"`parent_id`": postTargetCont.Id})
|
|
} else {
|
|
eidtDingXing(postTargetCont.Id, requestData.State)
|
|
}
|
|
}
|
|
}
|
|
response.Result(0, saveData, "数据编辑成功!", c)
|
|
}
|
|
|
|
// 编辑定性考核关联项目
|
|
/*
|
|
|
|
*/
|
|
func eidtDingXing(postTarKey int64, delVal int) {
|
|
var postSunTargetInfo assessmentmodel.PostSunTarget
|
|
postSunTargetInfo.EditCont(map[string]interface{}{"`parent_id`": postTarKey}, map[string]interface{}{"`state`": delVal, "`time`": time.Now().Unix()})
|
|
var postDetailsInfo assessmentmodel.PostTargetDetails
|
|
postDetailsInfo.EditCont(map[string]interface{}{"`parentid`": postTarKey}, map[string]interface{}{"`state`": delVal, "`time`": time.Now().Unix()})
|
|
}
|
|
|
|
// 岗位指标列表
|
|
func (a *ApiMethod) PostTargetList(c *gin.Context) {
|
|
var requestData postTargetList
|
|
c.ShouldBindJSON(&requestData)
|
|
if requestData.Page == 0 {
|
|
requestData.Page = 1
|
|
}
|
|
if requestData.PageSize == 0 {
|
|
requestData.PageSize = 20
|
|
}
|
|
var postTargetListAry []outPostTargetList
|
|
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PostTarget{})
|
|
|
|
if requestData.Title != "" {
|
|
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
|
|
}
|
|
if requestData.Type != 0 {
|
|
gormDb = gormDb.Where("`type` = ?", requestData.Type)
|
|
}
|
|
if requestData.ScoringMethod != 0 {
|
|
gormDb = gormDb.Where("`scoring_method` = ?", requestData.ScoringMethod)
|
|
}
|
|
if requestData.RelevantDepartments != "" {
|
|
gormDb = gormDb.Where("`rele_depart` = ?", requestData.RelevantDepartments)
|
|
}
|
|
if requestData.DepartmentsPost != "" {
|
|
gormDb = gormDb.Where("FIND_IN_SET(?,`departments_post`)", requestData.DepartmentsPost)
|
|
}
|
|
if requestData.Dimension != "" {
|
|
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
|
|
}
|
|
if requestData.Report != "" {
|
|
gormDb = gormDb.Where("FIND_IN_SET(?,`report`)", requestData.Report)
|
|
}
|
|
var total int64
|
|
totalErr := gormDb.Count(&total).Error
|
|
if totalErr != nil {
|
|
total = 0
|
|
}
|
|
|
|
err := gormDb.Order("`id` desc").Limit(requestData.PageSize).Offset(commonus.CalculatePages(requestData.Page, requestData.PageSize)).Find(&postTargetListAry).Error
|
|
if err != nil {
|
|
response.Result(103, err.Error(), "没有数据!", c)
|
|
}
|
|
for i, v := range postTargetListAry {
|
|
//关联维度
|
|
var dimCont assessmentmodel.DutyClass
|
|
dimCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "`title`")
|
|
postTargetListAry[i].DimensionName = dimCont.Title
|
|
//关联部门
|
|
var orgCont hrsystem.AdministrativeOrganization
|
|
orgCont.GetCont(map[string]interface{}{"`id`": v.ReleDepart}, "`name`")
|
|
postTargetListAry[i].DepartmentName = orgCont.Name
|
|
//岗位
|
|
if v.DepartmentsPost != "" {
|
|
postAry := strings.Split(v.DepartmentsPost, ",")
|
|
if len(postAry) > 0 {
|
|
var postContLost []hrsystem.AdministrativeOrganization
|
|
postErr := global.GVA_DB_HrDataBase.Model(&hrsystem.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", postAry).Find(&postContLost).Error
|
|
if postErr == nil {
|
|
for _, pv := range postContLost {
|
|
var postInfo idAndName
|
|
postInfo.Id = strconv.FormatInt(pv.Id, 10)
|
|
postInfo.Name = pv.Name
|
|
postTargetListAry[i].PostAry = append(postTargetListAry[i].PostAry, postInfo)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//提报人
|
|
if v.Report != "" {
|
|
reportAry := strings.Split(v.Report, ",")
|
|
if len(reportAry) > 0 {
|
|
var peopleList []hrsystem.PersonArchives
|
|
peopleErr := global.GVA_DB_HrDataBase.Model(&hrsystem.PersonArchives{}).Select("`key`,`number`,`name`,`icon`").Where("`key` IN ?", reportAry).Find(&peopleList).Error
|
|
if peopleErr == nil {
|
|
for _, manv := range peopleList {
|
|
var namCont reportUser
|
|
namCont.Id = strconv.FormatInt(manv.Id, 10)
|
|
namCont.Name = manv.Name
|
|
namCont.Number = manv.Number
|
|
namCont.Icon = manv.Icon
|
|
postTargetListAry[i].ReportAry = append(postTargetListAry[i].ReportAry, namCont)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
countSum := len(postTargetListAry)
|
|
printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, postTargetListAry)
|
|
response.Result(0, printData, "查询成功!", c)
|
|
}
|
|
|