package assessment
import (
"fmt"
"strconv"
"strings"
"time"
"gin_server_admin/api/v1/archiveapi"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
"gin_server_admin/model/hrsystem"
"gin_server_admin/model/testpage"
"github.com/gin-gonic/gin"
)
// 部门考核
func ( d * DutyHandle ) DepartmentList ( c * gin . Context ) {
var requestData rationSelect
c . ShouldBindJSON ( & requestData )
var groupId int64 = 309
if requestData . Group != "" {
groupId , _ = strconv . ParseInt ( requestData . Group , 10 , 64 )
}
var departList [ ] deparMentModel
gromDb := global . GVA_DB_HrDataBase . Model ( & hrsystem . AdministrativeOrganization { } ) . Select ( "id" , "name" , "wechat_organization_id" ) . Where ( "`state` = 1 AND `superior` = ?" , groupId )
if requestData . DepartmentId != "" {
gromDb = gromDb . Where ( "`id` = ?" , requestData . DepartmentId )
}
departMentErr := gromDb . Find ( & departList ) . Error
if departMentErr != nil || len ( departList ) < 1 {
response . Result ( 101 , departMentErr , "没有数据!" , c )
return
}
var departAryList [ ] departmentDuty
for _ , v := range departList {
var departCont departmentDuty
departCont . Id = strconv . FormatInt ( v . Id , 10 )
departCont . Name = v . Name
departCont . Child = getDepartDimension ( groupId , v . Id )
departAryList = append ( departAryList , departCont )
}
response . Result ( 0 , departAryList , "数据获取成功!" , c )
}
func ( d * DutyHandle ) DepartmentListOld ( c * gin . Context ) {
var requestData rationSelect
c . ShouldBindJSON ( & requestData )
var groupId int64 = 3
if requestData . Group != "" {
groupId , _ = strconv . ParseInt ( requestData . Group , 10 , 64 )
}
var departList [ ] deparMentModelOld
gromDb := global . GVA_DB_Master . Model ( & testpage . BranchFactory { } ) . Select ( "bf_id" , "bf_name" , "bf_wechat_id" ) . Where ( "`bf_set` = 1 AND `bf_group` = ?" , groupId )
if requestData . DepartmentId != "" {
gromDb = gromDb . Where ( "`bf_id` = ?" , requestData . DepartmentId )
}
departMentErr := gromDb . Find ( & departList ) . Error
if departMentErr != nil || len ( departList ) < 1 {
response . Result ( 101 , departMentErr , "没有数据!" , c )
return
}
var departAryList [ ] departmentDuty
for _ , v := range departList {
var departCont departmentDuty
departCont . Id = strconv . FormatInt ( v . Id , 10 )
departCont . Name = v . Name
departCont . Child = getDepartDimension ( groupId , v . Id )
departAryList = append ( departAryList , departCont )
}
response . Result ( 0 , departAryList , "数据获取成功!" , c )
}
// 获取部门考核维度
func getDepartDimension ( groupId , departId int64 ) ( dimensionAry [ ] departmentDimension ) {
var fileAry [ ] int64
dimErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimension { } ) . Select ( "dd_dimension" ) . Where ( "`dd_group` = ? AND `dd_department` = ?" , groupId , departId ) . Group ( "dd_dimension" ) . Find ( & fileAry ) . Error
// fmt.Printf("1--------------->%v\n", dimErr)
if dimErr == nil {
for _ , v := range fileAry {
dimInfo , dimInfoErr := commonus . GetDutyClassInfo ( v )
// fmt.Printf("2--------------->%v\n", dimInfo)
if dimInfoErr == true {
var dimCont departmentDimension
dimCont . Id = strconv . FormatInt ( v , 10 )
dimCont . Name = dimInfo . Title
dimCont . Child = targetRationDepartList ( groupId , departId , v )
dimensionAry = append ( dimensionAry , dimCont )
}
}
}
return
}
// 部门考核项目
func targetRationDepartList ( groupID , departmentID , dimension int64 ) ( contentList [ ] taskDetails ) {
var fileTargetAry [ ] assessmentmodel . QualitativeEvaluation
listTargetErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ?" , groupID , departmentID , dimension ) . Find ( & fileTargetAry ) . Error
if listTargetErr != nil {
return
}
for _ , v := range fileTargetAry {
var content taskDetails
targetInfo , targetErr := commonus . GetTargetInfo ( v . Target )
if targetErr == true {
content . Id = strconv . FormatInt ( v . Target , 10 )
content . Name = targetInfo . Title
content . QeId = strconv . FormatInt ( v . Id , 10 )
content . Unit = v . Unit
content . ReferenceScore = v . ReferenceScore
content . Cycles = v . Cycles
content . CycleAttres = v . CycleAttres
content . State = v . State
contentList = append ( contentList , content )
}
}
return
}
func ( d * DutyHandle ) DepartmentTaskList ( c * gin . Context ) {
var requestData DelQualitative
c . ShouldBindJSON ( & requestData )
if requestData . VersionNumber == "" {
response . Result ( 101 , requestData , "未知版本号码" , c )
return
}
var qualitativeEvaluationAry [ ] assessmentmodel . QualitativeEvaluation
gormDb := global . GVA_DB_Performanceappraisal . Select ( "qualitative_evaluation.*,dutyclass.sort" )
if requestData . Type != 0 {
gormDb = gormDb . Where ( "`qe_type` = ?" , requestData . Type )
}
if requestData . Group != "" {
gormDb = gormDb . Where ( "`qe_group` = ?" , requestData . Group )
}
// if requestData.DepartmentId != "" {
gormDb = gormDb . Where ( "`qe_qual_eval_id` = ?" , requestData . VersionNumber )
// }
if requestData . DepartmentId != "" {
gormDb = gormDb . Where ( "`qe_accept_evaluation` = ?" , requestData . DepartmentId )
}
if requestData . Dimension != "" {
gormDb = gormDb . Where ( "`qe_dimension` = ?" , requestData . Dimension )
}
if requestData . Target != "" {
gormDb = gormDb . Where ( "`qe_target` = ?" , requestData . Target )
}
if requestData . TargetSun != "" {
gormDb = gormDb . Where ( "`qe_target_sun` = ?" , requestData . TargetSun )
}
// gormDb = gormDb.Where("`qe_state` = 1")
listTargetErr := gormDb . Joins ( "left join dutyclass on id = qe_dimension" ) . Order ( "qe_group asc,qe_accept_evaluation asc,sort asc,qe_type asc,qe_target asc,qe_target_sun asc" ) . Find ( & qualitativeEvaluationAry ) . Error
if listTargetErr != nil || len ( qualitativeEvaluationAry ) < 1 {
response . Result ( 101 , qualitativeEvaluationAry , "没有数据!" , c )
return
}
response . Result ( 101 , qualitativeEvaluationAry , "没有数据!" , c )
return
var uotContAry [ ] TargetContOutCont
for _ , v := range qualitativeEvaluationAry {
var uotCont TargetContOutCont
uotCont . Id = strconv . FormatInt ( v . Id , 10 )
uotCont . Type = v . Type
uotCont . Group = strconv . FormatInt ( v . Group , 10 )
where := commonus . MapOut ( )
where [ "id" ] = v . Group
orgCont , _ := commonus . GetNewOrgCont ( where , "id" , "name" )
uotCont . GroupNAme = orgCont . Name
whereDepart := commonus . MapOut ( )
whereDepart [ "id" ] = v . AcceptEvaluation
orgContDepart , _ := commonus . GetNewOrgCont ( whereDepart , "id" , "name" )
uotCont . DepartmentName = orgContDepart . Name
// groupErr, groupCont := commonus.GetGroupCont(v.Group)
// if groupErr == true {
// uotCont.GroupNAme = groupCont.Name
// }
uotCont . DepartmentId = strconv . FormatInt ( v . AcceptEvaluation , 10 )
// deparConErr, deparConCont := commonus.GetBranchFactory(v.AcceptEvaluation)
// if deparConErr == true {
// uotCont.DepartmentName = deparConCont.Name
// }
uotCont . Dimension = strconv . FormatInt ( v . Dimension , 10 )
dutyClassCont , dutyClassErr := commonus . GetDutyClassInfo ( v . Dimension )
if dutyClassErr == true {
uotCont . DimensionName = dutyClassCont . Title
}
uotCont . DimensionWeight = commonus . GetDimesionTargetWeight ( 1 , v . Group , v . AcceptEvaluation , v . Dimension , 0 )
uotCont . Target = strconv . FormatInt ( v . Target , 10 )
targetInfo , targetErr := commonus . GetTargetInfo ( v . Target )
if targetErr == true {
uotCont . TargetName = targetInfo . Title
}
uotCont . TargetWeight = commonus . GetDimesionTargetWeight ( 2 , v . Group , v . AcceptEvaluation , v . Dimension , v . Target )
uotCont . TargetSun = strconv . FormatInt ( v . TargetSun , 10 )
info , infoErr := commonus . GetQualitativeTargetInfo ( v . TargetSun )
if infoErr == true {
uotCont . TargetSunName = info . Title
}
uotCont . DetailedTarget = strconv . FormatInt ( v . DetailedTarget , 10 )
dtCont , dtIsTrue := commonus . GetDetailedTargetInfo ( v . DetailedTarget )
if dtIsTrue == true {
uotCont . DetailedTargetName = dtCont . Title
uotCont . Content = dtCont . Content
}
uotCont . Unit = v . Unit
uotCont . ReferenceScore = v . ReferenceScore
uotCont . Cycles = v . Cycles
uotCont . CycleAttres = v . CycleAttres
uotCont . State = v . State
userAry := strings . Split ( v . Operator , "," )
uotCont . UserList = userAry
for _ , u_v := range userAry {
usCont , usErr := archiveapi . GetUserInfo ( [ ] string { "worker_man.wm_number" , "worker_man_data.wmd_name" } , map [ string ] interface { } { "wm_key" : u_v } )
if usErr == true {
var userCont QualEvalArrt
userCont . Id = u_v
userCont . Name = usCont . Name
uotCont . UserListAry = append ( uotCont . UserListAry , userCont )
}
}
if v . MinScore > 0 && v . MaxScore > 0 {
uotCont . MinOrMaxScore = fmt . Sprintf ( "%v-%v" , float64 ( v . MinScore ) / 100 , float64 ( v . MaxScore ) / 100 )
} else if v . MinScore > 0 && v . MaxScore <= 0 {
uotCont . MinOrMaxScore = fmt . Sprintf ( "%v" , float64 ( v . MinScore ) / 100 )
} else if v . MinScore <= 0 && v . MaxScore > 0 {
uotCont . MinOrMaxScore = fmt . Sprintf ( "%v" , float64 ( v . MaxScore ) / 100 )
} else {
uotCont . MinOrMaxScore = "0"
}
uotCont . DetailedTarget = strconv . FormatInt ( v . DetailedTarget , 10 )
uotContAry = append ( uotContAry , uotCont )
}
response . Result ( 0 , uotContAry , "数据获取成功!" , c )
}
// 获取方案考核细则内容
func ( d * DutyHandle ) DetailsAssessmentScheme ( c * gin . Context ) {
var requestData commonus . SetIds
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Id == 0 && requestData . OutId == "" {
response . Result ( 102 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . OutId != "" {
idInt , inIntErr := strconv . ParseInt ( requestData . OutId , 10 , 64 )
if inIntErr == nil {
requestData . Id = idInt
}
}
var systemBFCont assessmentmodel . QualitativeEvaluation
contErr := global . GVA_DB_Performanceappraisal . Where ( "`qe_id` = ?" , requestData . Id ) . First ( & systemBFCont ) . Error
if contErr != nil {
response . Result ( 102 , err , "数据获取失败!" , c )
return
}
var uotCont TargetContOutCont
uotCont . Id = strconv . FormatInt ( systemBFCont . Id , 10 )
uotCont . Type = systemBFCont . Type
uotCont . Group = strconv . FormatInt ( systemBFCont . Group , 10 )
where := commonus . MapOut ( )
where [ "id" ] = systemBFCont . Group
orgCont , _ := commonus . GetNewOrgCont ( where , "id" , "name" )
uotCont . GroupNAme = orgCont . Name
whereDepart := commonus . MapOut ( )
whereDepart [ "id" ] = systemBFCont . AcceptEvaluation
orgContDepart , _ := commonus . GetNewOrgCont ( whereDepart , "id" , "name" )
uotCont . DepartmentName = orgContDepart . Name
// groupErr, groupCont := commonus.GetGroupCont(systemBFCont.Group)
// if groupErr == true {
// uotCont.GroupNAme = groupCont.Name
// }
uotCont . DepartmentId = strconv . FormatInt ( systemBFCont . AcceptEvaluation , 10 )
// deparConErr, deparConCont := commonus.GetBranchFactory(systemBFCont.AcceptEvaluation)
// if deparConErr == true {
// uotCont.DepartmentName = deparConCont.Name
// }
uotCont . Dimension = strconv . FormatInt ( systemBFCont . Dimension , 10 )
dutyClassCont , dutyClassErr := commonus . GetDutyClassInfo ( systemBFCont . Dimension )
if dutyClassErr == true {
uotCont . DimensionName = dutyClassCont . Title
}
uotCont . Target = strconv . FormatInt ( systemBFCont . Target , 10 )
targetInfo , targetErr := commonus . GetTargetInfo ( systemBFCont . Target )
if targetErr == true {
uotCont . TargetName = targetInfo . Title
}
uotCont . TargetSun = strconv . FormatInt ( systemBFCont . TargetSun , 10 )
info , infoErr := commonus . GetQualitativeTargetInfo ( systemBFCont . TargetSun )
if infoErr == true {
uotCont . TargetSunName = info . Title
}
uotCont . DetailedTarget = strconv . FormatInt ( systemBFCont . DetailedTarget , 10 )
dtCont , dtIsTrue := commonus . GetDetailedTargetInfo ( systemBFCont . DetailedTarget )
if dtIsTrue == true {
uotCont . DetailedTargetName = dtCont . Title
uotCont . Content = dtCont . Content
}
uotCont . Unit = systemBFCont . Unit
uotCont . ReferenceScore = systemBFCont . ReferenceScore
uotCont . Cycles = systemBFCont . Cycles
uotCont . CycleAttres = systemBFCont . CycleAttres
uotCont . State = systemBFCont . State
uotCont . UserList = strings . Split ( systemBFCont . Operator , "," )
uotCont . DetailedTarget = strconv . FormatInt ( systemBFCont . DetailedTarget , 10 )
response . Result ( 0 , uotCont , "数据获取成功!" , c )
}
// 删除考核细则方案内容
func ( d * DutyHandle ) DelDepartmentTaskList ( c * gin . Context ) {
var requestData commonus . SetIds
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Id == 0 && requestData . OutId == "" {
response . Result ( 102 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . OutId != "" {
idInt , inIntErr := strconv . ParseInt ( requestData . OutId , 10 , 64 )
if inIntErr == nil {
requestData . Id = idInt
}
}
var oldCont assessmentmodel . QualitativeEvaluation
getOldContErr := global . GVA_DB_Performanceappraisal . Where ( "qe_id = ?" , requestData . Id ) . Find ( & oldCont ) . Error
if getOldContErr != nil {
response . Result ( 102 , err , "没有此数据" , c )
return
}
roleErr := global . GVA_DB_Performanceappraisal . Where ( "qe_id = ?" , requestData . Id ) . Delete ( & assessmentmodel . QualitativeEvaluation { } ) . Error
if roleErr != nil {
response . Result ( 102 , err , "删除失败!" , c )
return
} else {
var judgeNum int64
delGormDb := global . GVA_DB_Performanceappraisal
delGormDb = delGormDb . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_type` = ?" , oldCont . Group , oldCont . AcceptEvaluation , oldCont . Dimension , oldCont . Type )
if oldCont . Type == 1 {
delGormDb = delGormDb . Where ( "`qe_target` = ? AND `qe_target_sun` = ? " , oldCont . Target , oldCont . TargetSun )
}
judgeErr := delGormDb . Pluck ( "COALESCE(COUNT(qe_id), 0) as countid" , & judgeNum ) . Error
if judgeErr == nil && judgeNum == 0 && oldCont . Type == 1 {
delDimErr := global . GVA_DB_Performanceappraisal . Where ( "`ddw_type` = 1 AND `ddw_hierarchy` = 2 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ?" , oldCont . Group , oldCont . AcceptEvaluation , oldCont . Dimension , oldCont . Target ) . Delete ( & assessmentmodel . DepartmentDimensionWeight { } ) . Error
if delDimErr == nil {
}
}
response . Result ( 0 , err , "删除成功!" , c )
}
}
// 修改考核方案单条考核细则
func ( d * DutyHandle ) EiteOneQualitativeEvaluation ( c * gin . Context ) {
var requestData EiteOneQualEval
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Id == 0 && requestData . OutId == "" {
response . Result ( 102 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . OutId != "" {
idInt , inIntErr := strconv . ParseInt ( requestData . OutId , 10 , 64 )
if inIntErr == nil {
requestData . Id = idInt
}
}
saveData := commonus . MapOut ( )
saveData [ "qe_eitetime" ] = time . Now ( ) . Unix ( )
if requestData . Unit != "" {
saveData [ "qe_unit" ] = requestData . Unit
}
if requestData . ReferenceScore != 0 {
saveData [ "qe_reference_score" ] = requestData . ReferenceScore
}
if requestData . Cycles != 0 {
saveData [ "qe_cycle" ] = requestData . Cycles
}
if requestData . CycleAttres != 0 {
saveData [ "qe_cycleattr" ] = requestData . CycleAttres
}
if requestData . State != 0 {
saveData [ "qe_state" ] = requestData . State
}
if requestData . Content != "" {
saveData [ "qe_content" ] = requestData . Content
}
if len ( requestData . Operator ) > 0 {
saveData [ "qe_operator" ] = strings . Join ( requestData . Operator , "," )
saveData [ "qe_department_id" ] = strings . Join ( GetDepartmentByUserBast ( requestData . Operator ) , "," )
}
roleIsTrue , roleErr := eiteOneQuaEvaInfo ( requestData . Id , saveData )
if roleIsTrue != true {
response . Result ( 106 , roleErr , "编辑失败!" , c )
} else {
response . Result ( 0 , saveData , "编辑成功!" , c )
}
}
// 编辑职务数据处理
func eiteOneQuaEvaInfo ( saveId int64 , saveData map [ string ] interface { } ) ( isTrue bool , infoErr error ) {
isTrue = false
infoErr = global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_id` = ?" , saveId ) . Updates ( saveData ) . Error
if infoErr != nil {
return
}
isTrue = true
return
}
// 获取定性考核指标对应的结构树
func ( d * DutyHandle ) QualEvalTargetTree ( c * gin . Context ) {
var requestData QualEvalTargetTreeDies
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Group == "" {
response . Result ( 102 , err , "数据获取失败!" , c )
return
}
if requestData . DepartmentId == "" {
response . Result ( 103 , err , "数据获取失败!" , c )
return
}
if requestData . Dimension == "" {
response . Result ( 104 , err , "数据获取失败!" , c )
return
}
if requestData . Target == "" {
response . Result ( 105 , err , "数据获取失败!" , c )
return
}
var qualitativeEvaluationAry [ ] assessmentmodel . QualitativeEvaluation
gormDb := global . GVA_DB_Performanceappraisal
gormDb = gormDb . Where ( "`qe_group` = ?" , requestData . Group )
gormDb = gormDb . Where ( "`qe_accept_evaluation` = ?" , requestData . DepartmentId )
gormDb = gormDb . Where ( "`qe_dimension` = ?" , requestData . Dimension )
gormDb = gormDb . Where ( "`qe_target` = ?" , requestData . Target )
listTargetErr := gormDb . Order ( "qe_type asc,qe_group asc,qe_accept_evaluation asc,qe_dimension asc,qe_target asc,qe_target_sun asc" ) . Find ( & qualitativeEvaluationAry ) . Error
if listTargetErr != nil || len ( qualitativeEvaluationAry ) < 1 {
response . Result ( 101 , listTargetErr , "没有数据!" , c )
return
}
var uotContAry [ ] TargetContOutCont
for _ , v := range qualitativeEvaluationAry {
var uotCont TargetContOutCont
uotCont . Id = strconv . FormatInt ( v . Id , 10 )
uotCont . Type = v . Type
uotCont . Group = strconv . FormatInt ( v . Group , 10 )
where := commonus . MapOut ( )
where [ "id" ] = v . Group
orgCont , _ := commonus . GetNewOrgCont ( where , "id" , "name" )
uotCont . GroupNAme = orgCont . Name
whereDepart := commonus . MapOut ( )
whereDepart [ "id" ] = v . AcceptEvaluation
orgContDepart , _ := commonus . GetNewOrgCont ( whereDepart , "id" , "name" )
uotCont . DepartmentName = orgContDepart . Name
// groupErr, groupCont := commonus.GetGroupCont(v.Group)
// if groupErr == true {
// uotCont.GroupNAme = groupCont.Name
// }
uotCont . DepartmentId = strconv . FormatInt ( v . AcceptEvaluation , 10 )
// deparConErr, deparConCont := commonus.GetBranchFactory(v.AcceptEvaluation)
// if deparConErr == true {
// uotCont.DepartmentName = deparConCont.Name
// }
uotCont . Dimension = strconv . FormatInt ( v . Dimension , 10 )
dutyClassCont , dutyClassErr := commonus . GetDutyClassInfo ( v . Dimension )
if dutyClassErr == true {
uotCont . DimensionName = dutyClassCont . Title
}
uotCont . Target = strconv . FormatInt ( v . Target , 10 )
targetInfo , targetErr := commonus . GetTargetInfo ( v . Target )
if targetErr == true {
uotCont . TargetName = targetInfo . Title
}
uotCont . TargetSun = strconv . FormatInt ( v . TargetSun , 10 )
info , infoErr := commonus . GetQualitativeTargetInfo ( v . TargetSun )
if infoErr == true {
uotCont . TargetSunName = info . Title
}
uotCont . DetailedTarget = strconv . FormatInt ( v . DetailedTarget , 10 )
dtCont , dtIsTrue := commonus . GetDetailedTargetInfo ( v . DetailedTarget )
if dtIsTrue == true {
uotCont . DetailedTargetName = dtCont . Title
uotCont . Content = dtCont . Content
}
uotCont . Unit = v . Unit
uotCont . ReferenceScore = v . ReferenceScore
uotCont . Cycles = v . Cycles
uotCont . CycleAttres = v . CycleAttres
uotCont . State = v . State
userAry := strings . Split ( v . Operator , "," )
uotCont . UserList = userAry
for _ , u_v := range userAry {
usCont , usErr := archiveapi . GetUserInfo ( [ ] string { "worker_man.wm_number" , "worker_man_data.wmd_name" } , map [ string ] interface { } { "wm_key" : u_v } )
if usErr == true {
var userCont QualEvalArrt
userCont . Id = u_v
userCont . Name = usCont . Name
uotCont . UserListAry = append ( uotCont . UserListAry , userCont )
}
}
uotCont . DetailedTarget = strconv . FormatInt ( v . DetailedTarget , 10 )
uotContAry = append ( uotContAry , uotCont )
}
response . Result ( 0 , uotContAry , "数据获取成功!" , c )
}
// 部门考核(新)
func ( d * DutyHandle ) DepartmentListNew ( c * gin . Context ) {
var requestData rationSelect
c . ShouldBindJSON ( & requestData )
//获取维度列表
var dutyClassAry [ ] assessmentmodel . DutyClass
gromDb := global . GVA_DB_Performanceappraisal
gromDb = gromDb . Where ( "`state` = 1" )
classErr := gromDb . Order ( "sort ASC" ) . Find ( & dutyClassAry ) . Error
if classErr != nil {
response . Result ( 0 , classErr , "未获取到数据" , c )
return
}
var departAryList [ ] departmentDutyNew
for _ , v := range dutyClassAry {
childList := GetEvalTarget ( v . Id , requestData . Group , requestData . DepartmentId )
if len ( childList ) > 0 {
var departCont departmentDutyNew
departCont . Id = strconv . FormatInt ( v . Id , 10 )
departCont . Name = v . Title
departCont . Child = GetEvalTarget ( v . Id , requestData . Group , requestData . DepartmentId )
departAryList = append ( departAryList , departCont )
}
}
response . Result ( 0 , departAryList , "数据获取成功!" , c )
}
// 获取考核指标
func GetEvalTarget ( dimId int64 , group , departId string ) ( dimensionAry [ ] taskDetailsLinkage ) {
var contAry [ ] assessmentmodel . EvaluationTarget
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . EvaluationTarget { } ) . Where ( "et_state = 1 AND `et_dimension` = ?" , dimId )
if departId != "" {
sqlOrStr := fmt . Sprintf ( "FIND_IN_SET(%v,`et_relevant_departments`)" , departId )
sqlOrStr = fmt . Sprintf ( "`et_share` = 1 OR (`et_share` = 2 AND (%v))" , sqlOrStr )
gormDb = gormDb . Where ( sqlOrStr )
}
listErr := gormDb . Find ( & contAry ) . Error
if listErr != nil {
return
}
for _ , v := range contAry {
var dimCont taskDetailsLinkage
dimCont . Id = strconv . FormatInt ( v . Id , 10 )
dimCont . Name = v . Title
dimCont . Content = ""
scoreVal := GetDepartDimTargetScore ( group , departId , dimId , v . Id )
dimCont . ReferenceScore = scoreVal
if scoreVal > 0 {
dimCont . IsTrue = 2
} else {
dimCont . IsTrue = 1
}
dimCont . Unit = v . Uniteing
dimCont . Cycles = v . Cycles
dimCont . CycleAttres = v . CycleAttres
if v . Type == 1 {
var counetNumber int64
countErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DetailedTarget { } ) . Select ( "dt_id" ) . Where ( "`dt_parentid` = ?" , v . Id ) . Pluck ( "COALESCE(COUNT(dt_id), 0) as countid" , & counetNumber ) . Error
if countErr == nil {
if counetNumber > 0 {
dimensionAry = append ( dimensionAry , dimCont )
}
}
} else {
dimensionAry = append ( dimensionAry , dimCont )
}
}
return
}
// 计算该指定部门维度指标下的分值
func GetDepartDimTargetScore ( group , depert string , dimeid , targetid int64 ) ( scoreAll int64 ) {
err := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ? AND qe_state = 1" , group , depert , dimeid , targetid ) . Pluck ( "COALESCE(SUM(qe_reference_score), 0) as rescore" , & scoreAll ) . Error
if err != nil {
scoreAll = 0
}
return
}
// 部门添加考核方案NEw
func ( d * DutyHandle ) AddDepartmentDutyInfo ( c * gin . Context ) {
var requestData AddDutyNewContGroup
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Group == "" {
response . Result ( 102 , err , "数据获取失败!" , c )
return
}
groupId , groupErr := strconv . ParseInt ( requestData . Group , 10 , 64 )
if groupErr != nil {
groupId = 0
}
if requestData . DepartmentId == "" {
response . Result ( 103 , err , "数据获取失败!" , c )
return
}
departId , departErr := strconv . ParseInt ( requestData . DepartmentId , 10 , 64 )
if departErr != nil {
departId = 0
}
if len ( requestData . Child ) < 0 {
response . Result ( 104 , err , "没有要添加的数据" , c )
return
}
var eiteIdAry [ ] int64
var saveDataAry [ ] assessmentmodel . QualitativeEvaluation
fmt . Printf ( "1-------------%v---------------->%v\n" , groupId , requestData . Group )
for _ , v := range requestData . Child { //维度
for _ , v_s := range v . Child { //指标
if v_s . Status == 1 {
//指标ID转换
targetId , targetErr := strconv . ParseInt ( v_s . Id , 10 , 64 )
if targetErr == nil {
//获取指标内容
evalTarCont , evalTarContErr := commonus . GetTargetInfo ( targetId )
if evalTarContErr == true {
//判断是定量还是定性
if evalTarCont . Type == 2 {
//定量指标操作
var saveData assessmentmodel . QualitativeEvaluation
var qeId [ ] int64
eiteQualEvalSaveData := commonus . MapOut ( )
gormQualEval := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "`qe_dimension` = ? AND `qe_target` = ? AND `qe_type` = ?" , v . Id , targetId , evalTarCont . Type )
//计算执行考核人部门
if evalTarCont . Report != "" {
var departAry [ ] string
userKeyAry := strings . Split ( evalTarCont . Report , "," )
if len ( userKeyAry ) > 0 {
for _ , u_v := range userKeyAry {
usCont , usErr := archiveapi . GetUserInfo ( [ ] string { "worker_man.wm_bf_id" } , map [ string ] interface { } { "wm_key" : u_v } )
if usErr == true {
departAry = append ( departAry , strconv . FormatInt ( usCont . DepartmentId , 10 ) )
}
}
}
saveData . DepartmentId = strings . Join ( departAry , "," )
gormQualEval = gormQualEval . Where ( "`qe_department_id` IN ?" , departAry )
eiteQualEvalSaveData [ "qe_department_id" ] = strings . Join ( departAry , "," )
}
//维度ID
dimId , dimErr := strconv . ParseInt ( v . Id , 10 , 64 )
if dimErr == nil {
saveData . Dimension = dimId
}
saveData . Target = targetId //指标
saveData . Type = evalTarCont . Type //类型
saveData . Unit = v_s . Unit //单位
saveData . ReferenceScore = v_s . ReferenceScore //分值
// saveData.ReferenceScore = v_s.ReferenceScore //分值
saveData . State = 1 //状态
saveData . Addtime = time . Now ( ) . Unix ( )
saveData . Eitetime = time . Now ( ) . Unix ( )
saveData . Group = groupId //集团
saveData . Cycles = v_s . Cycles //单位
saveData . CycleAttres = v_s . CycleAttres //辅助计数
saveData . AcceptEvaluation = departId //接受考核部门
saveData . Content = v_s . Content //描述
saveData . Operator = evalTarCont . Report //执行考核人
judgeContErr := gormQualEval . Find ( & qeId ) . Error
if judgeContErr == nil && len ( qeId ) > 0 {
eiteQualEvalSaveData [ "qe_dimension" ] = dimId
eiteQualEvalSaveData [ "qe_target" ] = targetId
eiteQualEvalSaveData [ "qe_type" ] = evalTarCont . Type
eiteQualEvalSaveData [ "qe_unit" ] = v_s . Unit
eiteQualEvalSaveData [ "qe_reference_score" ] = v_s . ReferenceScore
eiteQualEvalSaveData [ "qe_state" ] = 1
eiteQualEvalSaveData [ "qe_eitetime" ] = time . Now ( ) . Unix ( )
eiteQualEvalSaveData [ "qe_group" ] = groupId
eiteQualEvalSaveData [ "qe_cycle" ] = v_s . Cycles
eiteQualEvalSaveData [ "qe_cycleattr" ] = v_s . CycleAttres
eiteQualEvalSaveData [ "qe_accept_evaluation" ] = departId
eiteQualEvalSaveData [ "qe_operator" ] = evalTarCont . Report
eiteQualEvalSaveData [ "qe_content" ] = v_s . Content
eiteIdAry = append ( eiteIdAry , dimId )
//修改已经存在的内容
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_id` IN ?" , qeId ) . Updates ( eiteQualEvalSaveData )
} else {
saveDataAry = append ( saveDataAry , saveData )
}
} else {
//定性考核
//获取子栏目列表
var sunTarget [ ] assessmentmodel . QualitativeTarget
sunErr := global . GVA_DB_Performanceappraisal . Where ( "q_parent_id = ?" , targetId ) . Find ( & sunTarget ) . Error
fmt . Printf ( "judge----------------1----------->%v\n" , sunErr )
if sunErr == nil {
if len ( sunTarget ) > 0 {
fmt . Printf ( "judge----------------2----------->%v\n" , len ( sunTarget ) )
//获取定性指标子项目下的考核详情
for _ , s_d_v := range sunTarget {
//指标详情
var detaTarget [ ] assessmentmodel . DetailedTarget
detaiErr := global . GVA_DB_Performanceappraisal . Where ( "dt_parentid = ? AND dt_parentid_sun = ?" , targetId , s_d_v . Id ) . Find ( & detaTarget ) . Error
fmt . Printf ( "judge----------------3----------->%v\n" , detaiErr )
if detaiErr == nil {
if len ( detaTarget ) > 0 {
fmt . Printf ( "judge----------------4----------->%v\n" , len ( detaTarget ) )
//指标详情循环
for _ , s_t_v := range detaTarget {
var saveDataDetar assessmentmodel . QualitativeEvaluation
var qeId [ ] int64
eiteQualEvalSaveData := commonus . MapOut ( )
gormQualEval := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "`qe_dimension` = ? AND `qe_target` = ? AND `qe_type` = ? AND `qe_target_sun` = ? AND `qe_detailed_target` = ?" , v . Id , targetId , evalTarCont . Type , s_d_v . Id , s_t_v . Id )
//计算执行考核部门
if evalTarCont . Report != "" {
var departAry [ ] string
userKeyAry := strings . Split ( evalTarCont . Report , "," )
if len ( userKeyAry ) > 0 {
for _ , u_v := range userKeyAry {
usCont , usErr := archiveapi . GetUserInfo ( [ ] string { "worker_man.wm_bf_id" } , map [ string ] interface { } { "wm_key" : u_v } )
if usErr == true {
departAry = append ( departAry , strconv . FormatInt ( usCont . DepartmentId , 10 ) )
}
}
}
saveDataDetar . DepartmentId = strings . Join ( departAry , "," )
gormQualEval = gormQualEval . Where ( "`qe_department_id` IN ?" , departAry )
eiteQualEvalSaveData [ "qe_department_id" ] = strings . Join ( departAry , "," )
}
//维度ID
dimId , dimErr := strconv . ParseInt ( v . Id , 10 , 64 )
if dimErr == nil {
saveDataDetar . Dimension = dimId
}
saveDataDetar . Target = targetId //指标
saveDataDetar . TargetSun = s_d_v . Id //子栏目
saveDataDetar . DetailedTarget = s_t_v . Id //指标详情
saveDataDetar . Type = evalTarCont . Type //类型
saveDataDetar . Unit = v_s . Unit //单位
saveDataDetar . ReferenceScore = v_s . ReferenceScore //得分
saveDataDetar . State = 1 //状态
saveDataDetar . Addtime = time . Now ( ) . Unix ( )
saveDataDetar . Eitetime = time . Now ( ) . Unix ( )
saveDataDetar . Group = groupId //departId
saveDataDetar . Cycles = v_s . Cycles
saveDataDetar . CycleAttres = v_s . CycleAttres
saveDataDetar . AcceptEvaluation = departId
saveDataDetar . Operator = evalTarCont . Report
saveDataDetar . Content = v_s . Content
judgeContErr := gormQualEval . Find ( & qeId ) . Error
if judgeContErr == nil && len ( qeId ) > 0 {
fmt . Printf ( "judge----------------5-------%v---->%v\n" , judgeContErr , len ( qeId ) )
eiteQualEvalSaveData [ "qe_dimension" ] = dimId
eiteQualEvalSaveData [ "qe_target" ] = targetId
eiteQualEvalSaveData [ "qe_target_sun" ] = s_d_v . Id
eiteQualEvalSaveData [ "qe_detailed_target" ] = s_t_v . Id
eiteQualEvalSaveData [ "qe_type" ] = evalTarCont . Type
eiteQualEvalSaveData [ "qe_unit" ] = v_s . Unit
eiteQualEvalSaveData [ "qe_reference_score" ] = v_s . ReferenceScore
eiteQualEvalSaveData [ "qe_state" ] = 1
eiteQualEvalSaveData [ "qe_eitetime" ] = time . Now ( ) . Unix ( )
eiteQualEvalSaveData [ "qe_group" ] = groupId
eiteQualEvalSaveData [ "qe_cycle" ] = v_s . Cycles
eiteQualEvalSaveData [ "qe_cycleattr" ] = v_s . CycleAttres
eiteQualEvalSaveData [ "qe_accept_evaluation" ] = departId
eiteQualEvalSaveData [ "qe_operator" ] = evalTarCont . Report
eiteQualEvalSaveData [ "qe_content" ] = v_s . Content
eiteIdAry = append ( eiteIdAry , dimId )
//修改已经存在的内容
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_id` IN ?" , qeId ) . Updates ( eiteQualEvalSaveData )
} else {
fmt . Printf ( "judge----------------5---5----%v---->%v\n" , judgeContErr , len ( qeId ) )
saveDataAry = append ( saveDataAry , saveDataDetar )
}
}
} else {
fmt . Printf ( "judge----------------4-----4------>%v\n" , len ( detaTarget ) )
}
} else {
fmt . Printf ( "judge----------------3-----3------>%v\n" , detaiErr )
}
}
} else {
fmt . Printf ( "judge----------------2---2-------->%v\n" , len ( sunTarget ) )
}
} else {
fmt . Printf ( "judge----------------1-----1------>%v\n" , sunErr )
}
}
}
}
} else {
fmt . Printf ( "judge----------------6-----1------>%v\n" , v_s )
var qualEvalId [ ] int64
judgeQualEvalErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "`qe_group` = ? AND FIND_IN_SET(?,`qe_department_id`) AND `qe_dimension` = ? AND `qe_target` = ?" , groupId , departId , v . Id , v_s . Id ) . Find ( & qualEvalId ) . Error
if judgeQualEvalErr == nil {
if len ( qualEvalId ) > 0 {
eiteIdAry = append ( eiteIdAry , 2 )
fmt . Printf ( "judge----------------6-----3------>%v\n" , judgeQualEvalErr )
qualEvalSave := commonus . MapOut ( )
qualEvalSave [ "qe_state" ] = 2
qualEvalSave [ "qe_eitetime" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_id` IN ?" , qualEvalId ) . Updates ( qualEvalSave )
}
}
}
}
}
if len ( saveDataAry ) <= 0 && len ( eiteIdAry ) <= 0 {
response . Result ( 105 , saveDataAry , "没有要添加的数据" , c )
return
}
// fmt.Printf("judge----------------7----------->%v\n", v_s)
if len ( saveDataAry ) > 0 {
addErr := global . GVA_DB_Performanceappraisal . Create ( & saveDataAry ) . Error
if addErr != nil {
response . Result ( 106 , len ( saveDataAry ) , "数据添加失败" , c )
return
}
}
if departId != 0 {
}
response . Result ( 0 , saveDataAry , "数据添加成功" , c )
}