绩效考核
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.

752 lines
27 KiB

3 years ago
package dutyassess
import (
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
3 years ago
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
3 years ago
"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)
3 years ago
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)
}
// 解析相关指标
3 years ago
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()
}
// 添加 定性考核指标关系指定
3 years ago
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)
3 years ago
WriteBackSunTargetDepartment(groupInt, dimensionInt, targetIdInt64, strconv.FormatInt(sunTargetCont.Id, 10), requestData.AcceptDepartmentId)
3 years ago
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)
3 years ago
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)
3 years ago
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)
}
}
}
// 指标关联部门回写
3 years ago
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)
}
}
// 指标栏目关联部门回写
3 years ago
func WriteBackSunTargetDepartment(group, dimension, targetId int64, sonTargetId string, departmentIdAry []string) {
3 years ago
var evalUaTargetCont string
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("`q_depart`").Where("`q_id` = ?", sonTargetId).First(&evalUaTargetCont).Error
3 years ago
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()
3 years ago
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND `suntargetid` = ?", group, dimension, targetId, sonTargetId).Updates(&saveDataAss)
3 years ago
// fmt.Printf("departmentIdAry------->%v------->%v\n", departmentIdAry, saveData)
}
}