diff --git a/gin_server_admin/api/admin/dutyassess/assess.go b/gin_server_admin/api/admin/dutyassess/assess.go index fa76b96..4d39dd7 100644 --- a/gin_server_admin/api/admin/dutyassess/assess.go +++ b/gin_server_admin/api/admin/dutyassess/assess.go @@ -493,6 +493,8 @@ func (e *DutyAssessApi) LookQuantitativeConfig(c *gin.Context) { if dtErr == true { outCont.DetailedTargetTitle = dtargetInfo.Title } + outCont.Capping = v.Capping + outCont.CappingVal = v.CappingVal / 100 outList = append(outList, outCont) } response.Result(0, outList, "获取成功!", c) @@ -765,7 +767,7 @@ func (d *DutyAssessApi) LookDepartDutyVersio(c *gin.Context) { uotCont.TargetWeight = pvChild.ReferenceScore uotCont.Unit = pvChild.Unit uotCont.Content = pvChild.Content - uotCont.State = pvChild.State + uotCont.State = pvChild.Status //获取指标内容 var evalTargerCont assessmentmodel.EvaluationTarget evalErr := global.GVA_DB_Performanceappraisal.Where("`et_id` = ?", pvChild.Id).First(&evalTargerCont).Error @@ -1041,13 +1043,25 @@ func (d *DutyAssessApi) CopyDepartDutyVersio(c *gin.Context) { copyInfoXonr.ZhiFraction = v.ZhiFraction for _, cv := range v.Child { var copyEvalCont CopyEvaluPross - copyEvalCont.Id = cv.Id //`json:"id"` //维度ID - copyEvalCont.Name = cv.Name //`json:"name"` + copyEvalCont.Id = cv.Id //`json:"id"` //维度ID + var tarGetContent assessmentmodel.EvaluationTarget + tarGetContentErr := tarGetContent.GetCont(map[string]interface{}{"et_id": cv.Id}, "et_title") + if tarGetContentErr == nil { + copyEvalCont.Name = tarGetContent.Title + } else { + copyEvalCont.Name = cv.Name //`json:"name"` + } + copyEvalCont.Content = cv.Content //`json:"content"` //指标说明 copyEvalCont.Unit = cv.Unit //`json:"unit"` //单位"` copyEvalCont.ReferenceScore = cv.ReferenceScore //`json:"referencescore"` //标准分值"` - copyEvalCont.State = cv.State //`json:"state"` - copyEvalCont.Istrue = 2 //`json:"istrue"` //是否允许修改 + if cv.Status == 0 { + copyEvalCont.State = 2 + } else { + copyEvalCont.State = cv.Status //`json:"state"` + } + + copyEvalCont.Istrue = 2 //`json:"istrue"` //是否允许修改 copyInfoXonr.Child = append(copyInfoXonr.Child, copyEvalCont) } @@ -1058,3 +1072,49 @@ func (d *DutyAssessApi) CopyDepartDutyVersio(c *gin.Context) { } response.Result(0, copyCont, "查询完成!", c) } + +//修改考核目标设置 +func (e *DutyAssessApi) EiteQuantitativeConfig(c *gin.Context) { + var requestData []EiteQuantConfig + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if len(requestData) < 1 { + response.Result(101, err, "数据获取失败!", c) + return + } + for _, v := range requestData { + eiteCont := commonus.MapOut() + eiteCont["allprize"] = v.Allprize * 100 + eiteCont["zeroprize"] = v.Zeroprize * 100 + eiteCont["capping_val"] = v.Capping * 100 + err = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QuantitativeConfig{}).Where("`id` = ?", v.Id).Updates(eiteCont).Error + } + if err != nil { + response.Result(101, err, "数据编辑失败!", c) + } else { + response.Result(0, err, "数据编辑成功!", c) + } +} + +//修改考核目标设置 +func (e *DutyAssessApi) DelQuantitativeConfig(c *gin.Context) { + var requestData []string + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if len(requestData) < 1 { + response.Result(101, err, "数据获取失败!", c) + return + } + err = global.GVA_DB_Performanceappraisal.Where("`id` IN ?", requestData).Delete(&assessmentmodel.QuantitativeConfig{}).Error + if err != nil { + response.Result(101, err, "删除失败!", c) + } else { + response.Result(0, err, "删除成功!", c) + } +} diff --git a/gin_server_admin/api/admin/dutyassess/assesstype.go b/gin_server_admin/api/admin/dutyassess/assesstype.go index 8c9f958..83e380d 100644 --- a/gin_server_admin/api/admin/dutyassess/assesstype.go +++ b/gin_server_admin/api/admin/dutyassess/assesstype.go @@ -623,3 +623,16 @@ type CopyEvaluPross struct { State int `json:"status"` Istrue int `json:"istrue"` //是否允许修改 } + +//修改考核目标设定 +type EiteQuantConfig struct { + Id string `json:"id"` + Zeroprize float64 `json:"zeroprize"` //零奖值"` + Allprize float64 `json:"allprize"` //全奖值"` + Capping float64 `json:"capping"` //封顶值"` +} + +//删除考核目标设定 +type DelQuantConfig struct { + Id string `json:"id"` +} diff --git a/gin_server_admin/api/admin/dutyassess/planversio.go b/gin_server_admin/api/admin/dutyassess/planversio.go index 9421a9f..030fe40 100644 --- a/gin_server_admin/api/admin/dutyassess/planversio.go +++ b/gin_server_admin/api/admin/dutyassess/planversio.go @@ -551,7 +551,7 @@ func (d *DutyAssessApi) OnOffDepartDutyVersio(c *gin.Context) { } //判断是否存在 var ContInfo assessmentmodel.PlanVersio - getContErr := global.GVA_DB_Performanceappraisal.Where("`key` = ?", requestData.Key).First(&ContInfo).Error + getContErr := global.GVA_DB_Performanceappraisal.Where("`key` = ? AND `state` <> 3", requestData.Key).First(&ContInfo).Error if getContErr != nil { response.Result(103, getContErr, "没有该方案!", c) return diff --git a/gin_server_admin/api/admin/systemuser/systemmenu.go b/gin_server_admin/api/admin/systemuser/systemmenu.go index 8f1d73e..8201bdb 100644 --- a/gin_server_admin/api/admin/systemuser/systemmenu.go +++ b/gin_server_admin/api/admin/systemuser/systemmenu.go @@ -104,7 +104,7 @@ func (s *SysTemMenuApi) AddMenu(c *gin.Context) { // isTrue, userCont := commonus.AdminClientIdentity() isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData addMenuData @@ -165,7 +165,7 @@ func (s *SysTemMenuApi) EiteMenu(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData eiteMenuData @@ -234,7 +234,7 @@ func (s *SysTemMenuApi) DelMenu(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData commonus.DelParameter @@ -291,7 +291,7 @@ func (s *SysTemMenuApi) AddMenuOperation(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData addMenuOper @@ -338,7 +338,7 @@ func (s *SysTemMenuApi) DelMenuOperation(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData commonus.DelParameter diff --git a/gin_server_admin/api/index/assessment/assesshandle.go b/gin_server_admin/api/index/assessment/assesshandle.go index 2485bdc..9a1fdd1 100644 --- a/gin_server_admin/api/index/assessment/assesshandle.go +++ b/gin_server_admin/api/index/assessment/assesshandle.go @@ -148,7 +148,7 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) { } isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) @@ -336,7 +336,7 @@ func (a *Assessment) AddAssessmentScore(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(106, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) @@ -419,7 +419,7 @@ func (a *Assessment) MyEvaluateList(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } // gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Departscores{}).Select("s_depart_id", "s_file_time", "s_comment_user").Where("`s_comment_user` = ?", userCont.Key) @@ -705,7 +705,7 @@ func (a *Assessment) DepartmentAssess(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(103, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } @@ -1091,7 +1091,7 @@ func (a *Assessment) LookPersonalOrDepartment(c *gin.Context) { offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) isTrue, userInfo := commonus.ClientIdentity() if isTrue != true { - response.Result(103, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } departmentID, departmentIDErr := strconv.ParseInt(userInfo.Deparment, 10, 64) diff --git a/gin_server_admin/api/index/evaluation/assessment.go b/gin_server_admin/api/index/evaluation/assessment.go index 4f7a988..282da22 100644 --- a/gin_server_admin/api/index/evaluation/assessment.go +++ b/gin_server_admin/api/index/evaluation/assessment.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "strconv" + "time" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" @@ -16,7 +17,7 @@ import ( func (e *EvaluationInterface) NewQualitative(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } @@ -76,7 +77,7 @@ func (e *EvaluationInterface) NewQualitative(c *gin.Context) { func (e *EvaluationInterface) NewGetQualDetailedTarget(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData NewQualDetailTar @@ -159,3 +160,20 @@ func (e *EvaluationInterface) NewGetQualDetailedTarget(c *gin.Context) { } response.Result(0, outContList, "获取成功!", c) } + +//判断全奖与零奖参数 +func AllZreoConfig(cycles int) (monthInt int64) { + switch cycles { + case 4: + monthInt = commonus.ComputingTime(time.Now().Unix(), 1) + // monthInt, _ = strconv.ParseInt(monthstr, 10, 64) + case 5: + // var dfds error + monthInt = commonus.ComputingTime(time.Now().Unix(), 2) + // monthInt, dfds = strconv.ParseInt(monthstrsss, 10, 64) + // fmt.Printf("monthstr--------monthInt-------->%v----->%v----->%v\n", monthstrsss, monthInt, dfds) + default: + + } + return +} diff --git a/gin_server_admin/api/index/evaluation/evaluation.go b/gin_server_admin/api/index/evaluation/evaluation.go index ff738f5..86034ec 100644 --- a/gin_server_admin/api/index/evaluation/evaluation.go +++ b/gin_server_admin/api/index/evaluation/evaluation.go @@ -26,7 +26,7 @@ func (e *EvaluationInterface) Index(c *gin.Context) { func (e *EvaluationInterface) QualitativeEvaluation(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } // var qualEvaList []assessmentmodel.QualitativeEvaluation @@ -117,7 +117,7 @@ func (e *EvaluationInterface) QualitativeEvaluation(c *gin.Context) { func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData addPlusOrMinusPoints @@ -326,7 +326,7 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) { func (e *EvaluationInterface) AddDivisionResponsibility(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData DivisionResponsibilityType @@ -593,7 +593,7 @@ func (e *EvaluationInterface) AddDivisionResponsibility(c *gin.Context) { func (e *EvaluationInterface) AddCorrectiveMeasures(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) @@ -729,7 +729,7 @@ func SendRectifyReceipt(sendUserList, mainTitle, mainTitleDesc, subtitle, reason func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData GetRationFlowLog @@ -799,17 +799,22 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { uotCont.TargetName = targetInfo.Title uotCont.ScoringMethod = int64(targetInfo.ScoringMethod) } - uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10) - info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun) - if infoErr == true { - uotCont.TargetSunName = info.Title + if v.TargetSun != 0 { + uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10) + info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun) + if infoErr == true { + uotCont.TargetSunName = info.Title + } } - uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) - dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget) - if dtIsTrue == true { - uotCont.DetailedTargetName = dtCont.Title - uotCont.Content = dtCont.Content + if v.DetailedTarget != 0 { + uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) + dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget) + if dtIsTrue == true { + uotCont.DetailedTargetName = dtCont.Title + uotCont.Content = dtCont.Content + } } + uotCont.Unit = v.Unit uotCont.ReferenceScore = v.ReferenceScore uotCont.Cycles = v.Cycles @@ -818,7 +823,8 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { userAry := strings.Split(v.Operator, ",") uotCont.UserList = userAry for _, u_v := range userAry { - usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": u_v}) + // usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": u_v}) + usCont, usErr := commonus.GetNewHrPeopleInfo(map[string]interface{}{"`key`": u_v}, "number", "name") if usErr == true { var userCont QualEvalArrt userCont.Id = u_v @@ -826,16 +832,20 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { uotCont.UserListAry = append(uotCont.UserListAry, userCont) } } + uotCont.DimensionWeight, uotCont.TargetWeight = getPlanVersionWeghit(v.QualEvalId, strconv.FormatInt(v.Dimension, 10), strconv.FormatInt(v.Target, 10)) //获取目标设定 quanTitWhere := commonus.MapOut() quanTitWhere["group"] = v.Group - quanTitWhere["departmentid"] = v.DepartmentId + quanTitWhere["departmentid"] = v.AcceptEvaluation quanTitWhere["dimension"] = v.Dimension quanTitWhere["target"] = v.Target if v.DetailedTarget != 0 { quanTitWhere["targetconfig"] = v.DetailedTarget } + quanTitWhere["year"] = commonus.TimeStampToDate(time.Now().Unix(), 11) + quanTitWhere["timecopy"] = AllZreoConfig(v.Cycles) quanTitCont := commonus.GetQuantitativeConfig(quanTitWhere) + fmt.Printf("quanTitWhere----------->%v-------->%v\n", quanTitWhere, quanTitCont) uotCont.ZeroPrize = strconv.FormatFloat(float64(quanTitCont.Zeroprize)/100, 'f', -1, 64) uotCont.AllPrize = strconv.FormatFloat(float64(quanTitCont.Allprize)/100, 'f', -1, 64) @@ -885,6 +895,14 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { actualValue := commonus.GetTimeIntervalDuty(shiJiZhi, v.Id) //实际值 uotCont.Actual = strconv.FormatFloat(actualValue/100, 'f', -1, 64) + chuShuVal := actualValue - quanTitCont.Zeroprize + beiChuShuVal := quanTitCont.Allprize - quanTitCont.Zeroprize + if beiChuShuVal > 0 { + uotCont.ReachScore = chuShuVal / beiChuShuVal + } else { + uotCont.ReachScore = 0 + } + judgeActualValue := commonus.GetTimeIntervalDutyJudge(shiJiZhi, v.Id) //判断当前条件下时候又审批中和审批通过的 if judgeActualValue > 0 { kickOut = 2 @@ -893,18 +911,19 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { if quanTitCont.Zeroprize == 0 && quanTitCont.Allprize == 0 { uotCont.Reach = "未设置目标值" } else { - divisor := actualValue - float64(quanTitCont.Zeroprize) //除数 + // divisor := actualValue - float64(quanTitCont.Zeroprize) //除数 dividend := quanTitCont.Allprize - quanTitCont.Zeroprize //被除数 if dividend == 0 { uotCont.Reach = "未设置目标值" } else { - reachValue := ((divisor / 100) / (float64(dividend) / 100)) * 100 - if reachValue < 0 { - uotCont.Reach = "0%" - } else { - reachValueStr := strconv.FormatFloat(reachValue, 'f', -1, 64) - uotCont.Reach = fmt.Sprintf("%v%", reachValueStr) - } + uotCont.Reach = fmt.Sprintf("((实际值-零奖值)/(全奖值-零奖值))*指标权重\n((S-Z)/(A-Z))*W") + // reachValue := ((divisor / 100) / (float64(dividend) / 100)) * 100 + // if reachValue < 0 { + // uotCont.Reach = "0%" + // } else { + // reachValueStr := strconv.FormatFloat(reachValue, 'f', -1, 64) + // uotCont.Reach = fmt.Sprintf("%v%", reachValueStr) + // } } } @@ -922,7 +941,7 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) { func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) @@ -975,6 +994,12 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { flowLog.Week = commonus.ComputingTime(timeOccurrence, 4) flowLog.ToDay = commonus.ComputingTime(timeOccurrence, 5) } else { + lastMonth, _, _ := commonus.GetLastMonth() + + lastMonthInt, lastMonthErr := commonus.DateToTimeStampEs(fmt.Sprintf("%v-10 12:00:00", lastMonth)) + if lastMonthErr == true { + operationTime = lastMonthInt + } flowLog.Year = commonus.ComputingTime(operationTime, 1) flowLog.Quarter = commonus.ComputingTime(operationTime, 2) flowLog.Month = commonus.ComputingTime(operationTime, 3) @@ -1051,7 +1076,7 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { addFlowLogErr := gromDb.Create(&flowLog).Error addFlowLogDataErr := gromDb.Create(&flowDataLogAry).Error - commonus.StepAddData(keyNumber, 16182159043990656, 2, 7, 2, 2, 1, userCont.Key) + commonus.StepAddData(keyNumber, 16182159043990656, 2, 7, 2, 1, 1, userCont.Key) // response.Result(0, flowLog, "数据写入成功", c) // return //暂停审核方便录入测试数据 @@ -1401,6 +1426,9 @@ func (d *EvaluationInterface) LookRationkScoreFlow(c *gin.Context) { if targetContErr == true { outContt.Title = targetCont.Title outContt.Unit = targetCont.Unit + + outContt.Cycles = targetCont.Cycles + outContt.CycleAttres = targetCont.CycleAttres } outContt.Score = float64(v.Score) / 100 outContt.Content = v.Content @@ -1516,5 +1544,27 @@ func (d *EvaluationInterface) LookRationkScoreFlow(c *gin.Context) { response.Result(0, outListMap, "查询成功", c) } -//获取点击人信息 -// userContInfoIstrue, userContInfo := commonus.GetUesrContForWechatID(t.FromUsername) +//获取权重 +func getPlanVersionWeghit(planKey, dimensionId, targetId string) (dimensionIdWeghit, targetIdWeghit int64) { + var planVersionCont assessmentmodel.PlanVersio + err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Select("`content`").Where("`key` = ?", planKey).First(&planVersionCont).Error + if err != nil { + return + } + var planVersioInfo []AddDutyNewCont + jsonErr := json.Unmarshal([]byte(planVersionCont.Content), &planVersioInfo) + if jsonErr != nil { + return + } + for _, v := range planVersioInfo { + if v.Id == dimensionId { + dimensionIdWeghit = int64(v.ZhiFraction) + for _, cv := range v.Child { + if cv.Id == targetId { + targetIdWeghit = cv.ReferenceScore + } + } + } + } + return +} diff --git a/gin_server_admin/api/index/evaluation/examineflow.go b/gin_server_admin/api/index/evaluation/examineflow.go new file mode 100644 index 0000000..b887304 --- /dev/null +++ b/gin_server_admin/api/index/evaluation/examineflow.go @@ -0,0 +1,218 @@ +package evaluation + +import ( + "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" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/hrsystem" + "github.com/gin-gonic/gin" +) + +func (e *EvaluationInterface) ExamineFlow(c *gin.Context) { + isTrue, userCont := commonus.ClientIdentity() + if isTrue != true { + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + return + } + var requestData getExamineFlow + c.ShouldBindJSON(&requestData) + if requestData.Id == "" { + response.Result(101, requestData, "数据获取失败!", c) + return + } + if requestData.IsCorrection == 0 { + requestData.IsCorrection = 2 + } + + var qualEvalInfo assessmentmodel.QualitativeEvaluation + qualWhere := commonus.MapOut() + qualWhere["`qe_id`"] = requestData.Id + qualEvalInfoErr := qualEvalInfo.GetCont(qualWhere) + if qualEvalInfoErr != nil { + response.Result(102, qualEvalInfoErr, "未查询到数据!", c) + return + } + + var flowMap []commonus.FlowAllMap + + // wxkStr := userCont.Wechat + //1、创建 + var oneFlowInfo commonus.FlowAllMap + oneFlowInfo.Step = 1 + oneFlowInfo.NodeName = commonus.GetSetpName(1) + oneFlowInfo.State = 2 + oneFlowInfo.Class = 1 + oneFlowInfo.UserList = append(oneFlowInfo.UserList, GetApproveUser(userCont.Wechat)) + flowMap = append(flowMap, oneFlowInfo) + + if qualEvalInfo.Type == 1 { + //定性 + //2、创建人部门负责人审核 + var twoFlowInfo commonus.FlowAllMap + twoFlowInfo.Step = 2 + twoFlowInfo.NodeName = commonus.GetSetpName(2) + twoFlowInfo.State = 1 + twoFlowInfo.Class = 1 + // orgCont, _ := commonus.GetNewOrgCont(map[string]interface{}{"`id`": userCont.Deparment}, "id", "wechat_organization_id") + // sendUserIsTrue, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, orgCont.WechatOrganizationId) + twoDepartId, _ := strconv.ParseInt(userCont.Deparment, 10, 64) + sendUserIsTrue, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, twoDepartId) + if sendUserIsTrue == true { + for _, v := range sendUserList { + twoFlowInfo.UserList = append(twoFlowInfo.UserList, GetApproveUser(v)) + } + } + flowMap = append(flowMap, twoFlowInfo) + //3、被考核部门内勤进行责任划分 + var threeFlowInfo commonus.FlowAllMap + threeFlowInfo.Step = 3 + threeFlowInfo.NodeName = commonus.GetSetpName(3) + threeFlowInfo.State = 1 + threeFlowInfo.Class = 1 + + // threeorgCont, _ := commonus.GetNewOrgCont(map[string]interface{}{"`id`": qualEvalInfo.AcceptEvaluation}, "id", "wechat_organization_id") + // sendUserIsTrueThree, sendUserListThree := commonus.GetSendMsgUserAry(16118387069540343, threeorgCont.WechatOrganizationId) + sendUserIsTrueThree, sendUserListThree := commonus.GetSendMsgUserAry(16118387069540343, qualEvalInfo.AcceptEvaluation) + if sendUserIsTrueThree == true { + for _, v := range sendUserListThree { + threeFlowInfo.UserList = append(threeFlowInfo.UserList, GetApproveUser(v)) + } + } + flowMap = append(flowMap, threeFlowInfo) + //4、被考核部门负责人对责任划分确认 + var fourFlowInfo commonus.FlowAllMap + fourFlowInfo.Step = 4 + fourFlowInfo.NodeName = commonus.GetSetpName(7) + fourFlowInfo.State = 1 + fourFlowInfo.Class = 1 + + // fourorgCont, _ := commonus.GetNewOrgCont(map[string]interface{}{"`id`": qualEvalInfo.AcceptEvaluation}, "id", "wechat_organization_id") + // sendUserIsTrueFour, sendUserListFour := commonus.GetSendMsgUserAry(16182159043990656, fourorgCont.WechatOrganizationId) + sendUserIsTrueFour, sendUserListFour := commonus.GetSendMsgUserAry(16182159043990656, qualEvalInfo.AcceptEvaluation) + if sendUserIsTrueFour == true { + for _, v := range sendUserListFour { + fourFlowInfo.UserList = append(fourFlowInfo.UserList, GetApproveUser(v)) + } + } + flowMap = append(flowMap, fourFlowInfo) + if requestData.IsCorrection == 1 { + //5、整改人节点。由内勤指定 + var fiveFlowInfo commonus.FlowAllMap + fiveFlowInfo.Step = 5 + fiveFlowInfo.NodeName = commonus.GetSetpName(4) + fiveFlowInfo.State = 1 + fiveFlowInfo.Class = 2 + // fiveFlowInfo.UserList = GetFlowNodeManEs(flowID, class, 5,encFile) + flowMap = append(flowMap, fiveFlowInfo) + //6、被考核部门负责人对整改措施确认 + var sixFlowInfo commonus.FlowAllMap + sixFlowInfo.Step = 6 + sixFlowInfo.NodeName = commonus.GetSetpName(7) + sixFlowInfo.State = 1 + sixFlowInfo.Class = 1 + + // sixorgCont, _ := commonus.GetNewOrgCont(map[string]interface{}{"`id`": qualEvalInfo.AcceptEvaluation}, "id", "wechat_organization_id") + // sendUserIsTrueSix, sendUserListSix := commonus.GetSendMsgUserAry(16182159043990656, sixorgCont.WechatOrganizationId) + sendUserIsTrueSix, sendUserListSix := commonus.GetSendMsgUserAry(16182159043990656, qualEvalInfo.AcceptEvaluation) + if sendUserIsTrueSix == true { + for _, v := range sendUserListSix { + sixFlowInfo.UserList = append(sixFlowInfo.UserList, GetApproveUser(v)) + } + } + flowMap = append(flowMap, sixFlowInfo) + //7、发起人验收 + var serverFlowInfo commonus.FlowAllMap + serverFlowInfo.Step = 7 + serverFlowInfo.NodeName = commonus.GetSetpName(5) + serverFlowInfo.State = 1 + serverFlowInfo.Class = 1 + serverFlowInfo.UserList = append(serverFlowInfo.UserList, GetApproveUser(userCont.Wechat)) + flowMap = append(flowMap, serverFlowInfo) + } else { + //5、发起人验收 + var serverEsFlowInfo commonus.FlowAllMap + serverEsFlowInfo.Step = 5 + serverEsFlowInfo.NodeName = commonus.GetSetpName(5) + serverEsFlowInfo.State = 1 + serverEsFlowInfo.Class = 1 + serverEsFlowInfo.UserList = append(serverEsFlowInfo.UserList, GetApproveUser(userCont.Wechat)) + flowMap = append(flowMap, serverEsFlowInfo) + } + } else { + //定量 + //审批结束 + var twoFlowInfo commonus.FlowAllMap + twoFlowInfo.Step = 2 + twoFlowInfo.NodeName = commonus.GetSetpName(7) + twoFlowInfo.State = 1 + twoFlowInfo.Class = 1 + + // where := commonus.MapOut() + // where["id"] = userCont.Deparment + // orgCont, _ := commonus.GetNewOrgCont(where, "id", "wechat_organization_id") + departId, _ := strconv.ParseInt(userCont.Deparment, 10, 64) + sendUserIsTrue, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, departId) + if sendUserIsTrue == true { + for _, v := range sendUserList { + twoFlowInfo.UserList = append(twoFlowInfo.UserList, GetApproveUser(v)) + } + } + flowMap = append(flowMap, twoFlowInfo) + } + + // flowMap = append(flowMap, oneFlowInfo) + response.Result(0, flowMap, "查询成功!", c) +} + +//获取人员信息 +func GetApproveUser(key string) (returnUser commonus.UserListFlowAll) { + var userCont hrsystem.Personnel + // qualWhere := commonus.MapOut() + // qualWhere["`key`"] = key + + userErr := global.GVA_DB_HrDataBase.Where("`wechat` = ? OR `work_wechat` = ?", key, key).First(&userCont).Error + if userErr == nil { + returnUser.Id = strconv.FormatInt(userCont.Key, 10) + returnUser.Name = userCont.Name + returnUser.Icon = userCont.Icon + returnUser.Group = userCont.Company + + where := commonus.MapOut() + where["id"] = userCont.Company + orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") + returnUser.GroupName = orgCont.Name + + returnUser.DepartmentId, _ = strconv.ParseInt(userCont.Deparment, 10, 64) + whereDepart := commonus.MapOut() + whereDepart["id"] = userCont.Deparment + orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name") + returnUser.DepartmentName = orgContDepart.Name + // returnUser.DepartmentName = userCont.DepartmentName + returnUser.WorkshopId = userCont.Position + var positionCont hrsystem.Position + positionContErr := positionCont.GetCont(map[string]interface{}{"`id`": userCont.Position}, "`name`") + if positionContErr == nil { + returnUser.WorkshopName = positionCont.Name + } + + returnUser.PostId = userCont.AdminOrg + var postCont hrsystem.AdministrativeOrganization + postContErr := postCont.GetCont(map[string]interface{}{"`id`": userCont.AdminOrg}, "`name`") + if postContErr == nil { + returnUser.PostName = postCont.Name + } + + // returnUser.Tema = userCont.Tema + // returnUser.TemaName = userCont.TemaName + if userCont.Wechat != "" { + returnUser.Wechat = userCont.Wechat + } + if userCont.WorkWechat != "" { + returnUser.Wechat = userCont.WorkWechat + } + } + return +} diff --git a/gin_server_admin/api/index/evaluation/flowsend.go b/gin_server_admin/api/index/evaluation/flowsend.go index 8a77bd3..9058ced 100644 --- a/gin_server_admin/api/index/evaluation/flowsend.go +++ b/gin_server_admin/api/index/evaluation/flowsend.go @@ -19,7 +19,7 @@ import ( func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData addPlusOrMinusPoints @@ -85,7 +85,7 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { return } if requestData.Rectification == 0 { - requestData.Rectification = 1 + requestData.Rectification = 2 } var correctionTime int64 = 0 if requestData.Rectification == 1 { @@ -208,7 +208,7 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { sendScVal := float64(sendScore) / 100 scoreFloat64ToStringsss := strconv.FormatFloat(sendScVal, 'f', -1, 64) - fmt.Printf("ScoreSetp---2----s->%v----f->%v----fs->%v----si->%v\n", sendScore, float64(sendScore)/100, sendScVal, scoreFloat64ToStringsss) + // fmt.Printf("ScoreSetp---2----s->%v----f->%v----fs->%v----si->%v\n", sendScore, float64(sendScore)/100, sendScVal, scoreFloat64ToStringsss) if requestData.Type == 1 { subtitle = fmt.Sprintf("考核加分:%v\n", scoreFloat64ToStringsss) @@ -234,7 +234,7 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { } } - commonus.StepAddDataEs(keyNumber, 0, 3, 1, 1, 2, 1, userCont.Key, requestData.Enclosure) + // commonus.StepAddDataEs(keyNumber, 0, 3, 1, 1, 2, 1, userCont.Key, requestData.Enclosure) // response.Result(0, addScore, "数据写入成功", c) // return //暂停审核方便录入测试数据 @@ -242,7 +242,7 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { if myIsTrue != 1 { //写入当前流程步骤 // commonus.StepAddData(keyNumber, 0, 3, 1, 1, 2, 1, userCont.Key) //原 - commonus.StepAddDataEs(keyNumber, 0, 3, 1, 1, 2, 1, userCont.Key, requestData.Enclosure) + commonus.StepAddDataEs(keyNumber, 0, 3, 1, 1, 1, 1, userCont.Key, requestData.Enclosure) //申请人也是部门负责人 //给相关部门内勤发送消息。确定相关责任人 sendUserIsTrue, sendUserList := commonus.GetSendMsgUser(16118387069540343, programme.AcceptEvaluation) //获取对应部门内勤 @@ -259,7 +259,7 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { } else { //写入当前流程步骤 // commonus.StepAddData(keyNumber, 16182159043990656, 2, 1, 1, 2, 1, userCont.Key) //原 - commonus.StepAddDataEs(keyNumber, 16182159043990656, 2, 1, 1, 2, 1, userCont.Key, requestData.Enclosure) + commonus.StepAddDataEs(keyNumber, 16182159043990656, 2, 1, 1, 1, 1, userCont.Key, requestData.Enclosure) //申请人不是是部门负责人 给本部门负责人发送审批 //获取发起人部门负责人 departmentIdInts, _ := strconv.ParseInt(userCont.Deparment, 10, 64) @@ -292,7 +292,7 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { func (e *EvaluationInterface) PersonInCharge(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData DivisionResponsibilityTypes @@ -345,7 +345,7 @@ func (e *EvaluationInterface) PersonInCharge(c *gin.Context) { } } //写入审批流程 - commonus.StepAddData(orderId, 0, 4, 3, 1, 2, 3, userCont.Key) + commonus.StepAddData(orderId, 0, 4, 3, 1, 1, 3, userCont.Key) var scoreFlowInfo assessmentmodel.ScoreFlow judegFlowErr := global.GVA_DB_Performanceappraisal.Where("`sf_key` = ?", orderId).First(&scoreFlowInfo).Error @@ -607,7 +607,7 @@ func judgeIsSet(id int64, idAry []int64) (isTrue bool) { func (e *EvaluationInterface) RectificationMeasures(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) @@ -693,7 +693,7 @@ func (e *EvaluationInterface) RectificationMeasures(c *gin.Context) { registerCont.EiteCont(regWhere, saveRegData) //写入流程步骤 // commonus.StepAddData(orderidval, 0, 6, 4, 1, 2, 5, userCont.Key) //原 - commonus.StepAddDataEs(orderidval, 0, 6, 4, 1, 2, 5, userCont.Key, requestData.Enclosure) + commonus.StepAddDataEs(orderidval, 0, 6, 4, 1, 1, 5, userCont.Key, requestData.Enclosure) /* 向本部门负责人发送审批 */ @@ -708,7 +708,7 @@ func (e *EvaluationInterface) RectificationMeasures(c *gin.Context) { } //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(requestData.OrderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(requestData.OrderId) //一级文本处理 var title, desc string if detailedRulesTitle != "" { diff --git a/gin_server_admin/api/index/evaluation/lookquantita.go b/gin_server_admin/api/index/evaluation/lookquantita.go index 6710c38..3959a59 100644 --- a/gin_server_admin/api/index/evaluation/lookquantita.go +++ b/gin_server_admin/api/index/evaluation/lookquantita.go @@ -117,7 +117,7 @@ func (e *EvaluationInterface) LookQuantitativeConfig(c *gin.Context) { func (e *EvaluationInterface) SeeFlowLog(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, userCont, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData FlowLogType @@ -131,10 +131,36 @@ func (e *EvaluationInterface) SeeFlowLog(c *gin.Context) { } offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) - var evalProContList []assessmentmodel.EvaluationProcess - gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationProcess{}).Where("FIND_IN_SET(?,`ep_participants`)", userCont.Key) + // var evalProContList []assessmentmodel.EvaluationProcess + var evalProContList []accPerFlowLog + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationProcess{}) + gormDb = gormDb.Select("evaluation_process.*,sf.sf_duty_department,sf.sf_evaluation_plan,fl.fl_evaluation_id,fl.fl_evaluation_department,qe.qe_dimension,qe.qe_target,qe.qe_detailed_target,dc.title,et.et_title,dt.dt_title") + gormDb = gormDb.Joins(("left join score_flow as sf on sf.sf_key = evaluation_process.ep_order_key")) + gormDb = gormDb.Joins(("left join flow_log as fl on fl.fl_key = evaluation_process.ep_order_key")) + + gormDb = gormDb.Joins(("left join qualitative_evaluation as qe on qe.qe_id = sf.sf_evaluation_plan OR qe.qe_id = fl.fl_evaluation_id")) + gormDb = gormDb.Joins(("left join dutyclass as dc on dc.id = qe.qe_dimension")) + gormDb = gormDb.Joins(("left join evaluationtarget as et on et.et_id = qe.qe_target")) + gormDb = gormDb.Joins(("left join detailed_target as dt on dt.dt_id = qe.qe_detailed_target")) + + if requestData.Title != "" || requestData.Department != "" { + + if requestData.Title != "" { + gormDb = gormDb.Where("dc.title LIKE ? OR et.et_title LIKE ? OR dt.dt_title LIKE ?", "%"+requestData.Title+"%", "%"+requestData.Title+"%", "%"+requestData.Title+"%") + } + if requestData.Department != "" { + gormDb = gormDb.Where("sf.sf_duty_department = ? OR fl.fl_evaluation_department = ?", requestData.Department, requestData.Department) + } + } + gormDb = gormDb.Where("FIND_IN_SET(?,`ep_participants`)", userCont.Key) if requestData.State != 0 { - gormDb = gormDb.Where("ep_state = ?", requestData.State) + gormDb = gormDb.Where("evaluation_process.ep_state = ?", requestData.State) + } else { + gormDb = gormDb.Where("evaluation_process.ep_state IN ?", []int{1, 2, 3}) + } + if requestData.Time != "" { + startTime, endTime := commonus.GetAppointMonthStarAndEndTime(requestData.Time) + gormDb = gormDb.Where("evaluation_process.ep_start_time BETWEEN ? AND ?", startTime, endTime) } /* 获取总共有多少记录 @@ -150,30 +176,98 @@ func (e *EvaluationInterface) SeeFlowLog(c *gin.Context) { response.Result(104, evaErr, "数据获取失败!", c) return } + // response.Result(104, evalProContList, "数据获取失败!", c) + // return var flowLogListOut []FlowLogListOut for _, v := range evalProContList { var flowLogListCont FlowLogListOut orderId := strconv.FormatInt(v.OrderKey, 10) flowLogListCont.OutId = orderId flowLogListCont.Class = v.TypeClass + flowLogListCont.MonthDays = commonus.TimeStampToDate(v.StartTime, 15) if v.TypeClass == 1 { //获取考核项目关联项目 - targettitle, detailedRulesTitle, _, _, scoreFlowCont, dutyTarDetErr := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, _, _, scoreFlowCont, qualEvalInfo, dutyTarDetErr := commonus.GetDutyAssociatedItems(orderId) if dutyTarDetErr == true { - if detailedRulesTitle != "" { - flowLogListCont.Title = fmt.Sprintf("%v", detailedRulesTitle) - } else { - flowLogListCont.Title = fmt.Sprintf("%v", targettitle) - } + addUser, addUserErr := commonus.GetWorkUser(strconv.FormatInt(scoreFlowCont.EvaluationUser, 10)) if addUserErr == true { flowLogListCont.FounDer = addUser.Name } + var departTitleName string + flowLogListCont.Cycles = qualEvalInfo.Cycles + flowLogListCont.CycleAttres = qualEvalInfo.CycleAttres + if qualEvalInfo.AcceptEvaluation != 0 { + whereDepart := commonus.MapOut() + whereDepart["id"] = qualEvalInfo.AcceptEvaluation + orgContDer, orgContDerErr := commonus.GetNewOrgCont(whereDepart, "name") + if orgContDerErr == nil { + if departTitleName == "" { + departTitleName = orgContDer.Name + } else { + departTitleName = fmt.Sprintf("%v、%v", departTitleName, orgContDer.Name) + } + flowLogListCont.ExecutiveDepartment = append(flowLogListCont.ExecutiveDepartment, orgContDer.Name) + } + } + if detailedRulesTitle != "" { + flowLogListCont.Title = fmt.Sprintf("%v %v", departTitleName, detailedRulesTitle) + } else { + flowLogListCont.Title = fmt.Sprintf("%v %v", departTitleName, targettitle) + } + flowLogListCont.Year = scoreFlowCont.Year //`json:"year"` //年分"` + flowLogListCont.Quarter = scoreFlowCont.Quarter //`json:"quarter"` //季度"` + flowLogListCont.Month = scoreFlowCont.Month //`json:"month"` //月"` + flowLogListCont.Week = scoreFlowCont.Week //`json:"week"` //周"` + flowLogListCont.Days = commonus.ComputingTime(scoreFlowCont.HappenTime, 5) //`json:"days"` //天 + } } else { flowLogInfo, flowLogErr := commonus.GetFlowLog(orderId) if flowLogErr == true { - flowLogListCont.Title = fmt.Sprintf("%v-%v-%v数据上报", flowLogInfo.Year, flowLogInfo.Month, flowLogInfo.ToDay) + + flowLogListCont.Year = flowLogInfo.Year //`json:"year"` //年分"` + flowLogListCont.Quarter = flowLogInfo.Quarter //`json:"quarter"` //季度"` + flowLogListCont.Month = flowLogInfo.Month //`json:"month"` //月"` + flowLogListCont.Week = flowLogInfo.Week //`json:"week"` //周"` + flowLogListCont.Days = flowLogInfo.ToDay //`json:"days"` //天 + // fmt.Printf("Title---1-->%v\n", flowLogErr) + var qualEvalInfo assessmentmodel.QualitativeEvaluation + qualEvaTargetErr := qualEvalInfo.GetCont(map[string]interface{}{"qe_id": flowLogInfo.EvaluationPlan}, "qe_target", "qe_cycle", "qe_cycleattr", "qe_accept_evaluation") + // fmt.Printf("Title---2-->%v\n", qualEvaTargetErr) + if qualEvaTargetErr == nil { + flowLogListCont.Cycles = qualEvalInfo.Cycles + flowLogListCont.CycleAttres = qualEvalInfo.CycleAttres + var departTitleName string + if qualEvalInfo.AcceptEvaluation != 0 { + whereDepart := commonus.MapOut() + whereDepart["id"] = qualEvalInfo.AcceptEvaluation + orgContDer, orgContDerErr := commonus.GetNewOrgCont(whereDepart, "name") + if orgContDerErr == nil { + if departTitleName == "" { + departTitleName = orgContDer.Name + } else { + departTitleName = fmt.Sprintf("%v、%v", departTitleName, orgContDer.Name) + } + flowLogListCont.ExecutiveDepartment = append(flowLogListCont.ExecutiveDepartment, orgContDer.Name) + } + } + + var targetInfo assessmentmodel.EvaluationTarget + targetInfoErr := targetInfo.GetCont(map[string]interface{}{"et_id": qualEvalInfo.Target}, "et_title") + // fmt.Printf("Title---3-->%v\n", targetInfoErr) + if targetInfoErr == nil { + flowLogListCont.Title = fmt.Sprintf("%v %v", departTitleName, targetInfo.Title) + // flowLogListCont.Title = fmt.Sprintf("%v %v-%v-%v数据上报", targetInfo.Title, flowLogInfo.Year, flowLogInfo.Month, flowLogInfo.ToDay) + } else { + // flowLogListCont.Title = fmt.Sprintf("%v-%v-%v数据上报", flowLogInfo.Year, flowLogInfo.Month, flowLogInfo.ToDay) + flowLogListCont.Title = fmt.Sprintf("%v", departTitleName) + } + + } else { + flowLogListCont.Title = fmt.Sprintf("%v-%v-%v数据上报", flowLogInfo.Year, flowLogInfo.Month, flowLogInfo.ToDay) + } + addUser, addUserErr := commonus.GetWorkUser(strconv.FormatInt(flowLogInfo.EvaluationUser, 10)) if addUserErr == true { flowLogListCont.FounDer = addUser.Name diff --git a/gin_server_admin/api/index/evaluation/sendwechatmsg.go b/gin_server_admin/api/index/evaluation/sendwechatmsg.go index 86431a2..50ef566 100644 --- a/gin_server_admin/api/index/evaluation/sendwechatmsg.go +++ b/gin_server_admin/api/index/evaluation/sendwechatmsg.go @@ -70,6 +70,7 @@ func UpEvaluationProcessReject(orderKey, roleGroup, keyNumber int64, nextStep in evalProc.State = 1 evalProc.RoleGroup = roleGroup evalProc.Time = time.Now().Unix() + evalProc.StartTime = time.Now().Unix() flowStepJson, flowStepErr := json.Marshal(flowLog) if flowStepErr == nil { evalProc.Content = string(flowStepJson) @@ -151,6 +152,7 @@ func UpEvaluationProcessApproval(orderKey, roleGroup, keyNumber int64, nextStep evalProc.State = 1 evalProc.RoleGroup = roleGroup evalProc.Time = time.Now().Unix() + evalProc.StartTime = time.Now().Unix() flowStepJson, flowStepErr := json.Marshal(flowLog) if flowStepErr == nil { evalProc.Content = string(flowStepJson) diff --git a/gin_server_admin/api/index/evaluation/type.go b/gin_server_admin/api/index/evaluation/type.go index b9b4ecc..435f4d4 100644 --- a/gin_server_admin/api/index/evaluation/type.go +++ b/gin_server_admin/api/index/evaluation/type.go @@ -35,8 +35,11 @@ type TargetContOutCont struct { ZeroPrize string `json:"zeroprize"` //零奖值 AllPrize string `json:"allprize"` //全奖奖值 Reach string `json:"reach"` //达成率 + ReachScore float64 `json:"reachscore"` //达成率 Reason string `json:"reason"` //说明 ScoringMethod int64 `json:"scoringmethod"` + DimensionWeight int64 `json:"dimensionweight"` //权重 + TargetWeight int64 `json:"targetweight"` //权重 } //定性考核列表输出 @@ -201,12 +204,14 @@ type RectifMeasures struct { //定量考核审批输出 type RationOutStruct struct { - Id string `json:"id"` - FlowId string `flowid` - Title string `json:"title"` - Unit string `json:"unit"` //单位"` - Score float64 `json:score` //分数\ - Content string `json:"content"` + Id string `json:"id"` + FlowId string `flowid` + Title string `json:"title"` + Unit string `json:"unit"` //单位"` + Score float64 `json:score` //分数\ + Content string `json:"content"` + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` } //定量考核目标设定查询 @@ -243,19 +248,32 @@ type MainResponsiblePersonType struct { //流程记录 type FlowLogType struct { commonus.PageSetLimt - State int `json:"state"` //状态 + State int `json:"state"` //状态 + Title string `json:"title"` //指标 + Department string `json:"department"` //部门 + Time string `json:"time"` //时间 } //流程记录输出 type FlowLogListOut struct { - OutId string `json:"outid"` //id - Title string `json:"tittle"` //流程名 - Node string `json:"node"` //当前节点 - CurrentPeo string `json:"currentpeo"` //当前负责人 - FounDer string `json:"founder"` //创建人 - Condition string `json:"condition"` //审批状态 - Result string `json:"result"` //审批结果 - Class int `json:"class"` //1、定性;2、定量 + OutId string `json:"outid"` //id + Title string `json:"tittle"` //流程名 + Node string `json:"node"` //当前节点 + CurrentPeo string `json:"currentpeo"` //当前负责人 + FounDer string `json:"founder"` //创建人 + Condition string `json:"condition"` //审批状态 + Result string `json:"result"` //审批结果 + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` + ExecutiveDepartment []string `json:"executivedepartment"` //被考核部门 + Class int `json:"class"` //1、定性;2、定量 + + Year int64 `json:"year"` //年分"` + Quarter int64 `json:"quarter"` //季度"` + Month int64 `json:"month"` //月"` + Week int64 `json:"week"` //周"` + Days int64 `json:"days"` //天 + MonthDays string `json:"monthdays"` //提报日期 } //新定性考核列表 @@ -302,3 +320,46 @@ type NewQualDetailOutList struct { TargetSunId string `json:"targetsunid"` //子栏目ID TargetSunName string `json:"targetsunname"` //子栏目名称 } + +//定量或者定性考核审批流程全图 +type getExamineFlow struct { + Id string `json:"id"` //考核项目ID + IsCorrection int `json:"iscorrection"` //是否整改 +} + +type AddDutyNewCont struct { + Id string `json:"id"` //维度ID + Name string `json:"name"` + // Order int64 `json:"ordering"` + ZhiFraction int `json:"zhiFraction"` + Child []EvaluPross `json:"child"` //考核细则 +} + +//指标 +type EvaluPross struct { + Id string `json:"id"` //维度ID + Name string `json:"name"` + Content string `json:"content"` //指标说明 + Unit string `json:"unit"` //单位"` + ReferenceScore int64 `json:"referencescore"` //标准分值"` + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` + State int `json:"state"` + Score int64 `json:"score"` //分数 + QualEvalId string `json:"qeid"` + Status int `json:"status"` +} + +//审批记录输出 +type accPerFlowLog struct { + assessmentmodel.EvaluationProcess + DutyDepartment int64 `json:"dutydepartment" gorm:"column:sf_duty_department;type:bigint(20) unsigned;default:0;not null;comment:职责部门"` + EvaluationPlanScore int64 `json:"evaluationplanscore" gorm:"column:sf_evaluation_plan;type:bigint(20) unsigned;default:0;not null;comment:考核方案项目ID"` + EvaluationPlanFlow string `json:"evaluationplanflow" gorm:"column:fl_evaluation_id;type:mediumtext unsigned;default:0;not null;comment:考核方案项目ID"` + EvaluationDepartment int64 `json:"evaluationdepartment" gorm:"column:fl_evaluation_department;type:bigint(20) unsigned;default:0;not null;comment:测评部门"` + Dimension int64 `json:"dimension" gorm:"column:qe_dimension;type:bigint(20) unsigned;default:0;not null;comment:考核维度"` + Target int64 `json:"target" gorm:"column:qe_target;type:bigint(20) unsigned;default:0;not null;comment:考核指标"` + DetailedTarget int64 `json:"detailedtarget" gorm:"column:qe_detailed_target;type:bigint(20) unsigned;default:0;not null;comment:考核细则"` + DetailedTitle string `json:"title" gorm:"column:dt_title;type:text;comment:指标细则"` + TargetTitle string `json:"title" gorm:"column:et_title;type:varchar(255);comment:指标名称"` +} diff --git a/gin_server_admin/api/index/statistics/dataform.go b/gin_server_admin/api/index/statistics/dataform.go index d587f79..1926b74 100644 --- a/gin_server_admin/api/index/statistics/dataform.go +++ b/gin_server_admin/api/index/statistics/dataform.go @@ -15,10 +15,10 @@ import ( ) //获取有效版本考核 -func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { +func (a *ApiGroup) GetPlanVersionValides(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData DutyPlanVersio @@ -115,6 +115,7 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { @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 @@ -127,6 +128,9 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { isDuty = 2 } + var stccStatistics ScoreListAry + stccStatistics.Class = isDuty + // panic(departName) if isDuty == 1 { //定性考核 switch cycle { @@ -140,13 +144,50 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { 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) - resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) + resultDatayuan, _, departnameAry := SubjectiveAuxiliaryCalculationSumMethod(wherStr) + resultData := commonus.Decimal(resultDatayuan / 100) if resultData > float64(pcv.ReferenceScore) { resultData = float64(pcv.ReferenceScore) } - outCont.Score = append(outCont.Score, resultData) + 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 { - outCont.Score = append(outCont.Score, 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 = 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: @@ -154,27 +195,99 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { 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) - - resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) + 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) } - outCont.Score = append(outCont.Score, resultData) + 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 { - outCont.Score = append(outCont.Score, 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 = 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) - - resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) + 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) } - outCont.Score = append(outCont.Score, resultData) + 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 { - outCont.Score = append(outCont.Score, 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 = 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) @@ -185,14 +298,50 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { 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) - - resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) + 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) } - outCont.Score = append(outCont.Score, resultData) + 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 { - outCont.Score = append(outCont.Score, 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 = 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) } } } @@ -206,44 +355,168 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { allYearDays = 366 } for i := 1; i <= allYearDays; i++ { - if pcv.Status != 3 { - 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) - resultData := commonus.Decimal(AuxiliaryCalculationSumMethod(wherStr, scoringMethod) / 100) - 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)) - } else { - outCont.Score = append(outCont.Score, resultData) + + 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) + 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 { - outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) + var jiSuanZhi ScoreList + jiSuanZhi.Class = 2 + jiSuanZhi.ScoreVal = resultData + jiSuanZhi.ActualScore = float64(pcv.ReferenceScore) + jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal, jiSuanZhi.Achievement = quantification.GetQuantitativeConfigEs(resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i) + 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) - if pcv.Status != 3 { - resultData := commonus.Decimal(AuxiliaryCalculationSumMethod(wherStr, scoringMethod) / 100) - 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)) - } else { - outCont.Score = append(outCont.Score, resultData) + + 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) + 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 { - outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) + var jiSuanZhi ScoreList + jiSuanZhi.Class = 2 + jiSuanZhi.ScoreVal = resultData + jiSuanZhi.ActualScore = float64(pcv.ReferenceScore) + jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal, jiSuanZhi.Achievement = quantification.GetQuantitativeConfigEs(resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i) + 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: //年 - if pcv.Status != 3 { - 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) - resultData := commonus.Decimal(AuxiliaryCalculationSumMethod(wherStr, scoringMethod) / 100) - 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)) - } else { - outCont.Score = append(outCont.Score, resultData) + + 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) + 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 { - outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) + var jiSuanZhi ScoreList + jiSuanZhi.Class = 2 + jiSuanZhi.ScoreVal = resultData + jiSuanZhi.ActualScore = float64(pcv.ReferenceScore) + jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal, jiSuanZhi.Achievement = quantification.GetQuantitativeConfigEs(resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, 0) + 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) @@ -252,22 +525,64 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { } monthValueInt, _ := strconv.Atoi(monthValue) for i := 1; i <= monthValueInt; i++ { - if pcv.Status != 3 { - 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) - resultData := commonus.Decimal(AuxiliaryCalculationSumMethod(wherStr, scoringMethod) / 100) - 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, i)) - } else { - outCont.Score = append(outCont.Score, resultData) + + 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) + 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 { - outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) + var jiSuanZhi ScoreList + jiSuanZhi.Class = 2 + jiSuanZhi.ScoreVal = resultData + jiSuanZhi.ActualScore = float64(pcv.ReferenceScore) + jiSuanZhi.AllPrize, jiSuanZhi.ZeroPrize, jiSuanZhi.CappingVal, jiSuanZhi.Achievement = quantification.GetQuantitativeConfigEs(resultData, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10), pv.Id, pcv.Id, "0", yserInt, i) + 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) } } @@ -283,7 +598,7 @@ func (a *ApiGroup) GetPlanVersionValid(c *gin.Context) { } //获取总值 定量 -func AuxiliaryCalculationSumMethod(where interface{}, scoringMethod int) (sumScore float64) { +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) @@ -291,18 +606,29 @@ func AuxiliaryCalculationSumMethod(where interface{}, scoringMethod int) (sumSco 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) { +func SubjectiveAuxiliaryCalculationSumMethod(where interface{}) (sumScore float64, departmentAry []int64, departNameAry []string) { //加分 var addSumScore float64 = 0 - global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Select("sf_score").Where(where).Where("sf_plus_reduce_score = 1").Pluck("COALESCE(SUM(sf_score), 0) as addrescore", &addSumScore) + 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 scoreReduction float64 = 0 - global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Select("sf_score").Where(where).Where("sf_plus_reduce_score = 2").Pluck("COALESCE(SUM(sf_score), 0) as redurescore", &scoreReduction) + 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) if addSumScore != 0 && scoreReduction != 0 { if addSumScore > scoreReduction { sumScore = addSumScore - scoreReduction @@ -314,5 +640,20 @@ func SubjectiveAuxiliaryCalculationSumMethod(where interface{}) (sumScore float6 } 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 } + +//获取指标相应的全奖,零奖;封顶值 diff --git a/gin_server_admin/api/index/statistics/enter.go b/gin_server_admin/api/index/statistics/enter.go index 3e0e227..9f2de50 100644 --- a/gin_server_admin/api/index/statistics/enter.go +++ b/gin_server_admin/api/index/statistics/enter.go @@ -1,10 +1,45 @@ package statistics -import "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" +import ( + "sync" + + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" +) //统计 type ApiGroup struct{} +//协程设置 +var syncProcess = sync.WaitGroup{} + +var syncProcessDepartTarget = sync.WaitGroup{} //获取指标相关参数 + +//数据计量统计(表格统计) +type tablePlanVersionStic struct { + TableScore []TableScoreList + mutext sync.RWMutex +} + +//读取锁数据 +func (t *tablePlanVersionStic) readMyDayData() []TableScoreList { + t.mutext.RLock() + defer t.mutext.RUnlock() + return t.TableScore +} + +//数据锁统计 +type dataLockStatistics struct { + outData []TargetContOutCont + mutext sync.RWMutex +} + +//读取锁数据 +func (d *dataLockStatistics) readMyDayData() []TargetContOutCont { + d.mutext.RLock() + defer d.mutext.RUnlock() + return d.outData +} + //考核方案版本列表查询 type DutyPlanVersio struct { Group string `json:"group"` //归属集团 @@ -105,23 +140,52 @@ type EvaluProssCall struct { //考核方案细则列表输出 type TargetContOutCont struct { - Id string `json:"id"` - Type int `json:"type"` - Group string `json:"group"` - GroupName string `json:"groupname"` - DepartmentId string `json:"departmentid"` - DepartmentName string `json:"departmentname"` - Dimension string `json:"dimension"` //维度ID - DimensionName string `json:"dimensionname"` //维度名称 - DimensionWeight int64 `json:"dimensionweight"` //维度权重 - Target string `json:"target"` //指标Id - TargetName string `json:"targetname"` //指标名称 - TargetCont string `json:"targetcont"` //指标描述 - TargetWeight int64 `json:"targetweight"` //指标权重 - Unit string `json:"unit"` //单位"` - ReferenceScore int64 `json:"referencescore"` //标准分值"` - Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` - CycleAttres int `json:"cycleattr"` //辅助计数"` - Score []float64 `json:"score"` //得分 - ExecutiveDepartment []string `json:"executivedepartment"` //执行部门 + Id string `json:"id"` + Type int `json:"type"` + Group string `json:"group"` + GroupName string `json:"groupname"` + DepartmentId string `json:"departmentid"` + DepartmentName string `json:"departmentname"` + Dimension string `json:"dimension"` //维度ID + DimensionName string `json:"dimensionname"` //维度名称 + DimensionWeight int64 `json:"dimensionweight"` //维度权重 + Target string `json:"target"` //指标Id + TargetName string `json:"targetname"` //指标名称 + TargetCont string `json:"targetcont"` //指标描述 + TargetWeight int64 `json:"targetweight"` //指标权重 + Unit string `json:"unit"` //单位"` + ReferenceScore int64 `json:"referencescore"` //标准分值"` + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` + Score []ScoreList `json:"score"` //得分 + ExecutiveDepartment []string `json:"executivedepartment"` //执行部门 + ScoreAllList []ScoreListAry `json:"scorealllist"` + StatisticsName []string `json:"statisticsname"` //执行部门 +} + +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"` //达成率 +} + +type ScoreListAry 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"` //达成率 +} + +//协程表格统计 +type TableScoreList struct { + Counter int `json:"counter"` //计数器 + ScoreList + ExecutiveDepartment []string `json:"executivedepartment"` //执行部门 } diff --git a/gin_server_admin/api/index/statistics/programme.go b/gin_server_admin/api/index/statistics/programme.go index 1dac92c..da3216e 100644 --- a/gin_server_admin/api/index/statistics/programme.go +++ b/gin_server_admin/api/index/statistics/programme.go @@ -12,6 +12,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/hrsystem" "github.com/gin-gonic/gin" ) @@ -61,7 +62,7 @@ func (a *ApiGroup) PlanVersioStatistics(c *gin.Context) { func (a *ApiGroup) DepartPerAppDataStatistics(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData DutyPlanVersio @@ -224,9 +225,12 @@ func StaticDataOperation(key, group, depart, staticFrame, year string) (staticDa resultData := commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr) / 100) - tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0)) + ActualScore, _, _, _, _ := quantification.GetQuantitativeConfig(cv.ReferenceScore, resultData, group, depart, v.Id, cv.Id, "0", yserInt, i) + tarCont.TimeData = append(tarCont.TimeData, ActualScore) + // tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0)) // tarCont.TimeData = append(tarCont.TimeData, commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr)/100)) + } case 2: @@ -242,7 +246,9 @@ func StaticDataOperation(key, group, depart, staticFrame, year string) (staticDa resultData := commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr) / 100) - tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0)) + ActualScore, _, _, _, _ := quantification.GetQuantitativeConfig(cv.ReferenceScore, resultData, group, depart, v.Id, cv.Id, "0", yserInt, i) + tarCont.TimeData = append(tarCont.TimeData, ActualScore) + // tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0)) // tarCont.TimeData = append(tarCont.TimeData, commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr)/100)) } @@ -258,7 +264,9 @@ func StaticDataOperation(key, group, depart, staticFrame, year string) (staticDa resultData := commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr) / 100) - tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, i)) + ActualScore, _, _, _, _ := quantification.GetQuantitativeConfig(cv.ReferenceScore, resultData, group, depart, v.Id, cv.Id, "0", yserInt, i) + tarCont.TimeData = append(tarCont.TimeData, ActualScore) + // tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, i)) // tarCont.TimeData = append(tarCont.TimeData, commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr)/100)) } @@ -268,14 +276,18 @@ func StaticDataOperation(key, group, depart, staticFrame, year string) (staticDa resultData := commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr) / 100) - tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, i)) + ActualScore, _, _, _, _ := quantification.GetQuantitativeConfig(cv.ReferenceScore, resultData, group, depart, v.Id, cv.Id, "0", yserInt, i) + tarCont.TimeData = append(tarCont.TimeData, ActualScore) + // tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, i)) // tarCont.TimeData = append(tarCont.TimeData, commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr)/100)) } default: wherStr := fmt.Sprintf("fld_evaluation_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v ", taskId, year, group, depart) resultData := commonus.Decimal(quantification.AuxiliaryCalculationSum(wherStr) / 100) - tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0)) + ActualScore, _, _, _, _ := quantification.GetQuantitativeConfig(cv.ReferenceScore, resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0) + tarCont.TimeData = append(tarCont.TimeData, ActualScore) + // tarCont.TimeData = append(tarCont.TimeData, quantification.GetQuantitativeConfig(resultData, group, depart, v.Id, cv.Id, "0", yserInt, 0)) } } } @@ -308,17 +320,39 @@ outPut */ func getDepartTarget(key, dimeId, targetId, group, accDepartId string) (qualId int64, departId, departName []string, cycle, cycleattr, isDuty int, err error) { var qualEvalCont assessmentmodel.QualitativeEvaluation - err = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id,qe_department_id,qe_type,qe_cycle,qe_cycleattr").Where("qe_qual_eval_id = ? AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ? AND qe_group = ? AND qe_state = 1", key, dimeId, targetId, accDepartId, group).First(&qualEvalCont).Error + err = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id,qe_department_id,qe_type,qe_cycle,qe_cycleattr,qe_operator").Where("qe_qual_eval_id = ? AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ? AND qe_group = ? AND qe_state = 1", key, dimeId, targetId, accDepartId, group).First(&qualEvalCont).Error departId = strings.Split(qualEvalCont.DepartmentId, ",") - if len(departId) > 0 { - for _, v := range departId { - fmt.Printf("部门Id =====>%v\n", v) - where := commonus.MapOut() - where["id"] = v - orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") - departName = append(departName, orgCont.Name) + // if len(departId) > 0 { + // for _, v := range departId { + // fmt.Printf("部门Id =====>%v\n", v) + // // where := commonus.MapOut() + // // where["id"] = v + // // orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") + // // departName = append(departName, orgCont.Name) + // } + // } + if qualEvalCont.Operator != "" { + zxrId := strings.Split(qualEvalCont.Operator, ",") + var zxbm []string + global.GVA_DB_HrDataBase.Model(&hrsystem.Personnel{}).Select("`deparment`").Where("`key` IN ?", zxrId).Find(&zxbm) + if len(zxbm) > 0 { + var buMenIdAry []string + for _, dv := range zxbm { + zxmbid := strings.Split(dv, ",") + if len(zxmbid) > 0 { + for _, zv := range zxmbid { + if commonus.IsItTrueString(zv, buMenIdAry) == false { + buMenIdAry = append(buMenIdAry, zv) + } + } + } + } + if len(buMenIdAry) > 0 { + global.GVA_DB_HrDataBase.Model(&hrsystem.AdministrativeOrganization{}).Select("`name`").Where("`id` IN ?", buMenIdAry).Find(&departName) + } } } + isDuty = qualEvalCont.Type cycle = qualEvalCont.Cycles cycleattr = qualEvalCont.CycleAttres diff --git a/gin_server_admin/api/index/statistics/tablestatistics.go b/gin_server_admin/api/index/statistics/tablestatistics.go new file mode 100644 index 0000000..014edc5 --- /dev/null +++ b/gin_server_admin/api/index/statistics/tablestatistics.go @@ -0,0 +1,611 @@ +package statistics + +import ( + "encoding/json" + "fmt" + "sort" + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/api/statistics/quantification" + "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" + "github.com/flipped-aurora/gin-vue-admin/server/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 DutyPlanVersio + c.ShouldBindJSON(&requestData) + if requestData.Year == "" { + requestData.Year = commonus.TimeStampToDate(time.Now().Unix(), 11) + } + // fmt.Printf("年---->%v\n", requestData.Year) + 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) + } + if requestData.Group != "" { + gormDb = gormDb.Where("`group` = ? ", requestData.Group) + } + if requestData.DeaprtId != "" { + gormDb = gormDb.Where("`department` = ? ", requestData.DeaprtId) + } + err := gormDb.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) + // 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 DutyPlanVersio) { + 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 + 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 + } + //获取执行部门及指标性质 + taskId, _, 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 { + isDuty = 2 + } + 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_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) + } + 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_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 { + 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_evaluation_id = %v AND `fl_year` = %v AND `fl_duty_group` = %v AND `fl_duty_department` = %v AND `fl_quarter` = %v", taskId, 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) + 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) + + 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++ { + // 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) + } + 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_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) + } + 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{"全奖值", "零奖值", "实际值", "达成率", "得分"} + 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) + } + + // 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) + tableScoreCont.Class = class + tableScoreCont.ScoreVal = resultData + if status != 3 { + tableScoreCont.ActualScore, tableScoreCont.AllPrize, tableScoreCont.ZeroPrize, tableScoreCont.CappingVal, tableScoreCont.Achievement = quantification.GetQuantitativeConfig(referenceScore, resultData, group, department, dimensionId, targetId, "0", yserInt, i) + + t.TableScore = append(t.TableScore, tableScoreCont) + } else { + tableScoreCont.ActualScore = float64(referenceScore) + tableScoreCont.AllPrize, tableScoreCont.ZeroPrize, tableScoreCont.CappingVal, tableScoreCont.Achievement = quantification.GetQuantitativeConfigEs(resultData, group, department, dimensionId, targetId, "0", yserInt, i) + t.TableScore = append(t.TableScore, tableScoreCont) + } + syncProcessDepartTarget.Done() +} + +//定性 +/* +统计分数 +@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 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) + 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 + if status != 3 { + tableScoreCont.ActualScore = resultData + } else { + tableScoreCont.ActualScore = float64(referenceScore) + } + t.TableScore = append(t.TableScore, tableScoreCont) + syncProcessDepartTarget.Done() +} diff --git a/gin_server_admin/api/statistics/nature/statistics.go b/gin_server_admin/api/statistics/nature/statistics.go index cc09c68..7507561 100644 --- a/gin_server_admin/api/statistics/nature/statistics.go +++ b/gin_server_admin/api/statistics/nature/statistics.go @@ -22,7 +22,7 @@ func (a *ApiGroup) Index(c *gin.Context) { func (a *ApiGroup) GetTargetOrgAndYear(c *gin.Context) { isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData getTargetId[string] @@ -204,7 +204,7 @@ func getExistOrg(targetId string) []orgModelsAry { func (a *ApiGroup) NatureStatistics(c *gin.Context) { isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData natureParameter diff --git a/gin_server_admin/api/statistics/quantification/quant.go b/gin_server_admin/api/statistics/quantification/quant.go index 082220d..08b9ca6 100644 --- a/gin_server_admin/api/statistics/quantification/quant.go +++ b/gin_server_admin/api/statistics/quantification/quant.go @@ -16,7 +16,7 @@ import ( func (a *ApiGroup) GetQuantEChartOrgAndYear(c *gin.Context) { isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData getTargetId[string] @@ -159,7 +159,7 @@ func (a *ApiGroup) GetQuantEChartOrgAndYear(c *gin.Context) { func (a *ApiGroup) QuantEChart(c *gin.Context) { isTrue, _ := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData natureParameter @@ -411,6 +411,7 @@ func getGroupOrg(orgAry []string) (orgMap []orgModelsAry, orgWherList []orgModel //获取定量考核目标 /* +@targetScore 指标分值 @resultval 结算值 @group 集团 @depart 部门 @@ -419,8 +420,83 @@ func getGroupOrg(orgAry []string) (orgMap []orgModelsAry, orgWherList []orgModel @deaTarget 细则 @year 年份 @timecopy 辅助计数 + +返回说明 +@scoreVal 计算得分 +@allPrize 全奖值 +@zeroPrize 零奖值 +@CappingVal 封顶值 +@achievement 达成率 +*/ +func GetQuantitativeConfig(targetScore int64, resultval float64, group, depart, dimen, target, deaTarget string, year int64, timecopy int) (scoreVal, allPrize, zeroPrize, CappingVal, achievement float64) { + scoreVal = 0 + allPrize = 0 + zeroPrize = 0 + CappingVal = 0 + achievement = 0 + var qualConfig assessmentmodel.QuantitativeConfig + gormDb := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ?", group, depart, dimen, target, year) + if deaTarget != "0" { + gormDb = gormDb.Where("targetconfig = ?", deaTarget) + } + // if timecopy != 0 { + // gormDb = gormDb.Where("timecopy = ?", timecopy) + // } + gormDb = gormDb.Where("timecopy = ?", timecopy) + err := gormDb.First(&qualConfig).Error + + // fmt.Printf("达成率--0-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement, err) + if err != nil { + return + } + allPrize = qualConfig.Allprize / 100 + zeroPrize = qualConfig.Zeroprize / 100 + CappingVal = qualConfig.CappingVal / 100 + + if qualConfig.CappingVal != 0 && resultval >= qualConfig.CappingVal { + scoreVal = float64(targetScore) + achievement = 100 + // fmt.Printf("达成率--1-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement) + } else { + chuShu := resultval - float64(qualConfig.Zeroprize) + beiChuShu := float64(qualConfig.Allprize) - float64(qualConfig.Zeroprize) + if beiChuShu > 0 { + achievement = commonus.Decimal(chuShu / beiChuShu) + scoreVal = achievement * (resultval / 100) + fmt.Printf("达成率--2-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement, resultval) + } else { + scoreVal = float64(targetScore) + // fmt.Printf("达成率--3-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement) + } + } + // fmt.Printf("达成率--4-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", group, depart, dimen, target, year, allPrize, zeroPrize, CappingVal, achievement) + return +} + +//获取指标计算配置参数 +/* +@targetScore 指标分值 +@resultval 结算值 +@group 集团 +@depart 部门 +@dimen 维度 +@target 指标 +@deaTarget 细则 +@year 年份 +@timecopy 辅助计数 + +返回说明 +@scoreVal 计算得分 +@allPrize 全奖值 +@zeroPrize 零奖值 +@CappingVal 封顶值 +@achievement 达成率 */ -func GetQuantitativeConfig(resultval float64, group, depart, dimen, target, deaTarget string, year int64, timecopy int) float64 { +func GetQuantitativeConfigEs(resultval float64, group, depart, dimen, target, deaTarget string, year int64, timecopy int) (allPrize, zeroPrize, CappingVal, achievement float64) { + allPrize = 0 + zeroPrize = 0 + CappingVal = 0 + achievement = 0 var qualConfig assessmentmodel.QuantitativeConfig gormDb := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ?", group, depart, dimen, target, year) if deaTarget != "0" { @@ -431,12 +507,17 @@ func GetQuantitativeConfig(resultval float64, group, depart, dimen, target, deaT } err := gormDb.First(&qualConfig).Error if err != nil { - return 0 + return } + chuShu := resultval - float64(qualConfig.Zeroprize) beiChuShu := float64(qualConfig.Allprize) - float64(qualConfig.Zeroprize) if beiChuShu > 0 { - return commonus.Decimal(chuShu / beiChuShu) + achievement = commonus.Decimal(chuShu / beiChuShu) } - return 0 + + allPrize = qualConfig.Allprize / 100 + zeroPrize = qualConfig.Zeroprize / 100 + CappingVal = qualConfig.CappingVal / 100 + return } diff --git a/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go b/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go index 8b46fe8..15ea178 100644 --- a/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go +++ b/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go @@ -75,8 +75,10 @@ func (d *DutyHandle) SetEvaluationObjectives(c *gin.Context) { judgeErr := gromDb.Find(&timecopy).Error if judgeErr == nil { - response.Result(121, judgeErr, "已经存在!不要重复添加!", c) - return + if len(timecopy) > 0 { + response.Result(121, judgeErr, "已经存在!不要重复添加!", c) + return + } } var saveData []assessmentmodel.QuantitativeConfig diff --git a/gin_server_admin/api/v1/custom/customhandle.go b/gin_server_admin/api/v1/custom/customhandle.go index 6a3bb65..0c2a64a 100644 --- a/gin_server_admin/api/v1/custom/customhandle.go +++ b/gin_server_admin/api/v1/custom/customhandle.go @@ -522,3 +522,20 @@ func getRole(roleId int64) (roleCont roleModel.SystemRole) { global.GVA_DB_HrDataBase.Where("`id` = ?", roleId).Find(&roleCont) return } + +func (cu *CustomHandle) SignOut(c *gin.Context) { + _, userCont := commonus.ClientIdentity() + var md5JiaMiNumber commonus.Md5Encryption + md5JiaMiNumber.Md5EncryptionInit(userCont.Number) + userKeyCode := md5JiaMiNumber.Md5EncryptionAlgorithm() + redisFileKey := "ScanCode:Authentication:LoginApi_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKeyCode + redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(5) + one := redisClient.DelKey(redisFileKey) + redisFileKeyInfo := fmt.Sprintf("ScanCode:UserInfo:LoginUser_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, userCont.Number) + two := redisClient.DelKey(redisFileKeyInfo) + saveData := commonus.MapOut() + saveData["one"] = one + saveData["two"] = two + response.Result(0, saveData, "退出成功!", c) +} diff --git a/gin_server_admin/api/v1/shiyan/shiyan.go b/gin_server_admin/api/v1/shiyan/shiyan.go index 75dee81..f6e8a66 100644 --- a/gin_server_admin/api/v1/shiyan/shiyan.go +++ b/gin_server_admin/api/v1/shiyan/shiyan.go @@ -18,7 +18,6 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/model/hrsystem" - "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" "github.com/flipped-aurora/gin-vue-admin/server/model/wechat" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" "github.com/gin-gonic/gin" @@ -29,12 +28,13 @@ type ShiyanApi struct { } func (a *ShiyanApi) AddBaseMenu(c *gin.Context) { - var answerMap testpage.Answer - err := global.GVA_DB_Master.First(&answerMap) - if err != nil { + // var answerMap testpage.Answer + // err := global.GVA_DB_Master.First(&answerMap) + // if err != nil { - } - fmt.Printf("%v\n", answerMap) + // } + // fmt.Printf("%v\n", answerMap) + commonus.GetLastMonth() response.Ok(c) } @@ -1289,18 +1289,20 @@ type timeDataType struct { //时间日期实现 func (s *ShiyanApi) DateTime(c *gin.Context) { - var requestData timeDataType - err := c.ShouldBindJSON(&requestData) - if err != nil { - } - if requestData.Time == 0 { - requestData.Time = time.Now().Unix() - } - if requestData.Type == 0 { - requestData.Type = 1 - } - quer := commonus.ComputingTime(requestData.Time, requestData.Type) - response.Result(0, quer, "查询成功", c) + // var requestData timeDataType + // err := c.ShouldBindJSON(&requestData) + // if err != nil { + // } + // if requestData.Time == 0 { + // requestData.Time = time.Now().Unix() + // } + // if requestData.Type == 0 { + // requestData.Type = 1 + // } + // quer := commonus.ComputingTime(requestData.Time, requestData.Type) + + commonus.GetLastMonth() + response.Result(0, 0, "查询成功", c) } //校正权重 diff --git a/gin_server_admin/api/web/jixiaokaohe/myduty.go b/gin_server_admin/api/web/jixiaokaohe/myduty.go index 15c1fee..4e7ca7b 100644 --- a/gin_server_admin/api/web/jixiaokaohe/myduty.go +++ b/gin_server_admin/api/web/jixiaokaohe/myduty.go @@ -20,7 +20,7 @@ func (a *ApiGroup) Index(c *gin.Context) { func (a *ApiGroup) AboutMyTask(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData taskParameterTitle @@ -64,7 +64,7 @@ func (a *ApiGroup) AboutMyTask(c *gin.Context) { func (a *ApiGroup) TaskParameterTitleList(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData taskParameterTitleList diff --git a/gin_server_admin/api/web/jixiaokaohe/people.go b/gin_server_admin/api/web/jixiaokaohe/people.go index 3d192a0..f01a802 100644 --- a/gin_server_admin/api/web/jixiaokaohe/people.go +++ b/gin_server_admin/api/web/jixiaokaohe/people.go @@ -14,7 +14,7 @@ import ( func (a *ApiGroup) MyContent(c *gin.Context) { isTrue, userCont := commonus.ClientIdentity() if isTrue != true { - response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } fmt.Printf("userment----------->%v\n", userCont.Key) diff --git a/gin_server_admin/api/wechatapp/callback/updatehandle.go b/gin_server_admin/api/wechatapp/callback/updatehandle.go index 68a22f6..70c7115 100644 --- a/gin_server_admin/api/wechatapp/callback/updatehandle.go +++ b/gin_server_admin/api/wechatapp/callback/updatehandle.go @@ -131,7 +131,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt switch flowLog[currentSetp].NextStep { case 1: orderIdInt, _ := strconv.ParseInt(orderId, 10, 64) - commonus.StepAddData(orderIdInt, 0, 1, 1, 1, 2, 1, strconv.FormatInt(userContInfo.Key, 10)) + commonus.StepAddData(orderIdInt, 0, 1, 1, 1, 1, 1, strconv.FormatInt(userContInfo.Key, 10)) //发起人 taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) evaluationPlanStr := strconv.FormatInt(scoreFlowInfo.EvaluationPlan, 10) @@ -150,7 +150,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt case 2: //发起人部门负责人 orderIdInt, _ := strconv.ParseInt(orderId, 10, 64) - commonus.StepAddData(orderIdInt, 16182159043990656, 3, 2, 1, 2, 2, strconv.FormatInt(userContInfo.Key, 10)) + commonus.StepAddData(orderIdInt, 16182159043990656, 3, 2, 1, 1, 2, strconv.FormatInt(userContInfo.Key, 10)) //获取发起人部门负责人 sendUserIsTrue, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, userContInfo.DepartmentId) //获取发起人部门负责人 if sendUserIsTrue == true { @@ -271,7 +271,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt fmt.Printf("Setp-------6----------->%v----------->%v\n", sendUserList, personLiable) //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v", unit) //一级文本处理 var title, desc string @@ -317,7 +317,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt sourceDesc := "整改通知" var sendTextMsg sendmessage.TextNoticeTemplateMedium sendTextMsg.SendMsgTextShare(sendUserList, taskId, title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, cardJumpUrl, jumpUrl, jumpUrlTitle, sourceDesc) - commonus.StepAddData(orderIdInt, 16182159043990656, 5, 7, 1, 2, 4, strconv.FormatInt(userContInfo.Key, 10)) + commonus.StepAddData(orderIdInt, 16182159043990656, 5, 7, 1, 1, 4, strconv.FormatInt(userContInfo.Key, 10)) } else { //不需要整改 @@ -332,7 +332,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt } //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v", unit) //一级文本处理 var title, desc string @@ -391,14 +391,14 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt buttonMap = append(buttonMap, buttonCont) var sendTextMsg sendmessage.ButtonNoticeTemplateMedium sendTextMsg.SendButtonShare(sendUser, taskId, "验收", title, desc, subtitle, reason, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, cardJumpUrl, buttonMap) - commonus.StepAddData(orderIdInt, 16182159043990656, 7, 7, 1, 2, 4, strconv.FormatInt(userContInfo.Key, 10)) + commonus.StepAddData(orderIdInt, 16182159043990656, 7, 7, 1, 1, 4, strconv.FormatInt(userContInfo.Key, 10)) } case 5: //主要责任人整改 case 6: //责任部门审批(部门负责人) orderIdInt, _ := strconv.ParseInt(orderId, 10, 64) //流程Key - commonus.StepAddData(orderIdInt, 16182159043990656, 7, 7, 1, 2, 6, strconv.FormatInt(userContInfo.Key, 10)) + commonus.StepAddData(orderIdInt, 16182159043990656, 7, 7, 1, 1, 6, strconv.FormatInt(userContInfo.Key, 10)) sendButtonIsTrue, sendButtonList := commonus.GetSendMsgUserAry(16182159043990656, userContInfo.DepartmentId) //获取发起人部门负责人 if sendButtonIsTrue == true { @@ -415,7 +415,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt sendUser = faQiRen.WorkWechatId } //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v\n", unit) //一级文本处理 var title, desc string @@ -517,7 +517,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v\n", unit) //一级文本处理 var title, desc string @@ -596,7 +596,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt sendUser = faQiRen.WorkWechatId } //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v", unit) //一级文本处理 var title, desc string @@ -658,7 +658,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt //1、获取本部门内勤 _, butCallBackUser := commonus.GetSendMsgUser(16118387069540343, userContInfo.DepartmentId) //获取对应部门内勤(高科) //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v", unit) //一级文本处理 var title, desc string @@ -741,7 +741,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt } sendUserList := strings.Join(personLiable, "|") //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v\n", unit) //一级文本处理 var title, desc string @@ -826,7 +826,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt } sendUserList := strings.Join(personLiable, "|") //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v", unit) //一级文本处理 var title, desc string @@ -893,7 +893,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt //2.3、获取职责部门内勤 _, dutyOffUserList := commonus.GetSendMsgUserAry(16118387069540343, scoreFlowInfo.DutyDepartment) //获取职责部门内勤 //获取考核项目关联项目 - targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) + targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(orderId) fmt.Printf("%v", unit) //一级文本处理 var title, desc string @@ -1253,7 +1253,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter // return } taskId := commonus.GetFileNumberEs() - targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) + targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) title := flowContent.Reason if title == "" { if detailedRulesInfo != "" { @@ -1358,7 +1358,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter } } } - targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) + targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) title := flowContent.Reason if title == "" { if detailedRulesInfo != "" { @@ -1416,7 +1416,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter // response.Result(0, sendUserList, "未指定相关部门处理人!未能向相关人员发送考核项目!请手动发起!", c) // return } - targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) + targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) title := flowContent.Reason if title == "" { if detailedRulesInfo != "" { @@ -1487,7 +1487,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter // response.Result(0, sendUserList, "未指定相关部门处理人!未能向相关人员发送考核项目!请手动发起!", c) // return } - targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) + targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) title := flowContent.Reason if title == "" { if detailedRulesInfo != "" { @@ -1580,7 +1580,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter } } } - targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) + targettitle, detailedRulesTitle, detailedRulesInfo, unitStr, flowContent, _, _ := commonus.GetDutyAssociatedItems(scoreFlowKey) title := flowContent.Reason if title == "" { if detailedRulesInfo != "" { diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index d6c004b..f6ec2fa 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -657,7 +657,7 @@ func ClientIdentity() (isTrue bool, redisUserInfo testpage.RedisUserInfo) { redisUserInfo, isTrue = getPeopleInfo() return } - isTrue = true + isTrue = false return } @@ -1410,11 +1410,20 @@ func GetSendMsgUser(id, departmentId int64) (isTrue bool, userStr string) { //获取企业微信信息接收人数组形态 func GetSendMsgUserAry(id, departmentId int64) (isTrue bool, userStr []string) { isTrue = false - err, departmentCont := GetBranchFactory(departmentId) - if err != true { + // err, departmentCont := GetBranchFactory(departmentId) + // if err != true { + // return + // } + // err, roleGroup, _ := GetOfficeWork(id, int64(departmentCont.WechatId)) + + departWhere := MapOut() + departWhere["id"] = departmentId + departmentCont, errDepart := GetNewOrgCont(departWhere, "wechat_organization_id") + if errDepart != nil { return } - err, roleGroup, _ := GetOfficeWork(id, int64(departmentCont.WechatId)) + err, roleGroup, _ := GetOfficeWork(id, int64(departmentCont.WechatOrganizationId)) + if err != true { return } @@ -1468,7 +1477,7 @@ returnData #detailedRulesTitle 明细 #detailedRulesInfo 明细说明 */ -func GetDutyAssociatedItems(orderId string) (targettitle, detailedRulesTitle, detailedRulesInfo, unit string, flowContent assessmentmodel.ScoreFlow, isTrue bool) { +func GetDutyAssociatedItems(orderId string) (targettitle, detailedRulesTitle, detailedRulesInfo, unit string, flowContent assessmentmodel.ScoreFlow, qualEvalInfo assessmentmodel.QualitativeEvaluation, isTrue bool) { flowContent, isTrue = GetScoreFlow(orderId) if isTrue != true { return @@ -1577,8 +1586,10 @@ func GetWorkUser(key string) (userCont testpage.PersonalDetails, isTrue bool) { } type sendMsg struct { - Title string `json:"title"` - Unit string `json:"unit"` //单位"` + Title string `json:"title"` + Unit string `json:"unit"` //单位"` + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` } //查看定量考核数据 @@ -1588,6 +1599,8 @@ func LookRationInfo(id int64) (cont sendMsg, isTrue bool) { if isTrue == false { return } + cont.Cycles = qeInfo.Cycles + cont.CycleAttres = qeInfo.CycleAttres targetCong, isTrues := GetTargetInfo(qeInfo.Target) if isTrues == false { return @@ -1651,6 +1664,7 @@ func StepAddData(flowID, roleGroupId int64, nextStep, stepName, typeclass, state evalProCont.State = state evalProCont.TypeClass = typeclass evalProCont.Time = time.Now().Unix() + evalProCont.StartTime = time.Now().Unix() evalProCont.RoleGroup = roleGroupId flowStepJson, flowStepErr := json.Marshal(flowStepAryMap) if flowStepErr == nil { @@ -1734,6 +1748,7 @@ func StepAddDataEs(flowID, roleGroupId int64, nextStep, stepName, typeclass, sta evalProCont.State = state evalProCont.TypeClass = typeclass evalProCont.Time = time.Now().Unix() + evalProCont.StartTime = time.Now().Unix() evalProCont.RoleGroup = roleGroupId flowStepJson, flowStepErr := json.Marshal(flowStepAryMap) if flowStepErr == nil { @@ -3472,6 +3487,7 @@ func AddWeight(group, dimension, derpatment, target string, score, class int64) //获取定量考核目标设定 func GetQuantitativeConfig(whereData interface{}) (cont assessmentmodel.QuantitativeConfig) { global.GVA_DB_Performanceappraisal.Where(whereData).First(&cont) + fmt.Printf("TargrtCont------1------>%v\n", cont) return } diff --git a/gin_server_admin/commonus/timeSub.go b/gin_server_admin/commonus/timeSub.go index 24ba010..5167e25 100644 --- a/gin_server_admin/commonus/timeSub.go +++ b/gin_server_admin/commonus/timeSub.go @@ -167,10 +167,16 @@ func TimeStampToDate(timeStamp int64, timeType int) (dateStr string) { datMonthFloat, datMonthFloatErr := strconv.ParseFloat(dayMonth, 10) if datMonthFloatErr == nil { dateStr = strconv.FormatFloat(math.Ceil(datMonthFloat/3), 'f', -1, 64) + + } else { + dateStr = "1" } - dateStr = "1" + // fmt.Printf("dayMonth ---------->%v-----dateStr-->%v---datMonthFloat--->%v---datMonthFloatErr-->%v\n", dayMonth, dateStr, datMonthFloat, datMonthFloatErr) + return case 14: timeTemplate = "20060102" + case 15: + timeTemplate = "01-02" default: timeTemplate = "2006-01-02 15:04:05" //常规类型 } @@ -477,3 +483,29 @@ func AppointTimeFrontMonth(timeVal time.Time, diff int) (startTime, endTime int6 endTime = time.Date(lastMonthEndDay.Year(), lastMonthEndDay.Month(), lastMonthEndDay.Day(), 23, 59, 59, 0, timeVal.Location()).Unix() return } + +//获取上月月份,起止时间 +func GetLastMonth() (yearMonth, startMonth, endMonth string) { + dataTypeAll := "2006-01-02" + dataType := "2006-01" + year, month, _ := time.Now().Date() + thisMonth := time.Date(year, month, 1, 0, 0, 0, 0, time.Local) + startMonth = thisMonth.AddDate(0, -1, 0).Format(dataTypeAll) + endMonth = thisMonth.AddDate(0, 0, -1).Format(dataTypeAll) + yearMonth = thisMonth.AddDate(0, -1, 0).Format(dataType) + // fmt.Printf("year------>%v------year------->%v---thisMonth---->%v---start---->%v---end---->%v---yearMonth---->%v\n", year, month, thisMonth, startMonth, endMonth, yearMonth) + return +} + +//获取指定月的起止时间 +func GetAppointMonthStarAndEndTime(dayTime string) (startTime, endTime int64) { + dataTypeAll := "2006-01-02" + dayTime = fmt.Sprintf("%v-%v", dayTime, "01") + firstToTime := StringToTimeIng("d", dayTime) + startTimeStr := fmt.Sprintf("%v 00:00:00", firstToTime.AddDate(0, 0, 0).Format(dataTypeAll)) + endTimeStr := fmt.Sprintf("%v 23:59:59", firstToTime.AddDate(0, 1, -1).Format(dataTypeAll)) + // startTime = dayTime + startTime, _ = DateToTimeStampEs(startTimeStr) + endTime, _ = DateToTimeStampEs(endTimeStr) + return +} diff --git a/gin_server_admin/middleware/myjwt.go b/gin_server_admin/middleware/myjwt.go index ee40bc3..6feddbd 100644 --- a/gin_server_admin/middleware/myjwt.go +++ b/gin_server_admin/middleware/myjwt.go @@ -214,14 +214,14 @@ func ScanCodeLogin() gin.HandlerFunc { userToken := c.Request.Header.Get("user-token") userAgent := c.Request.Header.Get("User-Agent") - redisFileKey := "ScanCode:Authentication:LoginApi_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKey - if userKey == "" || userToken == "" || userAgent == "" { - response.FailWithDetailed(gin.H{"reload": true, "code": 101}, "未登录或非法访问", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 1001}, "未登录或非法访问", c) c.Abort() return } + redisFileKey := "ScanCode:Authentication:LoginApi_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKey + // userKeyInt, userKeyIntErr := strconv.ParseInt(userKey, 10, 64) // if userKeyIntErr != nil { // response.FailWithDetailed(gin.H{"reload": true, "code": 2, "userKey": userKey}, "未登录或非法访问", c) @@ -237,13 +237,13 @@ func ScanCodeLogin() gin.HandlerFunc { var myCustomIdentify commonus.ScanCodeLogin if isTrues != true { - response.FailWithDetailed(gin.H{"reload": true, "code": 102, "key": redisFileKey, "tokenInfo": tokenInfo, "redisClient": redisClient}, "您的帐户异地登陆或令牌失效", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 1002, "key": redisFileKey, "tokenInfo": tokenInfo, "redisClient": redisClient}, "您的帐户异地登陆或令牌失效", c) c.Abort() return } else { tokenErr := mapstructure.Decode(tokenInfo, &myCustomIdentify) if tokenErr != nil { - response.FailWithDetailed(gin.H{"reload": true, "code": 103, "tokenErr": tokenErr}, "您的令牌失效", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 1003, "tokenErr": tokenErr}, "您的令牌失效", c) c.Abort() return } diff --git a/gin_server_admin/model/assessmentmodel/performance_appraisal.go b/gin_server_admin/model/assessmentmodel/performance_appraisal.go index fc1545a..4be6960 100644 --- a/gin_server_admin/model/assessmentmodel/performance_appraisal.go +++ b/gin_server_admin/model/assessmentmodel/performance_appraisal.go @@ -73,6 +73,7 @@ type EvaluationProcess struct { RoleGroup int64 `json:"rolegroup" gorm:"column:ep_role_group;type:bigint(20) unsigned;default:0;not null;comment:角色组"` TypeClass int `json:"type" gorm:"column:ep_type;type:tinyint(1) unsigned;default:1;not null;comment:1、定性;2、定量"` Participants string `json:"participants" gorm:"column:ep_participants;type:mediumtext;comment:参与人"` + StartTime int64 `json:"starttime" gorm:"column:ep_start_time;type:bigint(20) unsigned;default:0;not null;comment:流程开始时间"` } func (EvaluationProcess *EvaluationProcess) TableName() string { diff --git a/gin_server_admin/router/assessment/assessmentrouter.go b/gin_server_admin/router/assessment/assessmentrouter.go index a76f011..84938ee 100644 --- a/gin_server_admin/router/assessment/assessmentrouter.go +++ b/gin_server_admin/router/assessment/assessmentrouter.go @@ -208,5 +208,7 @@ func (s *AssessmentRouter) InitEvaluationRouter(Router *gin.RouterGroup) { //考核新接口 dutyIndexCodeRouter.POST("newqualitative", authorityIndexApi.NewQualitative) // 新定性考核列表 dutyIndexCodeRouter.POST("newgetqualdetailedtarget", authorityIndexApi.NewGetQualDetailedTarget) //获取新定性考核详细指标 + + dutyIndexCodeRouter.POST("examineflow", authorityIndexApi.ExamineFlow) // 流程图 } } diff --git a/gin_server_admin/router/system/sys_base.go b/gin_server_admin/router/system/sys_base.go index e43fa10..4996207 100644 --- a/gin_server_admin/router/system/sys_base.go +++ b/gin_server_admin/router/system/sys_base.go @@ -22,6 +22,9 @@ func (s *BaseRouter) InitBaseRouter(Router *gin.RouterGroup) (R gin.IRoutes) { //Oauth2.0 baseRouter.POST("oauth2", customApi.OauthTwo) baseRouter.POST("singlesignon", customApi.SingleSignOn) //单点登录 + + //退出 + baseRouter.POST("signout", customApi.SignOut) //单点登录 } return baseRouter } diff --git a/gin_server_admin/router/systemadmin/dutyassess.go b/gin_server_admin/router/systemadmin/dutyassess.go index 5d783f5..043700b 100644 --- a/gin_server_admin/router/systemadmin/dutyassess.go +++ b/gin_server_admin/router/systemadmin/dutyassess.go @@ -19,6 +19,8 @@ func (a *AdminRouter) InitStaffRouter(Router *gin.RouterGroup) { adminRouter.POST("getdepartevaluate", authorityApi.GetDepartEvaluate) //获取部门考核列表 adminRouter.POST("getdepartmentassesslist", authorityApi.GetDepartmentAssessList) //获取考核列表 adminRouter.POST("lookquantitativeconfig", authorityApi.LookQuantitativeConfig) // 查看定量考核目标设定 + adminRouter.POST("eitequantitativeconfig", authorityApi.EiteQuantitativeConfig) // 编辑定量考核目标设定 + adminRouter.POST("delquantitativeconfig", authorityApi.DelQuantitativeConfig) // 删除定量考核目标设定 adminRouter.POST("selectdutylist", authorityApi.SelectDutyList) //获取定性考核列表用于下拉列表 adminRouter.POST("dutydepartmentlist", authorityApi.DutyDepartmentList) //获取定性考核列表用于列表展示 diff --git a/gin_server_admin/utils/redishandel/myredis.go b/gin_server_admin/utils/redishandel/myredis.go index 2fce764..a00b833 100644 --- a/gin_server_admin/utils/redishandel/myredis.go +++ b/gin_server_admin/utils/redishandel/myredis.go @@ -76,6 +76,15 @@ func (r *RedisStoreType) Get(key string) (bool, string) { return true, err.Val() } +//删除键 +func (r *RedisStoreType) DelKey(key string) bool { + err := r.RedisDb.Del(r.Context, r.PreKey+key).Err() + if err != nil { + return false + } + return true +} + //哈希操作 /* 获取单个哈希键值