KPI绩效考核系统
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.

1248 lines
40 KiB

package postpc
import (
"key_performance_indicators/models/modelshr"
"key_performance_indicators/models/modelskpi"
"key_performance_indicators/overall"
"key_performance_indicators/overall/publicmethod"
"strconv"
"time"
"github.com/gin-gonic/gin"
)
// 提交岗位定量目标设定
func (a *ApiMethod) SetEvaluationObjectives(c *gin.Context) {
var requestData SetEvaluationObjectives
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
if requestData.Year == 0 {
publicmethod.Result(1, err, c, "请填写年度")
return
}
// if requestData.Group == "" {
// publicmethod.Result(1, err, c, "请选择归属集团")
// return
// }
if requestData.DepartMent == "" {
publicmethod.Result(1, err, c, "请选择归属行政组织")
return
}
if requestData.PostId == "" {
publicmethod.Result(1, err, c, "请选择归属岗位")
return
}
if requestData.Dimension == "" {
publicmethod.Result(1, err, c, "请选择归属维度")
return
}
if requestData.Target == "" {
publicmethod.Result(1, err, c, "请选择归属指标")
return
}
switch requestData.Cycle {
case 1:
if len(requestData.CycleAdded) != 1 {
publicmethod.Result(1, err, c, "年度只可填写一条!")
return
}
case 2:
if len(requestData.CycleAdded) > 4 {
publicmethod.Result(1, err, c, "季度最多只可填写四条!")
return
}
if len(requestData.CycleAdded) < 1 {
publicmethod.Result(1, err, c, "季度至少填写一条!")
return
}
case 3:
if len(requestData.CycleAdded) > 12 {
publicmethod.Result(1, err, c, "月度最多只可填写十二条!")
return
}
if len(requestData.CycleAdded) < 1 {
publicmethod.Result(1, err, c, "月度至少填写一条!")
return
}
default:
publicmethod.Result(1, err, c, "请选择周期")
return
}
orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64)
_, companyId, departmentId, _, _ := publicmethod.GetOrgStructure(orgId) //公司部门
var timecopy []int64
gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Select("Timecopy").Where("`group` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? ", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year)
judgeErr := gromDb.Find(&timecopy).Error
if judgeErr == nil {
if len(timecopy) > 0 {
publicmethod.Result(1, judgeErr, c, "已经存在!不要重复添加!")
return
}
}
var saveData []modelskpi.QuanPostConfig
var eiteAddData []int64
for _, v := range requestData.CycleAdded {
if judgeErr != nil {
var saveDataCont modelskpi.QuanPostConfig
saveDataCont.CompanyId = companyId
saveDataCont.DepartmentId = departmentId
saveDataCont.OrgId = orgId //行政组织
postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64)
saveDataCont.PostId = postIdInt //岗位
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
saveDataCont.Dimension = dimensionId //维度
targetId, _ := strconv.ParseInt(requestData.Target, 10, 64)
saveDataCont.Target = targetId //指标
saveDataCont.Type = int64(requestData.Cycle)
saveDataCont.Year = requestData.Year
saveDataCont.Timecopy = v.Id
if v.Zeroprize < 0 {
saveDataCont.Zeroprize = 0
} else {
saveDataCont.Zeroprize = v.Zeroprize * 100
}
if v.Allprize < 0 {
saveDataCont.Allprize = 0
} else {
saveDataCont.Allprize = v.Allprize * 100
}
if v.Capping > 0 {
saveDataCont.Capping = 1
saveDataCont.CappingVal = v.Capping * 100
} else {
saveDataCont.Capping = 2
saveDataCont.CappingVal = 0
}
saveDataCont.Time = time.Now().Unix()
saveDataCont.State = 1
saveData = append(saveData, saveDataCont)
} else {
if len(timecopy) <= 0 {
var saveDataCont modelskpi.QuanPostConfig
// orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64)
// _, saveDataCont.CompanyId, saveDataCont.DepartmentId, _, _ = publicmethod.GetOrgStructure(orgId) //公司部门
saveDataCont.CompanyId = companyId
saveDataCont.DepartmentId = departmentId
saveDataCont.OrgId = orgId //行政组织
postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64)
saveDataCont.PostId = postIdInt //岗位
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
saveDataCont.Dimension = dimensionId //维度
targetId, _ := strconv.ParseInt(requestData.Target, 10, 64)
saveDataCont.Target = targetId //指标
saveDataCont.Type = int64(requestData.Cycle)
saveDataCont.Year = requestData.Year
saveDataCont.Timecopy = v.Id
if v.Zeroprize < 0 {
saveDataCont.Zeroprize = 0
} else {
saveDataCont.Zeroprize = v.Zeroprize * 100
}
if v.Allprize < 0 {
saveDataCont.Allprize = 0
} else {
saveDataCont.Allprize = v.Allprize * 100
}
if v.Capping > 0 {
saveDataCont.Capping = 1
saveDataCont.CappingVal = v.Capping * 100
} else {
saveDataCont.Capping = 2
saveDataCont.CappingVal = 0
}
saveDataCont.Time = time.Now().Unix()
saveDataCont.State = 1
saveData = append(saveData, saveDataCont)
} else {
for _, s_v := range timecopy {
if s_v != v.Id {
var saveDataCont modelskpi.QuanPostConfig
// orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64)
// _, saveDataCont.CompanyId, saveDataCont.DepartmentId, _, _ = publicmethod.GetOrgStructure(orgId) //公司部门
saveDataCont.CompanyId = companyId
saveDataCont.DepartmentId = departmentId
saveDataCont.OrgId = orgId //行政组织
postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64)
saveDataCont.PostId = postIdInt //岗位
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
saveDataCont.Dimension = dimensionId //维度
targetId, _ := strconv.ParseInt(requestData.Target, 10, 64)
saveDataCont.Target = targetId //指标
saveDataCont.Type = int64(requestData.Cycle)
saveDataCont.Year = requestData.Year
saveDataCont.Timecopy = v.Id
if v.Zeroprize < 0 {
saveDataCont.Zeroprize = 0
} else {
saveDataCont.Zeroprize = v.Zeroprize * 100
}
if v.Allprize < 0 {
saveDataCont.Allprize = 0
} else {
saveDataCont.Allprize = v.Allprize * 100
}
if v.Capping > 0 {
saveDataCont.Capping = 1
saveDataCont.CappingVal = v.Capping * 100
} else {
saveDataCont.Capping = 2
saveDataCont.CappingVal = 0
}
saveDataCont.Time = time.Now().Unix()
saveDataCont.State = 1
saveData = append(saveData, saveDataCont)
} else {
eiteDataMap := publicmethod.MapOut[string]()
eiteDataMap["type"] = requestData.Cycle
eiteDataMap["timecopy"] = v.Id
if v.Zeroprize < 0 {
eiteDataMap["zeroprize"] = 0
} else {
eiteDataMap["zeroprize"] = v.Zeroprize * 100
}
if v.Allprize < 0 {
eiteDataMap["allprize"] = 0
} else {
eiteDataMap["allprize"] = v.Allprize * 100
}
if v.Capping > 0 {
eiteDataMap["capping"] = 1
eiteDataMap["capping_val"] = v.Capping * 100
} else {
eiteDataMap["capping"] = 2
eiteDataMap["capping_val"] = 0
}
eiteDataMap["time"] = time.Now().Unix()
gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Select("Timecopy").Where("`company_id` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle)
gromDb.Updates(eiteDataMap)
eiteAddData = append(eiteAddData, 1)
}
}
}
}
}
if len(saveData) <= 0 && len(eiteAddData) <= 0 {
publicmethod.Result(1, err, c, "没有要添加的数据!")
return
}
if len(saveData) > 0 {
saveErr := overall.CONSTANT_DB_KPI.Create(&saveData).Error
if saveErr != nil {
publicmethod.Result(1, err, c, "数据添加失败!")
return
}
}
publicmethod.Result(0, err, c)
}
// 岗位定量考核目标列表
func (a *ApiMethod) PostConfigList(c *gin.Context) {
var requestData SelectQuantitativeConfig
c.ShouldBindJSON(&requestData)
// if err != nil {
// publicmethod.Result(1, err, c, "数据获取失败!")
// return
// }
// var qualConfigList []assessmentmodel.QuantitativeConfig
var qualConfigList []modelskpi.QuanPostConfigTarget
gormDb := overall.CONSTANT_DB_KPI
if requestData.GroupId != "" {
gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId)
}
if requestData.DepartmentID != "" {
gormDb = gormDb.Where("`org_id` = ?", requestData.DepartmentID)
}
if requestData.PostId != "" {
gormDb = gormDb.Where("`post_id` = ?", requestData.PostId)
}
if requestData.Dimension != "" {
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
}
if requestData.Target != "" {
gormDb = gormDb.Where("`target` = ?", requestData.Target)
}
switch requestData.Type {
case 1:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
case 2:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
case 3:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
default:
}
if requestData.Year != 0 {
gormDb = gormDb.Where("`year` = ?", requestData.Year)
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
}
if requestData.Title != "" {
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
}
// gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC")
gormDb = gormDb.Order("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`post_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC")
contErr := gormDb.Find(&qualConfigList).Error
if contErr != nil {
publicmethod.Result(1, contErr, c, "没有数据!")
return
}
var outList []OutQuantitativeConfig
for _, v := range qualConfigList {
var outCont OutQuantitativeConfig
outCont.Id = v.Id
outCont.Title = v.Title
outCont.CompanyId = v.CompanyId
outCont.DepartmentId = v.DepartmentId
outCont.OrgId = v.OrgId
outCont.PostId = v.PostId
outCont.Dimension = v.Dimension
outCont.Target = v.Target
outCont.Type = v.Type
outCont.Year = v.Year
outCont.Timecopy = v.Timecopy
outCont.Zeroprize = v.Zeroprize / 100
outCont.Allprize = v.Allprize / 100
outCont.Capping = v.Capping
outCont.CappingVal = v.CappingVal / 100
outCont.Time = v.Time
outCont.State = v.State
outCont.DimensionId = strconv.FormatInt(v.Dimension, 10)
var companyCont modelshr.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name")
outCont.GroupTitle = companyCont.Name
var departmenCont modelshr.AdministrativeOrganization
departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name")
outCont.DepartmentTitle = departmenCont.Name
var postCont modelshr.Position
postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name")
outCont.PostTitle = postCont.Name
var dimensionCont modelskpi.DutyClass
dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title")
outCont.DimensionTitle = dimensionCont.Title
outCont.TargetTitle = v.Title
// dErr, departmentInfo := commonus.GetBranchFactory(v.DepartmentId)
// if dErr == true {
// outCont.DimensionTitle = departmentInfo.Name
// }
// targetInfo, tErr := commonus.GetTargetInfo(v.Target)
// if tErr == true {
// outCont.TargetTitle = targetInfo.Title
// }
outList = append(outList, outCont)
}
publicmethod.Result(0, outList, c)
}
// 修改考核目标设置
func (a *ApiMethod) EiteQuantitativeConfig(c *gin.Context) {
var requestData []EiteQuantConfig
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
if len(requestData) < 1 {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
for _, v := range requestData {
eiteCont := publicmethod.MapOut[string]()
eiteCont["allprize"] = v.Allprize * 100
eiteCont["zeroprize"] = v.Zeroprize * 100
eiteCont["capping_val"] = v.Capping * 100
err = overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Where("`id` = ?", v.Id).Updates(eiteCont).Error
}
if err != nil {
publicmethod.Result(104, err, c)
} else {
publicmethod.Result(0, err, c)
}
}
// 删除考核目标设置
func (a *ApiMethod) DelQuantitativeConfig(c *gin.Context) {
var requestData []string
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
if len(requestData) < 1 {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
err = overall.CONSTANT_DB_KPI.Where("`id` IN ?", requestData).Delete(&modelskpi.QuanPostConfig{}).Error
if err != nil {
publicmethod.Result(108, err, c)
} else {
publicmethod.Result(0, err, c)
}
}
/*
*
@ 作者: 秦东
@ 时间: 2022-11-12 13:25:51
@ 功能: 删除考核目标设置(新版)
@ 参数
#
@ 返回值
#
*/
func (a *ApiMethod) NewDelQuantitativeConfig(c *gin.Context) {
var receivedValue newDelTargetConfig
err := c.ShouldBindJSON(&receivedValue)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if receivedValue.OrgID == "" || receivedValue.PostId == "" || receivedValue.Dimension == "" || receivedValue.Target == "" || receivedValue.Type == 0 || receivedValue.Year == 0 {
publicmethod.Result(101, receivedValue, c, "数据获取失败!")
return
}
err = overall.CONSTANT_DB_KPI.Where("`org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `type` = ? AND `year` = ?", receivedValue.OrgID, receivedValue.PostId, receivedValue.Dimension, receivedValue.Target, receivedValue.Type, receivedValue.Year).Delete(&modelskpi.QuanPostConfig{}).Error
if err != nil {
publicmethod.Result(108, err, c)
} else {
publicmethod.Result(0, err, c)
}
}
// 查看定量岗位考核目标设定
func (a *ApiMethod) LookPosttiveConfig(c *gin.Context) {
var requestData SelectQuantitativeConfig
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
// var qualConfigList []assessmentmodel.QuantitativeConfig
var qualConfigList []modelskpi.QuanPostConfigTarget
gormDb := overall.CONSTANT_DB_KPI
if requestData.GroupId != "" {
gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId)
}
if requestData.DepartmentID != "" {
gormDb = gormDb.Where("`department_id` = ?", requestData.DepartmentID)
}
if requestData.OrgID != "" {
gormDb = gormDb.Where("`org_id` = ?", requestData.OrgID)
}
if requestData.PostId != "" {
gormDb = gormDb.Where("`post_id` = ?", requestData.PostId)
}
if requestData.Dimension != "" {
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
}
if requestData.Target != "" {
gormDb = gormDb.Where("`target` = ?", requestData.Target)
}
switch requestData.Type {
case 1:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
case 2:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
case 3:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
default:
}
if requestData.Year != 0 {
gormDb = gormDb.Where("`year` = ?", requestData.Year)
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
}
if requestData.Title != "" {
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
}
// gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC")
gormDb = gormDb.Order("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC")
contErr := gormDb.Find(&qualConfigList).Error
if contErr != nil {
publicmethod.Result(1, err, c, "没有数据!")
return
}
var outList []OutQuantitativeConfig
for _, v := range qualConfigList {
var outCont OutQuantitativeConfig
outCont.Id = v.Id
outCont.IdStr = strconv.FormatInt(v.Id, 10)
outCont.DepartmentId = v.DepartmentId
outCont.CompanyId = v.CompanyId
outCont.Dimension = v.Dimension
outCont.PostId = v.PostId
outCont.Target = v.Target
outCont.Type = v.Type
outCont.Year = v.Year
outCont.Timecopy = v.Timecopy
outCont.Zeroprize = v.Zeroprize / 100
outCont.Allprize = v.Allprize / 100
outCont.Time = v.Time
outCont.State = v.State
outCont.DimensionId = strconv.FormatInt(v.Dimension, 10)
var companyCont modelshr.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name")
outCont.GroupTitle = companyCont.Name
var departmenCont modelshr.AdministrativeOrganization
departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name")
outCont.DepartmentTitle = departmenCont.Name
var postCont modelshr.Position
postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name")
outCont.PostTitle = postCont.Name
var dimensionCont modelskpi.DutyClass
dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title")
outCont.DimensionTitle = dimensionCont.Title
outCont.TargetTitle = v.Title
outCont.Capping = v.Capping
outCont.CappingVal = v.CappingVal / 100
outList = append(outList, outCont)
}
publicmethod.Result(0, outList, c)
}
// 岗位定量考核目标列表(新版)
func (a *ApiMethod) PostConfigListNews(c *gin.Context) {
var requestData SelectQuantitativeConfig
c.ShouldBindJSON(&requestData)
// if err != nil {
// publicmethod.Result(1, err, c, "数据获取失败!")
// return
// }
// var qualConfigList []assessmentmodel.QuantitativeConfig
var qualConfigList []modelskpi.QuanPostConfigTarget
gormDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfigTarget{}).Distinct("`company_id`,`department_id`,`org_id`,`post_id`,`dimension`,`target`,`title`,`year`,`type`")
if requestData.GroupId != "" {
gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId)
}
if requestData.DepartmentID != "" {
gormDb = gormDb.Where("`org_id` = ?", requestData.DepartmentID)
}
if requestData.PostId != "" {
gormDb = gormDb.Where("`post_id` = ?", requestData.PostId)
}
if requestData.Dimension != "" {
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
}
if requestData.Target != "" {
gormDb = gormDb.Where("`target` = ?", requestData.Target)
}
if requestData.Year != 0 {
gormDb = gormDb.Where("`year` = ?", requestData.Year)
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
} else {
gormDb = gormDb.Where("`state` = 1")
}
if requestData.Type != 0 {
gormDb = gormDb.Where("`type` = ?", requestData.Type)
}
if requestData.Title != "" {
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
}
// gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC")
gormDb = gormDb.Order("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`post_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC")
contErr := gormDb.Find(&qualConfigList).Error
if contErr != nil {
publicmethod.Result(1, contErr, c, "没有数据!")
return
}
var outList []OutQuantitativeConfig
for _, v := range qualConfigList {
var outCont OutQuantitativeConfig
outCont.Id = v.Id
outCont.Title = v.Title
outCont.CompanyId = v.CompanyId
outCont.DepartmentId = v.DepartmentId
outCont.OrgId = v.OrgId
outCont.PostId = v.PostId
outCont.Dimension = v.Dimension
outCont.Target = v.Target
outCont.Type = v.Type
outCont.Year = v.Year
outCont.Timecopy = v.Timecopy
outCont.Zeroprize = v.Zeroprize / 100
outCont.Allprize = v.Allprize / 100
outCont.Capping = v.Capping
outCont.CappingVal = v.CappingVal / 100
outCont.Time = v.Time
outCont.State = v.State
outCont.DimensionId = strconv.FormatInt(v.Dimension, 10)
var companyCont modelshr.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name")
outCont.GroupTitle = companyCont.Name
var departmenCont modelshr.AdministrativeOrganization
departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name")
outCont.DepartmentTitle = departmenCont.Name
var postCont modelshr.Position
postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name")
outCont.PostTitle = postCont.Name
var dimensionCont modelskpi.DutyClass
dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title")
outCont.DimensionTitle = dimensionCont.Title
outCont.TargetTitle = v.Title
// dErr, departmentInfo := commonus.GetBranchFactory(v.DepartmentId)
// if dErr == true {
// outCont.DimensionTitle = departmentInfo.Name
// }
// targetInfo, tErr := commonus.GetTargetInfo(v.Target)
// if tErr == true {
// outCont.TargetTitle = targetInfo.Title
// }
outList = append(outList, outCont)
}
publicmethod.Result(0, outList, c)
}
// 岗位定量考核目标列表(新版)
func (a *ApiMethod) PeopleConfigList(c *gin.Context) {
var requestData SelectQuantitativeConfig
c.ShouldBindJSON(&requestData)
// if err != nil {
// publicmethod.Result(1, err, c, "数据获取失败!")
// return
// }
// var qualConfigList []assessmentmodel.QuantitativeConfig
var qualConfigList []modelskpi.QuanPeopleConfigTarget
// gormDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfigTarget{}).Distinct("`user_key`,`company_id`,`department_id`,`org_id`,`post_id`,`dimension`,`target`,`title`,`year`,`type`")
gormDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfigTarget{})
if requestData.GroupId != "" {
gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId)
}
if requestData.DepartmentID != "" {
gormDb = gormDb.Where("`org_id` = ?", requestData.DepartmentID)
}
if requestData.PostId != "" {
gormDb = gormDb.Where("`post_id` = ?", requestData.PostId)
}
if requestData.Dimension != "" {
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
}
if requestData.Target != "" {
gormDb = gormDb.Where("`target` = ?", requestData.Target)
}
if requestData.Year != 0 {
gormDb = gormDb.Where("`year` = ?", requestData.Year)
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
} else {
gormDb = gormDb.Where("`state` = 1")
}
if requestData.Type != 0 {
gormDb = gormDb.Where("`type` = ?", requestData.Type)
}
if requestData.Title != "" {
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
}
if len(requestData.UserKey) > 0 {
gormDb = gormDb.Where("`user_key` IN ?", requestData.UserKey)
}
// gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC")
gormDb = gormDb.Order("`user_key` ASC").Order("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`post_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC")
contErr := gormDb.Find(&qualConfigList).Error
if contErr != nil {
publicmethod.Result(1, contErr, c, "没有数据!")
return
}
var outList []OutQuanPeopleConfig
for _, v := range qualConfigList {
var outCont OutQuanPeopleConfig
outCont.Id = v.Id
outCont.Title = v.Title
outCont.CompanyId = v.CompanyId
outCont.DepartmentId = v.DepartmentId
outCont.OrgId = v.OrgId
outCont.PostId = v.PostId
outCont.Dimension = v.Dimension
outCont.Target = v.Target
outCont.Type = v.Type
outCont.Year = v.Year
outCont.Timecopy = v.Timecopy
outCont.Zeroprize = v.Zeroprize / 100
outCont.Allprize = v.Allprize / 100
outCont.Capping = v.Capping
outCont.CappingVal = v.CappingVal / 100
outCont.Time = v.Time
outCont.State = v.State
outCont.DimensionId = strconv.FormatInt(v.Dimension, 10)
var companyCont modelshr.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name")
outCont.GroupTitle = companyCont.Name
var departmenCont modelshr.AdministrativeOrganization
departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name")
outCont.DepartmentTitle = departmenCont.Name
var postCont modelshr.Position
postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name")
outCont.PostTitle = postCont.Name
var dimensionCont modelskpi.DutyClass
dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title")
outCont.DimensionTitle = dimensionCont.Title
outCont.TargetTitle = v.Title
// dErr, departmentInfo := commonus.GetBranchFactory(v.DepartmentId)
// if dErr == true {
// outCont.DimensionTitle = departmentInfo.Name
// }
// targetInfo, tErr := commonus.GetTargetInfo(v.Target)
// if tErr == true {
// outCont.TargetTitle = targetInfo.Title
// }
var manCont modelshr.PersonArchives
manCont.GetCont(map[string]interface{}{"`key`": v.UserKey})
outCont.UserName = manCont.Name
outCont.MyKey = strconv.FormatInt(v.UserKey, 10)
outList = append(outList, outCont)
}
publicmethod.Result(0, outList, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-01-08 09:10:42
@ 功能: 人员定量目标设定
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) SetEvaluationObjectivMan(c *gin.Context) {
var requestData SetEvaluationObjectivMan
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
if requestData.Year == 0 {
publicmethod.Result(1, err, c, "请填写年度")
return
}
if len(requestData.UserKey) < 1 {
publicmethod.Result(1, err, c, "请选择人员")
return
}
if requestData.DepartMent == "" {
publicmethod.Result(1, err, c, "请选择归属行政组织")
return
}
if requestData.PostId == "" {
publicmethod.Result(1, err, c, "请选择归属岗位")
return
}
if requestData.Dimension == "" {
publicmethod.Result(1, err, c, "请选择归属维度")
return
}
if requestData.Target == "" {
publicmethod.Result(1, err, c, "请选择归属指标")
return
}
switch requestData.Cycle {
case 1:
if len(requestData.CycleAdded) != 1 {
publicmethod.Result(1, err, c, "年度只可填写一条!")
return
}
case 2:
if len(requestData.CycleAdded) > 4 {
publicmethod.Result(1, err, c, "季度最多只可填写四条!")
return
}
if len(requestData.CycleAdded) < 1 {
publicmethod.Result(1, err, c, "季度至少填写一条!")
return
}
case 3:
if len(requestData.CycleAdded) > 12 {
publicmethod.Result(1, err, c, "月度最多只可填写十二条!")
return
}
if len(requestData.CycleAdded) < 1 {
publicmethod.Result(1, err, c, "月度至少填写一条!")
return
}
default:
publicmethod.Result(1, err, c, "请选择周期")
return
}
orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64)
_, companyId, departmentId, _, _ := publicmethod.GetOrgStructure(orgId) //公司部门
var timecopy []int64
gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfig{}).Select("timecopy").Where("`group` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `user_key` IN ? ", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year, requestData.UserKey)
judgeErr := gromDb.Find(&timecopy).Error
if judgeErr == nil {
if len(timecopy) > 0 {
publicmethod.Result(1, judgeErr, c, "选中的人员已经设定目标值!不要重复添加!")
return
}
}
var saveData []modelskpi.QuanPeopleConfig
var eiteAddData []int64
for _, v := range requestData.CycleAdded {
if judgeErr != nil {
var saveDataCont modelskpi.QuanPeopleConfig
for _, uv := range requestData.UserKey {
saveDataCont.CompanyId = companyId
saveDataCont.DepartmentId = departmentId
saveDataCont.OrgId = orgId //行政组织
postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64)
saveDataCont.PostId = postIdInt //岗位
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
saveDataCont.Dimension = dimensionId //维度
targetId, _ := strconv.ParseInt(requestData.Target, 10, 64)
saveDataCont.Target = targetId //指标
saveDataCont.Type = int64(requestData.Cycle)
saveDataCont.Year = requestData.Year
saveDataCont.Timecopy = v.Id
if v.Zeroprize < 0 {
saveDataCont.Zeroprize = 0
} else {
saveDataCont.Zeroprize = v.Zeroprize * 100
}
if v.Allprize < 0 {
saveDataCont.Allprize = 0
} else {
saveDataCont.Allprize = v.Allprize * 100
}
if v.Capping > 0 {
saveDataCont.Capping = 1
saveDataCont.CappingVal = v.Capping * 100
} else {
saveDataCont.Capping = 2
saveDataCont.CappingVal = 0
}
saveDataCont.Time = time.Now().Unix()
saveDataCont.State = 1
userKeyInt, _ := strconv.ParseInt(uv, 10, 64)
saveDataCont.UserKey = userKeyInt
saveData = append(saveData, saveDataCont)
}
} else {
if len(timecopy) <= 0 {
var saveDataCont modelskpi.QuanPeopleConfig
// orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64)
// _, saveDataCont.CompanyId, saveDataCont.DepartmentId, _, _ = publicmethod.GetOrgStructure(orgId) //公司部门
for _, uv := range requestData.UserKey {
saveDataCont.CompanyId = companyId
saveDataCont.DepartmentId = departmentId
saveDataCont.OrgId = orgId //行政组织
postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64)
saveDataCont.PostId = postIdInt //岗位
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
saveDataCont.Dimension = dimensionId //维度
targetId, _ := strconv.ParseInt(requestData.Target, 10, 64)
saveDataCont.Target = targetId //指标
saveDataCont.Type = int64(requestData.Cycle)
saveDataCont.Year = requestData.Year
saveDataCont.Timecopy = v.Id
if v.Zeroprize < 0 {
saveDataCont.Zeroprize = 0
} else {
saveDataCont.Zeroprize = v.Zeroprize * 100
}
if v.Allprize < 0 {
saveDataCont.Allprize = 0
} else {
saveDataCont.Allprize = v.Allprize * 100
}
if v.Capping > 0 {
saveDataCont.Capping = 1
saveDataCont.CappingVal = v.Capping * 100
} else {
saveDataCont.Capping = 2
saveDataCont.CappingVal = 0
}
saveDataCont.Time = time.Now().Unix()
saveDataCont.State = 1
userKeyInt, _ := strconv.ParseInt(uv, 10, 64)
saveDataCont.UserKey = userKeyInt
saveData = append(saveData, saveDataCont)
}
} else {
for _, s_v := range timecopy {
if s_v != v.Id {
var saveDataCont modelskpi.QuanPeopleConfig
for _, uv := range requestData.UserKey {
saveDataCont.CompanyId = companyId
saveDataCont.DepartmentId = departmentId
saveDataCont.OrgId = orgId //行政组织
postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64)
saveDataCont.PostId = postIdInt //岗位
dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64)
saveDataCont.Dimension = dimensionId //维度
targetId, _ := strconv.ParseInt(requestData.Target, 10, 64)
saveDataCont.Target = targetId //指标
saveDataCont.Type = int64(requestData.Cycle)
saveDataCont.Year = requestData.Year
saveDataCont.Timecopy = v.Id
if v.Zeroprize < 0 {
saveDataCont.Zeroprize = 0
} else {
saveDataCont.Zeroprize = v.Zeroprize * 100
}
if v.Allprize < 0 {
saveDataCont.Allprize = 0
} else {
saveDataCont.Allprize = v.Allprize * 100
}
if v.Capping > 0 {
saveDataCont.Capping = 1
saveDataCont.CappingVal = v.Capping * 100
} else {
saveDataCont.Capping = 2
saveDataCont.CappingVal = 0
}
saveDataCont.Time = time.Now().Unix()
saveDataCont.State = 1
userKeyInt, _ := strconv.ParseInt(uv, 10, 64)
saveDataCont.UserKey = userKeyInt
saveData = append(saveData, saveDataCont)
}
} else {
eiteDataMap := publicmethod.MapOut[string]()
eiteDataMap["type"] = requestData.Cycle
eiteDataMap["timecopy"] = v.Id
if v.Zeroprize < 0 {
eiteDataMap["zeroprize"] = 0
} else {
eiteDataMap["zeroprize"] = v.Zeroprize * 100
}
if v.Allprize < 0 {
eiteDataMap["allprize"] = 0
} else {
eiteDataMap["allprize"] = v.Allprize * 100
}
if v.Capping > 0 {
eiteDataMap["capping"] = 1
eiteDataMap["capping_val"] = v.Capping * 100
} else {
eiteDataMap["capping"] = 2
eiteDataMap["capping_val"] = 0
}
eiteDataMap["time"] = time.Now().Unix()
for _, uv := range requestData.UserKey {
gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Select("Timecopy").Where("`company_id` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ? AND `user_key`", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle, uv)
gromDb.Updates(eiteDataMap)
eiteAddData = append(eiteAddData, 1)
}
}
}
}
}
}
if len(saveData) <= 0 && len(eiteAddData) <= 0 {
publicmethod.Result(1, err, c, "没有要添加的数据!")
return
}
if len(saveData) > 0 {
saveErr := overall.CONSTANT_DB_KPI.Create(&saveData).Error
if saveErr != nil {
publicmethod.Result(1, err, c, "数据添加失败!")
return
}
}
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-01-08 10:29:57
@ 功能:
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) LookPeopleConfig(c *gin.Context) {
var requestData SelectQuantitativeConfigMan
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
// var qualConfigList []assessmentmodel.QuantitativeConfig
var qualConfigList []modelskpi.QuanPeopleConfigTarget
gormDb := overall.CONSTANT_DB_KPI
if requestData.GroupId != "" {
gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId)
}
if requestData.DepartmentID != "" {
gormDb = gormDb.Where("`department_id` = ?", requestData.DepartmentID)
}
if requestData.OrgID != "" {
gormDb = gormDb.Where("`org_id` = ?", requestData.OrgID)
}
if requestData.PostId != "" {
gormDb = gormDb.Where("`post_id` = ?", requestData.PostId)
}
if requestData.Dimension != "" {
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
}
if requestData.Target != "" {
gormDb = gormDb.Where("`target` = ?", requestData.Target)
}
switch requestData.Type {
case 1:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
case 2:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
case 3:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
default:
}
if requestData.Year != 0 {
gormDb = gormDb.Where("`year` = ?", requestData.Year)
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
}
if requestData.UserKey != "" {
gormDb = gormDb.Where("`user_key` = ?", requestData.UserKey)
}
if requestData.Title != "" {
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
}
// gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC")
gormDb = gormDb.Order("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC")
contErr := gormDb.Find(&qualConfigList).Error
if contErr != nil {
publicmethod.Result(1, err, c, "没有数据!")
return
}
var outList []OutQuanPeopleConfig
for _, v := range qualConfigList {
var outCont OutQuanPeopleConfig
outCont.Id = v.Id
outCont.IdStr = strconv.FormatInt(v.Id, 10)
outCont.DepartmentId = v.DepartmentId
outCont.CompanyId = v.CompanyId
outCont.Dimension = v.Dimension
outCont.PostId = v.PostId
outCont.Target = v.Target
outCont.Type = v.Type
outCont.Year = v.Year
outCont.Timecopy = v.Timecopy
outCont.Zeroprize = v.Zeroprize / 100
outCont.Allprize = v.Allprize / 100
outCont.Time = v.Time
outCont.State = v.State
outCont.DimensionId = strconv.FormatInt(v.Dimension, 10)
var companyCont modelshr.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name")
outCont.GroupTitle = companyCont.Name
var departmenCont modelshr.AdministrativeOrganization
departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name")
outCont.DepartmentTitle = departmenCont.Name
var postCont modelshr.Position
postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name")
outCont.PostTitle = postCont.Name
var dimensionCont modelskpi.DutyClass
dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title")
outCont.DimensionTitle = dimensionCont.Title
outCont.TargetTitle = v.Title
outCont.Capping = v.Capping
outCont.CappingVal = v.CappingVal / 100
var manCont modelshr.PersonArchives
manCont.GetCont(map[string]interface{}{"`key`": v.UserKey})
outCont.UserName = manCont.Name
outCont.MyKey = strconv.FormatInt(v.UserKey, 10)
outList = append(outList, outCont)
}
publicmethod.Result(0, outList, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-01-08 10:44:38
@ 功能: 修改人员考核目标设置
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) EiteQuantitativeManConfig(c *gin.Context) {
var requestData []EiteQuantConfig
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
if len(requestData) < 1 {
publicmethod.Result(1, err, c, "数据获取失败!")
return
}
for _, v := range requestData {
eiteCont := publicmethod.MapOut[string]()
eiteCont["allprize"] = v.Allprize * 100
eiteCont["zeroprize"] = v.Zeroprize * 100
eiteCont["capping_val"] = v.Capping * 100
err = overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfig{}).Where("`id` = ?", v.Id).Updates(eiteCont).Error
}
if err != nil {
publicmethod.Result(104, err, c)
} else {
publicmethod.Result(0, err, c)
}
}
/*
*
@ 作者: 秦东
@ 时间: 2023-01-08 10:48:54
@ 功能: 删除人员考核项目
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) NewDelQuantitativeManConfig(c *gin.Context) {
var receivedValue newDelTargetManConfig
err := c.ShouldBindJSON(&receivedValue)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if receivedValue.OrgID == "" || receivedValue.PostId == "" || receivedValue.Dimension == "" || receivedValue.Target == "" || receivedValue.Type == 0 || receivedValue.Year == 0 || receivedValue.UserKey == "" {
publicmethod.Result(101, receivedValue, c, "数据获取失败!")
return
}
err = overall.CONSTANT_DB_KPI.Where("`org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `type` = ? AND `year` = ? AND `user_key` = ?", receivedValue.OrgID, receivedValue.PostId, receivedValue.Dimension, receivedValue.Target, receivedValue.Type, receivedValue.Year, receivedValue.UserKey).Delete(&modelskpi.QuanPostConfig{}).Error
if err != nil {
publicmethod.Result(108, err, c)
} else {
publicmethod.Result(0, err, c)
}
}