绩效考核
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

346 lines
12 KiB

3 years ago
package quantification
import (
"encoding/json"
"strconv"
3 years ago
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
3 years ago
)
//计算数值用的
/*
计算定性数值
*/
//获取定性总值
func AuxiliaryCalculationSumNature(where interface{}) (sumScore float64) {
var addSumScore float64 = 0
//加分
var jiaFenAry []TongjiFenShu
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score,sf_count").Where(where).Where("sf_plus_reduce_score = 1").Where("sf_reply IN (2,3)").Find(&jiaFenAry)
for _, jiav := range jiaFenAry {
addSumScore = addSumScore + (jiav.Score * jiav.Count)
}
//减分
var scoreReduction float64 = 0
var jianFenAry []TongjiFenShu
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_score,sf_count").Where(where).Where("sf_plus_reduce_score = 2").Where("sf_reply IN (2,3)").Find(&jianFenAry)
for _, jianv := range jianFenAry {
scoreReduction = scoreReduction + (jianv.Score * jianv.Count)
}
// if addSumScore > scoreReduction {
// sumScore = addSumScore - scoreReduction
// } else {
// sumScore = scoreReduction - addSumScore
// }
sumScore = addSumScore - scoreReduction
return
// return sumScore * -1
}
3 years ago
// 获取定性总数
3 years ago
func AuxiliaryCalculationCountNature(where interface{}) (sumScore float64) {
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Where(where).Where("sf_reply IN (2,3)")
gormDb.Pluck("COALESCE(COUNT(sf_id), 0) as countid", &sumScore) //获取总数
return
}
3 years ago
// 计算总值和平均值
3 years ago
func AverageOfSumNature(where interface{}, class ...int) (sumScore float64, averageScore float64) {
sumScore = AuxiliaryCalculationSumNature(where) / 100
// panic(sumScore)
if len(class) > 0 {
countPage := AuxiliaryCalculationCountNature(where)
if countPage > 0 {
averageScore = sumScore / countPage
}
}
if sumScore != 0 {
sumScore = commonus.Decimal(sumScore)
}
if averageScore != 0 {
averageScore = commonus.Decimal(averageScore)
}
return
}
3 years ago
// 统计查询条件
3 years ago
func (d *dataLockStatistics) StatisticalQueryCriteria(qualId int64) {
d.mutext.Lock()
defer d.mutext.Unlock()
var flKey []int64
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Distinct("fld_flow_log").Select("fld_flow_log").Where("fld_target_id = ?", qualId).Find(&flKey)
if len(flKey) > 0 {
var flowLogList []assessmentmodel.FlowLog
// floLogErr := global.GVA_DB_Performanceappraisal.Where("FIND_IN_SET(?,`fl_evaluation_id`)", qualId).Find(&flowLogList).Error
floLogErr := global.GVA_DB_Performanceappraisal.Where("fl_key IN ?", flKey).Find(&flowLogList).Error
if floLogErr == nil {
for _, fv := range flowLogList {
// fvDepartId := strconv.FormatInt(fv.DutyDepartment, 10)
// if commonus.IsItTrueString(fvDepartId, d.accDepart) == false {
// d.accDepart = append(d.accDepart, fvDepartId)
// }
yearStr := strconv.FormatInt(int64(fv.Year), 10)
if commonus.IsItTrueString(yearStr, d.YearTime) == false {
d.YearTime = append(d.YearTime, yearStr)
}
//判断组织架构是否有数据
if len(d.OrgMap) > 0 {
for oi, ov := range d.OrgMap {
//判断公司是否已经存在
if ov.Id == strconv.FormatInt(fv.DutyGroup, 10) {
//判断是否有分厂数据
if len(ov.Child) > 0 {
isYes := true
for _, dv := range ov.Child {
if dv.Id == strconv.FormatInt(fv.DutyDepartment, 10) {
isYes = false //该部门分厂已经存在
}
}
if isYes == true {
//该部门分厂不存在是添加
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
d.OrgMap[oi].Child = append(d.OrgMap[oi].Child, orgDepartMapCont)
}
}
} else {
//没有分厂数据,根据上级数据进行新增
if fv.DutyDepartment != 0 {
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
d.OrgMap[oi].Child = append(d.OrgMap[oi].Child, orgDepartMapCont)
}
}
}
} else {
if fv.DutyGroup != 0 {
//写入集团信息
where := commonus.MapOut()
where["id"] = fv.DutyGroup
orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name")
if orgGroupErr == nil {
var orgMapCont orgModelsAry
orgMapCont.Id = strconv.FormatInt(fv.DutyGroup, 10)
orgMapCont.Name = orgGroupCont.Name
if fv.DutyDepartment != 0 {
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
orgMapCont.Child = append(orgMapCont.Child, orgDepartMapCont)
}
}
d.OrgMap = append(d.OrgMap, orgMapCont)
}
}
}
}
} else {
//没有数据的时候根据数值进行新增
if fv.DutyGroup != 0 {
//写入集团信息
where := commonus.MapOut()
where["id"] = fv.DutyGroup
orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name")
if orgGroupErr == nil {
var orgMapCont orgModelsAry
orgMapCont.Id = strconv.FormatInt(fv.DutyGroup, 10)
orgMapCont.Name = orgGroupCont.Name
if fv.DutyDepartment != 0 {
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
orgMapCont.Child = append(orgMapCont.Child, orgDepartMapCont)
}
}
d.OrgMap = append(d.OrgMap, orgMapCont)
}
}
}
}
}
}
synergeticProcess.Done()
}
func (d *dataLockStatistics) StatisticalQueryCriteriaXin(qualId int64) {
d.mutext.Lock()
defer d.mutext.Unlock()
// fmt.Printf("%v----------1--3--------%v\n", qualId, qualId)
var flowLogList []assessmentmodel.ScoreFlow
// floLogErr := global.GVA_DB_Performanceappraisal.Where("sf_evaluation_plan = ?", qualId).Find(&flowLogList).Error
floLogErr := global.GVA_DB_Performanceappraisal.Where("sf_target_id = ?", qualId).Find(&flowLogList).Error
if floLogErr == nil {
for _, fv := range flowLogList {
// fvDepartId := strconv.FormatInt(fv.DutyDepartment, 10)
// if commonus.IsItTrueString(fvDepartId, d.accDepart) == false {
// d.accDepart = append(d.accDepart, fvDepartId)
// }
yearStr := strconv.FormatInt(int64(fv.Year), 10)
if commonus.IsItTrueString(yearStr, d.YearTime) == false {
d.YearTime = append(d.YearTime, yearStr)
}
//判断组织架构是否有数据
if len(d.OrgMap) > 0 {
for oi, ov := range d.OrgMap {
//判断公司是否已经存在
if ov.Id == strconv.FormatInt(fv.DutyGroup, 10) {
//判断是否有分厂数据
if len(ov.Child) > 0 {
isYes := true
for _, dv := range ov.Child {
if dv.Id == strconv.FormatInt(fv.DutyDepartment, 10) {
isYes = false //该部门分厂已经存在
}
}
if isYes == true {
//该部门分厂不存在是添加
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
d.OrgMap[oi].Child = append(d.OrgMap[oi].Child, orgDepartMapCont)
}
}
} else {
//没有分厂数据,根据上级数据进行新增
if fv.DutyDepartment != 0 {
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
d.OrgMap[oi].Child = append(d.OrgMap[oi].Child, orgDepartMapCont)
}
}
}
} else {
if fv.DutyGroup != 0 {
//写入集团信息
where := commonus.MapOut()
where["id"] = fv.DutyGroup
orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name")
if orgGroupErr == nil {
var orgMapCont orgModelsAry
orgMapCont.Id = strconv.FormatInt(fv.DutyGroup, 10)
orgMapCont.Name = orgGroupCont.Name
if fv.DutyDepartment != 0 {
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
orgMapCont.Child = append(orgMapCont.Child, orgDepartMapCont)
}
}
d.OrgMap = append(d.OrgMap, orgMapCont)
}
}
}
}
} else {
//没有数据的时候根据数值进行新增
if fv.DutyGroup != 0 {
//写入集团信息
where := commonus.MapOut()
where["id"] = fv.DutyGroup
orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name")
if orgGroupErr == nil {
var orgMapCont orgModelsAry
orgMapCont.Id = strconv.FormatInt(fv.DutyGroup, 10)
orgMapCont.Name = orgGroupCont.Name
if fv.DutyDepartment != 0 {
//写入部门
whereDepart := commonus.MapOut()
whereDepart["id"] = fv.DutyDepartment
orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name")
if orgDepartErr == nil {
var orgDepartMapCont orgModels
orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10)
orgDepartMapCont.Name = orgDepartCont.Name
orgMapCont.Child = append(orgMapCont.Child, orgDepartMapCont)
}
}
d.OrgMap = append(d.OrgMap, orgMapCont)
}
}
}
}
}
synergeticProcess.Done()
}
//获取指标参考值
/*
@dimensionId 维度
@targetId 指标
@departmentId 部门
*/
func GetTargetReferenceValue(dimensionId, targetId, departmentId string) (standardValue float64) {
var planVersion assessmentmodel.PlanVersio
err := global.GVA_DB_Performanceappraisal.Where("state = 1 AND department = ?").First(&planVersion).Error
if err != nil {
return
}
var planVersioInfo []AddDutyNewCont
jsonErr := json.Unmarshal([]byte(planVersion.Content), &planVersioInfo)
if jsonErr != nil {
return
}
for _, v := range planVersioInfo {
if v.Id == dimensionId {
for _, cv := range v.Child {
if cv.Id == targetId {
standardValue = cv.ReferenceScore
}
}
}
}
return
}