package dutyassess import ( "encoding/json" "fmt" "strconv" "strings" "time" "gin_server_admin/commonus" "gin_server_admin/global" "gin_server_admin/model/assessmentmodel" "gin_server_admin/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) } }