23 changed files with 1142 additions and 121 deletions
@ -0,0 +1,318 @@ |
|||||
|
package statistics |
||||
|
|
||||
|
import ( |
||||
|
"encoding/json" |
||||
|
"fmt" |
||||
|
"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(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) |
||||
|
return |
||||
|
} |
||||
|
var requestData DutyPlanVersio |
||||
|
c.ShouldBindJSON(&requestData) |
||||
|
if requestData.Year == "" { |
||||
|
requestData.Year = commonus.TimeStampToDate(time.Now().Unix(), 11) |
||||
|
} |
||||
|
var planVersioCont []assessmentmodel.PlanVersio |
||||
|
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Where("`state` = 1") |
||||
|
switch userCont.IsAdmin { |
||||
|
case "2": |
||||
|
if requestData.DeaprtId != "" { |
||||
|
gormDb = gormDb.Where("`department` = ? ", userCont.Deparment) |
||||
|
} |
||||
|
gormDb = gormDb.Where("`group` = ? ", userCont.Company) |
||||
|
case "3": |
||||
|
if requestData.Group != "" { |
||||
|
gormDb = gormDb.Where("`group` = ? ", requestData.Group) |
||||
|
} |
||||
|
if requestData.DeaprtId != "" { |
||||
|
gormDb = gormDb.Where("`department` = ? ", requestData.DeaprtId) |
||||
|
} |
||||
|
case "4": |
||||
|
if requestData.Group != "" { |
||||
|
gormDb = gormDb.Where("`group` = ? ", requestData.Group) |
||||
|
} |
||||
|
if requestData.DeaprtId != "" { |
||||
|
gormDb = gormDb.Where("`department` = ? ", requestData.DeaprtId) |
||||
|
} |
||||
|
default: |
||||
|
// gormDb = gormDb.Where("`group` = ? AND `department` = ?", userCont.Company, userCont.Deparment)
|
||||
|
} |
||||
|
err := gormDb.Find(&planVersioCont).Error |
||||
|
if err != nil { |
||||
|
response.Result(102, err, "没有查询到数据", c) |
||||
|
return |
||||
|
} |
||||
|
yserInt, _ := strconv.ParseInt(requestData.Year, 10, 64) |
||||
|
var outData []TargetContOutCont |
||||
|
for _, v := range planVersioCont { //版本列表
|
||||
|
|
||||
|
if v.Content != "" { |
||||
|
var planInfo []AddDutyNewCont |
||||
|
jsonErr := json.Unmarshal([]byte(v.Content), &planInfo) |
||||
|
if jsonErr == nil { |
||||
|
for _, pv := range planInfo { //维度列表
|
||||
|
|
||||
|
for _, pcv := range pv.Child { //指标列表
|
||||
|
if pcv.Status != 2 { |
||||
|
var outCont TargetContOutCont |
||||
|
outCont.Id = strconv.FormatInt(v.Id, 10) |
||||
|
//集团信息
|
||||
|
outCont.Group = strconv.FormatInt(v.Group, 10) |
||||
|
where := commonus.MapOut() |
||||
|
where["id"] = v.Group |
||||
|
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") |
||||
|
outCont.GroupName = orgCont.Name |
||||
|
//接受考核部门
|
||||
|
outCont.DepartmentId = strconv.FormatInt(v.Department, 10) |
||||
|
whereDepart := commonus.MapOut() |
||||
|
whereDepart["id"] = v.Department |
||||
|
orgContDer, _ := commonus.GetNewOrgCont(whereDepart, "id", "name") |
||||
|
outCont.DepartmentName = orgContDer.Name |
||||
|
//维度信息
|
||||
|
outCont.Dimension = pv.Id |
||||
|
outCont.DimensionName = pv.Name |
||||
|
outCont.DimensionWeight = int64(pv.ZhiFraction) |
||||
|
//指标信息
|
||||
|
outCont.Target = pcv.Id |
||||
|
outCont.TargetName = pcv.Name |
||||
|
outCont.TargetCont = pcv.Content |
||||
|
outCont.TargetWeight = pcv.ReferenceScore |
||||
|
outCont.Unit = pcv.Unit |
||||
|
//获取指标内容
|
||||
|
var evalTargerCont assessmentmodel.EvaluationTarget |
||||
|
evalErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Select("et_type,et_scoring_method").Where("`et_id` = ?", pcv.Id).First(&evalTargerCont).Error |
||||
|
scoringMethod := 1 |
||||
|
if evalErr == nil { |
||||
|
outCont.Type = evalTargerCont.Type |
||||
|
scoringMethod = evalTargerCont.ScoringMethod |
||||
|
} |
||||
|
/* |
||||
|
@key 方案版本号 |
||||
|
@dimeId 维度 |
||||
|
@targetId 指标 |
||||
|
@accDepartId 接收考核的部门 |
||||
|
|
||||
|
outPut |
||||
|
|
||||
|
@qualId //方案ID
|
||||
|
@departId 执行部门ID |
||||
|
@departName 执行部门名称 |
||||
|
@cycle 1:班;2:天;3:周;4:月;5:季度;6:年 |
||||
|
@cycleattr 辅助计数 |
||||
|
@isDuty 1:定性考核;2:定量考核 |
||||
|
*/ |
||||
|
taskId, _, departName, cycle, cycleattr, isDuty, isDutyErr := getDepartTarget(v.Key, pv.Id, pcv.Id, strconv.FormatInt(v.Group, 10), strconv.FormatInt(v.Department, 10)) |
||||
|
if isDutyErr == nil { |
||||
|
outCont.ExecutiveDepartment = departName |
||||
|
outCont.Cycles = cycle |
||||
|
outCont.CycleAttres = cycleattr |
||||
|
if isDuty != 0 { |
||||
|
outCont.Type = isDuty |
||||
|
} |
||||
|
} else { |
||||
|
isDuty = 2 |
||||
|
} |
||||
|
|
||||
|
if isDuty == 1 { |
||||
|
//定性考核
|
||||
|
switch cycle { |
||||
|
case 1: |
||||
|
case 2: //天
|
||||
|
allYearDays := 365 |
||||
|
if commonus.IsLeapYear(yserInt) == true { |
||||
|
allYearDays = 366 |
||||
|
} |
||||
|
for i := 1; i <= allYearDays; i++ { |
||||
|
if pcv.Status != 3 { |
||||
|
wherStr := fmt.Sprintf("`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_week` = %v", taskId, v.Group, v.Department, yserInt, i) |
||||
|
|
||||
|
resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) |
||||
|
if resultData > float64(pcv.ReferenceScore) { |
||||
|
resultData = float64(pcv.ReferenceScore) |
||||
|
} |
||||
|
outCont.Score = append(outCont.Score, resultData) |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
} |
||||
|
case 3: |
||||
|
case 5: //季度
|
||||
|
for i := 1; i <= 4; i++ { |
||||
|
if pcv.Status != 3 { |
||||
|
wherStr := fmt.Sprintf("`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_quarter` = %v", taskId, v.Group, v.Department, yserInt, i) |
||||
|
|
||||
|
resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) |
||||
|
if resultData > float64(pcv.ReferenceScore) { |
||||
|
resultData = float64(pcv.ReferenceScore) |
||||
|
} |
||||
|
outCont.Score = append(outCont.Score, resultData) |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
} |
||||
|
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) |
||||
|
if resultData > float64(pcv.ReferenceScore) { |
||||
|
resultData = float64(pcv.ReferenceScore) |
||||
|
} |
||||
|
outCont.Score = append(outCont.Score, resultData) |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
default: //月
|
||||
|
monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) |
||||
|
if commonus.TimeStampToDate(time.Now().Unix(), 11) != requestData.Year { |
||||
|
monthValue = "12" |
||||
|
} |
||||
|
monthValueInt, _ := strconv.Atoi(monthValue) |
||||
|
for i := 1; i <= monthValueInt; i++ { |
||||
|
if pcv.Status != 3 { |
||||
|
wherStr := fmt.Sprintf("`sf_evaluation_plan` = %v AND `sf_duty_group` = %v AND `sf_duty_department` = %v AND `sf_year` = %v AND `sf_month` = %v", taskId, v.Group, v.Department, yserInt, i) |
||||
|
|
||||
|
resultData := commonus.Decimal(SubjectiveAuxiliaryCalculationSumMethod(wherStr) / 100) |
||||
|
if resultData > float64(pcv.ReferenceScore) { |
||||
|
resultData = float64(pcv.ReferenceScore) |
||||
|
} |
||||
|
outCont.Score = append(outCont.Score, resultData) |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
//定量考核
|
||||
|
switch cycle { |
||||
|
case 1: |
||||
|
case 2: //天
|
||||
|
allYearDays := 365 |
||||
|
if commonus.IsLeapYear(yserInt) == true { |
||||
|
allYearDays = 366 |
||||
|
} |
||||
|
for i := 1; i <= allYearDays; i++ { |
||||
|
if pcv.Status != 3 { |
||||
|
wherStr := fmt.Sprintf("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) |
||||
|
} |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
} |
||||
|
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) |
||||
|
} |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
} |
||||
|
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) |
||||
|
} |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
default: //月
|
||||
|
monthValue := commonus.TimeStampToDate(time.Now().Unix(), 12) |
||||
|
if commonus.TimeStampToDate(time.Now().Unix(), 11) != requestData.Year { |
||||
|
monthValue = "12" |
||||
|
} |
||||
|
monthValueInt, _ := strconv.Atoi(monthValue) |
||||
|
for i := 1; i <= monthValueInt; i++ { |
||||
|
if pcv.Status != 3 { |
||||
|
wherStr := fmt.Sprintf("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) |
||||
|
} |
||||
|
} else { |
||||
|
outCont.Score = append(outCont.Score, float64(pcv.ReferenceScore)) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
outData = append(outData, outCont) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
response.Result(0, outData, "获取成功", c) |
||||
|
} |
||||
|
|
||||
|
//获取总值 定量
|
||||
|
func AuxiliaryCalculationSumMethod(where interface{}, scoringMethod int) (sumScore float64) { |
||||
|
if scoringMethod == 2 { |
||||
|
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Joins("left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log").Where(where) |
||||
|
gormDb.Pluck("COALESCE(SUM(fld_scoring_score), 0) as rescore", &sumScore) |
||||
|
} else { |
||||
|
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Joins("left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log").Where(where) |
||||
|
gormDb.Pluck("COALESCE(SUM(fld_score), 0) as rescore", &sumScore) |
||||
|
} |
||||
|
|
||||
|
return |
||||
|
} |
||||
|
|
||||
|
//定性
|
||||
|
func SubjectiveAuxiliaryCalculationSumMethod(where interface{}) (sumScore float64) { |
||||
|
//加分
|
||||
|
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) |
||||
|
//加分
|
||||
|
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) |
||||
|
if addSumScore != 0 && scoreReduction != 0 { |
||||
|
if addSumScore > scoreReduction { |
||||
|
sumScore = addSumScore - scoreReduction |
||||
|
} else { |
||||
|
sumScore = scoreReduction - addSumScore |
||||
|
} |
||||
|
} else if addSumScore != 0 { |
||||
|
sumScore = addSumScore |
||||
|
} else { |
||||
|
sumScore = scoreReduction |
||||
|
} |
||||
|
return |
||||
|
} |
||||
@ -0,0 +1,74 @@ |
|||||
|
package quantification |
||||
|
|
||||
|
import ( |
||||
|
"encoding/json" |
||||
|
"fmt" |
||||
|
|
||||
|
"github.com/flipped-aurora/gin-vue-admin/server/commonus" |
||||
|
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" |
||||
|
) |
||||
|
|
||||
|
//行政维度统计计算
|
||||
|
/* |
||||
|
@taskId 执行中的考核方案ID |
||||
|
@dataAry 接收的界定参数 |
||||
|
*/ |
||||
|
func OrgDimensionStatistics(taskId string, dataAry natureParameter) (outputData GraphicStatistics, outErr bool) { |
||||
|
//当同时查询多个指标时启用 获取指标名称
|
||||
|
outErr = true |
||||
|
var normName string = "" |
||||
|
if len(dataAry.TargetId) > 1 { |
||||
|
//当同时查询多个指标时启用 获取指标名称
|
||||
|
var qualEvalCont assessmentmodel.QualitativeEvaluation |
||||
|
qualEvaWhe := commonus.MapOut() |
||||
|
qualEvaWhe["qe_id"] = taskId |
||||
|
qualEvalCont.GetCont(qualEvaWhe, "qe_target") |
||||
|
taskCont, taskErr := commonus.GetTargetInfo(qualEvalCont.Target) |
||||
|
if taskErr == true { |
||||
|
normName = taskCont.Title |
||||
|
outErr = taskErr |
||||
|
} else { |
||||
|
// outErr = error.Error("此考核项目没有数据!")
|
||||
|
outErr = taskErr |
||||
|
return |
||||
|
} |
||||
|
} |
||||
|
//获取时间参数
|
||||
|
timeFrame := EstimatedTime(dataAry) |
||||
|
//获取组织架构参数
|
||||
|
orgAry, orgList := getGroupOrg(dataAry.Org) |
||||
|
//统计方式
|
||||
|
statisticalMethod := 3 |
||||
|
if len(dataAry.AccMethod) == 1 { |
||||
|
if commonus.IsItTrueInt(1, dataAry.AccMethod) == true { |
||||
|
statisticalMethod = 1 |
||||
|
} else { |
||||
|
statisticalMethod = 2 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
for _, v := range orgList { |
||||
|
if commonus.IsItTrueString(v.Name, outputData.XLine) == false { |
||||
|
outputData.XLine = append(outputData.XLine, v.Name) |
||||
|
for _, tv := range timeFrame { //在部门维度下进行时间跨度计算
|
||||
|
switch tv.Class { |
||||
|
case 1: //半年
|
||||
|
case 2: //季度
|
||||
|
case 3: //月
|
||||
|
default: //全年
|
||||
|
// wherStr := fmt.Sprintf("fld_evaluation_id = %v AND `fl_year` = %v", taskId, tv.YearName)
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
outErr = true |
||||
|
|
||||
|
fmt.Printf("orgAry====>%v\n", orgAry) |
||||
|
jn, je := json.Marshal(orgList) |
||||
|
fmt.Printf("orgList-====>%v-====>%v\n", string(jn), je) |
||||
|
fmt.Printf("timeFrame-====>%v\n", timeFrame) |
||||
|
fmt.Printf("normName-====>%v\n", normName) |
||||
|
fmt.Printf("statisticalMethod-====>%v\n", statisticalMethod) |
||||
|
|
||||
|
return |
||||
|
} |
||||
Loading…
Reference in new issue