绩效考核
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.
 
 
 

1217 lines
42 KiB

package dutyassess
import (
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
"gin_server_admin/api/v1/archiveapi"
"gin_server_admin/api/v1/assessment"
"gin_server_admin/api/v1/examtestpage"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
"github.com/gin-gonic/gin"
)
// 入口
func (d *DutyAssessApi) Index(c *gin.Context) {
outPut := commonus.MapOut()
response.Result(0, outPut, "管理端获取成功", c)
}
// 获取部门被考核时间表
func (d *DutyAssessApi) GetDepartEvaluate(c *gin.Context) {
isTrue, userCont := commonus.AdminClientIdentity()
if isTrue != true {
response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
var requestData getDepartAssObtain
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
}
var timeUnix int64
if requestData.Time != "" {
timeStr := requestData.Time + "-01 12:00:00"
assessmentTime, assessmentTimeErr := commonus.DateToTimeStampEs(timeStr)
if assessmentTimeErr == true {
timeUnix = assessmentTime
}
} else {
timeUnix = 0
}
offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize)
//获取管理信息
attriButeId, attriButeErr := strconv.ParseInt(userCont.AttriBute, 10, 64) //转换管理员属性部门
var departScorsList []assessmentmodel.Departscores
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Departscores{}).Select("s_file_time", "s_depart_id").Where("`s_state` = 1")
if requestData.DepartID != "" {
if timeUnix != 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ? AND `s_depart_id` = ?", timeUnix, requestData.DepartID)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_depart_id` = ?", requestData.DepartID)
}
} else {
if attriButeErr == nil {
if attriButeId != 0 {
if timeUnix != 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ? AND `s_depart_id` = ?", timeUnix, attriButeId)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_depart_id` = ?", attriButeId)
}
} else {
groupId, groupIdErr := strconv.ParseInt(userCont.Group, 10, 64)
if groupIdErr == nil {
if groupId != 1 {
deparIsTrue, departMap := getGroupDepartIdMap(groupId)
if deparIsTrue == true {
if len(departMap.Id) > 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ? AND `s_depart_id` IN ?", timeUnix, departMap.Id)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_depart_id` = ?", attriButeId)
}
} else {
if timeUnix != 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ?", timeUnix)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id")
}
}
} else {
if timeUnix != 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ?", timeUnix)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id")
}
}
} else {
if timeUnix != 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ?", timeUnix)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id")
}
}
}
} else {
if timeUnix != 0 {
gormDb = gormDb.Group("s_file_time,s_depart_id").Having("`s_file_time` = ?", timeUnix)
} else {
gormDb = gormDb.Group("s_file_time,s_depart_id")
}
}
}
/*
获取总共有多少记录
*/
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
//获取记录数据
evaErr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Find(&departScorsList).Error
if evaErr != nil {
response.Result(104, evaErr, "数据获取失败!", c)
return
}
var departMonthAry []departMonthMap
for _, val := range departScorsList {
var departMonthCont departMonthMap
departMonthCont.DepartId = val.DepartId
// departMonthCont.DepartId = val.DepartId
bfIsTrue, bfInfo := assessment.GetBranchFactory(val.DepartId)
if bfIsTrue == true {
departMonthCont.DepartTitle = bfInfo.Name
}
departMonthCont.TimeStr = strconv.FormatInt(val.FileTime, 10)
departMonthCont.DateStr = commonus.TimeStampToDate(val.FileTime, 10)
departMonthAry = append(departMonthAry, departMonthCont)
}
countSum := len(departMonthAry)
printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, departMonthAry)
response.Result(0, printData, "查询成功!", c)
}
// 获取部门考核列表
func (d *DutyAssessApi) GetDepartmentAssessList(c *gin.Context) {
var requestData getDepartAssObtains
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
// }
if requestData.Time == "" {
response.Result(103, err, "未知时间!", c)
return
}
if requestData.DepartID == "" {
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
}
isTrue, _ := commonus.AdminClientIdentity()
// isTrue, userCont := commonus.AdminClientIdentity()
if isTrue != true {
response.Result(101, err, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
// var departScorsList []assessmentmodel.Departscores
// gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Departscores{}).Select("s_class").Where("`s_file_time` = ? AND `s_state` = 1", assessmentTime)
// attriButeId, attriButeErr := strconv.ParseInt(userCont.AttriBute, 10, 64) //转换管理员属性部门
// if attriButeErr == nil {
// if attriButeId != 0 {
// gormDb = gormDb.Where("`s_depart_id` = ?", attriButeId)
// } else {
// groupId, groupIdErr := strconv.ParseInt(userCont.Group, 10, 64)
// if groupIdErr == nil {
// if groupId != 1 {
// deparIsTrue, departMap := getGroupDepartIdMap(groupId)
// if deparIsTrue == true {
// if len(departMap.Id) > 0 {
// gormDb = gormDb.Where("`s_depart_id` IN ?", departMap.Id)
// }
// }
// }
// }
// }
// }
// scorErr := gormDb.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, val.DepartId, assessmentTime)
// if assErr == true {
// departMonthInfo.Clide = assList
// }
// fmt.Printf("-------->%v----->%v\n", assErr, assList)
// departMonthList = append(departMonthList, departMonthInfo)
// }
// outPrint := commonus.MapOut()
// outPrint["list"] = departMonthList
// 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
}
departIdInt, _ := strconv.ParseInt(requestData.DepartID, 10, 64) //部门ID转换成int64
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, departIdInt, assessmentTime)
if assErr == true {
departMonthInfo.Clide = assList
}
departMonthList = append(departMonthList, departMonthInfo)
}
outPrint := commonus.MapOut()
outPrint["list"] = departMonthList
response.Result(0, outPrint, "获取成功!", c)
}
// 获取集团下属分厂
func getGroupDepartIdMap(groupId int64) (isTrue bool, departId getGroupDepart) {
isTrue = false
err, departCont := examtestpage.GetBranchFactoryMap(groupId)
if err != true {
return
}
var idAry []int64
for _, val := range departCont {
idAry = append(idAry, val.Id)
}
departId.Id = idAry
return
}
// 获取考核项目列表
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 (e *DutyAssessApi) LookQuantitativeConfig(c *gin.Context) {
var requestData SelectQuantitativeConfig
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
// var qualConfigList []assessmentmodel.QuantitativeConfig
var qualConfigList []assessmentmodel.QuantitativeConfigView
gormDb := global.GVA_DB_Performanceappraisal
if requestData.GroupId != "" {
gormDb = gormDb.Where("`group` = ?", requestData.GroupId)
}
if requestData.DepartmentID != "" {
gormDb = gormDb.Where("`departmentid` = ?", requestData.DepartmentID)
}
if requestData.Dimension != "" {
gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension)
}
if requestData.Target != "" {
gormDb = gormDb.Where("`target` = ?", requestData.Target)
}
if requestData.DetailedTarget != "" {
gormDb = gormDb.Where("`targetconfig` = ?", requestData.DetailedTarget)
}
switch requestData.Type {
case 1:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
case 2:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
case 3:
gormDb = gormDb.Where("`type` = ?", requestData.Type)
if requestData.Class != 0 {
gormDb = gormDb.Where("`timecopy` = ?", requestData.Class)
}
default:
}
if requestData.Year != 0 {
gormDb = gormDb.Where("`year` = ?", requestData.Year)
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
}
if requestData.Title != "" {
gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%")
}
// gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC")
gormDb = gormDb.Order("`group` ASC").Order("`departmentid` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`targetconfig` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC")
contErr := gormDb.Find(&qualConfigList).Error
if contErr != nil {
response.Result(102, err, "没有数据!", c)
return
}
var outList []OutQuantitativeConfig
for _, v := range qualConfigList {
var outCont OutQuantitativeConfig
outCont.Id = v.Id
outCont.DepartmentId = v.DepartmentId
outCont.Group = v.Group
outCont.Dimension = v.Dimension
outCont.Target = v.Target
outCont.TargetConfig = v.TargetConfig
outCont.Type = v.Type
outCont.Year = v.Year
outCont.Timecopy = v.Timecopy
outCont.Zeroprize = v.Zeroprize / 100
outCont.Allprize = v.Allprize / 100
outCont.Time = v.Time
outCont.State = v.State
outCont.DimensionId = strconv.FormatInt(v.Dimension, 10)
where := commonus.MapOut()
where["id"] = v.Group
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
outCont.GroupTitle = orgCont.Name
// gErr, groupInfo := commonus.GetGroupCont(v.Group)
// if gErr == true {
// outCont.GroupTitle = groupInfo.Name
// }
whereDepart := commonus.MapOut()
whereDepart["id"] = v.DepartmentId
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name")
outCont.DimensionTitle = orgContDepart.Name
// dErr, departmentInfo := commonus.GetBranchFactory(v.DepartmentId)
// if dErr == true {
// outCont.DimensionTitle = departmentInfo.Name
// }
// targetInfo, tErr := commonus.GetTargetInfo(v.Target)
// if tErr == true {
// outCont.TargetTitle = targetInfo.Title
// }
outCont.TargetTitle = v.Title
if v.TargetConfig != 0 {
dtargetInfo, dtErr := commonus.GetDetailedTargetInfo(v.TargetConfig)
if dtErr == true {
outCont.DetailedTargetTitle = dtargetInfo.Title
}
}
outCont.Capping = v.Capping
outCont.CappingVal = v.CappingVal / 100
outList = append(outList, outCont)
}
response.Result(0, outList, "获取成功!", c)
}
// 删除部门考核指标(New)
func (d *DutyAssessApi) DelDepartDutyTarger(c *gin.Context) {
var requestData DelDutyDepartTarget
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.DeaprtId == "" {
response.Result(103, err, "数据获取失败!", c)
return
}
if requestData.Dimension == "" {
response.Result(104, err, "数据获取失败!", c)
return
}
if requestData.TargetId == "" {
response.Result(105, err, "数据获取失败!", c)
return
}
eiteCont := commonus.MapOut()
eiteCont["State"] = 3
eiteCont["qe_eitetime"] = time.Now().Unix()
delErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ?", requestData.Group, requestData.DeaprtId, requestData.Dimension, requestData.TargetId).Updates(eiteCont).Error
if delErr != nil {
response.Result(106, delErr, "数据处理失败!", c)
return
}
response.Result(0, eiteCont, "处理成功", c)
}
// 删除部门考核方案
func (d *DutyAssessApi) DelDepartDuty(c *gin.Context) {
var requestData DelDutyDepartTarget
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.DeaprtId == "" {
response.Result(103, err, "数据获取失败!", c)
return
}
eiteCont := commonus.MapOut()
eiteCont["State"] = 3
eiteCont["qe_eitetime"] = time.Now().Unix()
delErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? ", requestData.Group, requestData.DeaprtId).Updates(eiteCont).Error
if delErr != nil {
response.Result(106, delErr, "数据处理失败!", c)
return
}
response.Result(0, eiteCont, "处理成功", c)
}
// 获取定性考核相关部门
func (d *DutyAssessApi) GetDepartForDuty(c *gin.Context) {
var requestData LookTargetContList
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "参数错误!无法获取数据", c)
return
}
if requestData.Dimension == "" {
response.Result(103, err, "参数错误!无法获取数据", c)
return
}
if requestData.TargetId == "" {
response.Result(104, err, "参数错误!无法获取数据", c)
return
}
var assessInfor assessmentmodel.Assesstarget
delErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).First(&assessInfor).Error
if delErr != nil {
response.Result(106, delErr, "获取失败失败!", c)
return
}
var assessList []assessmentmodel.Assesstarget
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`departmentmap`").Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Find(&assessList)
var departmentAry []string
for _, asv := range assessList {
gdAry := strings.Split(asv.Departmentmap, ",")
if len(gdAry) > 0 {
for _, gdv := range gdAry {
if commonus.IsInTrue[string](gdv, departmentAry) == false {
departmentAry = append(departmentAry, gdv)
}
}
}
}
var outInfor OutDutyListes
outInfor.DepartmentId, outInfor.DepartmentAry = commonus.GetBranchDepartAry(departmentAry)
// outInfor.Id = strconv.FormatInt(assessInfor.Id, 10)
outInfor.Group = strconv.FormatInt(assessInfor.Group, 10)
//指标信息
outInfor.Target = strconv.FormatInt(assessInfor.TargetId, 10)
tarCont, _ := commonus.GetTargetInfo(assessInfor.TargetId)
outInfor.TargetName = tarCont.Title
//维度信息
dutyClassCont, _ := commonus.GetDutyClassInfo(tarCont.Dimension)
outInfor.Dimension = strconv.FormatInt(tarCont.Dimension, 10)
outInfor.DimensionName = dutyClassCont.Title
outInfor.Content = "" //指标说明
outInfor.Unit = tarCont.Uniteing //单位"`
outInfor.ReferenceScore = 0 //标准分值"`
outInfor.Cycles = tarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
outInfor.CycleAttres = tarCont.CycleAttres //辅助计数"`
outInfor.State = 1
outInfor.DepartmentId, outInfor.DepartmentAry = commonus.GetBranchDepartAry(departmentAry)
shenPiRen := strings.Split(tarCont.Report, ",")
outInfor.UserList = shenPiRen
for _, v := range shenPiRen {
usCont, usErr := commonus.GetWorkUser(v)
// GetWorkUser
if usErr == true {
var userCont QualEvalArrt
userCont.Id = v
userCont.Name = usCont.Name
userCont.Icon = usCont.Icon
where := commonus.MapOut()
where["id"] = usCont.Company
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
userCont.GroupName = orgCont.Name
whereDepart := commonus.MapOut()
whereDepart["id"] = usCont.MainDeparment
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name")
userCont.DepartmentName = orgContDepart.Name
// _, groupInfo := commonus.GetGroupCont(usCont.Group)
// userCont.GroupName = groupInfo.Name
// _, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId)
// userCont.DepartmentName = bfInfo.Name
userCont.Number = usCont.Number
outInfor.UserListAry = append(outInfor.UserListAry, userCont)
}
}
response.Result(0, outInfor, "获取成功!", c)
}
// 修改已知定性考核指标关联部门
func (d *DutyAssessApi) EiteDepartForDuty(c *gin.Context) {
var requestData EiteDutyForDepart
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "参数错误!无法获取数据", c)
return
}
if requestData.Dimension == "" {
response.Result(103, err, "参数错误!无法获取数据", c)
return
}
if requestData.TargetId == "" {
response.Result(104, err, "参数错误!无法获取数据", c)
return
}
if len(requestData.DepartAry) < 1 {
response.Result(105, err, "请指定所属部门!", c)
return
}
//获取所有子栏目
var sunTargetId []int64
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("suntargetid").Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Find(&sunTargetId)
saveData := commonus.MapOut()
saveData["departmentmap"] = strings.Join(requestData.DepartAry, ",")
saveData["time"] = time.Now().Unix()
delErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Updates(saveData).Error
if delErr != nil {
response.Result(106, delErr, "编辑失败!", c)
return
}
// //修改相关子类
if len(sunTargetId) > 0 {
saveDataSun := commonus.MapOut()
saveDataSun["q_depart"] = strings.Join(requestData.DepartAry, ",")
saveDataSun["q_time"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` IN ?", sunTargetId).Updates(saveDataSun)
}
//考核细则
var detarTarget []string
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("content").Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Find(&detarTarget)
if len(detarTarget) > 0 {
for _, dtv := range detarTarget {
var detarCont []DutyAssEssTarget
jsonErr := json.Unmarshal([]byte(dtv), detarCont)
if jsonErr == nil {
if len(detarCont) > 0 {
for _, dcv := range detarCont {
eiteDetailedTarget := commonus.MapOut()
eiteDetailedTarget["dt_id"] = dcv.Id
savDTCont := commonus.MapOut()
savDTCont["dt_paretment"] = strings.Join(requestData.DepartAry, ",")
savDTCont["dt_time"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where(eiteDetailedTarget).Updates(savDTCont)
}
}
}
}
}
response.Result(0, sunTargetId, "编辑成功!", c)
}
// 查看考核方案
func (d *DutyAssessApi) LookDepartDutyVersio(c *gin.Context) {
var requestData LookDutyVersio
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Key == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
//获取考核方案
var assessTargetContent assessmentmodel.PlanVersio
planVersioErr := global.GVA_DB_Performanceappraisal.Where("`key` = ?", requestData.Key).First(&assessTargetContent).Error
if planVersioErr != nil {
response.Result(103, planVersioErr, "数据获取失败!", c)
return
}
var uotContAry []TargetContOutCont
if assessTargetContent.Content != "" {
var planVersioInfo []AddDutyNewCont
jsonErr := json.Unmarshal([]byte(assessTargetContent.Content), &planVersioInfo)
if jsonErr == nil {
for _, pv := range planVersioInfo { //维度
for _, pvChild := range pv.Child { //指标
if pvChild.Status == 1 || pvChild.Status == 3 { //判断是不是禁止指标
var uotCont TargetContOutCont
//集团
uotCont.Group = strconv.FormatInt(assessTargetContent.Group, 10)
if assessTargetContent.Group != 0 {
where := commonus.MapOut()
where["id"] = assessTargetContent.Group
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
uotCont.GroupNAme = orgCont.Name
}
//部门
uotCont.DepartmentId = strconv.FormatInt(assessTargetContent.Department, 10)
// where := commonus.MapOut()
// where["id"] = assessTargetContent.Group
// orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
// uotCont.GroupNAme = orgCont.Name
//维度
uotCont.Id = pvChild.Id
uotCont.Dimension = pv.Id
uotCont.DimensionName = pv.Name
uotCont.DimensionWeight = int64(pv.ZhiFraction)
//指标
uotCont.Target = pvChild.Id
uotCont.TargetName = pvChild.Name
uotCont.TargetWeight = pvChild.ReferenceScore
uotCont.Unit = pvChild.Unit
uotCont.Content = pvChild.Content
uotCont.State = pvChild.Status
//获取指标内容
var qualEvalContInfo assessmentmodel.QualitativeEvaluation
qualEvalErr := global.GVA_DB_Performanceappraisal.Where("`qe_qual_eval_id` = ? AND qe_dimension = ? AND qe_target = ? AND qe_accept_evaluation = ?", requestData.Key, pv.Id, pvChild.Id, assessTargetContent.Department).First(&qualEvalContInfo).Error
if qualEvalErr == nil {
uotCont.Type = qualEvalContInfo.Type
if pvChild.Cycles == 0 {
uotCont.Cycles = qualEvalContInfo.Cycles
} else {
uotCont.Cycles = pvChild.Cycles
}
if pvChild.CycleAttres == 0 {
uotCont.CycleAttres = qualEvalContInfo.CycleAttres
} else {
uotCont.CycleAttres = pvChild.CycleAttres
}
// uotCont.CycleAttres = qualEvalContInfo.CycleAttres
uotCont.UserListAry, uotCont.UserList, _ = getQualEvalUser(requestData.Key, pv.Id, pvChild.Id)
} else {
var evalTargerCont assessmentmodel.EvaluationTarget
evalErr := global.GVA_DB_Performanceappraisal.Where("`et_id` = ?", pvChild.Id).First(&evalTargerCont).Error
if evalErr == nil {
uotCont.Type = evalTargerCont.Type
// uotCont.Cycles = evalTargerCont.Cycles
// uotCont.CycleAttres = evalTargerCont.CycleAttres
// if uotCont.Type == 1 {
// } else {
// }
if pvChild.Cycles == 0 {
uotCont.Cycles = evalTargerCont.Cycles
} else {
uotCont.Cycles = pvChild.Cycles
}
if pvChild.CycleAttres == 0 {
uotCont.CycleAttres = evalTargerCont.CycleAttres
} else {
uotCont.CycleAttres = pvChild.CycleAttres
}
//获取执行人
uotCont.UserListAry, uotCont.UserList, _ = getQualEvalUser(requestData.Key, pv.Id, pvChild.Id)
}
}
uotCont.QualEvalId = requestData.Key
uotContAry = append(uotContAry, uotCont)
}
// return
}
}
} else {
var uotErr bool = false
uotContAry, uotErr = getLookAssessQualEvalList(requestData.Key)
if uotErr == false {
response.Result(103, uotErr, "数据获取失败!", c)
return
}
}
} else {
var uotErr bool = false
uotContAry, uotErr = getLookAssessQualEvalList(requestData.Key)
if uotErr == false {
response.Result(103, uotErr, "数据获取失败!", c)
return
}
}
// var uotErr bool = false
// uotContAry, uotErr = getLookAssessQualEvalList(requestData.Key)
// if uotErr == false {
// return
// }
response.Result(0, uotContAry, "数据获取成功!", c)
}
//获取执行人
/*
@key 版本号码
@dimensionId 维度
@targetId 指标
*/
func getQualEvalUser(key, dimensionId, targetId string) (userContAry []QualEvalArrt, userKey []string, istrue bool) {
istrue = false
var qualEvalCont []assessmentmodel.QualitativeEvaluation
listTargetErr := global.GVA_DB_Performanceappraisal.Select("qe_operator").Where("`qe_dimension` = ? AND `qe_target` = ? AND `qe_qual_eval_id` = ?", dimensionId, targetId, key).Find(&qualEvalCont).Error
if listTargetErr != nil {
return
}
// var userKey []string
for _, v := range qualEvalCont {
//判断执行人是否为空
if v.Operator != "" {
//解析执行人数值
userCont := strings.Split(v.Operator, ",")
if len(userCont) > 0 {
for _, uv := range userCont {
//判断执行人是否已经存在
if commonus.IsItTrueString(uv, userKey) == false {
userKey = append(userKey, uv)
}
}
}
}
}
//获取执行人信息
if len(userKey) > 0 {
for _, ukv := range userKey {
usWhere := commonus.MapOut()
usWhere["`key`"] = ukv
usCont, usErr := commonus.GetNewHrPeopleInfo(usWhere, "`number`", "`name`", "`company`", "`maindeparment`", "`deparment`", "`icon`")
if usErr == true {
var userCont QualEvalArrt
userCont.Id = ukv
userCont.Name = usCont.Name
userCont.Icon = usCont.Icon
where := commonus.MapOut()
where["id"] = usCont.Company
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
userCont.GroupName = orgCont.Name
whereDepart := commonus.MapOut()
whereDepart["id"] = usCont.MainDeparment
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name")
userCont.DepartmentName = orgContDepart.Name
// _, groupInfo := commonus.GetGroupCont(usCont.Group)
// userCont.GroupName = groupInfo.Name
// _, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId)
// userCont.DepartmentName = bfInfo.Name
userCont.Number = usCont.Number
userContAry = append(userContAry, userCont)
}
}
}
return
}
// 获取部门考核项目
func getLookAssessQualEvalList(Key string) (uotContAry []TargetContOutCont, errMsg bool) {
errMsg = false
var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation
listTargetErr := global.GVA_DB_Performanceappraisal.Select("qualitative_evaluation.*,dutyclass.sort").Where("`qe_state` IN (1,2) AND `qe_qual_eval_id` = ?", Key).Joins("left join dutyclass on id = qe_dimension").Order("qe_group asc,qe_accept_evaluation asc,sort asc,qe_type asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error
if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 {
return
}
// var uotContAry []TargetContOutCont
for _, v := range qualitativeEvaluationAry {
var uotCont TargetContOutCont
uotCont.Id = strconv.FormatInt(v.Id, 10)
uotCont.Type = v.Type
uotCont.Group = strconv.FormatInt(v.Group, 10)
where := commonus.MapOut()
where["id"] = v.Group
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
uotCont.GroupNAme = orgCont.Name
whereDepart := commonus.MapOut()
whereDepart["id"] = v.AcceptEvaluation
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name")
uotCont.DepartmentName = orgContDepart.Name
// groupErr, groupCont := commonus.GetGroupCont(v.Group)
// if groupErr == true {
// uotCont.GroupNAme = groupCont.Name
// }
uotCont.DepartmentId = strconv.FormatInt(v.AcceptEvaluation, 10)
// deparConErr, deparConCont := commonus.GetBranchFactory(v.AcceptEvaluation)
// if deparConErr == true {
// uotCont.DepartmentName = deparConCont.Name
// }
uotCont.Dimension = strconv.FormatInt(v.Dimension, 10)
dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(v.Dimension)
if dutyClassErr == true {
uotCont.DimensionName = dutyClassCont.Title
}
uotCont.DimensionWeight = commonus.GetDimesionTargetWeight(1, v.Group, v.AcceptEvaluation, v.Dimension, 0)
uotCont.Target = strconv.FormatInt(v.Target, 10)
targetInfo, targetErr := commonus.GetTargetInfo(v.Target)
if targetErr == true {
uotCont.TargetName = targetInfo.Title
}
uotCont.TargetWeight = commonus.GetDimesionTargetWeight(2, v.Group, v.AcceptEvaluation, v.Dimension, v.Target)
uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10)
info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun)
if infoErr == true {
uotCont.TargetSunName = info.Title
}
uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10)
dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget)
if dtIsTrue == true {
uotCont.DetailedTargetName = dtCont.Title
if v.Content == "" {
uotCont.Content = dtCont.Content
} else {
uotCont.Content = v.Content
}
} else {
uotCont.Content = v.Content
}
uotCont.QualEvalId = v.QualEvalId
uotCont.Unit = v.Unit
uotCont.ReferenceScore = v.ReferenceScore
uotCont.Cycles = v.Cycles
uotCont.CycleAttres = v.CycleAttres
uotCont.State = v.State
userAry := strings.Split(v.Operator, ",")
uotCont.UserList = userAry
for _, u_v := range userAry {
// usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": u_v})
// if usErr == true {
// var userCont QualEvalArrt
// userCont.Id = u_v
// userCont.Name = usCont.Name
// uotCont.UserListAry = append(uotCont.UserListAry, userCont)
// }
usCont, usErr := commonus.GetWorkUser(u_v)
// GetWorkUser
if usErr == true {
var userCont QualEvalArrt
userCont.Id = u_v
userCont.Name = usCont.Name
userCont.Icon = usCont.Icon
where := commonus.MapOut()
where["id"] = usCont.Company
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
userCont.GroupName = orgCont.Name
whereDepart := commonus.MapOut()
whereDepart["id"] = usCont.MainDeparment
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name")
userCont.DepartmentName = orgContDepart.Name
// _, groupInfo := commonus.GetGroupCont(usCont.Group)
// userCont.GroupName = groupInfo.Name
// _, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId)
// userCont.DepartmentName = bfInfo.Name
userCont.Number = usCont.Number
uotCont.UserListAry = append(uotCont.UserListAry, userCont)
}
}
if v.MinScore > 0 && v.MaxScore > 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v-%v", float64(v.MinScore)/100, float64(v.MaxScore)/100)
} else if v.MinScore > 0 && v.MaxScore <= 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v", float64(v.MinScore)/100)
} else if v.MinScore <= 0 && v.MaxScore > 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v", float64(v.MaxScore)/100)
} else {
uotCont.MinOrMaxScore = "0"
}
uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10)
uotContAry = append(uotContAry, uotCont)
}
errMsg = true
return
}
// 查看考核方案
func (d *DutyAssessApi) CopyDepartDutyVersio(c *gin.Context) {
var requestData LookDutyVersio
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Key == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
//获取考核方案
var assessTargetContent assessmentmodel.PlanVersio
planVersioErr := global.GVA_DB_Performanceappraisal.Where("`key` = ?", requestData.Key).First(&assessTargetContent).Error
if planVersioErr != nil {
response.Result(103, planVersioErr, "数据获取失败!", c)
return
}
var copyCont CopyPlanVersion
copyCont.Group = strconv.FormatInt(assessTargetContent.Group, 10)
copyCont.Department = strconv.FormatInt(assessTargetContent.Department, 10)
copyCont.Year = fmt.Sprintf("%v", assessTargetContent.Year)
if assessTargetContent.Content != "" {
var planVersioInfo []AddDutyNewCont
jsonErr := json.Unmarshal([]byte(assessTargetContent.Content), &planVersioInfo)
if jsonErr == nil {
var copyInfoAry []CopyDutyNewCont
for _, v := range planVersioInfo {
var copyInfoXonr CopyDutyNewCont
copyInfoXonr.Id = v.Id //维度ID
copyInfoXonr.Name = v.Name
copyInfoXonr.ZhiFraction = v.ZhiFraction
var displayTargetId []string
for _, cv := range v.Child {
var copyEvalCont CopyEvaluPross
copyEvalCont.Id = cv.Id //`json:"id"` //指标ID
if commonus.IsInTrue[string](cv.Id, displayTargetId) == false {
displayTargetId = append(displayTargetId, cv.Id)
}
var tarGetContent assessmentmodel.EvaluationTarget
tarGetContentErr := tarGetContent.GetCont(map[string]interface{}{"et_id": cv.Id}, "et_title")
if tarGetContentErr == nil {
copyEvalCont.Name = tarGetContent.Title
} else {
copyEvalCont.Name = cv.Name //`json:"name"`
}
copyEvalCont.Content = cv.Content //`json:"content"` //指标说明
copyEvalCont.Unit = cv.Unit //`json:"unit"` //单位"`
copyEvalCont.ReferenceScore = cv.ReferenceScore //`json:"referencescore"` //标准分值"`
if cv.Status == 0 {
copyEvalCont.State = 2
} else {
copyEvalCont.State = cv.Status //`json:"state"`
}
copyEvalCont.Istrue = 2 //`json:"istrue"` //是否允许修改
copyInfoXonr.Child = append(copyInfoXonr.Child, copyEvalCont)
}
if len(displayTargetId) > 0 {
copyEvalContFuBen := GetTargetGroup(strconv.FormatInt(assessTargetContent.Group, 10), v.Id, strconv.FormatInt(assessTargetContent.Department, 10))
// var copyEvalContAry []CopyEvaluPross
for _, cecfv := range copyEvalContFuBen {
if commonus.IsInTrue[string](cecfv.Id, displayTargetId) == false {
var copyEvalCont CopyEvaluPross
copyEvalCont.Id = cecfv.Id
copyEvalCont.Name = cecfv.Name
copyEvalCont.Content = cecfv.Content
copyEvalCont.Unit = cecfv.Unit
copyEvalCont.ReferenceScore = 0
copyEvalCont.State = cecfv.State
copyEvalCont.Istrue = cecfv.IsTrue
// copyEvalContAry = append(copyEvalContAry, copyEvalCont)
copyInfoXonr.Child = append(copyInfoXonr.Child, copyEvalCont)
}
}
} else {
copyEvalContFuBen := GetTargetGroup(strconv.FormatInt(assessTargetContent.Group, 10), v.Id, strconv.FormatInt(assessTargetContent.Department, 10))
// var copyEvalContAry []CopyEvaluPross
for _, cecfv := range copyEvalContFuBen {
var copyEvalCont CopyEvaluPross
copyEvalCont.Id = cecfv.Id
copyEvalCont.Name = cecfv.Name
copyEvalCont.Content = cecfv.Content
copyEvalCont.Unit = cecfv.Unit
copyEvalCont.ReferenceScore = 0
copyEvalCont.State = cecfv.State
copyEvalCont.Istrue = cecfv.IsTrue
copyInfoXonr.Child = append(copyInfoXonr.Child, copyEvalCont)
}
}
copyInfoAry = append(copyInfoAry, copyInfoXonr)
}
copyCont.Child = copyInfoAry
}
}
response.Result(0, copyCont, "查询完成!", c)
}
// 修改考核目标设置
func (e *DutyAssessApi) EiteQuantitativeConfig(c *gin.Context) {
var requestData []EiteQuantConfig
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if len(requestData) < 1 {
response.Result(101, err, "数据获取失败!", c)
return
}
for _, v := range requestData {
eiteCont := commonus.MapOut()
eiteCont["allprize"] = v.Allprize * 100
eiteCont["zeroprize"] = v.Zeroprize * 100
eiteCont["capping_val"] = v.Capping * 100
err = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QuantitativeConfig{}).Where("`id` = ?", v.Id).Updates(eiteCont).Error
}
if err != nil {
response.Result(101, err, "数据编辑失败!", c)
} else {
response.Result(0, err, "数据编辑成功!", c)
}
}
// 修改考核目标设置
func (e *DutyAssessApi) DelQuantitativeConfig(c *gin.Context) {
var requestData []string
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if len(requestData) < 1 {
response.Result(101, err, "数据获取失败!", c)
return
}
err = global.GVA_DB_Performanceappraisal.Where("`id` IN ?", requestData).Delete(&assessmentmodel.QuantitativeConfig{}).Error
if err != nil {
response.Result(101, err, "删除失败!", c)
} else {
response.Result(0, err, "删除成功!", c)
}
}