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

428 lines
15 KiB

package dutyassess
import (
"strconv"
"strings"
"time"
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
)
//获取定性考核指标列表(下拉列表)
func (d *DutyAssessApi) SelectDutyList(c *gin.Context) {
var evalTargetList []assessmentmodel.EvaluationTarget
err := global.GVA_DB_Performanceappraisal.Where("`et_type` = 1 AND `et_state` = 1").Find(&evalTargetList).Error
if err != nil {
response.Result(101, err, "没有数据!", c)
return
}
var listAry []DutySelectList
for _, v := range evalTargetList {
var cont DutySelectList
cont.Id = v.Id
cont.Title = v.Title
cont.Type = v.Type
cont.State = v.State
cont.AddTime = v.AddTime
cont.Share = v.Share
cont.RelevantDepartments = v.RelevantDepartments
cont.Dimension = v.Dimension
cont.Key = v.Key
cont.Report = v.Report
cont.Uniteing = v.Uniteing
cont.Cycles = v.Cycles
cont.CycleAttres = v.CycleAttres
cont.VisibleRange = v.VisibleRange
cont.VisibleRangeGroup = v.VisibleRangeGroup
cont.DepartmentList = strings.Split(v.RelevantDepartments, ",")
listAry = append(listAry, cont)
}
response.Result(0, listAry, "查询完成!", c)
}
//定性考核列表(部门方案用的)
func (d *DutyAssessApi) DutyDepartmentList(c *gin.Context) {
var requestData getDepartAssObtains
err := c.ShouldBindJSON(&requestData)
if err != nil {
// response.Result(101, err, "参数错误!请重新提交!", c)
// return
}
var targetId []int64
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_target")
if requestData.DepartID != "" {
gormDb = gormDb.Where("`qe_accept_evaluation` = ?", requestData.DepartID)
}
gormDb = gormDb.Where("`qe_state` = 1 AND `qe_type` = 1")
listTargetErr := gormDb.Group("qe_target").Find(&targetId).Error
if listTargetErr != nil {
response.Result(101, listTargetErr, "没有数据!", c)
return
}
var targetList []OutDutyList
for _, v := range targetId {
var targetCont OutDutyList
targetCont.Id = strconv.FormatInt(v, 10)
tarCont, _ := commonus.GetTargetInfo(v)
targetCont.Target = strconv.FormatInt(v, 10) //指标ID
targetCont.TargetName = tarCont.Title //指标名称
targetCont.Dimension = strconv.FormatInt(tarCont.Dimension, 10) //维度ID
dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(tarCont.Dimension)
if dutyClassErr == true {
targetCont.DimensionName = dutyClassCont.Title //维度名称
}
targetCont.Content = "" //指标说明
targetCont.Unit = tarCont.Uniteing //单位"`
targetCont.ReferenceScore = 0 //标准分值"`
targetCont.Cycles = tarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
targetCont.CycleAttres = tarCont.CycleAttres //辅助计数"`
targetCont.State = 1
targetCont.DepartmentId, targetCont.DepartmentAry = GetDutyFangAnDepart(v, 1)
targetList = append(targetList, targetCont)
}
// var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation
response.Result(0, targetList, "查询完成!", c)
}
//获取方案中的所有所有相关部们
func GetDutyFangAnDepart(dutyId int64, class int) (departId []int64, departAry []DepartmentAryType) {
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_accept_evaluation").Where("`qe_state` = 1 AND `qe_target` = ? AND `qe_type` = ?", dutyId, class).Group("qe_accept_evaluation").Find(&departId).Error
if err != nil {
return
}
for _, v := range departId {
deparConErr, deparConCont := commonus.GetBranchFactory(v)
if deparConErr == true {
var departcont DepartmentAryType
departcont.Parentname = deparConCont.Name
departcont.Parentid = strconv.FormatInt(v, 10)
departAry = append(departAry, departcont)
}
}
return
}
//根据指标ID获取列表信息
func (d *DutyAssessApi) IdToTargetSunList(c *gin.Context) {
var requestData commonus.SetIds
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
}
}
tarCont, isTrue := commonus.GetTargetInfo(requestData.Id)
if isTrue != true {
response.Result(103, err, "数据获取失败!", c)
return
}
var targetCont TargetFormId
targetCont.Id = strconv.FormatInt(requestData.Id, 10)
targetCont.Target = strconv.FormatInt(requestData.Id, 10) //指标ID
targetCont.TargetName = tarCont.Title //指标名称
targetCont.Dimension = strconv.FormatInt(tarCont.Dimension, 10) //维度ID
dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(tarCont.Dimension)
if dutyClassErr == true {
targetCont.DimensionName = dutyClassCont.Title //维度名称
}
targetCont.Content = "" //指标说明
targetCont.Unit = tarCont.Uniteing //单位"`
targetCont.ReferenceScore = 0 //标准分值"`
targetCont.Cycles = tarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
targetCont.CycleAttres = tarCont.CycleAttres //辅助计数"`
targetCont.State = 1
targetCont.DepartmentId, targetCont.DepartmentAry = GetDutyFangAnDepart(requestData.Id, 1)
targetCont.SunTargetList = GetSunTargetList(requestData.Id, tarCont.Dimension, targetCont.DepartmentId)
targetCont.Reportmap = strings.Split(tarCont.Report, ",")
// for _, vv := range jieguo {
// targetCont.SunTargetList = append(targetCont.SunTargetList, vv)
// }
// targetCont.SunTargetList = jieguo
// jsonstr, _ := json.Marshal(targetCont)
// fmt.Printf("+++++++++>%v----->\n", string(jsonstr))
response.Result(0, targetCont, "查询完成!", c)
}
//获取子指标和指标详情
func GetSunTargetList(targetId, demID int64, parAryId []int64) (cont []SunTargetListType) {
var qualTargetCont []assessmentmodel.QualitativeTarget
err := global.GVA_DB_Performanceappraisal.Where("`q_state` = 1 AND `q_parent_id` = ?", targetId).Find(&qualTargetCont).Error
if err != nil {
return
}
// fmt.Printf("%v\n", qualTargetCont)
for _, v := range qualTargetCont {
var sunCont SunTargetListType
sunCont.Id = strconv.FormatInt(v.Id, 10)
sunCont.Title = v.Title
sunCont.DetailedTarget = GetDetailTrager(targetId, v.Id, demID, parAryId)
// fmt.Printf("-->%v-->%v\n", v.Id, v.Title)
cont = append(cont, sunCont)
}
// fmt.Printf("=========>%v\n", cont)
return
}
//获取指标详情
func GetDetailTrager(targetId, detId, demID int64, parAryId []int64) (cont []DetailedTargetType) {
var qualTargetCont []assessmentmodel.DetailedTarget
err := global.GVA_DB_Performanceappraisal.Where("`dt_state` = 1 AND `dt_parentid` = ? AND `dt_parentid_sun` = ?", targetId, detId).Find(&qualTargetCont).Error
if err != nil {
return
}
for _, v := range qualTargetCont {
var sunCont DetailedTargetType
sunCont.Id = strconv.FormatInt(v.Id, 10)
sunCont.Title = v.Title
sunCont.UserList, sunCont.UserListAry = GetOperator(demID, targetId, detId, v.Id, parAryId)
cont = append(cont, sunCont)
}
return
}
//获取执行人
func GetOperator(dimID, tarId, sunTarId, detaId int64, parAryId []int64) (UserList []string, UserListAry []QualEvalArrt) {
var qualEval []assessmentmodel.QualitativeEvaluation
err := global.GVA_DB_Performanceappraisal.Where("`qe_state` = 1 AND `qe_dimension` = ? AND `qe_target` = ? AND `qe_target_sun` = ? AND `qe_detailed_target` = ? AND `qe_accept_evaluation` IN ?", dimID, tarId, sunTarId, detaId, parAryId).Find(&qualEval).Error
if err != nil {
return
}
for _, v := range qualEval {
if v.Operator != "" {
usAry := strings.Split(v.Operator, ",")
if len(usAry) > 0 {
for _, vv := range usAry {
if commonus.IsItTrueString(vv, UserList) == false {
UserList = append(UserList, vv)
usCont, usErr := commonus.GetUserInfoPublic([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": vv})
if usErr == true {
var userCont QualEvalArrt
userCont.Id = vv
userCont.Name = usCont.Name
UserListAry = append(UserListAry, userCont)
}
}
}
}
}
}
return
}
//获取定性指标->指标细则修改回显
func (d *DutyAssessApi) GetDetailedTargetCallBack(c *gin.Context) {
var requestData commonus.SetIds
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 cont assessmentmodel.QualitativeEvaluation
errErr := global.GVA_DB_Performanceappraisal.Where("`qe_id` = ?", requestData.Id).Find(&cont).Error
if errErr != nil {
response.Result(103, err, "没有获取到数据!", c)
return
}
//输出格式
var content OutTargetCont
content.Id = strconv.FormatInt(requestData.Id, 10)
//获取子栏目信息
sunTargetCont, _ := commonus.GetQualitativeTargetInfo(cont.TargetSun)
content.SunTargerId = strconv.FormatInt(sunTargetCont.Id, 10)
content.SunTargetName = sunTargetCont.Title
//获取指标细则信息
detaileInfo, _ := commonus.GetDetailedTargetInfo(cont.DetailedTarget)
content.DetailedTargetId = strconv.FormatInt(detaileInfo.Id, 10)
content.DetailedTargetName = detaileInfo.Title
content.DetailedTargetContent = detaileInfo.Content
shenPiRen := strings.Split(cont.Operator, ",")
content.Operator = shenPiRen
for _, v := range shenPiRen {
usCont, usErr := commonus.GetUserInfoPublic([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": v})
if usErr == true {
var userCont QualEvalArrt
userCont.Id = v
userCont.Name = usCont.Name
content.OperatorAry = append(content.OperatorAry, userCont)
}
}
//获取所有子栏目
var qualTar []assessmentmodel.QualitativeTarget
quaTarErr := global.GVA_DB_Performanceappraisal.Where("`q_parent_id` = ?", cont.Target).Find(&qualTar).Error
if quaTarErr == nil {
for _, s_v := range qualTar {
var sunTarCont QualEvalArrt
sunTarCont.Id = strconv.FormatInt(s_v.Id, 10)
sunTarCont.Name = s_v.Title
content.SunTargerList = append(content.SunTargerList, sunTarCont)
}
}
response.Result(0, content, "获取成功!", c)
}
//获取定性指标->指标细则修改回显
func (d *DutyAssessApi) EiteDetailedTargetCallBack(c *gin.Context) {
var requestData GetEiteTargetCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Id == "" {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
var cont assessmentmodel.QualitativeEvaluation
errErr := global.GVA_DB_Performanceappraisal.Where("`qe_id` = ?", requestData.Id).Find(&cont).Error
if errErr != nil {
response.Result(103, err, "未能获取到数据!", c)
return
}
isTrue := false
if requestData.Class != 1 {
isTrue = NewEiteData(requestData, cont)
} else {
isTrue = NewAddData(requestData, cont)
}
if isTrue == false {
response.Result(104, err, "数据处理失败", c)
return
}
response.Result(0, err, "数据处理成功", c)
}
//新增
func NewAddData(getData GetEiteTargetCont, oldData assessmentmodel.QualitativeEvaluation) (isTrue bool) {
isTrue = false
var detailedTargetInfo assessmentmodel.DetailedTarget
detailedTargetInfo.Title = getData.DetailedTargetName
detailedTargetInfo.Content = getData.DetailedTargetContent
detailedTargetInfo.ParentId = oldData.Target
detailedTargetInfo.ParentIdSun = oldData.TargetSun
detailedTargetInfo.State = 1
detailedTargetInfo.AddTime = time.Now().Unix()
addErr := global.GVA_DB_Performanceappraisal.Create(&detailedTargetInfo).Error
if addErr != nil {
return
}
var saveData assessmentmodel.QualitativeEvaluation
saveData.Title = oldData.Title
saveData.DepartmentId = oldData.DepartmentId
saveData.Dimension = oldData.Dimension
saveData.Target = oldData.Target
saveData.TargetSun = oldData.TargetSun
saveData.DetailedTarget = detailedTargetInfo.Id
saveData.Type = oldData.Type
saveData.Weight = oldData.Weight
saveData.Unit = oldData.Unit
saveData.ReferenceScore = oldData.ReferenceScore
saveData.State = oldData.State
saveData.Addtime = time.Now().Unix()
saveData.Eitetime = time.Now().Unix()
saveData.Group = oldData.Group
saveData.QualEvalId = oldData.QualEvalId
saveData.Cycles = oldData.Cycles
saveData.CycleAttres = oldData.CycleAttres
saveData.AcceptEvaluation = oldData.AcceptEvaluation
saveData.Operator = oldData.Operator
saveData.Content = oldData.Content
addErrQE := global.GVA_DB_Performanceappraisal.Create(&saveData).Error
if addErrQE != nil {
return
}
isTrue = true
return
}
//修改
func NewEiteData(getData GetEiteTargetCont, oldData assessmentmodel.QualitativeEvaluation) (isTrue bool) {
isTrue = false
eiteDetailedInfo := commonus.MapOut()
eiteDetailedInfo["dt_time"] = time.Now().Unix()
if getData.DetailedTargetName != "" {
eiteDetailedInfo["dt_title"] = getData.DetailedTargetName
}
if getData.DetailedTargetContent != "" {
eiteDetailedInfo["dt_content"] = getData.DetailedTargetContent
}
eiteDetaInfoErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_id` = ?", oldData.DetailedTarget).Updates(&eiteDetailedInfo).Error
if eiteDetaInfoErr != nil {
return
}
if len(getData.Operator) > 0 {
eiteQualEvlInfo := commonus.MapOut()
eiteQualEvlInfo["qe_eitetime"] = time.Now().Unix()
eiteQualEvlInfo["qe_operator"] = strings.Join(getData.Operator, ",")
eiteQualEvlInfo["qe_department_id"] = strings.Join(commonus.GetDepartmentByUserBast(getData.Operator), ",")
eiteDetaQuaInfoErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` = ?", oldData.Id).Updates(&eiteQualEvlInfo).Error
if eiteDetaQuaInfoErr != nil {
return
}
}
isTrue = true
return
}
//修改子栏目名称
func (d *DutyAssessApi) EiteSunTargetName(c *gin.Context) {
var requestData QualEvalArrt
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Id == "" {
response.Result(102, err, "参数错误!请重新提交!", c)
return
}
if requestData.Name == "" {
response.Result(103, err, "参数错误!请重新提交!", c)
return
}
var oldId int64
errCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("q_id").Where("`q_id` = ?", requestData.Id).First(&oldId).Error
if errCont != nil {
response.Result(104, err, "没有该数据!", c)
return
}
eiteCont := commonus.MapOut()
eiteCont["q_time"] = time.Now().Unix()
eiteCont["q_title"] = requestData.Name
errEiteCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` = ?", requestData.Id).Updates(&eiteCont).Error
if errEiteCont != nil {
response.Result(105, err, "修改失败!", c)
return
}
response.Result(0, err, "数据处理成功", c)
}