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)
}
}