dddd
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.
 
 
 
 
 

545 lines
20 KiB

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"
)
//考核入口
func (a *Assessment) Index(c *gin.Context) {
outPut := commonus.MapOut()
response.Result(0, outPut, "用户端获取成功", c)
}
//获取要考核的列表
func (a *Assessment) MyAssEssMentList(c *gin.Context) {
var requestData getAssEssList
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
}
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
}