package positionkpi import ( "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/flipped-aurora/gin-vue-admin/server/model/hrsystem" "github.com/gin-gonic/gin" ) //岗位定性指标及指标细则 // 获取指标关联的岗位 func (a *ApiMethod) TargetOrgList(c *gin.Context) { var requestData idType err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(100, err, "参数错误!", c) return } var targetPostCont assessmentmodel.PostTarget tarErr := targetPostCont.GetCont(map[string]interface{}{"`id`": requestData.Id}, "rele_depart", "departments_post") if tarErr != nil { response.Result(100, err, "该指标不存在", c) return } postAry := strings.Split(targetPostCont.DepartmentsPost, ",") var outList postTargetDepart outList.DepartmentId = strconv.FormatInt(targetPostCont.ReleDepart, 10) var postContAry []hrsystem.AdministrativeOrganization var postContAryErr error if len(postAry) > 0 { postContAry, postContAryErr = getOrgList(postAry) if postContAryErr != nil { postContAry, postContAryErr = getOrgList(targetPostCont.ReleDepart) } } else { postContAry, postContAryErr = getOrgList(targetPostCont.ReleDepart) } for _, v := range postContAry { var outOrgCont idAndName outOrgCont.Id = strconv.FormatInt(v.Id, 10) outOrgCont.Name = v.Name outList.PostList = append(outList.PostList, outOrgCont) } response.Result(0, outList, "查询成功!", c) } // 获取行政组织岗位 func getOrgList(wher interface{}) (orgCont []hrsystem.AdministrativeOrganization, err error) { switch wher.(type) { case []string: err = global.GVA_DB_HrDataBase.Model(&hrsystem.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", wher).Find(&orgCont).Error case int64: err = global.GVA_DB_HrDataBase.Model(&hrsystem.AdministrativeOrganization{}).Select("`id`,`name`").Where("`superior` = ?", wher).Find(&orgCont).Error default: } return } // 添加岗位细则 func (a *ApiMethod) AddPostTargetCont(c *gin.Context) { var requestData addPostContTarget c.ShouldBindJSON(&requestData) if requestData.TargetId == "" { response.Result(100, requestData, "请选择岗位指标!", c) return } if requestData.DepartmentId == "" { response.Result(101, requestData, "请选择行政组织!", c) return } if requestData.TargetSunTitle == "" { response.Result(102, requestData, "请输入子栏目名称!", c) return } if len(requestData.PostId) < 1 { response.Result(103, requestData, "请选择岗位!", c) return } if len(requestData.List) < 1 { response.Result(104, requestData, "请输入指标细则!", c) return } xiZeIsTrue := 1 for _, v := range requestData.List { if v.Title == "" { xiZeIsTrue = 2 break } if v.ReferenceScore == "" { xiZeIsTrue = 2 break } if v.Unit == "" { xiZeIsTrue = 2 break } } if xiZeIsTrue != 1 { response.Result(105, requestData, "请检查你输入的指标细则!其中有不符合标准的细则!", c) return } targetSunIdInt, _ := strconv.ParseInt(requestData.TargetId, 10, 64) deartmentIdInt, _ := strconv.ParseInt(requestData.DepartmentId, 10, 64) //指标子栏目 var sunTargetCont assessmentmodel.PostSunTarget sunErr := sunTargetCont.GetCont(map[string]interface{}{"`title`": requestData.TargetSunTitle, "`parent_id`": requestData.TargetId, "depart": requestData.DepartmentId}, "`id`") if sunErr != nil { sunTargetCont.Title = requestData.TargetSunTitle //标题"` sunTargetCont.ParentId = targetSunIdInt //归属指标"` sunTargetCont.Time = time.Now().Unix() //创建时间"` sunTargetCont.State = 1 //状态(1:启用;2:禁用;3:删除)"` sunTargetCont.Depart = deartmentIdInt //关联部门"` sunTargetCont.DepartPost = strings.Join(requestData.PostId, ",") sunTargetErr := global.GVA_DB_Performanceappraisal.Create(&sunTargetCont).Error if sunTargetErr != nil { response.Result(108, sunTargetCont, "数据写入失败!", c) return } } if sunTargetCont.Id == 0 { response.Result(109, sunErr, "数据写入失败!", c) return } var saveData []assessmentmodel.PostTargetDetails for _, lv := range requestData.List { if lv.Class == 0 { lv.Class = 1 } if len(lv.Inspect) == 0 { lv.Inspect = append(lv.Inspect, "1") } if lv.Cycle == 0 { lv.Cycle = 4 } if lv.CycleAttr == 0 { lv.CycleAttr = 1 } var minScoreInt int64 var maxScoreInt int64 scoreAry := strings.Split(lv.ReferenceScore, "-") scoreLen := len(scoreAry) // fmt.Printf("ScoreAry:%v----------->%v------------>%v------------>%v\n", ReferenceScore, scoreLen, scoreAry[0], scoreAry) if scoreLen > 0 { if scoreLen == 1 { maxScore, _ := strconv.ParseFloat(scoreAry[0], 64) // zhhh := maxScore * 100 // zhuanStr := strconv.FormatFloat(zhhh, 'f', -1, 64) maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64) minScoreInt = 0 } else { minScore, _ := strconv.ParseFloat(scoreAry[0], 64) maxScore, _ := strconv.ParseFloat(scoreAry[scoreLen-1], 64) minScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(minScore*100, 'f', -1, 64), 10, 64) maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64) } } else { minScoreInt = 0 maxScoreInt = 0 } var minMoney int64 //罚款或奖励最高金额 var maxMoney int64 //罚款或奖励最新金额 moneyAry := strings.Split(lv.CashStandard, "-") moneyAryLen := len(moneyAry) if moneyAryLen > 0 { if moneyAryLen == 1 { maxMoneyEs, _ := strconv.ParseFloat(moneyAry[0], 64) maxMoney, _ = strconv.ParseInt(strconv.FormatFloat(maxMoneyEs*100, 'f', -1, 64), 10, 64) minMoney = 0 } else { maxMoneyEs, _ := strconv.ParseFloat(moneyAry[moneyAryLen-1], 64) maxMoney, _ = strconv.ParseInt(strconv.FormatFloat(maxMoneyEs*100, 'f', -1, 64), 10, 64) minMoneyEs, _ := strconv.ParseFloat(moneyAry[0], 64) minMoney, _ = strconv.ParseInt(strconv.FormatFloat(minMoneyEs*100, 'f', -1, 64), 10, 64) } } else { minMoney = 0 maxMoney = 0 } var saveCont assessmentmodel.PostTargetDetails saveCont.Title = lv.Title //指标细则"` saveCont.Content = lv.Explain //备注说明"` saveCont.ParentId = targetSunIdInt //归属指标栏目"` saveCont.ParentIdSun = sunTargetCont.Id //归属指标子栏目"` saveCont.State = 1 //状态(1:启用;2:禁用;3:删除)"` saveCont.AddTime = time.Now().Unix() //制定时间"` saveCont.MinScore = minScoreInt //最小分*100保存"` saveCont.MaxScore = maxScoreInt //最大分*100保存"` saveCont.Company = lv.Unit //单位"` saveCont.AddReduce = lv.Class //1:减少;2:增加;3:无属性,现场确认加或减"` saveCont.CensorType = strings.Join(lv.Inspect, ",") //检查方式"` saveCont.CensorCont = lv.Evidence //客观证据"` saveCont.CensorRate = lv.Cycle //检查频次"` saveCont.Cycles = lv.CycleAttr //1:班;2:天;3:周;4:月;5:季度;6:年"` saveCont.CycleAttres = lv.CycleAttr //辅助计数"` saveCont.Paretment = deartmentIdInt //接受考核的部门"` saveCont.ParetmentPost = strings.Join(requestData.PostId, ",") //接受考核的部门岗位"` saveCont.Reportary = strings.Join(lv.ReportAry, ",") //接受考核的部门岗位"` saveCont.Punishmode = lv.PunishMode //处罚或奖励方式 1:分数;2:现金;3:分数加现金 saveCont.Minmoney = minMoney //最高罚款*100保存"` saveCont.Maxmoney = maxMoney //最低罚款*100保存"` saveData = append(saveData, saveCont) } if len(saveData) < 1 { response.Result(106, sunErr, "数据写入失败!", c) return } saveErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error if saveErr != nil { response.Result(107, sunErr, "数据写入失败!", c) return } //获取该子栏目关联到的岗位 var tarPostDetaList []assessmentmodel.PostTargetDetails tarErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PostTargetDetails{}).Select("paretment_post").Where("`state` = 1 AND `parentid` = ? AND `parentid_sun` = ? AND `paretment` =?", requestData.TargetId, targetSunIdInt, deartmentIdInt).Find(&tarPostDetaList).Error if tarErr == nil { var postIdStr []string for _, tarv := range tarPostDetaList { if tarv.ParetmentPost != "" { detPost := strings.Split(tarv.ParetmentPost, ",") if len(detPost) > 0 { for _, detv := range detPost { if commonus.IsInTrue[string](detv, postIdStr) == false { postIdStr = append(postIdStr, detv) } } } } } if len(postIdStr) > 0 { var sunTargetContInfo assessmentmodel.PostSunTarget sunTargetContInfo.EditCont(map[string]interface{}{"`id`": sunTargetCont.Id}, map[string]interface{}{"depart_post": strings.Join(postIdStr, ",")}) } } response.Result(0, saveErr, "数据写入成功!", c) } // 岗位定性考核列表 func (a *ApiMethod) PostTargetSunList(c *gin.Context) { var requestData lookPostTargetDeta c.ShouldBindJSON(&requestData) if requestData.Page == 0 { requestData.Page = 1 } if requestData.PageSize == 0 { requestData.Page = 10 } var postDetails []assessmentmodel.PostTargetDetails gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PostTargetDetails{}).Where("`state` BETWEEN 1 AND 2") if requestData.Title != "" { gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%") } if requestData.DepartmentId != "" { gormDb = gormDb.Where("`paretment` = ?", requestData.DepartmentId) } if requestData.TargetId != "" { gormDb = gormDb.Where("`parentid` = ?", requestData.TargetId) } if requestData.Cycle != 0 { gormDb = gormDb.Where("`cycle` = ?", requestData.Cycle) } if len(requestData.PostId) > 0 { var findInSet []string for _, ctv := range requestData.PostId { findWher := fmt.Sprintf("FIND_IN_SET(%v,`paretment_post`)", ctv) if commonus.IsItTrueString(findWher, findInSet) == false { findInSet = append(findInSet, findWher) } } if len(findInSet) > 0 { gormDb = gormDb.Where(strings.Join(findInSet, " OR ")) } } if len(requestData.PostId) > 0 { var findInSetType []string for _, ctvt := range requestData.Inspect { findWherType := fmt.Sprintf("FIND_IN_SET(%v,`censor_type`)", ctvt) if commonus.IsItTrueString(findWherType, findInSetType) == false { findInSetType = append(findInSetType, findWherType) } } if len(findInSetType) > 0 { gormDb = gormDb.Where(strings.Join(findInSetType, " OR ")) } } var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } err := gormDb.Order("`parentid_sun` asc").Order("`id` desc").Limit(requestData.PageSize).Offset(commonus.CalculatePages(requestData.Page, requestData.PageSize)).Find(&postDetails).Error if err != nil { response.Result(103, err.Error(), "没有数据!", c) return } countSum := len(postDetails) printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, postDetails) response.Result(0, printData, "查询成功!", c) } // 获取岗位定性指标关联岗位列表 func (a *ApiMethod) GetPostTargetPost(c *gin.Context) { var requestData idType err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(100, err, "您的请求数据不合法", c) } var postTargetCont assessmentmodel.PostTarget postErr := postTargetCont.GetCont(map[string]interface{}{"`id`": requestData.Id}, "`id`", "`rele_depart`", "`departments_post`", "`key`") if postErr != nil { response.Result(100, postErr, "没有该数据!", c) } var outData getTargetPost outData.Id = requestData.Id outData.DepartmentId = strconv.FormatInt(postTargetCont.ReleDepart, 10) postId := strings.Split(postTargetCont.DepartmentsPost, ",") if len(postId) < 1 { response.Result(0, outData, "查询成功!", c) return } for _, v := range postId { if commonus.IsInTrue[string](v, outData.PostId) == false { var postContAry hrsystem.Position posErr := postContAry.GetCont(map[string]interface{}{"`id`": v}, "`name`") if posErr == nil { outData.PostId = append(outData.PostId, v) var ordPostCont departmentmap ordPostCont.Parentid = v ordPostCont.Parentname = postContAry.Name outData.Departmentmap = append(outData.Departmentmap, ordPostCont) } } } response.Result(0, outData, "查询成功!", c) } // 修改定性指标关联岗位 func (a *ApiMethod) EditPostTargetQual(c *gin.Context) { var requestData editTargetPostData err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(100, err, "您的请求数据不合法", c) return } if requestData.Id == "" { response.Result(101, err, "您的请求数据不合法", c) return } if len(requestData.PostId) < 1 { response.Result(102, err, "请指定要关联的岗位", c) return } postAryStr := strings.Join(requestData.PostId, ",") where := commonus.MapOut() where["`id`"] = requestData.Id var postTargetInfo assessmentmodel.PostTarget postTarErr := postTargetInfo.EditCont(where, map[string]interface{}{"departments_post": postAryStr}) if postTarErr == nil { var sunPostTerget assessmentmodel.PostSunTarget sunPostTerget.EditCont(map[string]interface{}{"parent_id": requestData.Id}, map[string]interface{}{"depart_post": postAryStr}) var postTarDeta assessmentmodel.PostTargetDetails postTarDeta.EditCont(map[string]interface{}{"parentid": requestData.Id}, map[string]interface{}{"paretment_post": postAryStr}) } else { response.Result(103, err, "修改失败!", c) return } response.Result(0, err, "修改完成", c) } // 获取子栏目内容 func (a *ApiMethod) GetSunTargetInfo(c *gin.Context) { var requestData idType err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(100, err, "数据格式不正确!", c) return } if requestData.Id == "" { response.Result(101, err, "您的请求数据不合法", c) return } var sunTargetCont sunPostTergetCont getErr := sunTargetCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if getErr != nil { response.Result(102, err, "此栏目不存在!请检查数据!", c) return } sunTargetCont.DepartmentId = strconv.FormatInt(sunTargetCont.Depart, 10) sunTargetCont.PostId = strings.Split(sunTargetCont.DepartPost, ",") var reporManList []string manListErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PostTargetDetails{}).Select("`reportary` ").Where("`parentid` = ? AND `parentid_sun` = ? AND `paretment` = ?").First(&reporManList).Error if manListErr == nil { var manList []string if len(reporManList) > 0 { for _, v := range reporManList { detMan := strings.Split(v, ",") if len(detMan) > 0 { for _, mv := range detMan { if commonus.IsInTrue[string](mv, manList) == false { manList = append(manList, mv) } } } } } if len(manList) > 0 { var manContList []hrsystem.PersonArchives manErr := global.GVA_DB_HrDataBase.Model(&hrsystem.PersonArchives{}).Select("`key`,`name`").Where("`key` IN ?", manList).Find(&manContList).Error if manErr == nil { for _, mcv := range manContList { var manInfo departmentmap manInfo.Parentid = strconv.FormatInt(mcv.Key, 10) manInfo.Parentname = mcv.Name sunTargetCont.Departmentmap = append(sunTargetCont.Departmentmap, manInfo) } } } } response.Result(102, sunTargetCont, "此栏目不存在!请检查数据!", c) } // 编辑定性考核子栏目 func (a *ApiMethod) EidtSunTargetPost(c *gin.Context) { var requestData getDingXingSunTaget c.ShouldBindJSON(&requestData) if requestData.Id == "" || requestData.DepartmentId == "" || requestData.Title == "" { response.Result(101, requestData, "您的请求数据不合法", c) return } if len(requestData.PostId) < 1 { response.Result(101, requestData, "请选择关联岗位", c) return } if len(requestData.ReportAry) < 1 { response.Result(101, requestData, "请选择关联上报人", c) return } where := commonus.MapOut() where["`id`"] = requestData.Id var sunTarCont assessmentmodel.PostSunTarget err := sunTarCont.GetCont(where) if err != nil { response.Result(101, requestData, "没有该子栏目!", c) return } saveData := commonus.MapOut() if requestData.Title != sunTarCont.Title { saveData["title"] = requestData.Title } saveData["depart"] = requestData.DepartmentId saveData["depart_post"] = strings.Join(requestData.PostId, ",") saveData["time"] = time.Now().Unix() saveErr := sunTarCont.EditCont(where, saveData) if saveErr != nil { response.Result(101, saveErr, "编辑失败!", c) return } detaWher := commonus.MapOut() detaWher["parentid"] = sunTarCont.ParentId detaWher["parentid_sun"] = sunTarCont.Id detaWher["paretment"] = sunTarCont.Depart saveDetaCont := commonus.MapOut() saveDetaCont["paretment_post"] = strings.Join(requestData.PostId, ",") saveDetaCont["reportary"] = strings.Join(requestData.ReportAry, ",") saveDetaCont["time"] = time.Now().Unix() var saveDetaInfo assessmentmodel.PostTargetDetails saveDetaInfo.EditCont(detaWher, saveDetaCont) response.Result(0, saveErr, "编辑成功!", c) } // 删除指标 func (a *ApiMethod) DelSunTarget(c *gin.Context) { var requestData editState err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(100, err, "数据格式不正确!", c) return } if requestData.Id == "" { response.Result(101, requestData, "您的请求数据不合法", c) return } if requestData.State == 0 { requestData.State = 1 } if requestData.IsTrue == 0 { requestData.IsTrue = 2 } where := commonus.MapOut() where["`id`"] = requestData.Id var sunTarCont assessmentmodel.PostSunTarget sunErr := sunTarCont.GetCont(where) if sunErr != nil { response.Result(101, sunErr, "没有查询到数据!", c) return } if requestData.State != 3 { eidtDingXing(sunTarCont.Id, requestData.State) } else { if requestData.IsTrue != 1 { eidtDingXing(sunTarCont.Id, requestData.State) } else { var postSunTargetInfo assessmentmodel.PostSunTarget postSunTargetInfo.DelCont(map[string]interface{}{"`parent_id`": sunTarCont.Id}) var postDetailsInfo assessmentmodel.PostTargetDetails postDetailsInfo.DelCont(map[string]interface{}{"`parent_id`": sunTarCont.Id}) } } } // 添加单条定性指标细则 func (a *ApiMethod) AddPostDetaCont(c *gin.Context) { var requestData oneAddDetails c.ShouldBindJSON(&requestData) if requestData.SunTargetId == "" { response.Result(101, requestData, "您的请求数据不合法", c) return } var sunTarCont assessmentmodel.PostSunTarget sunErr := sunTarCont.GetCont(map[string]interface{}{"`id`": requestData.SunTargetId}, "`parent_id`", "`depart`", "`depart_post`") if sunErr != nil { response.Result(101, requestData, "您的请求数据不合法", c) return } if requestData.Title == "" { response.Result(101, requestData, "请输入细则名称", c) return } switch requestData.PunishMode { case 2: if requestData.CashStandard == "" { response.Result(101, requestData, "请输入考核现金标准", c) return } case 3: if requestData.ReferenceScore == "" { response.Result(101, requestData, "请输入考核标准", c) return } if requestData.CashStandard == "" { response.Result(101, requestData, "请输入考核现金标准", c) return } if requestData.Unit == "" { response.Result(101, requestData, "请输入考核单位", c) return } default: requestData.PunishMode = 1 if requestData.ReferenceScore == "" { response.Result(101, requestData, "请输入考核标准", c) return } if requestData.Unit == "" { response.Result(101, requestData, "请输入考核单位", c) return } } if requestData.Class == 0 { requestData.Class = 1 } if len(requestData.Inspect) < 1 { requestData.Inspect = append(requestData.Inspect, "1") } if requestData.Cycle == 0 { requestData.Cycle = 4 } if requestData.CycleAttr == 0 { requestData.CycleAttr = 1 } var tarGerCont assessmentmodel.PostTarget tarGerCont.GetCont(map[string]interface{}{"`id`": sunTarCont.ParentId}) var tiBaoRen string if len(requestData.ReportAry) < 1 { if tarGerCont.Report == "" { response.Result(101, requestData, "请选择提报人!", c) return } tiBaoRen = tarGerCont.Report } else { tiBaoRen = strings.Join(requestData.ReportAry, ",") } var minScoreInt int64 var maxScoreInt int64 scoreAry := strings.Split(requestData.ReferenceScore, "-") scoreLen := len(scoreAry) // fmt.Printf("ScoreAry:%v----------->%v------------>%v------------>%v\n", ReferenceScore, scoreLen, scoreAry[0], scoreAry) if scoreLen > 0 { if scoreLen == 1 { maxScore, _ := strconv.ParseFloat(scoreAry[0], 64) // zhhh := maxScore * 100 // zhuanStr := strconv.FormatFloat(zhhh, 'f', -1, 64) maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64) minScoreInt = 0 } else { minScore, _ := strconv.ParseFloat(scoreAry[0], 64) maxScore, _ := strconv.ParseFloat(scoreAry[scoreLen-1], 64) minScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(minScore*100, 'f', -1, 64), 10, 64) maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64) } } else { minScoreInt = 0 maxScoreInt = 0 } var minMoney int64 //罚款或奖励最高金额 var maxMoney int64 //罚款或奖励最新金额 moneyAry := strings.Split(requestData.CashStandard, "-") moneyAryLen := len(moneyAry) if moneyAryLen > 0 { if moneyAryLen == 1 { maxMoneyEs, _ := strconv.ParseFloat(moneyAry[0], 64) maxMoney, _ = strconv.ParseInt(strconv.FormatFloat(maxMoneyEs*100, 'f', -1, 64), 10, 64) minMoney = 0 } else { maxMoneyEs, _ := strconv.ParseFloat(moneyAry[moneyAryLen-1], 64) maxMoney, _ = strconv.ParseInt(strconv.FormatFloat(maxMoneyEs*100, 'f', -1, 64), 10, 64) minMoneyEs, _ := strconv.ParseFloat(moneyAry[0], 64) minMoney, _ = strconv.ParseInt(strconv.FormatFloat(minMoneyEs*100, 'f', -1, 64), 10, 64) } } else { minMoney = 0 maxMoney = 0 } var saveCont assessmentmodel.PostTargetDetails saveCont.Title = requestData.Title //指标细则"` saveCont.Content = requestData.Explain //备注说明"` saveCont.ParentId = sunTarCont.ParentId //归属指标栏目"` saveCont.ParentIdSun = sunTarCont.Id //归属指标子栏目"` saveCont.State = 1 //状态(1:启用;2:禁用;3:删除)"` saveCont.AddTime = time.Now().Unix() //制定时间"` saveCont.MinScore = minScoreInt //最小分*100保存"` saveCont.MaxScore = maxScoreInt //最大分*100保存"` saveCont.Company = requestData.Unit //单位"` saveCont.AddReduce = requestData.Class //1:减少;2:增加;3:无属性,现场确认加或减"` saveCont.CensorType = strings.Join(requestData.Inspect, ",") //检查方式"` saveCont.CensorCont = requestData.Evidence //客观证据"` saveCont.CensorRate = requestData.Cycle //检查频次"` saveCont.Cycles = requestData.CycleAttr //1:班;2:天;3:周;4:月;5:季度;6:年"` saveCont.CycleAttres = requestData.CycleAttr //辅助计数"` saveCont.Paretment = sunTarCont.Depart //接受考核的部门"` saveCont.ParetmentPost = strings.Join(requestData.PostId, ",") //接受考核的部门岗位"` saveCont.Reportary = tiBaoRen //提报人"` saveCont.Punishmode = requestData.PunishMode //处罚或奖励方式 1:分数;2:现金;3:分数加现金 saveCont.Minmoney = minMoney //最高罚款*100保存"` saveCont.Maxmoney = maxMoney //最低罚款*100保存"` saveErr := global.GVA_DB_Performanceappraisal.Create(&saveCont).Error if saveErr != nil { response.Result(101, saveErr, "数据写入失败!请重新写入!", c) return } response.Result(0, saveErr, "数据写入成功!", c) } // 获取指标细则内容 func (a *ApiMethod) GetDetailsCont(c *gin.Context) { var requestData idType err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(100, err, "数据格式不正确!", c) return } if requestData.Id == "" { response.Result(101, err, "您的请求数据不合法", c) return } var detaCont outDetailsCont detaErr := detaCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if detaErr != nil { response.Result(101, detaErr, "该指标细则不存在!", c) return } if detaCont.MinScore != 0 { detaCont.ScoreStandard = fmt.Sprintf("%v-%v", commonus.DecimalEs(float64(detaCont.MinScore)/100, 2), commonus.DecimalEs(float64(detaCont.MaxScore)/100, 2)) } else { detaCont.ScoreStandard = fmt.Sprintf("%v", commonus.DecimalEs(float64(detaCont.MaxScore)/100, 2)) } if detaCont.Minmoney != 0 { detaCont.CashStandard = fmt.Sprintf("%v-%v", commonus.DecimalEs(float64(detaCont.Minmoney)/100, 2), commonus.DecimalEs(float64(detaCont.Maxmoney)/100, 2)) } else { detaCont.CashStandard = fmt.Sprintf("%v", commonus.DecimalEs(float64(detaCont.Maxmoney)/100, 2)) } detaCont.InspMethod = strings.Split(detaCont.CensorType, ",") //关联岗位 postAry := strings.Split(detaCont.ParetmentPost, ",") var inAryPost []string if len(postAry) > 0 { for _, pv := range postAry { if commonus.IsInTrue[string](pv, inAryPost) == false { inAryPost = append(inAryPost, pv) var postCont hrsystem.Position postConErr := postCont.GetCont(map[string]interface{}{"`id`": pv}, "`name`") if postConErr == nil { var postContL idAndName postContL.Id = pv postContL.Name = postCont.Name detaCont.PostAry = append(detaCont.PostAry, postContL) } } } } //提报人 repalyMan := strings.Split(detaCont.Reportary, ",") var reply []string if len(repalyMan) > 0 { for _, mv := range repalyMan { if commonus.IsInTrue[string](mv, reply) == false { reply = append(reply, mv) var manCont hrsystem.PersonArchives manErr := manCont.GetCont(map[string]interface{}{"`key`": mv}, "`name`", "`icon`", `number`) if manErr == nil { var reporContMan reportUser reporContMan.Id = mv reporContMan.Name = manCont.Name reporContMan.Icon = manCont.Icon reporContMan.Number = manCont.Number detaCont.ReportAry = append(detaCont.ReportAry, reporContMan) } } } } response.Result(0, detaCont, "数据获取成功!", c) } // 修改定性考核指标细则 func (a *ApiMethod) EditDeatilsCont(c *gin.Context) { var requestData editPostDetails c.ShouldBindJSON(&requestData) if requestData.Id == "" { response.Result(101, requestData, "您的请求数据不合法", c) return } where := commonus.MapOut() where["`id`"] = requestData.Id var detaCont assessmentmodel.PostTargetDetails detaErr := detaCont.GetCont(where) if detaErr != nil { response.Result(101, detaErr, "该指标细则不存在!", c) return } saveData := commonus.MapOut() if requestData.Title != "" && requestData.Title != detaCont.Title { saveData["title"] = requestData.Title } if requestData.ReferenceScore != "" { referStr := "" if detaCont.MinScore != 0 { referStr = fmt.Sprintf("%v-%v", commonus.DecimalEs(float64(detaCont.MinScore)/100, 2), commonus.DecimalEs(float64(detaCont.MaxScore)/100, 2)) } else { referStr = fmt.Sprintf("%v", commonus.DecimalEs(float64(detaCont.MaxScore)/100, 2)) } if requestData.ReferenceScore != referStr { scoreAry := strings.Split(requestData.ReferenceScore, "-") scoreLen := len(scoreAry) if scoreLen > 0 { if scoreLen == 1 { maxScore, _ := strconv.ParseFloat(scoreAry[0], 64) saveData["max_score"], _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64) saveData["min_score"] = 0 } else { minScore, _ := strconv.ParseFloat(scoreAry[0], 64) maxScore, _ := strconv.ParseFloat(scoreAry[scoreLen-1], 64) saveData["min_score"], _ = strconv.ParseInt(strconv.FormatFloat(minScore*100, 'f', -1, 64), 10, 64) saveData["max_score"], _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64) } } else { saveData["min_score"] = 0 saveData["max_score"] = 0 } } } if requestData.Unit != "" && requestData.Unit != detaCont.Company { saveData["company"] = requestData.Unit } if requestData.Class != 0 && requestData.Class != detaCont.AddReduce { saveData["add_reduce"] = requestData.Class } if len(requestData.Inspect) > 0 { insStr := strings.Join(requestData.Inspect, ",") if insStr != detaCont.CensorType { saveData["censor_type"] = insStr } } if requestData.Cycle != 0 && requestData.Cycle != detaCont.Cycles { saveData["cycle"] = requestData.Cycle } if requestData.CycleAttr != 0 && requestData.CycleAttr != detaCont.CycleAttres { saveData["cycleattr"] = requestData.CycleAttr } if requestData.Evidence != "" && requestData.Evidence != detaCont.Company { saveData["censor_cont"] = requestData.Evidence } if requestData.Explain != "" && requestData.Explain != detaCont.Company { saveData["Content"] = requestData.Explain } if len(requestData.ReportAry) > 0 { repInsStr := strings.Join(requestData.ReportAry, ",") if repInsStr != detaCont.CensorType { saveData["reportary"] = repInsStr } } if requestData.PunishMode != 0 && requestData.PunishMode != detaCont.Punishmode { saveData["punishmode"] = requestData.PunishMode } if requestData.CashStandard != "" { referMoneryStr := "" if detaCont.MinScore != 0 { referMoneryStr = fmt.Sprintf("%v-%v", commonus.DecimalEs(float64(detaCont.MinScore)/100, 2), commonus.DecimalEs(float64(detaCont.MaxScore)/100, 2)) } else { referMoneryStr = fmt.Sprintf("%v", commonus.DecimalEs(float64(detaCont.MaxScore)/100, 2)) } if requestData.CashStandard != referMoneryStr { moneyAry := strings.Split(requestData.CashStandard, "-") moneyAryLen := len(moneyAry) if moneyAryLen > 0 { if moneyAryLen == 1 { maxMoneyEs, _ := strconv.ParseFloat(moneyAry[0], 64) saveData["maxmoney"], _ = strconv.ParseInt(strconv.FormatFloat(maxMoneyEs*100, 'f', -1, 64), 10, 64) saveData["minmoney"] = 0 } else { maxMoneyEs, _ := strconv.ParseFloat(moneyAry[moneyAryLen-1], 64) saveData["maxmoney"], _ = strconv.ParseInt(strconv.FormatFloat(maxMoneyEs*100, 'f', -1, 64), 10, 64) minMoneyEs, _ := strconv.ParseFloat(moneyAry[0], 64) saveData["minmoney"], _ = strconv.ParseInt(strconv.FormatFloat(minMoneyEs*100, 'f', -1, 64), 10, 64) } } else { saveData["maxmoney"] = 0 saveData["minmoney"] = 0 } } } if len(saveData) > 0 { saveData["time"] = time.Now().Unix() saveErr := detaCont.EditCont(where, saveData) if saveErr != nil { response.Result(101, saveErr, "编辑失败!", c) return } } response.Result(0, saveData, "编辑成功!", c) } // 删除指标细则 func (a *ApiMethod) EidtPostTarDetailsStrte(c *gin.Context) { var requestData editState c.ShouldBindJSON(&requestData) if requestData.Id == "" { response.Result(100, requestData, "请输入指标名称!", c) return } if requestData.State == 0 { requestData.State = 1 } if requestData.IsTrue == 0 { requestData.IsTrue = 2 } where := commonus.MapOut() where["`id`"] = requestData.Id var detaCont assessmentmodel.PostTargetDetails detaErr := detaCont.GetCont(where) if detaErr != nil { response.Result(101, detaErr, "该指标细则不存在!", c) return } if requestData.State != 3 { saveData := commonus.MapOut() saveData["state"] = requestData.State saveData["time"] = time.Now().Unix() saveErr := detaCont.EditCont(where, saveData) if saveErr != nil { response.Result(101, saveErr, "编辑失败!", c) return } } else { if requestData.IsTrue != 1 { saveData := commonus.MapOut() saveData["state"] = requestData.State saveData["time"] = time.Now().Unix() saveErr := detaCont.EditCont(where, saveData) if saveErr != nil { response.Result(101, saveErr, "编辑失败!", c) return } } else { saveErr := detaCont.DelCont(where) if saveErr != nil { response.Result(101, saveErr, "编辑失败!", c) return } } } response.Result(0, detaCont, "编辑成功!", c) }