package quantification
import (
"fmt"
"strconv"
"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"
)
//以时间维度查询统计
/ *
@ taskId 指标ID
@ dataAry 接收的界定参数
* /
func TimeDimensionStatistics ( taskId string , dataAry natureParameter ) ( outputData GraphicStatistics , outErr bool ) {
outErr = true
var normName string = ""
norm := 1 //1:定性考核;2:定量考核
//获取指标信息
taskIdInt , _ := strconv . ParseInt ( taskId , 10 , 64 )
taskCont , taskErr := commonus . GetTargetInfo ( taskIdInt )
if taskErr == true {
normName = taskCont . Title
outErr = taskErr
norm = taskCont . Type
} else {
// outErr = error.Error("此考核项目没有数据!")
outErr = taskErr
return
}
//获取时间参数
timeFrame := EstimatedTime ( dataAry )
//获取组织架构参数
// var orgAry []orgModelsAry
var orgList [ ] orgModels
if len ( dataAry . Org ) > 0 {
_ , orgList = getGroupOrgList ( dataAry . Org )
} else {
_ , orgList = getGroupOrgList ( GetTargerDepartment ( taskCont . Dimension , taskIdInt ) )
}
// fmt.Printf("orgList ---> %v\n", orgList)
//统计方式
statisticalMethod := 3
if len ( dataAry . AccMethod ) == 1 {
if commonus . IsItTrueInt ( 1 , dataAry . AccMethod ) == true {
statisticalMethod = 1
} else {
statisticalMethod = 2
}
}
// jsonCont, _ := json.Marshal(dataAry)
// fmt.Printf("wherStr------>%v\n", string(jsonCont))
// return
//根据时间维度进行统计
for _ , tfv := range timeFrame {
if commonus . IsItTrueString ( tfv . XLine , outputData . XLine ) == false {
outputData . XLine = append ( outputData . XLine , tfv . XLine )
}
switch tfv . Class {
case 1 : //半年
//组合月
monthStr := "("
for twi , twv := range tfv . Where {
if twi != 0 {
monthStr = fmt . Sprintf ( "%v,%v" , monthStr , twv )
} else {
monthStr = fmt . Sprintf ( "%v%v" , monthStr , twv )
}
}
monthStr = fmt . Sprintf ( "%v)" , monthStr )
//定量考核
if len ( orgList ) > 0 {
//有政组织
for _ , orgv := range orgList {
var orgvSunOrg string
//获取此指标跟查询部门相关的考核方案ID
var taskIdAry [ ] int64
// global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ?", taskCont.Dimension, taskIdInt, orgv.Id).Find(&taskIdAry)
if len ( orgv . SunOrg ) > 0 {
orgvSunOrg = "("
for tiai , tiav := range orgv . SunOrg {
if tiai != 0 {
orgvSunOrg = fmt . Sprintf ( "%v,%v" , orgvSunOrg , tiav )
} else {
orgvSunOrg = fmt . Sprintf ( "%v%v" , orgvSunOrg , tiav )
}
}
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation IN ?" , taskCont . Dimension , taskIdInt , orgv . SunOrg ) . Find ( & taskIdAry )
} else {
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ?" , taskCont . Dimension , taskIdInt , orgv . Id ) . Find ( & taskIdAry )
}
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
for _ , yearVal := range dataAry . Year {
var sumScore float64
var averageScore float64
if len ( taskIdAry ) > 0 {
var wherStr string
if norm == 1 {
var canKaoZhi float64 = 0
//定性考核
if len ( orgv . SunOrg ) > 0 {
orgvSunOrg = fmt . Sprintf ( "%v)" , orgvSunOrg )
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_month` IN %v AND sf_duty_department IN %v" , taskIdStrWher , yearVal , monthStr , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_month` IN %v AND sf_duty_department = %v" , taskIdStrWher , yearVal , monthStr , orgv . Id )
canKaoZhi = GetTargetReferenceValue ( strconv . FormatInt ( taskCont . Dimension , 10 ) , taskId , orgv . Id )
}
sumScore , averageScore = AverageOfSumNature ( wherStr , 1 )
if canKaoZhi != 0 {
if sumScore > canKaoZhi {
sumScore = canKaoZhi
}
}
} else {
//定量考核
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_month` IN %v AND fl_duty_department IN %v" , taskIdStrWher , yearVal , monthStr , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_month` IN %v AND fl_duty_department = %v" , taskIdStrWher , yearVal , monthStr , orgv . Id )
}
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v%v %v" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v%v %v平均值" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v%v %v" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v%v %v平均值" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
}
} else {
//无行政组织
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var taskIdAry [ ] int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ?" , taskCont . Dimension , taskIdInt ) . Find ( & taskIdAry )
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
if len ( taskIdAry ) > 0 {
if norm == 1 {
//定性考核
wherStr := fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_month` IN %v " , taskIdStrWher , tfv . YearName , monthStr )
sumScore , averageScore = AverageOfSumNature ( wherStr , 1 )
} else {
//定量考核
wherStr := fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_month` IN %v" , taskIdStrWher , tfv . YearName , monthStr )
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
//不存在行政组织
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
case 2 : //季度
for _ , yearVal := range dataAry . Year {
if len ( orgList ) > 0 {
//有组织
for _ , orgv := range orgList {
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var orgvSunOrg string
var taskIdAry [ ] int64
if len ( orgv . SunOrg ) > 0 {
orgvSunOrg = "("
for tiai , tiav := range orgv . SunOrg {
if tiai != 0 {
orgvSunOrg = fmt . Sprintf ( "%v,%v" , orgvSunOrg , tiav )
} else {
orgvSunOrg = fmt . Sprintf ( "%v%v" , orgvSunOrg , tiav )
}
}
orgvSunOrg = fmt . Sprintf ( "%v)" , orgvSunOrg )
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation IN ?" , taskCont . Dimension , taskIdInt , orgv . SunOrg ) . Find ( & taskIdAry )
} else {
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ?" , taskCont . Dimension , taskIdInt , orgv . Id ) . Find ( & taskIdAry )
}
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
if len ( taskIdAry ) > 0 {
var wherStr string
var canKaoZhi float64 = 0
if norm == 1 {
//定性考核
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_quarter` = %v AND sf_duty_department IN %v" , taskIdStrWher , yearVal , tfv . YearName , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_quarter` = %v AND sf_duty_department = %v" , taskIdStrWher , yearVal , tfv . YearName , orgv . Id )
canKaoZhi = GetTargetReferenceValue ( strconv . FormatInt ( taskCont . Dimension , 10 ) , taskId , orgv . Id )
}
sumScore , averageScore = AverageOfSumNature ( wherStr , 1 )
if canKaoZhi != 0 && sumScore > canKaoZhi {
sumScore = canKaoZhi
}
} else {
//定量考核
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_quarter` = %v AND fl_duty_department IN %v" , taskIdStrWher , yearVal , tfv . YearName , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_quarter` = %v AND fl_duty_department = %v" , taskIdStrWher , yearVal , tfv . YearName , orgv . Id )
}
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v%v %v" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v%v %v平均值" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v%v %v" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v %v平均值" , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
} else {
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var taskIdAry [ ] int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ?" , taskCont . Dimension , taskIdInt ) . Find ( & taskIdAry )
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
//无组织
if len ( taskIdAry ) > 0 {
if norm == 1 {
//定性考核
} else {
//定量考核
// wherStr := fmt.Sprintf("`fl_year` = %v AND `fl_quarter` = %v", yearVal, tfv.YearName)
wherStr := fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_quarter` IN %v " , taskIdStrWher , yearVal , tfv . YearName )
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
}
case 3 : //月
for _ , yearVal := range dataAry . Year {
if len ( orgList ) > 0 {
//有组织
for _ , orgv := range orgList {
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var orgvSunOrg string
var taskIdAry [ ] int64
if len ( orgv . SunOrg ) > 0 {
orgvSunOrg = "("
for tiai , tiav := range orgv . SunOrg {
if tiai != 0 {
orgvSunOrg = fmt . Sprintf ( "%v,%v" , orgvSunOrg , tiav )
} else {
orgvSunOrg = fmt . Sprintf ( "%v%v" , orgvSunOrg , tiav )
}
}
orgvSunOrg = fmt . Sprintf ( "%v)" , orgvSunOrg )
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation IN ?" , taskCont . Dimension , taskIdInt , orgv . SunOrg ) . Find ( & taskIdAry )
} else {
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ?" , taskCont . Dimension , taskIdInt , orgv . Id ) . Find ( & taskIdAry )
}
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
if len ( taskIdAry ) > 0 {
var wherStr string
if norm == 1 {
//定性考核
var canKaoZhi float64 = 0
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_month` = %v AND sf_duty_department IN %v" , taskIdStrWher , yearVal , tfv . YearName , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND `sf_month` = %v AND sf_duty_department = %v" , taskIdStrWher , yearVal , tfv . YearName , orgv . Id )
canKaoZhi = GetTargetReferenceValue ( strconv . FormatInt ( taskCont . Dimension , 10 ) , taskId , orgv . Id )
}
sumScore , averageScore = AverageOfSumNature ( wherStr , 1 )
if canKaoZhi != 0 && sumScore > canKaoZhi {
sumScore = canKaoZhi
}
} else {
//定量考核
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_month` = %v AND fl_duty_department IN %v" , taskIdStrWher , yearVal , tfv . YearName , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_month` = %v AND fl_duty_department = %v" , taskIdStrWher , yearVal , tfv . YearName , orgv . Id )
}
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v%v %v" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v%v %v平均值" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v%v %v" , yearVal , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v %v平均值" , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
} else {
//无组织
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var taskIdAry [ ] int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ?" , taskCont . Dimension , taskIdInt ) . Find ( & taskIdAry )
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
if len ( taskIdAry ) > 0 {
if norm == 1 {
//定性考核
} else {
//定量考核
wherStr := fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND `fl_month` = %v " , taskIdStrWher , yearVal , tfv . YearName )
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
}
default : //全年
// if tfv.YearName == ""{}
fmt . Printf ( "tfv------------>%v\n" , tfv )
if len ( orgList ) > 0 {
for _ , orgv := range orgList {
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var orgvSunOrg string
var taskIdAry [ ] int64
if len ( orgv . SunOrg ) > 0 {
orgvSunOrg = "("
for tiai , tiav := range orgv . SunOrg {
if tiai != 0 {
orgvSunOrg = fmt . Sprintf ( "%v,%v" , orgvSunOrg , tiav )
} else {
orgvSunOrg = fmt . Sprintf ( "%v%v" , orgvSunOrg , tiav )
}
}
orgvSunOrg = fmt . Sprintf ( "%v)" , orgvSunOrg )
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation IN ?" , taskCont . Dimension , taskIdInt , orgv . SunOrg ) . Find ( & taskIdAry )
} else {
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ?" , taskCont . Dimension , taskIdInt , orgv . Id ) . Find ( & taskIdAry )
}
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
if len ( taskIdAry ) > 0 {
var wherStr string
if norm == 1 {
//定性考核
var canKaoZhi float64 = 0
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND sf_duty_department IN %v" , taskIdStrWher , tfv . YearName , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v AND sf_duty_department = %v" , taskIdStrWher , tfv . YearName , orgv . Id )
canKaoZhi = GetTargetReferenceValue ( strconv . FormatInt ( taskCont . Dimension , 10 ) , taskId , orgv . Id )
}
sumScore , averageScore = AverageOfSumNature ( wherStr , 1 )
if canKaoZhi != 0 && sumScore > canKaoZhi {
sumScore = canKaoZhi
}
} else {
//定量考核
if len ( orgv . SunOrg ) > 0 {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND fl_duty_department IN %v" , taskIdStrWher , tfv . YearName , orgvSunOrg )
} else {
wherStr = fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v AND fl_duty_department = %v" , taskIdStrWher , tfv . YearName , orgv . Id )
}
// wherStr := fmt.Sprintf("fld_evaluation_id IN %v AND `fl_year` = %v AND fl_duty_department = %v", taskIdStrWher, tfv.YearName, orgv.Id)
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v %v" , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v %v平均值" , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v %v" , orgv . Name , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v %v平均值" , orgv . Name , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
} else {
var sumScore float64
var averageScore float64
//获取此指标跟查询部门相关的考核方案ID
var taskIdAry [ ] int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ?" , taskCont . Dimension , taskIdInt ) . Find ( & taskIdAry )
//组合考核方案ID
taskIdStrWher := "("
for tiai , tiav := range taskIdAry {
if tiai != 0 {
taskIdStrWher = fmt . Sprintf ( "%v,%v" , taskIdStrWher , tiav )
} else {
taskIdStrWher = fmt . Sprintf ( "%v%v" , taskIdStrWher , tiav )
}
}
taskIdStrWher = fmt . Sprintf ( "%v)" , taskIdStrWher )
if len ( taskIdAry ) > 0 {
if norm == 1 {
//定性考核
wherStr := fmt . Sprintf ( "sf_evaluation_plan IN %v AND `sf_year` = %v" , taskIdStrWher , tfv . YearName )
sumScore , averageScore = AverageOfSumNature ( wherStr , 1 )
} else {
//定量考核
wherStr := fmt . Sprintf ( "fld_evaluation_id IN %v AND `fl_year` = %v " , taskIdStrWher , tfv . YearName )
sumScore , averageScore = AverageOfSum ( wherStr , 1 )
}
}
//不存在行政组织
switch statisticalMethod {
case 1 :
//合计
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
case 2 :
//平均
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
default :
//合计与平均
normNameTotal := fmt . Sprintf ( "%v" , normName )
if commonus . IsItTrueString ( normNameTotal , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameTotal )
var seriesInfo series
seriesInfo . Name = normNameTotal
seriesInfo . Data = append ( seriesInfo . Data , sumScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfo )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameTotal {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , sumScore )
}
}
}
normNameAverage := fmt . Sprintf ( "%v平均值" , normName )
if commonus . IsItTrueString ( normNameAverage , outputData . Cylindrical ) == false {
outputData . Cylindrical = append ( outputData . Cylindrical , normNameAverage )
var seriesInfoAverage series
seriesInfoAverage . Name = normNameAverage
seriesInfoAverage . Data = append ( seriesInfoAverage . Data , averageScore )
outputData . CylindricalData = append ( outputData . CylindricalData , seriesInfoAverage )
} else {
for cdi , cdv := range outputData . CylindricalData {
if cdv . Name == normNameAverage {
outputData . CylindricalData [ cdi ] . Data = append ( outputData . CylindricalData [ cdi ] . Data , averageScore )
}
}
}
}
}
}
}
// fmt.Printf("orgAry====>%v\n", orgAry)
// jn, je := json.Marshal(orgList)
// fmt.Printf("orgList-====>%v-====>%v\n", string(jn), je)
// fmt.Printf("timeFrame-====>%v\n", timeFrame)
// fmt.Printf("normName-====>%v\n", normName)
// fmt.Printf("statisticalMethod-====>%v\n", statisticalMethod)
return
}
//获取指标关联的部门
func GetTargerDepartment ( dimension , targerId int64 ) ( departID [ ] string ) {
var taskIdAry [ ] int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_accept_evaluation" ) . Where ( "qe_state = 1 AND qe_dimension = ? AND qe_target = ?" , dimension , targerId ) . Find ( & taskIdAry )
if len ( taskIdAry ) > 0 {
for _ , v := range taskIdAry {
departID = append ( departID , strconv . FormatInt ( v , 10 ) )
}
}
return
}