dddd
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.

485 lines
16 KiB

4 years ago
package dutyassess
import (
4 years ago
"encoding/json"
4 years ago
"fmt"
"strconv"
"strings"
"time"
"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"
4 years ago
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"github.com/mitchellh/mapstructure"
4 years ago
)
//判断考核细则是否存在(新规则)
/*
参数说明
@ascription 归属指标栏目
@title 指标细则
@explain 指标说明'
@explainId 指标明细ID
@ReferenceScore 分数
@CompanyCont 单位
@sunTargetId 子栏目
*/
// func JudgeDetailsCopy(ascription, title, explain, explainId, ReferenceScore, CompanyCont string, sunTargetId int64, addReduce int) (content assessmentmodel.DetailedTarget, isTrue bool)
// detailedTargetInfo, dtiIsTrue := commonus.JudgeDetailsCopy(requestData.Target, v.Title, v.Content, v.DetailedTarget, v.ReferenceScore, v.Unit, sunTargetCont.Id, v.AddOrReduce)
/*
参数说明
@ascription 归属指标栏目
@departStr 接受考核的部门
4 years ago
@sunTargetId 子栏目
@detailedTarget 考核细则
*/
func JudgeDetailsCopyEs(ascription, departStr string, sunTargetId int64, detailedTarget QualEvalSunList) (content assessmentmodel.DetailedTarget, isTrue bool) {
4 years ago
if detailedTarget.AddOrReduce == 0 {
detailedTarget.AddOrReduce = 1
}
var minScoreInt int64
var maxScoreInt int64
scoreAry := strings.Split(detailedTarget.ReferenceScore, "-")
scoreLen := len(scoreAry)
// fmt.Printf("ScoreAry:%v----------->%v------------>%v------------>%v\n", ReferenceScore, scoreLen, scoreAry[0], scoreAry)
if scoreLen > 0 {
if scoreLen == 1 {
maxScore, _ := strconv.ParseFloat(scoreAry[0], 64)
zhhh := maxScore * 100
zhuanStr := strconv.FormatFloat(zhhh, 'f', -1, 64)
maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64)
minScoreInt = 0
fmt.Printf("ScoreAry--1-----:%v----------->%v------------>%v------------>%v\n", maxScore, maxScoreInt, zhuanStr, zhhh)
} else {
minScore, _ := strconv.ParseFloat(scoreAry[0], 64)
maxScore, _ := strconv.ParseFloat(scoreAry[scoreLen-1], 64)
minScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(minScore*100, 'f', -1, 64), 10, 64)
maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64)
}
} else {
minScoreInt = 0
maxScoreInt = 0
}
isTrue = false
if detailedTarget.DetailedTarget != "" {
judgeIdErr := global.GVA_DB_Performanceappraisal.Where("`dt_id` = ?", detailedTarget.DetailedTarget).First(&content).Error
if judgeIdErr == nil {
eiteCont := commonus.MapOut()
if minScoreInt > maxScoreInt {
eiteCont["dt_min_score"] = maxScoreInt
eiteCont["dt_max_score"] = minScoreInt
} else {
eiteCont["dt_min_score"] = minScoreInt
eiteCont["dt_max_score"] = maxScoreInt
}
eiteCont["dt_title"] = detailedTarget.Title
eiteCont["dt_content"] = detailedTarget.Content
4 years ago
eiteCont["dt_company"] = detailedTarget.Unit
if detailedTarget.AddOrReduce > 0 {
eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce
}
4 years ago
eiteCont["dt_time"] = time.Now().Unix()
// if detailedTarget.Cycles != 0 {
// eiteCont["dt_cycle"] = detailedTarget.Cycles
// }
// if detailedTarget.Cycles != "" {
eiteCont["dt_cycle"] = detailedTarget.Cycles
// }
4 years ago
if detailedTarget.CycleAttres != 0 {
eiteCont["dt_cycleattr"] = detailedTarget.CycleAttres
}
if len(detailedTarget.CensorType) > 0 {
eiteCont["dt_censor_type"] = strings.Join(detailedTarget.CensorType, ",")
4 years ago
}
eiteCont["dt_censor_cont"] = detailedTarget.CensorCont
if detailedTarget.CensorRate != 0 {
eiteCont["dt_censor_rate"] = detailedTarget.CensorRate
}
if departStr != "" {
eiteCont["dt_paretment"] = departStr
}
4 years ago
global.GVA_DB_Performanceappraisal.Model(&content).Where("`dt_id` = ?", detailedTarget.DetailedTarget).Updates(&eiteCont)
// fmt.Printf("echo --------------1---------->%v\n", content)
isTrue = true
return
}
}
judgeErr := global.GVA_DB_Performanceappraisal.Where("`dt_parentid` = ? AND `dt_title` = ?", ascription, detailedTarget.Title).First(&content).Error
if judgeErr == nil {
isTrue = true
eiteCont := commonus.MapOut()
if minScoreInt > maxScoreInt {
eiteCont["dt_min_score"] = maxScoreInt
eiteCont["dt_max_score"] = minScoreInt
} else {
eiteCont["dt_min_score"] = minScoreInt
eiteCont["dt_max_score"] = maxScoreInt
}
eiteCont["dt_content"] = detailedTarget.Content
4 years ago
eiteCont["dt_company"] = detailedTarget.Unit
if detailedTarget.AddOrReduce > 0 {
eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce
}
4 years ago
eiteCont["dt_time"] = time.Now().Unix()
// if detailedTarget.Cycles != "" {
// eiteCont["dt_cycle"] = detailedTarget.Cycles
// }
// if detailedTarget.Cycles != 0 {
eiteCont["dt_cycle"] = detailedTarget.Cycles
// }
4 years ago
if detailedTarget.CycleAttres != 0 {
eiteCont["dt_cycleattr"] = detailedTarget.CycleAttres
}
if len(detailedTarget.CensorType) > 0 {
eiteCont["dt_censor_type"] = strings.Join(detailedTarget.CensorType, ",")
4 years ago
}
eiteCont["dt_censor_cont"] = detailedTarget.CensorCont
if detailedTarget.CensorRate != 0 {
eiteCont["dt_censor_rate"] = detailedTarget.CensorRate
}
if departStr != "" {
eiteCont["dt_paretment"] = departStr
}
4 years ago
global.GVA_DB_Performanceappraisal.Model(&content).Where("`dt_id` = ?", content.Id).Updates(&eiteCont)
// fmt.Printf("echo --------------2---------->%v\n", content)
return
}
ascriptionId, ascriptionErr := strconv.ParseInt(ascription, 10, 64)
if ascriptionErr != nil {
ascriptionId = 0
}
var minScoreIsTrue int64 = 0
var maxScoreIsTrue int64 = 0
if minScoreInt > maxScoreInt {
minScoreIsTrue = maxScoreInt
maxScoreIsTrue = minScoreInt
} else {
minScoreIsTrue = minScoreInt
maxScoreIsTrue = maxScoreInt
}
// fmt.Printf("ScoreAry---KKKK:%v----------->%v------------>%v------------>%v", minScoreIsTrue, maxScoreIsTrue, minScoreIsTrue, maxScoreIsTrue)
var saveColumEs assessmentmodel.DetailedTarget
saveColumEs.Title = detailedTarget.Title
saveColumEs.Content = detailedTarget.Content
4 years ago
saveColumEs.ParentId = ascriptionId
saveColumEs.ParentIdSun = sunTargetId
saveColumEs.State = 1
saveColumEs.AddTime = time.Now().Unix()
saveColumEs.MinScore = minScoreIsTrue
saveColumEs.MaxScore = maxScoreIsTrue
saveColumEs.Company = detailedTarget.Unit
if detailedTarget.AddOrReduce > 0 {
saveColumEs.AddReduce = detailedTarget.AddOrReduce
} else {
saveColumEs.AddReduce = 1
}
if len(detailedTarget.CensorType) > 0 {
saveColumEs.CensorType = strings.Join(detailedTarget.CensorType, ",")
4 years ago
} else {
saveColumEs.CensorType = "1"
4 years ago
}
saveColumEs.CensorCont = detailedTarget.CensorCont
if detailedTarget.CensorRate > 0 {
saveColumEs.CensorRate = detailedTarget.CensorRate
} else {
saveColumEs.CensorRate = 1
}
var targetInfoCont assessmentmodel.EvaluationTarget
tarEvlWhe := commonus.MapOut()
tarEvlWhe["et_id"] = ascriptionId
targetInfoCont.GetCont(tarEvlWhe, "et_cycle", "et_cycleattr")
// intCycles, _ := strconv.Atoi(detailedTarget.Cycles)
// if intCycles > 0 {
// saveColumEs.Cycles = intCycles
// } else {
// if targetInfoCont.Cycles > 1 {
// saveColumEs.Cycles = targetInfoCont.Cycles
// } else {
// saveColumEs.Cycles = 4
// }
// }
4 years ago
if detailedTarget.Cycles > 0 {
saveColumEs.Cycles = detailedTarget.Cycles
} else {
if targetInfoCont.Cycles > 1 {
saveColumEs.Cycles = targetInfoCont.Cycles
} else {
saveColumEs.Cycles = 0
4 years ago
}
}
if detailedTarget.CycleAttres > 0 {
saveColumEs.CycleAttres = detailedTarget.CycleAttres
} else {
if targetInfoCont.CycleAttres > 1 {
saveColumEs.CycleAttres = targetInfoCont.CycleAttres
} else {
saveColumEs.CycleAttres = 1
}
}
saveColumEs.Paretment = departStr
4 years ago
addErr := global.GVA_DB_Performanceappraisal.Create(&saveColumEs).Error
// saveColum := assessmentmodel.DetailedTarget{
// Title: detailedTarget.Title,
// Content: detailedTarget.CensorCont,
// ParentId: ascriptionId,
// ParentIdSun: sunTargetId,
// State: 1,
// AddTime: time.Now().Unix(),
// Company: detailedTarget.Unit,
// MinScore: minScoreIsTrue,
// MaxScore: maxScoreIsTrue,
// AddReduce: detailedTarget.AddOrReduce,
// Cycles: detailedTarget.Cycles,
// CycleAttres: detailedTarget.CycleAttres,
// }
// addErr := global.GVA_DB_Performanceappraisal.Create(&saveColum).Error
if addErr != nil {
// fmt.Printf("echo --------------3---------->%v\n", saveColum.Id)
return
}
// fmt.Printf("echo --------------4---------->%v\n", saveColum.Id)
isTrue = true
// content = saveColum
content = saveColumEs
return
}
4 years ago
//解析考核关系
/*
@group 集团
@dimeId 维度
@target 指标
*/
func jieXiDutyList(group, dimeId, target int64) (departIdAry []string, departAry []DepartmentAryType, userIdContStr []string, userContAry []QualEvalArrt) {
var targetAssessAry []assessmentmodel.Assesstarget
errGroup := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`departmentmap`,`content`").Where("`group` = ? AND `dimension`= ? AND `targetid` = ?", group, dimeId, target).Find(&targetAssessAry).Error
if errGroup != nil {
return
}
// var departIdAry []int64
// var departAry []DepartmentAryType
// var userIdCont []int64
// var userIdContStr []string
// var userContAry []QualEvalArrt
// DutyAssEssTarget
for _, v := range targetAssessAry {
// var huiXianDepartId []int64
// jsonDepartErr := json.Unmarshal([]byte(v.Departmentmap), &huiXianDepartId)
huiXianDepartId := strings.Split(v.Departmentmap, ",")
// fmt.Printf("jsonDepartErr----->%v\n", jsonDepartErr)
// if jsonDepartErr == nil {
if len(huiXianDepartId) > 0 {
// 获取集团信息
for _, derv := range huiXianDepartId {
if commonus.IsItTrueString(derv, departIdAry) == false {
where := commonus.MapOut()
where["id"] = derv
orgCont, orgErr := commonus.GetNewOrgCont(where, "id", "name")
if orgErr == nil {
departIdAry = append(departIdAry, derv)
var departcont DepartmentAryType
departcont.Parentname = orgCont.Name
departcont.Parentid = derv
departAry = append(departAry, departcont)
}
}
}
}
var huiXianUser []DutyAssEssTarget
jsonUsertErr := json.Unmarshal([]byte(v.Content), &huiXianUser)
if jsonUsertErr == nil {
//获取人员信息
for _, usv := range huiXianUser {
for _, uskeyv := range usv.Operator {
if commonus.IsItTrueString(uskeyv, userIdContStr) == false {
userWher := commonus.MapOut()
userWher["key"] = uskeyv
usCont, usErr := commonus.GetNewHrPeopleInfo(userWher)
if usErr == true {
userIdContStr = append(userIdContStr, uskeyv)
var userCont QualEvalArrt
userCont.Id = uskeyv
userCont.Name = usCont.Name
userCont.Icon = usCont.Icon
where := commonus.MapOut()
where["id"] = usCont.Company
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name", "abbreviation")
userCont.GroupName = orgCont.Name
if orgCont.Abbreviation != "" {
userCont.GroupName = orgCont.Abbreviation
}
whereDepart := commonus.MapOut()
whereDepart["id"] = usCont.Deparment
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name")
userCont.DepartmentName = orgContDepart.Name
userCont.Number = usCont.Number
userContAry = append(userContAry, userCont)
}
}
}
}
}
}
// syncProcess.Wait()
return
}
//查看定性考核项目详情(New)
func (d *DutyAssessApi) LookDutyTargetInfo(c *gin.Context) {
var requestData LookTargetContList
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "参数错误!无法获取数据", c)
return
}
if requestData.Dimension == "" {
response.Result(103, err, "参数错误!无法获取数据", c)
return
}
if requestData.TargetId == "" {
response.Result(104, err, "参数错误!无法获取数据", c)
return
}
var assessInfoList []assessmentmodel.Assesstarget
goromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{})
goromDb = goromDb.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId)
assErr := goromDb.Find(&assessInfoList).Error
if assErr != nil {
response.Result(105, assErr, "没有获取到数据!", c)
return
}
var xieCheng dataLockStatistics
for _, v := range assessInfoList {
syncProcess.Add(1)
go xieCheng.jieXieZiLanMu(v.Id, v.SunTargetId, v.Content, requestData)
}
syncProcess.Wait()
readDingXingDataMap, _ := xieCheng.readMyDayData()
var outList []scanDutyOutList
mapstructure.Decode(readDingXingDataMap, &outList)
response.Result(0, outList, "获取成功!", c)
}
//解析相关指标
func (d *dataLockStatistics) jieXieZiLanMu(dutyAssessId, sunTargetId int64, sunCont string, selectData LookTargetContList) {
d.mutext.Lock()
defer d.mutext.Unlock()
var huiXianUser []DutyAssEssTarget
jsonUsertErr := json.Unmarshal([]byte(sunCont), &huiXianUser)
if jsonUsertErr != nil {
return
}
if len(huiXianUser) < 1 {
return
}
var detailId []int64
for _, v := range huiXianUser {
if commonus.IsItTrue(v.Id, detailId) == false {
detailId = append(detailId, v.Id)
}
}
if len(detailId) < 1 {
return
}
var detailedList []assessmentmodel.DetailedTarget
gormDb := global.GVA_DB_Performanceappraisal.Where("`dt_state` = 1 AND `dt_id` IN ?", detailId)
if selectData.DepartId != "" {
gormDb = gormDb.Where("FIND_IN_SET(?,`dt_paretment`)", selectData.DepartId)
}
if selectData.CensorRate != 0 {
gormDb = gormDb.Where("dt_cycle = ?", selectData.CensorRate)
}
if selectData.CensorCont != "" {
gormDb = gormDb.Where("dt_censor_cont LIKE ?", "%"+selectData.CensorCont+"%")
}
if len(selectData.CensorType) > 0 {
if commonus.IsItTrueString("1", selectData.CensorType) == true && commonus.IsItTrueString("2", selectData.CensorType) == true {
gormDb = gormDb.Where("FIND_IN_SET(1,`dt_censor_type`) OR FIND_IN_SET(2,`dt_censor_type`)")
} else if commonus.IsItTrueString("1", selectData.CensorType) == true {
gormDb = gormDb.Where("FIND_IN_SET(1,`dt_censor_type`)")
} else {
gormDb = gormDb.Where("FIND_IN_SET(2,`dt_censor_type`)")
}
}
detaErr := gormDb.Find(&detailedList).Error
if detaErr != nil {
return
}
for _, v := range detailedList {
detaildMap := commonus.MapOut()
detaildMap["id"] = strconv.FormatInt(v.Id, 10)
detaildMap["group"] = selectData.Group
//维度
detaildMap["dimension"] = selectData.Dimension
//指标
targetInfo, _ := commonus.GetTargetInfo(v.ParentId)
detaildMap["target"] = strconv.FormatInt(v.ParentId, 10)
detaildMap["targetname"] = targetInfo.Title
//栏目
targetSunInfo, _ := commonus.GetQualitativeTargetInfo(v.ParentIdSun)
detaildMap["targetsun"] = strconv.FormatInt(v.ParentIdSun, 10)
detaildMap["targetsunname"] = targetSunInfo.Title
detaildMap["departidmap"] = strings.Split(targetSunInfo.Depart, ",")
// _, DepartmentAry := commonus.GetNewOrgList(strings.Split(targetSunInfo.Depart, ","))
var depNameMap []string
// for _, sep_v := range DepartmentAry {
// depNameMap = append(depNameMap, sep_v.Parentname)
// }
detaildMap["departnamemap"] = strings.Join(depNameMap, ",")
detaildMap["detailedtarget"] = strconv.FormatInt(v.Id, 10)
detaildMap["detailedtargetname"] = v.Title
detaildMap["detailedtargetcontent"] = v.Content
if v.MinScore > 0 && v.MaxScore > 0 {
detaildMap["score"] = fmt.Sprintf("%v-%v", float64(v.MinScore)/100, float64(v.MaxScore)/100)
} else if v.MinScore > 0 && v.MaxScore <= 0 {
detaildMap["score"] = fmt.Sprintf("%v", float64(v.MinScore)/100)
} else if v.MinScore <= 0 && v.MaxScore > 0 {
detaildMap["score"] = fmt.Sprintf("%v", float64(v.MaxScore)/100)
} else {
detaildMap["score"] = "0"
}
detaildMap["cycledettar"] = fmt.Sprintf("%v", v.Cycles)
detaildMap["cycleattrdettar"] = fmt.Sprintf("%v", v.CycleAttres)
detaildMap["censortype"] = strings.Split(v.CensorType, ",")
detaildMap["censorcont"] = v.CensorCont
detaildMap["censorrate"] = fmt.Sprintf("%v", v.CensorRate)
detaildMap["dutyassessid"] = strconv.FormatInt(dutyAssessId, 10)
detaildMap["unit"] = v.Company
d.dataMap = append(d.dataMap, detaildMap)
}
syncProcess.Done()
}