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
}