package postpc import ( "key_performance_indicators/models/modelshr" "key_performance_indicators/models/modelskpi" "key_performance_indicators/overall" "key_performance_indicators/overall/publicmethod" "strconv" "time" "github.com/gin-gonic/gin" ) // 提交岗位定量目标设定 func (a *ApiMethod) SetEvaluationObjectives(c *gin.Context) { var requestData SetEvaluationObjectives err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } if requestData.Year == 0 { publicmethod.Result(1, err, c, "请填写年度") return } // if requestData.Group == "" { // publicmethod.Result(1, err, c, "请选择归属集团") // return // } if requestData.DepartMent == "" { publicmethod.Result(1, err, c, "请选择归属行政组织") return } if requestData.PostId == "" { publicmethod.Result(1, err, c, "请选择归属岗位") return } if requestData.Dimension == "" { publicmethod.Result(1, err, c, "请选择归属维度") return } if requestData.Target == "" { publicmethod.Result(1, err, c, "请选择归属指标") return } switch requestData.Cycle { case 1: if len(requestData.CycleAdded) != 1 { publicmethod.Result(1, err, c, "年度只可填写一条!") return } case 2: if len(requestData.CycleAdded) > 4 { publicmethod.Result(1, err, c, "季度最多只可填写四条!") return } if len(requestData.CycleAdded) < 1 { publicmethod.Result(1, err, c, "季度至少填写一条!") return } case 3: if len(requestData.CycleAdded) > 12 { publicmethod.Result(1, err, c, "月度最多只可填写十二条!") return } if len(requestData.CycleAdded) < 1 { publicmethod.Result(1, err, c, "月度至少填写一条!") return } default: publicmethod.Result(1, err, c, "请选择周期") return } orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64) _, companyId, departmentId, _, _ := publicmethod.GetOrgStructure(orgId) //公司部门 var timecopy []int64 gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Select("Timecopy").Where("`group` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? ", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year) judgeErr := gromDb.Find(&timecopy).Error if judgeErr == nil { if len(timecopy) > 0 { publicmethod.Result(1, judgeErr, c, "已经存在!不要重复添加!") return } } var saveData []modelskpi.QuanPostConfig var eiteAddData []int64 for _, v := range requestData.CycleAdded { if judgeErr != nil { var saveDataCont modelskpi.QuanPostConfig saveDataCont.CompanyId = companyId saveDataCont.DepartmentId = departmentId saveDataCont.OrgId = orgId //行政组织 postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64) saveDataCont.PostId = postIdInt //岗位 dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) saveDataCont.Dimension = dimensionId //维度 targetId, _ := strconv.ParseInt(requestData.Target, 10, 64) saveDataCont.Target = targetId //指标 saveDataCont.Type = int64(requestData.Cycle) saveDataCont.Year = requestData.Year saveDataCont.Timecopy = v.Id if v.Zeroprize < 0 { saveDataCont.Zeroprize = 0 } else { saveDataCont.Zeroprize = v.Zeroprize * 100 } if v.Allprize < 0 { saveDataCont.Allprize = 0 } else { saveDataCont.Allprize = v.Allprize * 100 } if v.Capping > 0 { saveDataCont.Capping = 1 saveDataCont.CappingVal = v.Capping * 100 } else { saveDataCont.Capping = 2 saveDataCont.CappingVal = 0 } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 saveData = append(saveData, saveDataCont) } else { if len(timecopy) <= 0 { var saveDataCont modelskpi.QuanPostConfig // orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64) // _, saveDataCont.CompanyId, saveDataCont.DepartmentId, _, _ = publicmethod.GetOrgStructure(orgId) //公司部门 saveDataCont.CompanyId = companyId saveDataCont.DepartmentId = departmentId saveDataCont.OrgId = orgId //行政组织 postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64) saveDataCont.PostId = postIdInt //岗位 dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) saveDataCont.Dimension = dimensionId //维度 targetId, _ := strconv.ParseInt(requestData.Target, 10, 64) saveDataCont.Target = targetId //指标 saveDataCont.Type = int64(requestData.Cycle) saveDataCont.Year = requestData.Year saveDataCont.Timecopy = v.Id if v.Zeroprize < 0 { saveDataCont.Zeroprize = 0 } else { saveDataCont.Zeroprize = v.Zeroprize * 100 } if v.Allprize < 0 { saveDataCont.Allprize = 0 } else { saveDataCont.Allprize = v.Allprize * 100 } if v.Capping > 0 { saveDataCont.Capping = 1 saveDataCont.CappingVal = v.Capping * 100 } else { saveDataCont.Capping = 2 saveDataCont.CappingVal = 0 } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 saveData = append(saveData, saveDataCont) } else { for _, s_v := range timecopy { if s_v != v.Id { var saveDataCont modelskpi.QuanPostConfig // orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64) // _, saveDataCont.CompanyId, saveDataCont.DepartmentId, _, _ = publicmethod.GetOrgStructure(orgId) //公司部门 saveDataCont.CompanyId = companyId saveDataCont.DepartmentId = departmentId saveDataCont.OrgId = orgId //行政组织 postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64) saveDataCont.PostId = postIdInt //岗位 dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) saveDataCont.Dimension = dimensionId //维度 targetId, _ := strconv.ParseInt(requestData.Target, 10, 64) saveDataCont.Target = targetId //指标 saveDataCont.Type = int64(requestData.Cycle) saveDataCont.Year = requestData.Year saveDataCont.Timecopy = v.Id if v.Zeroprize < 0 { saveDataCont.Zeroprize = 0 } else { saveDataCont.Zeroprize = v.Zeroprize * 100 } if v.Allprize < 0 { saveDataCont.Allprize = 0 } else { saveDataCont.Allprize = v.Allprize * 100 } if v.Capping > 0 { saveDataCont.Capping = 1 saveDataCont.CappingVal = v.Capping * 100 } else { saveDataCont.Capping = 2 saveDataCont.CappingVal = 0 } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 saveData = append(saveData, saveDataCont) } else { eiteDataMap := publicmethod.MapOut[string]() eiteDataMap["type"] = requestData.Cycle eiteDataMap["timecopy"] = v.Id if v.Zeroprize < 0 { eiteDataMap["zeroprize"] = 0 } else { eiteDataMap["zeroprize"] = v.Zeroprize * 100 } if v.Allprize < 0 { eiteDataMap["allprize"] = 0 } else { eiteDataMap["allprize"] = v.Allprize * 100 } if v.Capping > 0 { eiteDataMap["capping"] = 1 eiteDataMap["capping_val"] = v.Capping * 100 } else { eiteDataMap["capping"] = 2 eiteDataMap["capping_val"] = 0 } eiteDataMap["time"] = time.Now().Unix() gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Select("Timecopy").Where("`company_id` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle) gromDb.Updates(eiteDataMap) eiteAddData = append(eiteAddData, 1) } } } } } if len(saveData) <= 0 && len(eiteAddData) <= 0 { publicmethod.Result(1, err, c, "没有要添加的数据!") return } if len(saveData) > 0 { saveErr := overall.CONSTANT_DB_KPI.Create(&saveData).Error if saveErr != nil { publicmethod.Result(1, err, c, "数据添加失败!") return } } publicmethod.Result(0, err, c) } // 岗位定量考核目标列表 func (a *ApiMethod) PostConfigList(c *gin.Context) { var requestData SelectQuantitativeConfig c.ShouldBindJSON(&requestData) // if err != nil { // publicmethod.Result(1, err, c, "数据获取失败!") // return // } // var qualConfigList []assessmentmodel.QuantitativeConfig var qualConfigList []modelskpi.QuanPostConfigTarget gormDb := overall.CONSTANT_DB_KPI if requestData.GroupId != "" { gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId) } if requestData.DepartmentID != "" { gormDb = gormDb.Where("`org_id` = ?", requestData.DepartmentID) } if requestData.PostId != "" { gormDb = gormDb.Where("`post_id` = ?", requestData.PostId) } if requestData.Dimension != "" { gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension) } if requestData.Target != "" { gormDb = gormDb.Where("`target` = ?", requestData.Target) } 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("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`post_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC") contErr := gormDb.Find(&qualConfigList).Error if contErr != nil { publicmethod.Result(1, contErr, c, "没有数据!") return } var outList []OutQuantitativeConfig for _, v := range qualConfigList { var outCont OutQuantitativeConfig outCont.Id = v.Id outCont.Title = v.Title outCont.CompanyId = v.CompanyId outCont.DepartmentId = v.DepartmentId outCont.OrgId = v.OrgId outCont.PostId = v.PostId outCont.Dimension = v.Dimension outCont.Target = v.Target outCont.Type = v.Type outCont.Year = v.Year outCont.Timecopy = v.Timecopy outCont.Zeroprize = v.Zeroprize / 100 outCont.Allprize = v.Allprize / 100 outCont.Capping = v.Capping outCont.CappingVal = v.CappingVal / 100 outCont.Time = v.Time outCont.State = v.State outCont.DimensionId = strconv.FormatInt(v.Dimension, 10) var companyCont modelshr.AdministrativeOrganization companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name") outCont.GroupTitle = companyCont.Name var departmenCont modelshr.AdministrativeOrganization departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name") outCont.DepartmentTitle = departmenCont.Name var postCont modelshr.Position postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name") outCont.PostTitle = postCont.Name var dimensionCont modelskpi.DutyClass dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title") outCont.DimensionTitle = dimensionCont.Title outCont.TargetTitle = v.Title // 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 // } outList = append(outList, outCont) } publicmethod.Result(0, outList, c) } // 修改考核目标设置 func (a *ApiMethod) EiteQuantitativeConfig(c *gin.Context) { var requestData []EiteQuantConfig err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } if len(requestData) < 1 { publicmethod.Result(1, err, c, "数据获取失败!") return } for _, v := range requestData { eiteCont := publicmethod.MapOut[string]() eiteCont["allprize"] = v.Allprize * 100 eiteCont["zeroprize"] = v.Zeroprize * 100 eiteCont["capping_val"] = v.Capping * 100 err = overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Where("`id` = ?", v.Id).Updates(eiteCont).Error } if err != nil { publicmethod.Result(104, err, c) } else { publicmethod.Result(0, err, c) } } // 删除考核目标设置 func (a *ApiMethod) DelQuantitativeConfig(c *gin.Context) { var requestData []string err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } if len(requestData) < 1 { publicmethod.Result(1, err, c, "数据获取失败!") return } err = overall.CONSTANT_DB_KPI.Where("`id` IN ?", requestData).Delete(&modelskpi.QuanPostConfig{}).Error if err != nil { publicmethod.Result(108, err, c) } else { publicmethod.Result(0, err, c) } } /* * @ 作者: 秦东 @ 时间: 2022-11-12 13:25:51 @ 功能: 删除考核目标设置(新版) @ 参数 # @ 返回值 # */ func (a *ApiMethod) NewDelQuantitativeConfig(c *gin.Context) { var receivedValue newDelTargetConfig err := c.ShouldBindJSON(&receivedValue) if err != nil { publicmethod.Result(100, err, c) return } if receivedValue.OrgID == "" || receivedValue.PostId == "" || receivedValue.Dimension == "" || receivedValue.Target == "" || receivedValue.Type == 0 || receivedValue.Year == 0 { publicmethod.Result(101, receivedValue, c, "数据获取失败!") return } err = overall.CONSTANT_DB_KPI.Where("`org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `type` = ? AND `year` = ?", receivedValue.OrgID, receivedValue.PostId, receivedValue.Dimension, receivedValue.Target, receivedValue.Type, receivedValue.Year).Delete(&modelskpi.QuanPostConfig{}).Error if err != nil { publicmethod.Result(108, err, c) } else { publicmethod.Result(0, err, c) } } // 查看定量岗位考核目标设定 func (a *ApiMethod) LookPosttiveConfig(c *gin.Context) { var requestData SelectQuantitativeConfig err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } // var qualConfigList []assessmentmodel.QuantitativeConfig var qualConfigList []modelskpi.QuanPostConfigTarget gormDb := overall.CONSTANT_DB_KPI if requestData.GroupId != "" { gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId) } if requestData.DepartmentID != "" { gormDb = gormDb.Where("`department_id` = ?", requestData.DepartmentID) } if requestData.OrgID != "" { gormDb = gormDb.Where("`org_id` = ?", requestData.OrgID) } if requestData.PostId != "" { gormDb = gormDb.Where("`post_id` = ?", requestData.PostId) } if requestData.Dimension != "" { gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension) } if requestData.Target != "" { gormDb = gormDb.Where("`target` = ?", requestData.Target) } 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("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC") contErr := gormDb.Find(&qualConfigList).Error if contErr != nil { publicmethod.Result(1, err, c, "没有数据!") return } var outList []OutQuantitativeConfig for _, v := range qualConfigList { var outCont OutQuantitativeConfig outCont.Id = v.Id outCont.IdStr = strconv.FormatInt(v.Id, 10) outCont.DepartmentId = v.DepartmentId outCont.CompanyId = v.CompanyId outCont.Dimension = v.Dimension outCont.PostId = v.PostId outCont.Target = v.Target 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) var companyCont modelshr.AdministrativeOrganization companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name") outCont.GroupTitle = companyCont.Name var departmenCont modelshr.AdministrativeOrganization departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name") outCont.DepartmentTitle = departmenCont.Name var postCont modelshr.Position postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name") outCont.PostTitle = postCont.Name var dimensionCont modelskpi.DutyClass dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title") outCont.DimensionTitle = dimensionCont.Title outCont.TargetTitle = v.Title outCont.Capping = v.Capping outCont.CappingVal = v.CappingVal / 100 outList = append(outList, outCont) } publicmethod.Result(0, outList, c) } // 岗位定量考核目标列表(新版) func (a *ApiMethod) PostConfigListNews(c *gin.Context) { var requestData SelectQuantitativeConfig c.ShouldBindJSON(&requestData) // if err != nil { // publicmethod.Result(1, err, c, "数据获取失败!") // return // } // var qualConfigList []assessmentmodel.QuantitativeConfig var qualConfigList []modelskpi.QuanPostConfigTarget gormDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfigTarget{}).Distinct("`company_id`,`department_id`,`org_id`,`post_id`,`dimension`,`target`,`title`,`year`,`type`") if requestData.GroupId != "" { gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId) } if requestData.DepartmentID != "" { gormDb = gormDb.Where("`org_id` = ?", requestData.DepartmentID) } if requestData.PostId != "" { gormDb = gormDb.Where("`post_id` = ?", requestData.PostId) } if requestData.Dimension != "" { gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension) } if requestData.Target != "" { gormDb = gormDb.Where("`target` = ?", requestData.Target) } if requestData.Year != 0 { gormDb = gormDb.Where("`year` = ?", requestData.Year) } if requestData.State != 0 { gormDb = gormDb.Where("`state` = ?", requestData.State) } else { gormDb = gormDb.Where("`state` = 1") } if requestData.Type != 0 { gormDb = gormDb.Where("`type` = ?", requestData.Type) } 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("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`post_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC") contErr := gormDb.Find(&qualConfigList).Error if contErr != nil { publicmethod.Result(1, contErr, c, "没有数据!") return } var outList []OutQuantitativeConfig for _, v := range qualConfigList { var outCont OutQuantitativeConfig outCont.Id = v.Id outCont.Title = v.Title outCont.CompanyId = v.CompanyId outCont.DepartmentId = v.DepartmentId outCont.OrgId = v.OrgId outCont.PostId = v.PostId outCont.Dimension = v.Dimension outCont.Target = v.Target outCont.Type = v.Type outCont.Year = v.Year outCont.Timecopy = v.Timecopy outCont.Zeroprize = v.Zeroprize / 100 outCont.Allprize = v.Allprize / 100 outCont.Capping = v.Capping outCont.CappingVal = v.CappingVal / 100 outCont.Time = v.Time outCont.State = v.State outCont.DimensionId = strconv.FormatInt(v.Dimension, 10) var companyCont modelshr.AdministrativeOrganization companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name") outCont.GroupTitle = companyCont.Name var departmenCont modelshr.AdministrativeOrganization departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name") outCont.DepartmentTitle = departmenCont.Name var postCont modelshr.Position postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name") outCont.PostTitle = postCont.Name var dimensionCont modelskpi.DutyClass dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title") outCont.DimensionTitle = dimensionCont.Title outCont.TargetTitle = v.Title // 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 // } outList = append(outList, outCont) } publicmethod.Result(0, outList, c) } // 岗位定量考核目标列表(新版) func (a *ApiMethod) PeopleConfigList(c *gin.Context) { var requestData SelectQuantitativeConfig c.ShouldBindJSON(&requestData) // if err != nil { // publicmethod.Result(1, err, c, "数据获取失败!") // return // } // var qualConfigList []assessmentmodel.QuantitativeConfig var qualConfigList []modelskpi.QuanPeopleConfigTarget // gormDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfigTarget{}).Distinct("`user_key`,`company_id`,`department_id`,`org_id`,`post_id`,`dimension`,`target`,`title`,`year`,`type`") gormDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfigTarget{}) if requestData.GroupId != "" { gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId) } if requestData.DepartmentID != "" { gormDb = gormDb.Where("`org_id` = ?", requestData.DepartmentID) } if requestData.PostId != "" { gormDb = gormDb.Where("`post_id` = ?", requestData.PostId) } if requestData.Dimension != "" { gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension) } if requestData.Target != "" { gormDb = gormDb.Where("`target` = ?", requestData.Target) } if requestData.Year != 0 { gormDb = gormDb.Where("`year` = ?", requestData.Year) } if requestData.State != 0 { gormDb = gormDb.Where("`state` = ?", requestData.State) } else { gormDb = gormDb.Where("`state` = 1") } if requestData.Type != 0 { gormDb = gormDb.Where("`type` = ?", requestData.Type) } if requestData.Title != "" { gormDb = gormDb.Where("`title` LIKE ?", "%"+requestData.Title+"%") } if len(requestData.UserKey) > 0 { gormDb = gormDb.Where("`user_key` IN ?", requestData.UserKey) } // gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC") gormDb = gormDb.Order("`user_key` ASC").Order("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`post_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC") contErr := gormDb.Find(&qualConfigList).Error if contErr != nil { publicmethod.Result(1, contErr, c, "没有数据!") return } var outList []OutQuanPeopleConfig for _, v := range qualConfigList { var outCont OutQuanPeopleConfig outCont.Id = v.Id outCont.Title = v.Title outCont.CompanyId = v.CompanyId outCont.DepartmentId = v.DepartmentId outCont.OrgId = v.OrgId outCont.PostId = v.PostId outCont.Dimension = v.Dimension outCont.Target = v.Target outCont.Type = v.Type outCont.Year = v.Year outCont.Timecopy = v.Timecopy outCont.Zeroprize = v.Zeroprize / 100 outCont.Allprize = v.Allprize / 100 outCont.Capping = v.Capping outCont.CappingVal = v.CappingVal / 100 outCont.Time = v.Time outCont.State = v.State outCont.DimensionId = strconv.FormatInt(v.Dimension, 10) var companyCont modelshr.AdministrativeOrganization companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name") outCont.GroupTitle = companyCont.Name var departmenCont modelshr.AdministrativeOrganization departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name") outCont.DepartmentTitle = departmenCont.Name var postCont modelshr.Position postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name") outCont.PostTitle = postCont.Name var dimensionCont modelskpi.DutyClass dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title") outCont.DimensionTitle = dimensionCont.Title outCont.TargetTitle = v.Title // 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 // } var manCont modelshr.PersonArchives manCont.GetCont(map[string]interface{}{"`key`": v.UserKey}) outCont.UserName = manCont.Name outCont.MyKey = strconv.FormatInt(v.UserKey, 10) outList = append(outList, outCont) } publicmethod.Result(0, outList, c) } /* * @ 作者: 秦东 @ 时间: 2023-01-08 09:10:42 @ 功能: 人员定量目标设定 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) SetEvaluationObjectivMan(c *gin.Context) { var requestData SetEvaluationObjectivMan err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } if requestData.Year == 0 { publicmethod.Result(1, err, c, "请填写年度") return } if len(requestData.UserKey) < 1 { publicmethod.Result(1, err, c, "请选择人员") return } if requestData.DepartMent == "" { publicmethod.Result(1, err, c, "请选择归属行政组织") return } if requestData.PostId == "" { publicmethod.Result(1, err, c, "请选择归属岗位") return } if requestData.Dimension == "" { publicmethod.Result(1, err, c, "请选择归属维度") return } if requestData.Target == "" { publicmethod.Result(1, err, c, "请选择归属指标") return } switch requestData.Cycle { case 1: if len(requestData.CycleAdded) != 1 { publicmethod.Result(1, err, c, "年度只可填写一条!") return } case 2: if len(requestData.CycleAdded) > 4 { publicmethod.Result(1, err, c, "季度最多只可填写四条!") return } if len(requestData.CycleAdded) < 1 { publicmethod.Result(1, err, c, "季度至少填写一条!") return } case 3: if len(requestData.CycleAdded) > 12 { publicmethod.Result(1, err, c, "月度最多只可填写十二条!") return } if len(requestData.CycleAdded) < 1 { publicmethod.Result(1, err, c, "月度至少填写一条!") return } default: publicmethod.Result(1, err, c, "请选择周期") return } orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64) _, companyId, departmentId, _, _ := publicmethod.GetOrgStructure(orgId) //公司部门 var timecopy []int64 gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfig{}).Select("timecopy").Where("`group` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `user_key` IN ? ", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year, requestData.UserKey) judgeErr := gromDb.Find(&timecopy).Error if judgeErr == nil { if len(timecopy) > 0 { publicmethod.Result(1, judgeErr, c, "选中的人员已经设定目标值!不要重复添加!") return } } var saveData []modelskpi.QuanPeopleConfig var eiteAddData []int64 for _, v := range requestData.CycleAdded { if judgeErr != nil { var saveDataCont modelskpi.QuanPeopleConfig for _, uv := range requestData.UserKey { saveDataCont.CompanyId = companyId saveDataCont.DepartmentId = departmentId saveDataCont.OrgId = orgId //行政组织 postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64) saveDataCont.PostId = postIdInt //岗位 dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) saveDataCont.Dimension = dimensionId //维度 targetId, _ := strconv.ParseInt(requestData.Target, 10, 64) saveDataCont.Target = targetId //指标 saveDataCont.Type = int64(requestData.Cycle) saveDataCont.Year = requestData.Year saveDataCont.Timecopy = v.Id if v.Zeroprize < 0 { saveDataCont.Zeroprize = 0 } else { saveDataCont.Zeroprize = v.Zeroprize * 100 } if v.Allprize < 0 { saveDataCont.Allprize = 0 } else { saveDataCont.Allprize = v.Allprize * 100 } if v.Capping > 0 { saveDataCont.Capping = 1 saveDataCont.CappingVal = v.Capping * 100 } else { saveDataCont.Capping = 2 saveDataCont.CappingVal = 0 } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 userKeyInt, _ := strconv.ParseInt(uv, 10, 64) saveDataCont.UserKey = userKeyInt saveData = append(saveData, saveDataCont) } } else { if len(timecopy) <= 0 { var saveDataCont modelskpi.QuanPeopleConfig // orgId, _ := strconv.ParseInt(requestData.DepartMent, 10, 64) // _, saveDataCont.CompanyId, saveDataCont.DepartmentId, _, _ = publicmethod.GetOrgStructure(orgId) //公司部门 for _, uv := range requestData.UserKey { saveDataCont.CompanyId = companyId saveDataCont.DepartmentId = departmentId saveDataCont.OrgId = orgId //行政组织 postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64) saveDataCont.PostId = postIdInt //岗位 dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) saveDataCont.Dimension = dimensionId //维度 targetId, _ := strconv.ParseInt(requestData.Target, 10, 64) saveDataCont.Target = targetId //指标 saveDataCont.Type = int64(requestData.Cycle) saveDataCont.Year = requestData.Year saveDataCont.Timecopy = v.Id if v.Zeroprize < 0 { saveDataCont.Zeroprize = 0 } else { saveDataCont.Zeroprize = v.Zeroprize * 100 } if v.Allprize < 0 { saveDataCont.Allprize = 0 } else { saveDataCont.Allprize = v.Allprize * 100 } if v.Capping > 0 { saveDataCont.Capping = 1 saveDataCont.CappingVal = v.Capping * 100 } else { saveDataCont.Capping = 2 saveDataCont.CappingVal = 0 } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 userKeyInt, _ := strconv.ParseInt(uv, 10, 64) saveDataCont.UserKey = userKeyInt saveData = append(saveData, saveDataCont) } } else { for _, s_v := range timecopy { if s_v != v.Id { var saveDataCont modelskpi.QuanPeopleConfig for _, uv := range requestData.UserKey { saveDataCont.CompanyId = companyId saveDataCont.DepartmentId = departmentId saveDataCont.OrgId = orgId //行政组织 postIdInt, _ := strconv.ParseInt(requestData.PostId, 10, 64) saveDataCont.PostId = postIdInt //岗位 dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) saveDataCont.Dimension = dimensionId //维度 targetId, _ := strconv.ParseInt(requestData.Target, 10, 64) saveDataCont.Target = targetId //指标 saveDataCont.Type = int64(requestData.Cycle) saveDataCont.Year = requestData.Year saveDataCont.Timecopy = v.Id if v.Zeroprize < 0 { saveDataCont.Zeroprize = 0 } else { saveDataCont.Zeroprize = v.Zeroprize * 100 } if v.Allprize < 0 { saveDataCont.Allprize = 0 } else { saveDataCont.Allprize = v.Allprize * 100 } if v.Capping > 0 { saveDataCont.Capping = 1 saveDataCont.CappingVal = v.Capping * 100 } else { saveDataCont.Capping = 2 saveDataCont.CappingVal = 0 } saveDataCont.Time = time.Now().Unix() saveDataCont.State = 1 userKeyInt, _ := strconv.ParseInt(uv, 10, 64) saveDataCont.UserKey = userKeyInt saveData = append(saveData, saveDataCont) } } else { eiteDataMap := publicmethod.MapOut[string]() eiteDataMap["type"] = requestData.Cycle eiteDataMap["timecopy"] = v.Id if v.Zeroprize < 0 { eiteDataMap["zeroprize"] = 0 } else { eiteDataMap["zeroprize"] = v.Zeroprize * 100 } if v.Allprize < 0 { eiteDataMap["allprize"] = 0 } else { eiteDataMap["allprize"] = v.Allprize * 100 } if v.Capping > 0 { eiteDataMap["capping"] = 1 eiteDataMap["capping_val"] = v.Capping * 100 } else { eiteDataMap["capping"] = 2 eiteDataMap["capping_val"] = 0 } eiteDataMap["time"] = time.Now().Unix() for _, uv := range requestData.UserKey { gromDb := overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPostConfig{}).Select("Timecopy").Where("`company_id` = ? AND `org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ? AND `user_key`", companyId, requestData.DepartMent, requestData.PostId, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle, uv) gromDb.Updates(eiteDataMap) eiteAddData = append(eiteAddData, 1) } } } } } } if len(saveData) <= 0 && len(eiteAddData) <= 0 { publicmethod.Result(1, err, c, "没有要添加的数据!") return } if len(saveData) > 0 { saveErr := overall.CONSTANT_DB_KPI.Create(&saveData).Error if saveErr != nil { publicmethod.Result(1, err, c, "数据添加失败!") return } } publicmethod.Result(0, err, c) } /* * @ 作者: 秦东 @ 时间: 2023-01-08 10:29:57 @ 功能: @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) LookPeopleConfig(c *gin.Context) { var requestData SelectQuantitativeConfigMan err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } // var qualConfigList []assessmentmodel.QuantitativeConfig var qualConfigList []modelskpi.QuanPeopleConfigTarget gormDb := overall.CONSTANT_DB_KPI if requestData.GroupId != "" { gormDb = gormDb.Where("`company_id` = ?", requestData.GroupId) } if requestData.DepartmentID != "" { gormDb = gormDb.Where("`department_id` = ?", requestData.DepartmentID) } if requestData.OrgID != "" { gormDb = gormDb.Where("`org_id` = ?", requestData.OrgID) } if requestData.PostId != "" { gormDb = gormDb.Where("`post_id` = ?", requestData.PostId) } if requestData.Dimension != "" { gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension) } if requestData.Target != "" { gormDb = gormDb.Where("`target` = ?", requestData.Target) } 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.UserKey != "" { gormDb = gormDb.Where("`user_key` = ?", requestData.UserKey) } 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("`company_id` ASC").Order("`department_id` ASC").Order("`org_id` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC") contErr := gormDb.Find(&qualConfigList).Error if contErr != nil { publicmethod.Result(1, err, c, "没有数据!") return } var outList []OutQuanPeopleConfig for _, v := range qualConfigList { var outCont OutQuanPeopleConfig outCont.Id = v.Id outCont.IdStr = strconv.FormatInt(v.Id, 10) outCont.DepartmentId = v.DepartmentId outCont.CompanyId = v.CompanyId outCont.Dimension = v.Dimension outCont.PostId = v.PostId outCont.Target = v.Target 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) var companyCont modelshr.AdministrativeOrganization companyCont.GetCont(map[string]interface{}{"`id`": v.CompanyId}, "id", "name") outCont.GroupTitle = companyCont.Name var departmenCont modelshr.AdministrativeOrganization departmenCont.GetCont(map[string]interface{}{"`id`": v.DepartmentId}, "id", "name") outCont.DepartmentTitle = departmenCont.Name var postCont modelshr.Position postCont.GetCont(map[string]interface{}{"`id`": v.PostId}, "id", "name") outCont.PostTitle = postCont.Name var dimensionCont modelskpi.DutyClass dimensionCont.GetCont(map[string]interface{}{"`id`": v.Dimension}, "id", "title") outCont.DimensionTitle = dimensionCont.Title outCont.TargetTitle = v.Title outCont.Capping = v.Capping outCont.CappingVal = v.CappingVal / 100 var manCont modelshr.PersonArchives manCont.GetCont(map[string]interface{}{"`key`": v.UserKey}) outCont.UserName = manCont.Name outCont.MyKey = strconv.FormatInt(v.UserKey, 10) outList = append(outList, outCont) } publicmethod.Result(0, outList, c) } /* * @ 作者: 秦东 @ 时间: 2023-01-08 10:44:38 @ 功能: 修改人员考核目标设置 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) EiteQuantitativeManConfig(c *gin.Context) { var requestData []EiteQuantConfig err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(1, err, c, "数据获取失败!") return } if len(requestData) < 1 { publicmethod.Result(1, err, c, "数据获取失败!") return } for _, v := range requestData { eiteCont := publicmethod.MapOut[string]() eiteCont["allprize"] = v.Allprize * 100 eiteCont["zeroprize"] = v.Zeroprize * 100 eiteCont["capping_val"] = v.Capping * 100 err = overall.CONSTANT_DB_KPI.Model(&modelskpi.QuanPeopleConfig{}).Where("`id` = ?", v.Id).Updates(eiteCont).Error } if err != nil { publicmethod.Result(104, err, c) } else { publicmethod.Result(0, err, c) } } /* * @ 作者: 秦东 @ 时间: 2023-01-08 10:48:54 @ 功能: 删除人员考核项目 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) NewDelQuantitativeManConfig(c *gin.Context) { var receivedValue newDelTargetManConfig err := c.ShouldBindJSON(&receivedValue) if err != nil { publicmethod.Result(100, err, c) return } if receivedValue.OrgID == "" || receivedValue.PostId == "" || receivedValue.Dimension == "" || receivedValue.Target == "" || receivedValue.Type == 0 || receivedValue.Year == 0 || receivedValue.UserKey == "" { publicmethod.Result(101, receivedValue, c, "数据获取失败!") return } err = overall.CONSTANT_DB_KPI.Where("`org_id` = ? AND `post_id` = ? AND `dimension` = ? AND `target` = ? AND `type` = ? AND `year` = ? AND `user_key` = ?", receivedValue.OrgID, receivedValue.PostId, receivedValue.Dimension, receivedValue.Target, receivedValue.Type, receivedValue.Year, receivedValue.UserKey).Delete(&modelskpi.QuanPostConfig{}).Error if err != nil { publicmethod.Result(108, err, c) } else { publicmethod.Result(0, err, c) } }