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 }