@ -1,6 +1,7 @@
package dutyassess
package dutyassess
import (
import (
"encoding/json"
"fmt"
"fmt"
"strconv"
"strconv"
"strings"
"strings"
@ -9,6 +10,9 @@ import (
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
"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/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
"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"
)
)
//判断考核细则是否存在(新规则)
//判断考核细则是否存在(新规则)
@ -259,3 +263,222 @@ func JudgeDetailsCopyEs(ascription, departStr string, sunTargetId int64, detaile
content = saveColumEs
content = saveColumEs
return
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 . Deparment
orgContDepart , _ := commonus . GetNewOrgCont ( whereDepart , "id" , "name" )
userCont . DepartmentName = orgContDepart . Name
userCont . Number = usCont . Number
userContAry = append ( userContAry , userCont )
}
}
}
}
}
}
// syncProcess.Wait()
return
}
//查看定性考核项目详情(New)
func ( d * DutyAssessApi ) LookDutyTargetInfo ( c * gin . Context ) {
var requestData LookTargetContList
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Group == "" {
response . Result ( 102 , err , "参数错误!无法获取数据" , c )
return
}
if requestData . Dimension == "" {
response . Result ( 103 , err , "参数错误!无法获取数据" , c )
return
}
if requestData . TargetId == "" {
response . Result ( 104 , err , "参数错误!无法获取数据" , c )
return
}
var assessInfoList [ ] assessmentmodel . Assesstarget
goromDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . Assesstarget { } )
goromDb = goromDb . Where ( "`group` = ? AND `dimension` = ? AND `targetid` = ?" , requestData . Group , requestData . Dimension , requestData . TargetId )
assErr := goromDb . Find ( & assessInfoList ) . Error
if assErr != nil {
response . Result ( 105 , assErr , "没有获取到数据!" , c )
return
}
var xieCheng dataLockStatistics
for _ , v := range assessInfoList {
syncProcess . Add ( 1 )
go xieCheng . jieXieZiLanMu ( v . Id , v . SunTargetId , v . Content , requestData )
}
syncProcess . Wait ( )
readDingXingDataMap , _ := xieCheng . readMyDayData ( )
var outList [ ] scanDutyOutList
mapstructure . Decode ( readDingXingDataMap , & outList )
response . Result ( 0 , outList , "获取成功!" , c )
}
//解析相关指标
func ( d * dataLockStatistics ) jieXieZiLanMu ( dutyAssessId , sunTargetId int64 , sunCont string , selectData LookTargetContList ) {
d . mutext . Lock ( )
defer d . mutext . Unlock ( )
var huiXianUser [ ] DutyAssEssTarget
jsonUsertErr := json . Unmarshal ( [ ] byte ( sunCont ) , & huiXianUser )
if jsonUsertErr != nil {
return
}
if len ( huiXianUser ) < 1 {
return
}
var detailId [ ] int64
for _ , v := range huiXianUser {
if commonus . IsItTrue ( v . Id , detailId ) == false {
detailId = append ( detailId , v . Id )
}
}
if len ( detailId ) < 1 {
return
}
var detailedList [ ] assessmentmodel . DetailedTarget
gormDb := global . GVA_DB_Performanceappraisal . Where ( "`dt_state` = 1 AND `dt_id` IN ?" , detailId )
if selectData . DepartId != "" {
gormDb = gormDb . Where ( "FIND_IN_SET(?,`dt_paretment`)" , selectData . DepartId )
}
if selectData . CensorRate != 0 {
gormDb = gormDb . Where ( "dt_cycle = ?" , selectData . CensorRate )
}
if selectData . CensorCont != "" {
gormDb = gormDb . Where ( "dt_censor_cont LIKE ?" , "%" + selectData . CensorCont + "%" )
}
if len ( selectData . CensorType ) > 0 {
if commonus . IsItTrueString ( "1" , selectData . CensorType ) == true && commonus . IsItTrueString ( "2" , selectData . CensorType ) == true {
gormDb = gormDb . Where ( "FIND_IN_SET(1,`dt_censor_type`) OR FIND_IN_SET(2,`dt_censor_type`)" )
} else if commonus . IsItTrueString ( "1" , selectData . CensorType ) == true {
gormDb = gormDb . Where ( "FIND_IN_SET(1,`dt_censor_type`)" )
} else {
gormDb = gormDb . Where ( "FIND_IN_SET(2,`dt_censor_type`)" )
}
}
detaErr := gormDb . Find ( & detailedList ) . Error
if detaErr != nil {
return
}
for _ , v := range detailedList {
detaildMap := commonus . MapOut ( )
detaildMap [ "id" ] = strconv . FormatInt ( v . Id , 10 )
detaildMap [ "group" ] = selectData . Group
//维度
detaildMap [ "dimension" ] = selectData . Dimension
//指标
targetInfo , _ := commonus . GetTargetInfo ( v . ParentId )
detaildMap [ "target" ] = strconv . FormatInt ( v . ParentId , 10 )
detaildMap [ "targetname" ] = targetInfo . Title
//栏目
targetSunInfo , _ := commonus . GetQualitativeTargetInfo ( v . ParentIdSun )
detaildMap [ "targetsun" ] = strconv . FormatInt ( v . ParentIdSun , 10 )
detaildMap [ "targetsunname" ] = targetSunInfo . Title
detaildMap [ "departidmap" ] = strings . Split ( targetSunInfo . Depart , "," )
// _, DepartmentAry := commonus.GetNewOrgList(strings.Split(targetSunInfo.Depart, ","))
var depNameMap [ ] string
// for _, sep_v := range DepartmentAry {
// depNameMap = append(depNameMap, sep_v.Parentname)
// }
detaildMap [ "departnamemap" ] = strings . Join ( depNameMap , "," )
detaildMap [ "detailedtarget" ] = strconv . FormatInt ( v . Id , 10 )
detaildMap [ "detailedtargetname" ] = v . Title
detaildMap [ "detailedtargetcontent" ] = v . Content
if v . MinScore > 0 && v . MaxScore > 0 {
detaildMap [ "score" ] = fmt . Sprintf ( "%v-%v" , float64 ( v . MinScore ) / 100 , float64 ( v . MaxScore ) / 100 )
} else if v . MinScore > 0 && v . MaxScore <= 0 {
detaildMap [ "score" ] = fmt . Sprintf ( "%v" , float64 ( v . MinScore ) / 100 )
} else if v . MinScore <= 0 && v . MaxScore > 0 {
detaildMap [ "score" ] = fmt . Sprintf ( "%v" , float64 ( v . MaxScore ) / 100 )
} else {
detaildMap [ "score" ] = "0"
}
detaildMap [ "cycledettar" ] = fmt . Sprintf ( "%v" , v . Cycles )
detaildMap [ "cycleattrdettar" ] = fmt . Sprintf ( "%v" , v . CycleAttres )
detaildMap [ "censortype" ] = strings . Split ( v . CensorType , "," )
detaildMap [ "censorcont" ] = v . CensorCont
detaildMap [ "censorrate" ] = fmt . Sprintf ( "%v" , v . CensorRate )
detaildMap [ "dutyassessid" ] = strconv . FormatInt ( dutyAssessId , 10 )
detaildMap [ "unit" ] = v . Company
d . dataMap = append ( d . dataMap , detaildMap )
}
syncProcess . Done ( )
}