package assessment 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/testpage" "github.com/gin-gonic/gin" ) //获取指标列表 func (d *DutyHandle) GetTargetList(c *gin.Context) { var requestData listTarget 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 } offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}) if requestData.State == 0 { gormDb = gormDb.Where("`et_state` IN (1,2)") } else { gormDb = gormDb.Where("`et_state` = ?", requestData.State) } if requestData.Type != 0 { gormDb = gormDb.Where("`et_type` = ?", requestData.Type) } if requestData.Share != 0 { gormDb = gormDb.Where("`et_share` = ?", requestData.Share) } if requestData.Dimension != "" { gormDb = gormDb.Where("`et_dimension` = ?", requestData.Dimension) } if requestData.Title != "" { gormDb = gormDb.Where("(`et_title` LIKE ?)", "%"+requestData.Title+"%") } if len(requestData.RelevantDepartments) > 0 { var sqlOrStr string = "" for s_i, s_v := range requestData.RelevantDepartments { if s_i == 0 { sqlOrStr = fmt.Sprintf("FIND_IN_SET(%v,`et_relevant_departments`)", s_v) } else { sqlOrStr = fmt.Sprintf("%v OR FIND_IN_SET(%v,`et_relevant_departments`)", sqlOrStr, s_v) } } gormDb = gormDb.Where(sqlOrStr) } if len(requestData.VisibleRangeGroup) > 0 { var sqlOrStrGroup string = "" for s_i, s_v := range requestData.VisibleRangeGroup { if s_i == 0 { sqlOrStrGroup = fmt.Sprintf("FIND_IN_SET(%v,`et_visible_range`)", s_v) } else { sqlOrStrGroup = fmt.Sprintf("%v OR FIND_IN_SET(%v,`et_visible_range`)", sqlOrStrGroup, s_v) } } gormDb = gormDb.Where(sqlOrStrGroup) } if len(requestData.VisibleRangeDepart) > 0 { var sqlOrStrDepart string = "" for s_i, s_v := range requestData.VisibleRangeDepart { if s_i == 0 { sqlOrStrDepart = fmt.Sprintf("FIND_IN_SET(%v,`et_visible_range`)", s_v) } else { sqlOrStrDepart = fmt.Sprintf("%v OR FIND_IN_SET(%v,`et_visible_range`)", sqlOrStrDepart, s_v) } } gormDb = gormDb.Where(sqlOrStrDepart) } var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } // response.Result(0, requestData, "查询成功!", c) var dataList []assessmentmodel.EvaluationTarget dataListerr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Find(&dataList).Error if dataListerr != nil { response.Result(103, dataList, "数据获取失败!", c) return } var outMap []outTargetList for _, tg_val := range dataList { var outMapCont outTargetList outMapCont.Id = tg_val.Id outMapCont.OutId = strconv.FormatInt(tg_val.Id, 10) outMapCont.Title = tg_val.Title outMapCont.Type = tg_val.Type outMapCont.State = tg_val.State outMapCont.AddTime = tg_val.AddTime outMapCont.Share = 2 outMapCont.RelevantDepartments = tg_val.RelevantDepartments if tg_val.RelevantDepartments != "" { departIdAry := strings.Split(tg_val.RelevantDepartments, ",") for _, dia_val := range departIdAry { where := commonus.MapOut() where["id"] = dia_val orgCont, orgErr := commonus.GetNewOrgCont(where, "id", "name") if orgErr == nil { var bfCont outTargetAttr bfCont.Key = dia_val bfCont.Title = orgCont.Name outMapCont.RelevantDepartmentMap = append(outMapCont.RelevantDepartmentMap, bfCont) } // diaInt, diaIntErr := strconv.ParseInt(dia_val, 10, 64) // if diaIntErr == nil { // diaValErr, diaVal := GetBranchFactory(diaInt) // if diaValErr == true { // var bfCont outTargetAttr // bfCont.Key = dia_val // bfCont.Title = diaVal.Name // outMapCont.RelevantDepartmentMap = append(outMapCont.RelevantDepartmentMap, bfCont) // } // } } } outMapCont.Dimension = tg_val.Dimension dimClass, dimClassErr := commonus.GetDutyClassInfo(tg_val.Dimension) if dimClassErr == true { outMapCont.DimensionName = dimClass.Title } outMapCont.Key = tg_val.Key outMapCont.Report = tg_val.Report if tg_val.Report != "" { userIdAry := strings.Split(tg_val.Report, ",") for _, u_val := range userIdAry { uidInt, uidIntErr := strconv.ParseInt(u_val, 10, 64) if uidIntErr == nil { whe := commonus.MapOut() whe["wm_key"] = uidInt uidVal, uidValErr := commonus.GetUserInfoPublic("worker_man.*,worker_man_data.*", whe) if uidValErr == true { var bfContUser outTargetAttr bfContUser.Key = u_val bfContUser.Title = uidVal.Name outMapCont.ReportMap = append(outMapCont.ReportMap, bfContUser) } } } } outMapCont.Uniteing = tg_val.Uniteing outMapCont.Cycles = tg_val.Cycles outMapCont.CycleAttres = tg_val.CycleAttres outMapCont.VisibleRange = tg_val.VisibleRange if tg_val.VisibleRange != "" { rangeIdAry := strings.Split(tg_val.VisibleRange, ",") for _, rge_val := range rangeIdAry { rgeInt, rgeIntErr := strconv.ParseInt(rge_val, 10, 64) if rgeIntErr == nil { rgeValErr, rgeVal := GetBranchFactory(rgeInt) if rgeValErr == true { var bfContRge outTargetAttr bfContRge.Key = rge_val bfContRge.Title = rgeVal.Name outMapCont.VisibleRangeDepartMap = append(outMapCont.VisibleRangeDepartMap, bfContRge) } } } } outMapCont.VisibleRangeGroup = tg_val.VisibleRangeGroup if tg_val.VisibleRangeGroup != "" { rangeGroupIdAry := strings.Split(tg_val.VisibleRangeGroup, ",") for _, rgeup_val := range rangeGroupIdAry { rgeIntGup, rgeIntGupErr := strconv.ParseInt(rgeup_val, 10, 64) if rgeIntGupErr == nil { where := commonus.MapOut() where["id"] = rgeIntGup orgCont, rgeValGupErr := commonus.GetNewOrgCont(where, "id", "name") // outCont.GroupName = orgCont.Name // rgeValGupErr, rgeValGup := GetGroupCont(rgeIntGup) if rgeValGupErr == nil { var bfContRge outTargetAttr bfContRge.Key = rgeup_val bfContRge.Title = orgCont.Name outMapCont.VisibleRangeGroupMap = append(outMapCont.VisibleRangeGroupMap, bfContRge) } } } } outMap = append(outMap, outMapCont) } countSum := len(outMap) printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, outMap) response.Result(0, printData, "查询成功!", c) } //添加指标 func (d *DutyHandle) AddTarget(c *gin.Context) { var requestData addTargetType err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Title == "" { response.Result(102, err, "请输入指标名称!", c) return } if requestData.Type == 0 { requestData.Type = 1 } if requestData.Share == 0 { requestData.Share = 1 } else { if requestData.Share > 1 { if len(requestData.RelevantDepartments) == 0 { response.Result(103, err, "您选择了此指标为指定部门使用!但您未指定具体使用部门!请指定相关使用部门!", c) return } } } if requestData.Uniteing == "" { response.Result(104, err, "请输入计量单位!", c) return } if requestData.Cycles == 0 { requestData.Cycles = 4 } if requestData.CycleAttres == 0 { requestData.CycleAttres = 1 } gormDb := global.GVA_DB_Performanceappraisal gormDb = gormDb.Model(&assessmentmodel.EvaluationTarget{}).Select("et_title").Where("`et_title` = ? AND `et_type` = ?", requestData.Title, requestData.Type) dimensionId, dimensionErr := strconv.ParseInt(requestData.Dimension, 10, 64) if dimensionErr == nil && dimensionId != 0 { gormDb = gormDb.Where("`et_dimension` = ?", requestData.Dimension) } judgeOut := commonus.MapOut() judgeErr := gormDb.First(&judgeOut) if judgeErr == nil { response.Result(105, err, "此考核指标已经存在!请不要重复添加!", c) return } var saveData assessmentmodel.EvaluationTarget saveData.Title = requestData.Title saveData.Type = requestData.Type saveData.State = 1 saveData.AddTime = time.Now().Unix() saveData.Share = requestData.Share if len(requestData.RelevantDepartments) > 0 { saveData.RelevantDepartments = strings.Join(requestData.RelevantDepartments, ",") } if dimensionErr == nil { saveData.Dimension = dimensionId } saveData.Key = commonus.GetFileNumberEs() if len(requestData.Report) > 0 { saveData.Report = strings.Join(requestData.Report, ",") } saveData.Uniteing = requestData.Uniteing saveData.Cycles = requestData.Cycles saveData.CycleAttres = requestData.CycleAttres if len(requestData.VisibleRangeGroup) > 0 { saveData.VisibleRangeGroup = strings.Join(requestData.VisibleRangeGroup, ",") } if len(requestData.VisibleRangeDepart) > 0 { saveData.VisibleRange = strings.Join(requestData.VisibleRangeDepart, ",") } dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error if dutyInfoErr != nil { response.Result(106, saveData, "数据写入失败!", c) } else { response.Result(0, saveData, "数据写入成功!", c) } } //计算可见范围 func calculVisibleRange(groupStr, depart []string) (visibleRange string) { if len(depart) > 0 { for d_index, d_val := range depart { if d_index == 0 { visibleRange = d_val } else { visibleRange = visibleRange + "," + d_val } } return } else { if len(groupStr) > 0 { for g_index, g_val := range groupStr { if g_index == 0 { visibleRange = getBranchFactoryList(g_val) } else { visibleRange = visibleRange + "," + getBranchFactoryList(g_val) } } return } } return } //获得分厂列表 func getBranchFactoryList(id string) (bfIdStr string) { var ContInfo []testpage.BranchFactory err := global.GVA_DB_Master.Select("bf_id").Where("bf_group = ? AND `bf_set` = 1", id).Find(&ContInfo).Error if err != nil { return } for b_index, b_val := range ContInfo { if b_index == 0 { bfIdStr = strconv.FormatInt(b_val.Id, 10) } else { bfIdStr = bfIdStr + "," + strconv.FormatInt(b_val.Id, 10) } } return } //获取考核指标详情 func (d *DutyHandle) GetTarget(c *gin.Context) { var requestData commonus.SetIds err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } var systemEvalCont outTargetInfo contErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Where("`et_id` = ?", requestData.Id).First(&systemEvalCont).Error if contErr != nil { response.Result(103, err, "数据获取失败!", c) return } if systemEvalCont.RelevantDepartments != "" { systemEvalCont.RelevantDepartmentMap = strings.Split(systemEvalCont.RelevantDepartments, ",") systemEvalCont.GroupMap = commonus.GetDuboDepart(strings.Split(systemEvalCont.RelevantDepartments, ",")) } if systemEvalCont.Report != "" { systemEvalCont.ReportMap = strings.Split(systemEvalCont.Report, ",") } if systemEvalCont.VisibleRangeGroup != "" { systemEvalCont.VisibleRangeGroupMap = strings.Split(systemEvalCont.VisibleRangeGroup, ",") } if systemEvalCont.VisibleRange != "" { systemEvalCont.VisibleRangeDepartMap = strings.Split(systemEvalCont.VisibleRange, ",") } systemEvalCont.Share = 2 systemEvalCont.DimensionIdStr = strconv.FormatInt(systemEvalCont.Dimension, 10) response.Result(0, systemEvalCont, "数据获取成功!", c) } //编辑指标数据处理 func eiteTargetInfoes(saveId int64, saveData map[string]interface{}) (isTrue bool, infoErr error) { isTrue = false infoErr = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Where("`et_id` = ?", saveId).Updates(saveData).Error if infoErr != nil { return } isTrue = true return } //删除工段内容 func (d *DutyHandle) DelTarget(c *gin.Context) { var requestData dutyClassState err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, requestData, "数据获取失败!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } if requestData.State == 0 { requestData.State = 1 } //判断该指标是否已经被使用过 // var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation var qeId int64 = 0 judgeErrQe := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_state` IN (1,2) AND `qe_target` = ?", requestData.Id).Find(&qeId) if judgeErrQe == nil { if qeId != 0 { response.Result(103, qeId, "该指标已经再考核方案中使用!请先解除使用关系,再进行删除操作!", c) return } } saveData := commonus.MapOut() saveData["et_state"] = requestData.State saveData["et_time"] = time.Now().Unix() if requestData.IsDel != 1 { roleIsTrue, roleErr := eiteTargetInfoes(requestData.Id, saveData) if roleIsTrue != true { response.Result(103, roleErr, "修改失败!", c) return } response.Result(0, requestData, "修改成功!", c) } else { if requestData.State == 3 { roleErr := global.GVA_DB_Performanceappraisal.Where("et_id = ?", requestData.Id).Delete(&assessmentmodel.EvaluationTarget{}).Error if roleErr != nil { response.Result(104, saveData, "删除失败!", c) return } response.Result(0, saveData, "删除成功!", c) } else { roleIsTrue, roleErr := eiteTargetInfoes(requestData.Id, saveData) if roleIsTrue != true { response.Result(103, roleErr, "修改失败!", c) return } response.Result(0, requestData, "修改成功!", c) } } } //修改指标内容 func (d *DutyHandle) EiteTarget(c *gin.Context) { var requestData eiteTargetTypeCont err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "数据获取失败!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } saveData := commonus.MapOut() var oldTargetCont assessmentmodel.EvaluationTarget targetInfoErr := global.GVA_DB_Performanceappraisal.Where("`et_id` = ?", requestData.Id).First(&oldTargetCont).Error if targetInfoErr != nil { response.Result(102, err, "该指标不存在!请检查您的参数!", c) return } if requestData.Title == "" { response.Result(102, err, "请输入指标名称!", c) return } else { if requestData.Title != oldTargetCont.Title { judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`et_title` = ? AND `et_type` = ?", requestData.Title, oldTargetCont.Type).First(&oldTargetCont).Error if judgeTargetErr == nil { response.Result(102, err, "该指标名称已经存在!请不要重复输入!", c) return } } saveData["et_title"] = requestData.Title } if requestData.Type != 0 { saveData["et_type"] = requestData.Type } if len(requestData.RelevantDepartments) > 0 { saveData["et_relevant_departments"] = strings.Join(requestData.RelevantDepartments, ",") saveData["et_share"] = 2 } else { saveData["et_relevant_departments"] = "" saveData["et_share"] = 1 } // if requestData.Share != 0 { // saveData["et_share"] = requestData.Share // if requestData.Share > 1 { // if len(requestData.RelevantDepartments) == 0 { // response.Result(103, err, "您选择了此指标为指定部门使用!但您未指定具体使用部门!请指定相关使用部门!", c) // return // } // saveData["et_relevant_departments"] = strings.Join(requestData.RelevantDepartments, ",") // } else { // saveData["et_relevant_departments"] = "" // } // } if requestData.Dimension != "" { saveData["et_dimension"] = requestData.Dimension } if len(requestData.Report) > 0 { saveData["et_report"] = strings.Join(requestData.Report, ",") } if requestData.Uniteing != "" { saveData["et_unit"] = requestData.Uniteing } if requestData.Cycles != 0 { saveData["et_cycle"] = requestData.Cycles } if requestData.CycleAttres != 0 { saveData["et_cycleattr"] = requestData.CycleAttres } if len(requestData.VisibleRangeGroup) > 0 { saveData["et_visible_group"] = strings.Join(requestData.VisibleRangeGroup, ",") } if len(requestData.VisibleRangeDepart) > 0 { saveData["et_visible_range"] = strings.Join(requestData.VisibleRangeDepart, ",") } saveData["et_time"] = time.Now().Unix() roleIsTrue, roleErr := eiteTargetInfoes(requestData.Id, saveData) if roleIsTrue != true { response.Result(106, roleErr, "编辑失败!", c) } else { assTarEite := commonus.MapOut() assTarEite["departmentmap"] = saveData["et_relevant_departments"] assTarEite["time"] = time.Now().Unix() global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`targetid` = ?", requestData.Id).Updates(assTarEite) qualTarEite := commonus.MapOut() qualTarEite["q_depart"] = saveData["et_relevant_departments"] qualTarEite["q_time"] = time.Now().Unix() global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_parent_id` = ?", requestData.Id).Updates(qualTarEite) response.Result(0, saveData, "编辑成功!", c) } }