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.
94 lines
3.3 KiB
94 lines
3.3 KiB
package evaluation
|
|
|
|
import (
|
|
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
|
|
)
|
|
|
|
//数据评估
|
|
type ApiGroup struct {
|
|
EvaluationApi EvaluationInterface
|
|
}
|
|
|
|
//获取定量考核目标
|
|
/*
|
|
@targetScore 指标分值
|
|
@resultval 结算值
|
|
@group 集团
|
|
@depart 部门
|
|
@dimen 维度
|
|
@target 指标
|
|
@deaTarget 细则
|
|
@year 年份
|
|
@timecopy 辅助计数
|
|
|
|
返回说明
|
|
@scoreVal 计算得分
|
|
@allPrize 全奖值
|
|
@zeroPrize 零奖值
|
|
@CappingVal 封顶值
|
|
@achievement 达成率
|
|
*/
|
|
func GetQuantitativeConfig(targetScore int64, resultval float64, group, depart, dimen, target, deaTarget string, year int64, timecopy int64) (scoreVal, allPrize, zeroPrize, CappingVal, achievement float64) {
|
|
scoreVal = 0
|
|
allPrize = 0
|
|
zeroPrize = 0
|
|
CappingVal = 0
|
|
achievement = 0
|
|
var qualConfig assessmentmodel.QuantitativeConfig
|
|
gormDb := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ?", group, depart, dimen, target, year)
|
|
if deaTarget != "0" {
|
|
gormDb = gormDb.Where("targetconfig = ?", deaTarget)
|
|
}
|
|
// if timecopy != 0 {
|
|
// gormDb = gormDb.Where("timecopy = ?", timecopy)
|
|
// }
|
|
gormDb = gormDb.Where("timecopy = ?", timecopy)
|
|
err := gormDb.First(&qualConfig).Error
|
|
|
|
// fmt.Printf("达成率--0-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement, err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
allPrize = qualConfig.Allprize / 100
|
|
zeroPrize = qualConfig.Zeroprize / 100
|
|
CappingVal = qualConfig.CappingVal / 100
|
|
|
|
chuShu := resultval - float64(qualConfig.Zeroprize)
|
|
beiChuShu := float64(qualConfig.Allprize) - float64(qualConfig.Zeroprize)
|
|
if beiChuShu > 0 {
|
|
achievement = commonus.Decimal(chuShu / beiChuShu)
|
|
scoreVal = achievement * (resultval / 100)
|
|
achievement = commonus.Decimal(achievement * 100)
|
|
|
|
if achievement >= CappingVal {
|
|
scoreVal = CappingVal * float64(targetScore) / 100
|
|
}
|
|
} else {
|
|
scoreVal = float64(targetScore)
|
|
}
|
|
|
|
// if qualConfig.CappingVal != 0 && resultval >= qualConfig.CappingVal {
|
|
// scoreVal = float64(targetScore)
|
|
// achievement = 100
|
|
// // fmt.Printf("达成率--1-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement)
|
|
// } else {
|
|
// chuShu := resultval - float64(qualConfig.Zeroprize)
|
|
// beiChuShu := float64(qualConfig.Allprize) - float64(qualConfig.Zeroprize)
|
|
// if beiChuShu > 0 {
|
|
// achievement = commonus.Decimal(chuShu / beiChuShu)
|
|
// scoreVal = achievement * (resultval / 100)
|
|
|
|
// if scoreVal >= CappingVal {
|
|
// scoreVal = CappingVal * float64(targetScore)
|
|
// }
|
|
// fmt.Printf("达成率--2-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement, resultval)
|
|
// } else {
|
|
// scoreVal = float64(targetScore)
|
|
// // fmt.Printf("达成率--3-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement)
|
|
// }
|
|
// }
|
|
// fmt.Printf("达成率--4-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement)
|
|
return
|
|
}
|
|
|