package dutyassess import ( "encoding/json" "fmt" "strconv" "strings" "time" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/assessment" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/examtestpage" "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) 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 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 outInfor OutDutyListes outInfor.DepartmentId, outInfor.DepartmentAry = commonus.GetBranchDepartAry(strings.Split(assessInfor.Departmentmap, ",")) // 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(strings.Split(assessInfor.Departmentmap, ",")) 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.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") userCont.GroupName = orgCont.Name whereDepart := commonus.MapOut() whereDepart["id"] = usCont.DepartmentId 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) 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 uotCont.Cycles = qualEvalContInfo.Cycles 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 { // } //获取执行人 uotCont.UserListAry, uotCont.UserList, _ = getQualEvalUser(requestData.Key, pv.Id, pvChild.Id) } } uotCont.QualEvalId = requestData.Key uotContAry = append(uotContAry, uotCont) } } } } 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`", "`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.Deparment 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.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") userCont.GroupName = orgCont.Name whereDepart := commonus.MapOut() whereDepart["id"] = usCont.DepartmentId 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) } }