From cdd938a05226fa360e45fc55febb534cf600844b Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Sun, 20 Feb 2022 11:00:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=80=83=E6=A0=B8=E6=94=B9?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/assessment/assesshandle.go | 65 +- .../api/v1/assessment/department_target.go | 89 ++ .../api/v1/assessment/detailed_target.go | 310 +++++++ .../api/v1/assessment/dutyhandle.go | 26 +- .../api/v1/assessment/dutylist.go | 131 +-- .../api/v1/assessment/dutytype.go | 448 +++++++++- gin_server_admin/api/v1/assessment/enter.go | 1 + .../api/v1/assessment/programme.go | 267 ++++++ .../v1/assessment/qualitative_evaluation.go | 801 ++++++++++++++++++ .../api/v1/assessment/qualitative_target.go | 269 ++++++ .../api/v1/assessment/ration_evaluation.go | 296 +++++++ gin_server_admin/api/v1/assessment/target.go | 492 +++++++++++ .../api/v1/examtestpage/grouphandle.go | 31 + gin_server_admin/commonus/publichaneld.go | 62 ++ gin_server_admin/initialize/router.go | 5 +- .../model/assessmentmodel/dutyclass.go | 191 ++++- .../router/assessment/assessmentrouter.go | 71 ++ .../router/examtestpage/grouphandle.go | 2 + 18 files changed, 3469 insertions(+), 88 deletions(-) create mode 100644 gin_server_admin/api/v1/assessment/department_target.go create mode 100644 gin_server_admin/api/v1/assessment/detailed_target.go create mode 100644 gin_server_admin/api/v1/assessment/programme.go create mode 100644 gin_server_admin/api/v1/assessment/qualitative_evaluation.go create mode 100644 gin_server_admin/api/v1/assessment/qualitative_target.go create mode 100644 gin_server_admin/api/v1/assessment/ration_evaluation.go create mode 100644 gin_server_admin/api/v1/assessment/target.go diff --git a/gin_server_admin/api/v1/assessment/assesshandle.go b/gin_server_admin/api/v1/assessment/assesshandle.go index 1c83f2a..0e06ce5 100644 --- a/gin_server_admin/api/v1/assessment/assesshandle.go +++ b/gin_server_admin/api/v1/assessment/assesshandle.go @@ -69,6 +69,12 @@ func (d *DutyHandle) AssEssList(c *gin.Context) { assessOutInfo.PartId = val.PartId assessOutInfo.Time = val.Time assessOutInfo.State = val.State + + assessOutInfo.Type = val.Type + assessOutInfo.Unites = val.Unites + assessOutInfo.Cycle = val.Cycle + assessOutInfo.CycleAttr = val.CycleAttr + assessOutInfo.OutId = strconv.FormatInt(val.Id, 10) assessOutInfo.ParentIdStr = strconv.FormatInt(val.PartId, 10) @@ -100,6 +106,28 @@ func (d *DutyHandle) AddAssEssInfo(c *gin.Context) { response.Result(103, err, "请指定该考核项目归属于职责分类", c) return } + if requestData.Type == 0 { + requestData.Type = 1 + } + // if requestData.UnitTitle == "" { + // response.Result(105, err, "请输入计量单位", c) + // return + // } + // if requestData.Cycle == 0 { + // requestData.Cycle = 3 + // } + // if requestData.CycleAttr == 0 { + // requestData.CycleAttr = 1 + // } + if requestData.Title != "" { + outTitle := commonus.MapOut() + assErrs := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.AssessMentitems{}).Where("ai_parent = ? AND ai_title = ?", requestData.ParentId, requestData.Title).First(&outTitle).Error + if assErrs == nil { + response.Result(106, assErrs, "该考核维度下已经存在此考核项目!请不要重复提交!", c) + return + } + } + var assessInfo assessmentmodel.AssessMentitems assessInfo.Id = commonus.GetFileNumberEs() assessInfo.Title = requestData.Title @@ -114,6 +142,12 @@ func (d *DutyHandle) AddAssEssInfo(c *gin.Context) { } assessInfo.Time = time.Now().Unix() assessInfo.State = 1 + + assessInfo.Type = requestData.Type + assessInfo.Unites = requestData.UnitTitle + assessInfo.Cycle = requestData.Cycle + assessInfo.CycleAttr = requestData.CycleAttr + addassessInfoErr := global.GVA_DB_Performanceappraisal.Create(&assessInfo).Error if addassessInfoErr != nil { response.Result(104, assessInfo, "数据写入失败!", c) @@ -190,8 +224,37 @@ func (d *DutyHandle) EiteAssEssInfo(c *gin.Context) { if requestData.Content != "" { saveData["ai_content"] = requestData.Content } + + if requestData.Type == 0 { + saveData["ai_type"] = requestData.Type + } + if requestData.UnitTitle != "" { + saveData["ai_unit"] = requestData.UnitTitle + } + if requestData.Cycle != 0 { + saveData["ai_cycle"] = requestData.Cycle + } + if requestData.CycleAttr != 0 { + saveData["ai_cycle_attr"] = requestData.CycleAttr + } + + var assCont assessmentmodel.AssessMentitems + assErr := global.GVA_DB_Performanceappraisal.Where("ai_id = ?", requestData.Id).First(&assCont).Error + if assErr != nil { + response.Result(105, assErr, "该条目不存在!请重新提交!", c) + return + } + if requestData.Title != "" && requestData.Title != assCont.Title { + outTitle := commonus.MapOut() + assErrs := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.AssessMentitems{}).Where("ai_parent = ? AND ai_title = ?", assCont.PartId, requestData.Title).First(&outTitle).Error + if assErrs == nil { + response.Result(106, assErrs, "该考核维度下已经存在此考核项目!请不要重复提交!", c) + return + } + saveData["ai_title"] = requestData.Title + } var assessInfo assessmentmodel.AssessMentitems - saveData["ai_title"] = requestData.Title + saveData["ai_time"] = time.Now().Unix() isTrue, isErr := eiteAssEssInfoCont(requestData.Id, assessInfo, saveData) if isTrue != true { diff --git a/gin_server_admin/api/v1/assessment/department_target.go b/gin_server_admin/api/v1/assessment/department_target.go new file mode 100644 index 0000000..fdb5339 --- /dev/null +++ b/gin_server_admin/api/v1/assessment/department_target.go @@ -0,0 +1,89 @@ +package assessment + +import ( + "strconv" + + "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) DepartmentList(c *gin.Context) { + var requestData rationSelect + c.ShouldBindJSON(&requestData) + var groupId int64 = 3 + if requestData.Group != "" { + groupId, _ = strconv.ParseInt(requestData.Group, 10, 64) + } + var departList []deparMentModel + gromDb := global.GVA_DB_Master.Model(&testpage.BranchFactory{}).Select("bf_id", "bf_name", "bf_wechat_id").Where("`bf_set` = 1 AND `bf_group` = ?", groupId) + if requestData.DepartmentId != "" { + gromDb = gromDb.Where("`bf_id` = ?", requestData.DepartmentId) + } + departMentErr := gromDb.Find(&departList).Error + if departMentErr != nil || len(departList) < 1 { + response.Result(101, departMentErr, "没有数据!", c) + return + } + var departAryList []departmentDuty + for _, v := range departList { + var departCont departmentDuty + departCont.Id = strconv.FormatInt(v.Id, 10) + departCont.Name = v.Name + departCont.Child = getDepartDimension(groupId, v.Id) + departAryList = append(departAryList, departCont) + } + response.Result(0, departAryList, "数据获取成功!", c) +} + +//获取部门考核维度 +func getDepartDimension(groupId, departId int64) (dimensionAry []departmentDimension) { + var fileAry []int64 + dimErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimension{}).Select("dd_dimension").Where("`dd_group` = ? AND `dd_department` = ?", groupId, departId).Group("dd_dimension").Find(&fileAry).Error + // fmt.Printf("1--------------->%v\n", dimErr) + if dimErr == nil { + for _, v := range fileAry { + dimInfo, dimInfoErr := commonus.GetDutyClassInfo(v) + // fmt.Printf("2--------------->%v\n", dimInfo) + if dimInfoErr == true { + var dimCont departmentDimension + dimCont.Id = strconv.FormatInt(v, 10) + dimCont.Name = dimInfo.Title + dimCont.Child = targetRationDepartList(groupId, departId, v) + dimensionAry = append(dimensionAry, dimCont) + } + } + + } + return +} + +//部门考核项目 +func targetRationDepartList(groupID, departmentID, dimension int64) (contentList []taskDetails) { + var fileTargetAry []assessmentmodel.QualitativeEvaluation + listTargetErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ?", groupID, departmentID, dimension).Find(&fileTargetAry).Error + if listTargetErr != nil { + return + } + for _, v := range fileTargetAry { + var content taskDetails + targetInfo, targetErr := commonus.GetTargetInfo(v.Target) + if targetErr == true { + content.Id = strconv.FormatInt(v.Target, 10) + content.Name = targetInfo.Title + + content.Unit = v.Unit + content.ReferenceScore = v.ReferenceScore + content.Cycles = v.Cycles + content.CycleAttres = v.CycleAttres + content.State = v.State + + contentList = append(contentList, content) + } + } + return +} diff --git a/gin_server_admin/api/v1/assessment/detailed_target.go b/gin_server_admin/api/v1/assessment/detailed_target.go new file mode 100644 index 0000000..09459ff --- /dev/null +++ b/gin_server_admin/api/v1/assessment/detailed_target.go @@ -0,0 +1,310 @@ +package assessment + +import ( + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +/* +考核细则 +*/ + +//添加定性指标子栏目 +func (d *DutyHandle) AddDetailedTarget(c *gin.Context) { + var requestData addDetailedTargetType + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, requestData, "数据获取失败!", c) + return + } + if requestData.Title == "" { + response.Result(102, err, "请输入考核细则!", c) + return + } + if requestData.ParentId == "" { + response.Result(102, err, "请选择考核细则归属", c) + return + } + var parentIdSun int64 = 0 + juadgeMap := commonus.MapOut() + juadgeGormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("dt_title").Where("`dt_title` = ? AND `dt_parentid` = ?", requestData.Title, requestData.ParentId) + if requestData.ParentIdSun != "" { + parentIdSuns, parentIdSunErr := strconv.ParseInt(requestData.ParentIdSun, 10, 64) + if parentIdSunErr != nil { + response.Result(102, err, "请选择考核细则归属", c) + return + } + parentIdSun = parentIdSuns + juadgeGormDb = juadgeGormDb.Where("`dt_parentid_sun` = ?", requestData.ParentIdSun) + } + juadgeTitleErr := juadgeGormDb.First(&juadgeMap).Error + if juadgeTitleErr == nil { + response.Result(102, err, "此定考核细则已经存在!请不要重复录入!", c) + return + } + + var saveData assessmentmodel.DetailedTarget + saveData.Title = requestData.Title + saveData.Content = requestData.Content + parentId, parentIdErr := strconv.ParseInt(requestData.ParentId, 10, 64) + if parentIdErr != nil { + response.Result(102, err, "请选择考核细则归属", c) + return + } + saveData.ParentId = parentId + saveData.ParentIdSun = parentIdSun + saveData.State = 1 + saveData.AddTime = time.Now().Unix() + dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if dutyInfoErr != nil { + response.Result(106, saveData, "数据写入失败!", c) + } else { + response.Result(0, saveData, "数据写入成功!", c) + } +} + +//获取考核细则详细内容 +func (d *DutyHandle) GetDetailedTarget(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 outDetailedTargetType + contErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("dt_id", "dt_title", "dt_content", "dt_parentid", "dt_parentid_sun", "dt_state", "dt_time").Where("`dt_id` = ?", requestData.Id).First(&systemEvalCont).Error + if contErr != nil { + response.Result(103, err, "数据获取失败!", c) + return + } + + systemEvalCont.OutId = strconv.FormatInt(systemEvalCont.Id, 10) + systemEvalCont.ParentIdStr = strconv.FormatInt(systemEvalCont.ParentId, 10) + parentCont, parentIsTrue := commonus.GetTargetInfo(systemEvalCont.ParentId) + if parentIsTrue == true { + systemEvalCont.ParentTitle = parentCont.Title + } + systemEvalCont.ParentIdSunStr = strconv.FormatInt(systemEvalCont.ParentIdSun, 10) + parentSunCont, parentSunIsTrue := commonus.GetQualitativeTargetInfo(systemEvalCont.ParentIdSun) + if parentSunIsTrue == true { + systemEvalCont.ParentSunTitle = parentSunCont.Title + } + response.Result(0, systemEvalCont, "数据获取成功!", c) +} + +//获取考核细则详细内容 +func (d *DutyHandle) GetDetailedTargetList(c *gin.Context) { + var requestData detailedTargetTypeList + 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.DetailedTarget{}).Select("dt_id", "dt_title", "dt_content", "dt_parentid", "dt_parentid_sun", "dt_state", "dt_time") + if requestData.ParentId != "" { + gormDb = gormDb.Where("`dt_parentid` = ?", requestData.ParentId) + } + if requestData.ParentIdSun != "" { + gormDb = gormDb.Where("`dt_parentid_sun` = ?", requestData.ParentIdSun) + } + if requestData.State != 0 { + gormDb = gormDb.Where("`dt_state` = ?", requestData.State) + } else { + gormDb = gormDb.Where("`dt_state` IN (1,2)") + } + if requestData.Title != "" { + gormDb = gormDb.Where("(`dt_title` LIKE ?)", "%"+requestData.Title+"%") + } + var total int64 + totalErr := gormDb.Count(&total).Error + if totalErr != nil { + total = 0 + } + + // response.Result(0, requestData, "查询成功!", c) + // var dataList []assessmentmodel.QualitativeTarget + var dataList []outDetailedTargetType + dataListerr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Find(&dataList).Error + if dataListerr != nil { + response.Result(103, dataList, "数据获取失败!", c) + return + } + for i, v := range dataList { + dataList[i].OutId = strconv.FormatInt(v.Id, 10) + dataList[i].ParentIdStr = strconv.FormatInt(v.ParentId, 10) + parentCont, parentIsTrue := commonus.GetTargetInfo(v.ParentId) + if parentIsTrue == true { + dataList[i].ParentTitle = parentCont.Title + } + dataList[i].ParentIdSunStr = strconv.FormatInt(v.ParentIdSun, 10) + parentSunCont, parentSunIsTrue := commonus.GetQualitativeTargetInfo(v.ParentIdSun) + if parentSunIsTrue == true { + dataList[i].ParentSunTitle = parentSunCont.Title + } + } + countSum := len(dataList) + printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, dataList) + response.Result(0, printData, "查询成功!", c) +} + +//编辑考核细则数据处理 +func eiteDetailedTargetInfo(saveId int64, saveData map[string]interface{}) (isTrue bool, infoErr error) { + isTrue = false + infoErr = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_id` = ?", saveId).Updates(saveData).Error + if infoErr != nil { + return + } + isTrue = true + return +} + +//编辑考核细则内容 +func (d *DutyHandle) EiteDetailedTargetCont(c *gin.Context) { + var requestData eitedetailedTargetCon + 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 oldTargetCont assessmentmodel.DetailedTarget + targetInfoErr := global.GVA_DB_Performanceappraisal.Where("`dt_id` = ?", requestData.Id).First(&oldTargetCont).Error + if targetInfoErr != nil { + response.Result(102, err, "该考核细则不存在!请检查您的参数!", c) + return + } + + saveData := commonus.MapOut() + if requestData.Title == "" { + response.Result(102, err, "请输入指标名称!", c) + return + } else { + if requestData.Title != oldTargetCont.Title { + if requestData.ParentId != "" && requestData.ParentIdSun != "" { + judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`dt_title` = ? AND `dt_parentid` = ? AND `dt_parentid_sun` = ?", requestData.Title, requestData.ParentId, requestData.ParentIdSun).First(&oldTargetCont).Error + if judgeTargetErr == nil { + response.Result(102, err, "该考核细则已经存在!请不要重复输入!", c) + return + } + } else if requestData.ParentId != "" && requestData.ParentIdSun == "" { + judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`dt_title` = ? AND `dt_parentid` = ?", requestData.Title, requestData.ParentId).First(&oldTargetCont).Error + if judgeTargetErr == nil { + response.Result(102, err, "该考核细则已经存在!请不要重复输入!", c) + return + } + } else { + judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`dt_title` = ? AND `dt_parentid` = ? AND `dt_parentid_sun` = ?", requestData.Title, oldTargetCont.ParentId, oldTargetCont.ParentIdSun).First(&oldTargetCont).Error + if judgeTargetErr == nil { + response.Result(102, err, "该考核细则已经存在!请不要重复输入!", c) + return + } else { + judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`dt_title` = ? AND `dt_parentid` = ?", requestData.Title, oldTargetCont.ParentId).First(&oldTargetCont).Error + if judgeTargetErr == nil { + response.Result(102, err, "该考核细则已经存在!请不要重复输入!", c) + return + } + } + } + saveData["dt_title"] = requestData.Title + } + } + if requestData.Content != "" { + saveData["dt_content"] = requestData.Content + } + if requestData.ParentId != "" { + saveData["dt_parentid"] = requestData.ParentId + } + if requestData.ParentIdSun != "" { + saveData["dt_parentid_sun"] = requestData.ParentIdSun + } + saveData["dt_time"] = time.Now().Unix() + roleIsTrue, roleErr := eiteDetailedTargetInfo(requestData.Id, saveData) + if roleIsTrue != true { + response.Result(106, roleErr, "编辑失败!", c) + } else { + response.Result(0, saveData, "编辑成功!", c) + } +} + +//删除考核细则 +func (d *DutyHandle) DelDetailedTargetCont(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 + } + saveData := commonus.MapOut() + saveData["dt_state"] = requestData.State + saveData["dt_time"] = time.Now().Unix() + if requestData.IsDel != 1 { + roleIsTrue, roleErr := eiteDetailedTargetInfo(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("dt_id = ?", requestData.Id).Delete(&assessmentmodel.DetailedTarget{}).Error + if roleErr != nil { + response.Result(104, saveData, "删除失败!", c) + return + } + response.Result(0, saveData, "删除成功!", c) + } else { + roleIsTrue, roleErr := eiteDetailedTargetInfo(requestData.Id, saveData) + if roleIsTrue != true { + response.Result(103, roleErr, "修改失败!", c) + return + } + response.Result(0, requestData, "修改成功!", c) + } + } +} diff --git a/gin_server_admin/api/v1/assessment/dutyhandle.go b/gin_server_admin/api/v1/assessment/dutyhandle.go index 999ac5c..13bafc7 100644 --- a/gin_server_admin/api/v1/assessment/dutyhandle.go +++ b/gin_server_admin/api/v1/assessment/dutyhandle.go @@ -90,10 +90,19 @@ func (d *DutyHandle) AddDutyClass(c *gin.Context) { response.Result(102, err, "请输入职责名称", c) return } + if requestData.Type == 0 { + requestData.Type = 1 + } + outMap := commonus.MapOut() + juadgeErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyClass{}).Select("title").Where("`title` = ?", requestData.Title).First(&outMap).Error + if juadgeErr == nil { + response.Result(102, err, "该考核维度已经存在!请不要重复添加!", c) + return + } var dutyClassCont assessmentmodel.DutyClass dutyClassCont.Id = commonus.GetFileNumberEs() dutyClassCont.Title = requestData.Title - dutyClassCont.Type = 1 + dutyClassCont.Type = requestData.Type dutyClassCont.Weight = 0 dutyClassCont.State = 1 dutyClassCont.Time = time.Now().Unix() @@ -155,6 +164,21 @@ func (d *DutyHandle) EiteDutyClassInfo(c *gin.Context) { response.Result(103, err, "请输入职责名称", c) return } + var dutyClassCont assessmentmodel.DutyClass + inFoErrJuadge := global.GVA_DB_Performanceappraisal.Where("`id` = ?", requestData.Id).First(&dutyClassCont).Error + if inFoErrJuadge != nil { + response.Result(103, inFoErrJuadge, "该考核维度不存在!请检查您的提交", c) + return + } + if requestData.Title != dutyClassCont.Title { + outMap := commonus.MapOut() + juadgeErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyClass{}).Select("title").Where("`title` = ?", requestData.Title).First(&outMap).Error + if juadgeErr == nil { + response.Result(102, err, "该考核维度已经存在!请不要重复提交!", c) + return + } + } + //软处理 saveData := commonus.MapOut() saveData["title"] = requestData.Title diff --git a/gin_server_admin/api/v1/assessment/dutylist.go b/gin_server_admin/api/v1/assessment/dutylist.go index 3afb27d..b3e5798 100644 --- a/gin_server_admin/api/v1/assessment/dutylist.go +++ b/gin_server_admin/api/v1/assessment/dutylist.go @@ -45,28 +45,8 @@ func (d *DutyHandle) DutyList(c *gin.Context) { } if requestData.AssEssType != 0 { - gormDb = gormDb.Where("`dc_user_type` = ?", requestData.AssEssType) - if requestData.AssEssUserId != "" { - assessUserId, assessErr := strconv.ParseInt(requestData.AssEssUserId, 10, 64) - if assessErr == nil { - if requestData.AssEssType == 1 { - gormDb = gormDb.Where("`dc_user_dump` = ?", assessUserId) - } else { - gormDb = gormDb.Where("`dc_dump` = ?", assessUserId) - } - } - } - } else { - if requestData.AssEssUserId != "" { - assessUserId, assessErr := strconv.ParseInt(requestData.AssEssUserId, 10, 64) - if assessErr == nil { - if requestData.AssEssType == 1 { - gormDb = gormDb.Where("`dc_user_dump` = ?", assessUserId) - } else { - gormDb = gormDb.Where("`dc_dump` = ?", assessUserId) - } - } - } + gormDb = gormDb.Where("`dc_type` = ?", requestData.AssEssType) + } var total int64 @@ -94,6 +74,12 @@ func (d *DutyHandle) DutyList(c *gin.Context) { outDutyInfo.Dump = val.Dump outDutyInfo.OutId = strconv.FormatInt(outDutyInfo.Id, 10) + outDutyInfo.UnitTitle = val.Uniteing + outDutyInfo.Cycle = val.Cycles + outDutyInfo.CycleAttr = val.CycleAttres + outDutyInfo.Content = val.Contentes + outDutyInfo.Type = val.Types + outDutyInfo.ParentIdStr = strconv.FormatInt(val.PartId, 10) isTrue, parentCont := GetAssEssCont(val.PartId) if isTrue == true { @@ -127,7 +113,7 @@ func (d *DutyHandle) DutyList(c *gin.Context) { response.Result(0, printData, "查询成功!", c) } -//添加具体职责 +//添加考核细则 func (d *DutyHandle) AddDutyInfo(c *gin.Context) { var requestData addDutyContent err := c.ShouldBindJSON(&requestData) @@ -136,43 +122,67 @@ func (d *DutyHandle) AddDutyInfo(c *gin.Context) { return } if requestData.Title == "" { - response.Result(102, err, "请输入具体职责名称", c) + response.Result(102, err, "请输入考核细则名称", c) return } if requestData.ParentId == "" { - response.Result(103, err, "请指定该具体归属于职责项目", c) + response.Result(103, err, "请指定该具体归属于考核项目", c) return } - if requestData.UserId == "" { - response.Result(103, err, "请指定该具体职责执行人或执行部门", c) + outDutyCont := commonus.MapOut() + inFoErres := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Where("`dc_parent` = ? AND `dc_title` = ?", requestData.ParentId, requestData.Title).First(&outDutyCont).Error + if inFoErres == nil { + response.Result(105, inFoErres, "该考核项目下此考核细则已经存在!请不要重复提交", c) return } + // if requestData.SectionId == "" { + // response.Result(103, err, "请指定该考核细则执行部门", c) + // return + // } if requestData.Type == 0 { requestData.Type = 1 } + var dutyInfo assessmentmodel.DutyContent dutyInfo.Id = commonus.GetFileNumberEs() dutyInfo.Title = requestData.Title dutyInfo.Time = time.Now().Unix() dutyInfo.State = 1 + dutyInfo.UserType = 1 parentId, parentIdErr := strconv.ParseInt(requestData.ParentId, 10, 64) if parentIdErr == nil { dutyInfo.PartId = parentId } else { dutyInfo.PartId = 0 } - userID, userIDErr := strconv.ParseInt(requestData.UserId, 10, 64) - if userIDErr != nil { - userID = 0 - } - dutyInfo.UserType = requestData.Type - if requestData.Type == 1 { - dutyInfo.UserDump = userID - dutyInfo.Dump = 0 - } else { - dutyInfo.UserDump = 0 - dutyInfo.Dump = userID + // userID, userIDErr := strconv.ParseInt(requestData.UserId, 10, 64) + // if userIDErr != nil { + // userID = 0 + // } + dutyInfo.Types = requestData.Type + // dutyInfo.UserDump = userID + // DumpID, DumpIDErr := strconv.ParseInt(requestData.SectionId, 10, 64) + // if DumpIDErr != nil { + // DumpID = 0 + // } + // dutyInfo.Dump = DumpID + assContErr, assCont := GetAssEssCont(parentId) + if assContErr != true { + response.Result(103, err, "该考核项目不存在!请你检查!", c) + return } + dutyInfo.Uniteing = assCont.Unites + dutyInfo.Cycles = assCont.Cycle + dutyInfo.CycleAttres = assCont.CycleAttr + dutyInfo.Contentes = requestData.Content + + // if requestData.Type == 1 { + // dutyInfo.UserDump = userID + // dutyInfo.Dump = 0 + // } else { + // dutyInfo.UserDump = 0 + // dutyInfo.Dump = userID + // } dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&dutyInfo).Error if dutyInfoErr != nil { response.Result(104, dutyInfo, "数据写入失败!", c) @@ -260,6 +270,22 @@ func (d *DutyHandle) EiteDutyInfor(c *gin.Context) { response.Result(103, err, "请输入具体职责", c) return } + + var dutyOutInfo dutyOutput + inFoErr := global.GVA_DB_Performanceappraisal.Where("`dc_id` = ?", requestData.Id).First(&dutyOutInfo).Error + if inFoErr != nil { + response.Result(103, inFoErr, "数据查询失败!", c) + return + } + if requestData.Title != "" && requestData.Title != dutyOutInfo.Title { + outDutyCont := commonus.MapOut() + inFoErres := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Where("`dc_parent` = ? AND `dc_title` = ?", requestData.ParentId, requestData.Title).First(&outDutyCont).Error + if inFoErres == nil { + response.Result(105, inFoErr, "该考核细则已经存在!请不要重复提交", c) + return + } + } + if requestData.ParentId != "" { parentIdInt, parentErr := strconv.ParseInt(requestData.ParentId, 10, 64) if parentErr == nil { @@ -267,21 +293,24 @@ func (d *DutyHandle) EiteDutyInfor(c *gin.Context) { } } if requestData.Type != 0 { - saveData["dc_user_type"] = requestData.Type - if requestData.UserId != "" { - userID, userIDErr := strconv.ParseInt(requestData.UserId, 10, 64) - if userIDErr != nil { - userID = 0 - } - if requestData.Type == 1 { - saveData["dc_user_dump"] = userID - saveData["dc_dump"] = 0 - } else { - saveData["dc_user_dump"] = 0 - saveData["dc_dump"] = userID - } + saveData["dc_type"] = requestData.Type + } + if requestData.UserId != "" { + userID, userIDErr := strconv.ParseInt(requestData.UserId, 10, 64) + if userIDErr != nil { + userID = 0 } + saveData["dc_user_dump"] = userID } + + if requestData.SectionId != "" { + sectionID, sectionIDErr := strconv.ParseInt(requestData.SectionId, 10, 64) + if sectionIDErr != nil { + sectionID = 0 + } + saveData["dc_dump"] = sectionID + } + var assessInfo assessmentmodel.DutyContent saveData["dc_title"] = requestData.Title saveData["dc_time"] = time.Now().Unix() diff --git a/gin_server_admin/api/v1/assessment/dutytype.go b/gin_server_admin/api/v1/assessment/dutytype.go index bc9bdf7..b740e5a 100644 --- a/gin_server_admin/api/v1/assessment/dutytype.go +++ b/gin_server_admin/api/v1/assessment/dutytype.go @@ -1,10 +1,29 @@ package assessment import ( + "sync" + "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" ) +//协程设置 +var syncProcess = sync.WaitGroup{} + +//数据锁统计 +type dataLockStatistics struct { + dataMap []map[string]interface{} + dataErrMap []map[string]interface{} + mutext sync.RWMutex +} + +//读取锁数据 +func (d *dataLockStatistics) readMyDayData() ([]map[string]interface{}, []map[string]interface{}) { + d.mutext.RLock() + defer d.mutext.RUnlock() + return d.dataMap, d.dataErrMap +} + //职责考核 type DutyHandle struct{} @@ -30,6 +49,7 @@ type dutyClassOutput struct { //职责类别添加 type dutyClassAdd struct { Title string `json:"title"` + Type int `json:"type"` //1:定性考核;2:定量考核 } //职责类别修改 @@ -64,16 +84,24 @@ type assessOutput struct { //添加考核项目内容 type addAssEssInfo struct { dutyClassAdd - Content string `json:"content"` - ParentId string `json:"parentId"` //父级 + Content string `json:"content"` //描述 + ParentId string `json:"parentId"` //父级 + Type int `json:"type"` //1:定量考核;2:定性考核 + UnitTitle string `json:"unittitle"` //计量单位 + Cycle int `json:"cycle"` //1:天;2:周;3:月;4:季度;5:年 + CycleAttr int `json:"cycleattr"` //辅助计数 } //修改考核项目内容 type eiteAssEssCont struct { commonus.SetId dutyClassAdd - Content string `json:"content"` - ParentId string `json:"parentId"` //父级 + Content string `json:"content"` //描述 + ParentId string `json:"parentId"` //父级 + Type int `json:"type"` //1:定量考核;2:定性考核 + UnitTitle string `json:"unittitle"` //计量单位 + Cycle int `json:"cycle"` //1:天;2:周;3:月;4:季度;5:年 + CycleAttr int `json:"cycleattr"` //辅助计数 } //具体职责查询 @@ -91,28 +119,43 @@ type dutyOutput struct { assessmentmodel.DutyContent OutIdStruct - ParentIdStr string `json:"parentIdStr"` //父级ID字符型 - ParentTitle string `json:"parentTitle"` //父级名称 - UserName string `json:"username"` //执行人姓名 - DumpTitle string `json:"dumpTitle"` //执行人部门 - UserDumpId string `json:"userDumpId"` //执行人ID + ParentIdStr string `json:"parentIdStr"` //父级ID字符型 + ParentTitle string `json:"parentTitle"` //父级名称 + UserName string `json:"username"` //执行人姓名 + DumpTitle string `json:"dumpTitle"` //执行人部门 + UserDumpId string `json:"userDumpId"` //执行人ID + Type int `json:"typestate"` //1:定量考核;2:定性考核 + UnitTitle string `json:"unittitle"` //计量单位 + Cycle int `json:"cycleing"` //1:天;2:周;3:月;4:季度;5:年 + CycleAttr int `json:"cycleattring"` //辅助计数 + Content string `json:"contenting"` //描述 } //添加具体职责 type addDutyContent struct { dutyClassAdd - Type int `json:"type"` - ParentId string `json:"parentId"` //父级 - UserId string `json:"userid"` + Type int `json:"type"` //1:定量考核;2:定性考核 + ParentId string `json:"parentId"` //父级 + UserId string `json:"userid"` //执行人 + SectionId string `json:"section"` //执行部门 + UnitTitle string `json:"unittitle"` //计量单位 + Cycle int `json:"cycle"` //1:天;2:周;3:月;4:季度;5:年 + CycleAttr int `json:"cycleattr"` //辅助计数 + Content string `json:"content"` //描述 } //编辑具体项目 type eiteDutyCont struct { commonus.SetId dutyClassAdd - Type int `json:"type"` - ParentId string `json:"parentId"` //父级 - UserId string `json:"userid"` + Type int `json:"type"` + ParentId string `json:"parentId"` //父级 + UserId string `json:"userid"` //执行人 + SectionId string `json:"section"` //执行部门 + UnitTitle string `json:"unittitle"` //计量单位 + Cycle int `json:"cycle"` //1:天;2:周;3:月;4:季度;5:年 + CycleAttr int `json:"cycleattr"` //辅助计数 + Content string `json:"content"` //描述 } //部门具体职责 @@ -191,3 +234,378 @@ type dutyAssClass struct { AssPartId int64 `json:"AsspartId" gorm:"column:ai_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` ClassTitle string `json:"Classtitle" gorm:"column:title;type:varchar(255);comment:职责类别名称"` } + +/* +考核方案 +*/ +type EvaluationScheme struct{} + +//添加考核方案 +type AddScheme struct { + dutyClassAdd //标题 + Group int64 `json:"group"` //集团 + Department []int64 `json:"department"` //分厂 + Dimension string `json:"dimension"` //考核维度 + Project string `json:"project"` //考核项目 + Weight int `json:"weight"` //权重 + ExecutiveDepartment int64 `json:"executivedepartment"` //执行部门 + Content []schemeContent `json:"content"` //方案内容 +} + +type schemeContent struct { + Id string `json:"id"` + Title string `json:"title"` + Type int `json:"type"` + ParentId string `json:"parentId"` + Section string `json:"section"` + Unittitle string `json:"unittitle"` + Cycle int `json:"cycle"` + Cycleattr int `json:"cycleattr"` + Content string `json:"content"` +} + +/* +指标相关 +*/ +//指标列表查询字段 +type listTarget struct { + commonus.PageSetLimt + Title string `json:"title"` + Type int `json:"type"` //1:定性考核;2:定量考核 + Share int `json:"share"` //1:共用;2:私用 + State int `json:"state"` //状态(1:启用;2:禁用;3:删除) + RelevantDepartments []string `json:"relevantdepartments"` //相关部门 + VisibleRangeGroup []string `json:"visiblerangegroup"` //可见范围(集团) + VisibleRangeDepart []string `json:"visiblerangedepart"` //可见范围(分厂) +} + +//添加指标 +type addTargetType struct { + Title string `json:"title"` + Type int `json:"type"` //1:定性考核;2:定量考核 + Share int `json:"share"` //1:共用;2:私用 + RelevantDepartments []string `json:"relevantdepartments"` //相关部门 + Dimension string `json:"dimension"` //维度 (待定是否使用) + Report []string `json:"report"` //上报人 + Uniteing string `json:"unites"` //单位 + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + CycleAttres int `json:"cycleattr"` //辅助计数 + VisibleRangeGroup []string `json:"visiblerangegroup"` //可见范围(集团) + VisibleRangeDepart []string `json:"visiblerangedepart"` //可见范围(分厂) +} + +//列表输出 +type outTargetList struct { + assessmentmodel.EvaluationTarget + OutId string `json:"outid"` + RelevantDepartmentMap []outTargetAttr `json:"relevantdepartmentsmap"` + ReportMap []outTargetAttr `json:"reportmap"` + VisibleRangeGroupMap []outTargetAttr `json:"visiblerangegroupmap"` //可见范围(集团) + VisibleRangeDepartMap []outTargetAttr `json:"visiblerangedepartmap"` //可见范围(分厂) +} + +//输出结构体 +type outTargetAttr struct { + Key string `json:"key"` + Title string `json:"title"` +} + +//详细内容输出 +type outTargetInfo struct { + assessmentmodel.EvaluationTarget + RelevantDepartmentMap []string `json:"relevantdepartmentsmap"` + ReportMap []string `json:"reportmap"` + VisibleRangeGroupMap []string `json:"visiblerangegroupmap"` //可见范围(集团) + VisibleRangeDepartMap []string `json:"visiblerangedepartmap"` //可见范围(分厂) +} + +//指标内容修改 +type eiteTargetTypeCont struct { + commonus.SetId + addTargetType +} + +/* +定性指标相关操作 +*/ +type addAttTarget struct { + Title string `json:"title"` + ParentId string `json:"parentid"` +} + +//子栏目列表 +type attTargetList struct { + commonus.PageSetLimt + addAttTarget + State int `json:"state"` //状态(1:启用;2:禁用;3:删除) +} + +//子栏目列表输出 +type attTargetListOut struct { + assessmentmodel.QualitativeTarget + ParentIdStr string `json:"parentidstr"` + ParentTitle string `json:"parenttitle"` + OutId string `json:"outid"` +} + +//指标子栏目修改 +type eiteAttTarget struct { + commonus.SetId + addAttTarget +} + +/* +考核细则相关处理 +*/ +type addDetailedTargetType struct { + Title string `json:"title"` + Content string `json:"content"` + ParentId string `json:"parentid"` + ParentIdSun string `json:"parentidsun"` +} + +//考核细则输出 +type outDetailedTargetType struct { + assessmentmodel.DetailedTarget + ParentIdStr string `json:"parentidstr"` + ParentTitle string `json:"parenttitle"` + ParentIdSunStr string `json:"parentidsunstr"` + ParentSunTitle string `json:"parentsuntitle"` + OutId string `json:"outid"` +} + +//考核细则列表 +type detailedTargetTypeList struct { + commonus.PageSetLimt + addDetailedTargetType + State int `json:"state"` //状态(1:启用;2:禁用;3:删除) +} + +//修改考核细则 +type eitedetailedTargetCon struct { + commonus.SetId + addDetailedTargetType +} + +/* +定性考核 +*/ +type AddQualEval struct { + AcceptDepartmentId []string `json:"parentid"` //接受考核部门 + Dimension string `json:"dimension"` //考核维度 + Type int `json:"type"` //1:定性考核;2:定量考核 + Target string `json:"target"` //考核指标 + TargetSun string `json:"targetsun"` //考核指标子栏目 + Group string `json:"group"` //归属集团 + EvaluationList []QualEvalSunList `json:"evaluationlist"` //测评详情 +} + +//定性考核内容 +type QualEvalSunList struct { + DetailedTarget string `json:"id"` //考核细则 + Unit string `json:"unit"` //单位 + ReferenceScore int64 `json:"referencescore"` //标准分值 + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + CycleAttres int `json:"cycleattr"` //辅助计数 + DepartmentId string `json:"parentid"` //执行考核部门ID + Operator []string `json:"userlist"` //考核执行人 +} + +//查询定性考核列表 +type SelectQualEval struct { + Group string `json:"group"` //归属集团 + DepartmentId string `json:"parentid"` //接受考核部门 +} + +//定性考核列表输出 +type QualEvalArrt struct { + Id string `json:"id"` + Name string `json:"name"` +} +type QualEvalListOut struct { + QualEvalArrt + Child []QualEvalListOutDepart `json:"child"` //定性考核部门 +} + +//定性考核部门 +type QualEvalListOutDepart struct { + QualEvalArrt + Child []DimensionList `json:"child"` //维度列表 +} + +//定性考核列表维度项目 +type DimensionList struct { + QualEvalArrt + Child []TargetList `json:"child"` //定性指标 +} + +//定性指标 +type TargetList struct { + QualEvalArrt + Child []TargetSunList `json:"child"` //定性指标子栏目 +} + +//定性指标子栏目 +type TargetSunList struct { + QualEvalArrt + Child []taskDetails `json:"child"` //考核细则 +} + +//具体职责 +type taskDetails struct { + QualEvalArrt + Content string `json:"content"` //指标说明 + Unit string `json:"unit"` //单位"` + ReferenceScore int64 `json:"referencescore"` //标准分值"` + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` + State int `json:"state"` +} + +//具体职责输出 +type taskDatalsContOut struct { + Id int64 `json:"id" gorm:"column:qe_id;type:bigint(20) unsigned;not null;comment:Id;index"` + DetailedTarget int64 `json:"detailedtarget" gorm:"column:qe_detailed_target;type:bigint(20) unsigned;default:0;not null;comment:考核细则"` + Unit string `json:"unit" gorm:"column:qe_unit;type:varchar(255);comment:单位"` + ReferenceScore int64 `json:"referencescore" gorm:"column:qe_reference_score;type:int(9) unsigned;default:0;not null;comment:标准分值"` + Cycles int `json:"cycle" gorm:"column:qe_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr" gorm:"column:qe_cycleattr;type:int(9) unsigned;default:1;not null;comment:辅助计数"` + State int `json:"state" gorm:"column:qe_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` +} + +//定量指标 +type QualEvalRationListOut struct { + QualEvalArrt + Child []QualEvalRationListOutDepart `json:"child"` //定量考核部门 +} + +//定量考核部门 +type QualEvalRationListOutDepart struct { + QualEvalArrt + Child []DimensionRationList `json:"child"` //维度列表 +} + +//定量考核列表维度项目 +type DimensionRationList struct { + QualEvalArrt + Child []taskDetails `json:"child"` //定量指标 +} + +//定量指标 +type TargetRationList struct { + QualEvalArrt + Child []taskDetails `json:"child"` //定量指标子栏目 +} + +//获取相关任务目标 +type taskTargetList struct { + Type int `json:"type"` //1:定性考核;2:定量考核 + Group string `json:"group"` //归属集团 + DepartMent []string `json:"department"` +} + +//根据条件获取考核细则 +type SelectTaskTarget struct { + Type int `json:"type"` //1:定性考核;2:定量考核 + TargetId string `json:"targetid"` + TargetSunId string `json:"targetsunid"` +} + +/* +定量考核 +*/ +type AddRationCont struct { + AcceptDepartmentId []string `json:"parentid"` //接受考核部门 + Dimension string `json:"dimension"` //考核维度 + Type int `json:"type"` //1:定性考核;2:定量考核 + Group string `json:"group"` //归属集团 + RationList []rationList `json:"rationlist"` //考核明细列表 +} + +//定量考核明细 +type rationList struct { + Target string `json:"id"` //考核指标 + DepartmentId string `json:"parentid"` //执行考核部门ID + Unit string `json:"unit"` //单位 + ReferenceScore int64 `json:"referencescore"` //标准分值 + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + CycleAttres int `json:"cycleattr"` //辅助计数 + Operator []string `json:"userlist"` //考核执行人 +} + +//定量考核列表查询 +type rationSelect struct { + Group string `json:"group"` //归属集团 + DepartmentId string `json:"parentid"` //接受考核部门 +} + +//部门考核 +type deparMentModel struct { + Id int64 `json:"id" gorm:"column:bf_id;type:bigint(20);;primaryKey;unique;not null;autoIncrement;index"` + Name string `json:"name" gorm:"column:bf_name;type:varchar(30);not null;comment:分厂名称"` //'分厂名称', + WechatId int `json:"wechatid" gorm:"column:bf_wechat_id;type:int(4) unsigned;default:0;not null;comment:对照微信id"` //'对照微信id', +} + +//部门考核输出列表 +type departmentDuty struct { + QualEvalArrt + Child []departmentDimension `json:"child"` //考核细则 +} + +//部门考核维度输出列表 +type departmentDimension struct { + QualEvalArrt + Child []taskDetails `json:"child"` //考核细则 +} + +//考核细则联动列表 +type taskDetailsLinkage struct { + QualEvalArrt + Content string `json:"content"` //指标说明 + Unit string `json:"unit"` //单位"` + ReferenceScore int64 `json:"referencescore"` //标准分值"` + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr"` //辅助计数"` + State int `json:"state"` + UserList []string `json:"userlist"` //执行人列表 + UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表 +} + +//添加定性考核权重 +type addDepartmentDimensionWeight struct { + Hierarchy int64 `json:"hierarchy"` //层级 + Type int64 `json:"type"` //1:定性考核;2:定量考核 + Group string `json:"group"` //归属集团 + DepartmentId string `json:"parentid"` //接受考核部门 + Dimension string `json:"dimension"` //维度 + TargetId string `json:"targetid"` //指标 + Weight int64 `json:"weight"` //权重 +} + +//批量添加指标权重 +type addDepartDimensionWeightAry struct { + // Hierarchy int64 `json:"hierarchy"` //层级 + Type int64 `json:"type"` //1:定性考核;2:定量考核 + Group string `json:"group"` //归属集团 + DepartmentId string `json:"parentid"` //接受考核部门 + Dimension string `json:"dimension"` //维度 + TargetList []targetListType `json:"targetlist"` //指标 +} +type targetListType struct { + Id string `json:"id"` + Weight int64 `json:"weight"` //权重 +} + +//批量添加维度权重 +type addDepartDimenWeightAry struct { + // Hierarchy int64 `json:"hierarchy"` //层级 + Type int64 `json:"type"` //1:定性考核;2:定量考核 + Group string `json:"group"` //归属集团 + DepartmentId string `json:"parentid"` //接受考核部门 + Dimension []targetListType `json:"dimension"` //维度 +} + +//获取定量考核相关列表 +type getDaulEvalDuty struct { + assessmentmodel.EvaluationTarget +} diff --git a/gin_server_admin/api/v1/assessment/enter.go b/gin_server_admin/api/v1/assessment/enter.go index 7ec3503..6abe414 100644 --- a/gin_server_admin/api/v1/assessment/enter.go +++ b/gin_server_admin/api/v1/assessment/enter.go @@ -2,4 +2,5 @@ package assessment type ApiGroup struct { DutyHandle + EvaluationScheme } diff --git a/gin_server_admin/api/v1/assessment/programme.go b/gin_server_admin/api/v1/assessment/programme.go new file mode 100644 index 0000000..67b3a74 --- /dev/null +++ b/gin_server_admin/api/v1/assessment/programme.go @@ -0,0 +1,267 @@ +package assessment + +import ( + "encoding/json" + "fmt" + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +/* +考核方案制定 +*/ +func (a *EvaluationScheme) Index(c *gin.Context) { + outPut := commonus.MapOut() + response.Result(0, outPut, "测评方案获取成功", c) +} + +//添加考核方案 +func (a *EvaluationScheme) AddEvaluationScheme(c *gin.Context) { + var requestData AddScheme + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + if requestData.Title == "" { + response.Result(102, err, "请输入考核名称!", c) + return + } + if requestData.Group == 0 { + response.Result(103, err, "请选择归属集团!", c) + return + } + // if requestData.Department == "" { + // response.Result(104, err, "请选择被考核的部门(分厂)!", c) + // return + // } + if requestData.Dimension == "" { + response.Result(105, err, "请选择考核维度!", c) + return + } + if requestData.Project == "" { + response.Result(106, err, "请选择考核项目!", c) + return + } + if requestData.Weight == 0 { + response.Result(107, err, "请输入权重!", c) + return + } + if len(requestData.Content) < 1 { + response.Result(108, err, "请输入方案内容!", c) + return + } + if requestData.ExecutiveDepartment == 0 { + response.Result(109, err, "请选择执行部门(分厂)!", c) + return + } + + if len(requestData.Department) < 1 { + response.Result(111, err, "请选择被考核的部门(分厂)!", c) + return + } + var dataStruct dataLockStatistics + for _, departId := range requestData.Department { + syncProcess.Add(1) + go dataStruct.addEvaluationSchemeHandel(departId, requestData) + } + syncProcess.Wait() + returData := commonus.MapOut() + readDataMap, readBaoJinf := dataStruct.readMyDayData() + + returData["istrue"] = readDataMap + returData["isfalse"] = readBaoJinf + if len(readBaoJinf) > 0 { + response.Result(112, returData, "有未处理失败的数据!请检查", c) + } else { + response.Result(0, returData, "数据处理完成!", c) + } + +} + +//并发写入考核方案 +func (d *dataLockStatistics) addEvaluationSchemeHandel(departId int64, addData AddScheme) { + d.mutext.Lock() + defer d.mutext.Unlock() + // fmt.Printf("%v\n", departId) + juadgeOut := commonus.MapOut() + juadeIsTrue := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationScheme{}).Where("`es_evaluation_department` = ? AND `es_title` = ?", departId, addData.Title).First(&juadgeOut).Error + if juadeIsTrue == nil { + errMap := commonus.MapOut() + errMap["departid"] = departId + bfErr, bfCont := commonus.GetBranchFactory(departId) + if bfErr == true { + errMap["departmentname"] = bfCont.Name + } else { + errMap["departmentname"] = "" + } + errMap["title"] = addData.Title + errMap["msg"] = fmt.Sprintf("在%v中已经存在《%v》考核方案!请不要重复添加!", errMap["departmentname"], addData.Title) + d.dataErrMap = append(d.dataErrMap, errMap) + } else { + var saveData assessmentmodel.EvaluationScheme + saveData.Id = commonus.GetFileNumberEs() + saveData.Title = addData.Title + saveData.Group = addData.Group + saveData.EvaluationDepartment = departId + dimensionId, dimensionIdErr := strconv.ParseInt(addData.Dimension, 10, 64) + if dimensionIdErr == nil { + saveData.Dimension = dimensionId + } + projectId, projectIdErr := strconv.ParseInt(addData.Project, 10, 64) + if projectIdErr == nil { + saveData.Project = projectId + } + saveData.Weight = addData.Weight + saveData.ExecutiveDepartment = addData.ExecutiveDepartment + jsonCont, jsonContErr := json.Marshal(addData.Content) + if jsonContErr == nil { + saveData.Content = string(jsonCont) + } + saveData.AddTime = time.Now().Unix() + saveData.EiteTime = time.Now().Unix() + saveData.Maker = 1 + + saveDataes, isError := d.NewsAddRules(projectId, addData.Content) + if isError != true { + msg := commonus.MapOut() + msg["id"] = saveData.Id + msg["title"] = saveData.Title + msg["msg"] = "此考核方案的细则录入失败!请重新处理此方案" + d.dataMap = append(d.dataMap, msg) + } else { + jsonSection, jsonErr := json.Marshal(saveDataes) + if jsonErr != nil { + msg := commonus.MapOut() + msg["id"] = saveData.Id + msg["title"] = saveData.Title + msg["msg"] = "此考核方案的细则录入失败!请重新处理此方案" + d.dataMap = append(d.dataMap, msg) + } else { + saveData.Content = string(jsonSection) + juSaveDataErr := global.GVA_DB_Performanceappraisal.Create(&saveData) + if juSaveDataErr == nil { + msg := commonus.MapOut() + msg["id"] = saveData.Id + msg["title"] = saveData.Title + msg["msg"] = "此考核方案录入成功!" + d.dataMap = append(d.dataMap, msg) + } else { + msg := commonus.MapOut() + msg["id"] = saveData.Id + msg["title"] = saveData.Title + msg["msg"] = "此考核方案录入失败!" + d.dataMap = append(d.dataMap, msg) + } + } + } + + } + syncProcess.Done() +} + +//判断要新增的考核细则 +func (d *dataLockStatistics) NewsAddRules(parentId int64, dataAry []schemeContent) (rulesSaveData []map[string]interface{}, isTrue bool) { + isTrue = false + for _, val := range dataAry { + writeData := commonus.MapOut() + if val.Id == "" { + writeId := commonus.GetFileNumberEs() + writeData["dc_id"] = writeId + writeData["dc_title"] = val.Title + writeData["dc_time"] = time.Now().Unix() + writeData["dc_state"] = 1 + writeData["dc_parent"] = parentId + writeData["dc_user_type"] = 1 + writeData["dc_dump"] = val.Section + writeData["dc_type"] = val.Type + writeData["dc_unit"] = val.Unittitle + writeData["dc_cycle"] = val.Cycle + writeData["dc_cycleattr"] = val.Cycleattr + writeData["dc_cont"] = val.Content + juadgeOut := commonus.MapOut() + juadgeAddDataErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Where("`dc_parent` = ? AND `dc_title` = ?", parentId, val.Title).First(&juadgeOut).Error + if juadgeAddDataErr == nil { + rulesSaveData = append(rulesSaveData, juadgeOut) + } else { + saveDataErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Create(&writeData).Error + if saveDataErr == nil { + rulesSaveData = append(rulesSaveData, writeData) + } else { + msg := commonus.MapOut() + msg["id"] = val.Id + msg["title"] = val.Title + msg["msg"] = "此考核细则写入失败!请重新处理此细则" + d.dataErrMap = append(d.dataErrMap, msg) + } + + } + } else { + dataOut := commonus.MapOut() + juadgeErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Where("`dc_id` = ?", val.Id).First(&dataOut).Error + if juadgeErr == nil { + rulesSaveData = append(rulesSaveData, dataOut) + } else { + writeId := commonus.GetFileNumberEs() + writeData["dc_id"] = writeId + writeData["dc_title"] = val.Title + writeData["dc_time"] = time.Now().Unix() + writeData["dc_state"] = 1 + writeData["dc_parent"] = parentId + writeData["dc_user_type"] = 1 + writeData["dc_dump"] = val.Section + writeData["dc_type"] = val.Type + writeData["dc_unit"] = val.Unittitle + writeData["dc_cycle"] = val.Cycle + writeData["dc_cycleattr"] = val.Cycleattr + writeData["dc_cont"] = val.Content + + saveDataErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Create(&writeData).Error + if saveDataErr == nil { + rulesSaveData = append(rulesSaveData, writeData) + } else { + msg := commonus.MapOut() + msg["id"] = val.Id + msg["title"] = val.Title + msg["msg"] = "此考核细则写入失败!请重新处理此细则" + d.dataErrMap = append(d.dataErrMap, msg) + } + } + } + } + if len(rulesSaveData) > 0 { + isTrue = true + } + return +} + +// { +// "title": "2022年恒信高科01号考核方案", +// "group": 3, +// "department": "[1,2,3,4]", +// "dimension": "1644884869457674", +// "project": "16448868625724229", +// "weight": 30, +// "ExecutiveDepartment": 15, +// "content": [ +// { +// "id": "16448933707009289", +// "title": "各区域卫生保持情况;", +// "type": 1, +// "parentId": "16448868625724229", +// "section": "15", +// "unittitle": "分", +// "cycle": 3, +// "cycleattr": 1, +// "content": "区域卫生保持不到位、打扫不及时根据情况扣除0.1-0.3分。" +// } +// ] +// } + +// {"title":"2022年恒信高科01号考核方案","group":3,"department":[1,2,3,4],"dimension":"1644884869457674","project":"16448868625724229","weight":30,"ExecutiveDepartment":15,"content":[{"id":"16448933707009289","title":"各区域卫生保持情况;","type":1,"parentId":"16448868625724229","section":"15","unittitle":"\u5206","cycle":3,"cycleattr":1,"content":"区域卫生保持不到位、打扫不及时根据情况扣除0.1-0.3分。"}]} diff --git a/gin_server_admin/api/v1/assessment/qualitative_evaluation.go b/gin_server_admin/api/v1/assessment/qualitative_evaluation.go new file mode 100644 index 0000000..c25bf50 --- /dev/null +++ b/gin_server_admin/api/v1/assessment/qualitative_evaluation.go @@ -0,0 +1,801 @@ +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/gin-gonic/gin" +) + +/* +性质考核 +*/ +//添加定性考核 +func (d *DutyHandle) AddQualEval(c *gin.Context) { + var requestData AddQualEval + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Group == "" { + response.Result(102, err, "请选择归属集团", c) + return + } + if len(requestData.AcceptDepartmentId) <= 0 { + response.Result(102, err, "请选择接受考核的部门!", c) + return + } + if requestData.Dimension == "" { + response.Result(102, err, "请选择考核维度", c) + return + } + if requestData.Target == "" { + response.Result(102, err, "请选择考核指标", c) + return + } + if requestData.TargetSun == "" { + response.Result(102, err, "请选择考核指标子栏目", c) + return + } + if len(requestData.EvaluationList) <= 0 { + response.Result(102, err, "请添加测评详情!", c) + return + } + var synergeticProcess dataLockStatistics + for _, deparmentId := range requestData.AcceptDepartmentId { + addDepartDimension(requestData.Group, deparmentId, requestData.Dimension, 1) + syncProcess.Add(1) + go synergeticProcess.addQualEvalList(deparmentId, requestData) + } + syncProcess.Wait() + returData := commonus.MapOut() + readDataMap, readBaoJinf := synergeticProcess.readMyDayData() + + returData["istrue"] = readDataMap + returData["isfalse"] = readBaoJinf + if len(readBaoJinf) > 0 && len(readDataMap) == 0 { + response.Result(112, returData, "有未处理失败的数据!请检查", c) + } else if len(readBaoJinf) > 0 && len(readDataMap) > 0 { + response.Result(1, returData, "有部门数据处理失败!请针对性输入!", c) + } else { + response.Result(0, returData, "数据处理完成!", c) + } +} + +func (d *dataLockStatistics) addQualEvalList(departmentId string, addData AddQualEval) { + d.mutext.Lock() + defer d.mutext.Unlock() + var saveDataAry []assessmentmodel.QualitativeEvaluation + for _, v := range addData.EvaluationList { + var saveData assessmentmodel.QualitativeEvaluation + juadgeMap := commonus.MapOut() + juadgeInsetErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ? AND `qe_target_sun` = ? AND `qe_detailed_target` = ?", departmentId, addData.Dimension, addData.Target, addData.TargetSun, v.DetailedTarget).First(&juadgeMap).Error + if juadgeInsetErr != nil { + groupInt, groupIntErr := strconv.ParseInt(addData.Group, 10, 64) + if groupIntErr == nil { + saveData.Group = groupInt + } + saveData.Type = addData.Type + + departidInt, departinIntErr := strconv.ParseInt(v.DepartmentId, 10, 64) + // if departidInt == 0 { + // saveData.DepartmentId = departidInt + // } + if departinIntErr == nil { + saveData.DepartmentId = departidInt + } + + dimensionInt, departinIntErr := strconv.ParseInt(addData.Dimension, 10, 64) + if departinIntErr == nil { + saveData.Dimension = dimensionInt + } + + targetInt, targetIntErr := strconv.ParseInt(addData.Target, 10, 64) + if targetIntErr == nil { + saveData.Target = targetInt + } + + targetSunInt, targetSunIntErr := strconv.ParseInt(addData.TargetSun, 10, 64) + if targetSunIntErr == nil { + saveData.TargetSun = targetSunInt + } + + detailedTargetInt, detailedTargetIntErr := strconv.ParseInt(v.DetailedTarget, 10, 64) + if detailedTargetIntErr == nil { + saveData.DetailedTarget = detailedTargetInt + } + + saveData.Unit = v.Unit + saveData.ReferenceScore = v.ReferenceScore + saveData.Cycles = v.Cycles + saveData.CycleAttres = v.CycleAttres + + saveData.State = 1 + saveData.Addtime = time.Now().Unix() + saveData.Eitetime = time.Now().Unix() + + departmentIdInt, departmentIdIntErr := strconv.ParseInt(departmentId, 10, 64) + if departmentIdIntErr == nil { + saveData.AcceptEvaluation = departmentIdInt + } + saveData.Operator = strings.Join(v.Operator, ",") + // operatorInt, operatorIntErr := strconv.ParseInt(v.Operator, 10, 64) + // if operatorIntErr == nil { + // saveData.Operator = strings.Join(v.Operator,",") + // } + // saveData.AcceptEvaluation = departmentIdInt + + saveDataAry = append(saveDataAry, saveData) + msg := commonus.MapOut() + msg["msg"] = saveData + d.dataMap = append(d.dataMap, msg) + } else { + detailedTargetInts, _ := strconv.ParseInt(v.DetailedTarget, 10, 64) + dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(detailedTargetInts) + + groupInt, _ := strconv.ParseInt(addData.Group, 10, 64) + departidInt, _ := strconv.ParseInt(departmentId, 10, 64) + _, groupCont := commonus.GetGroupCont(groupInt) + _, deparConCont := commonus.GetBranchFactory(departidInt) + + msg := commonus.MapOut() + if dtIsTrue == true { + msg["msg"] = fmt.Sprintf("%v-%v《%v》考核细则录入失败!请重新处理此方案!->ID:%v", groupCont.Name, deparConCont.Name, dtCont.Title, v.DetailedTarget) + } else { + msg["msg"] = fmt.Sprintf("%v-%v《%v》考核细则录入失败!请重新处理此方案", groupCont.Name, deparConCont.Name, v.DetailedTarget) + } + + d.dataErrMap = append(d.dataErrMap, msg) + } + } + if len(saveDataAry) > 0 { + addErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error + if addErr != nil { + msg := commonus.MapOut() + msg["data"] = saveDataAry + msg["msg"] = fmt.Sprintf("《%v》考核维度录入失败!请重新处理此方案", addData.Dimension) + d.dataErrMap = append(d.dataErrMap, msg) + } + } + syncProcess.Done() +} + +//定性考核列表 +func (d *DutyHandle) GetQualEvalList(c *gin.Context) { + var requestData SelectQualEval + c.ShouldBindJSON(&requestData) + //归档集团 + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_group").Where("qe_type = 1").Group("qe_group") + if requestData.Group != "" { + gormDb = gormDb.Having("qe_group = ?", requestData.Group) + } + var fileAry []int64 + listErr := gormDb.Find(&fileAry).Error + if listErr != nil { + response.Result(101, listErr, "没有数据!", c) + return + } + if len(fileAry) < 1 { + response.Result(102, listErr, "没有数据!", c) + return + } + var aualEvalArrtAry []QualEvalListOut + for _, v := range fileAry { + var aualEvalArrtCont QualEvalListOut + groupErr, groupCont := commonus.GetGroupCont(v) + if groupErr == true { + aualEvalArrtCont.Id = strconv.FormatInt(v, 10) + aualEvalArrtCont.Name = groupCont.Name + //归档分厂-部室 + departAry, departAryErr := deparmentList(v, requestData.DepartmentId) + if departAryErr == true { + //分厂部室列表 + aualEvalArrtCont.Child = departAry + } + //组合集团 + aualEvalArrtAry = append(aualEvalArrtAry, aualEvalArrtCont) + } + } + response.Result(0, aualEvalArrtAry, "查询完成!", c) +} + +//归档部门 +func deparmentList(groupID int64, departmentIDStr string) (contentList []QualEvalListOutDepart, isTrue bool) { + isTrue = false + gormDbDepart := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_accept_evaluation").Where("qe_type = 1 AND `qe_group` = ?", groupID).Group("qe_accept_evaluation") + if departmentIDStr != "" { + gormDbDepart = gormDbDepart.Having("qe_accept_evaluation = ?", departmentIDStr) + } + var fileDepartAry []int64 + listDepartErr := gormDbDepart.Find(&fileDepartAry).Error + if listDepartErr == nil { + for _, v := range fileDepartAry { + deparConErr, deparConCont := commonus.GetBranchFactory(v) + var deparCont QualEvalListOutDepart + if deparConErr == true { + deparCont.Id = strconv.FormatInt(v, 10) + deparCont.Name = deparConCont.Name + //归档维度 + dimensionAry, dimensionAryErr := dimensionList(groupID, v) + if dimensionAryErr == true { + //维度列表 + deparCont.Child = dimensionAry + } + } + //组合分厂部室 + contentList = append(contentList, deparCont) + } + + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//归档维度 +func dimensionList(groupID, departmentID int64) (contentList []DimensionList, isTrue bool) { + isTrue = false + var fileDimensionAry []int64 + listDimensionErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_dimension").Where("qe_type = 1 AND `qe_group` = ? AND `qe_accept_evaluation` = ?", groupID, departmentID).Group("qe_dimension").Find(&fileDimensionAry).Error + if listDimensionErr == nil { + for _, v := range fileDimensionAry { + dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(v) + var dimenCont DimensionList + if dutyClassErr == true { + dimenCont.Id = strconv.FormatInt(v, 10) + dimenCont.Name = dutyClassCont.Title + //归档指标 + targerAry, targerAryErr := targetList(groupID, departmentID, v) + if targerAryErr == true { + //定性考核指标列表 + dimenCont.Child = targerAry + } + //组合维度 + contentList = append(contentList, dimenCont) + } + } + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//查询归档定性指标 +func targetList(groupID, departmentID, dimension int64) (contentList []TargetList, isTrue bool) { + isTrue = false + var fileTargetAry []int64 + listTargetErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_target").Where("qe_type = 1 AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ?", groupID, departmentID, dimension).Group("qe_target").Find(&fileTargetAry).Error + if listTargetErr != nil { + return + } + for _, tar_v := range fileTargetAry { + var targetCont TargetList + targetInfo, targetErr := commonus.GetTargetInfo(tar_v) + if targetErr == true { + targetCont.Id = strconv.FormatInt(tar_v, 10) + targetCont.Name = targetInfo.Title + //归档指标子栏目 + targerSunAry, targerSunAryErr := targetSunList(groupID, departmentID, dimension, tar_v) + if targerSunAryErr == true { + targetCont.Child = targerSunAry + } + //定性考核指标维度 + contentList = append(contentList, targetCont) + } + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//查询归档定性子栏目 +func targetSunList(groupID, departmentID, dimension, targetId int64) (contentList []TargetSunList, isTrue bool) { + isTrue = false + var fileTargetSunAry []int64 + listTargetSunErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_target_sun").Where("qe_type = 1 AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ?", groupID, departmentID, dimension, targetId).Group("qe_target_sun").Find(&fileTargetSunAry).Error + if listTargetSunErr != nil { + return + } + for _, v := range fileTargetSunAry { + info, infoErr := commonus.GetQualitativeTargetInfo(v) + if infoErr == true { + var content TargetSunList + content.Id = strconv.FormatInt(v, 10) + content.Name = info.Title + listAry, listAryErr := taskDetailsList(groupID, departmentID, dimension, targetId, v) + if listAryErr == true { + content.Child = listAry + } + + contentList = append(contentList, content) + } + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//考核细则 +func taskDetailsList(groupID, departmentID, dimension, targetId, targetSunId int64) (contentList []taskDetails, isTrue bool) { + isTrue = false + var taskDetailsCont []taskDatalsContOut + listTargetSunErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id", "qe_detailed_target", "qe_unit", "qe_reference_score", "qe_cycle", "qe_cycleattr", "qe_state").Where("qe_type = 1 AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ? AND `qe_target_sun` = ? AND `qe_state` = 1", groupID, departmentID, dimension, targetId, targetSunId).Find(&taskDetailsCont).Error + if listTargetSunErr != nil { + return + } + for _, v := range taskDetailsCont { + var content taskDetails + content.Id = strconv.FormatInt(v.Id, 10) + dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget) + if dtIsTrue == true { + content.Name = dtCont.Title + content.Content = dtCont.Content + } + content.Unit = v.Unit + content.ReferenceScore = v.ReferenceScore + content.Cycles = v.Cycles + content.CycleAttres = v.CycleAttres + content.State = v.State + + contentList = append(contentList, content) + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//获取考核指标 +func (d *DutyHandle) GetTaskTarget(c *gin.Context) { + var requestData taskTargetList + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Type == 0 { + response.Result(101, requestData, "请选择您操作的时定性指标还是定量指标!", c) + return + } + var contAry []assessmentmodel.EvaluationTarget + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Where("et_state = 1 AND `et_type` = ?", requestData.Type) + + // if requestData.Group == "" && len(requestData.DepartMent) < 1 { + // gormDb = gormDb.Where("`et_visible_group` = '' AND `et_visible_range` = '' AND `et_share` = 1") + // } else if requestData.Group != "" && len(requestData.DepartMent) < 1 { + // gormDb = gormDb.Where("FIND_IN_SET(?,`et_visible_group`) OR (`et_visible_group` = '' AND `et_visible_range` = '')", requestData.Group) + // } else { + + // } + if len(requestData.DepartMent) < 1 { + gormDb = gormDb.Where("`et_share` = 1") + } else { + var sqlOrStr string = "" + for s_i, s_v := range requestData.DepartMent { + 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) + } + } + sqlOrStr = fmt.Sprintf("`et_share` = 1 OR (`et_share` = 2 AND (%v))", sqlOrStr) + gormDb = gormDb.Where(sqlOrStr) + } + listErr := gormDb.Find(&contAry).Error + if listErr != nil { + response.Result(201, listErr, "没有相关数据!", c) + return + } + response.Result(0, contAry, "数据获取成功!", c) +} + +//获取定性指标子栏目 +func (d *DutyHandle) GetTaskTargetSun(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 contAry []assessmentmodel.QualitativeTarget + contErr := global.GVA_DB_Performanceappraisal.Where("q_state = 1 AND `q_parent_id` = ?", requestData.Id).Find(&contAry).Error + if contErr != nil { + response.Result(201, contErr, "没有相关数据!", c) + return + } + response.Result(0, contAry, "数据获取成功!", c) +} + +//根据条件获取考核详情 +func (d *DutyHandle) GetTaskTargetContAry(c *gin.Context) { + var requestData SelectTaskTarget + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Type == 0 { + response.Result(102, err, "位置指标性质!", c) + return + } + if requestData.TargetId == "" { + response.Result(102, err, "请选择指标!", c) + return + } + if requestData.Type == 1 && requestData.TargetSunId == "" { + response.Result(102, err, "未知子栏目!请选择", c) + return + } + var contAry []assessmentmodel.DetailedTarget + gormDb := global.GVA_DB_Performanceappraisal.Where("dt_state = 1 AND `dt_parentid` = ?", requestData.TargetId) + if requestData.TargetSunId != "" { + gormDb = gormDb.Where("`dt_parentid_sun` = ?", requestData.TargetSunId) + } + contErr := gormDb.Find(&contAry).Error + if contErr != nil { + response.Result(201, contErr, "没有相关数据!", c) + return + } + var targetInfo assessmentmodel.EvaluationTarget + targetInfoErr := global.GVA_DB_Performanceappraisal.Where("`et_id` = ?", requestData.TargetId).First(&targetInfo).Error + var outContList []taskDetailsLinkage + for _, v := range contAry { + var outCont taskDetailsLinkage + outCont.Id = strconv.FormatInt(v.Id, 10) + outCont.Name = v.Title + outCont.Content = v.Content + outCont.State = v.State + if targetInfoErr == nil { + outCont.Unit = targetInfo.Uniteing + // outCont.ReferenceScore = v.Content + outCont.Cycles = targetInfo.Cycles + outCont.CycleAttres = targetInfo.CycleAttres + if targetInfo.Report != "" { + userKeyAry := strings.Split(targetInfo.Report, ",") + if len(userKeyAry) > 0 { + outCont.UserList = userKeyAry + // for _, u_v := range userKeyAry { + // 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 + // outCont.UserListAry = append(outCont.UserListAry, userCont) + // } + // } + } + } + } + + outContList = append(outContList, outCont) + } + response.Result(0, outContList, "数据获取成功!", c) +} + +//添加定性考核权重 +func (d *DutyHandle) AddQualEvalWeight(c *gin.Context) { + var requestData addDepartmentDimensionWeight + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Hierarchy == 0 { + response.Result(101, err, "请指定当前添加的是维度权重还是指标权重!", c) + return + } + if requestData.Type == 0 { + response.Result(101, err, "请指定当前添加的是定性考核权重还是定量考核权重!", c) + return + } + if requestData.Group == "" { + response.Result(101, err, "请指定当前为哪个集团添加!", c) + return + } + if requestData.DepartmentId == "" { + response.Result(101, err, "请指定当前为哪个分厂或部室添加!", c) + return + } + if requestData.Dimension == "" { + response.Result(101, err, "请指定当前为哪个维度添加!", c) + return + } + if requestData.Hierarchy > 1 && requestData.TargetId == "" { + response.Result(101, err, "请指定当前为哪个指标添加!", c) + return + } + //判断当前权重是否写入 + judgeAry := commonus.MapOut() + gromDbJudeg := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_hierarchy` = ? AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", requestData.Hierarchy, requestData.Type, requestData.Group, requestData.DepartmentId, requestData.Dimension) + if requestData.Hierarchy > 1 && requestData.TargetId != "" { + gromDbJudeg = gromDbJudeg.Where("`ddw_target` = ?", requestData.TargetId) + } + scoreJudegErr := gromDbJudeg.First(&judgeAry).Error + if scoreJudegErr == nil { + response.Result(101, err, "此权重项已经添加!请不要重复添加!", c) + return + } + + //获取当前条件下的权重总和 + var sumScore int64 = 0 + gromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_hierarchy` = ? AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", requestData.Hierarchy, requestData.Type, requestData.Group, requestData.DepartmentId, requestData.Dimension) + if requestData.Hierarchy > 1 && requestData.TargetId != "" { + gromDb = gromDb.Where("`ddw_target` = ?", requestData.TargetId) + } + scoreErr := gromDb.Pluck("COALESCE(SUM(ddw_weight), 0) as rescore", &sumScore).Error + if scoreErr != nil { + sumScore = 0 + } + resultScore := 10000 - sumScore*100 + if resultScore-(requestData.Weight*100) < 0 { + msgStr := fmt.Sprintf("权重超出剩余可分配权重最大值!当前可使用的权重为:(%v)。您要写入的权重为:《%v》。请您合理分配权重!", resultScore/100, requestData.Weight) + response.Result(101, err, msgStr, c) + return + } + var saveData assessmentmodel.DepartmentDimensionWeight + saveData.Type = requestData.Type + groupId, _ := strconv.ParseInt(requestData.Group, 10, 64) + saveData.Group = groupId + departmentId, _ := strconv.ParseInt(requestData.DepartmentId, 10, 64) + saveData.DepartmentId = departmentId + dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) + saveData.Dimension = dimensionId + targetId, _ := strconv.ParseInt(requestData.TargetId, 10, 64) + saveData.Target = targetId + saveData.Weight = requestData.Weight * 100 + saveData.Addtime = time.Now().Unix() + saveData.Hierarchy = requestData.Hierarchy + addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if addErr != nil { + response.Result(101, addErr, "数据写入失败!", c) + return + } + response.Result(0, saveData, "数据写入成功!", c) +} + +//批量添加指标权重 +func (d *DutyHandle) AddQualEvalDimWeightBatch(c *gin.Context) { + var requestData addDepartDimensionWeightAry + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + + if requestData.Type == 0 { + response.Result(102, err, "请指定当前添加的是定性考核权重还是定量考核权重!", c) + return + } + if requestData.Group == "" { + response.Result(103, err, "请指定当前为哪个集团添加!", c) + return + } + if requestData.DepartmentId == "" { + response.Result(104, err, "请指定当前为哪个分厂或部室添加!", c) + return + } + if requestData.Dimension == "" { + response.Result(105, err, "请指定当前为哪个维度添加!", c) + return + } + var targetIdAry []int64 + if len(requestData.TargetList) < 1 { + response.Result(106, err, "请指定当前为哪些指标添加!", c) + return + } else { + var judgeSumScoer int64 = 0 + for _, t_v := range requestData.TargetList { + judgeSumScoer = judgeSumScoer + t_v.Weight + tarIdInt, tarIdIntErr := strconv.ParseInt(t_v.Id, 10, 64) + if tarIdIntErr == nil { + targetIdAry = append(targetIdAry, tarIdInt) + } + } + if 10000-judgeSumScoer*100 < 0 { + response.Result(107, judgeSumScoer, "权重综合超过了限定值100!请重新输入", c) + return + } + } + //判断是否已经存在其他的已添加选项 + var sumScoreNotIn int64 = 0 + gromDbNotIn := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_hierarchy` = 2 AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", requestData.Type, requestData.Group, requestData.DepartmentId, requestData.Dimension) + if len(targetIdAry) > 0 { + gromDbNotIn = gromDbNotIn.Where("`ddw_target` NOT IN ?", targetIdAry) + } + scoreNotInErr := gromDbNotIn.Pluck("COALESCE(SUM(ddw_weight), 0) as rescore", &sumScoreNotIn).Error + if scoreNotInErr != nil { + sumScoreNotIn = 0 + } + sumScoreNotIn = sumScoreNotIn * 100 + + //获取当前维度下的指标权重总和 + var sumScore int64 = 0 + gromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_hierarchy` = 2 AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", requestData.Type, requestData.Group, requestData.DepartmentId, requestData.Dimension) + if len(targetIdAry) > 0 { + gromDb = gromDb.Where("`ddw_target` IN ?", targetIdAry) + } + scoreErr := gromDb.Pluck("COALESCE(SUM(ddw_weight), 0) as rescore", &sumScore).Error + if scoreErr != nil { + sumScore = 0 + } + sumScore = sumScore * 100 + if sumScore == 0 && sumScoreNotIn == 0 { + var saveData []assessmentmodel.DepartmentDimensionWeight + for _, v := range requestData.TargetList { + var saveDataCont assessmentmodel.DepartmentDimensionWeight + + saveDataCont.Type = requestData.Type + groupId, _ := strconv.ParseInt(requestData.Group, 10, 64) + saveDataCont.Group = groupId + departmentId, _ := strconv.ParseInt(requestData.DepartmentId, 10, 64) + saveDataCont.DepartmentId = departmentId + dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) + saveDataCont.Dimension = dimensionId + targetId, _ := strconv.ParseInt(v.Id, 10, 64) + saveDataCont.Target = targetId + saveDataCont.Weight = v.Weight * 100 + saveDataCont.Addtime = time.Now().Unix() + saveDataCont.Hierarchy = 2 + // addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + saveData = append(saveData, saveDataCont) + } + if len(saveData) > 0 { + addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if addErr != nil { + response.Result(108, addErr, "数据写入失败", c) + return + } + } + } else { + var depDimIdAry []int64 + gromDbDim := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Select("ddw_id").Where("`ddw_hierarchy` = 2 AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", requestData.Type, requestData.Group, requestData.DepartmentId, requestData.Dimension) + gromDbDimErr := gromDbDim.Where("`ddw_target` NOT IN ?", targetIdAry).Find(&depDimIdAry).Error + if gromDbDimErr == nil { + global.GVA_DB_Performanceappraisal.Where("`ddw_id` IN ?", depDimIdAry).Delete(&assessmentmodel.DepartmentDimensionWeight{}) + } + var saveData []assessmentmodel.DepartmentDimensionWeight + + for _, v := range requestData.TargetList { + var ddwId int64 + ddwIdErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Select("ddw_id").Where("`ddw_hierarchy` = 2 AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ?", requestData.Type, requestData.Group, requestData.DepartmentId, requestData.Dimension, v.Id).First(&ddwId).Error + if ddwIdErr == nil { + saveMap := commonus.MapOut() + saveMap["ddw_weight"] = v.Weight * 100 + saveMap["ddw_time"] = time.Now().Unix() + ddwIdEiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_id` = ?", ddwId).Updates(saveMap).Error + if ddwIdEiteErr == nil { + } + } else { + var saveDataCont assessmentmodel.DepartmentDimensionWeight + saveDataCont.Type = requestData.Type + groupId, _ := strconv.ParseInt(requestData.Group, 10, 64) + saveDataCont.Group = groupId + departmentId, _ := strconv.ParseInt(requestData.DepartmentId, 10, 64) + saveDataCont.DepartmentId = departmentId + dimensionId, _ := strconv.ParseInt(requestData.Dimension, 10, 64) + saveDataCont.Dimension = dimensionId + targetId, _ := strconv.ParseInt(v.Id, 10, 64) + saveDataCont.Target = targetId + saveDataCont.Weight = v.Weight * 100 + saveDataCont.Addtime = time.Now().Unix() + saveDataCont.Hierarchy = 2 + // addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + saveData = append(saveData, saveDataCont) + } + } + if len(saveData) > 0 { + addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if addErr != nil { + response.Result(108, addErr, "数据写入失败", c) + return + } + } + } + response.Result(0, sumScore, "数据写入成功", c) +} + +//批量添加维度权重 +func (d *DutyHandle) AddDimWeightBatch(c *gin.Context) { + var requestData addDepartDimenWeightAry + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + + if requestData.Type == 0 { + response.Result(102, err, "请指定当前添加的是定性考核权重还是定量考核权重!", c) + return + } + if requestData.Group == "" { + response.Result(103, err, "请指定当前为哪个集团添加!", c) + return + } + if requestData.DepartmentId == "" { + response.Result(104, err, "请指定当前为哪个分厂或部室添加!", c) + return + } + var targetIdAry []int64 + if len(requestData.Dimension) < 1 { + response.Result(106, err, "请指定当前为哪些维度添加!", c) + return + } else { + var judgeSumScoer int64 = 0 + for _, t_v := range requestData.Dimension { + judgeSumScoer = judgeSumScoer + t_v.Weight + tarIdInt, tarIdIntErr := strconv.ParseInt(t_v.Id, 10, 64) + if tarIdIntErr == nil { + targetIdAry = append(targetIdAry, tarIdInt) + } + } + if 10000-judgeSumScoer*100 < 0 { + response.Result(105, judgeSumScoer, "权重综合超过了限定值100!请重新输入", c) + return + } + } + + var depDimIdAry []int64 + gromDbDim := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Select("ddw_id").Where("`ddw_hierarchy` = 1 AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ?", requestData.Type, requestData.Group, requestData.DepartmentId) + gromDbDimErr := gromDbDim.Find(&depDimIdAry).Error + if gromDbDimErr == nil { + global.GVA_DB_Performanceappraisal.Where("`ddw_dimension` IN ?", depDimIdAry).Delete(&assessmentmodel.DepartmentDimensionWeight{}) + } + var saveData []assessmentmodel.DepartmentDimensionWeight + + for _, v := range requestData.Dimension { + var ddwId int64 + ddwIdErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Select("ddw_id").Where("`ddw_hierarchy` = 1 AND `ddw_type` = ? AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", requestData.Type, requestData.Group, requestData.DepartmentId, v.Id).First(&ddwId).Error + if ddwIdErr == nil { + saveMap := commonus.MapOut() + saveMap["ddw_weight"] = v.Weight * 100 + saveMap["ddw_time"] = time.Now().Unix() + ddwIdEiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_id` = ?", ddwId).Updates(saveMap).Error + if ddwIdEiteErr == nil { + } + } else { + var saveDataCont assessmentmodel.DepartmentDimensionWeight + saveDataCont.Type = requestData.Type + groupId, _ := strconv.ParseInt(requestData.Group, 10, 64) + saveDataCont.Group = groupId + departmentId, _ := strconv.ParseInt(requestData.DepartmentId, 10, 64) + saveDataCont.DepartmentId = departmentId + dimensionId, _ := strconv.ParseInt(v.Id, 10, 64) + saveDataCont.Dimension = dimensionId + saveDataCont.Target = 0 + saveDataCont.Weight = v.Weight * 100 + saveDataCont.Addtime = time.Now().Unix() + saveDataCont.Hierarchy = 1 + // addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + saveData = append(saveData, saveDataCont) + } + } + if len(saveData) > 0 { + addErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if addErr != nil { + response.Result(108, addErr, "数据写入失败", c) + return + } + } + response.Result(0, depDimIdAry, "数据写入成功", c) +} diff --git a/gin_server_admin/api/v1/assessment/qualitative_target.go b/gin_server_admin/api/v1/assessment/qualitative_target.go new file mode 100644 index 0000000..69d9eef --- /dev/null +++ b/gin_server_admin/api/v1/assessment/qualitative_target.go @@ -0,0 +1,269 @@ +package assessment + +import ( + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +/* +定性指标子栏目 +*/ + +//添加定性指标子栏目 +func (d *DutyHandle) AddQualitativeTarget(c *gin.Context) { + var requestData addAttTarget + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, requestData, "数据获取失败!", c) + return + } + if requestData.Title == "" { + response.Result(102, err, "请输入定性指标子栏目名称!", c) + return + } + if requestData.ParentId == "" { + response.Result(102, err, "请选择定性指标子栏目归属", c) + return + } + juadgeMap := commonus.MapOut() + juadgeTitleErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("q_title").Where("`q_title` = ? AND `q_parent_id` = ?", requestData.Title, requestData.ParentId).First(&juadgeMap).Error + if juadgeTitleErr == nil { + response.Result(102, err, "此定性指标子栏目已经存在!请不要重复录入!", c) + return + } + var saveData assessmentmodel.QualitativeTarget + saveData.Title = requestData.Title + parentId, parentIdErr := strconv.ParseInt(requestData.ParentId, 10, 64) + if parentIdErr != nil { + response.Result(102, err, "请选择定性指标子栏目归属", c) + return + } + saveData.ParentId = parentId + saveData.State = 1 + saveData.AddTime = time.Now().Unix() + dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if dutyInfoErr != nil { + response.Result(106, saveData, "数据写入失败!", c) + } else { + response.Result(0, saveData, "数据写入成功!", c) + } +} + +//获取定性指标子栏目列表 +func (d *DutyHandle) GetQualitativeTargetList(c *gin.Context) { + var requestData attTargetList + 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.QualitativeTarget{}) + if requestData.ParentId != "" { + gormDb = gormDb.Where("`q_parent_id` = ?", requestData.ParentId) + } + if requestData.State != 0 { + gormDb = gormDb.Where("`q_state` = ?", requestData.State) + } else { + gormDb = gormDb.Where("`q_state` IN (1,2)") + } + if requestData.Title != "" { + gormDb = gormDb.Where("(`q_title` LIKE ?)", "%"+requestData.Title+"%") + } + var total int64 + totalErr := gormDb.Count(&total).Error + if totalErr != nil { + total = 0 + } + + // response.Result(0, requestData, "查询成功!", c) + var dataList []assessmentmodel.QualitativeTarget + dataListerr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Find(&dataList).Error + if dataListerr != nil { + response.Result(103, dataList, "数据获取失败!", c) + return + } + var outList []attTargetListOut + for _, val := range dataList { + var outContent attTargetListOut + outContent.Id = val.Id + outContent.Title = val.Title + outContent.ParentId = val.ParentId + outContent.State = val.State + outContent.AddTime = val.AddTime + outContent.OutId = strconv.FormatInt(val.Id, 10) + outContent.ParentIdStr = strconv.FormatInt(val.ParentId, 10) + parentCont, parentIsTrue := commonus.GetTargetInfo(val.ParentId) + if parentIsTrue == true { + outContent.ParentTitle = parentCont.Title + } + outList = append(outList, outContent) + } + countSum := len(outList) + printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, outList) + response.Result(0, printData, "查询成功!", c) +} + +//编辑指标数据处理 +func eiteQualTargetInfoes(saveId int64, saveData map[string]interface{}) (isTrue bool, infoErr error) { + isTrue = false + infoErr = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` = ?", saveId).Updates(saveData).Error + if infoErr != nil { + return + } + isTrue = true + return +} + +//获取定性测评指标子栏目详细内容 +func (d *DutyHandle) GetQualTargetInfo(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 attTargetListOut + contErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("q_id", "q_title", "q_parent_id", "q_state", "q_time").Where("`q_id` = ?", requestData.Id).First(&systemEvalCont).Error + if contErr != nil { + response.Result(103, err, "数据获取失败!", c) + return + } + systemEvalCont.ParentIdStr = strconv.FormatInt(systemEvalCont.ParentId, 10) + systemEvalCont.OutId = strconv.FormatInt(systemEvalCont.Id, 10) + parentCont, parentIsTrue := commonus.GetTargetInfo(systemEvalCont.ParentId) + if parentIsTrue == true { + systemEvalCont.ParentTitle = parentCont.Title + } + response.Result(0, systemEvalCont, "数据获取成功!", c) +} + +//修改定性指标子栏目 +func (d *DutyHandle) EiteQualTargetInfo(c *gin.Context) { + var requestData eiteAttTarget + 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 oldTargetCont assessmentmodel.QualitativeTarget + targetInfoErr := global.GVA_DB_Performanceappraisal.Where("`q_id` = ?", requestData.Id).First(&oldTargetCont).Error + if targetInfoErr != nil { + response.Result(102, err, "该指标不存在!请检查您的参数!", c) + return + } + + saveData := commonus.MapOut() + if requestData.Title == "" { + response.Result(102, err, "请输入指标名称!", c) + return + } else { + if requestData.Title != oldTargetCont.Title { + if requestData.ParentId != "" { + judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`q_title` = ? AND `q_parent_id` = ?", requestData.Title, requestData.ParentId).First(&oldTargetCont).Error + if judgeTargetErr == nil { + response.Result(102, err, "该指标子栏目名称已经存在!请不要重复输入!", c) + return + } + } else { + judgeTargetErr := global.GVA_DB_Performanceappraisal.Where("`q_title` = ? AND `q_parent_id` = ?", requestData.Title, oldTargetCont.ParentId).First(&oldTargetCont).Error + if judgeTargetErr == nil { + response.Result(102, err, "该指标子栏目名称已经存在!请不要重复输入!", c) + return + } + } + saveData["q_title"] = requestData.Title + } + + } + if requestData.ParentId != "" { + saveData["q_parent_id"] = requestData.ParentId + } + saveData["q_time"] = time.Now().Unix() + roleIsTrue, roleErr := eiteQualTargetInfoes(requestData.Id, saveData) + if roleIsTrue != true { + response.Result(106, roleErr, "编辑失败!", c) + } else { + response.Result(0, saveData, "编辑成功!", c) + } +} +func (d *DutyHandle) DelQualTargetInfo(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 + } + saveData := commonus.MapOut() + saveData["q_state"] = requestData.State + saveData["q_time"] = time.Now().Unix() + if requestData.IsDel != 1 { + roleIsTrue, roleErr := eiteQualTargetInfoes(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("q_id = ?", requestData.Id).Delete(&assessmentmodel.QualitativeTarget{}).Error + if roleErr != nil { + response.Result(104, saveData, "删除失败!", c) + return + } + response.Result(0, saveData, "删除成功!", c) + } else { + roleIsTrue, roleErr := eiteQualTargetInfoes(requestData.Id, saveData) + if roleIsTrue != true { + response.Result(103, roleErr, "修改失败!", c) + return + } + response.Result(0, requestData, "修改成功!", c) + } + } +} diff --git a/gin_server_admin/api/v1/assessment/ration_evaluation.go b/gin_server_admin/api/v1/assessment/ration_evaluation.go new file mode 100644 index 0000000..d479237 --- /dev/null +++ b/gin_server_admin/api/v1/assessment/ration_evaluation.go @@ -0,0 +1,296 @@ +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/gin-gonic/gin" +) + +/* +定量考核 +*/ +//添加定量考核 +func (d *DutyHandle) AddRation(c *gin.Context) { + var requestData AddRationCont + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Group == "" { + response.Result(102, err, "请选择归属集团", c) + return + } + if len(requestData.AcceptDepartmentId) <= 0 { + response.Result(102, err, "请选择接受考核的部门!", c) + return + } + if requestData.Dimension == "" { + response.Result(102, err, "请选择考核维度", c) + return + } + + if len(requestData.RationList) <= 0 { + response.Result(102, err, "请添加测评详情!", c) + return + } + var synergeticProcess dataLockStatistics + for _, deparmentId := range requestData.AcceptDepartmentId { + addDepartDimension(requestData.Group, deparmentId, requestData.Dimension, 2) + syncProcess.Add(1) + go synergeticProcess.addRationContList(deparmentId, requestData) + } + syncProcess.Wait() + returData := commonus.MapOut() + readDataMap, readBaoJinf := synergeticProcess.readMyDayData() + + returData["istrue"] = readDataMap + returData["isfalse"] = readBaoJinf + if len(readBaoJinf) > 0 && len(readDataMap) == 0 { + response.Result(112, returData, "有未处理失败的数据!请检查", c) + } else if len(readBaoJinf) > 0 && len(readDataMap) > 0 { + response.Result(1, returData, "有部门数据处理失败!请针对性输入!", c) + } else { + response.Result(0, returData, "数据处理完成!", c) + } +} + +//关联集团部门考核维度 +func addDepartDimension(groupID, departId, dimensionId string, key int64) { + judgeMap := commonus.MapOut() + judgeErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimension{}).Select("dd_id").Where("`dd_group` = ? AND `dd_department` = ? AND `dd_dimension` = ?", groupID, departId, dimensionId).First(&judgeMap).Error + if judgeErr != nil { + var saveData assessmentmodel.DepartmentDimension + saveData.Key = key + departIdVal, _ := strconv.ParseInt(departId, 10, 64) + saveData.DepartmentId = departIdVal + dimensionIdVal, _ := strconv.ParseInt(dimensionId, 10, 64) + saveData.Dimension = dimensionIdVal + groupIDVal, _ := strconv.ParseInt(groupID, 10, 64) + saveData.Group = groupIDVal + saveData.Addtime = time.Now().Unix() + insetErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if insetErr == nil { + } + } +} + +func (d *dataLockStatistics) addRationContList(deparmentId string, addData AddRationCont) { + d.mutext.Lock() + defer d.mutext.Unlock() + var saveDataAry []assessmentmodel.QualitativeEvaluation + for _, v := range addData.RationList { + var saveData assessmentmodel.QualitativeEvaluation + juadgeMap := commonus.MapOut() + juadgeInsetErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ? ", deparmentId, addData.Dimension, v.Target).First(&juadgeMap).Error + if juadgeInsetErr != nil { + groupInt, groupIntErr := strconv.ParseInt(addData.Group, 10, 64) + if groupIntErr == nil { + saveData.Group = groupInt + } + saveData.Type = addData.Type + departidInt, departinIntErr := strconv.ParseInt(v.DepartmentId, 10, 64) + if departinIntErr == nil { + saveData.DepartmentId = departidInt + } + + dimensionInt, departinIntErr := strconv.ParseInt(addData.Dimension, 10, 64) + if departinIntErr == nil { + saveData.Dimension = dimensionInt + } + + targetInt, targetIntErr := strconv.ParseInt(v.Target, 10, 64) + if targetIntErr == nil { + saveData.Target = targetInt + } + + saveData.Unit = v.Unit + saveData.ReferenceScore = v.ReferenceScore + saveData.Cycles = v.Cycles + saveData.CycleAttres = v.CycleAttres + + saveData.State = 1 + saveData.Addtime = time.Now().Unix() + saveData.Eitetime = time.Now().Unix() + departmentIdInt, departmentIdIntErr := strconv.ParseInt(deparmentId, 10, 64) + if departmentIdIntErr == nil { + saveData.AcceptEvaluation = departmentIdInt + } + // operatorInt, operatorIntErr := strconv.ParseInt(v.Operator, 10, 64) + // if operatorIntErr == nil { + // saveData.Operator = operatorInt + // } + saveData.Operator = strings.Join(v.Operator, ",") + + saveDataAry = append(saveDataAry, saveData) + msg := commonus.MapOut() + msg["msg"] = saveData + d.dataMap = append(d.dataMap, msg) + } else { + detailedTargetInts, _ := strconv.ParseInt(v.Target, 10, 64) + dtCont, dtIsTrue := commonus.GetTargetInfo(detailedTargetInts) + + groupInt, _ := strconv.ParseInt(addData.Group, 10, 64) + departidInt, _ := strconv.ParseInt(deparmentId, 10, 64) + _, groupCont := commonus.GetGroupCont(groupInt) + _, deparConCont := commonus.GetBranchFactory(departidInt) + msg := commonus.MapOut() + if dtIsTrue == true { + msg["msg"] = fmt.Sprintf("%v-%v定量考核《%v》考核项目已经存在!请重新处理此方案!->ID:%v", groupCont.Name, deparConCont.Name, dtCont.Title, detailedTargetInts) + } else { + msg["msg"] = fmt.Sprintf("%v-%v定量考核《%v》考核项目已经存在!请重新处理此方案!", groupCont.Name, deparConCont.Name, detailedTargetInts) + } + + d.dataErrMap = append(d.dataErrMap, msg) + } + } + if len(saveDataAry) > 0 { + addErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error + if addErr != nil { + msg := commonus.MapOut() + msg["data"] = saveDataAry + msg["msg"] = fmt.Sprintf("《%v》考核维度录入失败!请重新处理此方案", addData.Dimension) + d.dataErrMap = append(d.dataErrMap, msg) + } + } + syncProcess.Done() +} + +//定量考核方案列表 +func (d *DutyHandle) RationList(c *gin.Context) { + var requestData rationSelect + c.ShouldBindJSON(&requestData) + //归档集团 + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_group").Where("qe_type = 2").Group("qe_group") + if requestData.Group != "" { + gormDb = gormDb.Having("qe_group = ?", requestData.Group) + } + var fileAry []int64 + listErr := gormDb.Find(&fileAry).Error + if listErr != nil { + response.Result(101, listErr, "没有数据!", c) + return + } + if len(fileAry) < 1 { + response.Result(102, listErr, "没有数据!", c) + return + } + var aualEvalArrtAry []QualEvalRationListOut + for _, v := range fileAry { + var aualEvalArrtCont QualEvalRationListOut + groupErr, groupCont := commonus.GetGroupCont(v) + if groupErr == true { + aualEvalArrtCont.Id = strconv.FormatInt(v, 10) + aualEvalArrtCont.Name = groupCont.Name + // 归档分厂-部室 + departAry, departAryErr := deparmentRationList(v, requestData.DepartmentId) + if departAryErr == true { + //分厂部室列表 + aualEvalArrtCont.Child = departAry + } + //组合集团 + aualEvalArrtAry = append(aualEvalArrtAry, aualEvalArrtCont) + } + } + response.Result(0, aualEvalArrtAry, "查询完成!", c) +} + +//归档部门 +func deparmentRationList(groupID int64, departmentIDStr string) (contentList []QualEvalRationListOutDepart, isTrue bool) { + isTrue = false + gormDbDepart := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_accept_evaluation").Where("qe_type = 2 AND `qe_group` = ?", groupID).Group("qe_accept_evaluation") + if departmentIDStr != "" { + gormDbDepart = gormDbDepart.Having("qe_accept_evaluation = ?", departmentIDStr) + } + var fileDepartAry []int64 + listDepartErr := gormDbDepart.Find(&fileDepartAry).Error + if listDepartErr == nil { + for _, v := range fileDepartAry { + deparConErr, deparConCont := commonus.GetBranchFactory(v) + var deparCont QualEvalRationListOutDepart + if deparConErr == true { + deparCont.Id = strconv.FormatInt(v, 10) + deparCont.Name = deparConCont.Name + //归档维度 + dimensionAry, dimensionAryErr := dimensionRationList(groupID, v) + if dimensionAryErr == true { + //维度列表 + deparCont.Child = dimensionAry + } + } + //组合分厂部室 + contentList = append(contentList, deparCont) + } + + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//归档维度 +func dimensionRationList(groupID, departmentID int64) (contentList []DimensionRationList, isTrue bool) { + isTrue = false + var fileDimensionAry []int64 + listDimensionErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_dimension").Where("qe_type = 2 AND `qe_group` = ? AND `qe_accept_evaluation` = ?", groupID, departmentID).Group("qe_dimension").Find(&fileDimensionAry).Error + if listDimensionErr == nil { + for _, v := range fileDimensionAry { + dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(v) + var dimenCont DimensionRationList + if dutyClassErr == true { + dimenCont.Id = strconv.FormatInt(v, 10) + dimenCont.Name = dutyClassCont.Title + //归档指标 + targerAry, targerAryErr := targetRationList(groupID, departmentID, v) + if targerAryErr == true { + //定性考核指标列表 + dimenCont.Child = targerAry + } + //组合维度 + contentList = append(contentList, dimenCont) + } + } + } + if len(contentList) > 0 { + isTrue = true + } + return +} + +//查询归档定性指标 +func targetRationList(groupID, departmentID, dimension int64) (contentList []taskDetails, isTrue bool) { + isTrue = false + var fileTargetAry []assessmentmodel.QualitativeEvaluation + listTargetErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("qe_type = 2 AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ?", groupID, departmentID, dimension).Find(&fileTargetAry).Error + if listTargetErr != nil { + return + } + for _, v := range fileTargetAry { + var content taskDetails + targetInfo, targetErr := commonus.GetTargetInfo(v.Target) + if targetErr == true { + content.Id = strconv.FormatInt(v.Target, 10) + content.Name = targetInfo.Title + + content.Unit = v.Unit + content.ReferenceScore = v.ReferenceScore + content.Cycles = v.Cycles + content.CycleAttres = v.CycleAttres + content.State = v.State + + contentList = append(contentList, content) + } + } + if len(contentList) > 0 { + isTrue = true + } + return +} diff --git a/gin_server_admin/api/v1/assessment/target.go b/gin_server_admin/api/v1/assessment/target.go new file mode 100644 index 0000000..6f0fcc1 --- /dev/null +++ b/gin_server_admin/api/v1/assessment/target.go @@ -0,0 +1,492 @@ +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.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 = tg_val.Share + outMapCont.RelevantDepartments = tg_val.RelevantDepartments + if tg_val.RelevantDepartments != "" { + departIdAry := strings.Split(tg_val.RelevantDepartments, ",") + for _, dia_val := range departIdAry { + 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 + 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 { + rgeValGupErr, rgeValGup := GetGroupCont(rgeIntGup) + if rgeValGupErr == true { + var bfContRge outTargetAttr + bfContRge.Key = rgeup_val + bfContRge.Title = rgeValGup.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, ",") + } + 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, ",") + } + 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 + } + 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 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, ",") + } + } + 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 { + response.Result(0, saveData, "编辑成功!", c) + } +} diff --git a/gin_server_admin/api/v1/examtestpage/grouphandle.go b/gin_server_admin/api/v1/examtestpage/grouphandle.go index 61116b4..fec153a 100644 --- a/gin_server_admin/api/v1/examtestpage/grouphandle.go +++ b/gin_server_admin/api/v1/examtestpage/grouphandle.go @@ -1028,3 +1028,34 @@ func GetBranchFactoryUser(printId int64) (isTrue bool, departMap []groupUser) { isTrue = true return } + +type departSelect struct { + Id string `json:"id"` +} + +//获取分厂列表 +func (g *GroupHandleApi) GetDepartmentList(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 bfList []testpage.BranchFactory + errData := global.GVA_DB_Master.Where("bf_group = ? AND bf_set = 1", requestData.Id).Find(&bfList).Error + if errData != nil { + response.Result(101, errData, "数据获取失败!", c) + return + } + response.Result(0, bfList, "数据获取成功!", c) +} diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index 769db01..f6d4aad 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -960,3 +960,65 @@ func GetGroupCont(id int64) (isTrue bool, ContInfo wechat.GroupForm) { } return } + +//获取考核细则相关内容 +func GetDutyCont(field, whereData interface{}) (isTrue bool, outData map[string]interface{}) { + isTrue = false + errAss := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyContent{}).Select(field).Where(whereData).First(&outData).Error + if errAss != nil { + return + } + isTrue = true + return +} + +//获取人员信息 +func GetUserInfoPublic(field interface{}, whereMap map[string]interface{}) (userCont testpage.PersonalDetails, isTrue bool) { + isTrue = false + var userInfo testpage.WorkMan + userErr := global.GVA_DB_Master.Model(&userInfo).Select(field).Joins("left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key").Where(whereMap).Find(&userCont).Error + if userErr == nil { + isTrue = true + } + return +} + +//获取考核指标信息 +func GetTargetInfo(id int64) (content assessmentmodel.EvaluationTarget, isTrue bool) { + isTrue = false + err := global.GVA_DB_Performanceappraisal.Where("et_id = ?", id).First(&content).Error + if err == nil { + isTrue = true + } + return +} + +//获取考核指标信息 +func GetQualitativeTargetInfo(id int64) (content assessmentmodel.QualitativeTarget, isTrue bool) { + isTrue = false + err := global.GVA_DB_Performanceappraisal.Where("q_id = ?", id).First(&content).Error + if err == nil { + isTrue = true + } + return +} + +//获取考核指标细则 +func GetDetailedTargetInfo(id int64) (content assessmentmodel.DetailedTarget, isTrue bool) { + isTrue = false + err := global.GVA_DB_Performanceappraisal.Where("dt_id = ?", id).First(&content).Error + if err == nil { + isTrue = true + } + return +} + +//获取考核类别 +func GetDutyClassInfo(id int64) (content assessmentmodel.DutyClass, isTrue bool) { + isTrue = false + err := global.GVA_DB_Performanceappraisal.Where("id = ?", id).First(&content).Error + if err == nil { + isTrue = true + } + return +} diff --git a/gin_server_admin/initialize/router.go b/gin_server_admin/initialize/router.go index 4a927d9..f6237ac 100644 --- a/gin_server_admin/initialize/router.go +++ b/gin_server_admin/initialize/router.go @@ -104,8 +104,9 @@ func Routers() *gin.Engine { examtions.InitGroupRouter(PublicGroup) //考试相关 // Questions.InitGroupRouter(PublicGroup) //试题相关 - dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核 - dutyAssEss.NoInitDutyHandelRouter(PublicGroup) //数据考核无需验证 + dutyAssEss.InitAssessmentRouter(PublicGroup) //数据考核 + dutyAssEss.NoInitDutyHandelRouter(PublicGroup) //数据考核无需验证 + dutyAssEss.InitEvaluationSchemeRouter(PublicGroup) //考核方案 staffMan.InitStaffRouter(PublicGroup) //员工相关操作 diff --git a/gin_server_admin/model/assessmentmodel/dutyclass.go b/gin_server_admin/model/assessmentmodel/dutyclass.go index f4f8d73..acdc217 100644 --- a/gin_server_admin/model/assessmentmodel/dutyclass.go +++ b/gin_server_admin/model/assessmentmodel/dutyclass.go @@ -4,7 +4,7 @@ package assessmentmodel type DutyClass struct { Id int64 `json:"id" gorm:"column:id;type:bigint(20) unsigned;not null;comment:Id"` Title string `json:"title" gorm:"column:title;type:varchar(255);comment:职责类别名称"` - Type int `json:"type" gorm:"column:type;type:tinyint(1) unsigned;default:1;not null;comment:类型(1:职能部门;2:生产部门)"` + Type int `json:"type" gorm:"column:type;type:tinyint(1) unsigned;default:1;not null;comment:类型(1:定性考核;2:定量考核)"` Weight int `json:"weight" gorm:"column:weight;type:int(3) unsigned;default:0;not null;comment:权重比例"` Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态"` @@ -32,16 +32,21 @@ func (DepartDuty *DepartDuty) TableName() string { return "departduty" } -//职责详情 +//考核细则 type DutyContent struct { - Id int64 `json:"id" gorm:"column:dc_id;type:bigint(20) unsigned;not null;comment:Id"` - Title string `json:"title" gorm:"column:dc_title;type:text;comment:具体职责"` - Time int64 `json:"time" gorm:"column:dc_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` - State int `json:"state" gorm:"column:dc_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` - PartId int64 `json:"partId" gorm:"column:dc_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` - UserType int `json:"userType" gorm:"column:dc_user_type;type:tinyint(1) unsigned;default:1;not null;comment:考核部门类型(1:指定人;2:指定部门)"` - UserDump int64 `json:"userDump" gorm:"column:dc_user_dump;type:bigint(20) unsigned;default:0;not null;comment:考核人执行人"` - Dump int64 `json:"dump" gorm:"column:dc_dump;type:bigint(20) unsigned;default:0;not null;comment:考核执行部门"` + Id int64 `json:"id" gorm:"column:dc_id;type:bigint(20) unsigned;not null;comment:Id"` + Title string `json:"title" gorm:"column:dc_title;type:text;comment:具体职责"` + Time int64 `json:"time" gorm:"column:dc_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + State int `json:"state" gorm:"column:dc_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + PartId int64 `json:"partId" gorm:"column:dc_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` + UserType int `json:"userType" gorm:"column:dc_user_type;type:tinyint(1) unsigned;default:1;not null;comment:考核部门类型(1:指定人;2:指定部门)"` + UserDump int64 `json:"userDump" gorm:"column:dc_user_dump;type:bigint(20) unsigned;default:0;not null;comment:考核人执行人"` + Dump int64 `json:"dump" gorm:"column:dc_dump;type:bigint(20) unsigned;default:0;not null;comment:考核执行部门"` + Types int `json:"type" gorm:"column:dc_type;type:tinyint(1) unsigned;default:1;not null;comment:1:定量考核;2:定性考核"` + Uniteing string `json:"unites" gorm:"column:dc_unit;type:varchar(255);comment:计量单位"` + Cycles int `json:"cycle" gorm:"column:dc_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr" gorm:"column:dc_cycleattr;type:int(9) unsigned;default:1;not null;comment:辅助计数"` + Contentes string `json:"content" gorm:"column:dc_cont;type:mediumtext;comment:考核细则说明"` } func (DutyContent *DutyContent) TableName() string { @@ -50,14 +55,18 @@ func (DutyContent *DutyContent) TableName() string { //考核项目 type AssessMentitems struct { - Id int64 `json:"id" gorm:"column:ai_id;type:bigint(20) unsigned;not null;comment:Id"` - Title string `json:"title" gorm:"column:ai_title;type:varchar(255);comment:考核类别"` - Weight int `json:"weight" gorm:"column:ai_weight;type:int(3) unsigned;default:0;not null;comment:权重比例"` - Fraction int `json:"fraction" gorm:"column:ai_fraction;type:int(3) unsigned;default:0;not null;comment:分数"` - Content string `json:"content" gorm:"column:ai_content;type:text;comment:说明"` - PartId int64 `json:"partId" gorm:"column:ai_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` - Time int64 `json:"time" gorm:"column:ai_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` - State int `json:"state" gorm:"column:ai_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + Id int64 `json:"id" gorm:"column:ai_id;type:bigint(20) unsigned;not null;comment:Id"` + Title string `json:"title" gorm:"column:ai_title;type:varchar(255);comment:考核类别"` + Weight int `json:"weight" gorm:"column:ai_weight;type:int(3) unsigned;default:0;not null;comment:权重比例"` + Fraction int `json:"fraction" gorm:"column:ai_fraction;type:int(3) unsigned;default:0;not null;comment:分数"` + Content string `json:"content" gorm:"column:ai_content;type:text;comment:说明"` + PartId int64 `json:"partId" gorm:"column:ai_parent;type:bigint(20) unsigned;default:0;not null;comment:父级"` + Time int64 `json:"time" gorm:"column:ai_time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + State int `json:"state" gorm:"column:ai_state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + Type int `json:"type" gorm:"column:ai_type;type:tinyint(1) unsigned;default:1;not null;comment:1:定量考核;2:定性考核"` + Unites string `json:"unites" gorm:"column:ai_unit;type:varchar(255);comment:计量单位"` + Cycle int `json:"cycle" gorm:"column:ai_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:天;2:周;3:月;4:季度;5:年"` + CycleAttr int `json:"cycleattr" gorm:"column:ai_cycle_attr;type:int(9) unsigned;default:1;not null;comment:辅助计数"` } func (AssessMentitems *AssessMentitems) TableName() string { @@ -139,3 +148,149 @@ type AssessmentLog struct { func (AssessmentLog *AssessmentLog) TableName() string { return "assessment_log" } + +//考核方案 +type EvaluationScheme struct { + Id int64 `json:"id" gorm:"column:es_id;type:bigint(20) unsigned;not null;comment:Id"` + Title string `json:"title" gorm:"column:es_title;type:varchar(255);comment:方案名称"` + Group int64 `json:"group" gorm:"column:es_group;type:bigint(10) unsigned;default:1;not null;comment:归属集团"` + EvaluationDepartment int64 `json:"evaluationdepartment" gorm:"column:es_evaluation_department;type:bigint(20);not null;comment:被考核部门"` + Dimension int64 `json:"dimension" gorm:"column:es_dimension;type:bigint(20) unsigned;default:0;not null;comment:考核维度"` + Project int64 `json:"project" gorm:"column:es_project;type:bigint(20) unsigned;default:0;not null;comment:考核项目"` + Weight int `json:"weight" gorm:"column:es_weight;type:int(5) unsigned;default:0;not null;comment:权重"` + ExecutiveDepartment int64 `json:"executivedepartment" gorm:"column:es_executive_department;type:bigint(20) unsigned;default:0;not null;comment:执行部门"` + Content string `json:"content" gorm:"column:es_content;type:longtext;not null;comment:方案内容"` + AddTime int64 `json:"addTime" gorm:"column:es_time;type:bigint(20) unsigned;default:0;not null;comment:方案制定时间"` + EiteTime int64 `json:"eiteTime" gorm:"column:es_eite_time;type:bigint(20) unsigned;default:0;not null;comment:方案修改时间"` + Maker int64 `json:"maker" gorm:"column:es_maker;type:bigint(20) unsigned;default:0;not null;comment:制定人"` +} + +func (EvaluationScheme *EvaluationScheme) TableName() string { + return "evaluationscheme" +} + +//测评指标 +type EvaluationTarget struct { + Id int64 `json:"id" gorm:"column:et_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Title string `json:"title" gorm:"column:et_title;type:varchar(255);comment:指标名称"` + Type int `json:"type" gorm:"column:et_type;type:int(1) unsigned;default:1;not null;comment:1:定性考核;2:定量考核"` + State int `json:"state" gorm:"column:et_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + AddTime int64 `json:"addTime" gorm:"column:et_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"` + Share int `json:"share" gorm:"column:et_share;type:int(1) unsigned;default:1;not null;comment:1:共用;2:私用"` + RelevantDepartments string `json:"relevantdepartments" gorm:"column:et_relevant_departments;type:text;comment:相关部门"` + Dimension int64 `json:"dimension" gorm:"column:et_dimension;type:bigint(20) unsigned;default:0;not null;comment:维度"` + Key int64 `json:"key" gorm:"column:et_key;type:bigint(20) unsigned;default:0;not null;comment:UUID"` + Report string `json:"report" gorm:"column:et_report;type:text;comment:上报人"` + Uniteing string `json:"unites" gorm:"column:et_unit;type:varchar(255);comment:计量单位"` + Cycles int `json:"cycle" gorm:"column:et_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr" gorm:"column:et_cycleattr;type:int(9) unsigned;default:1;not null;comment:辅助计数"` + VisibleRange string `json:"visiblerange" gorm:"column:et_visible_range;type:text;comment:可见范围"` + VisibleRangeGroup string `json:"visiblerangegroup" gorm:"column:et_visible_group;type:text;comment:可见范围(集团)"` +} + +func (EvaluationTarget *EvaluationTarget) TableName() string { + return "evaluationtarget" +} + +//定性测评指标子栏目 +type QualitativeTarget struct { + Id int64 `json:"id" gorm:"column:q_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Title string `json:"title" gorm:"column:q_title;type:varchar(255);comment:指标子栏目名称"` + ParentId int64 `json:"parentid" gorm:"column:q_parent_id;type:bigint(20) unsigned;default:0;not null;comment:归属指标"` + State int `json:"state" gorm:"column:q_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + AddTime int64 `json:"addTime" gorm:"column:q_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"` +} + +func (QualitativeTarget *QualitativeTarget) TableName() string { + return "qualitative_target" +} + +//指标细则 +type DetailedTarget struct { + Id int64 `json:"id" gorm:"column:dt_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Title string `json:"title" gorm:"column:dt_title;type:text;comment:指标细则"` + Content string `json:"content" gorm:"column:dt_content;type:text;comment:指标说明"` + ParentId int64 `json:"parentid" gorm:"column:dt_parentid;type:bigint(20) unsigned;default:0;not null;comment:归属指标栏目"` + ParentIdSun int64 `json:"parentidsun" gorm:"column:dt_parentid_sun;type:bigint(20) unsigned;default:0;not null;comment:归属指标子栏目"` + State int `json:"state" gorm:"column:dt_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + AddTime int64 `json:"addtime" gorm:"column:dt_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"` +} + +func (DetailedTarget *DetailedTarget) TableName() string { + return "detailed_target" +} + +//性质考核方案 +type QualitativeEvaluationScheme struct { + Id int64 `json:"id" gorm:"column:qes_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Title string `json:"title" gorm:"column:qes_title;type:text;comment:方案名称"` + Key int64 `json:"key" gorm:"column:qes_key;type:bigint(20) unsigned;default:0;not null;comment:key"` + DepartmentId int64 `json:"parentid" gorm:"column:qes_department_id;type:bigint(20) unsigned;default:0;not null;comment:归属部门"` + Group int64 `json:"group" gorm:"column:qes_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"` + Addtime int64 `json:"addtime" gorm:"column:qes_addtime;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + Eitetime int64 `json:"eitetime" gorm:"column:qes_eitetime;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` +} + +func (QualitativeEvaluationScheme *QualitativeEvaluationScheme) TableName() string { + return "qualitative_evaluation_scheme" +} + +//性质考核方案明细 +type QualitativeEvaluation struct { + Id int64 `json:"id" gorm:"column:qe_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Title string `json:"title" gorm:"column:qe_title;type:text;comment:考核名称"` + DepartmentId int64 `json:"parentid" gorm:"column:qe_department_id;type:bigint(20) unsigned;default:0;not null;comment:执行考核部门ID"` + Dimension int64 `json:"dimension" gorm:"column:qe_dimension;type:bigint(20) unsigned;default:0;not null;comment:考核维度"` + Target int64 `json:"target" gorm:"column:qe_target;type:bigint(20) unsigned;default:0;not null;comment:考核指标"` + TargetSun int64 `json:"targetsun" gorm:"column:qe_target_sun;type:bigint(20) unsigned;default:0;not null;comment:考核指标子栏目"` + DetailedTarget int64 `json:"detailedtarget" gorm:"column:qe_detailed_target;type:bigint(20) unsigned;default:0;not null;comment:考核细则"` + Type int `json:"type" gorm:"column:qe_type;type:int(1) unsigned;default:1;not null;comment:1:定性考核;2:定量考核"` + Weight int64 `json:"weight" gorm:"column:qe_weight;type:int(5) unsigned;default:0;not null;comment:权重"` + Unit string `json:"unit" gorm:"column:qe_unit;type:varchar(255);comment:单位"` + ReferenceScore int64 `json:"referencescore" gorm:"column:qe_reference_score;type:int(9) unsigned;default:0;not null;comment:标准分值"` + State int `json:"state" gorm:"column:qe_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` + Addtime int64 `json:"addtime" gorm:"column:qe_addtime;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + Eitetime int64 `json:"eitetime" gorm:"column:qe_eitetime;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + Group int64 `json:"group" gorm:"column:qe_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"` + QualEvalId int64 `json:"qualevalid" gorm:"column:qe_qual_eval_id;type:bigint(20) unsigned;default:0;not null;comment:性质考核方案"` + Cycles int `json:"cycle" gorm:"column:qe_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:班;2:天;3:周;4:月;5:季度;6:年"` + CycleAttres int `json:"cycleattr" gorm:"column:qe_cycleattr;type:int(9) unsigned;default:1;not null;comment:辅助计数"` + AcceptEvaluation int64 `json:"acceptevaluation" gorm:"column:qe_accept_evaluation;type:bigint(20) unsigned;default:0;not null;comment:接受考核部门"` + Operator string `json:"operator" gorm:"column:qe_operator;type:text;comment:执行人"` +} + +func (QualitativeEvaluation *QualitativeEvaluation) TableName() string { + return "qualitative_evaluation" +} + +//性质考核方案 +type DepartmentDimension struct { + Id int64 `json:"id" gorm:"column:dd_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Key int64 `json:"key" gorm:"column:dd_type;type:bigint(20) unsigned;default:0;not null;comment:1:定性考核;2:定量考核"` + DepartmentId int64 `json:"parentid" gorm:"column:dd_department;type:bigint(20) unsigned;default:0;not null;comment:部门ID"` + Dimension int64 `json:"dimension" gorm:"column:dd_dimension;type:bigint(20) unsigned;default:0;not null;comment:考核维度"` + Group int64 `json:"group" gorm:"column:dd_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"` + Addtime int64 `json:"addtime" gorm:"column:dd_time;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + Weight int64 `json:"weight" gorm:"column:dd_weight;type:int(6) unsigned;default:0;not null;comment:权重"` +} + +func (DepartmentDimension *DepartmentDimension) TableName() string { + return "department_dimension" +} + +//性质考核方案 +type DepartmentDimensionWeight struct { + Id int64 `json:"id" gorm:"column:ddw_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Type int64 `json:"type" gorm:"column:ddw_type;type:bigint(20) unsigned;default:0;not null;comment:1:定性考核;2:定量考核"` + Group int64 `json:"group" gorm:"column:ddw_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"` + DepartmentId int64 `json:"parentid" gorm:"column:ddw_derpatment;type:bigint(20) unsigned;default:0;not null;comment:部门ID"` + Dimension int64 `json:"dimension" gorm:"column:ddw_dimension;type:bigint(20) unsigned;default:0;not null;comment:考核维度"` + Target int64 `json:"target" gorm:"column:ddw_target;type:bigint(20) unsigned;default:0;not null;comment:指标"` + Weight int64 `json:"weight" gorm:"column:ddw_weight;type:int(6) unsigned;default:0;not null;comment:权重"` + Addtime int64 `json:"addtime" gorm:"column:ddw_time;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` + Hierarchy int64 `json:"hierarchy" gorm:"column:ddw_hierarchy;type:bigint(20) unsigned;default:0;not null;comment:维度;2:指标"` +} + +func (DepartmentDimensionWeight *DepartmentDimensionWeight) TableName() string { + return "department_dimension_weight" +} diff --git a/gin_server_admin/router/assessment/assessmentrouter.go b/gin_server_admin/router/assessment/assessmentrouter.go index 839fc3d..80d60ff 100644 --- a/gin_server_admin/router/assessment/assessmentrouter.go +++ b/gin_server_admin/router/assessment/assessmentrouter.go @@ -43,6 +43,62 @@ func (s *AssessmentRouter) InitAssessmentRouter(Router *gin.RouterGroup) { dutyCodeRouter.POST("adddepartdutyinfo", authorityApi.AddDepartDutyInfo) // 添加具体部门考核项目(副本) dutyCodeRouter.POST("eitedepartdutyinfo", authorityApi.EiteDepartDutyInfo) // 修改具体部门考核项目详情(副本) + /* + 指标相关 + */ + dutyCodeRouter.POST("addtarget", authorityApi.AddTarget) // 添加考核指标 + dutyCodeRouter.POST("gettarget", authorityApi.GetTargetList) // 获取考核指标列表 + dutyCodeRouter.POST("gettargetinfo", authorityApi.GetTarget) // 获取考核指标详细内容 + dutyCodeRouter.POST("deltarget", authorityApi.DelTarget) // 删除指标/更改考核指标状态 + dutyCodeRouter.POST("eitetarget", authorityApi.EiteTarget) // 修改指标内容 + + /* + 定性指标子栏目相关 + */ + dutyCodeRouter.POST("addqualitativetarget", authorityApi.AddQualitativeTarget) // 添加定性指标子栏目 + dutyCodeRouter.POST("getqualitativetargetlist", authorityApi.GetQualitativeTargetList) // 获取定性指标子栏目列表 + dutyCodeRouter.POST("getqualitativetargetinfo", authorityApi.GetQualTargetInfo) // 获取定性指标子栏目详细内容 + dutyCodeRouter.POST("eitequalitativetargetinfo", authorityApi.EiteQualTargetInfo) // 修改定性指标子栏目详细内容 + dutyCodeRouter.POST("delqualitativetargetinfo", authorityApi.DelQualTargetInfo) // 修改定性指标子栏目状态或删除 + + /* + 新考核细则处理 + */ + dutyCodeRouter.POST("adddetailedtarget", authorityApi.AddDetailedTarget) // 添加考核细则 + dutyCodeRouter.POST("getdetailedtarget", authorityApi.GetDetailedTarget) // 获取考核细则内容 + dutyCodeRouter.POST("getdetailedtargetlist", authorityApi.GetDetailedTargetList) // 获取考核细则列表 + dutyCodeRouter.POST("eitedetailedtarget", authorityApi.EiteDetailedTargetCont) // 编辑考核细则内容 + dutyCodeRouter.POST("deldetailedtarget", authorityApi.DelDetailedTargetCont) // 删除考核细则内容 + + /* + 定性考核 + */ + dutyCodeRouter.POST("addqualeval", authorityApi.AddQualEval) // 添加定性考核 + dutyCodeRouter.POST("getqualevallist", authorityApi.GetQualEvalList) // 定性考核列表 + dutyCodeRouter.POST("addqualevalweight", authorityApi.AddQualEvalWeight) // 添加定性考核权重 + + /* + 定量考核 + */ + dutyCodeRouter.POST("addration", authorityApi.AddRation) // 添加定量考核 + dutyCodeRouter.POST("addrationlist", authorityApi.RationList) // 定量考核列表 + + /* + 指标组合列表 + */ + dutyCodeRouter.POST("gettasktarget", authorityApi.GetTaskTarget) // 根据条件获取组合指标 + dutyCodeRouter.POST("gettasktargetsun", authorityApi.GetTaskTargetSun) // 根据条件获取组合指标子栏目 + dutyCodeRouter.POST("gettasktargetcontary", authorityApi.GetTaskTargetContAry) // 根据条件获取考核详情 + + // dutyCodeRouter.POST("addqualevalweight", authorityApi.AddQualEvalWeight) //添加权重(单发) + dutyCodeRouter.POST("addqubatch", authorityApi.AddQualEvalDimWeightBatch) //添加指标权重(批量) + dutyCodeRouter.POST("adddimweightbatch", authorityApi.AddDimWeightBatch) //添加维度权重(批量) + + /* + 部门考核 + */ + dutyCodeRouter.POST("departmentlist", authorityApi.DepartmentList) // 部门考核列表 + } } @@ -83,3 +139,18 @@ func (s *AssessmentRouter) NoInitDutyHandelRouter(Router *gin.RouterGroup) { } } + +func (s *AssessmentRouter) InitEvaluationSchemeRouter(Router *gin.RouterGroup) { + dutyCodeRouter := Router.Group("scheme") + var authorityApi = v1.ApiGroupApp.DutyHandleApi.EvaluationScheme + { + dutyCodeRouter.POST("/", authorityApi.Index) // 入口 + dutyCodeRouter.POST("", authorityApi.Index) // 入口 + dutyCodeRouter.GET("/", authorityApi.Index) // 入口 + dutyCodeRouter.GET("", authorityApi.Index) // 入口 + + dutyCodeRouter.POST("addevaluationscheme", authorityApi.AddEvaluationScheme) // 添加考核方案 + + } + +} diff --git a/gin_server_admin/router/examtestpage/grouphandle.go b/gin_server_admin/router/examtestpage/grouphandle.go index cc29ef3..26afc8b 100644 --- a/gin_server_admin/router/examtestpage/grouphandle.go +++ b/gin_server_admin/router/examtestpage/grouphandle.go @@ -29,5 +29,7 @@ func (g *GroupHandleRouter) InitGroupRouter(Router *gin.RouterGroup) { groupCodeRouter.POST("/getgroupuser", authorityApi.GetGroupUser) //获取集团架构人员信息对照表 + groupCodeRouter.POST("/departmentlist", authorityApi.GetDepartmentList) // 获取分厂部室列表 + } }