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 辅助计数 @typeClass 1:定性;2:定量 返回说明 @scoreVal 计算得分 @allPrize 全奖值 @zeroPrize 零奖值 @CappingVal 封顶值 @achievement 达成率 */ func GetQuantitativeConfig(targetScore int64, resultval float64, group, depart, dimen, target, deaTarget string, year int64, timecopy int64, typeClass int) (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, typeClass) 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 }