diff --git a/gin_server_admin/api/index/assessment/assesshandle.go b/gin_server_admin/api/index/assessment/assesshandle.go index 928caa4..eda7cc0 100644 --- a/gin_server_admin/api/index/assessment/assesshandle.go +++ b/gin_server_admin/api/index/assessment/assesshandle.go @@ -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 } diff --git a/gin_server_admin/api/index/assessment/assesstype.go b/gin_server_admin/api/index/assessment/assesstype.go index 6e01ddf..418d6d8 100644 --- a/gin_server_admin/api/index/assessment/assesstype.go +++ b/gin_server_admin/api/index/assessment/assesstype.go @@ -1,6 +1,9 @@ package assessment -import "github.com/flipped-aurora/gin-vue-admin/server/commonus" +import ( + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" +) //考核 type Assessment struct{} @@ -10,3 +13,134 @@ type getAssEssList struct { commonus.PageSetLimt BranchFactoryId int `json:"branchFactoryId"` } + +//考核项目输出 +type assessOut struct { + assessmentmodel.DutyContent + ClassId int64 `json:"classId"` + ClassTitle string `json:"classTitle"` + AssessId int64 `json:"assessId"` + AssessTitle string `json:"assessTitle"` + AssessDepart []assessDepart `json:"assessDepart"` +} + +//要考核的部门评分 +type assessDepart struct { + DepartDutyId int64 `json:"departDutyId"` + DepartId int64 `json:"departId"` + DepartTitle string `json:"departTitle"` + ClassId int64 `json:"classId"` + AssessId int64 `json:"assessId"` + DutyId int64 `json:"dutyId"` + Rescore int64 `json:"rescore"` + Group int64 `json:"group"` +} + +//更具具体考核项目获取考核部门 +type assessDepartRequest struct { + Id string `json:"id"` +} + +//添加考核评分 +type addAssEssScore struct { + ClassId string `json:"classID"` //考核分类 + AssessId string `json:"assessId"` //考核项目 + DutyId string `json:"dutyId"` //具体职责 + DeductPoints int `json:"deductPoints"` //扣分 + ExtraPoints int `json:"extraPoints"` //加分 + Score int `json:"score"` //实际得分 + FileTime string `json:"fileTime"` //计分月份 + DepartId int64 `json:"departId"` //部门ID + Group int `json:"group"` //集团 + CommentUser string `json:"commentUser"` //评论人 + DommentDepart int64 `json:"commentDepart"` //评论人部门 + CommentGroup int64 `json:"commentGroup"` //评论人集团 +} + +type addAssEssScores struct { + ClassId string `json:"classID"` //考核分类 + AssessId string `json:"assessId"` //考核项目 + DutyId string `json:"dutyId"` //具体职责 + DeductPoints int64 `json:"deductPoints"` //扣分 + ExtraPoints int64 `json:"extraPoints"` //加分 + Score int64 `json:"score"` //实际得分 + FileTime string `json:"fileTime"` //计分月份 + DepartId int64 `json:"departId"` //部门ID + CommentUser string `json:"commentUser"` //评论人 +} + +//获取部门时间考核详情 +type departTimeAssess struct { + DepartId int64 `json:"departId"` + Time string `json:"time"` +} + +//查询个人评价列表 +type usEvaluate struct { + commonus.PageSetLimt + departTimeAssess +} + +type usEvaluateOutList struct { + FileTime int64 `json:"fileTime" gorm:"column:s_file_time;type:bigint(20) unsigned;default:0;not null;comment:计分月份"` + DepartId int64 `json:"departId" gorm:"column:s_depart_id;type:bigint(20) unsigned;default:0;not null;comment:部门ID"` + CommentUser int64 `json:"commentUser" gorm:"column:s_comment_user;type:bigint(20) unsigned;default:0;not null;comment:评论人"` + Score int `json:"sumscore" gorm:"column:sumscore;type:int(3) unsigned;default:0;not null;comment:实际得分"` +} + +//个人评价列表输出 +type usEvaluateOut struct { + usEvaluateOutList + FileTimeStr string `json:"timeStr"` + DepartTitle string `json:"departTitle"` +} + +//部门月份考核详细输出 +type departDataAssess struct { + assessmentmodel.Departscores + FileTimeStr string `json:"timeStr"` + DepartTitle string `json:"departTitle"` + outAessDuty +} + +//输出考核关系架构 +type outAessDuty struct { + ClassId int64 `json:"classId"` + ClassTitle string `json:"classTitle"` + AssessId int64 `json:"assessId"` + AssessTitle string `json:"assessTitle"` + DutyTitle string `json:"dutyTitle"` +} + +//具体职责项与考核项目,类别 +type dutyAssClass struct { + Title string `json:"title" gorm:"column:dc_title;type:text;comment:具体职责"` + PartId int64 `json:"partId" gorm:"column:dc_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` + AssTitle string `json:"Asstitle" gorm:"column:ai_title;type:varchar(255);comment:考核类别"` + AssPartId int64 `json:"AsspartId" gorm:"column:ai_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` + ClassTitle string `json:"Classtitle" gorm:"column:title;type:varchar(255);comment:职责类别名称"` +} + +//部门月份具体考核详情 +type departMonth struct { + Id int64 `json:"id"` + Title string `json:"title"` + Clide []departMonthSun `json:"Clide"` +} + +type departMonthSun struct { + Id int64 `json:"id"` + Title string `json:"title"` + DepartTitle string `json:"departTitle"` + Clide []departMonthSun `json:"Clide"` + List []departDutyList `json:"list"` +} +type departDutyList struct { + assessmentmodel.Departscores + DutyTitle string `json:"dutyTitle"` +} + +//归档审批人 +type commentUser struct { + UserKey int64 `json:"userkey" gorm:"column:s_comment_user;type:bigint(20) unsigned;default:0;not null;comment:评论人"` +} diff --git a/gin_server_admin/api/v1/archiveapi/graphicinformation.go b/gin_server_admin/api/v1/archiveapi/graphicinformation.go index 1fa9077..86ed8e6 100644 --- a/gin_server_admin/api/v1/archiveapi/graphicinformation.go +++ b/gin_server_admin/api/v1/archiveapi/graphicinformation.go @@ -483,7 +483,7 @@ func (g *GraphicInformation) GetArchiveFileAttributeList(c *gin.Context) { var bookAttrContMap []archiveFileAttrOutPut for _, bookAttrVal := range bookAttrbuteList { var bookAttrCont archiveFileAttrOutPut - getMyInfo, myInfoIstrue := getUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": bookAttrVal.UserId}) + getMyInfo, myInfoIstrue := GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": bookAttrVal.UserId}) bookAttrCont.Id = bookAttrVal.Id bookAttrCont.OutId = strconv.FormatInt(bookAttrVal.Id, 10) bookAttrCont.FileId = bookAttrVal.FileId @@ -507,7 +507,7 @@ func (g *GraphicInformation) GetArchiveFileAttributeList(c *gin.Context) { } //获取人员信息 -func getUserInfo(field []string, whereMap map[string]interface{}) (userCont testpage.PersonalDetails, isTrue bool) { +func GetUserInfo(field []string, whereMap map[string]interface{}) (userCont testpage.PersonalDetails, isTrue bool) { isTrue = false var userInfo testpage.WorkMan userErr := global.GVA_DB_Master.Model(&userInfo).Select(field).Joins("left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key").Where(whereMap).Find(&userCont).Error @@ -575,7 +575,7 @@ func (g *GraphicInformation) GetDiscussFileMsg(c *gin.Context) { if errDisJson == nil { bookAttrCont.UserJsonCont = discussJson } - getMyInfo, myInfoIstrue := getUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": bookAttrVal.UserId}) + getMyInfo, myInfoIstrue := GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": bookAttrVal.UserId}) if myInfoIstrue == true { bookAttrCont.Number = getMyInfo.Number bookAttrCont.Name = getMyInfo.Name diff --git a/gin_server_admin/api/v1/assessment/assesshandle.go b/gin_server_admin/api/v1/assessment/assesshandle.go index 602f190..c14fc68 100644 --- a/gin_server_admin/api/v1/assessment/assesshandle.go +++ b/gin_server_admin/api/v1/assessment/assesshandle.go @@ -266,3 +266,14 @@ func GetAssEssCont(id int64) (isTrue bool, ContInfo assessmentmodel.AssessMentit } return } + +//获取职责项目及类别 +func GetAssessClass(id int64) (istrue bool, sssessClass assessmentmodel.AssessClass) { + istrue = false + assessErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.AssessMentitems{}).Select("assessmentitems.*,dutyclass.*").Joins("left join dutyclass on dutyclass.id = assessmentitems.ai_parent").Where("`ai_id` = ?", id).First(&sssessClass).Error + if assessErr != nil { + return + } + istrue = true + return +} diff --git a/gin_server_admin/api/v1/custom/customhandle.go b/gin_server_admin/api/v1/custom/customhandle.go index 5f27753..e9c1f65 100644 --- a/gin_server_admin/api/v1/custom/customhandle.go +++ b/gin_server_admin/api/v1/custom/customhandle.go @@ -66,7 +66,7 @@ func (cu *CustomHandle) CustomLogin(c *gin.Context) { "usertoken": sha1Token, } - global.GVA_INDEX_USERKEY = user.Key + // global.GVA_INDEX_USERKEY = user.Key redisClient.HashMsetAdd("system:Identification_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, writeRedisData) diff --git a/gin_server_admin/api/v1/examtestpage/examtype.go b/gin_server_admin/api/v1/examtestpage/examtype.go new file mode 100644 index 0000000..32f81a1 --- /dev/null +++ b/gin_server_admin/api/v1/examtestpage/examtype.go @@ -0,0 +1,6 @@ +package examtestpage + +//获取集团架构参数 +type getGroupType struct { + Parentid int64 `json:"parentid"` +} diff --git a/gin_server_admin/api/v1/examtestpage/grouphandle.go b/gin_server_admin/api/v1/examtestpage/grouphandle.go index a83f162..c69496b 100644 --- a/gin_server_admin/api/v1/examtestpage/grouphandle.go +++ b/gin_server_admin/api/v1/examtestpage/grouphandle.go @@ -53,9 +53,23 @@ type postGroupCanshu struct { //集团列表 func (g *GroupHandleApi) GroupList(c *gin.Context) { var groupStruct []wechat.GroupForm //集团表结构 - var groupMap []GroupMap //要获取的集团架构字段 + gormDb := global.GVA_DB_WatchDate.Model(&groupStruct) + var requestData getGroupType + errRequest := c.ShouldBindJSON(&requestData) + if errRequest != nil { + gormDb = gormDb.Where("g_parentid = ?", 1) + } + + if requestData.Parentid == 0 { + gormDb = gormDb.Where("g_parentid = ?", 1) + } else { + gormDb = gormDb.Where("g_id = ?", requestData.Parentid) + } + + var groupMap []GroupMap //要获取的集团架构字段 var groupMapStruct []TableData - err := global.GVA_DB_WatchDate.Model(&groupStruct).Where("g_parentid = ?", 1).Find(&groupMap).Error //获取集团信息 + // err := global.GVA_DB_WatchDate.Model(&groupStruct).Where("g_parentid = ?", 1).Find(&groupMap).Error //获取集团信息 + err := gormDb.Find(&groupMap).Error if err != nil { fmt.Println(err) response.Result(100, groupMapStruct, "集团架构获取失败!", c) @@ -66,7 +80,7 @@ func (g *GroupHandleApi) GroupList(c *gin.Context) { // groupAry := map[int]interface{}{} for i, v := range groupMap { - fmt.Printf("%v\n", v.Id) + // fmt.Printf("%v\n", v.Id) err = global.GVA_DB_Master.Preload("WorkshopSectionStruct").Where("bf_group = ?", v.Id).Find(&departList).Error if err == nil { var groupTypeStruct TableData diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index 7be45d7..3a8efc6 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -13,6 +13,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" "github.com/flipped-aurora/gin-vue-admin/server/model/wechat" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" + "github.com/mitchellh/mapstructure" "gorm.io/gorm" ) @@ -592,3 +593,19 @@ func GetWorkShopSection(id int64) (isTrue bool, workShopesStruct testpage.WorkSh isTrue = true return } + +//用户端身份解析 +func ClientIdentity() (isTrue bool, redisUserInfo testpage.RedisUserInfo) { + keyStr := strconv.FormatInt(global.GVA_INDEX_USERKEY, 10) + redisClient := redishandel.RunRedis() + tokenInfo, isTrue := redisClient.HashGetAll("system:userContent_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + keyStr) + if isTrue != true { + return + } + identityErr := mapstructure.Decode(tokenInfo, &redisUserInfo) + if identityErr != nil { + isTrue = false + return + } + return +} diff --git a/gin_server_admin/commonus/timeSub.go b/gin_server_admin/commonus/timeSub.go index 5fbe38d..d445d0f 100644 --- a/gin_server_admin/commonus/timeSub.go +++ b/gin_server_admin/commonus/timeSub.go @@ -150,6 +150,8 @@ func TimeStampToDate(timeStamp int64, timeType int) (dateStr string) { timeTemplate = "2006-01-02 15:04" case 9: timeTemplate = "02" + case 10: + timeTemplate = "2006-01" default: timeTemplate = "2006-01-02 15:04:05" //常规类型 } diff --git a/gin_server_admin/initialize/router.go b/gin_server_admin/initialize/router.go index 7d9f88f..1c835fe 100644 --- a/gin_server_admin/initialize/router.go +++ b/gin_server_admin/initialize/router.go @@ -88,7 +88,7 @@ func Routers() *gin.Engine { dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核 - // staffMan.InitStaffRouter(PublicGroup) //员工相关操作 + staffMan.InitStaffRouter(PublicGroup) //员工相关操作 } PrivateGroup := Router.Group("") @@ -123,7 +123,7 @@ func Routers() *gin.Engine { MyCustomPrivateGroup := Router.Group("") MyCustomPrivateGroup.Use(middleware.MyAuthentication()).Use(middleware.MyCasbinHandler()) { - staffMan.InitStaffRouter(MyCustomPrivateGroup) //员工相关操作 + // staffMan.InitStaffRouter(MyCustomPrivateGroup) //员工相关操作 dutyAssEss.InitDutyHandelRouter(MyCustomPrivateGroup) //前端数据考核 } diff --git a/gin_server_admin/middleware/myjwt.go b/gin_server_admin/middleware/myjwt.go index 587d66d..fa8c6b8 100644 --- a/gin_server_admin/middleware/myjwt.go +++ b/gin_server_admin/middleware/myjwt.go @@ -26,17 +26,25 @@ func MyAuthentication() gin.HandlerFunc { return } + userKeyInt, userKeyIntErr := strconv.ParseInt(userKey, 10, 64) + if userKeyIntErr != nil { + response.FailWithDetailed(gin.H{"reload": true, "code": 2}, "未登录或非法访问", c) + c.Abort() + return + } + global.GVA_INDEX_USERKEY = userKeyInt + redisClient := redishandel.RunRedis() tokenInfo, isTrues := redisClient.HashGetAll("system:Identification_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKey) var myCustomIdentify commonus.MyCustomLogonIdentify if isTrues != true { - response.FailWithDetailed(gin.H{"reload": true, "code": 2}, "您的帐户异地登陆或令牌失效", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 3}, "您的帐户异地登陆或令牌失效", c) c.Abort() return } else { tokenErr := mapstructure.Decode(tokenInfo, &myCustomIdentify) if tokenErr != nil { - response.FailWithDetailed(gin.H{"reload": true, "code": 2}, "您的帐户异地登陆或令牌失效", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 4}, "您的帐户异地登陆或令牌失效", c) c.Abort() return } @@ -59,6 +67,7 @@ func MyAuthentication() gin.HandlerFunc { "userpwd": myCustomIdentify.UserPwd, "usertoken": myCustomIdentify.UserToken, } + redisClient.HashMsetAdd("system:Identification_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+userKey, writeRedisData) c.Next() } @@ -103,6 +112,15 @@ func SystemAuthentication() gin.HandlerFunc { c.Abort() return } + + userKeyInt, userKeyIntErr := strconv.ParseInt(userKey, 10, 64) + if userKeyIntErr != nil { + response.FailWithDetailed(gin.H{"reload": true, "code": 2}, "未登录或非法访问", c) + c.Abort() + return + } + global.GVA_ADMIN_USERKEY = userKeyInt + redisClient := redishandel.RunRedis() tokenInfo, isTrues := redisClient.HashGetAll("system:SystemIdentification_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKey) var myCustomIdentify commonus.MyCustomAdminLogonIdentify diff --git a/gin_server_admin/model/assessmentmodel/dutyclass.go b/gin_server_admin/model/assessmentmodel/dutyclass.go index a00acf8..32cc0d5 100644 --- a/gin_server_admin/model/assessmentmodel/dutyclass.go +++ b/gin_server_admin/model/assessmentmodel/dutyclass.go @@ -63,3 +63,58 @@ type AssessMentitems struct { func (AssessMentitems *AssessMentitems) TableName() string { return "assessmentitems" } + +//考核项目与类别 +type AssessClass struct { + AssessMentitems + ClassTitle string `json:"classTitle" gorm:"column:title;type:varchar(255);comment:职责类别名称"` + ClassType int `json:"classType" gorm:"column:type;type:tinyint(1) unsigned;default:1;not null;comment:类型(1:职能部门;2:生产部门)"` + ClassWeight int `json:"classWeight" gorm:"column:weight;type:int(3) unsigned;default:0;not null;comment:权重比例"` + ClassTime int64 `json:"classTime" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + ClassState int `json:"classState" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态"` +} + +//评分记录 +type Departscore struct { + Id int64 `json:"id" gorm:"column:s_id;type:bigint(20) unsigned;not null;comment:Id"` + ClassId int64 `json:"classID" gorm:"column:s_class;type:bigint(20) unsigned;default:0;not null;comment:考核分类"` + AssessId int64 `json:"assessId" gorm:"column:s_assess;type:bigint(20) unsigned;default:0;not null;comment:考核项目"` + DutyId int64 `json:"dutyId" gorm:"column:s_duty;type:bigint(20) unsigned;default:0;not null;comment:具体职责"` + DeductPoints int `json:"deductPoints" gorm:"column:s_deduct_points;type:int(3) unsigned;default:0;not null;comment:扣分"` + ExtraPoints int `json:"extraPoints" gorm:"column:s_extra_points;type:int(3) unsigned;default:0;not null;comment:加分"` + Score int `json:"score" gorm:"column:s_score;type:int(3) unsigned;default:0;not null;comment:实际得分"` + FileTime int64 `json:"fileTime" gorm:"column:s_file_time;type:bigint(20) unsigned;default:0;not null;comment:计分月份"` + DepartId int64 `json:"departId" gorm:"column:s_depart_id;type:bigint(20) unsigned;default:0;not null;comment:部门ID"` + Group int `json:"group" gorm:"column:s_group;type:int(3) unsigned;default:0;not null;comment:集团"` + CommentUser int64 `json:"commentUser" gorm:"column:s_comment_user;type:bigint(20) unsigned;default:0;not null;comment:评论人"` + DommentDepart int64 `json:"commentDepart" gorm:"column:s_comment_depart;type:bigint(20) unsigned;default:0;not null;comment:评论人部门"` + CommentGroup int64 `json:"commentGroup" gorm:"column:s_comment_group;type:bigint(20) unsigned;default:0;not null;comment:评论人集团"` + AddTime int64 `json:"addTime" gorm:"column:s_add_time;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:s_eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + State int `json:"state" gorm:"column:s_state;type:tinyint(1) unsigned;default:1;not null;comment:状态"` +} + +func (Departscore *Departscore) TableName() string { + return "departscore" +} + +//评分记录附表 +type Departscores struct { + Id int64 `json:"id" gorm:"column:s_id;type:bigint(20) unsigned;not null;comment:Id"` + ClassId int64 `json:"classID" gorm:"column:s_class;type:bigint(20) unsigned;default:0;not null;comment:考核分类"` + AssessId int64 `json:"assessId" gorm:"column:s_assess;type:bigint(20) unsigned;default:0;not null;comment:考核项目"` + DutyId int64 `json:"dutyId" gorm:"column:s_duty;type:bigint(20) unsigned;default:0;not null;comment:具体职责"` + DeductPoints int64 `json:"deductPoints" gorm:"column:s_deduct_points;type:int(3) unsigned;default:0;not null;comment:扣分"` + ExtraPoints int64 `json:"extraPoints" gorm:"column:s_extra_points;type:int(3) unsigned;default:0;not null;comment:加分"` + Score int64 `json:"score" gorm:"column:s_score;type:int(3) unsigned;default:0;not null;comment:实际得分"` + FileTime int64 `json:"fileTime" gorm:"column:s_file_time;type:bigint(20) unsigned;default:0;not null;comment:计分月份"` + DepartId int64 `json:"departId" gorm:"column:s_depart_id;type:bigint(20) unsigned;default:0;not null;comment:部门ID"` + CommentUser int64 `json:"commentUser" gorm:"column:s_comment_user;type:bigint(20) unsigned;default:0;not null;comment:评论人"` + AddTime int64 `json:"addTime" gorm:"column:s_add_time;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:s_eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + State int `json:"state" gorm:"column:s_state;type:tinyint(1) unsigned;default:1;not null;comment:状态"` +} + +func (Departscores *Departscores) TableName() string { + return "departscores" +} diff --git a/gin_server_admin/router/assessment/assessmentrouter.go b/gin_server_admin/router/assessment/assessmentrouter.go index fa2fd5e..a22cac6 100644 --- a/gin_server_admin/router/assessment/assessmentrouter.go +++ b/gin_server_admin/router/assessment/assessmentrouter.go @@ -48,9 +48,14 @@ func (s *AssessmentRouter) InitDutyHandelRouter(Router *gin.RouterGroup) { dutyIndexCodeRouter := Router.Group("dutys") var authorityIndexApi = v2.ApiGroupApp.AssessMentApi.Assessment { - dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口 - dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.POST("/", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.POST("", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.GET("/", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.GET("", authorityIndexApi.Index) // 入口 + dutyIndexCodeRouter.POST("myassessmentlist", authorityIndexApi.MyAssEssMentList) // 我需要填写的考核项目 + dutyIndexCodeRouter.POST("getDutydepartlist", authorityIndexApi.GetDutyDepartList) // 根据具体考核项目获取被考核部门 + dutyIndexCodeRouter.POST("addassessmentscore", authorityIndexApi.AddAssessmentScore) //添加考核项目 + dutyIndexCodeRouter.POST("myevaluatelist", authorityIndexApi.MyEvaluateList) //个人考核评价记录 + dutyIndexCodeRouter.POST("getdeparttimeassess", authorityIndexApi.GetDepartTimeAssess) //根据部门和时间获取考核详情 } } diff --git a/gin_server_admin/router/examtestpage/grouphandle.go b/gin_server_admin/router/examtestpage/grouphandle.go index 0bfc876..a4aee40 100644 --- a/gin_server_admin/router/examtestpage/grouphandle.go +++ b/gin_server_admin/router/examtestpage/grouphandle.go @@ -12,7 +12,7 @@ func (g *GroupHandleRouter) InitGroupRouter(Router *gin.RouterGroup) { groupCodeRouter := Router.Group("group") var authorityApi = v1.ApiGroupApp.GroupHandleApiGroup.GroupHandleApi { - groupCodeRouter.GET("/grouplist", authorityApi.GroupList) // 获取集团架构列表 + groupCodeRouter.POST("/grouplist", authorityApi.GroupList) // 获取集团架构列表 groupCodeRouter.POST("/getgroupinfo", authorityApi.GetGroupInfo) // 获取集团详细信息 groupCodeRouter.POST("/getsubsidiaryinfo", authorityApi.GetSubsidiaryInfo) // 获取子公司详细信息 groupCodeRouter.POST("/getgrouppositioninfo", authorityApi.GetGroupPositionInfo) // 获取工段详细信息