package dutyassess import ( "encoding/json" "fmt" "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) shenPiRen := strings.Split(tarCont.Report, ",") targetCont.UserList = 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 targetCont.UserListAry = append(targetCont.UserListAry, userCont) } } 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 if len(requestData.DepartmentMap) > 0 { eiteCont["q_depart"] = strings.Join(requestData.DepartmentMap, ",") } 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) } //删除定性考核指标 func (d *DutyAssessApi) DelDutyTarget(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 } eiteCont := commonus.MapOut() eiteCont["qe_eitetime"] = time.Now().Unix() eiteCont["qe_state"] = 3 errEiteCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_target` = ?", requestData.Id).Updates(&eiteCont).Error if errEiteCont != nil { response.Result(105, errEiteCont, "删除失败!", c) return } response.Result(0, err, "数据处理成功", c) } //删除子栏目及附属指标详情 func (d *DutyAssessApi) DelSunTarDimeat(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 } var qualId int64 errEiteQualGuiShuCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("q_parent_id").Where("`q_id` = ?", requestData.Id).First(&qualId).Error if errEiteQualGuiShuCont != nil { response.Result(103, err, "参数错误!请重新提交!", c) return } eiteCont := commonus.MapOut() eiteCont["qe_eitetime"] = time.Now().Unix() eiteCont["qe_state"] = 3 errEiteCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_target_sun` = ?", requestData.Id).Updates(&eiteCont).Error if errEiteCont != nil { response.Result(105, errEiteCont, "删除失败!", c) return } eiteQualTar := commonus.MapOut() eiteQualTar["q_time"] = time.Now().Unix() eiteQualTar["q_state"] = 3 errEiteQualCont := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` = ?", requestData.Id).Updates(&eiteQualTar).Error if errEiteQualCont == nil { eiteQualTarDited := commonus.MapOut() eiteQualTarDited["dt_time"] = time.Now().Unix() eiteQualTarDited["dt_state"] = 3 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_parentid` = ? AND `dt_parentid_sun` = ?", qualId, requestData.Id).Updates(&eiteQualTarDited) } response.Result(0, err, "数据处理成功", c) } //添加 定性考核指标关系指定 func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) { var requestData AddQualEval err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Group == "" { response.Result(102, err, "请选择归属集团", c) return } if len(requestData.AcceptDepartmentId) <= 0 { response.Result(103, err, "请选择接受考核的部门!", c) return } // if requestData.Dimension == "" { // response.Result(102, err, "请选择考核维度", c) // return // } if requestData.Target == "" { response.Result(104, err, "请选择考核指标", c) return } if requestData.TargetSunTitle == "" { response.Result(105, err, "请输入栏目名称!", c) return } if len(requestData.EvaluationList) <= 0 { response.Result(106, err, "请添加测评详情!", c) return } fmt.Printf("kjh------11------>%v\n", requestData) sunTarDepartStr := strings.Join(requestData.AcceptDepartmentId, ",") //获取子目标情况 sunTargetCont, sunTargetErr := commonus.JudgeColumn(requestData.Target, requestData.TargetSun, requestData.TargetSunTitle, sunTarDepartStr) if sunTargetErr != true { } //将集团Id转化成整型 groupInt, groupIntErr := strconv.ParseInt(requestData.Group, 10, 64) if groupIntErr != nil { groupInt = 1 } //指标 targetInt, targetIntErr := strconv.ParseInt(requestData.Target, 10, 64) if targetIntErr != nil { targetInt = 0 } //维度 dimensionInt, departinIntErr := strconv.ParseInt(requestData.Dimension, 10, 64) if departinIntErr != nil { dimensionInt = 0 } if dimensionInt == 0 { targetInfo, targetInfoErr := commonus.GetTargetInfo(targetInt) if targetInfoErr == true { dimensionInt = targetInfo.Dimension } } //关联集团部门考核维度 commonus.AddDepartDimension(requestData.Group, strconv.FormatInt(dimensionInt, 10), requestData.Dimension, 1) //原指标细则 var oldId []int64 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("`dt_id`").Where("`dt_state` = 1 AND `dt_parentid` = ? AND `dt_parentid_sun` = ?", requestData.Target, sunTargetCont.Id).Find(&oldId) //遍历指标细则 var targetContList []DutyAssEssTarget var newAddId []int64 for _, v := range requestData.EvaluationList { // detailedTargetInfo, dtiIsTrue := commonus.JudgeDetails(requestData.Target, v.Title, v.Content, v.DetailedTarget, sunTargetCont.Id) detailedTargetInfo, dtiIsTrue := commonus.JudgeDetailsCopy(requestData.Target, v.Title, v.Content, v.DetailedTarget, v.ReferenceScore, v.Unit, sunTargetCont.Id, v.AddOrReduce) /* 参数说明 @ascription 归属指标栏目 @title 指标细则 @explain 指标说明' @explainId 指标明细ID @ReferenceScore 分数 @CompanyCont 单位 @sunTargetId 子栏目 */ if dtiIsTrue == true { if detailedTargetInfo.Id != 0 { newAddId = append(newAddId, detailedTargetInfo.Id) var targetContInfo DutyAssEssTarget targetContInfo.Id = detailedTargetInfo.Id targetContInfo.Operator = v.Operator targetContList = append(targetContList, targetContInfo) } } } mergeMap := append(oldId, newAddId...) //合并两个数组 var finalResultId []int64 //最终结果 for _, m_v := range mergeMap { if commonus.IsItTrue(m_v, finalResultId) != true { finalResultId = append(finalResultId, m_v) } } //组合写入数据 for _, f_v := range finalResultId { if commonus.IsItTrue(f_v, newAddId) != true { var targetContInfos DutyAssEssTarget targetContInfos.Id = f_v targetContList = append(targetContList, targetContInfos) } } // response.Result(0, targetContList, "处理成功!", c) // return //判断该集团指标子栏目是否存在 var arTaegetInfo assessmentmodel.Assesstarget judgeARTErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND `suntargetid` = ?", groupInt, dimensionInt, targetInt, sunTargetCont.Id).First(&arTaegetInfo).Error //判断指标是否存在并且获取已存在的所有指标关联部门 var guanLianBuMen []string for _, vvk_vs := range requestData.AcceptDepartmentId { if commonus.IsItTrueString(vvk_vs, guanLianBuMen) == false { guanLianBuMen = append(guanLianBuMen, vvk_vs) } } var sunTarId []int64 judgeARkTErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`suntargetid`").Where("`group` = ? AND `dimension` = ? AND `targetid` = ? ", groupInt, dimensionInt, targetInt).Find(&sunTarId).Error fmt.Printf("kjh------1------>%v------>%v\n", sunTarId, judgeARkTErr) if judgeARkTErr == nil { var sunTarDepartMap []string judgeSunTarkTErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("`q_depart`").Where("`q_id` IN ?", sunTarId).Find(&sunTarDepartMap).Error fmt.Printf("kjh------2------>%v\n", sunTarDepartMap) if judgeSunTarkTErr == nil { // var departStrAry []string for _, vvk := range sunTarDepartMap { departStrAry := strings.Split(vvk, ",") for _, vvk_v := range departStrAry { if commonus.IsItTrueString(vvk_v, guanLianBuMen) == false { guanLianBuMen = append(guanLianBuMen, vvk_v) } } } } eiteContkk := commonus.MapOut() eiteContkk["departmentmap"] = strings.Join(guanLianBuMen, ",") eiteContkk["time"] = time.Now().Unix() global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`suntargetid` IN ?", sunTarId).Updates(eiteContkk) fmt.Printf("kjh------3------>%v\n", eiteContkk) } if judgeARTErr == nil { var eiteTarList []DutyAssEssTarget // var eiteId []int64 if arTaegetInfo.Content != "" && arTaegetInfo.Content != "null" { var tarList []DutyAssEssTarget jsonErr := json.Unmarshal([]byte(arTaegetInfo.Content), &tarList) if jsonErr == nil { if len(tarList) > len(targetContList) { for _, tl_v := range tarList { tarInfo, tarInfoErr := JudgeDeiScor(tl_v.Id, targetContList) if tarInfoErr == false { eiteTarList = append(eiteTarList, tarInfo) } else { eiteTarList = append(eiteTarList, tl_v) } } } else { for _, ttl_v := range targetContList { tarInfo, tarInfoErr := JudgeDeiScor(ttl_v.Id, tarList) if tarInfoErr == true { eiteTarList = append(eiteTarList, tarInfo) } else { eiteTarList = append(eiteTarList, ttl_v) } } } } } else { eiteTarList = targetContList } // fmt.Printf("llllllllllll----->%v\n", newAddId) eiteCont := commonus.MapOut() // oldDepartAry := strings.Join(",",",") // oldDepartAry := strings.Split(arTaegetInfo.Departmentmap, ",") // mergeDepartMap := append(oldDepartAry, requestData.AcceptDepartmentId...) // var finalResultDepartId []string //最终结果 // for _, mdm_v := range mergeDepartMap { // if commonus.IsItTrueString(mdm_v, finalResultDepartId) != true { // finalResultDepartId = append(finalResultDepartId, mdm_v) // } // } // eiteCont["departmentmap"] = strings.Join(requestData.AcceptDepartmentId, ",") // eiteCont["departmentmap"] = strings.Join(guanLianBuMen, ",") eiteCont["time"] = time.Now().Unix() jsonStr, jsonMErr := json.Marshal(eiteTarList) if jsonMErr == nil { eiteCont["content"] = string(jsonStr) } eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", arTaegetInfo.Id).Updates(eiteCont).Error if eiteErr == nil { response.Result(0, err, "处理成功!", c) } else { response.Result(107, err, "请添加测评详情!", c) } } else { arTaegetInfo.Group = groupInt arTaegetInfo.Departmentmap = strings.Join(guanLianBuMen, ",") arTaegetInfo.TargetId = targetInt arTaegetInfo.SunTargetId = sunTargetCont.Id arTaegetInfo.Dimension = dimensionInt jsonStr, jsonMErr := json.Marshal(targetContList) if jsonMErr == nil { arTaegetInfo.Content = string(jsonStr) } arTaegetInfo.Time = time.Now().Unix() addErr := global.GVA_DB_Performanceappraisal.Create(&arTaegetInfo).Error if addErr == nil { response.Result(0, err, "处理成功!", c) } else { response.Result(107, err, "请添加测评详情!", c) } } } //判断是否存在项目 func JudgeDeiScor(id int64, listCont []DutyAssEssTarget) (cont DutyAssEssTarget, isTrue bool) { isTrue = false for _, v := range listCont { if id == v.Id { cont = v isTrue = true } } return } //获取定性考核指标关系指定列表 func (d *DutyAssessApi) GetDutyRelationList(c *gin.Context) { // var sunTargerIdAry []int64 // errGroup := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`group`,`targetid`,`suntargetid`").Group("`group`,`targetid`,`suntargetid`").Order("`group` ASC").Order("`targetid` ASC").Order("`suntargetid` ASC").Find(&sunTargerIdAry).Error // if errGroup != nil { // response.Result(107, errGroup, "没有信息", c) // return // } var list []assessmentmodel.Assesstarget err := global.GVA_DB_Performanceappraisal.Order("`group` ASC").Order("`targetid` ASC").Order("`suntargetid` ASC").Find(&list).Error if err != nil { response.Result(107, err, "没有信息", c) return } var outList []OutDutyListes for _, v := range list { var outCont OutDutyListes outCont.Id = strconv.FormatInt(v.Id, 10) outCont.Group = strconv.FormatInt(v.Group, 10) //指标信息 outCont.Target = strconv.FormatInt(v.TargetId, 10) tarCont, _ := commonus.GetTargetInfo(v.TargetId) outCont.TargetName = tarCont.Title //维度信息 dutyClassCont, _ := commonus.GetDutyClassInfo(tarCont.Dimension) outCont.Dimension = strconv.FormatInt(tarCont.Dimension, 10) outCont.DimensionName = dutyClassCont.Title outCont.Content = "" //指标说明 outCont.Unit = tarCont.Uniteing //单位"` outCont.ReferenceScore = 0 //标准分值"` outCont.Cycles = tarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"` outCont.CycleAttres = tarCont.CycleAttres //辅助计数"` outCont.State = 1 outCont.DepartmentId, outCont.DepartmentAry = commonus.GetBranchDepartAry(strings.Split(v.Departmentmap, ",")) shenPiRen := strings.Split(tarCont.Report, ",") outCont.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 _, groupInfo := commonus.GetGroupCont(usCont.Group) userCont.GroupName = groupInfo.Name _, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId) userCont.DepartmentName = bfInfo.Name userCont.Number = usCont.Number outCont.UserListAry = append(outCont.UserListAry, userCont) } } outList = append(outList, outCont) } response.Result(0, outList, "查询完成!", c) } //查看定性考核项目详情 func (d *DutyAssessApi) LookDutyTargetInfo(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 assessInfoList []assessmentmodel.Assesstarget assErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Find(&assessInfoList).Error if assErr != nil { response.Result(105, assErr, "没有获取到数据!", c) return } var uotContAry []TargetContOutCont for _, v := range assessInfoList { var uotCont TargetContOutCont uotCont.DutyAssessId = strconv.FormatInt(v.Id, 10) uotCont.Type = 1 //集团 uotCont.Group = requestData.Group _, groupCont := commonus.GetGroupCont(v.Group) uotCont.GroupNAme = groupCont.Name //执行部门 uotCont.DepartmentId = v.Departmentmap _, departInfoAry := commonus.GetBranchDepartAry(strings.Split(v.Departmentmap, ",")) var depNameMap []string for _, sep_v := range departInfoAry { depNameMap = append(depNameMap, sep_v.Parentname) } uotCont.DepartmentName = strings.Join(depNameMap, ",") uotCont.DepartNameMap = depNameMap //维度 uotCont.Dimension = strconv.FormatInt(v.Dimension, 10) dutyClassCont, _ := commonus.GetDutyClassInfo(v.Dimension) uotCont.DimensionName = dutyClassCont.Title //指标 uotCont.Target = requestData.TargetId targetInfo, _ := commonus.GetTargetInfo(v.TargetId) uotCont.TargetName = targetInfo.Title //子栏目 uotCont.TargetSun = strconv.FormatInt(v.SunTargetId, 10) info, _ := commonus.GetQualitativeTargetInfo(v.SunTargetId) sunTarDepartMap := strings.Split(info.Depart, ",") uotCont.DepartIdMap = sunTarDepartMap //查询部门 isShow := false if requestData.DepartId != "" { if commonus.IsItTrueString(requestData.DepartId, sunTarDepartMap) == true { isShow = true } } else { isShow = true } if isShow == true { uotCont.TargetSunName = info.Title //拆解指标详情 var detailedList []DutyAssEssTarget detailedListErr := json.Unmarshal([]byte(v.Content), &detailedList) if detailedListErr == nil { // var detaiList []TargetContOutCont // for _,d_v := range detailedList{} if len(detailedList) > 0 { for _, d_v := range detailedList { uotCont.Id = strconv.FormatInt(d_v.Id, 10) uotCont.DetailedTarget = strconv.FormatInt(d_v.Id, 10) uotCont.UserList = d_v.Operator dtCont, _ := commonus.GetDetailedTargetInfo(d_v.Id) uotCont.DetailedTargetName = dtCont.Title uotCont.Content = dtCont.Content uotCont.Unit = dtCont.Company uotCont.State = dtCont.State uotCont.MinScore = float64(dtCont.MinScore) / 100 uotCont.MaxScore = float64(dtCont.MaxScore) / 100 uotCont.ScoreIng = "0" if dtCont.MinScore > 0 && dtCont.MaxScore > 0 { uotCont.ScoreIng = fmt.Sprintf("%v-%v", float64(dtCont.MinScore)/100, float64(dtCont.MaxScore)/100) } else if dtCont.MinScore > 0 && dtCont.MaxScore <= 0 { uotCont.ScoreIng = fmt.Sprintf("%v", float64(dtCont.MinScore)/100) } else if dtCont.MinScore <= 0 && dtCont.MaxScore > 0 { uotCont.ScoreIng = fmt.Sprintf("%v", float64(dtCont.MaxScore)/100) } else { uotCont.ScoreIng = "0" } for _, u_v := range d_v.Operator { usCont, usErr := commonus.GetWorkUser(u_v) if usErr == true { var userCont QualEvalArrt userCont.Id = u_v userCont.Name = usCont.Name userCont.Icon = usCont.Icon _, 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) } } uotContAry = append(uotContAry, uotCont) } } else { uotContAry = append(uotContAry, uotCont) } } else { uotContAry = append(uotContAry, uotCont) } } } if len(uotContAry) <= 0 { response.Result(106, uotContAry, "没有获取到数据!", c) } else { response.Result(0, uotContAry, "获取成功!", c) } } //删除考核指标 func (d *DutyAssessApi) NewDelTarGet(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 } groupId, _ := strconv.ParseInt(requestData.Group, 10, 64) dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) targetId, _ := strconv.ParseInt(requestData.TargetId, 10, 64) isTrue := commonus.JudegDutyIsUse(groupId, dimensionId, targetId, 0, 0) if isTrue != true { response.Result(105, err, "你当前要删除的项目已经使用!请不要删除!以免造成正在进行的审批统计产生数据误差!", c) return } delErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Delete(&assessmentmodel.Assesstarget{}).Error if delErr != nil { response.Result(106, delErr, "删除失败!", c) return } response.Result(0, delErr, "删除成功!", c) } //获取被修改指标细则的详情 func (d *DutyAssessApi) GetNewEiteDetailedTarget(c *gin.Context) { var requestData GetDeitalTarCont err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Id == "" { response.Result(102, requestData, "参数错误!请重新提交!", c) return } if requestData.AssId == "" { response.Result(103, requestData, "参数错误!请重新提交!", c) return } var cont assessmentmodel.DetailedTarget errErr := global.GVA_DB_Performanceappraisal.Where("`dt_id` = ?", requestData.Id).First(&cont).Error if errErr != nil { response.Result(104, errErr, "没有获取到数据!", c) return } var assCont assessmentmodel.Assesstarget errAssErr := global.GVA_DB_Performanceappraisal.Where("`at_id` = ?", requestData.AssId).First(&assCont).Error if errAssErr != nil { response.Result(105, errAssErr, "没有获取到数据!", c) return } var outPutCont NewOutPutDetailedTarget outPutCont.Id = strconv.FormatInt(cont.Id, 10) //获取子栏目信息 sunTargetCont, _ := commonus.GetQualitativeTargetInfo(cont.ParentIdSun) outPutCont.SunTargerId = strconv.FormatInt(sunTargetCont.Id, 10) outPutCont.SunTargetName = sunTargetCont.Title //获取指标细则信息 outPutCont.DetailedTargetId = strconv.FormatInt(cont.Id, 10) outPutCont.DetailedTargetName = cont.Title outPutCont.DetailedTargetContent = cont.Content //单位 outPutCont.Unit = cont.Company if cont.MinScore > 0 && cont.MaxScore > 0 { outPutCont.Score = fmt.Sprintf("%v-%v", float64(cont.MinScore)/100, float64(cont.MaxScore)/100) } else if cont.MinScore > 0 && cont.MaxScore <= 0 { outPutCont.Score = fmt.Sprintf("%v", float64(cont.MinScore)/100) } else if cont.MinScore <= 0 && cont.MaxScore > 0 { outPutCont.Score = fmt.Sprintf("%v", float64(cont.MaxScore)/100) } else { outPutCont.Score = "0" } //解析考核方案内的指标关联人 //拆解指标详情 var detailedList []DutyAssEssTarget detailedListErr := json.Unmarshal([]byte(assCont.Content), &detailedList) if detailedListErr == nil { for _, v := range detailedList { if v.Id == cont.Id { for _, us_key := range v.Operator { usCont, _ := commonus.GetWorkUser(us_key) var userCont QualEvalArrt userCont.Id = us_key userCont.Name = usCont.Name userCont.Icon = usCont.Icon _, groupInfo := commonus.GetGroupCont(usCont.Group) userCont.GroupName = groupInfo.Name _, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId) userCont.DepartmentName = bfInfo.Name userCont.Number = usCont.Number outPutCont.OperatorAry = append(outPutCont.OperatorAry, userCont) outPutCont.Operator = append(outPutCont.Operator, us_key) } } } } //获取所有子栏目 var qualTar []assessmentmodel.QualitativeTarget quaTarErr := global.GVA_DB_Performanceappraisal.Where("`q_parent_id` = ?", cont.ParentId).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 outPutCont.SunTargerList = append(outPutCont.SunTargerList, sunTarCont) } } outPutCont.AssId = requestData.AssId response.Result(0, outPutCont, "获取成功!", c) } //修改定性考核指标细则内容 func (d *DutyAssessApi) NewEiteDetailedTarget(c *gin.Context) { var requestData NewEiteDtyDiteCont err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } // if requestData.Id == "" { // response.Result(102, requestData, "参数错误!请重新提交!", c) // return // } if requestData.AssId == "" { response.Result(103, requestData, "参数错误!请重新提交!", c) return } var assCont assessmentmodel.Assesstarget errAssErr := global.GVA_DB_Performanceappraisal.Where("`at_id` = ?", requestData.AssId).First(&assCont).Error if errAssErr != nil { response.Result(104, errAssErr, "没有获取到数据!", c) return } detailedTargetInfo, dtiIsTrue := commonus.JudgeDetailsCopy(strconv.FormatInt(assCont.TargetId, 10), requestData.DetailedTargetName, requestData.DetailedTargetContent, requestData.Id, requestData.Score, requestData.Unit, assCont.SunTargetId, requestData.AddOrReduce) if dtiIsTrue != true { response.Result(105, errAssErr, "指标明细编辑失败!", c) return } //设定定性考核指标新增键对关系 var addOpentDetial DutyAssEssTarget addOpentDetial.Id = detailedTargetInfo.Id addOpentDetial.Operator = requestData.Operator //拆解指标详情 var detailedList []DutyAssEssTarget detailedListErr := json.Unmarshal([]byte(assCont.Content), &detailedList) // ssss := commonus.MapOut() // ssss["Content"] = assCont.Content // ssss["detailedList"] = detailedList // ssss["detailedListErr"] = detailedListErr // response.Result(105, ssss, "指标明细编辑失败!", c) // return if detailedListErr != nil { var eiteOpentDetiallist []DutyAssEssTarget isAdd := false for _, dil_v := range detailedList { var detailedEiteCont DutyAssEssTarget if dil_v.Id == detailedTargetInfo.Id { detailedEiteCont.Id = dil_v.Id detailedEiteCont.Operator = requestData.Operator isAdd = true } else { detailedEiteCont.Id = dil_v.Id detailedEiteCont.Operator = dil_v.Operator } eiteOpentDetiallist = append(eiteOpentDetiallist, detailedEiteCont) } if isAdd == false { eiteOpentDetiallist = append(eiteOpentDetiallist, addOpentDetial) } eiteContIng := commonus.MapOut() eiteContIng["time"] = time.Now().Unix() jsonStr, jsonMErr := json.Marshal(eiteOpentDetiallist) if jsonMErr == nil { eiteContIng["content"] = string(jsonStr) } eiteErring := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", assCont.Id).Updates(&eiteContIng).Error if eiteErring == nil { response.Result(0, err, "处理成功!2", c) } else { response.Result(107, err, "请添加测评详情!", c) } } else { // var eiteOpentDetiallist []DutyAssEssTarget var eiteOpentDetiallist []DutyAssEssTarget isAdd := false for _, dil_v := range detailedList { var detailedEiteCont DutyAssEssTarget if dil_v.Id == detailedTargetInfo.Id { detailedEiteCont.Id = dil_v.Id detailedEiteCont.Operator = requestData.Operator isAdd = true } else { detailedEiteCont.Id = dil_v.Id detailedEiteCont.Operator = dil_v.Operator } eiteOpentDetiallist = append(eiteOpentDetiallist, detailedEiteCont) } if isAdd == false { eiteOpentDetiallist = append(eiteOpentDetiallist, addOpentDetial) } eiteCont := commonus.MapOut() eiteCont["time"] = time.Now().Unix() jsonStr, jsonMErr := json.Marshal(eiteOpentDetiallist) if jsonMErr == nil { eiteCont["content"] = string(jsonStr) } eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", assCont.Id).Updates(&eiteCont).Error if eiteErr == nil { response.Result(0, err, "处理成功!1", c) } else { response.Result(107, err, "请添加测评详情!", c) } } } //删除指标 func (d *DutyAssessApi) NewDelDetailedTarget(c *gin.Context) { var requestData GetDeitalTarCont err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Id == "" { response.Result(102, requestData, "参数错误!请重新提交!", c) return } if requestData.AssId == "" { response.Result(103, requestData, "参数错误!请重新提交!", c) return } detailId, _ := strconv.ParseInt(requestData.Id, 10, 64) var assCont assessmentmodel.Assesstarget errAssErr := global.GVA_DB_Performanceappraisal.Where("`at_id` = ?", requestData.AssId).First(&assCont).Error if errAssErr != nil { response.Result(105, errAssErr, "没有获取到数据!", c) return } eiteCont := commonus.MapOut() eiteCont["dt_time"] = time.Now().Unix() eiteCont["dt_state"] = 3 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_id` = ?", requestData.Id).Updates(&eiteCont) var detailedList []DutyAssEssTarget detailedListErr := json.Unmarshal([]byte(assCont.Content), &detailedList) if detailedListErr == nil { var eiteAssContList []DutyAssEssTarget for _, v := range detailedList { if v.Id != detailId { eiteAssContList = append(eiteAssContList, v) } } if len(eiteAssContList) > 0 { eiteAssCont := commonus.MapOut() eiteAssCont["time"] = time.Now().Unix() jsonStr, jsonMErr := json.Marshal(eiteAssContList) if jsonMErr == nil { eiteAssCont["content"] = string(jsonStr) } global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", requestData.AssId).Updates(&eiteAssCont) } } response.Result(0, requestData, "修改完成!", c) } //删除子栏目 func (d *DutyAssessApi) NewDelSunTarget(c *gin.Context) { var requestData GetDeitalTarCont err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Id == "" { response.Result(102, requestData, "参数错误!请重新提交!", c) return } if requestData.AssId == "" { response.Result(103, requestData, "参数错误!请重新提交!", c) return } var assCont []assessmentmodel.Assesstarget errAssErr := global.GVA_DB_Performanceappraisal.Where("`targetid` = ? AND `suntargetid` = ?", requestData.AssId, requestData.Id).Find(&assCont).Error if errAssErr != nil { response.Result(105, errAssErr, "没有获取到数据!", c) return } var delDetaId []int64 var delAssId []int64 for _, v := range assCont { var detailedList []DutyAssEssTarget detailedListErr := json.Unmarshal([]byte(v.Content), &detailedList) if detailedListErr == nil { for _, d_v := range detailedList { delDetaId = append(delDetaId, d_v.Id) } } delAssId = append(delAssId, v.Id) } if len(delDetaId) > 0 { eiteCont := commonus.MapOut() eiteCont["dt_time"] = time.Now().Unix() eiteCont["dt_state"] = 3 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_id` IN ?", delDetaId).Updates(&eiteCont) } if len(delAssId) > 0 { global.GVA_DB_Performanceappraisal.Where("`at_id` IN ?", delAssId).Delete(&assessmentmodel.Assesstarget{}) } response.Result(0, requestData, "修改完成!", c) } //新的部门考核指标获取列表 func (d *DutyAssessApi) NewGerDerpatTarList(c *gin.Context) { var requestData rationSelect c.ShouldBindJSON(&requestData) //获取维度列表 var dutyClassAry []assessmentmodel.DutyClass gromDb := global.GVA_DB_Performanceappraisal gromDb = gromDb.Where("`state` = 1") classErr := gromDb.Order("sort ASC").Find(&dutyClassAry).Error if classErr != nil { response.Result(0, classErr, "未获取到数据", c) return } var departAryList []DepartTargetListTop for _, v := range dutyClassAry { conList := GetTargetGroup(requestData.Group, strconv.FormatInt(v.Id, 10), requestData.DepartmentId) var departcontInfo DepartTargetListTop departcontInfo.Id = strconv.FormatInt(v.Id, 10) departcontInfo.Name = v.Title departcontInfo.Child = conList if len(conList) > 0 { departAryList = append(departAryList, departcontInfo) } } response.Result(0, departAryList, "数据获取成功!", c) } //获取指标组合 /* @group 集团 @dimensionId 维度 @departID 部门 */ func GetTargetGroup(group, dimensionId, departID string) (contAry []DepartTargetList) { var rationId []int64 gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Select("et_id").Where("`et_type` = 2 AND `et_state` = 1 AND `et_dimension` = ?", dimensionId) if departID != "" { sqlOrStr := fmt.Sprintf("FIND_IN_SET(%v,`et_relevant_departments`)", departID) sqlOrStr = fmt.Sprintf("`et_share` = 1 OR (`et_share` = 2 AND (%v))", sqlOrStr) gormDb = gormDb.Where(sqlOrStr) } listErr := gormDb.Find(&rationId).Error if listErr != nil { // return } var qualit []int64 errAssErr := global.GVA_DB_Performanceappraisal.Select("targetid").Model(&assessmentmodel.Assesstarget{}).Where("`state` = 1 AND `group` = ? AND `dimension` = ? AND FIND_IN_SET(?,`departmentmap`)", group, dimensionId, departID).Find(&qualit).Error if errAssErr != nil { // return } mergeMap := append(rationId, qualit...) //合并两个数组 var finalResultId []int64 //最终结果 for _, m_v := range mergeMap { if commonus.IsItTrue(m_v, finalResultId) != true { finalResultId = append(finalResultId, m_v) } } //获取指标列表 var evaluatCont []assessmentmodel.EvaluationTarget aryErr := global.GVA_DB_Performanceappraisal.Where("`et_state` = 1 AND `et_id` IN ?", finalResultId).Find(&evaluatCont).Error if aryErr != nil { return } for _, e_v := range evaluatCont { var cont DepartTargetList cont.Id = strconv.FormatInt(e_v.Id, 10) cont.Name = e_v.Title cont.Content = "" cont.Unit = e_v.Uniteing cont.State = e_v.State cont.ReferenceScore = commonus.GetWeight(group, dimensionId, departID, strconv.FormatInt(e_v.Id, 10), int64(e_v.Type)) cont.IsTrue = 2 contAry = append(contAry, cont) } return } //部门考核添加。NEW func (d *DutyAssessApi) NewAddDepartDuty(c *gin.Context) { var requestData AddDutyNewContGroup err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Group == "" { response.Result(102, err, "数据获取失败!", c) return } groupId, groupErr := strconv.ParseInt(requestData.Group, 10, 64) //集团ID if groupErr != nil { groupId = 0 } if requestData.DepartmentId == "" { response.Result(103, err, "数据获取失败!", c) return } departId, departErr := strconv.ParseInt(requestData.DepartmentId, 10, 64) //部门ID if departErr != nil { departId = 0 } if len(requestData.Child) < 0 { response.Result(104, err, "没有要添加的数据", c) return } var eiteIdAry []int64 //被修改的考核条目 var saveDataAry []assessmentmodel.QualitativeEvaluation //新增条目 for _, v := range requestData.Child { //维度 commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, "", int64(v.ZhiFraction), 1) for _, tar_v := range v.Child { //指标 if tar_v.Status == 1 { //使用 targetId, targetErr := strconv.ParseInt(tar_v.Id, 10, 64) //指标ID转换 if targetErr == nil { fmt.Printf("Targer---1---->%v\n", targetId) evalTarCont, evalTarContErr := commonus.GetTargetInfo(targetId) //获取指标内容 if evalTarContErr == true { fmt.Printf("Targer---2---->%v\n", targetId) //判断是定量还是定性 if evalTarCont.Type == 2 { commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, tar_v.Id, tar_v.ReferenceScore, 2) //定量指标操作 var saveData assessmentmodel.QualitativeEvaluation var qeId []int64 //需要编辑的ID eiteQualEvalSaveData := commonus.MapOut() //需要编辑的内容 gormQualEval := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_group` = ? AND `qe_dimension` = ? AND `qe_target` = ? AND `qe_type` = ? AND `qe_accept_evaluation` = ?", groupId, v.Id, targetId, evalTarCont.Type, departId) judgeContErr := gormQualEval.Find(&qeId).Error fmt.Printf("Targer---4---->%v---->%v\n", qeId, judgeContErr) //维度ID dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) if dimErr == nil { saveData.Dimension = dimId } saveData.Target = targetId //指标 saveData.Type = evalTarCont.Type //类型 saveData.Unit = evalTarCont.Uniteing //单位 saveData.ReferenceScore = tar_v.ReferenceScore //分值 // saveData.ReferenceScore = v_s.ReferenceScore //分值 saveData.State = 1 //状态 saveData.Addtime = time.Now().Unix() saveData.Eitetime = time.Now().Unix() saveData.Group = groupId //集团 saveData.Cycles = evalTarCont.Cycles //单位 saveData.CycleAttres = evalTarCont.CycleAttres //辅助计数 saveData.AcceptEvaluation = departId //接受考核部门 saveData.Content = tar_v.Content //描述 saveData.Operator = evalTarCont.Report //执行考核人 var departAry []string userKeyAry := strings.Split(evalTarCont.Report, ",") if len(userKeyAry) > 0 { for _, u_v := range userKeyAry { usCont, usErr := commonus.GetWorkUser(u_v) if usErr == true { departIdStr := strconv.FormatInt(usCont.DepartmentId, 10) if commonus.IsItTrueString(departIdStr, departAry) == false { departAry = append(departAry, departIdStr) } } } } saveData.DepartmentId = strings.Join(departAry, ",") eiteQualEvalSaveData["qe_department_id"] = strings.Join(departAry, ",") if judgeContErr == nil { if len(qeId) > 0 { eiteQualEvalSaveData["qe_dimension"] = dimId eiteQualEvalSaveData["qe_target"] = targetId eiteQualEvalSaveData["qe_type"] = evalTarCont.Type eiteQualEvalSaveData["qe_unit"] = evalTarCont.Uniteing eiteQualEvalSaveData["qe_reference_score"] = tar_v.ReferenceScore eiteQualEvalSaveData["qe_state"] = 1 eiteQualEvalSaveData["qe_eitetime"] = time.Now().Unix() eiteQualEvalSaveData["qe_group"] = groupId eiteQualEvalSaveData["qe_cycle"] = evalTarCont.Cycles eiteQualEvalSaveData["qe_cycleattr"] = evalTarCont.CycleAttres eiteQualEvalSaveData["qe_accept_evaluation"] = departId eiteQualEvalSaveData["qe_operator"] = evalTarCont.Report eiteQualEvalSaveData["qe_content"] = tar_v.Content eiteIdAry = append(eiteIdAry, dimId) //修改已经存在的内容 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` IN ?", qeId).Updates(eiteQualEvalSaveData) } else { saveDataAry = append(saveDataAry, saveData) } } else { //要新增的条目 saveDataAry = append(saveDataAry, saveData) } } else { commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, tar_v.Id, tar_v.ReferenceScore, 1) //定性指标操作 //获取部门关联考核指标项目 var assessTarList []assessmentmodel.Assesstarget judgeARTErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND FIND_IN_SET(?,`departmentmap`)", groupId, v.Id, tar_v.Id, departId).Find(&assessTarList).Error fmt.Printf("Targer---5---->%v---->%v---->%v\n", targetId, v.Id, tar_v.Id) if judgeARTErr == nil { var guoDu []AddPartMentGuodu for _, ass_v := range assessTarList { judgeTure := commonus.JudegSunTarToDepart(ass_v.SunTargetId, departId) if judgeTure == true { var guoDuCont AddPartMentGuodu guoDuCont.Group = groupId guoDuCont.DeaprtId = departId guoDuCont.Dimension = ass_v.Dimension guoDuCont.TargetId = ass_v.TargetId guoDuCont.SunTargetId = ass_v.SunTargetId if ass_v.Content != "" { //拆解指标详情 var detailedList []DutyAssEssTarget detailedListErr := json.Unmarshal([]byte(ass_v.Content), &detailedList) if detailedListErr == nil { for _, det_v := range detailedList { guoDuCont.DetailedTarget = det_v.Id guoDuCont.Operator = det_v.Operator guoDu = append(guoDu, guoDuCont) fmt.Printf("Targer---6---->%v---->%v---->%v\n", ass_v.TargetId, ass_v.SunTargetId, det_v.Id) } } else { guoDu = append(guoDu, guoDuCont) } } else { guoDu = append(guoDu, guoDuCont) } } } //判断关联项目 if len(guoDu) > 0 { guoDuJsonm, _ := json.Marshal(guoDu) fmt.Printf("Targer---7---->%v---->%v\n", string(guoDuJsonm), guoDu) for _, ae_v := range guoDu { //判断该项是否已经存在 var eiteGetId int64 gormQualEval := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ? AND `qe_target_sun` = ? AND `qe_detailed_target` = ? AND `qe_type` = 1", ae_v.Group, ae_v.DeaprtId, ae_v.Dimension, ae_v.TargetId, ae_v.SunTargetId, ae_v.DetailedTarget) judgeContErr := gormQualEval.First(&eiteGetId).Error fmt.Printf("Targer---8---->%v---->%v---->%v---->%v---->%v---->%v---->%v\n", eiteGetId, ae_v.Group, ae_v.DeaprtId, ae_v.Dimension, ae_v.TargetId, ae_v.SunTargetId, ae_v.DetailedTarget) if judgeContErr == nil { eiteQualEvalSaveData := commonus.MapOut() //需要编辑的内容 eiteQualEvalSaveData["qe_dimension"] = ae_v.Dimension eiteQualEvalSaveData["qe_target"] = ae_v.TargetId eiteQualEvalSaveData["qe_type"] = 1 getEvalTarCont, _ := commonus.GetDetailedTargetInfo(ae_v.DetailedTarget) //获取指标内容 eiteQualEvalSaveData["qe_unit"] = getEvalTarCont.Company eiteQualEvalSaveData["qe_reference_score"] = 0 eiteQualEvalSaveData["qe_min_score"] = getEvalTarCont.MinScore eiteQualEvalSaveData["qe_max_score"] = getEvalTarCont.MaxScore eiteQualEvalSaveData["qe_state"] = 1 eiteQualEvalSaveData["qe_eitetime"] = time.Now().Unix() eiteQualEvalSaveData["qe_group"] = ae_v.Group evaDingXinglTarCont, _ := commonus.GetTargetInfo(ae_v.TargetId) //获取指标内容 eiteQualEvalSaveData["qe_cycle"] = evaDingXinglTarCont.Cycles eiteQualEvalSaveData["qe_cycleattr"] = evaDingXinglTarCont.CycleAttres eiteQualEvalSaveData["qe_accept_evaluation"] = ae_v.DeaprtId eiteQualEvalSaveData["qe_operator"] = strings.Join(ae_v.Operator, ",") eiteQualEvalSaveData["qe_content"] = getEvalTarCont.Content //获取执行人部门 var departAry []string if len(ae_v.Operator) > 0 { for _, u_v := range ae_v.Operator { usCont, usErr := commonus.GetWorkUser(u_v) if usErr == true { departIdStr := strconv.FormatInt(usCont.DepartmentId, 10) if commonus.IsItTrueString(departIdStr, departAry) == false { departAry = append(departAry, departIdStr) } } } } eiteQualEvalSaveData["qe_department_id"] = strings.Join(departAry, ",") eiteIdAry = append(eiteIdAry, eiteGetId) //修改已经存在的内容 global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` = ?", eiteGetId).Updates(eiteQualEvalSaveData) } else { //写入新的定性考核细则 var saveData assessmentmodel.QualitativeEvaluation saveData.Dimension = ae_v.Dimension saveData.Target = ae_v.TargetId //指标 saveData.Type = 1 //类型 saveData.TargetSun = ae_v.SunTargetId getEvalTarCont, _ := commonus.GetDetailedTargetInfo(ae_v.DetailedTarget) //获取指标内容 saveData.DetailedTarget = ae_v.DetailedTarget saveData.Unit = getEvalTarCont.Company //单位 saveData.ReferenceScore = 0 //分值 saveData.MinScore = getEvalTarCont.MinScore saveData.MaxScore = getEvalTarCont.MaxScore // saveData.ReferenceScore = v_s.ReferenceScore //分值 saveData.State = 1 //状态 saveData.Addtime = time.Now().Unix() saveData.Eitetime = time.Now().Unix() saveData.Group = ae_v.Group //集团 evaDingXinglTarCont, _ := commonus.GetTargetInfo(ae_v.TargetId) //获取指标内容 saveData.Cycles = evaDingXinglTarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年 saveData.CycleAttres = evaDingXinglTarCont.CycleAttres //辅助计数 saveData.AcceptEvaluation = ae_v.DeaprtId //接受考核部门 saveData.Content = getEvalTarCont.Content //描述 saveData.Operator = strings.Join(ae_v.Operator, ",") //执行考核人 //获取执行人部门 var departAry []string if len(ae_v.Operator) > 0 { for _, u_v := range ae_v.Operator { usCont, usErr := commonus.GetWorkUser(u_v) if usErr == true { departIdStr := strconv.FormatInt(usCont.DepartmentId, 10) if commonus.IsItTrueString(departIdStr, departAry) == false { departAry = append(departAry, departIdStr) } } } } saveData.DepartmentId = strings.Join(departAry, ",") saveDataJsonm, _ := json.Marshal(saveData) fmt.Printf("Targer---9---->%v---->%v\n", string(saveDataJsonm), saveData) //要新增的条目 saveDataAry = append(saveDataAry, saveData) } } } } } } } else { fmt.Printf("Targer---3---->%v\n", targetId) } } else { //禁用 qualEvalSave := commonus.MapOut() qualEvalSave["qe_state"] = 2 qualEvalSave["qe_eitetime"] = time.Now().Unix() global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ?", groupId, departId, v.Id, tar_v.Id).Updates(qualEvalSave) } } } if len(saveDataAry) <= 0 && len(eiteIdAry) <= 0 { response.Result(105, saveDataAry, "没有要添加的数据", c) return } if len(saveDataAry) > 0 { addErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error if addErr != nil { response.Result(106, len(saveDataAry), "数据添加失败", c) return } } response.Result(0, saveDataAry, "数据添加成功", c) }