@ -1,7 +1,14 @@
package assessment
import (
"strconv"
"time"
"github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi"
"github.com/flipped-aurora/gin-vue-admin/server/api/v1/assessment"
"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/model/assessmentmodel"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
)
@ -26,6 +33,513 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) {
if requestData . Page <= 0 {
requestData . Page = 1
}
// offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize)
// gormDb := global.GVA_DB_Master.Model(&testpage.WorkMan{})
isTrue , userCont := commonus . ClientIdentity ( )
if isTrue != true {
response . Result ( 101 , err , "您的身份令牌已经失效!请重新登录获取身份令牌!" , c )
return
}
offSetPage := commonus . CalculatePages ( requestData . Page , requestData . PageSize )
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DutyContent { } ) . Where ( "(`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1" , userCont . Key , userCont . DepartmentId )
var total int64
totalErr := gormDb . Count ( & total ) . Error
if totalErr != nil {
total = 0
}
var assessList [ ] assessmentmodel . DutyContent
assessListerr := gormDb . Limit ( requestData . PageSize ) . Offset ( offSetPage ) . Order ( "dc_id desc" ) . Find ( & assessList ) . Error
if assessListerr != nil {
response . Result ( 102 , assessListerr , "数据获取失败!" , c )
return
}
var assessOutList [ ] assessOut
for _ , val := range assessList {
var assessOutCont assessOut
assessOutCont . Id = val . Id
assessOutCont . Title = val . Title
assessOutCont . Time = val . Time
assessOutCont . State = val . State
assessOutCont . PartId = val . PartId
assessOutCont . UserType = val . UserType
assessOutCont . UserDump = val . UserDump
assessOutCont . Dump = val . Dump
isErr , assessClassCont := assessment . GetAssessClass ( val . PartId )
if isErr == true {
assessOutCont . ClassId = assessClassCont . PartId
assessOutCont . ClassTitle = assessClassCont . ClassTitle
assessOutCont . AssessId = assessClassCont . Id
assessOutCont . AssessTitle = assessClassCont . Title
}
assIsTrue , assDepartList := GetAssDepart ( val . Id )
// fmt.Printf("------------->%v-------->%v\n", assIsTrue, assDepartList)
if assIsTrue == true {
assessOutCont . AssessDepart = assDepartList
}
assessOutList = append ( assessOutList , assessOutCont )
}
countSum := len ( assessOutList )
printData := commonus . OutPutList ( total , int64 ( countSum ) , requestData . Page , requestData . PageSize , assessOutList )
response . Result ( 0 , printData , "查询成功!" , c )
}
//获得项目考核部门
func GetAssDepart ( dutyid int64 ) ( isTrue bool , assessDepartstr [ ] assessDepart ) {
isTrue = false
var departDuty [ ] assessmentmodel . DepartDuty
assDepartErr := global . GVA_DB_Performanceappraisal . Where ( "`de_duty` = ? AND `de_satte` = 1" , dutyid ) . Find ( & departDuty ) . Error
if assDepartErr != nil {
return
}
for _ , val := range departDuty {
var assInfo assessDepart
assInfo . DepartDutyId = val . Id
assInfo . DepartId = val . PartId
isTruew , bfCont := assessment . GetBranchFactory ( val . PartId )
if isTruew == true {
assInfo . DepartTitle = bfCont . Name
}
assInfo . ClassId = val . ClassId
assInfo . AssessId = val . AssessId
assInfo . DutyId = val . DutyId
assInfo . Rescore = val . Rescore
assInfo . Group = val . Group
assessDepartstr = append ( assessDepartstr , assInfo )
}
isTrue = true
return
}
//根据具体考核项获取被考核部门
func ( a * Assessment ) GetDutyDepartList ( c * gin . Context ) {
var requestData assessDepartRequest
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . Id == "" {
response . Result ( 102 , err , "参数错误!请重新提交!" , c )
return
}
id , idErr := strconv . ParseInt ( requestData . Id , 10 , 64 )
if idErr != nil {
response . Result ( 103 , err , "参数错误!请重新提交!" , c )
return
}
isTrue , departList := GetAssDepart ( id )
if isTrue != true {
response . Result ( 104 , departList , "获取失败!" , c )
return
}
outData := commonus . MapOut ( )
outData [ "list" ] = departList
response . Result ( 0 , outData , "查询成功!" , c )
}
//添加考核评分
func ( a * Assessment ) AddAssessmentScore ( c * gin . Context ) {
var requestData addAssEssScores
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . DutyId == "" {
response . Result ( 102 , err , "未知具体职责!" , c )
return
}
//将具体职责ID转换为Int64
dutyId , dutyIdErr := strconv . ParseInt ( requestData . DutyId , 10 , 64 )
if dutyIdErr != nil {
response . Result ( 102 , err , "未知具体职责!" , c )
return
}
classId , dutyIdErr := strconv . ParseInt ( requestData . ClassId , 10 , 64 )
if dutyIdErr != nil {
response . Result ( 102 , err , "未知考核分类!" , c )
return
}
assessId , dutyIdErr := strconv . ParseInt ( requestData . AssessId , 10 , 64 )
if dutyIdErr != nil {
response . Result ( 102 , err , "未知考核项目!" , c )
return
}
if requestData . FileTime == "" {
response . Result ( 103 , err , "未知考核年月!" , c )
return
}
timeStr := requestData . FileTime + "-01 12:00:00"
assessmentTime , assessmentTimeErr := commonus . DateToTimeStampEs ( timeStr )
if assessmentTimeErr != true {
response . Result ( 104 , timeStr , "你提交的考核日期错误!" , c )
return
}
if requestData . DepartId == 0 {
response . Result ( 105 , err , "未知被考核部门!" , c )
return
}
isTrue , userCont := commonus . ClientIdentity ( )
if isTrue != true {
response . Result ( 106 , err , "您的身份令牌已经失效!请重新登录获取身份令牌!" , c )
return
}
userKey , userKeyErr := strconv . ParseInt ( userCont . Key , 10 , 64 )
if userKeyErr != nil {
response . Result ( 107 , err , "您的身份令牌已经失效!请重新登录获取身份令牌!" , c )
return
}
//获取具体考核项对应部门理想分值
var departDutyCont assessmentmodel . DepartDuty
deducoErr := global . GVA_DB_Performanceappraisal . Select ( "`de_rescore`" ) . Where ( "`de_partid` = ? AND `de_duty` = ? AND `de_satte` = 1" , requestData . DepartId , dutyId ) . First ( & departDutyCont ) . Error
if deducoErr != nil {
response . Result ( 108 , err , "该考核项目已经失效!" , c )
return
}
if requestData . DeductPoints > departDutyCont . Rescore {
response . Result ( 108 , err , "扣分不能高于参考值!" , c )
return
}
if requestData . ExtraPoints > departDutyCont . Rescore {
response . Result ( 108 , err , "加分不能高于参考值!" , c )
return
}
actualScore := departDutyCont . Rescore - int64 ( requestData . DeductPoints ) + int64 ( requestData . ExtraPoints )
if actualScore < 0 {
actualScore = 0
}
var departscores assessmentmodel . Departscores
judgeOperationErr := global . GVA_DB_Performanceappraisal . Select ( "s_id" ) . Where ( "`s_class` = ? AND `s_assess` = ? AND `s_duty` = ? AND `s_file_time` = ? AND `s_depart_id` = ? AND `s_comment_user` = ? AND `s_state` = 1" , classId , assessId , dutyId , assessmentTime , requestData . DepartId , userKey ) . First ( & departscores ) . Error
if judgeOperationErr == nil {
response . Result ( 109 , err , "您已经对" + requestData . FileTime + "做出评价!请不要重复评价" , c )
return
}
departscores . Id = commonus . GetFileNumberEs ( )
departscores . ClassId = classId
departscores . AssessId = assessId
departscores . DutyId = dutyId
departscores . DeductPoints = requestData . DeductPoints
departscores . ExtraPoints = requestData . ExtraPoints
// departscores.Score = requestData.Score
departscores . Score = actualScore
departscores . FileTime = assessmentTime
departscores . DepartId = requestData . DepartId
departscores . CommentUser = userKey
departscores . AddTime = time . Now ( ) . Unix ( )
departscores . EiteTime = time . Now ( ) . Unix ( )
departscores . State = 1
addassessInfoErr := global . GVA_DB_Performanceappraisal . Create ( & departscores ) . Error
if addassessInfoErr != nil {
response . Result ( 110 , departscores , "数据写入失败!" , c )
} else {
response . Result ( 0 , departscores , "数据写入成功!" , c )
}
}
//我的评价记录
func ( a * Assessment ) MyEvaluateList ( c * gin . Context ) {
var requestData usEvaluate
err := c . ShouldBindJSON ( & requestData )
if err != nil {
// response.Result(101, err, "参数错误!请重新提交!", c)
// return
}
if requestData . PageSize == 0 {
requestData . PageSize = 20
}
if requestData . Page <= 0 {
requestData . Page = 1
}
offSetPage := commonus . CalculatePages ( requestData . Page , requestData . PageSize )
isTrue , userCont := commonus . ClientIdentity ( )
if isTrue != true {
response . Result ( 101 , err , "您的身份令牌已经失效!请重新登录获取身份令牌!" , c )
return
}
// gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Departscores{}).Select("s_depart_id", "s_file_time", "s_comment_user").Where("`s_comment_user` = ?", userCont.Key)
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . Departscores { } ) . Select ( "s_depart_id" , "s_file_time" , "s_comment_user" , "SUM(s_score) as sumscore" )
if requestData . DepartId != 0 && requestData . Time != "" {
timeStr := requestData . Time + "-01 12:00:00"
assessmentTime , assessmentTimeErr := commonus . DateToTimeStampEs ( timeStr )
if assessmentTimeErr != true {
response . Result ( 102 , timeStr , "你提交的考核日期错误!" , c )
return
}
gormDb = gormDb . Group ( "s_depart_id,s_file_time,s_comment_user" ) . Having ( "`s_depart_id` = ? AND `s_file_time` = ? AND `s_comment_user` = ?" , requestData . DepartId , assessmentTime , userCont . Key )
} else if requestData . DepartId != 0 {
gormDb = gormDb . Group ( "`s_depart_id`,`s_file_time`,`s_comment_user`" ) . Having ( "`s_depart_id` = ? AND `s_comment_user` = ?" , requestData . DepartId , userCont . Key )
} else if requestData . Time != "" {
timeStr := requestData . Time + "-01 12:00:00"
assessmentTime , assessmentTimeErr := commonus . DateToTimeStampEs ( timeStr )
if assessmentTimeErr != true {
response . Result ( 103 , timeStr , "你提交的考核日期错误!" , c )
return
}
gormDb = gormDb . Group ( "`s_depart_id`,`s_file_time`,`s_comment_user`" ) . Having ( "`s_file_time` = ? AND `s_comment_user` = ?" , assessmentTime , userCont . Key )
}
var total int64
totalErr := gormDb . Count ( & total ) . Error
if totalErr != nil {
total = 0
}
var assessList [ ] usEvaluateOutList
evaErr := gormDb . Limit ( requestData . PageSize ) . Offset ( offSetPage ) . Find ( & assessList ) . Error
if evaErr != nil {
response . Result ( 104 , evaErr , "数据获取失败!" , c )
return
}
var usEvaluateOutMap [ ] usEvaluateOut
for _ , val := range assessList {
var usEvaluateOutInfo usEvaluateOut
usEvaluateOutInfo . FileTime = val . FileTime
usEvaluateOutInfo . DepartId = val . DepartId
usEvaluateOutInfo . CommentUser = val . CommentUser
usEvaluateOutInfo . Score = val . Score
timeStr := commonus . TimeStampToDate ( val . FileTime , 10 )
usEvaluateOutInfo . FileTimeStr = timeStr
isTrueBranFact , branFactCont := assessment . GetBranchFactory ( val . DepartId )
if isTrueBranFact == true {
usEvaluateOutInfo . DepartTitle = branFactCont . Name
}
usEvaluateOutMap = append ( usEvaluateOutMap , usEvaluateOutInfo )
}
countSum := len ( usEvaluateOutMap )
printData := commonus . OutPutList ( total , int64 ( countSum ) , requestData . Page , requestData . PageSize , usEvaluateOutMap )
response . Result ( 0 , printData , "查询成功!" , c )
}
//根据部门和时间获取考核详情
func ( a * Assessment ) GetDepartTimeAssess ( c * gin . Context ) {
var requestData departTimeAssess
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . DepartId == 0 {
response . Result ( 102 , err , "未知部门!" , c )
return
}
if requestData . Time == "" {
response . Result ( 103 , err , "未知时间!" , c )
return
}
timeStr := requestData . Time + "-01 12:00:00"
assessmentTime , assessmentTimeErr := commonus . DateToTimeStampEs ( timeStr )
if assessmentTimeErr != true {
response . Result ( 104 , timeStr , "你提交的考核日期错误!" , c )
return
}
// var departScorsList []assessmentmodel.Departscores
// scorErr := global.GVA_DB_Performanceappraisal.Where("`s_depart_id` = ? AND `s_file_time` = ? AND `s_state` = 1", requestData.DepartId, assessmentTime).Find(&departScorsList).Error
// if scorErr != nil {
// response.Result(104, scorErr, "未能获取到数据!", c)
// return
// }
// var departDataAssessList []departDataAssess
// for _, val := range departScorsList {
// var departDataAssessInfo departDataAssess
// departDataAssessInfo.Id = val.Id
// departDataAssessInfo.DutyId = val.DutyId //具体职责
// departDataAssessInfo.DeductPoints = val.DeductPoints //扣分
// departDataAssessInfo.ExtraPoints = val.ExtraPoints //加分
// departDataAssessInfo.Score = val.Score //实际得分
// departDataAssessInfo.FileTime = val.FileTime //计分月份
// departDataAssessInfo.DepartId = val.DepartId //部门ID
// departDataAssessInfo.CommentUser = val.CommentUser //评论人
// departDataAssessInfo.AddTime = val.AddTime //添加时间
// departDataAssessInfo.EiteTime = val.EiteTime //编辑时间
// departDataAssessInfo.State = val.State //状态
// timeStr := commonus.TimeStampToDate(val.FileTime, 10)
// departDataAssessInfo.FileTimeStr = timeStr
// isTrueBranFact, branFactCont := assessment.GetBranchFactory(val.DepartId)
// if isTrueBranFact == true {
// departDataAssessInfo.DepartTitle = branFactCont.Name
// }
// dutyCalssErr, dutyMap := GetDutyInfoCont(val.DutyId)
// if dutyCalssErr == true {
// departDataAssessInfo.ClassId = dutyMap.ClassId
// departDataAssessInfo.ClassTitle = dutyMap.ClassTitle
// departDataAssessInfo.AssessId = dutyMap.AssessId
// departDataAssessInfo.AssessTitle = dutyMap.AssessTitle
// departDataAssessInfo.DutyTitle = dutyMap.DutyTitle
// }
// departDataAssessList = append(departDataAssessList, departDataAssessInfo)
// }
// outPrint := commonus.MapOut()
// outPrint["list"] = departDataAssessList
// response.Result(0, outPrint, "获取成功!", c)
var departScorsList [ ] assessmentmodel . Departscores
scorErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . Departscores { } ) . Select ( "s_class" ) . Where ( "`s_depart_id` = ? AND `s_file_time` = ? AND `s_state` = 1" , requestData . DepartId , assessmentTime ) . Group ( "s_class" ) . Find ( & departScorsList ) . Error
if scorErr != nil {
response . Result ( 104 , scorErr , "未能获取到数据!" , c )
return
}
var departMonthList [ ] departMonth
for _ , val := range departScorsList {
var departMonthInfo departMonth
departMonthInfo . Id = val . ClassId
classErr , classInfo := assessment . GetDutyClassCont ( val . ClassId )
if classErr == true {
departMonthInfo . Title = classInfo . Title
}
assErr , assList := GetAssList ( val . ClassId , requestData . DepartId , assessmentTime )
if assErr == true {
departMonthInfo . Clide = assList
}
departMonthList = append ( departMonthList , departMonthInfo )
}
outPrint := commonus . MapOut ( )
outPrint [ "list" ] = departMonthList
response . Result ( 0 , outPrint , "获取成功!" , c )
}
//获取考核项目列表
func GetAssList ( classId , depart , timeVal int64 ) ( isTrue bool , departMonthAss [ ] departMonthSun ) {
isTrue = false
var departScorsList [ ] assessmentmodel . Departscores
scorErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . Departscores { } ) . Select ( "s_assess" ) . Where ( "`s_depart_id` = ? AND `s_file_time` = ? AND `s_class` = ? AND `s_state` = 1" , depart , timeVal , classId ) . Group ( "s_assess" ) . Find ( & departScorsList ) . Error
if scorErr != nil {
return
}
for _ , val := range departScorsList {
var departMonthSunsInfo departMonthSun
departMonthSunsInfo . Id = val . AssessId
classErr , classInfo := assessment . GetAssessClass ( val . AssessId )
if classErr == true {
departMonthSunsInfo . Title = classInfo . Title
}
isErr , userDuty := GetDetailedDuty ( classId , val . AssessId , depart , timeVal )
if isErr == true {
departMonthSunsInfo . Clide = userDuty
}
departMonthAss = append ( departMonthAss , departMonthSunsInfo )
}
isTrue = true
return
}
//获取具体考核项目
func GetDetailedDuty ( classId , assId , depart , timeVal int64 ) ( isTrue bool , departMonthUser [ ] departMonthSun ) {
isTrue = false
var departScorsList [ ] commentUser
scorErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . Departscores { } ) . Select ( "s_comment_user" ) . Where ( "`s_depart_id` = ? AND `s_file_time` = ? AND `s_class` = ? AND `s_assess` = ? AND `s_state` = 1" , depart , timeVal , classId , assId ) . Group ( "s_comment_user" ) . Find ( & departScorsList ) . Error
// fmt.Printf("----------->%v\n", departScorsList)
if scorErr != nil {
return
}
// var departMonthUser []departMonthSun
for _ , val := range departScorsList {
var departMonthUserInfo departMonthSun
departMonthUserInfo . Id = val . UserKey
usCont , usErr := archiveapi . GetUserInfo ( [ ] string { "worker_man.wm_number" , "worker_man_data.wmd_name" , "worker_man.wm_bf_id" , "worker_man.wm_ws_id" , "worker_man.wm_pt_id" , "worker_man.wm_group" } , map [ string ] interface { } { "wm_key" : val . UserKey } )
if usErr == true {
departMonthUserInfo . Title = usCont . Name
isTrueBranFact , branFactCont := assessment . GetBranchFactory ( usCont . DepartmentId )
if isTrueBranFact == true {
departMonthUserInfo . DepartTitle = branFactCont . Name
}
}
dutyErr , dutyMap := GetDutyContAry ( classId , assId , depart , val . UserKey , timeVal )
if dutyErr == true {
departMonthUserInfo . List = dutyMap
}
departMonthUser = append ( departMonthUser , departMonthUserInfo )
}
isTrue = true
return
}
//获取考核具体职责项目
func GetDutyContAry ( classId , assId , depart , userKey , timeVal int64 ) ( isTrue bool , dutyList [ ] departDutyList ) {
// fmt.Printf("--->%v--->%v\n", classId, assId)
isTrue = false
var dutyListMAp [ ] departDutyList
scorErr := global . GVA_DB_Performanceappraisal . Where ( "`s_depart_id` = ? AND `s_file_time` = ? AND `s_class` = ? AND `s_assess` = ? AND `s_comment_user` = ? AND `s_state` = 1" , depart , timeVal , classId , assId , userKey ) . Find ( & dutyListMAp ) . Error
if scorErr != nil {
return
}
// fmt.Printf("1--->%v--->%v\n", classId, assId)
for _ , val := range dutyListMAp {
// fmt.Printf("2--->%v--->%v\n", classId, assId)
var dutyCont departDutyList
dutyCont . Id = val . Id
dutyCont . ClassId = val . ClassId
dutyCont . AssessId = val . AssessId
dutyCont . DutyId = val . DutyId
dutyCont . DeductPoints = val . DeductPoints
dutyCont . ExtraPoints = val . ExtraPoints
dutyCont . Score = val . Score
dutyCont . FileTime = val . FileTime
dutyCont . DepartId = val . DepartId
dutyCont . CommentUser = val . CommentUser
dutyCont . AddTime = val . AddTime
dutyCont . EiteTime = val . EiteTime
dutyCont . State = val . State
dtyContErr , dtyCont := GetDutyInfoCont ( val . DutyId )
if dtyContErr == true {
dutyCont . DutyTitle = dtyCont . DutyTitle
}
dutyList = append ( dutyList , dutyCont )
}
isTrue = true
return
}
//获取职责类别内容
func GetDutyInfoCont ( id int64 ) ( isTrue bool , outAssDutyInfo outAessDuty ) {
isTrue = false
var ContInfo dutyAssClass
err := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DutyContent { } ) . Select ( "dc_title" , "dc_parent" , "ai_title" , "ai_parent" ) . Joins ( "left join assessmentitems on assessmentitems.ai_id = dutycontent.dc_parent" ) . Where ( "dc_id = ?" , id ) . First ( & ContInfo ) . Error
if err != nil {
return
}
outAssDutyInfo . AssessId = ContInfo . PartId
outAssDutyInfo . AssessTitle = ContInfo . AssTitle
outAssDutyInfo . DutyTitle = ContInfo . Title
outAssDutyInfo . ClassId = ContInfo . AssPartId
classErr , classInfo := assessment . GetDutyClassCont ( ContInfo . AssPartId )
if classErr == true {
outAssDutyInfo . ClassTitle = classInfo . Title
}
isTrue = true
return
}