package evaluation
import (
"fmt"
"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("达成率--3-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement)
// 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 {
achievement = 100
scoreVal = float64 ( targetScore )
return
}
scoreVal , allPrize , zeroPrize , CappingVal , achievement = commonus . CalculateScore ( targetScore , resultval , qualConfig . Allprize , qualConfig . Zeroprize , qualConfig . CappingVal )
return
allPrize = qualConfig . Allprize / 100
zeroPrize = qualConfig . Zeroprize / 100
CappingVal = qualConfig . CappingVal / 100
fmt . Printf ( "达成率--4-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n" , group , depart , dimen , target , year , allPrize , zeroPrize , CappingVal , achievement )
if allPrize == 0 && zeroPrize == 0 {
achievement = 100
scoreVal = float64 ( targetScore )
fmt . Printf ( "达成率--5-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n" , group , depart , dimen , target , year , allPrize , zeroPrize , CappingVal , achievement )
} else {
if allPrize == 0 && resultval == 0 {
achievement = 0
scoreVal = 0
} else {
chuShu := resultval - float64 ( qualConfig . Zeroprize )
beiChuShu := float64 ( qualConfig . Allprize ) - float64 ( qualConfig . Zeroprize )
if beiChuShu != 0 {
achievement = commonus . Decimal ( chuShu / beiChuShu )
if achievement <= 0 {
achievement = 0
scoreVal = 0
fmt . Printf ( "达成率--6-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n" , group , depart , dimen , target , year , allPrize , zeroPrize , CappingVal , achievement )
} else {
// scoreVal = achievement * (resultval / 100)
scoreVal = achievement * ( float64 ( targetScore ) )
achievement = commonus . Decimal ( achievement * 100 )
if achievement >= CappingVal {
scoreVal = CappingVal * float64 ( targetScore ) / 100
fmt . Printf ( "达成率--9-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n" , group , depart , dimen , target , year , allPrize , zeroPrize , CappingVal , achievement )
}
fmt . Printf ( "达成率--7-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n" , group , depart , dimen , target , year , allPrize , zeroPrize , CappingVal , achievement )
}
} else {
achievement = 0
scoreVal = 0
fmt . Printf ( "达成率--8-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n" , group , depart , dimen , target , year , allPrize , zeroPrize , CappingVal , achievement )
}
}
}
scoreVal = commonus . Decimal ( scoreVal )
allPrize = commonus . Decimal ( allPrize )
zeroPrize = commonus . Decimal ( zeroPrize )
CappingVal = commonus . Decimal ( CappingVal )
achievement = commonus . Decimal ( achievement )
return
}