绩效考核
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1165 lines
42 KiB

package assessment
import (
"encoding/json"
"fmt"
"strconv"
"time"
"gin_server_admin/api/v1/archiveapi"
"gin_server_admin/api/v1/assessment"
"gin_server_admin/api/wechatapp/sendmessage"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
"gin_server_admin/model/systemuser"
"gin_server_admin/model/testpage"
"gin_server_admin/utils/redishandel"
"github.com/gin-gonic/gin"
"github.com/mitchellh/mapstructure"
)
// 考核入口
func (a *Assessment) Index(c *gin.Context) {
outPut := commonus.MapOut()
response.Result(0, outPut, "用户端获取成功", c)
}
// 扫码登录回传
func (a *Assessment) ScanCode(c *gin.Context) {
var requestData scanCodeStr
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
var redisAdminInfo commonus.ScanCodeLogin
redisClient := redishandel.RunRedis()
redisClient.SetRedisDb(5)
redisKey := fmt.Sprintf("ScanCode:Authentication:LoginApi_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, requestData.UserKey)
tokenInfo, isTrue := redisClient.HashGetAll(redisKey)
if isTrue != true {
outData := commonus.MapOut()
outData["redisKey"] = redisKey
outData["tokenInfo"] = tokenInfo
outData["isTrue"] = isTrue
response.Result(102, outData, "验证失败!不允许登录!", c)
return
}
identityErr := mapstructure.Decode(tokenInfo, &redisAdminInfo)
if identityErr != nil {
response.Result(103222, redisKey, "验证失败!不允许登录!", c)
return
}
if requestData.UserToken != redisAdminInfo.UserToken {
yanzheng := commonus.MapOut()
yanzheng["User"] = redisAdminInfo
yanzheng["redisKey"] = redisKey
yanzheng["UserToken"] = requestData.UserToken
yanzheng["RedisUserToken"] = redisAdminInfo.UserToken
response.Result(104, yanzheng, "验证失败!不允许登录!", c)
return
}
sendData := commonus.MapOut()
sendData["key"] = redisAdminInfo.UserKey
sendData["token"] = redisAdminInfo.UserToken
sendData["userinfo"] = redisAdminInfo
var jurisDiction []int64
json.Unmarshal([]byte(redisAdminInfo.Jurisdiction), &jurisDiction)
sendData["Jurisdiction"] = jurisDiction
var menuOper []int64
json.Unmarshal([]byte(redisAdminInfo.MenuOper), &menuOper)
sendData["MenuOper"] = menuOper
response.Result(0, sendData, "用户端获取成功", c)
}
func (a *Assessment) ScanCodeOld(c *gin.Context) {
var requestData scanCodeStr
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
var redisAdminInfo systemuser.RedisAdminInfo
redisClient := redishandel.RunRedis()
redisKey := fmt.Sprintf("system:SystemAdminInfo_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, requestData.UserKey)
tokenInfo, isTrue := redisClient.HashGetAll(redisKey)
if isTrue != true {
response.Result(102, err, "验证失败!不允许登录!", c)
return
}
identityErr := mapstructure.Decode(tokenInfo, &redisAdminInfo)
if identityErr != nil {
response.Result(103222, redisKey, "验证失败!不允许登录!", c)
return
}
if requestData.UserToken != redisAdminInfo.UserToken {
yanzheng := commonus.MapOut()
yanzheng["User"] = redisAdminInfo
yanzheng["redisKey"] = redisKey
yanzheng["UserToken"] = requestData.UserToken
yanzheng["RedisUserToken"] = redisAdminInfo.UserToken
response.Result(104, yanzheng, "验证失败!不允许登录!", c)
return
}
sendData := commonus.MapOut()
sendData["key"] = redisAdminInfo.UserKey
sendData["token"] = redisAdminInfo.UserToken
sendData["userinfo"] = redisAdminInfo
var jurisDiction []int64
json.Unmarshal([]byte(redisAdminInfo.JurisDiction), &jurisDiction)
sendData["Jurisdiction"] = jurisDiction
var menuOper []int64
json.Unmarshal([]byte(redisAdminInfo.MenuOper), &menuOper)
sendData["MenuOper"] = menuOper
response.Result(0, sendData, "用户端获取成功", c)
}
// 获取要考核的列表
func (a *Assessment) MyAssEssMentList(c *gin.Context) {
var requestData getAssEssList
err := c.ShouldBindJSON(&requestData)
if err != nil {
// response.Result(101, err, "参数错误!请重新提交!", c)
// return
}
dayTime := time.Now()
monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
switch requestData.DayState {
case 1:
monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
case 2:
lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 1)
monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上一个月
case 3:
lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 2)
monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上两个月
default:
monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
}
if requestData.PageSize == 0 {
requestData.PageSize = 20
}
if requestData.Page <= 0 {
requestData.Page = 1
}
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(1001, 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.Deparment)
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.OutId = strconv.FormatInt(val.Id, 10)
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, monthData)
// 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, dataStr string) (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
assInfo.IsTrue = JudgeResAssEssExam(val.DutyId, val.PartId, dataStr)
assessDepartstr = append(assessDepartstr, assInfo)
}
isTrue = true
return
}
// 判断部门指定月份是否已经考核完毕
func JudgeResAssEssExam(dutyId, departId int64, monthTimeStr string) (isTrue bool) {
isTrue = false
// var departscores assessmentmodel.Departscores
monthTimeStr = monthTimeStr + "-01 12:00:00"
fileTime, fileTimeErr := commonus.DateToTimeStampEs(monthTimeStr)
if fileTimeErr != true {
return
}
outMap := commonus.MapOut()
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Departscores{}).Select("s_id").Where("`s_duty` = ? AND `s_depart_id` = ? AND `s_file_time` = ?", dutyId, departId, fileTime).First(&outMap).Error
if err == nil {
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
}
dayTime := time.Now()
monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
isTrue, departList := GetAssDepart(id, monthData)
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
// }
assIsTrue, assInfo := assessment.GetDutyInfoContAll(dutyId)
if assIsTrue != true {
response.Result(104, dutyId, "请指定考核项目已禁止使用!", c)
return
}
classId := assInfo.ClassId
assessId := assInfo.AssessId
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(1001, 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*10 {
response.Result(108, err, "扣分不能高于参考值!", c)
return
}
if requestData.ExtraPoints > departDutyCont.Rescore*10 {
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(1001, 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)
} else {
gormDb = gormDb.Group("`s_depart_id`,`s_file_time`,`s_comment_user`")
}
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
}
// 以部门为维度获取考核项目
func (a *Assessment) DepartmentAssess(c *gin.Context) {
var requestData departAssessType
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.DepartmentId == 0 {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
if requestData.GroupId == 0 {
groupId, groupErr := strconv.Atoi(userCont.Company)
if groupErr == nil {
requestData.GroupId = groupId
} else {
response.Result(104, err, "参数错误!请重新提交!", c)
return
}
}
dayTime := time.Now()
monthData := commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
switch requestData.DayState {
case 1:
monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
case 2:
lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 1)
monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上一个月
case 3:
lastOneMonthStart, _ := commonus.AppointTimeFrontMonth(dayTime, 2)
monthData = commonus.TimeStampToDate(lastOneMonthStart, 10) //上两个月
default:
monthData = commonus.TimeStampToDate(dayTime.Unix(), 10) //当月
}
var ContInfo []departAssessOutType
departErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartDuty{}).Select("departduty.*", "dutycontent.dc_title", "dutycontent.dc_state", "dutycontent.dc_user_dump", "dutycontent.dc_dump", "dutycontent.dc_user_type", "dutycontent.dc_parent").Joins("left join dutycontent on departduty.de_duty = dutycontent.dc_id").Where("(`de_partid` = ? AND `de_group` = ? AND `de_satte` = 1) AND ((`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1)", requestData.DepartmentId, requestData.GroupId, userCont.Key, userCont.Deparment).Find(&ContInfo).Error
if departErr != nil {
response.Result(105, err, "没有要考核的项目!", c)
return
}
var outContMap []departAssessOutType
// outMapList := []commonus.MapOut()
for _, val := range ContInfo {
var outCont departAssessOutType
outCont.Id = val.Id
outCont.Titles = val.Titles
outCont.Rescore = val.Rescore
outCont.OutID = strconv.FormatInt(val.Id, 10)
isTrue := JudgeResAssEssExam(val.Id, int64(requestData.DepartmentId), monthData)
outCont.IsTrue = isTrue
if isTrue == false {
outContMap = append(outContMap, outCont)
}
}
// JudgeResAssEssExam(val.DutyId, val.PartId, dataStr) .Where("(`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1", userCont.Key, userCont.DepartmentId)
response.Result(0, outContMap, "查询成功!", c)
}
// 以部门为基准填写考核数据
func (a *Assessment) DepartmentAssessData(c *gin.Context) {
var requestData DepartDutyData
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
var orderId int64
var departId int
var executorUser int64
var executorDepart int
orderId = 0
departId = 0
executorUser = 0
executorDepart = 0
if requestData.OrderId == "" {
response.Result(102, err, "未知订单号!请重新提交!", c)
return
} else {
orderIdVal, orderIdErr := strconv.ParseInt(requestData.OrderId, 10, 64)
if orderIdErr == nil {
orderId = orderIdVal
} else {
response.Result(103, err, "未知订单号!请重新提交!", c)
return
}
}
var assessLogCont assessmentmodel.AssessmentLog //考核记录
orderContErr := global.GVA_DB_Performanceappraisal.Select("al_id").Where("`al_order_id` = ?", orderId).First(&assessLogCont).Error
if orderContErr == nil {
response.Result(121, orderId, "该订单已经提交审批!请不要重复提交审批!", c)
return
}
if requestData.Title == "" {
response.Result(104, err, "未知考核标题!请重新提交!", c)
return
}
if requestData.DepartId == "" {
response.Result(105, err, "未知被考核的部门!请重新提交!", c)
return
} else {
departIdVal, departIdErr := strconv.Atoi(requestData.DepartId)
if departIdErr == nil {
departId = departIdVal
} else {
response.Result(106, err, "未知被考核的部门!请重新提交!", c)
return
}
}
if requestData.ExecutorUser == "" {
response.Result(107, err, "未知考核执行人!请重新提交!", c)
return
} else {
executorUserVal, executorUserErr := strconv.ParseInt(requestData.ExecutorUser, 10, 64)
if executorUserErr == nil {
executorUser = executorUserVal
} else {
response.Result(108, err, "未知考核执行人!请重新提交!", c)
return
}
}
if requestData.ExecutorDepart == "" {
response.Result(109, err, "未知考核执行部门!请重新提交!", c)
return
} else {
executorDepartVal, executorDepartErr := strconv.Atoi(requestData.ExecutorDepart)
if executorDepartErr == nil {
executorDepart = executorDepartVal
} else {
response.Result(110, err, "未知考核执行部门!请重新提交!", c)
return
}
}
if requestData.DateTime == "" {
response.Result(111, err, "未知考核时间!请重新提交!", c)
return
}
monthTimeStr := requestData.DateTime + "-01 12:00:00"
fileTime, fileTimeErr := commonus.DateToTimeStampEs(monthTimeStr)
if fileTimeErr != true {
response.Result(112, err, "考核时间格式错误!请重新提交!", c)
return
}
if len(requestData.DutyList) <= 0 {
}
for reIndex, reData := range requestData.DutyList {
if reData.DutyId == "" {
response.Result(113, reIndex, "未知考核项目!请重新提交!", c)
return
}
if reData.DeductPoints > reData.ReferenceScore {
response.Result(114, reIndex, "考核项目扣分大于参考分!请重新提交!", c)
return
}
if reData.ExtraPoints > reData.ReferenceScore {
response.Result(115, reIndex, "考核项目加分大于参考分!请重新提交!", c)
return
}
if reData.DeductPoints > 0 && reData.DeductPointsText == "" {
response.Result(1114, reData.DutyId, "考核项目有扣分,必须填写扣分原因!", c)
return
}
if reData.ExtraPoints > 0 && reData.ExtraPointsText == "" {
response.Result(1115, reData.DutyId, "考核项目有加分,必须填写加分原因!", c)
return
}
}
var assessLog assessmentmodel.AssessmentLog //考核记录
// assessLog.Id = commonus.GetFileNumberEs()
assessLog.Title = requestData.Title
assessLog.Assdepart = departId
assessLog.ExecutorUser = executorUser
assessLog.ExecutorDepart = executorDepart
assessLog.ExecutorTime = fileTime
assessLog.OrderId = orderId
assessLog.States = 1
assessLog.AddTime = time.Now().Unix()
assessLog.EiteTime = time.Now().Unix()
var dutyListMap []assessmentmodel.Departscores
for _, dutyCont := range requestData.DutyList {
var dutyListCont assessmentmodel.Departscores
dutyId, orderIdErr := strconv.ParseInt(dutyCont.DutyId, 10, 64)
if orderIdErr != nil {
response.Result(116, dutyCont.DutyId, "指定考核项目ID不正确!", c)
return
}
assIsTrue, assInfo := commonus.GetDutyContDepart(dutyId)
if assIsTrue != true {
response.Result(117, dutyCont.DutyId, "指定考核项目已禁止使用!", c)
return
}
classId := assInfo.ClassId
assessId := assInfo.AssessId
actualScore := dutyCont.ReferenceScore - dutyCont.DeductPoints + dutyCont.ExtraPoints
if actualScore < 0 {
actualScore = 0
}
dutyListCont.Id = commonus.GetFileNumberEs()
dutyListCont.ClassId = classId
dutyListCont.AssessId = assessId
dutyListCont.DutyId = dutyId
dutyListCont.DeductPoints = int64(dutyCont.DeductPoints)
dutyListCont.ExtraPoints = int64(dutyCont.ExtraPoints)
// dutyListCont.Score = requestData.Score
dutyListCont.Score = int64(actualScore)
dutyListCont.FileTime = fileTime
dutyListCont.DepartId = int64(departId)
dutyListCont.CommentUser = executorUser
dutyListCont.AddTime = time.Now().Unix()
dutyListCont.EiteTime = time.Now().Unix()
dutyListCont.State = 1
dutyListCont.DeductPointsText = dutyCont.DeductPointsText
dutyListCont.ExtraPointsText = dutyCont.ExtraPointsText
dutyListMap = append(dutyListMap, dutyListCont)
}
dutyList, dutyListErr := json.Marshal(dutyListMap)
if dutyListErr == nil {
assessLog.DutyList = string(dutyList)
}
outContMap := commonus.MapOut()
outContMap["assessLog"] = assessLog
outContMap["dutyListMap"] = dutyListMap
outContMap["lookid"] = requestData.OrderId
//写入数据
affairDb := global.GVA_DB_Performanceappraisal.Begin()
assessLogErr := affairDb.Create(&assessLog).Error
dutyListMapErr := affairDb.Create(&dutyListMap).Error
if assessLogErr == nil && dutyListMapErr == nil {
affairDbErr := affairDb.Commit().Error
if affairDbErr == nil {
response.Result(0, outContMap, "数据写入成功!", c)
} else {
response.Result(118, outContMap, "数据写入失败!", c)
}
} else {
affairDbErr := affairDb.Rollback().Error
if affairDbErr == nil {
response.Result(119, outContMap, "数据写入失败!", c)
} else {
response.Result(120, outContMap, "数据写入失败!", c)
}
}
}
// 查看审批详细内容
func (a *Assessment) LookDepartmentAssessInfo(c *gin.Context) {
var requestData LookDutyCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.Id == "" {
response.Result(102, err, "参数错误!不可产看!", c)
return
}
orderId, orderIdErr := strconv.ParseInt(requestData.Id, 10, 64)
if orderIdErr != nil {
response.Result(103, err, "参数错误!不可产看!", c)
return
}
var assessLogCont assessmentmodel.AssessmentLog //考核记录
orderContErr := global.GVA_DB_Performanceappraisal.Where("`al_order_id` = ?", orderId).First(&assessLogCont).Error
if orderContErr != nil {
response.Result(104, orderId, "该审批单不存在!请检查是否查看错误!", c)
return
}
var dutyListMap []assessmentmodel.Departscores
jsonErr := json.Unmarshal([]byte(assessLogCont.DutyList), &dutyListMap)
if jsonErr != nil {
response.Result(105, jsonErr, "审批详情异常,不可查看!请联系系统管理员排查故障!", c)
return
}
var lookSeeDutyContMap []LookSeeDutyCont
outList := commonus.MapOutint()
for index, val := range dutyListMap {
var lookSeeDutyCont LookSeeDutyCont
outInfo := commonus.MapOut()
outInfo["id"] = strconv.FormatInt(val.Id, 10)
outInfo["classID"] = strconv.FormatInt(val.ClassId, 10)
outInfo["assessId"] = strconv.FormatInt(val.AssessId, 10)
outInfo["dutyId"] = strconv.FormatInt(val.DutyId, 10)
outInfo["deductPoints"] = strconv.FormatInt(val.DeductPoints, 10)
outInfo["extraPoints"] = strconv.FormatInt(val.ExtraPoints, 10)
outInfo["score"] = strconv.FormatInt(val.Score, 10)
outInfo["departId"] = strconv.FormatInt(val.DepartId, 10)
outInfo["commentUser"] = strconv.FormatInt(val.CommentUser, 10)
lookSeeDutyCont.Id = strconv.FormatInt(val.Id, 10)
lookSeeDutyCont.ClassID = strconv.FormatInt(val.ClassId, 10)
lookSeeDutyCont.AssessId = strconv.FormatInt(val.AssessId, 10)
lookSeeDutyCont.DutyId = strconv.FormatInt(val.DutyId, 10)
lookSeeDutyCont.DeductPoints = strconv.FormatInt(val.DeductPoints, 10)
lookSeeDutyCont.ExtraPoints = strconv.FormatInt(val.ExtraPoints, 10)
lookSeeDutyCont.Score = strconv.FormatInt(val.Score, 10)
lookSeeDutyCont.DepartId = strconv.FormatInt(val.DepartId, 10)
lookSeeDutyCont.CommentUser = strconv.FormatInt(val.CommentUser, 10)
lookSeeDutyCont.DeductPointstext = val.DeductPointsText
lookSeeDutyCont.ExtraPointstext = val.ExtraPointsText
// dtyContErr, dtyCont := GetDutyInfoCont(val.DutyId)
dtyContErr, dtyCont := commonus.GetDutyContDepart(val.DutyId)
if dtyContErr == true {
outInfo["classTitle"] = dtyCont.ClassTitle
outInfo["assessTitle"] = dtyCont.AssTitle
outInfo["dutyTitle"] = dtyCont.Title
lookSeeDutyCont.ClassTitle = dtyCont.ClassTitle
lookSeeDutyCont.AssessTitle = dtyCont.AssTitle
lookSeeDutyCont.DutyTitle = dtyCont.Title
} else {
outInfo["classTitle"] = ""
outInfo["assessTitle"] = ""
outInfo["dutyTitle"] = ""
}
outList[index] = outInfo
lookSeeDutyContMap = append(lookSeeDutyContMap, lookSeeDutyCont)
}
outContMap := commonus.MapOut()
outContMap["assessLog"] = assessLogCont
outContMap["dutyListMap"] = lookSeeDutyContMap
// outContMap["dutyListMaps"] = dutyListMap
response.Result(0, outContMap, "数据写入成功!", c)
}
// 查询自建应用审批单当前状态
func (a *Assessment) LookOpenApprovalDataInfo(c *gin.Context) {
var requestData LookDutyCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.Id == "" {
response.Result(102, err, "参数错误!不可产看!", c)
return
}
orderId, orderIdErr := strconv.ParseInt(requestData.Id, 10, 64)
if orderIdErr != nil {
response.Result(103, err, "参数错误!不可产看!", c)
return
}
var assessLogCont assessmentmodel.AssessmentLog //考核记录
orderContErr := global.GVA_DB_Performanceappraisal.Where("`al_order_id` = ?", orderId).First(&assessLogCont).Error
if orderContErr != nil {
response.Result(104, orderId, "该审批单不存在!请检查是否查看错误!", c)
return
}
var oAS sendmessage.OpenApprovalState
oAS.ThirdNo = requestData.Id
callBackData, isTrue, msg := oAS.SendMessage("school")
if isTrue != true {
response.Result(105, string(callBackData), msg, c)
return
}
var jsonToOpenApprovalStruct OpenApprovalDataInfo
jsonErr := json.Unmarshal(callBackData, &jsonToOpenApprovalStruct)
if jsonErr != nil {
response.Result(106, string(callBackData), "数据解析错误", c)
return
}
if jsonToOpenApprovalStruct.Errcode != 0 {
response.Result(107, jsonToOpenApprovalStruct, jsonToOpenApprovalStruct.Errmsg, c)
return
}
response.Result(0, jsonToOpenApprovalStruct, "查询成功!", c)
}
// 查看本部门提交的和个人提交的审批
func (a *Assessment) LookPersonalOrDepartment(c *gin.Context) {
var requestData commonus.PageSetLimt
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, userInfo := commonus.ClientIdentity()
if isTrue != true {
response.Result(1001, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
departmentID, departmentIDErr := strconv.ParseInt(userInfo.Deparment, 10, 64)
if departmentIDErr != nil {
response.Result(104, err, "参数错误!请重新提交!", c)
return
}
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.AssessmentLog{})
maxErr, maxCont := commonus.GetPositionMaxWeight(departmentID)
// fmt.Printf("最大值:======>%v======>%v\n", maxErr, maxCont)
if maxErr == true {
postID, postIDErr := strconv.ParseInt(userInfo.Position, 10, 64)
if postIDErr == nil {
if maxCont.Id == postID {
gormDb = gormDb.Where("`al_executor_depart` = ?", departmentID)
} else {
gormDb = gormDb.Where("`al_executor_user` = ?", userInfo.Key)
}
} else {
gormDb = gormDb.Where("`al_executor_user` = ?", userInfo.Key)
}
} else {
gormDb = gormDb.Where("`al_executor_user` = ?", userInfo.Key)
}
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
var assessList []assessmentmodel.AssessmentLog
assessListerr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Order("al_id desc").Find(&assessList).Error
if assessListerr != nil {
response.Result(102, assessListerr, "数据获取失败!", c)
return
}
var personalOrDepartment []PersonalOrDepartment
for _, val := range assessList {
var personalOrDepartments PersonalOrDepartment
personalOrDepartments.Id = val.Id
personalOrDepartments.Title = val.Title
personalOrDepartments.Assdepart = val.Assdepart
personalOrDepartments.ExecutorUser = val.ExecutorUser
personalOrDepartments.ExecutorDepart = val.ExecutorDepart
personalOrDepartments.ExecutorTime = val.ExecutorTime
personalOrDepartments.OrderId = val.OrderId
personalOrDepartments.States = val.States
personalOrDepartments.AddTime = val.AddTime
personalOrDepartments.EiteTime = val.EiteTime
personalOrDepartments.DutyList = val.DutyList
bfIsTrue, bfCont := commonus.GetBranchFactory(int64(val.Assdepart))
if bfIsTrue == true {
personalOrDepartments.AssdepartTitle = bfCont.Name
}
personalOrDepartment = append(personalOrDepartment, personalOrDepartments)
}
countSum := len(personalOrDepartment)
printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, personalOrDepartment)
response.Result(0, printData, "查询成功!", c)
}
// 获取班组列表
func (a *Assessment) GetTeamList(c *gin.Context) {
var teamList []testpage.Teaming
err := global.GVA_DB_Master.Order("tm_long ASC,tm_id ASC").Find(&teamList).Error
if err != nil {
response.Result(101, err, "查询失败!", c)
return
}
response.Result(0, teamList, "查询成功!", c)
}