From 88bcd12e897c2dbeca5f32f922c509b9d68b15a9 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Sun, 1 May 2022 10:42:40 +0800 Subject: [PATCH] =?UTF-8?q?5=E6=9C=881=E5=8F=B7BUG=E6=94=B6=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gin_server_admin/README.md | 10 +- .../api/admin/dutyassess/assesstype.go | 45 +- .../api/admin/dutyassess/dutyes.go | 42 +- .../api/admin/dutyassess/dutyhandle.go | 138 ++- .../api/admin/dutyassess/planversio.go | 33 +- .../api/admin/systemuser/systemmenu.go | 39 +- .../api/index/assessment/assesshandle.go | 48 + gin_server_admin/api/index/enter.go | 2 + .../api/index/evaluation/assessment.go | 4 + .../api/index/evaluation/evaluation.go | 19 +- .../api/index/evaluation/flowsend.go | 28 +- gin_server_admin/api/index/evaluation/type.go | 1 + .../api/index/statistics/enter.go | 4 + .../api/index/statistics/programme.go | 33 + gin_server_admin/api/statistics/enter.go | 6 +- .../api/statistics/nature/enter.go | 12 +- .../api/statistics/nature/statistics.go | 60 +- .../quantification/auxiliarycalculation.go | 965 ++++++++++++++++++ .../api/statistics/quantification/enter.go | 93 ++ .../api/statistics/quantification/quant.go | 405 ++++++++ .../api/statistics/quantification/shiyan.go | 84 ++ .../api/v1/assessment/department_target.go | 9 +- .../api/v1/assessment/dutytype.go | 20 +- gin_server_admin/api/v1/assessment/target.go | 42 +- gin_server_admin/api/v1/staff/staffpeople.go | 2 +- .../api/web/jixiaokaohe/people.go | 26 +- gin_server_admin/commonus/publichaneld.go | 75 +- gin_server_admin/initialize/redis.go | 12 +- gin_server_admin/initialize/router.go | 5 + gin_server_admin/middleware/myjwt.go | 6 +- .../model/assessmentmodel/dutyclass.go | 19 +- gin_server_admin/router/enter.go | 36 +- .../router/index/statisticsroute/enter.go | 3 + .../router/index/statisticsroute/programme.go | 20 + .../router/statisticsrouter/statistics.go | 8 + gin_server_admin/utils/redishandel/myredis.go | 1 + 36 files changed, 2207 insertions(+), 148 deletions(-) create mode 100644 gin_server_admin/api/index/statistics/enter.go create mode 100644 gin_server_admin/api/index/statistics/programme.go create mode 100644 gin_server_admin/api/statistics/quantification/auxiliarycalculation.go create mode 100644 gin_server_admin/api/statistics/quantification/enter.go create mode 100644 gin_server_admin/api/statistics/quantification/quant.go create mode 100644 gin_server_admin/api/statistics/quantification/shiyan.go create mode 100644 gin_server_admin/router/index/statisticsroute/enter.go create mode 100644 gin_server_admin/router/index/statisticsroute/programme.go diff --git a/gin_server_admin/README.md b/gin_server_admin/README.md index aaa4878..c43a91b 100644 --- a/gin_server_admin/README.md +++ b/gin_server_admin/README.md @@ -73,4 +73,12 @@ qualitative_evaluation qualitative_target rectification_measures score_flow -target_weight \ No newline at end of file +target_weight + +### 2022.04.30纪要 + +1、生成部门考核方案下来添加观察标 +2、定量指标添加自动与手东干预 + +### 2022.05.01纪要 +1、编写数据表统计信息 \ No newline at end of file diff --git a/gin_server_admin/api/admin/dutyassess/assesstype.go b/gin_server_admin/api/admin/dutyassess/assesstype.go index cbca829..94ef950 100644 --- a/gin_server_admin/api/admin/dutyassess/assesstype.go +++ b/gin_server_admin/api/admin/dutyassess/assesstype.go @@ -292,21 +292,22 @@ type AddQualEval struct { //定性考核内容 type QualEvalSunList struct { - DetailedTarget string `json:"id"` //考核细则 - Title string `json:"title"` //指标说明 - Content string `json:"content"` //指标说明 - Unit string `json:"unit"` //单位 - ReferenceScore string `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"` //考核执行人 - MinScore int64 `json:"minscore"` //最小分*100保存 - MaxScore int64 `json:"maxscore"` //最大分*100保存 - AddOrReduce int `json:"addorreduce"` //1:减少;2:增加 - CensorType []string `json:"censortype"` //检查方式(1:现场检查;2:资料检查;3:事件触发) - CensorCont string `json:"censorcont"` //检查依据 - CensorRate int `json:"censorrate"` //检查频次 + DetailedTarget string `json:"id"` //考核细则 + Title string `json:"title"` //指标说明 + Content string `json:"content"` //指标说明 + Unit string `json:"unit"` //单位 + ReferenceScore string `json:"referencescore"` //标准分值 + // Cycles string `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + CycleAttres int `json:"cycleattr"` //辅助计数 + DepartmentId string `json:"parentid"` //执行考核部门ID + Operator []string `json:"userlist"` //考核执行人 + MinScore int64 `json:"minscore"` //最小分*100保存 + MaxScore int64 `json:"maxscore"` //最大分*100保存 + AddOrReduce int `json:"addorreduce"` //1:减少;2:增加 + CensorType []string `json:"censortype"` //检查方式(1:现场检查;2:资料检查;3:事件触发) + CensorCont string `json:"censorcont"` //检查依据 + CensorRate int `json:"censorrate"` //检查频次 } //添加 定性考核指标关系指定细则 @@ -337,9 +338,10 @@ type GetDeitalTarCont struct { //输出新版指标明细列表 type NewOutPutDetailedTarget struct { OutTargetCont - Unit string `json:"unit"` //单位 - Score string `json:"score"` //分值 - AssId string `json:"assid"` + Unit string `json:"unit"` //单位 + Score string `json:"score"` //分值 + AssId string `json:"assid"` + AddReduce int `json:"addreduce"` //1:减少;2:增加;3:无属性,现场确认加或减 } // @@ -524,3 +526,10 @@ type EiteTargetContListSun struct { CensorCont string `json:"censorcont"` //检查依据 CensorRate int `json:"censorrate"` //检查频次 } + +//定性考核列表 +type dutyList struct { + Group int64 `json:"group" gorm:"column:group;type:bigint(20) unsigned;default:0;not null;comment:集团ID"` + TargetId int64 `json:"targetid" gorm:"column:targetid;type:bigint(20) unsigned;default:0;not null;comment:指标"` + SunTargetId int64 `json:"suntargetid" gorm:"column:suntargetid;type:bigint(20) unsigned;default:0;not null;comment:子栏目ID"` +} diff --git a/gin_server_admin/api/admin/dutyassess/dutyes.go b/gin_server_admin/api/admin/dutyassess/dutyes.go index 1950355..e05a7a0 100644 --- a/gin_server_admin/api/admin/dutyassess/dutyes.go +++ b/gin_server_admin/api/admin/dutyassess/dutyes.go @@ -75,12 +75,17 @@ func JudgeDetailsCopyEs(ascription, departStr string, sunTargetId int64, detaile eiteCont["dt_title"] = detailedTarget.Title eiteCont["dt_content"] = detailedTarget.Content eiteCont["dt_company"] = detailedTarget.Unit - eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce + if detailedTarget.AddOrReduce > 0 { + eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce + } eiteCont["dt_time"] = time.Now().Unix() - if detailedTarget.Cycles != 0 { - eiteCont["dt_cycle"] = detailedTarget.Cycles - } + // if detailedTarget.Cycles != 0 { + // eiteCont["dt_cycle"] = detailedTarget.Cycles + // } + // if detailedTarget.Cycles != "" { + eiteCont["dt_cycle"] = detailedTarget.Cycles + // } if detailedTarget.CycleAttres != 0 { eiteCont["dt_cycleattr"] = detailedTarget.CycleAttres } @@ -116,12 +121,18 @@ func JudgeDetailsCopyEs(ascription, departStr string, sunTargetId int64, detaile } eiteCont["dt_content"] = detailedTarget.Content eiteCont["dt_company"] = detailedTarget.Unit - eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce + if detailedTarget.AddOrReduce > 0 { + eiteCont["dt_add_reduce"] = detailedTarget.AddOrReduce + } + eiteCont["dt_time"] = time.Now().Unix() - if detailedTarget.Cycles != 0 { - eiteCont["dt_cycle"] = detailedTarget.Cycles - } + // if detailedTarget.Cycles != "" { + // eiteCont["dt_cycle"] = detailedTarget.Cycles + // } + // if detailedTarget.Cycles != 0 { + eiteCont["dt_cycle"] = detailedTarget.Cycles + // } if detailedTarget.CycleAttres != 0 { eiteCont["dt_cycleattr"] = detailedTarget.CycleAttres } @@ -188,13 +199,26 @@ func JudgeDetailsCopyEs(ascription, departStr string, sunTargetId int64, detaile tarEvlWhe := commonus.MapOut() tarEvlWhe["et_id"] = ascriptionId targetInfoCont.GetCont(tarEvlWhe, "et_cycle", "et_cycleattr") + + // intCycles, _ := strconv.Atoi(detailedTarget.Cycles) + // if intCycles > 0 { + // saveColumEs.Cycles = intCycles + // } else { + // if targetInfoCont.Cycles > 1 { + // saveColumEs.Cycles = targetInfoCont.Cycles + // } else { + // saveColumEs.Cycles = 4 + // } + + // } + if detailedTarget.Cycles > 0 { saveColumEs.Cycles = detailedTarget.Cycles } else { if targetInfoCont.Cycles > 1 { saveColumEs.Cycles = targetInfoCont.Cycles } else { - saveColumEs.Cycles = 4 + saveColumEs.Cycles = 0 } } diff --git a/gin_server_admin/api/admin/dutyassess/dutyhandle.go b/gin_server_admin/api/admin/dutyassess/dutyhandle.go index 02b4c20..a285480 100644 --- a/gin_server_admin/api/admin/dutyassess/dutyhandle.go +++ b/gin_server_admin/api/admin/dutyassess/dutyhandle.go @@ -482,7 +482,8 @@ func (d *DutyAssessApi) EiteSunTargetName(c *gin.Context) { } eiteAssContDeite["dt_censor_cont"] = requestData.CensorCont if requestData.CensorRate > 0 { - eiteAssContDeite["dt_censor_rate"] = requestData.CensorRate + // eiteAssContDeite["dt_censor_rate"] = requestData.CensorRate + eiteAssContDeite["dt_cycle"] = requestData.CensorRate } if len(requestData.DepartmentMap) > 0 { eiteAssContDeite["dt_paretment"] = strings.Join(requestData.DepartmentMap, ",") @@ -582,8 +583,8 @@ func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) { var requestData AddQualEval err := c.ShouldBindJSON(&requestData) if err != nil { - response.Result(101, err, "数据获取失败!", c) - return + // response.Result(101, err, "数据获取失败!", c) + // return } if requestData.Group == "" { response.Result(102, err, "请选择归属集团", c) @@ -644,6 +645,7 @@ func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) { global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("`dt_id`").Where("`dt_state` = 1 AND `dt_parentid` = ? AND `dt_parentid_sun` = ?", requestData.Target, sunTargetCont.Id).Find(&oldId) //遍历指标细则 var targetContList []DutyAssEssTarget + var newAddId []int64 for _, v := range requestData.EvaluationList { // detailedTargetInfo, dtiIsTrue := commonus.JudgeDetails(requestData.Target, v.Title, v.Content, v.DetailedTarget, sunTargetCont.Id) @@ -730,34 +732,43 @@ func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) { } if judgeARTErr == nil { + var eiteTarList []DutyAssEssTarget // var eiteId []int64 if arTaegetInfo.Content != "" && arTaegetInfo.Content != "null" { var tarList []DutyAssEssTarget jsonErr := json.Unmarshal([]byte(arTaegetInfo.Content), &tarList) if jsonErr == nil { - if len(tarList) > len(targetContList) { - for _, tl_v := range tarList { - - tarInfo, tarInfoErr := JudgeDeiScor(tl_v.Id, targetContList) - if tarInfoErr == false { - eiteTarList = append(eiteTarList, tarInfo) - } else { - eiteTarList = append(eiteTarList, tl_v) - } - } - } else { - for _, ttl_v := range targetContList { - tarInfo, tarInfoErr := JudgeDeiScor(ttl_v.Id, tarList) - if tarInfoErr == true { - eiteTarList = append(eiteTarList, tarInfo) - } else { - eiteTarList = append(eiteTarList, ttl_v) - } - + // if len(tarList) > len(targetContList) { + // for _, tl_v := range tarList { + + // tarInfo, tarInfoErr := JudgeDeiScor(tl_v.Id, targetContList) + // if tarInfoErr == false { + // eiteTarList = append(eiteTarList, tarInfo) + // } else { + // eiteTarList = append(eiteTarList, tl_v) + // } + // } + // } else { + // for _, ttl_v := range targetContList { + // tarInfo, tarInfoErr := JudgeDeiScor(ttl_v.Id, tarList) + // if tarInfoErr == true { + // eiteTarList = append(eiteTarList, tarInfo) + // } else { + // eiteTarList = append(eiteTarList, ttl_v) + // } + + // } + // } + for _, ttl_v := range targetContList { + eiteTarList = append(eiteTarList, ttl_v) + } + for _, tl_v := range tarList { + _, tarInfoErr := JudgeDeiScor(tl_v.Id, targetContList) + if tarInfoErr == false { + eiteTarList = append(eiteTarList, tl_v) } } - } } else { @@ -789,7 +800,7 @@ func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) { eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", arTaegetInfo.Id).Updates(eiteCont).Error if eiteErr == nil { - response.Result(0, err, "处理成功!", c) + response.Result(0, err, "处理成功!1", c) } else { response.Result(107, err, "请添加测评详情!", c) } @@ -807,7 +818,7 @@ func (d *DutyAssessApi) AddDutyRelation(c *gin.Context) { arTaegetInfo.Time = time.Now().Unix() addErr := global.GVA_DB_Performanceappraisal.Create(&arTaegetInfo).Error if addErr == nil { - response.Result(0, err, "处理成功!", c) + response.Result(0, err, "处理成功!2", c) } else { response.Result(107, err, "请添加测评详情!", c) } @@ -828,13 +839,19 @@ func JudgeDeiScor(id int64, listCont []DutyAssEssTarget) (cont DutyAssEssTarget, //获取定性考核指标关系指定列表 func (d *DutyAssessApi) GetDutyRelationList(c *gin.Context) { - // var sunTargerIdAry []int64 - // errGroup := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`group`,`targetid`,`suntargetid`").Group("`group`,`targetid`,`suntargetid`").Order("`group` ASC").Order("`targetid` ASC").Order("`suntargetid` ASC").Find(&sunTargerIdAry).Error + // var targetAssessAry []assessmentmodel.Assesstarget + // errGroup := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Select("`group`,`targetid`").Group("`group`,`targetid`").Order("`group` ASC").Order("`targetid` ASC").Find(&targetAssessAry).Error // if errGroup != nil { // response.Result(107, errGroup, "没有信息", c) // return // } + // for _,v := range targetAssessAry{ + // var sunIdList + // } + + // response.Result(107, sunTargerIdAry, "没有信息", c) + // return var list []assessmentmodel.Assesstarget err := global.GVA_DB_Performanceappraisal.Order("`group` ASC").Order("`targetid` ASC").Order("`suntargetid` ASC").Find(&list).Error if err != nil { @@ -934,11 +951,14 @@ func (d *DutyAssessApi) LookDutyTargetInfo(c *gin.Context) { // if requestData.DepartId != "" { // goromDb = goromDb.Where("FIND_IN_SET(?,`qe_operator`)", requestData.DepartId) // } + assErr := goromDb.Find(&assessInfoList).Error if assErr != nil { response.Result(105, assErr, "没有获取到数据!", c) return } + // response.Result(104, assessInfoList, "参数错误!无法获取数据", c) + // return var uotContAry []TargetContOutCont for _, v := range assessInfoList { var uotCont TargetContOutCont @@ -992,7 +1012,7 @@ func (d *DutyAssessApi) LookDutyTargetInfo(c *gin.Context) { // } else { // isShow = true // } - // fmt.Printf("isShow-------->%v-------->%v-------->%v---->%v\n", isShow, requestData.DepartId, sunTarDepartMap, v.SunTargetId) + fmt.Printf("isShow-------->%v-------->%v-------->%v---->%v\n", isShow, requestData.DepartId, sunTarDepartMap, v.SunTargetId) if isShow == true { uotCont.TargetSunName = info.Title //拆解指标详情 @@ -1046,7 +1066,7 @@ func (d *DutyAssessApi) LookDutyTargetInfo(c *gin.Context) { } } - fmt.Printf("isShowTar-------->%v---->%v---->%v\n", isShowTar, requestData.DepartId, dtCont) + fmt.Printf("isShowTar------isShowTar-->%v--requestData-->%v--DepartId-->%v--dtCont-->%v\n", isShowTar, requestData, requestData.DepartId, dtCont) if isShowTar == true { uotCont.DetailedTargetName = dtCont.Title uotCont.Content = dtCont.Content @@ -1146,6 +1166,12 @@ func (d *DutyAssessApi) NewDelTarGet(c *gin.Context) { response.Result(105, err, "你当前要删除的项目已经使用!请不要删除!以免造成正在进行的审批统计产生数据误差!", c) return } + var oldAssEssData []assessmentmodel.Assesstarget + global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Find(&oldAssEssData) + if len(oldAssEssData) > 0 { + assessAttbar(oldAssEssData) + } + // response.Result(0, oldAssEssData, "删除成功!", c) delErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Delete(&assessmentmodel.Assesstarget{}).Error if delErr != nil { response.Result(106, delErr, "删除失败!", c) @@ -1154,6 +1180,53 @@ func (d *DutyAssessApi) NewDelTarGet(c *gin.Context) { response.Result(0, delErr, "删除成功!", c) } +//执行附属软删除 +func assessAttbar(oldAssEssData []assessmentmodel.Assesstarget) { + var targetId []int64 + var targetSunId []int64 + var detaredTargetSunId []int64 + for _, v := range oldAssEssData { + if commonus.IsItTrue(v.TargetId, targetId) == false { + targetId = append(targetId, v.TargetId) + } + + if commonus.IsItTrue(v.SunTargetId, targetSunId) == false { + targetSunId = append(targetSunId, v.SunTargetId) + } + var duyEssTarget []DutyAssEssTarget + duyTarJsonErr := json.Unmarshal([]byte(v.Content), &duyEssTarget) + if duyTarJsonErr == nil { + if len(duyEssTarget) > 0 { + for _, dv := range duyEssTarget { + if commonus.IsItTrue(dv.Id, detaredTargetSunId) == false { + detaredTargetSunId = append(detaredTargetSunId, dv.Id) + } + + } + } + } + } + // if len(targetId) > 0 { + // saveTarData := commonus.MapOut() + // saveTarData["et_state"] = 3 + // saveTarData["et_time"] = time.Now().Unix() + // global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Where("`et_id` IN ?", targetId).Updates(&saveTarData) + // } + if len(targetSunId) > 0 { + saveSunTarData := commonus.MapOut() + saveSunTarData["q_state"] = 3 + saveSunTarData["q_time"] = time.Now().Unix() + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` IN ?", targetSunId).Updates(&saveSunTarData) + } + if len(detaredTargetSunId) > 0 { + saveTarData := commonus.MapOut() + saveTarData["dt_time"] = time.Now().Unix() + saveTarData["dt_state"] = 3 + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Where("`dt_id` IN ?", detaredTargetSunId).Updates(&saveTarData) + } + // panic(detaredTargetSunId) +} + //获取被修改指标细则的详情 func (d *DutyAssessApi) GetNewEiteDetailedTarget(c *gin.Context) { var requestData GetDeitalTarCont @@ -1199,6 +1272,8 @@ func (d *DutyAssessApi) GetNewEiteDetailedTarget(c *gin.Context) { outPutCont.CensorType = cenType outPutCont.CensorCont = cont.CensorCont outPutCont.CensorRate = cont.CensorRate + + outPutCont.AddReduce = cont.AddReduce //单位 outPutCont.Unit = cont.Company if cont.MinScore > 0 && cont.MaxScore > 0 { @@ -1315,8 +1390,9 @@ func (d *DutyAssessApi) NewEiteDetailedTarget(c *gin.Context) { detailedTarget.Content = requestData.DetailedTargetContent //`json:"content"` //指标说明 detailedTarget.Unit = requestData.Unit //`json:"unit"` //单位 detailedTarget.ReferenceScore = requestData.Score //`json:"referencescore"` //标准分值 - detailedTarget.Cycles = requestData.Cycles //`json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 - detailedTarget.CycleAttres = requestData.CycleAttres // `json:"cycleattr"` //辅助计数 + // detailedTarget.Cycles = fmt.Sprintf("%v", requestData.Cycles) //`json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + detailedTarget.Cycles = requestData.Cycles //`json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 + detailedTarget.CycleAttres = requestData.CycleAttres // `json:"cycleattr"` //辅助计数 // detailedTarget.DepartmentId =requestData. `json:"parentid"` //执行考核部门ID detailedTarget.Operator = requestData.Operator //`json:"userlist"` //考核执行人 // detailedTarget.MinScore =requestData. //`json:"minscore"` //最小分*100保存 diff --git a/gin_server_admin/api/admin/dutyassess/planversio.go b/gin_server_admin/api/admin/dutyassess/planversio.go index 12b4c82..4fffdab 100644 --- a/gin_server_admin/api/admin/dutyassess/planversio.go +++ b/gin_server_admin/api/admin/dutyassess/planversio.go @@ -167,6 +167,12 @@ func (d *DutyAssessApi) AddDepartDutyVersio(c *gin.Context) { savePlanVersio.State = judgeState savePlanVersio.AddTime = todyTime savePlanVersio.EiteTime = todyTime + if len(requestData.Child) > 0 { + planJsonCont, planJsonErr := json.Marshal(requestData.Child) + if planJsonErr == nil { + savePlanVersio.Content = string(planJsonCont) + } + } // response.Result(0, savePlanVersio, "添加成功!", c) // return @@ -174,7 +180,7 @@ func (d *DutyAssessApi) AddDepartDutyVersio(c *gin.Context) { for _, v := range requestData.Child { //维度 commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, "", int64(v.ZhiFraction), 1) //添加维度权重 for _, tar_v := range v.Child { //指标 - if tar_v.Status == 1 { + if tar_v.Status == 1 || tar_v.Status == 3 { targetId, _ := strconv.ParseInt(tar_v.Id, 10, 64) //指标ID转换 evalTarCont, evalTarContErr := commonus.GetTargetInfo(targetId) //获取指标内容 if evalTarContErr == true { @@ -246,16 +252,22 @@ func (d *DutyAssessApi) AddDepartDutyVersio(c *gin.Context) { detailedListErr := json.Unmarshal([]byte(ass_v.Content), &detailedList) if detailedListErr == nil { for _, det_v := range detailedList { - guoDuCont.DetailedTarget = det_v.Id - guoDuCont.Operator = det_v.Operator - guoDu = append(guoDu, guoDuCont) - fmt.Printf("Targer---6---->%v---->%v---->%v\n", ass_v.TargetId, ass_v.SunTargetId, det_v.Id) + var deparmentStr string + deErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("`dt_paretment`").Where("`dt_id` = ? AND (FIND_IN_SET(?,`dt_paretment`) OR `dt_paretment` = '')", det_v.Id, departId).First(&deparmentStr).Error + if deErr == nil { + if deparmentStr != "" { + guoDuCont.DetailedTarget = det_v.Id + guoDuCont.Operator = det_v.Operator + guoDu = append(guoDu, guoDuCont) + } + } + fmt.Printf("Targer---7---->%v---->%v---->%v---->%v---->%v\n", det_v.Id, departId, deparmentStr, guoDu, deErr) } } else { - guoDu = append(guoDu, guoDuCont) + // guoDu = append(guoDu, guoDuCont) } } else { - guoDu = append(guoDu, guoDuCont) + // guoDu = append(guoDu, guoDuCont) } } @@ -334,6 +346,10 @@ func (d *DutyAssessApi) AddDepartDutyVersio(c *gin.Context) { } } } + + // saveDataJsonmww, _ := json.Marshal(saveDataAry) + // fmt.Printf("Targer---19---->%v\n", string(saveDataJsonmww)) + // panic(saveDataAry) if len(saveDataAry) > 0 { affairDb := global.GVA_DB_Performanceappraisal.Begin() @@ -526,7 +542,8 @@ func (d *DutyAssessApi) OnOffDepartDutyVersio(c *gin.Context) { eiteOtherData := commonus.MapOut() eiteOtherData["state"] = 2 eiteOtherData["eitetime"] = time.Now().Unix() - global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Where("`group` = ? AND `department` = ? AND `yeares` = ?", ContInfo.Group, ContInfo.Department, ContInfo.Year).Updates(eiteOtherData) + // global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Where("`group` = ? AND `department` = ? AND `yeares` = ?", ContInfo.Group, ContInfo.Department, ContInfo.Year).Updates(eiteOtherData) + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Where("`group` = ? AND `department` = ?", ContInfo.Group, ContInfo.Department).Updates(eiteOtherData) } eiteData := commonus.MapOut() diff --git a/gin_server_admin/api/admin/systemuser/systemmenu.go b/gin_server_admin/api/admin/systemuser/systemmenu.go index a2102f8..8f1d73e 100644 --- a/gin_server_admin/api/admin/systemuser/systemmenu.go +++ b/gin_server_admin/api/admin/systemuser/systemmenu.go @@ -101,7 +101,8 @@ func (s *SysTemMenuApi) GetMenuList(c *gin.Context) { //添加菜单 func (s *SysTemMenuApi) AddMenu(c *gin.Context) { - isTrue, userCont := commonus.AdminClientIdentity() + // isTrue, userCont := commonus.AdminClientIdentity() + isTrue, userCont := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return @@ -128,17 +129,17 @@ func (s *SysTemMenuApi) AddMenu(c *gin.Context) { // response.Result(105, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) // return // } - var menuCont systemuser.SystemMenu - judgeErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_title` = ?", requestData.Title).First(&menuCont).Error - if judgeErr == nil { - response.Result(106, isTrue, "该菜单名称已经存在!请不要重复添加!", c) - return - } - judgeUrlErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_url` = ?", requestData.MenuUrl).First(&menuCont).Error - if judgeUrlErr == nil { - response.Result(107, isTrue, "该菜单URL已经存在!请不要重复添加!", c) - return - } + // var menuCont systemuser.SystemMenu + // judgeErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_title` = ?", requestData.Title).First(&menuCont).Error + // if judgeErr == nil { + // response.Result(106, isTrue, "该菜单名称已经存在!请不要重复添加!", c) + // return + // } + // judgeUrlErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_url` = ?", requestData.MenuUrl).First(&menuCont).Error + // if judgeUrlErr == nil { + // response.Result(107, isTrue, "该菜单URL已经存在!请不要重复添加!", c) + // return + // } var saveMenu systemuser.SystemMenu saveMenu.Title = requestData.Title saveMenu.State = 1 @@ -146,7 +147,7 @@ func (s *SysTemMenuApi) AddMenu(c *gin.Context) { saveMenu.ApiUrl = requestData.MenuUrl saveMenu.Time = time.Now().Unix() saveMenu.EiteTime = time.Now().Unix() - userKey, userKeyErr := strconv.ParseInt(userCont.UserKey, 10, 64) + userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) if userKeyErr == nil { saveMenu.UserId = userKey } @@ -161,7 +162,8 @@ func (s *SysTemMenuApi) AddMenu(c *gin.Context) { //修改菜单 func (s *SysTemMenuApi) EiteMenu(c *gin.Context) { - isTrue, _ := commonus.AdminClientIdentity() + // isTrue, _ := commonus.AdminClientIdentity() + isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return @@ -229,7 +231,8 @@ func eiteAssEssInfoCont(saveId int64, saveData map[string]interface{}) (menuErr //菜单删除 func (s *SysTemMenuApi) DelMenu(c *gin.Context) { - isTrue, _ := commonus.AdminClientIdentity() + // isTrue, _ := commonus.AdminClientIdentity() + isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return @@ -285,7 +288,8 @@ func (s *SysTemMenuApi) DelMenu(c *gin.Context) { //添加菜单操作 func (s *SysTemMenuApi) AddMenuOperation(c *gin.Context) { - isTrue, _ := commonus.AdminClientIdentity() + // isTrue, _ := commonus.AdminClientIdentity() + isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return @@ -331,7 +335,8 @@ func (s *SysTemMenuApi) AddMenuOperation(c *gin.Context) { //删除菜单操作 func (s *SysTemMenuApi) DelMenuOperation(c *gin.Context) { - isTrue, _ := commonus.AdminClientIdentity() + // isTrue, _ := commonus.AdminClientIdentity() + isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return diff --git a/gin_server_admin/api/index/assessment/assesshandle.go b/gin_server_admin/api/index/assessment/assesshandle.go index 2f2c974..2485bdc 100644 --- a/gin_server_admin/api/index/assessment/assesshandle.go +++ b/gin_server_admin/api/index/assessment/assesshandle.go @@ -28,6 +28,54 @@ func (a *Assessment) Index(c *gin.Context) { //扫码登录回传 func (a *Assessment) ScanCode(c *gin.Context) { + var requestData scanCodeStr + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "参数错误!请重新提交!", c) + return + } + var redisAdminInfo commonus.ScanCodeLogin + redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(5) + redisKey := fmt.Sprintf("ScanCode:Authentication:LoginApi_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, requestData.UserKey) + + tokenInfo, isTrue := redisClient.HashGetAll(redisKey) + if isTrue != true { + outData := commonus.MapOut() + outData["redisKey"] = redisKey + outData["tokenInfo"] = tokenInfo + outData["isTrue"] = isTrue + response.Result(102, outData, "验证失败!不允许登录!", c) + return + } + identityErr := mapstructure.Decode(tokenInfo, &redisAdminInfo) + if identityErr != nil { + response.Result(103222, redisKey, "验证失败!不允许登录!", c) + return + } + if requestData.UserToken != redisAdminInfo.UserToken { + yanzheng := commonus.MapOut() + yanzheng["User"] = redisAdminInfo + yanzheng["redisKey"] = redisKey + yanzheng["UserToken"] = requestData.UserToken + yanzheng["RedisUserToken"] = redisAdminInfo.UserToken + response.Result(104, yanzheng, "验证失败!不允许登录!", c) + return + } + sendData := commonus.MapOut() + sendData["key"] = redisAdminInfo.UserKey + sendData["token"] = redisAdminInfo.UserToken + sendData["userinfo"] = redisAdminInfo + var jurisDiction []int64 + json.Unmarshal([]byte(redisAdminInfo.Jurisdiction), &jurisDiction) + sendData["Jurisdiction"] = jurisDiction + var menuOper []int64 + json.Unmarshal([]byte(redisAdminInfo.MenuOper), &menuOper) + sendData["MenuOper"] = menuOper + response.Result(0, sendData, "用户端获取成功", c) +} + +func (a *Assessment) ScanCodeOld(c *gin.Context) { var requestData scanCodeStr err := c.ShouldBindJSON(&requestData) if err != nil { diff --git a/gin_server_admin/api/index/enter.go b/gin_server_admin/api/index/enter.go index 404d0bf..321ac1c 100644 --- a/gin_server_admin/api/index/enter.go +++ b/gin_server_admin/api/index/enter.go @@ -4,12 +4,14 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/api/index/assessment" "github.com/flipped-aurora/gin-vue-admin/server/api/index/evaluation" "github.com/flipped-aurora/gin-vue-admin/server/api/index/examineandapprove" + "github.com/flipped-aurora/gin-vue-admin/server/api/index/statistics" ) type ApiGroup struct { AssessMentApi assessment.ApiGroup ExamApproveApi examineandapprove.ApiGroup EvaluationApi evaluation.ApiGroup + StatisticsApi statistics.ApiGroup } var ApiGroupApp = new(ApiGroup) diff --git a/gin_server_admin/api/index/evaluation/assessment.go b/gin_server_admin/api/index/evaluation/assessment.go index 0c0567a..4f7a988 100644 --- a/gin_server_admin/api/index/evaluation/assessment.go +++ b/gin_server_admin/api/index/evaluation/assessment.go @@ -1,6 +1,7 @@ package evaluation import ( + "encoding/json" "fmt" "strconv" @@ -18,12 +19,15 @@ func (e *EvaluationInterface) NewQualitative(c *gin.Context) { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } + var requestData NewQualType err := c.ShouldBindJSON(&requestData) if err != nil { // response.Result(102, err, "数据获取失败!", c) // return } + userContJson, _ := json.Marshal(userCont) + fmt.Printf("userCont----------------->%v\n", string(userContJson)) var qualEvaList []NewQualOutList gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("DISTINCT qe_group,qe_accept_evaluation,qe_dimension,qe_target,et_title").Joins("left join evaluationtarget on evaluationtarget.et_id = qualitative_evaluation.qe_target").Where("`qe_type` = 1 AND `qe_state` = 1 AND FIND_IN_SET(?,`qe_operator`)", userCont.Key) if requestData.Group != "" { diff --git a/gin_server_admin/api/index/evaluation/evaluation.go b/gin_server_admin/api/index/evaluation/evaluation.go index 3ee9b2a..192f736 100644 --- a/gin_server_admin/api/index/evaluation/evaluation.go +++ b/gin_server_admin/api/index/evaluation/evaluation.go @@ -965,11 +965,20 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { flowLog.Key = keyNumber flowLog.Time = time.Now().Unix() flowLog.EiteTime = time.Now().Unix() - flowLog.Year = commonus.ComputingTime(operationTime, 1) - flowLog.Quarter = commonus.ComputingTime(operationTime, 2) - flowLog.Month = commonus.ComputingTime(operationTime, 3) - flowLog.Week = commonus.ComputingTime(operationTime, 4) - flowLog.ToDay = commonus.ComputingTime(operationTime, 5) + if requestData.Addtime != "" { + timeOccurrence := commonus.DateToTimeStamp(requestData.Addtime) //发生时间 + flowLog.Year = commonus.ComputingTime(timeOccurrence, 1) + flowLog.Quarter = commonus.ComputingTime(timeOccurrence, 2) + flowLog.Month = commonus.ComputingTime(timeOccurrence, 3) + flowLog.Week = commonus.ComputingTime(timeOccurrence, 4) + flowLog.ToDay = commonus.ComputingTime(timeOccurrence, 5) + } else { + flowLog.Year = commonus.ComputingTime(operationTime, 1) + flowLog.Quarter = commonus.ComputingTime(operationTime, 2) + flowLog.Month = commonus.ComputingTime(operationTime, 3) + flowLog.Week = commonus.ComputingTime(operationTime, 4) + flowLog.ToDay = commonus.ComputingTime(operationTime, 5) + } flowLog.EvaluationDepartment = departmentId flowLog.EvaluationUser = userKey diff --git a/gin_server_admin/api/index/evaluation/flowsend.go b/gin_server_admin/api/index/evaluation/flowsend.go index df8509d..9a92610 100644 --- a/gin_server_admin/api/index/evaluation/flowsend.go +++ b/gin_server_admin/api/index/evaluation/flowsend.go @@ -58,6 +58,15 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c) return } + tijaoFenshu := commonus.GetDuyCycle(requestData.Score, 100) + if tijaoFenshu > programme.MaxScore { + response.Result(107, requestData, fmt.Sprintf("您提交的分数操作允许提交的最大值(最大值:%v)!", float64(programme.MaxScore)/100), c) + return + } + if tijaoFenshu < programme.MinScore { + response.Result(107, requestData, fmt.Sprintf("您提交的分数操作允许提交的最大值(最小值:%v)!", float64(programme.MinScore)/100), c) + return + } case 1: //获取分数 requestData.Score = strconv.FormatInt(programme.MaxScore, 10) @@ -91,8 +100,11 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { addScore.Reason = requestData.Reason //操作原因 addScore.Time = operationTime addScore.EiteTime = operationTime - addScore.Count = countFrequency //发生次数 - addScore.HappenTime = commonus.DateToTimeStamp(requestData.Addtime) //发生时间 + addScore.Count = countFrequency //发生次数 + + timeOccurrence := commonus.DateToTimeStamp(requestData.Addtime) //发生时间 + addScore.HappenTime = timeOccurrence + // addScore.HappenTime = commonus.DateToTimeStamp(requestData.Addtime) //发生时间 departmentId, departmentIdErr := strconv.ParseInt(userCont.Deparment, 10, 64) if departmentIdErr == nil { addScore.EvaluationDepartment = departmentId //测评部门 @@ -106,10 +118,14 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) { addScore.EvaluationGroup = userGroup //测评集团 } //获取拆分时间节 - addScore.Year = commonus.ComputingTime(operationTime, 1) - addScore.Quarter = commonus.ComputingTime(operationTime, 2) - addScore.Month = commonus.ComputingTime(operationTime, 3) - addScore.Week = commonus.ComputingTime(operationTime, 4) + addScore.Year = commonus.ComputingTime(timeOccurrence, 1) + addScore.Quarter = commonus.ComputingTime(timeOccurrence, 2) + addScore.Month = commonus.ComputingTime(timeOccurrence, 3) + addScore.Week = commonus.ComputingTime(timeOccurrence, 4) + // addScore.Year = commonus.ComputingTime(operationTime, 1) + // addScore.Quarter = commonus.ComputingTime(operationTime, 2) + // addScore.Month = commonus.ComputingTime(operationTime, 3) + // addScore.Week = commonus.ComputingTime(operationTime, 4) if len(requestData.Enclosure) > 0 { enclosure, enclosureErr := json.Marshal(requestData.Enclosure) if enclosureErr == nil { diff --git a/gin_server_admin/api/index/evaluation/type.go b/gin_server_admin/api/index/evaluation/type.go index 2452494..dd49613 100644 --- a/gin_server_admin/api/index/evaluation/type.go +++ b/gin_server_admin/api/index/evaluation/type.go @@ -120,6 +120,7 @@ type CorrectiveMeasuresType struct { type AddRationFlowLog struct { GroupId string `json:"groupid"` DepartmentID string `json:"departmentid"` + Addtime string `json:"time"` //检查时间 List []RationLogList `json:"list"` } diff --git a/gin_server_admin/api/index/statistics/enter.go b/gin_server_admin/api/index/statistics/enter.go new file mode 100644 index 0000000..f32b9e1 --- /dev/null +++ b/gin_server_admin/api/index/statistics/enter.go @@ -0,0 +1,4 @@ +package statistics + +//统计 +type ApiGroup struct{} diff --git a/gin_server_admin/api/index/statistics/programme.go b/gin_server_admin/api/index/statistics/programme.go new file mode 100644 index 0000000..d81da93 --- /dev/null +++ b/gin_server_admin/api/index/statistics/programme.go @@ -0,0 +1,33 @@ +package statistics + +import ( + "strconv" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +//考核入口 +func (a *ApiGroup) Index(c *gin.Context) { + outPut := commonus.MapOut() + response.Result(0, outPut, "方案数据表格获取成功", c) +} + +//方案数据表格统计 +func (a *ApiGroup) PlanVersioStatistics(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 != "" && requestData.Id == 0 { + idInt, _ := strconv.ParseInt(requestData.OutId, 10, 64) + requestData.Id = idInt + } +} diff --git a/gin_server_admin/api/statistics/enter.go b/gin_server_admin/api/statistics/enter.go index bee80a1..1e00524 100644 --- a/gin_server_admin/api/statistics/enter.go +++ b/gin_server_admin/api/statistics/enter.go @@ -1,9 +1,13 @@ package statistics -import "github.com/flipped-aurora/gin-vue-admin/server/api/statistics/nature" +import ( + "github.com/flipped-aurora/gin-vue-admin/server/api/statistics/nature" + "github.com/flipped-aurora/gin-vue-admin/server/api/statistics/quantification" +) type ApiGroup struct { NatureApi nature.ApiGroup + QuantApi quantification.ApiGroup } var ApiGroupApp = new(ApiGroup) diff --git a/gin_server_admin/api/statistics/nature/enter.go b/gin_server_admin/api/statistics/nature/enter.go index f52d868..ab95e54 100644 --- a/gin_server_admin/api/statistics/nature/enter.go +++ b/gin_server_admin/api/statistics/nature/enter.go @@ -9,17 +9,17 @@ type getTargetId[T any] struct { //定性考核查询参数 type natureParameter struct { - TargetId []string `json:"targetid"` //指标 - Org []string `json:"org"` //行政组织 - Year []string `json:"year"` //年 - TimeAttribute []TimeAttributeMap `json:"timeattribute"` //时间辅助 - AccMethod []int `json:"accmethod"` //核算方式 1:合计值;2:平均值 + TargetId []string `json:"targetid"` //指标 + Org []string `json:"org"` //行政组织 + Year []string `json:"year"` //年 + TimeAttribute TimeAttributeMap `json:"timeattribute"` //时间辅助 + AccMethod []int `json:"accmethod"` //核算方式 1:合计值;2:平均值 } //时间属性 type TimeAttributeMap struct { Class int `json:"class"` //0:全年;1:半年;2:季度;3:月度 - Time []int `json:"time"` //class->0(0),class->1(1:上半年,2:下半年),class->2(1:第一季度,2:第二季度,3:第三季度,4:第四季度),class->3(1:1月....12:12月) + Time []int `json:"time"` //class->0(0),Time->1(1:上半年,2:下半年),class->2(1:第一季度,2:第二季度,3:第三季度,4:第四季度),class->3(1:1月....12:12月) } //组织架构 diff --git a/gin_server_admin/api/statistics/nature/statistics.go b/gin_server_admin/api/statistics/nature/statistics.go index e9f95e3..cc09c68 100644 --- a/gin_server_admin/api/statistics/nature/statistics.go +++ b/gin_server_admin/api/statistics/nature/statistics.go @@ -214,8 +214,64 @@ func (a *ApiGroup) NatureStatistics(c *gin.Context) { return } if len(requestData.TargetId) < 1 { - response.Result(102, err, "未获取到指标", c) + response.Result(103, err, "未获取到指标", c) + return + } + for _, v := range requestData.TargetId { + calculationEvaluation(v, requestData) + } +} + +//计算指标相关数值 +func calculationEvaluation(taskId string, dataAry natureParameter) (err error) { + var scorFlowList []assessmentmodel.ScoreFlow + gormDb := global.GVA_DB_Performanceappraisal.Where("`sf_evaluation_plan` = ?", taskId) + if len(dataAry.Year) > 0 { + gormDb = gormDb.Where("`sf_year` IN ?", dataAry.Year) + switch dataAry.TimeAttribute.Class { + case 1: + var monthAry []int + for _, v := range dataAry.TimeAttribute.Time { + if v == 1 { + for i := 1; i < 7; i++ { + monthAry = append(monthAry, i) + } + } + if v == 2 { + for j := 7; j < 13; j++ { + monthAry = append(monthAry, j) + } + } + } + if len(monthAry) > 0 { + gormDb = gormDb.Where("`sf_month` IN ?", monthAry) + } + case 2: + var quarterAry []int + for _, v := range dataAry.TimeAttribute.Time { + quarterAry = append(quarterAry, v) + } + if len(quarterAry) > 0 { + gormDb = gormDb.Where("`sf_quarter` IN ?", quarterAry) + } + case 3: + var monthAry []int + for _, v := range dataAry.TimeAttribute.Time { + monthAry = append(monthAry, v) + } + if len(monthAry) > 0 { + gormDb = gormDb.Where("`sf_month` IN ?", monthAry) + } + default: + + } + } + if len(dataAry.Org) > 0 { + gormDb = gormDb.Where("`sf_duty_department` IN ?", dataAry.Org) + } + err = gormDb.Find(&scorFlowList).Error + if err != nil { return } - // var scoreFlow [] + return } diff --git a/gin_server_admin/api/statistics/quantification/auxiliarycalculation.go b/gin_server_admin/api/statistics/quantification/auxiliarycalculation.go new file mode 100644 index 0000000..4505b53 --- /dev/null +++ b/gin_server_admin/api/statistics/quantification/auxiliarycalculation.go @@ -0,0 +1,965 @@ +package quantification + +import ( + "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" +) + +//获取总值 +func AuxiliaryCalculationSum(where interface{}) (sumScore float64) { + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Joins("left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log").Where(where) + gormDb.Pluck("COALESCE(SUM(fld_score), 0) as rescore", &sumScore) + return +} + +//获取总数 +func AuxiliaryCalculationCount(where interface{}) (sumScore float64) { + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Joins("left join flow_log as fl on fl.fl_key = flow_log_data.fld_flow_log").Where(where) + gormDb.Pluck("COALESCE(COUNT(fld_id), 0) as countid", &sumScore) //获取总数 + return +} + +//计算总值和平均值 +func AverageOfSum(where interface{}, class ...int) (sumScore float64, averageScore float64) { + sumScore = AuxiliaryCalculationSum(where) / 100 + if len(class) > 0 { + countPage := AuxiliaryCalculationCount(where) + if countPage > 0 { + averageScore = sumScore / countPage + } + } + if sumScore != 0 { + sumScore = commonus.Decimal(sumScore) + } + if averageScore != 0 { + averageScore = commonus.Decimal(averageScore) + } + return +} + +//时间推算 +/* +@dataAry 接收的界定参数 +*/ +func EstimatedTime(dataAry natureParameter) (timeFrame []TimeFrame) { + if len(dataAry.Year) > 0 { + switch dataAry.TimeAttribute.Class { + case 1: + for _, yearV := range dataAry.Year { + if len(dataAry.TimeAttribute.Time) > 0 { + for _, banYearVal := range dataAry.TimeAttribute.Time { + if banYearVal == 1 { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v上半年", yearV) + timeFrameInfo.Class = 1 + timeFrameInfo.YearName = yearV + timeFrameInfo.Where = []int{1, 2, 3, 4, 5, 6} + timeFrame = append(timeFrame, timeFrameInfo) + } + if banYearVal == 2 { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v下半年", yearV) + timeFrameInfo.Class = 1 + timeFrameInfo.YearName = yearV + timeFrameInfo.Where = []int{7, 8, 9, 10, 11, 12} + timeFrame = append(timeFrame, timeFrameInfo) + } + } + } else { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v上半年", yearV) + timeFrameInfo.Class = 1 + timeFrameInfo.YearName = yearV + timeFrameInfo.Where = []int{1, 2, 3, 4, 5, 6} + timeFrame = append(timeFrame, timeFrameInfo) + var timeFrameInfoXia TimeFrame + timeFrameInfoXia.XLine = fmt.Sprintf("%v下半年", yearV) + timeFrameInfoXia.Class = 1 + timeFrameInfoXia.YearName = yearV + timeFrameInfoXia.Where = []int{7, 8, 9, 10, 11, 12} + timeFrame = append(timeFrame, timeFrameInfoXia) + } + } + + case 2: + if len(dataAry.TimeAttribute.Time) > 0 && len(dataAry.TimeAttribute.Time) < 5 { + for _, quarV := range dataAry.TimeAttribute.Time { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v季度", quarV) + timeFrameInfo.Class = 2 + timeFrameInfo.YearName = fmt.Sprintf("%v", quarV) + timeFrameInfo.Where = append(timeFrameInfo.Where, quarV) + timeFrame = append(timeFrame, timeFrameInfo) + } + } else { + for i := 1; i < 5; i++ { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v季度", i) + timeFrameInfo.Class = 2 + timeFrameInfo.YearName = fmt.Sprintf("%v", i) + timeFrameInfo.Where = append(timeFrameInfo.Where, i) + timeFrame = append(timeFrame, timeFrameInfo) + } + } + case 3: + if len(dataAry.TimeAttribute.Time) > 0 { + for _, monthV := range dataAry.TimeAttribute.Time { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v月", monthV) + timeFrameInfo.Class = 3 + timeFrameInfo.YearName = fmt.Sprintf("%v", monthV) + timeFrameInfo.Where = append(timeFrameInfo.Where, monthV) + timeFrame = append(timeFrame, timeFrameInfo) + } + } else { + for i := 1; i < 13; i++ { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v月", i) + timeFrameInfo.Class = 3 + timeFrameInfo.YearName = fmt.Sprintf("%v", i) + timeFrameInfo.Where = append(timeFrameInfo.Where, i) + timeFrame = append(timeFrame, timeFrameInfo) + } + } + default: + for _, yv := range dataAry.Year { + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v年", yv) + timeFrameInfo.Class = 0 + yearInt, _ := strconv.Atoi(yv) + timeFrameInfo.Where = append(timeFrameInfo.Where, yearInt) + timeFrame = append(timeFrame, timeFrameInfo) + } + } + } else { + dangQianTime := time.Now().Unix() + dangQianYear := commonus.TimeStampToDate(dangQianTime, 11) + var timeFrameInfo TimeFrame + timeFrameInfo.XLine = fmt.Sprintf("%v年", dangQianYear) + timeFrameInfo.Class = 0 + yearInt, _ := strconv.Atoi(dangQianYear) + timeFrameInfo.Where = append(timeFrameInfo.Where, yearInt) + timeFrame = append(timeFrame, timeFrameInfo) + } + return +} + +//时间维度统计计算 +/* +@taskId 执行中的考核方案ID +@dataAry 接收的界定参数 +*/ +func TimeDimensionStatistics(taskId string, dataAry natureParameter) (outputData GraphicStatistics, outErr bool) { + outErr = true + var normName string = "" + if len(dataAry.TargetId) > 1 { + //当同时查询多个指标时启用 获取指标名称 + var qualEvalCont assessmentmodel.QualitativeEvaluation + qualEvaWhe := commonus.MapOut() + qualEvaWhe["qe_id"] = taskId + qualEvalCont.GetCont(qualEvaWhe, "qe_target") + taskCont, taskErr := commonus.GetTargetInfo(qualEvalCont.Target) + if taskErr == true { + normName = taskCont.Title + outErr = taskErr + } else { + // outErr = error.Error("此考核项目没有数据!") + outErr = taskErr + return + } + } + //以时间维度,获取X坐标轴 + timeFrame := EstimatedTime(dataAry) + //统计方式 + statisticalMethod := 3 + if len(dataAry.AccMethod) == 1 { + if commonus.IsItTrueInt(1, dataAry.AccMethod) == true { + statisticalMethod = 1 + } else { + statisticalMethod = 2 + } + } + + // fmt.Printf("timeFrame--------->%v\n", timeFrame) + // return + //根据时间维度进行统计 + for _, tfv := range timeFrame { + switch tfv.Class { + case 1: + // fmt.Sprintf("KKKKK--------->%v\n", tfv.XLine) + if commonus.IsItTrueString(tfv.XLine, outputData.XLine) == false { + outputData.XLine = append(outputData.XLine, tfv.XLine) + } + monthStr := "(" + for twi, twv := range tfv.Where { + if twi != 0 { + monthStr = fmt.Sprintf("%v,%v", monthStr, twv) + } else { + monthStr = fmt.Sprintf("%v%v", monthStr, twv) + } + + } + monthStr = fmt.Sprintf("%v)", monthStr) + wherStr := fmt.Sprintf("fld_evaluation_id = %v AND `fl_year` = %v AND `fl_month` IN %v", taskId, tfv.YearName, monthStr) + + if len(dataAry.Org) > 0 { + //存在组织结构 + _, orgList := getGroupOrg(dataAry.Org) + if len(orgList) > 0 { + for _, orgv := range orgList { + if orgv.Level <= 2 { + wherStr = fmt.Sprintf("%v AND `fl_duty_group` = %v", wherStr, orgv.Id) + } else { + wherStr = fmt.Sprintf("%v AND `fl_duty_department` = %v", wherStr, orgv.Id) + } + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + } + } else { + //不存在行政组织 + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + + if len(dataAry.AccMethod) > 0 { + if commonus.IsItTrueInt(1, dataAry.AccMethod) == true && commonus.IsItTrueInt(2, dataAry.AccMethod) == true { + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } else if commonus.IsItTrueInt(1, dataAry.AccMethod) == true { + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + } else if commonus.IsItTrueInt(2, dataAry.AccMethod) == true { + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } else { + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + case 2: + //季度 + if commonus.IsItTrueString(tfv.XLine, outputData.XLine) == false { + outputData.XLine = append(outputData.XLine, tfv.XLine) + } + for _, yearVal := range dataAry.Year { + wherStr := fmt.Sprintf("fld_evaluation_id = %v AND `fl_year` = %v AND `fl_quarter` = %v", taskId, yearVal, tfv.YearName) + // fmt.Printf("%v季度\n", yearVal) + if len(dataAry.Org) > 0 { + //存在组织结构 + _, orgList := getGroupOrg(dataAry.Org) + if len(orgList) > 0 { + for _, orgv := range orgList { + if orgv.Level <= 2 { + wherStr = fmt.Sprintf("%v AND `fl_duty_group` = %v", wherStr, orgv.Id) + } else { + wherStr = fmt.Sprintf("%v AND `fl_duty_department` = %v", wherStr, orgv.Id) + } + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + } + + } else { + //不存在行政组织 + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + + } + case 3: + //月 + if commonus.IsItTrueString(tfv.XLine, outputData.XLine) == false { + outputData.XLine = append(outputData.XLine, tfv.XLine) + } + for _, yearVal := range dataAry.Year { + wherStr := fmt.Sprintf("fld_evaluation_id = %v AND `fl_year` = %v AND `fl_month` = %v", taskId, yearVal, tfv.YearName) + + if len(dataAry.Org) > 0 { + //存在组织结构 + _, orgList := getGroupOrg(dataAry.Org) + if len(orgList) > 0 { + for _, orgv := range orgList { + if orgv.Level <= 2 { + wherStr = fmt.Sprintf("%v AND `fl_duty_group` = %v", wherStr, orgv.Id) + } else { + wherStr = fmt.Sprintf("%v AND `fl_duty_department` = %v", wherStr, orgv.Id) + } + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + } + } else { + //不存在行政组织 + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + + } + default: + //全年 + if commonus.IsItTrueString(tfv.XLine, outputData.XLine) == false { + outputData.XLine = append(outputData.XLine, tfv.XLine) + } + + for _, tfwv := range tfv.Where { + wherStr := fmt.Sprintf("fld_evaluation_id = %v AND `fl_year` = %v", taskId, tfwv) + if len(dataAry.Org) > 0 { + //存在组织结构 + _, orgList := getGroupOrg(dataAry.Org) + if len(orgList) > 0 { + for _, orgv := range orgList { + if orgv.Level <= 2 { + wherStr = fmt.Sprintf("%v AND `fl_duty_group` = %v", wherStr, orgv.Id) + } else { + wherStr = fmt.Sprintf("%v AND `fl_duty_department` = %v", wherStr, orgv.Id) + } + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v %v总值", orgv.Name, normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v %v平均值", orgv.Name, normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + } + } else { + //不存在行政组织 + switch statisticalMethod { + case 1: + //合计 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + default: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + } + + } + } + } + // fmt.Println(normName) + return +} + +//行政维度统计计算 +/* +@taskId 执行中的考核方案ID +@dataAry 接收的界定参数 +*/ +func OrgDimensionStatistics(taskId string, dataAry natureParameter) (outputData GraphicStatistics, outErr bool) { + //获取时间参数 + // timeFrame := EstimatedTime(dataAry) + orgAry, orgList := getGroupOrg(dataAry.Org) + fmt.Printf("orgAry====>%v\n", orgAry) + fmt.Printf("orgList-====>%v\n", orgList) + return +} diff --git a/gin_server_admin/api/statistics/quantification/enter.go b/gin_server_admin/api/statistics/quantification/enter.go new file mode 100644 index 0000000..6ed99d6 --- /dev/null +++ b/gin_server_admin/api/statistics/quantification/enter.go @@ -0,0 +1,93 @@ +package quantification + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/hrsystem" + "github.com/gin-gonic/gin" +) + +type ApiGroup struct{} + +//入口 +func (a *ApiGroup) Index(c *gin.Context) { + outPut := commonus.MapOut() + response.Result(0, outPut, "手机量化考核入口", c) +} + +//获取指标ID +type getTargetId[T any] struct { + TargetId []T `json:"targetid"` //指标 +} + +//定性考核查询参数 +type natureParameter struct { + TargetId []string `json:"targetid"` //指标 + Org []string `json:"org"` //行政组织 + Year []string `json:"year"` //年 + TimeAttribute TimeAttributeMap `json:"timeattribute"` //时间辅助 + AccMethod []int `json:"accmethod"` //核算方式 1:合计值;2:平均值 + AnalysisAngle int `json:"analysisangle"` //分析维度 1:行政组织;2:时间 +} + +//时间属性 +type TimeAttributeMap struct { + Class int `json:"class"` //0:全年;1:半年;2:季度;3:月度 + Time []int `json:"time"` //class->0(0),Time->1(1:上半年,2:下半年),class->2(1:第一季度,2:第二季度,3:第三季度,4:第四季度),class->3(1:1月....12:12月) +} + +//组织架构 +type orgModels struct { + Id string `json:"id"` + Name string `json:"name"` + Level int64 `json:level` +} +type orgModelsAry struct { + orgModels + Child []orgModels `json:"child"` +} + +//查询指标数据流水 +type flowLogDataList struct { + Id int64 `json:"id" gorm:"primaryKey;column:fld_id;type:bigint(20) unsigned;not null;comment:Id;index"` + EvaluationPlan int64 `json:"evaluationplan" gorm:"column:fld_evaluation_id;type:bigint(20) unsigned;default:0;not null;comment:考核方案项目ID"` + Key int64 `json:"key" gorm:"column:fld_flow_log;type:bigint(20) unsigned;default:0;not null;comment:识别标志"` + Score int64 `json:"score" gorm:"column:fld_score;type:bigint(20) unsigned;default:0;not null;comment:数据"` + + EvaluationPlanFlow string `json:"evaluationplanflow" gorm:"column:fl_evaluation_id;type:mediumtext unsigned;default:0;not null;comment:考核方案项目ID"` + KeyFlow int64 `json:"keyflow" gorm:"column:fl_key;type:bigint(20) unsigned;default:0;not null;comment:识别标志"` + Year int64 `json:"year" gorm:"column:fl_year;type:int(7) unsigned;default:0;not null;comment:年分"` + Quarter int64 `json:"quarter" gorm:"column:fl_quarter;type:int(2) unsigned;default:0;not null;comment:季度"` + Month int64 `json:"month" gorm:"column:fl_month;type:int(2) unsigned;default:0;not null;comment:月"` + Week int64 `json:"week" gorm:"column:fl_week;type:int(5) unsigned;default:0;not null;comment:周"` + ToDay int64 `json:"today" gorm:"column:fl_day;type:int(5) unsigned;default:0;not null;comment:天"` + DutyGroup int64 `json:"dutygroup" gorm:"column:fl_duty_group;type:bigint(20) unsigned;default:0;not null;comment:职责集团"` + DutyDepartment int64 `json:"dutydepartment" gorm:"column:fl_duty_department;type:bigint(20) unsigned;default:0;not null;comment:职责部门"` +} + +type OutGovCont struct { + hrsystem.AdministrativeOrganization + ClassName string `json:"classname" gorm:"column:classname;type:varchar(255) unsigned;default:'';not null;comment:行政组织分类名称"` + Level int64 `json:"level" gorm:"column:level;type:int(5) unsigned;default:1;not null;comment:级别"` +} + +//时间维度构造 +type TimeFrame struct { + XLine string `json:"xline"` + YearName string `json:"yearname"` + Class int `json:"class"` + Where []int `json:"where"` +} + +//时间维度输出构造 +type GraphicStatistics struct { + XLine []string `json:"xAxis"` //x轴维度 + Cylindrical []string `json:"legend"` //柱形体名称集合 + CylindricalData []series `json:"series"` //柱形体数值集合 +} + +//数值结构体 +type series struct { + Name string `json:"name"` //柱形体名称 + Data []float64 `json:"data"` //对应X轴点位数值 +} diff --git a/gin_server_admin/api/statistics/quantification/quant.go b/gin_server_admin/api/statistics/quantification/quant.go new file mode 100644 index 0000000..f18086d --- /dev/null +++ b/gin_server_admin/api/statistics/quantification/quant.go @@ -0,0 +1,405 @@ +package quantification + +import ( + "fmt" + "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/hrsystem" + "github.com/gin-gonic/gin" +) + +//量化考核图标 +func (a *ApiGroup) GetQuantEChartOrgAndYear(c *gin.Context) { + isTrue, _ := commonus.ClientIdentity() + if isTrue != true { + response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + return + } + var requestData getTargetId[string] + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(102, err, "数据获取失败!", c) + return + } + if len(requestData.TargetId) < 1 { + response.Result(102, err, "未获取到指标", c) + return + } + var accDepart []string + var yearTime []string + var orgMap []orgModelsAry + for _, v := range requestData.TargetId { + var flowLogList []assessmentmodel.FlowLog + floLogErr := global.GVA_DB_Performanceappraisal.Where("FIND_IN_SET(?,`fl_evaluation_id`)", v).Find(&flowLogList).Error + if floLogErr == nil { + for _, fv := range flowLogList { + fvDepartId := strconv.FormatInt(fv.DutyDepartment, 10) + if commonus.IsItTrueString(fvDepartId, accDepart) == false { + accDepart = append(accDepart, fvDepartId) + } + yearStr := strconv.FormatInt(int64(fv.Year), 10) + if commonus.IsItTrueString(yearStr, yearTime) == false { + yearTime = append(yearTime, yearStr) + } + //判断组织架构是否有数据 + if len(orgMap) > 0 { + for oi, ov := range orgMap { + //判断公司是否已经存在 + if ov.Id == strconv.FormatInt(fv.DutyGroup, 10) { + //判断是否有分厂数据 + if len(ov.Child) > 0 { + isYes := true + for _, dv := range ov.Child { + if dv.Id == strconv.FormatInt(fv.DutyDepartment, 10) { + isYes = false //该部门分厂已经存在 + } + } + if isYes == true { + //该部门分厂不存在是添加 + //写入部门 + whereDepart := commonus.MapOut() + whereDepart["id"] = fv.DutyDepartment + orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name") + if orgDepartErr == nil { + var orgDepartMapCont orgModels + orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10) + orgDepartMapCont.Name = orgDepartCont.Name + orgMap[oi].Child = append(orgMap[oi].Child, orgDepartMapCont) + } + } + } else { + //没有分厂数据,根据上级数据进行新增 + if fv.DutyDepartment != 0 { + //写入部门 + whereDepart := commonus.MapOut() + whereDepart["id"] = fv.DutyDepartment + orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name") + if orgDepartErr == nil { + var orgDepartMapCont orgModels + orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10) + orgDepartMapCont.Name = orgDepartCont.Name + orgMap[oi].Child = append(orgMap[oi].Child, orgDepartMapCont) + } + } + } + + } else { + if fv.DutyGroup != 0 { + //写入集团信息 + where := commonus.MapOut() + where["id"] = fv.DutyGroup + orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name") + if orgGroupErr == nil { + var orgMapCont orgModelsAry + orgMapCont.Id = strconv.FormatInt(fv.DutyGroup, 10) + orgMapCont.Name = orgGroupCont.Name + + if fv.DutyDepartment != 0 { + //写入部门 + whereDepart := commonus.MapOut() + whereDepart["id"] = fv.DutyDepartment + orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name") + if orgDepartErr == nil { + var orgDepartMapCont orgModels + orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10) + orgDepartMapCont.Name = orgDepartCont.Name + orgMapCont.Child = append(orgMapCont.Child, orgDepartMapCont) + } + } + orgMap = append(orgMap, orgMapCont) + } + + } + } + } + } else { + //没有数据的时候根据数值进行新增 + if fv.DutyGroup != 0 { + //写入集团信息 + where := commonus.MapOut() + where["id"] = fv.DutyGroup + orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name") + if orgGroupErr == nil { + var orgMapCont orgModelsAry + orgMapCont.Id = strconv.FormatInt(fv.DutyGroup, 10) + orgMapCont.Name = orgGroupCont.Name + + if fv.DutyDepartment != 0 { + //写入部门 + whereDepart := commonus.MapOut() + whereDepart["id"] = fv.DutyDepartment + orgDepartCont, orgDepartErr := commonus.GetNewOrgCont(whereDepart, "name") + if orgDepartErr == nil { + var orgDepartMapCont orgModels + orgDepartMapCont.Id = strconv.FormatInt(fv.DutyDepartment, 10) + orgDepartMapCont.Name = orgDepartCont.Name + orgMapCont.Child = append(orgMapCont.Child, orgDepartMapCont) + } + } + orgMap = append(orgMap, orgMapCont) + } + + } + } + + } + } + } + outMap := commonus.MapOut() + outMap["grouplist"] = orgMap + outMap["timelist"] = yearTime + response.Result(0, outMap, "数据获取失败!", c) +} + +//量化考核图标 +func (a *ApiGroup) QuantEChart(c *gin.Context) { + isTrue, _ := commonus.ClientIdentity() + if isTrue != true { + response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) + return + } + var requestData natureParameter + c.ShouldBindJSON(&requestData) + // err := c.ShouldBindJSON(&requestData) + // if err != nil { + // response.Result(102, err, "数据获取失败!", c) + // return + // } + if len(requestData.TargetId) < 1 { + response.Result(103, requestData, "未获取到指标", c) + return + } + if requestData.AnalysisAngle == 0 { + requestData.AnalysisAngle = 1 + } + outMap := commonus.MapOut() + var graphicStatistics GraphicStatistics + for _, v := range requestData.TargetId { + // var qualEvalCont assessmentmodel.QualitativeEvaluation + // qualEvaWhe := commonus.MapOut() + // qualEvaWhe["qe_id"] = v + // qualEvalCont.GetCont(qualEvaWhe, "qe_target") + // calculationEvaluation(qualEvalCont.Target, requestData) + // calculationEvaluation(v, requestData) + // kjs, kjddd := calculationEvaluation(v, requestData) + // jsonStr, jsonEr := json.Marshal(kjs) + // fmt.Printf("task------------>%v----->%v----->%v\n", string(jsonStr), jsonEr, kjddd) + + // outMap["TimeDimension_"+v] = TimeDimension(v, requestData) + if requestData.AnalysisAngle == 1 { + getStatistics, gstErr := OrgDimensionStatistics(v, requestData) + outMap["TimeDimension_"+v] = getStatistics + if gstErr == true { + } + } else { + //时间维度 + getStatistics, gstErr := TimeDimensionStatistics(v, requestData) + outMap["TimeDimension_"+v] = getStatistics + if gstErr == true { + for _, gsv := range getStatistics.XLine { + if commonus.IsItTrueString(gsv, graphicStatistics.XLine) == false { + graphicStatistics.XLine = append(graphicStatistics.XLine, gsv) + } + } + for _, cilv := range getStatistics.Cylindrical { + if commonus.IsItTrueString(cilv, graphicStatistics.Cylindrical) == false { + graphicStatistics.Cylindrical = append(graphicStatistics.Cylindrical, cilv) + for _, cdv := range getStatistics.CylindricalData { + if cdv.Name == cilv { + graphicStatistics.CylindricalData = append(graphicStatistics.CylindricalData, cdv) + } + } + } + } + } + } + // getStatistics, gstErr := TimeDimensionStatistics(v, requestData) + // fmt.Println(gstErr) + + } + outMap["graphicStatistics"] = graphicStatistics + response.Result(0, graphicStatistics, "图形数据", c) +} + +//获取行政组织 +func getGroupOrg(orgAry []string) (orgMap []orgModelsAry, orgWherList []orgModels) { + + var govMap []OutGovCont + orgErr := global.GVA_DB_HrDataBase.Model(&hrsystem.AdministrativeOrganization{}).Select("administrative_organization.*,aot.name as classname,aot.level").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type").Where("administrative_organization.`state` = 1 AND administrative_organization.id IN ?", orgAry).Find(&govMap).Error + if orgErr != nil { + return + } + // fmt.Printf("%v\n", govMap) + + for _, v := range govMap { + + if len(orgMap) > 0 { + if v.Level > 2 { + groupId, groupIsTrue := commonus.GetNewHrOrg(v.Id) + if groupIsTrue == true { + newAdd := true + for gii, gvv := range orgMap { + if gvv.Id == strconv.FormatInt(groupId, 10) { + newAdd = false + for _, sgv := range orgMap[gii].Child { + if sgv.Id != strconv.FormatInt(v.Id, 10) { + var orgSun orgModels + orgSun.Id = strconv.FormatInt(v.Id, 10) + orgSun.Name = v.Name + orgSun.Level = v.Level + if v.Abbreviation != "" { + orgSun.Name = v.Abbreviation + } + orgMap[gii].Child = append(orgMap[gii].Child, orgSun) + } + } + } + } + if newAdd == true { + where := commonus.MapOut() + where["id"] = groupId + orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name", "organization_type") + + if orgGroupErr == nil { + var groupInfo orgModelsAry + groupInfo.Id = strconv.FormatInt(groupId, 10) + groupInfo.Name = orgGroupCont.Name + if orgGroupCont.Abbreviation != "" { + groupInfo.Name = orgGroupCont.Abbreviation + } + var aotModel hrsystem.AdministrativeOrganizationType + where := commonus.MapOut() + where["id"] = orgGroupCont.OrganizationType + aotModel.GetCont(where, "level") + groupInfo.Level = aotModel.Level + var orgSun orgModels + orgSun.Id = strconv.FormatInt(v.Id, 10) + orgSun.Name = v.Name + if v.Abbreviation != "" { + orgSun.Name = v.Abbreviation + } + orgSun.Level = v.Level + groupInfo.Child = append(groupInfo.Child, orgSun) + orgMap = append(orgMap, groupInfo) + } + } + } + } else { + for _, gv := range orgMap { + if gv.Id != strconv.FormatInt(v.Id, 10) { + var groupInfo orgModelsAry + groupInfo.Id = strconv.FormatInt(v.Id, 10) + groupInfo.Name = v.Name + if v.Abbreviation != "" { + groupInfo.Name = v.Abbreviation + } + groupInfo.Level = v.Level + orgMap = append(orgMap, groupInfo) + } + } + } + + } else { + if v.Level > 2 { + groupId, groupIsTrue := commonus.GetNewHrOrg(v.Id) + if groupIsTrue == true { + where := commonus.MapOut() + where["id"] = groupId + orgGroupCont, orgGroupErr := commonus.GetNewOrgCont(where, "name", "abbreviation", "organization_type") + if orgGroupErr == nil { + var groupInfo orgModelsAry + groupInfo.Id = strconv.FormatInt(groupId, 10) + groupInfo.Name = orgGroupCont.Name + if orgGroupCont.Abbreviation != "" { + groupInfo.Name = orgGroupCont.Abbreviation + } + var aotModel hrsystem.AdministrativeOrganizationType + where := commonus.MapOut() + where["id"] = orgGroupCont.OrganizationType + aotModel.GetCont(where, "level") + groupInfo.Level = aotModel.Level + + var orgSun orgModels + orgSun.Id = strconv.FormatInt(v.Id, 10) + orgSun.Name = v.Name + if v.Abbreviation != "" { + orgSun.Name = v.Abbreviation + } + orgSun.Level = v.Level + groupInfo.Child = append(groupInfo.Child, orgSun) + orgMap = append(orgMap, groupInfo) + } + } + } else { + var groupInfo orgModelsAry + groupInfo.Id = strconv.FormatInt(v.Id, 10) + groupInfo.Name = v.Name + if v.Abbreviation != "" { + groupInfo.Name = v.Abbreviation + } + groupInfo.Level = v.Level + orgMap = append(orgMap, groupInfo) + + } + } + } + + if len(orgMap) > 0 { + for _, ov := range orgMap { + + if len(orgWherList) > 0 { + isInGroup := true //界定是否写入 + for _, olv := range orgWherList { + if ov.Id == olv.Id { + isInGroup = false + } + } + if isInGroup == true { + var orgList orgModels + orgList.Id = ov.Id + orgList.Name = ov.Name + orgList.Level = ov.Level + orgWherList = append(orgWherList, orgList) + } + } else { + var orgList orgModels + orgList.Id = ov.Id + orgList.Name = ov.Name + orgList.Level = ov.Level + orgWherList = append(orgWherList, orgList) + } + //判断是否有下级菜单 + if len(ov.Child) > 0 { + for _, ocv := range ov.Child { + if len(orgWherList) > 0 { + isIn := true //界定是否写入 + for _, olv := range orgWherList { + if ocv.Id == olv.Id { + isIn = false + } + } + if isIn == true { + var orgList orgModels + orgList.Id = ocv.Id + orgList.Name = fmt.Sprintf("%v%v", ov.Name, ocv.Name) + orgList.Level = ocv.Level + orgWherList = append(orgWherList, orgList) + } + } else { + var orgList orgModels + orgList.Id = ocv.Id + orgList.Name = fmt.Sprintf("%v%v", ov.Name, ocv.Name) + orgList.Level = ocv.Level + orgWherList = append(orgWherList, orgList) + } + } + } + + } + } + return +} diff --git a/gin_server_admin/api/statistics/quantification/shiyan.go b/gin_server_admin/api/statistics/quantification/shiyan.go new file mode 100644 index 0000000..f65c6a2 --- /dev/null +++ b/gin_server_admin/api/statistics/quantification/shiyan.go @@ -0,0 +1,84 @@ +package quantification + +import ( + "fmt" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" +) + +//维度计算 +/* +@normName 标准名称 +@wherStr 查询条件 +@calculationMethod 计算方式 1:和;2:平均值;3:和与平均值 +*/ +func DimensionCalculation(normName, wherStr string, calculationMethod int, oldStatistics GraphicStatistics) (outputData GraphicStatistics) { + switch calculationMethod { + case 1: //计算 + sumScore, _ := AverageOfSum(wherStr) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, oldStatistics.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + case 2: + _, averageScore := AverageOfSum(wherStr, 1) + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, oldStatistics.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + case 3: + //合计与平均 + sumScore, averageScore := AverageOfSum(wherStr, 1) + normNameTotal := fmt.Sprintf("%v总值", normName) + if commonus.IsItTrueString(normNameTotal, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameTotal) + var seriesInfo series + seriesInfo.Name = normNameTotal + seriesInfo.Data = append(seriesInfo.Data, sumScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfo) + + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameTotal { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, sumScore) + } + } + } + normNameAverage := fmt.Sprintf("%v平均值", normName) + if commonus.IsItTrueString(normNameAverage, outputData.Cylindrical) == false { + outputData.Cylindrical = append(outputData.Cylindrical, normNameAverage) + var seriesInfoAverage series + seriesInfoAverage.Name = normNameAverage + seriesInfoAverage.Data = append(seriesInfoAverage.Data, averageScore) + outputData.CylindricalData = append(outputData.CylindricalData, seriesInfoAverage) + } else { + for cdi, cdv := range outputData.CylindricalData { + if cdv.Name == normNameAverage { + outputData.CylindricalData[cdi].Data = append(outputData.CylindricalData[cdi].Data, averageScore) + } + } + } + } + return +} diff --git a/gin_server_admin/api/v1/assessment/department_target.go b/gin_server_admin/api/v1/assessment/department_target.go index 7e90ca9..2f2edab 100644 --- a/gin_server_admin/api/v1/assessment/department_target.go +++ b/gin_server_admin/api/v1/assessment/department_target.go @@ -97,6 +97,11 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) { var requestData DelQualitative c.ShouldBindJSON(&requestData) + if requestData.VersionNumber == "" { + response.Result(101, requestData, "未知版本号码", c) + return + } + var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation gormDb := global.GVA_DB_Performanceappraisal.Select("qualitative_evaluation.*,dutyclass.sort") if requestData.Type != 0 { @@ -106,7 +111,7 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) { gormDb = gormDb.Where("`qe_group` = ?", requestData.Group) } // if requestData.DepartmentId != "" { - // gormDb = gormDb.Where("`qe_accept_evaluation` = ?", requestData.DepartmentId) + gormDb = gormDb.Where("`qe_qual_eval_id` = ?", requestData.VersionNumber) // } if requestData.DepartmentId != "" { gormDb = gormDb.Where("`qe_accept_evaluation` = ?", requestData.DepartmentId) @@ -121,7 +126,7 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) { if requestData.TargetSun != "" { gormDb = gormDb.Where("`qe_target_sun` = ?", requestData.TargetSun) } - gormDb = gormDb.Where("`qe_state` = 1") + // gormDb = gormDb.Where("`qe_state` = 1") listTargetErr := gormDb.Joins("left join dutyclass on id = qe_dimension").Order("qe_group asc,qe_accept_evaluation asc,sort asc,qe_type asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 { diff --git a/gin_server_admin/api/v1/assessment/dutytype.go b/gin_server_admin/api/v1/assessment/dutytype.go index fcef0ae..d25c202 100644 --- a/gin_server_admin/api/v1/assessment/dutytype.go +++ b/gin_server_admin/api/v1/assessment/dutytype.go @@ -295,6 +295,7 @@ type addTargetType struct { CycleAttres int `json:"cycleattr"` //辅助计数 VisibleRangeGroup []string `json:"visiblerangegroup"` //可见范围(集团) VisibleRangeDepart []string `json:"visiblerangedepart"` //可见范围(分厂) + ScoringMethod int `json:"scoringmethod"` //计分方式(1:自动;2:手动) } //列表输出 @@ -644,12 +645,13 @@ type QualitativeEiteOut struct { } type DelQualitative struct { - Type int64 `json:"type"` //1:定性考核;2:定量考核 - Dimension string `json:"dimension"` //考核维度 - Target string `json:"target"` //考核指标 - TargetSun string `json:"targetsun"` //考核指标子栏目 - Group string `json:"group"` //归属集团 - DepartmentId string `json:"departmentid"` //接受考核部门 + Type int64 `json:"type"` //1:定性考核;2:定量考核 + Dimension string `json:"dimension"` //考核维度 + Target string `json:"target"` //考核指标 + TargetSun string `json:"targetsun"` //考核指标子栏目 + Group string `json:"group"` //归属集团 + DepartmentId string `json:"departmentid"` //接受考核部门 + VersionNumber string `json:"versionnumber"` //版本号码 } //根据条件获取组合指标新的输出模式 @@ -767,3 +769,9 @@ type CycleAddedType struct { Allprize int64 `json:"allprize"` //全奖值"` Capping int64 `json:"capping"` //封顶值"` } + +//添加 定性考核指标关系指定细则 +type DutyAssEssTarget struct { + Id int64 `json:"id"` + Operator []string `json:"operator"` //考核执行人 +} diff --git a/gin_server_admin/api/v1/assessment/target.go b/gin_server_admin/api/v1/assessment/target.go index 3775b80..3a26a4c 100644 --- a/gin_server_admin/api/v1/assessment/target.go +++ b/gin_server_admin/api/v1/assessment/target.go @@ -1,6 +1,7 @@ package assessment import ( + "encoding/json" "fmt" "strconv" "strings" @@ -243,6 +244,9 @@ func (d *DutyHandle) AddTarget(c *gin.Context) { if requestData.CycleAttres == 0 { requestData.CycleAttres = 1 } + if requestData.ScoringMethod == 0 { + requestData.ScoringMethod = 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) @@ -281,7 +285,7 @@ func (d *DutyHandle) AddTarget(c *gin.Context) { if len(requestData.VisibleRangeDepart) > 0 { saveData.VisibleRange = strings.Join(requestData.VisibleRangeDepart, ",") } - + saveData.ScoringMethod = requestData.ScoringMethod dutyInfoErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error if dutyInfoErr != nil { response.Result(106, saveData, "数据写入失败!", c) @@ -532,16 +536,52 @@ func (d *DutyHandle) EiteTarget(c *gin.Context) { if len(requestData.VisibleRangeDepart) > 0 { saveData["et_visible_range"] = strings.Join(requestData.VisibleRangeDepart, ",") } + + if requestData.ScoringMethod != 0 { + saveData["et_scoring_method"] = requestData.ScoringMethod + } + saveData["et_time"] = time.Now().Unix() roleIsTrue, roleErr := eiteTargetInfoes(requestData.Id, saveData) if roleIsTrue != true { response.Result(106, roleErr, "编辑失败!", c) } else { + assTarEite := commonus.MapOut() assTarEite["departmentmap"] = saveData["et_relevant_departments"] assTarEite["time"] = time.Now().Unix() global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`targetid` = ?", requestData.Id).Updates(assTarEite) + if len(requestData.Report) > 0 { + //获取原来的指标指定审批人 + var assessInfo []assessmentmodel.Assesstarget + assessErr := global.GVA_DB_Performanceappraisal.Where("`targetid` = ?", requestData.Id).Find(&assessInfo).Error + if assessErr == nil { + for _, aev := range assessInfo { + var assUser []DutyAssEssTarget + assJsonErr := json.Unmarshal([]byte(aev.Content), &assUser) + if assJsonErr == nil { + var eiteAssUser []DutyAssEssTarget + for _, ajv := range assUser { + var eiteAssUserInfo DutyAssEssTarget + eiteAssUserInfo.Id = ajv.Id + eiteAssUserInfo.Operator = requestData.Report + eiteAssUser = append(eiteAssUser, eiteAssUserInfo) + } + assTarEiteCont := commonus.MapOut() + jsonAssUser, jsonAssUserErr := json.Marshal(eiteAssUser) + if jsonAssUserErr == nil { + assTarEiteCont["content"] = string(jsonAssUser) + assTarEiteCont["time"] = time.Now().Unix() + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`at_id` = ?", aev.Id).Updates(assTarEiteCont) + } + + } + + } + } + } + qualTarEite := commonus.MapOut() qualTarEite["q_depart"] = saveData["et_relevant_departments"] qualTarEite["q_time"] = time.Now().Unix() diff --git a/gin_server_admin/api/v1/staff/staffpeople.go b/gin_server_admin/api/v1/staff/staffpeople.go index f558104..190853f 100644 --- a/gin_server_admin/api/v1/staff/staffpeople.go +++ b/gin_server_admin/api/v1/staff/staffpeople.go @@ -273,7 +273,7 @@ func HrUserInfor(number, pwd string) (isTrue bool, usUpdate OutScanCodeUserInfo) usUpdate.Oldgroup = oldGroup // `json:"oldgroup"` olddepart, _ := getOrgCont(ueInfo.Deparment) usUpdate.Olddepartment = olddepart // `json:"olddepartment"` - + usUpdate.Key = strconv.FormatInt(ueInfo.Key, 10) usUpdate.State = ueInfo.State usUpdate.Password = ueInfo.Password return diff --git a/gin_server_admin/api/web/jixiaokaohe/people.go b/gin_server_admin/api/web/jixiaokaohe/people.go index 07d6ea0..3d192a0 100644 --- a/gin_server_admin/api/web/jixiaokaohe/people.go +++ b/gin_server_admin/api/web/jixiaokaohe/people.go @@ -1,6 +1,8 @@ package jixiaokaohe import ( + "fmt" + "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/common/response" @@ -15,11 +17,23 @@ func (a *ApiGroup) MyContent(c *gin.Context) { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } - var myInfo hrsystem.Personnel - err := global.GVA_DB_HrDataBase.Where("key = ?", userCont.Key).First(&myInfo).Error - if err != nil { - response.Result(102, err, "没有获取到数据!", c) - return + fmt.Printf("userment----------->%v\n", userCont.Key) + if userCont.Key != "" { + var myInfo hrsystem.Personnel + err := global.GVA_DB_HrDataBase.Where("`key` = ?", userCont.Key).First(&myInfo).Error + if err != nil { + response.Result(102, err, "没有获取到数据!", c) + return + } + response.Result(0, myInfo, "获取成功!", c) + } else { + var myInfo hrsystem.Personnel + err := global.GVA_DB_HrDataBase.Where("`number` = ?", userCont.Number).First(&myInfo).Error + if err != nil { + response.Result(102, err, "没有获取到数据!", c) + return + } + response.Result(0, myInfo, "获取成功!", c) } - response.Result(0, myInfo, "获取成功!", c) + } diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index 2680be5..4902481 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -64,6 +64,17 @@ func BubbleSort(slice []int64) []int64 { return slice } +func BubbleSortInt(slice []int) []int { + for n := 0; n <= len(slice); n++ { + for i := 1; i < len(slice)-n; i++ { + if slice[i] < slice[i-1] { + slice[i], slice[i-1] = slice[i-1], slice[i] + } + } + } + return slice +} + //编号,纯数字 func TableNumber(class ...string) (number int64) { result, _ := rand.Int(rand.Reader, big.NewInt(8999)) @@ -631,6 +642,7 @@ func ClientIdentity() (isTrue bool, redisUserInfo testpage.RedisUserInfo) { // return // } redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(5) tokenInfo, isTrue := redisClient.HashGetAll("ScanCode:UserInfo:LoginUser_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + global.GVA_SCANCODE_USERNUMBER) if isTrue == true { identityErr := mapstructure.Decode(tokenInfo, &redisUserInfo) @@ -686,6 +698,34 @@ func getPeopleInfo() (redisUserInfo testpage.RedisUserInfo, isTrue bool) { oldpostis, _ := getPositionCont(ueInfo.Position) redisUserInfo.Oldposition = oldpostis // `json:"oldposition"` isTrue = true + + redisClient := redishandel.RunRedis() + redisClient.SetRedisDb(5) + redisFileKey := fmt.Sprintf("ScanCode:UserInfo:LoginUser_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, global.GVA_SCANCODE_USERNUMBER) + redisClient.SetRedisTime(604800) + writeRedisData := map[string]interface{}{ + "id": strconv.FormatInt(ueInfo.Id, 10), + "key": strconv.FormatInt(ueInfo.Key, 10), + "number": ueInfo.Number, + "name": ueInfo.Name, + "positionleveles": strconv.FormatInt(ueInfo.PositionLevel, 10), + "position": strconv.FormatInt(ueInfo.Position, 10), + "adminorg": strconv.FormatInt(ueInfo.AdminOrg, 10), + "company": strconv.FormatInt(ueInfo.Company, 10), + "emptype": fmt.Sprintf("%v", ueInfo.EmpType), + "deparment": ueInfo.Deparment, + "jobclass": strconv.FormatInt(ueInfo.JobClass, 10), + "positiongrade": strconv.FormatInt(ueInfo.PositionGrade, 10), + "role": ueInfo.Role, + "icon": ueInfo.Icon, + "wechat": wechatStr, + "jurisdiction": buttonStr, + "menuoper": menuStr, + "oldgroup": oldGroup, + "olddepartment": olddepart, + "oldposition": oldpostis, + } + redisClient.HashMsetAdd(redisFileKey, writeRedisData) return } @@ -2895,6 +2935,15 @@ func IsItTrue(id int64, idAry []int64) (isTrue bool) { } return } +func IsItTrueInt(id int, idAry []int) (isTrue bool) { + isTrue = false + for _, v := range idAry { + if v == id { + return true + } + } + return +} func IsItTrueString(id string, idAry []string) (isTrue bool) { isTrue = false @@ -3011,13 +3060,27 @@ func JudgeColumn(ascription, columId, title, departMap string) (content assessme if columId != "" { judgeIdErr := global.GVA_DB_Performanceappraisal.Where("`q_id` = ?", columId).First(&content).Error if judgeIdErr == nil { + if content.State != 1 { + saveSunTarData := MapOut() + saveSunTarData["q_state"] = 1 + saveSunTarData["q_time"] = time.Now().Unix() + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` = ?", columId).Updates(&saveSunTarData) + } isTrue = true + fmt.Printf("1\n") return } } judgeErr := global.GVA_DB_Performanceappraisal.Where("`q_parent_id` = ? AND `q_title` = ?", ascription, title).First(&content).Error if judgeErr == nil { + if content.State != 1 { + saveSunTarData := MapOut() + saveSunTarData["q_state"] = 1 + saveSunTarData["q_time"] = time.Now().Unix() + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_parent_id` = ? AND `q_title` = ?", ascription, title).Updates(&saveSunTarData) + } isTrue = true + fmt.Printf("2\n") return } ascriptionId, ascriptionErr := strconv.ParseInt(ascription, 10, 64) @@ -3027,10 +3090,13 @@ func JudgeColumn(ascription, columId, title, departMap string) (content assessme saveColum := assessmentmodel.QualitativeTarget{Title: title, ParentId: ascriptionId, State: 1, AddTime: time.Now().Unix(), Depart: departMap} addErr := global.GVA_DB_Performanceappraisal.Create(&saveColum).Error if addErr != nil { + fmt.Printf("3\n") return } isTrue = true content = saveColum + fmt.Printf("4\n") + // panic(content) return } @@ -3267,7 +3333,7 @@ func JudegDutyIsUse(group, dimension, target, target_sun, detailed int64) (isTru isTrue = false // var qeInfo []assessmentmodel.QualitativeEvaluation var qeID []int64 - gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`State` = 1") + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_state` = 1") if group != 0 { gormDb = gormDb.Where("`qe_group` = ?", group) } @@ -3583,3 +3649,10 @@ func GetNewHrPeopleInfo(where interface{}, filed ...string) (ueInfo hrsystem.Per isTrue = true return } + +//浮点数保留两位小数 + +func Decimal(value float64) float64 { + value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", value), 64) + return value +} diff --git a/gin_server_admin/initialize/redis.go b/gin_server_admin/initialize/redis.go index 5e9ffbd..bf92294 100644 --- a/gin_server_admin/initialize/redis.go +++ b/gin_server_admin/initialize/redis.go @@ -34,9 +34,9 @@ func WechatRedis() { }) pong, err := client.Ping(context.Background()).Result() if err != nil { - global.GVA_LOG.Error("企业微信Redis链接失败!, err:", zap.Any("err", err)) + global.GVA_LOG.Error("企业微信Redis-->1链接失败!, err:", zap.Any("err", err)) } else { - global.GVA_LOG.Info("企业微信Redis链接成功:", zap.String("pong", pong)) + global.GVA_LOG.Info("企业微信Redis--->1链接成功:", zap.String("pong", pong)) global.GVA_REDIS_WeChat = client } } @@ -50,9 +50,9 @@ func WechatRedis2() { }) pong, err := client.Ping(context.Background()).Result() if err != nil { - global.GVA_LOG.Error("企业微信Redis链接失败!, err:", zap.Any("err", err)) + global.GVA_LOG.Error("企业微信Redis--->2链接失败!, err:", zap.Any("err", err)) } else { - global.GVA_LOG.Info("企业微信Redis链接成功:", zap.String("pong", pong)) + global.GVA_LOG.Info("企业微信Redis--->2链接成功:", zap.String("pong", pong)) global.GVA_REDIS_WeChat2 = client } } @@ -66,9 +66,9 @@ func WechatRedis5() { }) pong, err := client.Ping(context.Background()).Result() if err != nil { - global.GVA_LOG.Error("企业微信Redis链接失败!, err:", zap.Any("err", err)) + global.GVA_LOG.Error("企业微信Redis--->5链接失败!, err:", zap.Any("err", err)) } else { - global.GVA_LOG.Info("企业微信Redis链接成功:", zap.String("pong", pong)) + global.GVA_LOG.Info("企业微信Redis--->5链接成功:", zap.String("pong", pong)) global.GVA_REDIS_WeChat5 = client } } diff --git a/gin_server_admin/initialize/router.go b/gin_server_admin/initialize/router.go index 53719cf..a372456 100644 --- a/gin_server_admin/initialize/router.go +++ b/gin_server_admin/initialize/router.go @@ -67,6 +67,9 @@ func Routers() *gin.Engine { statisAppRove := router.RouterGroupApp.StatisticsRouter //统计相关 + //根据版本方案统计 + planVersioStatis := router.RouterGroupApp.StatisticsVersion //前端审批相关 + /** 企业微信相关 */ @@ -170,6 +173,8 @@ func Routers() *gin.Engine { webApiInit.InitRouter(MyCustomPrivateGroup) //手机的接口 statisAppRove.InitRouter(MyCustomPrivateGroup) //统计相关 + + planVersioStatis.InitRouter(MyCustomPrivateGroup) //根据激活版本统计 } //自定义后台登录 MyCustomSystemGroup := Router.Group("") diff --git a/gin_server_admin/middleware/myjwt.go b/gin_server_admin/middleware/myjwt.go index f039f64..ee40bc3 100644 --- a/gin_server_admin/middleware/myjwt.go +++ b/gin_server_admin/middleware/myjwt.go @@ -237,13 +237,13 @@ func ScanCodeLogin() gin.HandlerFunc { var myCustomIdentify commonus.ScanCodeLogin if isTrues != true { - response.FailWithDetailed(gin.H{"reload": true, "code": 102}, "您的帐户异地登陆或令牌失效", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 102, "key": redisFileKey, "tokenInfo": tokenInfo, "redisClient": redisClient}, "您的帐户异地登陆或令牌失效", c) c.Abort() return } else { tokenErr := mapstructure.Decode(tokenInfo, &myCustomIdentify) if tokenErr != nil { - response.FailWithDetailed(gin.H{"reload": true, "code": 103, "tokenErr": tokenErr}, "您的帐户异地登陆或令牌失效", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 103, "tokenErr": tokenErr}, "您的令牌失效", c) c.Abort() return } @@ -260,7 +260,7 @@ func ScanCodeLogin() gin.HandlerFunc { sha1Token := commonus.Sha1Encryption(sha1Str) // fmt.Printf("token=========>%v---->%v---->%v\n", md5Token, sha1Token, userAgent) if sha1Token != userToken { - response.FailWithDetailed(gin.H{"reload": true, "code": 104}, "授权已过期", c) + response.FailWithDetailed(gin.H{"reload": true, "code": 104, "sha1Token": sha1Token, "userToken": userToken}, "授权已过期", c) c.Abort() return } diff --git a/gin_server_admin/model/assessmentmodel/dutyclass.go b/gin_server_admin/model/assessmentmodel/dutyclass.go index ee2b7de..140b37a 100644 --- a/gin_server_admin/model/assessmentmodel/dutyclass.go +++ b/gin_server_admin/model/assessmentmodel/dutyclass.go @@ -1,6 +1,10 @@ package assessmentmodel -import "github.com/flipped-aurora/gin-vue-admin/server/global" +import ( + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" +) //职责类别 type DutyClass struct { @@ -189,6 +193,7 @@ type EvaluationTarget struct { 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:可见范围(集团)"` + ScoringMethod int `json:"scoringmethod" gorm:"column:et_scoring_method;type:tinyint(1) unsigned;default:1;not null;comment:计分方式(1:自动;2:手动)"` } func (EvaluationTarget *EvaluationTarget) TableName() string { @@ -292,6 +297,16 @@ type QualitativeEvaluation struct { func (QualitativeEvaluation *QualitativeEvaluation) TableName() string { return "qualitative_evaluation" } +func (q *QualitativeEvaluation) GetCont(whereMap interface{}, field ...string) (err error) { + gormDb := global.GVA_DB_Performanceappraisal.Model(&q) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + gormDb = gormDb.Where(whereMap) + err = gormDb.First(&q).Error + return +} //性质考核方案 type DepartmentDimension struct { @@ -418,6 +433,7 @@ type PlanVersio struct { State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` AddTime int64 `json:"addtime" gorm:"column:addtime;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` EiteTime int64 `json:"eitetime" gorm:"column:eitetime;type:bigint(20) unsigned;default:0;not null;comment:修改时间"` + Content string `json:"content" gorm:"column:content;type:longtext;comment:版本内容"` } func (PlanVersio *PlanVersio) TableName() string { @@ -436,6 +452,7 @@ type PositionPlanVersio struct { State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` AddTime int64 `json:"addtime" gorm:"column:addtime;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` EiteTime int64 `json:"eitetime" gorm:"column:eitetime;type:bigint(20) unsigned;default:0;not null;comment:修改时间"` + Content string `json:"content" gorm:"column:content;type:longtext;comment:版本内容"` } func (PositionPlanVersio *PositionPlanVersio) TableName() string { diff --git a/gin_server_admin/router/enter.go b/gin_server_admin/router/enter.go index e4b60bd..4ae0135 100644 --- a/gin_server_admin/router/enter.go +++ b/gin_server_admin/router/enter.go @@ -8,6 +8,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/router/examrouter" "github.com/flipped-aurora/gin-vue-admin/server/router/examtestpage" "github.com/flipped-aurora/gin-vue-admin/server/router/index/examapprove" + "github.com/flipped-aurora/gin-vue-admin/server/router/index/statisticsroute" "github.com/flipped-aurora/gin-vue-admin/server/router/publichandel" "github.com/flipped-aurora/gin-vue-admin/server/router/shiyan" "github.com/flipped-aurora/gin-vue-admin/server/router/staffrouter" @@ -21,23 +22,24 @@ import ( ) type RouterGroup struct { - System system.RouterGroup - Example example.RouterGroup - Autocode autocode.RouterGroup - Shiyan shiyan.RouterGroup - GroupHandle examtestpage.RouterGroup - WeChatCallBacl wechatcallbackrouter.RouterGroup - ArchiveStructApi archive.RouterGroup - FileUpDownLoad uploaddownload.RouterGroup //文件上传下载 - ExamQuest examrouter.RouterGroup - DutyAssEssRout assessment.RouterGroup - StaffRouter staffrouter.RouterGroup - AdminRouter systemadmin.RouterGroup - WorkWeChatApp wechatapp.RouterGroup - ExamApprove examapprove.RouterGroup - PublicApprove publichandel.RouterGroup - WebApiRoute webrouter.WebRouter - StatisticsRouter statisticsrouter.RouterGroup + System system.RouterGroup + Example example.RouterGroup + Autocode autocode.RouterGroup + Shiyan shiyan.RouterGroup + GroupHandle examtestpage.RouterGroup + WeChatCallBacl wechatcallbackrouter.RouterGroup + ArchiveStructApi archive.RouterGroup + FileUpDownLoad uploaddownload.RouterGroup //文件上传下载 + ExamQuest examrouter.RouterGroup + DutyAssEssRout assessment.RouterGroup + StaffRouter staffrouter.RouterGroup + AdminRouter systemadmin.RouterGroup + WorkWeChatApp wechatapp.RouterGroup + ExamApprove examapprove.RouterGroup + PublicApprove publichandel.RouterGroup + WebApiRoute webrouter.WebRouter + StatisticsRouter statisticsrouter.RouterGroup + StatisticsVersion statisticsroute.StatisticsRoute } var RouterGroupApp = new(RouterGroup) diff --git a/gin_server_admin/router/index/statisticsroute/enter.go b/gin_server_admin/router/index/statisticsroute/enter.go new file mode 100644 index 0000000..8c7215a --- /dev/null +++ b/gin_server_admin/router/index/statisticsroute/enter.go @@ -0,0 +1,3 @@ +package statisticsroute + +type StatisticsRoute struct{} diff --git a/gin_server_admin/router/index/statisticsroute/programme.go b/gin_server_admin/router/index/statisticsroute/programme.go new file mode 100644 index 0000000..cfbb4df --- /dev/null +++ b/gin_server_admin/router/index/statisticsroute/programme.go @@ -0,0 +1,20 @@ +package statisticsroute + +import ( + v2 "github.com/flipped-aurora/gin-vue-admin/server/api/index" + "github.com/gin-gonic/gin" +) + +//统计 +func (s *StatisticsRoute) InitRouter(Router *gin.RouterGroup) { + shiyanCodeRouter := Router.Group("ststic") + var authorityApi = v2.ApiGroupApp.StatisticsApi + { + shiyanCodeRouter.POST("", authorityApi.Index) // 入口 + shiyanCodeRouter.POST("/", authorityApi.Index) + shiyanCodeRouter.GET("", authorityApi.Index) + shiyanCodeRouter.GET("/", authorityApi.Index) + + shiyanCodeRouter.POST("getconfig", authorityApi.PlanVersioStatistics) //方案数据表格同居 + } +} diff --git a/gin_server_admin/router/statisticsrouter/statistics.go b/gin_server_admin/router/statisticsrouter/statistics.go index 9836cd3..457cd02 100644 --- a/gin_server_admin/router/statisticsrouter/statistics.go +++ b/gin_server_admin/router/statisticsrouter/statistics.go @@ -14,4 +14,12 @@ func (s *StatisticsRouter) InitRouter(Router *gin.RouterGroup) { CodeRouter.POST("", initApiRouter.Index) // 首页 CodeRouter.POST("gettargetorgandyear", initApiRouter.GetTargetOrgAndYear) // 计算定性考核组织范围,及起止年份 } + + QuantRouter := Router.Group("quant") + var initQuantApiRouter = statistics.ApiGroupApp.QuantApi + { + QuantRouter.POST("", initQuantApiRouter.Index) // 首页 + QuantRouter.POST("getquantechartorgandyear", initQuantApiRouter.GetQuantEChartOrgAndYear) // 计算定量考核组织范围,及起止年份 + QuantRouter.POST("quantechart", initQuantApiRouter.QuantEChart) // 计算定量考核数据 + } } diff --git a/gin_server_admin/utils/redishandel/myredis.go b/gin_server_admin/utils/redishandel/myredis.go index 7524bb1..2fce764 100644 --- a/gin_server_admin/utils/redishandel/myredis.go +++ b/gin_server_admin/utils/redishandel/myredis.go @@ -158,6 +158,7 @@ func (r *RedisStoreType) HashMsetAddAry(hashName string, hashVal []map[string]in */ func (r *RedisStoreType) HashGetAll(hashName string) (map[string]string, bool) { // rdb := RedisInit() + // fmt.Printf("strKEy:===>%v\n", r.PreKey+hashName) val, err := r.RedisDb.HGetAll(r.Context, r.PreKey+hashName).Result() if err != nil { return val, false