package statistics import ( "encoding/json" "fmt" "sort" "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) GetPlanVersionValid(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData PlanVersioMingXi c.ShouldBindJSON(&requestData) if requestData.Year == "" { requestData.Year = commonus.TimeStampToDate(time.Now().Unix(), 11) } //获取当前年 currentYear := commonus.ComputingTime(time.Now().Unix(), 1) kkTime := currentYear if requestData.Year != "" { getTime, timeErr := strconv.ParseInt(requestData.Year, 10, 64) if timeErr == nil { kkTime = getTime } } // fmt.Printf("年---->%v\n", requestData.Year) var planVersioCont []assessmentmodel.PlanVersio gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}) if kkTime == currentYear { gormDb = gormDb.Where("`state` = 1") } else { gormDb = gormDb.Where("`state` = 2 AND `yeares` = ?", kkTime) } 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) } // if requestData.Group != "" { // gormDb = gormDb.Where("`group` = ? ", requestData.Group) // } // if requestData.DeaprtId != "" { // gormDb = gormDb.Where("`department` = ? ", requestData.DeaprtId) // } err := gormDb.Order("addtime desc").Find(&planVersioCont).Error if err != nil { response.Result(102, err, "没有查询到数据", c) return } // yserInt, _ := strconv.ParseInt(requestData.Year, 10, 64) // var outData []TargetContOutCont var xieCheng dataLockStatistics for _, v := range planVersioCont { //版本列表 syncProcess.Add(1) // go xieCheng.planVersiconProcess(v, requestData) go xieCheng.planVersiconProcessV1(v, requestData) // return } syncProcess.Wait() readDingXingDataMap := xieCheng.readMyDayData() // var outList []TargetContOutCont // mapstructure.Decode(readDingXingDataMap, &outList) response.Result(0, readDingXingDataMap, "获取成功", c) } func (d *dataLockStatistics) planVersiconProcess(pvInfo assessmentmodel.PlanVersio, giveData PlanVersioMingXi) { d.mutext.Lock() defer d.mutext.Unlock() yserInt, _ := strconv.ParseInt(giveData.Year, 10, 64) // fmt.Printf("年--2-->%v--->%v\n", giveData.Year, yserInt) if pvInfo.Content != "" { //当版本内容不为空时 var planInfo []AddDutyNewCont jsonErr := json.Unmarshal([]byte(pvInfo.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(pvInfo.Id, 10) //集团信息 outCont.Group = strconv.FormatInt(pvInfo.Group, 10) where := commonus.MapOut() where["id"] = pvInfo.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") outCont.GroupName = orgCont.Name //接受考核部门 outCont.DepartmentId = strconv.FormatInt(pvInfo.Department, 10) whereDepart := commonus.MapOut() whereDepart["id"] = pvInfo.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 targetGormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Select("et_type,et_scoring_method,et_title").Where("`et_id` = ?", pcv.Id) if giveData.Title != "" { targetGormDb = targetGormDb.Where("et_title LIKE ?", "%"+giveData.Title+"%") } if giveData.Class != 0 { targetGormDb = targetGormDb.Where("et_type = ?", giveData.Class) } isAdd := 1 evalErr := targetGormDb.First(&evalTargerCont).Error scoringMethod := 1 if evalErr == nil { outCont.Type = evalTargerCont.Type scoringMethod = evalTargerCont.ScoringMethod isAdd = 1 } else { isAdd = 2 } outCont.ManualGear = scoringMethod //获取执行部门及指标性质 _, _, departName, cycle, cycleattr, isDuty, isDutyErr := getDepartTarget(pvInfo.Key, pv.Id, pcv.Id, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10)) if isDutyErr == nil { outCont.ExecutiveDepartment = departName outCont.Cycles = cycle outCont.CycleAttres = cycleattr if isDuty != 0 { outCont.Type = isDuty } } else { var evalTargerCont assessmentmodel.EvaluationTarget evalErr := global.GVA_DB_Performanceappraisal.Where("`et_id` = ?", pcv.Id).First(&evalTargerCont).Error if evalErr == nil { outCont.Cycles = evalTargerCont.Cycles outCont.CycleAttres = evalTargerCont.CycleAttres } isDuty = 2 } // fmt.Printf("taskId--->%v--->yyyy--->%v--->departName--->%v--->cycle--->%v--->cycleattr--->%v--->isDuty--->%v--->isDutyErr--->%v\n", taskId, yyyy, departName, cycle, cycleattr, isDuty, isDutyErr) // panic(isDutyErr) var stccStatistics ScoreListAry stccStatistics.Class = isDuty if isDuty == 1 { //定性考核 switch cycle { case 1: case 2: //天 case 3: case 5: //季度 // monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) // if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { // monthValue = "12" // } // monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic for i := 1; i <= 4; i++ { // 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, pvInfo.Group, pvInfo.Department, yserInt, i) wherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_quarter` = %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, i) // 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, pvInfo.Group, pvInfo.Department, yserInt, i) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, i, pcv.Status, 1, pcv.ReferenceScore) } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { // for ik := 0; ik <= 1; ik++ { // var jiSuanZhiBuLing ScoreList // outCont.Score = append(outCont.Score, jiSuanZhiBuLing) // 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, 0) // stccStatistics.Achievement = append(stccStatistics.Achievement, 0) // } var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 6: //年 // monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) // if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { // monthValue = "12" // } // monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic // for i := 1; i <= monthValueInt; i++ { // 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, pvInfo.Group, pvInfo.Department, yserInt, i) // syncProcessDepartTarget.Add(1) // go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, i, pcv.Status, 1, pcv.ReferenceScore) // } wherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, 1, pcv.Status, 1, pcv.ReferenceScore) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 7: //半年 var tpsProcess tablePlanVersionStic //上半年 firstHalfwherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` IN %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, []int{1, 2, 3, 4, 5, 6}) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(firstHalfwherStr, 1, pcv.Status, 1, pcv.ReferenceScore) //下半年 secondHalfwherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` IN %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, []int{7, 8, 9, 10, 11, 12}) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(secondHalfwherStr, 2, pcv.Status, 1, pcv.ReferenceScore) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } default: //月 monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { monthValue = "12" } monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic for i := 1; i <= monthValueInt; i++ { wherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` = %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, i) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, i, pcv.Status, 1, pcv.ReferenceScore) } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } } } else { //定量考核 switch cycle { case 1: case 2: //天 case 3: case 5: //季度 // monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) // if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { // monthValue = "12" // } // monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic for i := 1; i <= 4; i++ { // fmt.Printf("年--4-->%v--->%v-->%v\n", i, giveData.Year, yserInt) wherStr := fmt.Sprintf("fld_target_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_quarter` = %v", pcv.Id, yserInt, pvInfo.Group, pvInfo.Department, 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, pvInfo.Group, pvInfo.Department, i) // fmt.Printf("wherStr----->%v\n", wherStr) // return syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatistics(wherStr, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, i, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore) } /* 统计分数 @wherStr 统计条件 @group 集团 @department 部门 @dimensionId 维度 @targetId 指标 @i 步进器 @status 是否为观察数据 @scoringMethod 手动计分还是自动计分 @class 指标类型 1、定性;2:定量 @referenceScore 指标权重 @yserInt 年度 */ syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) // jsonVal, jsonErr := json.Marshal(readStatisticsData) // fmt.Printf("排序------%v--------》%v--------》%v\n", pvInfo.Id, string(jsonVal), jsonErr) // panic(readStatisticsData) for _, rsdv := range readStatisticsData { // for ik := 0; ik <= 1; ik++ { // var jiSuanZhiBuLing ScoreList // outCont.Score = append(outCont.Score, jiSuanZhiBuLing) // 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, 0) // stccStatistics.Achievement = append(stccStatistics.Achievement, 0) // } var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.Achievement = rsdv.Achievement // type ScoreList struct { // Class int `json:"class"` //统计类型 // ScoreVal float64 `json:"scoreval"` //原始值 // AllPrize float64 `json:"allprize"` //全奖值 // ZeroPrize float64 `json:"zeroprize"` //零奖值 // CappingVal float64 `json:"cappingval"` //封顶值 // ActualScore float64 `json:"actualscore"` //实际得分 // Achievement float64 `json:"achievement"` //达成率 // } outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 6: //年 // monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) // if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { // monthValue = "12" // } // monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic // for i := 1; i <= monthValueInt; i++ { // // fmt.Printf("年--5-->%v--->%v-->%v\n", i, giveData.Year, yserInt) // 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, pvInfo.Group, pvInfo.Department, i) // syncProcessDepartTarget.Add(1) // go tpsProcess.conditionStatistics(wherStr, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, i, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore) // } wherStr := fmt.Sprintf("fld_target_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v ", pcv.Id, yserInt, pvInfo.Group, pvInfo.Department) syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatistics(wherStr, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, 1, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) // jsonVal, jsonErr := json.Marshal(readStatisticsData) // fmt.Printf("排序------%v--------》%v--------》%v\n", pvInfo.Id, string(jsonVal), jsonErr) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 7: var tpsProcess tablePlanVersionStic //上半年 wherStr := fmt.Sprintf("fld_target_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_month` IN %v", pcv.Id, yserInt, pvInfo.Group, pvInfo.Department, []int{1, 2, 3, 4, 5, 6}) syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatistics(wherStr, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, 1, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore) //下半年 secondwherStr := fmt.Sprintf("fld_target_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_month` IN %v", pcv.Id, yserInt, pvInfo.Group, pvInfo.Department, []int{7, 8, 9, 10, 11, 12}) syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatistics(secondwherStr, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, 2, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) // jsonVal, jsonErr := json.Marshal(readStatisticsData) // fmt.Printf("排序------%v--------》%v--------》%v\n", pvInfo.Id, string(jsonVal), jsonErr) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } default: //月 monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { monthValue = "12" } monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic for i := 1; i <= monthValueInt; i++ { // fmt.Printf("年--6-->%v--->%v-->%v\n", i, giveData.Year, yserInt) wherStr := fmt.Sprintf("fld_target_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_month` = %v", pcv.Id, yserInt, pvInfo.Group, pvInfo.Department, i) syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatistics(wherStr, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, i, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore) } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) // jsonVal, jsonErr := json.Marshal(readStatisticsData) // fmt.Printf("排序------%v--------》%v--------》%v\n", pvInfo.Id, string(jsonVal), jsonErr) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } } } outCont.ScoreAllList = append(outCont.ScoreAllList, stccStatistics) outCont.StatisticsName = []string{"全奖值", "零奖值", "实际值", "达成率", "得分"} if isAdd == 1 { d.outData = append(d.outData, outCont) } } } } } } else { //当版本内容为空时 } syncProcess.Done() } /* 统计分数 @wherStr 统计条件 @group 集团 @department 部门 @dimensionId 维度 @targetId 指标 @i 步进器 @status 是否为观察数据 @scoringMethod 手动计分还是自动计分 @class 指标类型 1、定性;2:定量 @referenceScore 指标权重 @yserInt 年度 */ func (t *tablePlanVersionStic) conditionStatistics(wherStr, group, department, dimensionId, targetId string, i, status, scoringMethod, class int, yserInt, referenceScore int64) { t.mutext.Lock() defer t.mutext.Unlock() // fmt.Printf("年--3-4->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v\n", wherStr, group, department, dimensionId, targetId, i, status, scoringMethod, class, yserInt, referenceScore) var tableScoreCont TableScoreList tableScoreCont.Counter = i var sumScore float64 var departmentAry []int64 //部门ID // 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(wherStr) // 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(wherStr) // gormDb.Pluck("COALESCE(SUM(fld_score), 0) as rescore", &sumScore) // } 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(wherStr) gormDb.Pluck("COALESCE(SUM(fld_score), 0) as rescore", &sumScore) // fmt.Printf("计算得分--3-->%v--->%v-->%v--->%v\n", scoringMethod, wherStr, i, sumScore) //获取测评部门 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(wherStr).Find(&departmentAry) if len(departmentAry) > 0 { for _, v := range departmentAry { whereDepart := commonus.MapOut() whereDepart["id"] = v orgContDer, _ := commonus.GetNewOrgCont(whereDepart, "name") tableScoreCont.ExecutiveDepartment = append(tableScoreCont.ExecutiveDepartment, orgContDer.Name) } } // fmt.Printf("年--3-->%v--->%v\n", wherStr, yserInt) //组装数据 // resultData := commonus.Decimal(sumScore / 100) resultData := sumScore tableScoreCont.Class = class tableScoreCont.ScoreVal = commonus.Decimal(sumScore / 100) if status != 3 { tableScoreCont.ActualScore, tableScoreCont.AllPrize, tableScoreCont.ZeroPrize, tableScoreCont.CappingVal, tableScoreCont.Achievement = quantification.GetQuantitativeConfig(referenceScore, resultData, group, department, dimensionId, targetId, "0", yserInt, i, 2) // t.TableScore = append(t.TableScore, tableScoreCont) } else { tableScoreCont.ActualScore = float64(referenceScore) tableScoreCont.ActualScore, tableScoreCont.AllPrize, tableScoreCont.ZeroPrize, tableScoreCont.CappingVal, tableScoreCont.Achievement = quantification.GetQuantitativeConfigEs(referenceScore, resultData, group, department, dimensionId, targetId, "0", yserInt, i, 3) // t.TableScore = append(t.TableScore, tableScoreCont) } if scoringMethod == 2 { var sumManualScore float64 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(wherStr) gormDb.Pluck("COALESCE(SUM(fld_scoring_score), 0) as rescore", &sumManualScore) tableScoreCont.ActualScore = sumManualScore / 100 fmt.Printf("sumManualScore =====> %v\n", sumManualScore) } // if sumScore == 0 { // tableScoreCont.ActualScore = float64(referenceScore) // } t.TableScore = append(t.TableScore, tableScoreCont) // tableScoreCont.ActualScore = commonus.Decimal(tableScoreCont.ActualScore / 100) syncProcessDepartTarget.Done() // type ScoreList struct { // Class int `json:"class"` //统计类型 // ScoreVal float64 `json:"scoreval"` //原始值 // AllPrize float64 `json:"allprize"` //全奖值 // ZeroPrize float64 `json:"zeroprize"` //零奖值 // CappingVal float64 `json:"cappingval"` //封顶值 // ActualScore float64 `json:"actualscore"` //实际得分 // Achievement float64 `json:"achievement"` //达成率 // } } func (t *tablePlanVersionStic) conditionStatisticsold(wherStr, group, department, dimensionId, targetId string, i, status, scoringMethod, class int, yserInt, referenceScore int64) { t.mutext.Lock() defer t.mutext.Unlock() fmt.Printf("年--3-4->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v--->%v\n", wherStr, group, department, dimensionId, targetId, i, status, scoringMethod, class, yserInt, referenceScore) var tableScoreCont TableScoreList tableScoreCont.Counter = i var sumScore float64 var departmentAry []int64 //部门ID 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(wherStr) 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(wherStr) gormDb.Pluck("COALESCE(SUM(fld_score), 0) as rescore", &sumScore) } // fmt.Printf("计算得分--3-->%v--->%v-->%v--->%v\n", scoringMethod, wherStr, i, sumScore) //获取测评部门 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(wherStr).Find(&departmentAry) if len(departmentAry) > 0 { for _, v := range departmentAry { whereDepart := commonus.MapOut() whereDepart["id"] = v orgContDer, _ := commonus.GetNewOrgCont(whereDepart, "name") tableScoreCont.ExecutiveDepartment = append(tableScoreCont.ExecutiveDepartment, orgContDer.Name) } } // fmt.Printf("年--3-->%v--->%v\n", wherStr, yserInt) //组装数据 // resultData := commonus.Decimal(sumScore / 100) resultData := sumScore tableScoreCont.Class = class tableScoreCont.ScoreVal = commonus.Decimal(sumScore / 100) if status != 3 { tableScoreCont.ActualScore, tableScoreCont.AllPrize, tableScoreCont.ZeroPrize, tableScoreCont.CappingVal, tableScoreCont.Achievement = quantification.GetQuantitativeConfig(referenceScore, resultData, group, department, dimensionId, targetId, "0", yserInt, i, 2) t.TableScore = append(t.TableScore, tableScoreCont) } else { tableScoreCont.ActualScore = float64(referenceScore) tableScoreCont.ActualScore, tableScoreCont.AllPrize, tableScoreCont.ZeroPrize, tableScoreCont.CappingVal, tableScoreCont.Achievement = quantification.GetQuantitativeConfigEs(referenceScore, resultData, group, department, dimensionId, targetId, "0", yserInt, i, 2) t.TableScore = append(t.TableScore, tableScoreCont) } // tableScoreCont.ActualScore = commonus.Decimal(tableScoreCont.ActualScore / 100) syncProcessDepartTarget.Done() // type ScoreList struct { // Class int `json:"class"` //统计类型 // ScoreVal float64 `json:"scoreval"` //原始值 // AllPrize float64 `json:"allprize"` //全奖值 // ZeroPrize float64 `json:"zeroprize"` //零奖值 // CappingVal float64 `json:"cappingval"` //封顶值 // ActualScore float64 `json:"actualscore"` //实际得分 // Achievement float64 `json:"achievement"` //达成率 // } } //定性 /*SubjectiveAuxiliaryCalculationSumMethod(wherStr string, i, status, class int, referenceScore int64) 统计分数 @wherStr 统计条件 @i 步进器 @status 是否为观察数据 @class 指标类型 1、定性;2:定量 @referenceScore 指标权重 */ func (t *tablePlanVersionStic) SubjectiveAuxiliaryCalculationSumMethod(wherStr string, i, status, class int, referenceScore int64) { t.mutext.Lock() defer t.mutext.Unlock() var tableScoreCont TableScoreList tableScoreCont.Counter = i var sumScore float64 var departmentAry []int64 //部门ID //加分 var addSumScore float64 = 0 // global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score").Where(wherStr).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(wherStr).Where("sf_plus_reduce_score = 1").Where("sf_reply >= 2 AND sf_reply <> 4").Find(&jiaFenAry) global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score,sf_count").Where(wherStr).Where("sf_plus_reduce_score = 1").Where("sf_reply IN (2,3)").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(wherStr).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(wherStr).Where("sf_plus_reduce_score = 2").Where("sf_reply >= 2 AND sf_reply <> 4").Find(&jianFenAry) global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score,sf_count").Where(wherStr).Where("sf_plus_reduce_score = 2").Where("sf_reply IN (2,3)").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 } //获取测评部门 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_evaluation_department").Where(wherStr).Find(&departmentAry) if len(departmentAry) > 0 { for _, v := range departmentAry { whereDepart := commonus.MapOut() whereDepart["id"] = v orgContDer, _ := commonus.GetNewOrgCont(whereDepart, "name") tableScoreCont.ExecutiveDepartment = append(tableScoreCont.ExecutiveDepartment, orgContDer.Name) } } resultData := commonus.Decimal(sumScore / 100) if resultData > float64(referenceScore) { resultData = float64(referenceScore) } //组装数据 // var jiSuanZhi ScoreList tableScoreCont.Class = class tableScoreCont.AllPrize = 0 tableScoreCont.ZeroPrize = 0 tableScoreCont.CappingVal = 0 tableScoreCont.ScoreVal = 0 tableScoreCont.Achievement = 0 tableScoreCont.ScoreVal = resultData if status != 3 { // fmt.Printf("referenceScore--1--->%v\n", referenceScore) // tableScoreCont.ActualScore = resultData if addSumScore == 0 && scoreReduction == 0 { // fmt.Printf("referenceScore--2--->%v\n", referenceScore) tableScoreCont.ActualScore = float64(referenceScore) } else { // fmt.Printf("referenceScore--3--->%v\n", referenceScore) deFen := float64(referenceScore) - resultData if deFen > 0 { tableScoreCont.ActualScore = deFen } else { tableScoreCont.ActualScore = 0 } } } else { tableScoreCont.ActualScore = float64(referenceScore) // if addSumScore == 0 && scoreReduction == 0 { // fmt.Printf("referenceScore--2--->%v\n", referenceScore) // tableScoreCont.ActualScore = float64(referenceScore) // } else { // fmt.Printf("referenceScore--3--->%v\n", referenceScore) // tableScoreCont.ActualScore = resultData // } } fmt.Printf("referenceScore--4--->%v\n", referenceScore) t.TableScore = append(t.TableScore, tableScoreCont) syncProcessDepartTarget.Done() } func (d *dataLockStatistics) planVersiconProcessV1(pvInfo assessmentmodel.PlanVersio, giveData PlanVersioMingXi) { d.mutext.Lock() defer d.mutext.Unlock() yserInt, _ := strconv.ParseInt(giveData.Year, 10, 64) // fmt.Printf("年--2-->%v--->%v\n", giveData.Year, yserInt) if pvInfo.Content != "" { //当版本内容不为空时 var planInfo []AddDutyNewCont jsonErr := json.Unmarshal([]byte(pvInfo.Content), &planInfo) if jsonErr == nil { //进行维度操作 for _, pv := range planInfo { for _, pcv := range pv.Child { //指标列表 // if pcv.Id == "6" { fmt.Printf("pcv.Id------------------->%v\n", pcv.Id) if pcv.Status != 2 { //忽略掉禁用的指标 var outCont TargetContOutCont outCont.Id = strconv.FormatInt(pvInfo.Id, 10) //集团信息 outCont.Group = strconv.FormatInt(pvInfo.Group, 10) where := commonus.MapOut() where["id"] = pvInfo.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") outCont.GroupName = orgCont.Name //接受考核部门 outCont.DepartmentId = strconv.FormatInt(pvInfo.Department, 10) whereDepart := commonus.MapOut() whereDepart["id"] = pvInfo.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 targetGormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Select("et_type,et_scoring_method,et_title").Where("`et_id` = ?", pcv.Id) if giveData.Title != "" { targetGormDb = targetGormDb.Where("et_title LIKE ?", "%"+giveData.Title+"%") } if giveData.Class != 0 { targetGormDb = targetGormDb.Where("et_type = ?", giveData.Class) } isAdd := 1 evalErr := targetGormDb.First(&evalTargerCont).Error scoringMethod := 1 if evalErr == nil { outCont.Type = evalTargerCont.Type scoringMethod = evalTargerCont.ScoringMethod isAdd = 1 } else { isAdd = 2 } outCont.ManualGear = scoringMethod //获取执行部门及指标性质 _, _, departName, cycle, cycleattr, isDuty, isDutyErr := getDepartTarget(pvInfo.Key, pv.Id, pcv.Id, strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10)) // fmt.Printf("qualEvalId----------->%v----------->departName----------->%v----------->cycle----------->%v----------->cycleattr----------->%v----------->isDuty----------->%v----------->isDutyErr----------->%v\n", qualEvalId, departName, cycle, cycleattr, isDuty, isDutyErr) if isDutyErr == nil { outCont.ExecutiveDepartment = departName if pcv.Cycles == 0 { outCont.Cycles = cycle } else { outCont.Cycles = pcv.Cycles cycle = pcv.Cycles } if pcv.CycleAttres == 0 { outCont.Cycles = cycleattr } else { outCont.CycleAttres = pcv.CycleAttres cycleattr = pcv.CycleAttres } // outCont.CycleAttres = cycleattr if isDuty != 0 { outCont.Type = isDuty } } else { var evalTargerCont assessmentmodel.EvaluationTarget evalErr := global.GVA_DB_Performanceappraisal.Where("`et_id` = ?", pcv.Id).First(&evalTargerCont).Error if evalErr == nil { if pcv.Cycles == 0 { outCont.Cycles = evalTargerCont.Cycles } else { outCont.Cycles = pcv.Cycles cycle = pcv.Cycles } if pcv.CycleAttres == 0 { outCont.CycleAttres = evalTargerCont.CycleAttres } else { outCont.CycleAttres = pcv.CycleAttres cycleattr = pcv.CycleAttres } // isDuty = evalTargerCont.Type // outCont.CycleAttres = evalTargerCont.CycleAttres } if isDuty != 0 { outCont.Type = isDuty } // isDuty = 2 } // fmt.Printf("departName--->%v--->cycle--->%v--->cycleattr--->%v--->isDuty--->%v--->isDutyErr--->%v\n", departName, cycle, cycleattr, isDuty, isDutyErr) // panic(isDutyErr) var stccStatistics ScoreListAry stccStatistics.Class = isDuty if isDuty == 1 { //定性考核 switch cycle { case 1: case 2: //天 case 3: case 5: //季度 var tpsProcess tablePlanVersionStic for i := 1; i <= 4; i++ { // 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, pvInfo.Group, pvInfo.Department, yserInt, i) wherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_quarter` = %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, i) // 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, pvInfo.Group, pvInfo.Department, yserInt, i) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, i, pcv.Status, 1, pcv.ReferenceScore) } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { // for ik := 0; ik <= 1; ik++ { // var jiSuanZhiBuLing ScoreList // outCont.Score = append(outCont.Score, jiSuanZhiBuLing) // 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, 0) // stccStatistics.Achievement = append(stccStatistics.Achievement, 0) // } var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = commonus.DecimalEs(rsdv.ActualScore, 2) jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 6: //年 // monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) // if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { // monthValue = "12" // } // monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic // for i := 1; i <= monthValueInt; i++ { // 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, pvInfo.Group, pvInfo.Department, yserInt, i) // syncProcessDepartTarget.Add(1) // go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, i, pcv.Status, 1, pcv.ReferenceScore) // } wherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, 1, pcv.Status, 1, pcv.ReferenceScore) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 7: //半年 var tpsProcess tablePlanVersionStic //上半年 firstHalfwherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` IN %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, []int{1, 2, 3, 4, 5, 6}) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(firstHalfwherStr, 1, pcv.Status, 1, pcv.ReferenceScore) //下半年 secondHalfwherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` IN %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, []int{7, 8, 9, 10, 11, 12}) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(secondHalfwherStr, 2, pcv.Status, 1, pcv.ReferenceScore) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } default: //月 monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { monthValue = "12" } monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic for i := 1; i <= monthValueInt; i++ { wherStr := fmt.Sprintf("`sf_target_id` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` = %v", pcv.Id, pvInfo.Group, pvInfo.Department, yserInt, i) syncProcessDepartTarget.Add(1) go tpsProcess.SubjectiveAuxiliaryCalculationSumMethod(wherStr, i, pcv.Status, 1, pcv.ReferenceScore) } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } } } else { //定量考核 switch cycle { case 1: case 2: //天 case 3: case 5: //季度 var tpsProcess tablePlanVersionStic for i := 1; i <= 4; i++ { syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatisticsNew(strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, i, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore, 5, 2) } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 6: //年 var tpsProcess tablePlanVersionStic syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatisticsNew(strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, 1, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore, 6, 2) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } case 7: var tpsProcess tablePlanVersionStic //上半年 syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatisticsNew(strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, 1, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore, 7, 2) //下半年 syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatisticsNew(strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, 3, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore, 6, 2) syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) // jsonVal, jsonErr := json.Marshal(readStatisticsData) // fmt.Printf("排序------%v--------》%v--------》%v\n", pvInfo.Id, string(jsonVal), jsonErr) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } default: //月 monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) if commonus.TimeStampToDate(time.Now().Unix(), 11) != giveData.Year { monthValue = "12" } monthValueInt, _ := strconv.Atoi(monthValue) var tpsProcess tablePlanVersionStic if giveData.Month != 0 { monthIsDay := giveData.Month if monthIsDay > 12 { monthIsDay = 12 } if monthIsDay < 1 { monthIsDay = 1 } syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatisticsNew(strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, monthIsDay, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore, 4, 2) } else { for i := 1; i <= monthValueInt; i++ { syncProcessDepartTarget.Add(1) go tpsProcess.conditionStatisticsNew(strconv.FormatInt(pvInfo.Group, 10), strconv.FormatInt(pvInfo.Department, 10), pv.Id, pcv.Id, i, pcv.Status, scoringMethod, 2, yserInt, pcv.ReferenceScore, 4, 2) } } syncProcessDepartTarget.Wait() readStatisticsData := tpsProcess.readMyDayData() //按照最大值排序 sort.Slice(readStatisticsData, func(i int, j int) bool { return readStatisticsData[i].Counter < readStatisticsData[j].Counter }) jsonVal, jsonErr := json.Marshal(readStatisticsData) fmt.Printf("排序------%v--------》%v--------》%v\n", pvInfo.Id, string(jsonVal), jsonErr) for _, rsdv := range readStatisticsData { var jiSuanZhi ScoreList jiSuanZhi.Class = rsdv.Class jiSuanZhi.ScoreVal = rsdv.ScoreVal jiSuanZhi.ActualScore = rsdv.ActualScore jiSuanZhi.AllPrize = rsdv.AllPrize jiSuanZhi.ZeroPrize = rsdv.ZeroPrize jiSuanZhi.CappingVal = rsdv.CappingVal jiSuanZhi.Achievement = rsdv.Achievement outCont.Score = append(outCont.Score, jiSuanZhi) if len(rsdv.ExecutiveDepartment) > 0 { //写入执行考核的部门 for _, edv := range rsdv.ExecutiveDepartment { if commonus.IsItTrueString(edv, outCont.ExecutiveDepartment) == false { outCont.ExecutiveDepartment = append(outCont.ExecutiveDepartment, edv) } } } stccStatistics.ScoreVal = append(stccStatistics.ScoreVal, rsdv.ScoreVal) stccStatistics.AllPrize = append(stccStatistics.AllPrize, rsdv.AllPrize) stccStatistics.ZeroPrize = append(stccStatistics.ZeroPrize, rsdv.ZeroPrize) stccStatistics.CappingVal = append(stccStatistics.CappingVal, rsdv.CappingVal) stccStatistics.ActualScore = append(stccStatistics.ActualScore, rsdv.ActualScore) stccStatistics.Achievement = append(stccStatistics.Achievement, rsdv.Achievement) } } } outCont.ScoreAllList = append(outCont.ScoreAllList, stccStatistics) outCont.StatisticsName = []string{"全奖值", "零奖值", "封顶值", "实际值", "达成率", "得分"} if isAdd == 1 { d.outData = append(d.outData, outCont) } } // } } } } } else { //当版本内容为空时 } syncProcess.Done() }