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.
751 lines
27 KiB
751 lines
27 KiB
package dutyassess
|
|
|
|
import (
|
|
"encoding/json"
|
|
"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"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/mitchellh/mapstructure"
|
|
)
|
|
|
|
//判断考核细则是否存在(新规则)
|
|
/*
|
|
参数说明
|
|
@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 接受考核的部门
|
|
@sunTargetId 子栏目
|
|
@detailedTarget 考核细则
|
|
*/
|
|
func JudgeDetailsCopyEs(ascription, departStr string, sunTargetId int64, detailedTarget QualEvalSunList) (content assessmentmodel.DetailedTarget, isTrue bool) {
|
|
|
|
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
|
|
eiteCont["dt_company"] = detailedTarget.Unit
|
|
if detailedTarget.AddOrReduce > 0 {
|
|
eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce
|
|
}
|
|
eiteCont["dt_time"] = time.Now().Unix()
|
|
|
|
// if detailedTarget.Cycles != 0 {
|
|
// eiteCont["dt_cycle"] = detailedTarget.Cycles
|
|
// }
|
|
// if detailedTarget.Cycles != "" {
|
|
eiteCont["dt_cycle"] = detailedTarget.Cycles
|
|
// }
|
|
if detailedTarget.CycleAttres != 0 {
|
|
eiteCont["dt_cycleattr"] = detailedTarget.CycleAttres
|
|
}
|
|
|
|
if len(detailedTarget.CensorType) > 0 {
|
|
eiteCont["dt_censor_type"] = strings.Join(detailedTarget.CensorType, ",")
|
|
}
|
|
eiteCont["dt_censor_cont"] = detailedTarget.CensorCont
|
|
// if detailedTarget.CensorRate != 0 {
|
|
eiteCont["dt_censor_rate"] = detailedTarget.CensorRate
|
|
// }
|
|
|
|
if departStr != "" {
|
|
eiteCont["dt_paretment"] = departStr
|
|
}
|
|
eiteCont["dt_state"] = 1
|
|
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
|
|
eiteCont["dt_company"] = detailedTarget.Unit
|
|
if detailedTarget.AddOrReduce > 0 {
|
|
eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce
|
|
}
|
|
|
|
eiteCont["dt_time"] = time.Now().Unix()
|
|
|
|
// if detailedTarget.Cycles != "" {
|
|
// eiteCont["dt_cycle"] = detailedTarget.Cycles
|
|
// }
|
|
// if detailedTarget.Cycles != 0 {
|
|
eiteCont["dt_cycle"] = detailedTarget.Cycles
|
|
// }
|
|
if detailedTarget.CycleAttres != 0 {
|
|
eiteCont["dt_cycleattr"] = detailedTarget.CycleAttres
|
|
}
|
|
|
|
if len(detailedTarget.CensorType) > 0 {
|
|
eiteCont["dt_censor_type"] = strings.Join(detailedTarget.CensorType, ",")
|
|
}
|
|
eiteCont["dt_censor_cont"] = detailedTarget.CensorCont
|
|
// if detailedTarget.CensorRate != 0 {
|
|
eiteCont["dt_censor_rate"] = detailedTarget.CensorRate
|
|
// }
|
|
if departStr != "" {
|
|
eiteCont["dt_paretment"] = departStr
|
|
}
|
|
eiteCont["dt_state"] = 1
|
|
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
|
|
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, ",")
|
|
} else {
|
|
saveColumEs.CensorType = "1"
|
|
}
|
|
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
|
|
// }
|
|
|
|
// }
|
|
|
|
if detailedTarget.Cycles > 0 {
|
|
saveColumEs.Cycles = detailedTarget.Cycles
|
|
} else {
|
|
if targetInfoCont.Cycles > 1 {
|
|
saveColumEs.Cycles = targetInfoCont.Cycles
|
|
} else {
|
|
saveColumEs.Cycles = 0
|
|
}
|
|
|
|
}
|
|
if detailedTarget.CycleAttres > 0 {
|
|
saveColumEs.CycleAttres = detailedTarget.CycleAttres
|
|
} else {
|
|
if targetInfoCont.CycleAttres > 1 {
|
|
saveColumEs.CycleAttres = targetInfoCont.CycleAttres
|
|
} else {
|
|
saveColumEs.CycleAttres = 1
|
|
}
|
|
}
|
|
saveColumEs.Paretment = departStr
|
|
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
|
|
}
|
|
|
|
//解析考核关系
|
|
/*
|
|
@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.MainDeparment
|
|
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 {
|
|
// if v.SunTargetId == 217 || v.SunTargetId == 151 {
|
|
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 {
|
|
var findInSet []string
|
|
for _, ctv := range selectData.CensorType {
|
|
findWher := fmt.Sprintf("FIND_IN_SET(%v,`dt_censor_type`)", ctv)
|
|
if commonus.IsItTrueString(findWher, findInSet) == false {
|
|
findInSet = append(findInSet, findWher)
|
|
}
|
|
}
|
|
if len(findInSet) > 0 {
|
|
gormDb = gormDb.Where(strings.Join(findInSet, " OR "))
|
|
}
|
|
// if commonus.IsItTrueString("1", selectData.CensorType) == true && commonus.IsItTrueString("2", selectData.CensorType) == true && commonus.IsItTrueString("3", selectData.CensorType) == true {
|
|
// gormDb = gormDb.Where("FIND_IN_SET(1,`dt_censor_type`) OR FIND_IN_SET(2,`dt_censor_type`) OR FIND_IN_SET(3,`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.Order("dt_id DESC").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()
|
|
}
|
|
|
|
// 添加 定性考核指标关系指定
|
|
func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) {
|
|
var requestData AddQualEval
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
// response.Result(101, err, "数据获取失败!", c)
|
|
// return
|
|
}
|
|
if requestData.Group == "" {
|
|
response.Result(102, err, "请选择归属集团", c)
|
|
return
|
|
}
|
|
if len(requestData.AcceptDepartmentId) <= 0 {
|
|
response.Result(103, err, "请选择接受考核的部门!", c)
|
|
return
|
|
}
|
|
if requestData.Target == "" {
|
|
response.Result(104, err, "请选择考核指标", c)
|
|
return
|
|
}
|
|
if requestData.TargetSunTitle == "" {
|
|
response.Result(105, err, "请输入栏目名称!", c)
|
|
return
|
|
}
|
|
if len(requestData.EvaluationList) <= 0 {
|
|
response.Result(106, err, "请添加测评详情!", c)
|
|
return
|
|
}
|
|
//转化接收考核部门
|
|
sunTarDepartStr := strings.Join(requestData.AcceptDepartmentId, ",")
|
|
//获取子目标情况
|
|
sunTargetCont, sunTargetErr := commonus.JudgeColumn(requestData.Target, requestData.TargetSun, requestData.TargetSunTitle, sunTarDepartStr)
|
|
if sunTargetErr != true {
|
|
}
|
|
//将集团Id转化成整型
|
|
groupInt, groupIntErr := strconv.ParseInt(requestData.Group, 10, 64)
|
|
if groupIntErr != nil {
|
|
groupInt = 1
|
|
}
|
|
//将集指标Id转化成整型
|
|
targetInt, targetIntErr := strconv.ParseInt(requestData.Target, 10, 64)
|
|
if targetIntErr != nil {
|
|
targetInt = 0
|
|
}
|
|
|
|
//将集维度Id转化成整型
|
|
dimensionInt, departinIntErr := strconv.ParseInt(requestData.Dimension, 10, 64)
|
|
if departinIntErr != nil {
|
|
dimensionInt = 0
|
|
}
|
|
//如果没有提交维度ID将主动去查询维度ID
|
|
if dimensionInt == 0 {
|
|
targetInfo, targetInfoErr := commonus.GetTargetInfo(targetInt)
|
|
if targetInfoErr == true {
|
|
dimensionInt = targetInfo.Dimension
|
|
}
|
|
}
|
|
//判断指标是否存在并且获取已存在的所有指标关联部门
|
|
var guanLianBuMen []string
|
|
for _, vvk_vs := range requestData.AcceptDepartmentId {
|
|
if commonus.IsItTrueString(vvk_vs, guanLianBuMen) == false {
|
|
guanLianBuMen = append(guanLianBuMen, vvk_vs)
|
|
}
|
|
}
|
|
//关联集团部门考核维度
|
|
commonus.AddDepartDimension(requestData.Group, strconv.FormatInt(dimensionInt, 10), requestData.Dimension, 1)
|
|
|
|
//判断该集团指标子栏目是否存在
|
|
var arTaegetInfo assessmentmodel.Assesstarget
|
|
judgeARTErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND `suntargetid` = ?", groupInt, dimensionInt, targetInt, sunTargetCont.Id).First(&arTaegetInfo).Error
|
|
|
|
//处理指标细则
|
|
var targetContList []DutyAssEssTarget
|
|
for _, v := range requestData.EvaluationList {
|
|
detailedTargetInfo, dtiIsTrue := JudgeDetailsCopyEs(requestData.Target, sunTarDepartStr, sunTargetCont.Id, v)
|
|
if dtiIsTrue == true {
|
|
if detailedTargetInfo.Id != 0 {
|
|
var targetContInfo DutyAssEssTarget
|
|
targetContInfo.Id = detailedTargetInfo.Id
|
|
targetContInfo.Operator = v.Operator
|
|
targetContList = append(targetContList, targetContInfo)
|
|
}
|
|
}
|
|
}
|
|
|
|
//处理指标关联部门
|
|
var sunTarId []int64
|
|
judgeARkTErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`suntargetid`").Where("`group` = ? AND `dimension` = ? AND `targetid` = ? ", groupInt, dimensionInt, targetInt).Find(&sunTarId).Error
|
|
if judgeARkTErr == nil {
|
|
var sunTarDepartMap []string
|
|
judgeSunTarkTErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("`q_depart`").Where("`q_id` IN ?", sunTarId).Find(&sunTarDepartMap).Error
|
|
if judgeSunTarkTErr == nil {
|
|
for _, vvk := range sunTarDepartMap {
|
|
departStrAry := strings.Split(vvk, ",")
|
|
for _, vvk_v := range departStrAry {
|
|
if commonus.IsItTrueString(vvk_v, guanLianBuMen) == false {
|
|
guanLianBuMen = append(guanLianBuMen, vvk_v)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
eiteContkk := commonus.MapOut()
|
|
eiteContkk["departmentmap"] = strings.Join(guanLianBuMen, ",")
|
|
eiteContkk["time"] = time.Now().Unix()
|
|
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`suntargetid` IN ?", sunTarId).Updates(eiteContkk)
|
|
}
|
|
//指标关联部门回写
|
|
WriteBackTargetDepartment(requestData.Target, requestData.AcceptDepartmentId)
|
|
targetIdInt64, _ := strconv.ParseInt(requestData.Target, 10, 64)
|
|
WriteBackSunTargetDepartment(groupInt, dimensionInt, targetIdInt64, strconv.FormatInt(sunTargetCont.Id, 10), requestData.AcceptDepartmentId)
|
|
if judgeARTErr == nil {
|
|
//存在时
|
|
var eiteTarList []DutyAssEssTarget
|
|
if arTaegetInfo.Content != "" && arTaegetInfo.Content != "null" {
|
|
var tarList []DutyAssEssTarget
|
|
jsonErr := json.Unmarshal([]byte(arTaegetInfo.Content), &tarList)
|
|
if jsonErr == nil {
|
|
for _, ttl_v := range targetContList {
|
|
eiteTarList = append(eiteTarList, ttl_v)
|
|
}
|
|
for _, tl_v := range tarList {
|
|
_, tarInfoErr := JudgeDeiScor(tl_v.Id, targetContList)
|
|
if tarInfoErr == false {
|
|
if judgeDeaimErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("dt_id").Where("dt_state = 1 AND dt_id = ?", tl_v.Id).First(&map[string]interface{}{}).Error; judgeDeaimErr == nil {
|
|
eiteTarList = append(eiteTarList, tl_v)
|
|
}
|
|
|
|
}
|
|
}
|
|
} else {
|
|
eiteTarList = targetContList
|
|
}
|
|
eiteCont := commonus.MapOut()
|
|
eiteCont["time"] = time.Now().Unix()
|
|
jsonStr, jsonMErr := json.Marshal(eiteTarList)
|
|
if jsonMErr == nil {
|
|
eiteCont["content"] = string(jsonStr)
|
|
}
|
|
eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", arTaegetInfo.Id).Updates(eiteCont).Error
|
|
if eiteErr == nil {
|
|
//指标关联部门回写
|
|
// WriteBackTargetDepartment(requestData.Target, requestData.AcceptDepartmentId)
|
|
// WriteBackSunTargetDepartment(strconv.FormatInt(sunTargetCont.Id, 10), requestData.AcceptDepartmentId)
|
|
response.Result(0, err, "处理成功!1", c)
|
|
} else {
|
|
response.Result(107, err, "请添加测评详情!", c)
|
|
}
|
|
} else {
|
|
eiteTarList = targetContList
|
|
eiteCont := commonus.MapOut()
|
|
eiteCont["time"] = time.Now().Unix()
|
|
jsonStr, jsonMErr := json.Marshal(eiteTarList)
|
|
if jsonMErr == nil {
|
|
eiteCont["content"] = string(jsonStr)
|
|
}
|
|
eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", arTaegetInfo.Id).Updates(eiteCont).Error
|
|
if eiteErr == nil {
|
|
//指标关联部门回写
|
|
// WriteBackTargetDepartment(requestData.Target, requestData.AcceptDepartmentId)
|
|
// WriteBackSunTargetDepartment(strconv.FormatInt(sunTargetCont.Id, 10), requestData.AcceptDepartmentId)
|
|
response.Result(0, err, "处理成功!1", c)
|
|
} else {
|
|
response.Result(107, err, "请添加测评详情!", c)
|
|
}
|
|
}
|
|
} else {
|
|
//不存在时
|
|
arTaegetInfo.Group = groupInt
|
|
|
|
arTaegetInfo.Departmentmap = strings.Join(guanLianBuMen, ",")
|
|
arTaegetInfo.TargetId = targetInt
|
|
arTaegetInfo.SunTargetId = sunTargetCont.Id
|
|
arTaegetInfo.Dimension = dimensionInt
|
|
jsonStr, jsonMErr := json.Marshal(targetContList)
|
|
if jsonMErr == nil {
|
|
arTaegetInfo.Content = string(jsonStr)
|
|
}
|
|
arTaegetInfo.Time = time.Now().Unix()
|
|
addErr := global.GVA_DB_Performanceappraisal.Create(&arTaegetInfo).Error
|
|
if addErr == nil {
|
|
//指标关联部门回写
|
|
WriteBackTargetDepartment(requestData.Target, requestData.AcceptDepartmentId)
|
|
response.Result(0, err, "处理成功!2", c)
|
|
} else {
|
|
response.Result(107, err, "请添加测评详情!", c)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 指标关联部门回写
|
|
func WriteBackTargetDepartment(targetId string, departmentIdAry []string) {
|
|
var evalUaTargetCont string
|
|
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Select("`et_relevant_departments`").Where("`et_id` = ?", targetId).First(&evalUaTargetCont).Error
|
|
// fmt.Printf("departmentIdAry---2---->%v------->%v----->%v\n", departmentIdAry, evalUaTargetCont, err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if evalUaTargetCont != "" {
|
|
evalDeaprtAry := strings.Split(evalUaTargetCont, ",")
|
|
if len(evalDeaprtAry) > 0 {
|
|
for _, v := range evalDeaprtAry {
|
|
if commonus.IsItTrueString(v, departmentIdAry) == false {
|
|
departmentIdAry = append(departmentIdAry, v)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// fmt.Printf("departmentIdAry---1---->%v------->%v\n", departmentIdAry, evalUaTargetCont)
|
|
if len(departmentIdAry) > 0 {
|
|
saveData := commonus.MapOut()
|
|
saveData["et_relevant_departments"] = strings.Join(departmentIdAry, ",")
|
|
saveData["et_time"] = time.Now().Unix()
|
|
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Where("`et_id` = ?", targetId).Updates(&saveData)
|
|
// fmt.Printf("departmentIdAry------->%v------->%v\n", departmentIdAry, saveData)
|
|
}
|
|
|
|
}
|
|
|
|
// 指标栏目关联部门回写
|
|
func WriteBackSunTargetDepartment(group, dimension, targetId int64, sonTargetId string, departmentIdAry []string) {
|
|
var evalUaTargetCont string
|
|
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("`q_depart`").Where("`q_id` = ?", sonTargetId).First(&evalUaTargetCont).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
if evalUaTargetCont != "" {
|
|
evalDeaprtAry := strings.Split(evalUaTargetCont, ",")
|
|
if len(evalDeaprtAry) > 0 {
|
|
for _, v := range evalDeaprtAry {
|
|
if commonus.IsItTrueString(v, departmentIdAry) == false {
|
|
departmentIdAry = append(departmentIdAry, v)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// fmt.Printf("departmentIdAry---1---->%v------->%v\n", departmentIdAry, evalUaTargetCont)
|
|
if len(departmentIdAry) > 0 {
|
|
saveData := commonus.MapOut()
|
|
saveData["q_depart"] = strings.Join(departmentIdAry, ",")
|
|
saveData["q_time"] = time.Now().Unix()
|
|
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` = ?", sonTargetId).Updates(&saveData)
|
|
|
|
saveDataAss := commonus.MapOut()
|
|
saveDataAss["departmentmap"] = strings.Join(departmentIdAry, ",")
|
|
saveDataAss["`time`"] = time.Now().Unix()
|
|
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND `suntargetid` = ?", group, dimension, targetId, sonTargetId).Updates(&saveDataAss)
|
|
|
|
// fmt.Printf("departmentIdAry------->%v------->%v\n", departmentIdAry, saveData)
|
|
}
|
|
|
|
}
|
|
|