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

534 lines
16 KiB

package assessment
import (
"strconv"
"time"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
"gin_server_admin/model/testpage"
"gin_server_admin/model/wechat"
"github.com/gin-gonic/gin"
)
// 具体部门职责
func (d *DutyHandle) SpecificDutyList(c *gin.Context) {
var requestData specificDutyRequest
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)
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartDuty{}).Where("`de_satte` IN ?", []int{1, 2})
if requestData.DepartmentId != "" {
departId, departErr := strconv.ParseInt(requestData.DepartmentId, 10, 64)
if departErr == nil {
gormDb = gormDb.Where("`de_partid` = ?", departId)
}
}
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
var dutyList []assessmentmodel.DepartDuty
dutyListerr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Find(&dutyList).Error
if dutyListerr != nil {
response.Result(103, dutyListerr, "数据获取失败!", c)
return
}
var dutyListCont []specificDutyOut
for _, val := range dutyList {
var dutyCont specificDutyOut
dutyCont.Id = val.Id
dutyCont.Title = val.Title
dutyCont.State = val.State
dutyCont.Time = val.Time
dutyCont.PartId = val.PartId
dutyCont.ClassId = val.ClassId
dutyCont.AssessId = val.AssessId
dutyCont.DutyId = val.DutyId
dutyCont.Rescore = val.Rescore
dutyCont.OutId = strconv.FormatInt(val.Id, 10)
//职责分类
dutyCont.ClassIdStr = strconv.FormatInt(val.ClassId, 10)
isTrue, classCont := GetDutyClassCont(val.ClassId)
if isTrue == true {
dutyCont.ClassTitle = classCont.Title
}
//职责项目
dutyCont.AssEssIdStr = strconv.FormatInt(val.AssessId, 10)
isTrueAssEss, assessCont := GetAssEssCont(val.AssessId)
if isTrueAssEss == true {
dutyCont.AssEssTitle = assessCont.Title
}
//具体职责
dutyCont.DutyIdStr = strconv.FormatInt(val.DutyId, 10)
isTrueDuty, dutyContInfo := GetDutyInfoCont(val.DutyId)
if isTrueDuty == true {
dutyCont.DutyTitle = dutyContInfo.Title
}
where := commonus.MapOut()
where["id"] = val.Group
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
dutyCont.GroupTitle = orgCont.Name
// isTrueGroup, groupCont := GetGroupCont(val.Group)
// if isTrueGroup == true {
// dutyCont.GroupTitle = groupCont.Name
// }
//具体职责
dutyCont.ParentId = strconv.FormatInt(val.PartId, 10)
isTrueBranFact, branFactCont := GetBranchFactory(val.PartId)
if isTrueBranFact == true {
dutyCont.ParentTitle = branFactCont.Name
}
dutyListCont = append(dutyListCont, dutyCont)
}
countSum := len(dutyListCont)
printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, dutyListCont)
response.Result(0, printData, "查询成功!", c)
}
// 添加具体职责
func (d *DutyHandle) AddSpecificDutyInfo(c *gin.Context) {
var requestData addSpecificDutyCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
var parentId, classId, assessId, dutyId int64
if requestData.ParentId == "" {
response.Result(102, err, "请指定归属于被考核部门", c)
return
} else {
parentId, _ = strconv.ParseInt(requestData.ParentId, 10, 64)
}
if requestData.ClassId == "" {
response.Result(103, err, "请指定考核类别", c)
return
} else {
classId, _ = strconv.ParseInt(requestData.ClassId, 10, 64)
}
if requestData.AssEssId == "" {
response.Result(104, err, "请指定考核项目", c)
return
} else {
assessId, _ = strconv.ParseInt(requestData.AssEssId, 10, 64)
}
if requestData.DutyId == "" {
response.Result(105, err, "请指定考核具体职责", c)
return
} else {
dutyId, _ = strconv.ParseInt(requestData.DutyId, 10, 64)
}
if requestData.Score < 1 {
response.Result(106, err, "请指定该具体职责参考分值", c)
return
}
var ScoreAll int64
var specDutyInfo assessmentmodel.DepartDuty
scoreErr := global.GVA_DB_Performanceappraisal.Model(&specDutyInfo).Where("`de_partid` = ?", parentId).Pluck("COALESCE(SUM(de_rescore), 0) as rescore", &ScoreAll).Error
if scoreErr != nil {
ScoreAll = 0
}
if ScoreAll+requestData.Score > 1000 {
response.Result(107, err, "该部门的总分值超过100。请重新写入该考核项目参考分值!", c)
return
}
if requestData.Group == 0 {
requestData.Group = 3
}
specDutyInfo.Id = commonus.GetFileNumberEs()
specDutyInfo.Title = ""
specDutyInfo.State = 1
specDutyInfo.Time = time.Now().Unix()
specDutyInfo.PartId = parentId
specDutyInfo.ClassId = classId
specDutyInfo.AssessId = assessId
specDutyInfo.DutyId = dutyId
specDutyInfo.Rescore = requestData.Score
specDutyInfo.Group = requestData.Group
dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&specDutyInfo).Error
if dutyInfoErr != nil {
response.Result(108, specDutyInfo, "数据写入失败!", c)
} else {
response.Result(0, specDutyInfo, "数据写入成功!", c)
}
}
// 添加部门具体职责
func (d *DutyHandle) AddDepartDutyInfo(c *gin.Context) {
var requestData addDepartDutyCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
var parentId, dutyId int64
if requestData.ParentId == "" {
response.Result(102, err, "请指定归属于被考核部门", c)
return
} else {
parentIds, parentIdErr := strconv.ParseInt(requestData.ParentId, 10, 64)
if parentIdErr != nil {
response.Result(103, err, "请指定归属于被考核部门", c)
return
}
parentId = parentIds
}
if requestData.DutyId == "" {
response.Result(105, err, "请指定考核具体职责", c)
return
} else {
dutyIds, dutyIdErr := strconv.ParseInt(requestData.DutyId, 10, 64)
if dutyIdErr != nil {
response.Result(103, err, "请指定考核具体职责", c)
return
}
dutyId = dutyIds
}
assIsTrue, assInfo := GetDutyInfoContAll(dutyId)
if assIsTrue != true {
response.Result(104, dutyId, "请指定考核项目已禁止使用!", c)
return
}
if requestData.Score < 1 {
response.Result(105, err, "请指定该具体职责参考分值", c)
return
}
var ScoreAll int64
var specDutyInfo assessmentmodel.DepartDuty
scoreErr := global.GVA_DB_Performanceappraisal.Model(&specDutyInfo).Where("`de_partid` = ?", parentId).Pluck("COALESCE(SUM(de_rescore), 0) as rescore", &ScoreAll).Error
if scoreErr != nil {
ScoreAll = 0
}
if ScoreAll+requestData.Score > 1000 {
response.Result(106, err, "该部门的总分值超过100。请重新写入该考核项目参考分值!", c)
return
}
//获取部门详细信息
bfIsTrue, bfInfo := GetBranchFactory(parentId)
if bfIsTrue != true {
response.Result(107, err, "该部门不存在,请检查您的提交!", c)
return
}
specDutyInfo.Id = commonus.GetFileNumberEs()
specDutyInfo.Title = ""
specDutyInfo.State = 1
specDutyInfo.Time = time.Now().Unix()
specDutyInfo.PartId = parentId
specDutyInfo.ClassId = assInfo.ClassId
specDutyInfo.AssessId = assInfo.AssessId
specDutyInfo.DutyId = dutyId
specDutyInfo.Rescore = requestData.Score
specDutyInfo.Group = bfInfo.Group
dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&specDutyInfo).Error
if dutyInfoErr != nil {
response.Result(108, specDutyInfo, "数据写入失败!", c)
} else {
response.Result(0, specDutyInfo, "数据写入成功!", c)
}
}
// 编辑具体内容
func (d *DutyHandle) EiteDepartDutyInfo(c *gin.Context) {
var requestData eiteDepartDutyCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.Id == 0 && requestData.OutId == "" {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
if requestData.OutId != "" {
idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64)
if inIntErr == nil {
requestData.Id = idInt
}
}
saveData := commonus.MapOut()
var parentId, dutyId int64
if requestData.ParentId != "" {
parentId, _ = strconv.ParseInt(requestData.ParentId, 10, 64)
saveData["de_partid"] = parentId
bfIsTrue, bfInfo := GetBranchFactory(parentId)
if bfIsTrue == true {
saveData["de_group"] = bfInfo.Group
}
}
if requestData.DutyId != "" {
dutyId, _ = strconv.ParseInt(requestData.DutyId, 10, 64)
saveData["de_duty"] = dutyId
assIsTrue, assInfo := GetAssEssCont(dutyId)
if assIsTrue == true {
saveData["de_class"] = assInfo.PartId
saveData["de_assess"] = assInfo.Id
}
}
if requestData.Score > 0 {
var ScoreAll int64
var specDutyInfo assessmentmodel.DepartDuty
scoreErr := global.GVA_DB_Performanceappraisal.Model(&specDutyInfo).Where("`de_partid` = ?", parentId).Pluck("COALESCE(SUM(de_rescore), 0) as rescore", &ScoreAll).Error
if scoreErr != nil {
ScoreAll = 0
}
if ScoreAll+requestData.Score > 1000 {
response.Result(107, err, "该部门的总分值超过100。请重新写入该考核项目参考分值!", c)
return
}
saveData["de_rescore"] = requestData.Score
}
saveData["de_time"] = time.Now().Unix()
isTrue, isErr := eiteSpecificDutyInfoCont(requestData.Id, saveData)
if isTrue != true {
response.Result(104, isErr, "修改失败!", c)
return
}
response.Result(0, saveData, "修改成功!", c)
}
// 获取部门具体考核项目
func (d *DutyHandle) GetSpecDutyCont(c *gin.Context) {
var requestData commonus.SetId
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.Id == 0 && requestData.OutId == "" {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
if requestData.OutId != "" {
idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64)
if inIntErr == nil {
requestData.Id = idInt
}
}
var dutyOutInfo specificDutyOut
inFoErr := global.GVA_DB_Performanceappraisal.Where("`de_id` = ?", requestData.Id).First(&dutyOutInfo).Error
if inFoErr != nil {
response.Result(103, inFoErr, "数据查询失败!", c)
return
}
dutyOutInfo.OutId = strconv.FormatInt(dutyOutInfo.Id, 10)
//职责分类
dutyOutInfo.ClassIdStr = strconv.FormatInt(dutyOutInfo.ClassId, 10)
isTrue, classCont := GetDutyClassCont(dutyOutInfo.ClassId)
if isTrue == true {
dutyOutInfo.ClassTitle = classCont.Title
}
//职责项目
dutyOutInfo.AssEssIdStr = strconv.FormatInt(dutyOutInfo.AssessId, 10)
isTrueAssEss, assessCont := GetAssEssCont(dutyOutInfo.AssessId)
if isTrueAssEss == true {
dutyOutInfo.AssEssTitle = assessCont.Title
}
//具体职责
dutyOutInfo.DutyIdStr = strconv.FormatInt(dutyOutInfo.DutyId, 10)
isTrueDuty, dutyCont := GetDutyInfoCont(dutyOutInfo.DutyId)
if isTrueDuty == true {
dutyOutInfo.DutyTitle = dutyCont.Title
}
where := commonus.MapOut()
where["id"] = dutyOutInfo.Group
orgCont, _ := commonus.GetNewOrgCont(where, "id", "name")
dutyOutInfo.GroupTitle = orgCont.Name
// isTrueGroup, groupCont := GetGroupCont(dutyOutInfo.Group)
// if isTrueGroup == true {
// dutyOutInfo.GroupTitle = groupCont.Name
// }
//具体职责
dutyOutInfo.ParentId = strconv.FormatInt(dutyOutInfo.PartId, 10)
isTrueBranFact, branFactCont := GetBranchFactory(dutyOutInfo.PartId)
if isTrueBranFact == true {
dutyOutInfo.ParentTitle = branFactCont.Name
}
response.Result(0, dutyOutInfo, "数据查询成功!", c)
}
// 获取集团信息
func GetGroupCont(id int64) (isTrue bool, ContInfo wechat.GroupForm) {
isTrue = false
err := global.GVA_DB_WatchDate.Where("g_id = ?", id).First(&ContInfo).Error
if err == nil {
isTrue = true
}
return
}
// 获得分厂名称
func GetBranchFactory(id int64) (isTrue bool, ContInfo testpage.BranchFactory) {
isTrue = false
err := global.GVA_DB_Master.Where("bf_id = ?", id).First(&ContInfo).Error
if err == nil {
isTrue = true
}
return
}
// 编辑具体内容
func (d *DutyHandle) EiteSpecFicDutyInfo(c *gin.Context) {
var requestData eiteSpecificDutyCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.Id == 0 && requestData.OutId == "" {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
if requestData.OutId != "" {
idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64)
if inIntErr == nil {
requestData.Id = idInt
}
}
saveData := commonus.MapOut()
var parentId, classId, assessId, dutyId int64
if requestData.ParentId != "" {
parentId, _ = strconv.ParseInt(requestData.ParentId, 10, 64)
saveData["de_partid"] = parentId
}
if requestData.ClassId != "" {
classId, _ = strconv.ParseInt(requestData.ClassId, 10, 64)
saveData["de_class"] = classId
}
if requestData.AssEssId != "" {
assessId, _ = strconv.ParseInt(requestData.AssEssId, 10, 64)
saveData["de_assess"] = assessId
}
if requestData.DutyId != "" {
dutyId, _ = strconv.ParseInt(requestData.DutyId, 10, 64)
saveData["de_duty"] = dutyId
}
if requestData.Score > 0 {
var ScoreAll int64
var specDutyInfo assessmentmodel.DepartDuty
scoreErr := global.GVA_DB_Performanceappraisal.Model(&specDutyInfo).Where("`de_partid` = ?", parentId).Pluck("COALESCE(SUM(de_rescore), 0) as rescore", &ScoreAll).Error
if scoreErr != nil {
ScoreAll = 0
}
if ScoreAll+requestData.Score > 1000 {
response.Result(107, err, "该部门的总分值超过100。请重新写入该考核项目参考分值!", c)
return
}
saveData["de_rescore"] = requestData.Score
}
if requestData.Group != 0 {
saveData["de_group"] = requestData.Group
}
saveData["de_time"] = time.Now().Unix()
isTrue, isErr := eiteSpecificDutyInfoCont(requestData.Id, saveData)
if isTrue != true {
response.Result(104, isErr, "修改失败!", c)
return
}
response.Result(0, saveData, "修改成功!", c)
}
// 编辑具体职责内容
func eiteSpecificDutyInfoCont(saveId int64, saveData map[string]interface{}) (isTrue bool, dutyClassInfoErr error) {
var modelInfo assessmentmodel.DepartDuty
isTrue = false
dutyClassInfoErr = global.GVA_DB_Performanceappraisal.Model(&modelInfo).Where("de_id = ?", saveId).Updates(saveData).Error
if dutyClassInfoErr != nil {
return
}
isTrue = true
return
}
// 修改考核项目的状态
func (d *DutyHandle) EiteSpecficDutyState(c *gin.Context) {
var requestData dutyClassState
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "参数错误!请重新提交!", c)
return
}
if requestData.Id == 0 && requestData.OutId == "" {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
if requestData.OutId != "" {
idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64)
if inIntErr == nil {
requestData.Id = idInt
}
}
if requestData.State == 0 {
requestData.State = 1
}
saveData := commonus.MapOut()
saveData["de_satte"] = requestData.State
saveData["de_time"] = time.Now().Unix()
var eiteAssEssStateInfo assessmentmodel.DepartDuty
if requestData.IsDel != 1 {
isTrue, dutyErr := eiteSpecificDutyInfoCont(requestData.Id, saveData)
if isTrue != true {
response.Result(103, dutyErr, "修改失败!", c)
return
}
response.Result(0, requestData, "修改成功!", c)
} else {
if requestData.State == 3 {
archiveInfoErr := global.GVA_DB_Performanceappraisal.Where("de_id = ?", requestData.Id).Delete(&eiteAssEssStateInfo).Error
if archiveInfoErr != nil {
response.Result(104, requestData, "删除失败!", c)
return
}
response.Result(0, requestData, "删除成功!", c)
} else {
isTrue, saveErr := eiteSpecificDutyInfoCont(requestData.Id, saveData)
if isTrue != true {
response.Result(105, saveErr, "修改失败!", c)
return
}
response.Result(0, requestData, "修改成功!", c)
}
}
}