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.
345 lines
12 KiB
345 lines
12 KiB
package quantification
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strconv"
|
|
|
|
"gin_server_admin/commonus"
|
|
"gin_server_admin/global"
|
|
"gin_server_admin/model/assessmentmodel"
|
|
)
|
|
|
|
//计算数值用的
|
|
/*
|
|
计算定性数值
|
|
*/
|
|
//获取定性总值
|
|
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
|
|
}
|
|
|
|
// 获取定性总数
|
|
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
|
|
}
|
|
|
|
// 计算总值和平均值
|
|
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
|
|
}
|
|
|
|
// 统计查询条件
|
|
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
|
|
}
|
|
|