package statistics
import (
"encoding/json"
"fmt"
"strconv"
"time"
"gin_server_admin/api/statistics/quantification"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
"github.com/gin-gonic/gin"
)
// 获取有效版本考核
func ( a * ApiGroup ) GetPlanVersionValides ( c * gin . Context ) {
isTrue , userCont := commonus . ClientIdentity ( )
if isTrue != true {
response . Result ( 1001 , isTrue , "您的身份令牌已经失效!请重新登录获取身份令牌!" , c )
return
}
var requestData DutyPlanVersio
c . ShouldBindJSON ( & requestData )
if requestData . Year == "" {
requestData . Year = commonus . TimeStampToDate ( time . Now ( ) . Unix ( ) , 11 )
}
var planVersioCont [ ] assessmentmodel . PlanVersio
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . PlanVersio { } ) . Where ( "`state` = 1" )
switch userCont . IsAdmin {
case "2" :
if requestData . DeaprtId != "" {
gormDb = gormDb . Where ( "`department` = ? " , userCont . Deparment )
}
gormDb = gormDb . Where ( "`group` = ? " , userCont . Company )
case "3" :
if requestData . Group != "" {
gormDb = gormDb . Where ( "`group` = ? " , requestData . Group )
}
if requestData . DeaprtId != "" {
gormDb = gormDb . Where ( "`department` = ? " , requestData . DeaprtId )
}
case "4" :
if requestData . Group != "" {
gormDb = gormDb . Where ( "`group` = ? " , requestData . Group )
}
if requestData . DeaprtId != "" {
gormDb = gormDb . Where ( "`department` = ? " , requestData . DeaprtId )
}
default :
// gormDb = gormDb.Where("`group` = ? AND `department` = ?", userCont.Company, userCont.Deparment)
}
err := gormDb . Find ( & planVersioCont ) . Error
if err != nil {
response . Result ( 102 , err , "没有查询到数据" , c )
return
}
yserInt , _ := strconv . ParseInt ( requestData . Year , 10 , 64 )
var outData [ ] TargetContOutCont
for _ , v := range planVersioCont { //版本列表
if v . Content != "" {
var planInfo [ ] AddDutyNewCont
jsonErr := json . Unmarshal ( [ ] byte ( v . Content ) , & planInfo )
if jsonErr == nil {
for _ , pv := range planInfo { //维度列表
for _ , pcv := range pv . Child { //指标列表
if pcv . Status != 2 {
var outCont TargetContOutCont
outCont . Id = strconv . FormatInt ( v . Id , 10 )
//集团信息
outCont . Group = strconv . FormatInt ( v . Group , 10 )
where := commonus . MapOut ( )
where [ "id" ] = v . Group
orgCont , _ := commonus . GetNewOrgCont ( where , "id" , "name" )
outCont . GroupName = orgCont . Name
//接受考核部门
outCont . DepartmentId = strconv . FormatInt ( v . Department , 10 )
whereDepart := commonus . MapOut ( )
whereDepart [ "id" ] = v . Department
orgContDer , _ := commonus . GetNewOrgCont ( whereDepart , "id" , "name" )
outCont . DepartmentName = orgContDer . Name
//维度信息
outCont . Dimension = pv . Id
outCont . DimensionName = pv . Name
outCont . DimensionWeight = int64 ( pv . ZhiFraction )
//指标信息
outCont . Target = pcv . Id
outCont . TargetName = pcv . Name
outCont . TargetCont = pcv . Content
outCont . TargetWeight = pcv . ReferenceScore
outCont . Unit = pcv . Unit
//获取指标内容
var evalTargerCont assessmentmodel . EvaluationTarget
evalErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . EvaluationTarget { } ) . Select ( "et_type,et_scoring_method" ) . Where ( "`et_id` = ?" , pcv . Id ) . First ( & evalTargerCont ) . Error
scoringMethod := 1
if evalErr == nil {
outCont . Type = evalTargerCont . Type
scoringMethod = evalTargerCont . ScoringMethod
}
/ *
@ key 方案版本号
@ dimeId 维度
@ targetId 指标
@ accDepartId 接收考核的部门
outPut
@ qualId //方案ID
@ departId 执行部门ID
@ departName 执行部门名称
@ cycle 1 : 班 ; 2 : 天 ; 3 : 周 ; 4 : 月 ; 5 : 季度 ; 6 : 年
@ cycleattr 辅助计数
@ isDuty 1 : 定性考核 ; 2 : 定量考核
* /
taskId , _ , departName , cycle , cycleattr , isDuty , isDutyErr := getDepartTarget ( v . Key , pv . Id , pcv . Id , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) )
if isDutyErr == nil {
outCont . ExecutiveDepartment = departName
outCont . Cycles = cycle
outCont . CycleAttres = cycleattr
if isDuty != 0 {
outCont . Type = isDuty
}
} else {
isDuty = 2
}
var stccStatistics ScoreListAry
stccStatistics . Class = isDuty
// panic(departName)
if isDuty == 1 {
//定性考核
switch cycle {
case 1 :
case 2 : //天
allYearDays := 365
if commonus . IsLeapYear ( yserInt ) == true {
allYearDays = 366
}
for i := 1 ; i <= allYearDays ; i ++ {
if pcv . Status != 3 {
wherStr := fmt . Sprintf ( "`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_week` = %v" , taskId , v . Group , v . Department , yserInt , i )
resultDatayuan , _ , departnameAry := SubjectiveAuxiliaryCalculationSumMethod ( wherStr )
resultData := commonus . Decimal ( resultDatayuan / 100 )
if resultData > float64 ( pcv . ReferenceScore ) {
resultData = float64 ( pcv . ReferenceScore )
}
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
// outCont.ExecutiveDepartment = departnameAry
}
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . Achievement = 0
jiSuanZhi . ActualScore = resultData
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , resultData )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . Achievement = 0
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , float64 ( pcv . ReferenceScore ) )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
}
}
case 3 :
case 5 : //季度
for i := 1 ; i <= 4 ; i ++ {
if pcv . Status != 3 {
wherStr := fmt . Sprintf ( "`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_quarter` = %v" , taskId , v . Group , v . Department , yserInt , i )
resultDatayuan , _ , departnameAry := SubjectiveAuxiliaryCalculationSumMethod ( wherStr )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
resultData := commonus . Decimal ( resultDatayuan / 100 )
if resultData > float64 ( pcv . ReferenceScore ) {
resultData = float64 ( pcv . ReferenceScore )
}
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . Achievement = 0
jiSuanZhi . ActualScore = resultData
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , resultData )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . Achievement = 0
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , float64 ( pcv . ReferenceScore ) )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
}
}
case 6 : //年
if pcv . Status != 3 {
wherStr := fmt . Sprintf ( "`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v" , taskId , v . Group , v . Department , yserInt )
resultDatayuan , _ , departnameAry := SubjectiveAuxiliaryCalculationSumMethod ( wherStr )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
resultData := commonus . Decimal ( resultDatayuan / 100 )
if resultData > float64 ( pcv . ReferenceScore ) {
resultData = float64 ( pcv . ReferenceScore )
}
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . ActualScore = resultData
jiSuanZhi . Achievement = 0
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , resultData )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . Achievement = 0
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , float64 ( pcv . ReferenceScore ) )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
}
default : //月
monthValue := commonus . TimeStampToDate ( time . Now ( ) . Unix ( ) , 12 )
if commonus . TimeStampToDate ( time . Now ( ) . Unix ( ) , 11 ) != requestData . Year {
monthValue = "12"
}
monthValueInt , _ := strconv . Atoi ( monthValue )
for i := 1 ; i <= monthValueInt ; i ++ {
if pcv . Status != 3 {
wherStr := fmt . Sprintf ( "`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` = %v" , taskId , v . Group , v . Department , yserInt , i )
resultDatayuan , _ , departnameAry := SubjectiveAuxiliaryCalculationSumMethod ( wherStr )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
resultData := commonus . Decimal ( resultDatayuan / 100 )
if resultData > float64 ( pcv . ReferenceScore ) {
resultData = float64 ( pcv . ReferenceScore )
}
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . ActualScore = resultData
jiSuanZhi . Achievement = 0
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , resultData )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 1
jiSuanZhi . AllPrize = 0
jiSuanZhi . ZeroPrize = 0
jiSuanZhi . CappingVal = 0
jiSuanZhi . ScoreVal = 0
jiSuanZhi . Achievement = 0
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , 0 )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , 0 )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , 0 )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , 0 )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , float64 ( pcv . ReferenceScore ) )
stccStatistics . Achievement = append ( stccStatistics . Achievement , 0 )
}
}
}
} else {
//定量考核
switch cycle {
case 1 :
case 2 : //天
allYearDays := 365
if commonus . IsLeapYear ( yserInt ) == true {
allYearDays = 366
}
for i := 1 ; i <= allYearDays ; i ++ {
wherStr := fmt . Sprintf ( "fld_evaluation_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_day` = %v" , taskId , yserInt , v . Group , v . Department , i )
resultDatayuan , _ , departnameAry := AuxiliaryCalculationSumMethod ( wherStr , scoringMethod )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
// resultData := commonus.Decimal(AuxiliaryCalculationSumMethod(wherStr, scoringMethod) / 100)
resultData := commonus . Decimal ( resultDatayuan / 100 )
if pcv . Status != 3 {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfig ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , i , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
// if scoringMethod != 2 {
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore, jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfig(pcv.ReferenceScore, resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// } else {
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore = float64(pcv.ReferenceScore)
// jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfigEs(strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// }
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
jiSuanZhi . ScoreVal , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfigEs ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , i , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
}
}
case 3 :
case 5 : //季度
for i := 1 ; i <= 4 ; i ++ {
wherStr := fmt . Sprintf ( "fld_evaluation_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_quarter` = %v" , taskId , yserInt , v . Group , v . Department , i )
resultDatayuan , _ , departnameAry := AuxiliaryCalculationSumMethod ( wherStr , scoringMethod )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
resultData := commonus . Decimal ( resultDatayuan / 100 )
if pcv . Status != 3 {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfig ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , i , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
// if scoringMethod != 2 {
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore, jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfig(pcv.ReferenceScore, resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// } else {
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore = float64(pcv.ReferenceScore)
// jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfigEs(strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// }
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
jiSuanZhi . ScoreVal , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfigEs ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , i , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
}
}
case 6 : //年
wherStr := fmt . Sprintf ( "fld_evaluation_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v " , taskId , yserInt , v . Group , v . Department )
resultDatayuan , _ , departnameAry := AuxiliaryCalculationSumMethod ( wherStr , scoringMethod )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
resultData := commonus . Decimal ( resultDatayuan / 100 )
if pcv . Status != 3 {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfig ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , 0 , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
// if scoringMethod != 2 {
// // outCont.Score = append(outCont.Score, quantification.GetQuantitativeConfig(resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, 0))
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore, jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfig(pcv.ReferenceScore, resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, 0)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// } else {
// // outCont.Score = append(outCont.Score, resultData)
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore = float64(pcv.ReferenceScore)
// jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfigEs(strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, 0)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// }
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
jiSuanZhi . ScoreVal , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfigEs ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , 0 , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
}
default : //月
monthValue := commonus . TimeStampToDate ( time . Now ( ) . Unix ( ) , 12 )
if commonus . TimeStampToDate ( time . Now ( ) . Unix ( ) , 11 ) != requestData . Year {
monthValue = "12"
}
monthValueInt , _ := strconv . Atoi ( monthValue )
for i := 1 ; i <= monthValueInt ; i ++ {
wherStr := fmt . Sprintf ( "fld_evaluation_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_month` = %v" , taskId , yserInt , v . Group , v . Department , i )
resultDatayuan , _ , departnameAry := AuxiliaryCalculationSumMethod ( wherStr , scoringMethod )
if len ( departnameAry ) > 0 {
for _ , dav := range departnameAry {
if commonus . IsItTrueString ( dav , outCont . ExecutiveDepartment ) == false {
outCont . ExecutiveDepartment = append ( outCont . ExecutiveDepartment , dav )
}
}
}
// fmt.Printf("wherStr:%v------------>%v\n", wherStr, departnameAry)
// panic(departnameAry)
resultData := commonus . Decimal ( resultDatayuan / 100 )
if pcv . Status != 3 {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfig ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , i , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
// if scoringMethod != 2 {
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore, jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfig(pcv.ReferenceScore, resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// } else {
// var jiSuanZhi ScoreList
// jiSuanZhi.ScoreVal = resultData
// jiSuanZhi.ActualScore = float64(pcv.ReferenceScore)
// jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal = quantification.GetQuantitativeConfigEs(strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i)
// outCont.Score = append(outCont.Score, jiSuanZhi)
// }
} else {
var jiSuanZhi ScoreList
jiSuanZhi . Class = 2
jiSuanZhi . ScoreVal = resultData
jiSuanZhi . ActualScore = float64 ( pcv . ReferenceScore )
jiSuanZhi . ScoreVal , jiSuanZhi . AllPrize , jiSuanZhi . ZeroPrize , jiSuanZhi . CappingVal , jiSuanZhi . Achievement = quantification . GetQuantitativeConfigEs ( pcv . ReferenceScore , resultData , strconv . FormatInt ( v . Group , 10 ) , strconv . FormatInt ( v . Department , 10 ) , pv . Id , pcv . Id , "0" , yserInt , i , 2 )
outCont . Score = append ( outCont . Score , jiSuanZhi )
stccStatistics . ScoreVal = append ( stccStatistics . ScoreVal , resultData )
stccStatistics . AllPrize = append ( stccStatistics . AllPrize , jiSuanZhi . AllPrize )
stccStatistics . ZeroPrize = append ( stccStatistics . ZeroPrize , jiSuanZhi . ZeroPrize )
stccStatistics . CappingVal = append ( stccStatistics . CappingVal , jiSuanZhi . CappingVal )
stccStatistics . ActualScore = append ( stccStatistics . ActualScore , jiSuanZhi . ActualScore )
stccStatistics . Achievement = append ( stccStatistics . Achievement , jiSuanZhi . Achievement )
}
}
}
}
outCont . ScoreAllList = append ( outCont . ScoreAllList , stccStatistics )
outData = append ( outData , outCont )
}
}
}
}
} else {
}
}
response . Result ( 0 , outData , "获取成功" , c )
}
// 获取总值 定量
func AuxiliaryCalculationSumMethod ( where interface { } , scoringMethod int ) ( sumScore float64 , departmentAry [ ] int64 , departNameAry [ ] string ) {
if scoringMethod == 2 {
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . FlowLogData { } ) . Joins ( "left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log" ) . Where ( where )
gormDb . Pluck ( "COALESCE(SUM(fld_scoring_score), 0) as rescore" , & sumScore )
} else {
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . FlowLogData { } ) . Joins ( "left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log" ) . Where ( where )
gormDb . Pluck ( "COALESCE(SUM(fld_score), 0) as rescore" , & sumScore )
}
//获取测评部门
// var departmentAry []int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . FlowLogData { } ) . Select ( "fl_evaluation_department" ) . Joins ( "left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log" ) . Where ( where ) . Find ( & departmentAry )
// var departNameAry []string
if len ( departmentAry ) > 0 {
for _ , v := range departmentAry {
whereDepart := commonus . MapOut ( )
whereDepart [ "id" ] = v
orgContDer , _ := commonus . GetNewOrgCont ( whereDepart , "name" )
departNameAry = append ( departNameAry , orgContDer . Name )
}
}
return
}
// 定性
func SubjectiveAuxiliaryCalculationSumMethod ( where interface { } ) ( sumScore float64 , departmentAry [ ] int64 , departNameAry [ ] string ) {
//加分
var addSumScore float64 = 0
// global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score").Where(where).Where("sf_plus_reduce_score = 1").Pluck("COALESCE(SUM(sf_score), 0) as addrescore", &addSumScore)
var jiaFenAry [ ] TongjiFenShu
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . ScoreFlow { } ) . Select ( "sf_score,sf_count" ) . Where ( where ) . Where ( "sf_plus_reduce_score = 1" ) . Find ( & jiaFenAry )
for _ , jiav := range jiaFenAry {
addSumScore = addSumScore + ( jiav . Score * jiav . Count )
}
//加分
var scoreReduction float64 = 0
// global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score").Where(where).Where("sf_plus_reduce_score = 2").Pluck("COALESCE(SUM(sf_score), 0) as redurescore", &scoreReduction)
var jianFenAry [ ] TongjiFenShu
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . ScoreFlow { } ) . Select ( "sf_score,sf_count" ) . Where ( where ) . Where ( "sf_plus_reduce_score = 2" ) . Find ( & jianFenAry )
for _ , jianv := range jianFenAry {
scoreReduction = scoreReduction + ( jianv . Score * jianv . Count )
}
if addSumScore != 0 && scoreReduction != 0 {
if addSumScore > scoreReduction {
sumScore = addSumScore - scoreReduction
} else {
sumScore = scoreReduction - addSumScore
}
} else if addSumScore != 0 {
sumScore = addSumScore
} else {
sumScore = scoreReduction
}
//获取测评部门
// var departmentAry []int64
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . ScoreFlow { } ) . Select ( "sf_evaluation_department" ) . Where ( where ) . Find ( & departmentAry )
// var departNameAry []string
if len ( departmentAry ) > 0 {
for _ , v := range departmentAry {
whereDepart := commonus . MapOut ( )
whereDepart [ "id" ] = v
orgContDer , _ := commonus . GetNewOrgCont ( whereDepart , "name" )
departNameAry = append ( departNameAry , orgContDer . Name )
}
}
return
}
//获取指标相应的全奖,零奖;封顶值