From ace3db30618ca785a4d80bce6bd4cdc40ad865a6 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Sun, 6 Mar 2022 15:01:25 +0800 Subject: [PATCH] =?UTF-8?q?v0.1BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/index/assessment/assesshandle.go | 12 + .../api/index/evaluation/evaluation.go | 315 +++++++- .../api/index/evaluation/lookquantita.go | 100 +++ .../api/index/evaluation/sendwechatmsg.go | 11 +- gin_server_admin/api/index/evaluation/type.go | 82 +- .../api/v1/assessment/department_target.go | 303 +++++--- .../api/v1/assessment/dutyhandle.go | 26 +- .../api/v1/assessment/dutytype.go | 23 + .../api/v1/assessment/newassessment.go | 31 +- .../v1/assessment/qualitative_evaluation.go | 10 +- .../assessment/set_evaluation_objectives.go | 253 ++++++ gin_server_admin/api/v1/assessment/target.go | 5 + gin_server_admin/api/v1/shiyan/shiyan.go | 2 +- .../api/wechatapp/callback/apphandle.go | 39 +- .../api/wechatapp/callback/rationcallback.go | 44 +- .../api/wechatapp/callback/updatehandle.go | 76 +- .../wechatapp/sendmessage/sendmsgHandle.go | 73 +- gin_server_admin/commonus/publichaneld.go | 55 +- .../model/assessmentmodel/dutyclass.go | 22 + .../router/assessment/assessmentrouter.go | 8 + 备份/department_target.go | 730 ++++++++++++++++++ 21 files changed, 2017 insertions(+), 203 deletions(-) create mode 100644 gin_server_admin/api/index/evaluation/lookquantita.go create mode 100644 gin_server_admin/api/v1/assessment/set_evaluation_objectives.go create mode 100644 备份/department_target.go diff --git a/gin_server_admin/api/index/assessment/assesshandle.go b/gin_server_admin/api/index/assessment/assesshandle.go index eec5b75..654eabb 100644 --- a/gin_server_admin/api/index/assessment/assesshandle.go +++ b/gin_server_admin/api/index/assessment/assesshandle.go @@ -12,6 +12,7 @@ import ( "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" "github.com/gin-gonic/gin" ) @@ -1056,3 +1057,14 @@ func (a *Assessment) LookPersonalOrDepartment(c *gin.Context) { printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, personalOrDepartment) response.Result(0, printData, "查询成功!", c) } + +//获取班组列表 +func (a *Assessment) GetTeamList(c *gin.Context) { + var teamList []testpage.Teaming + err := global.GVA_DB_Master.Order("tm_long ASC,tm_id ASC").Find(&teamList).Error + if err != nil { + response.Result(101, err, "查询失败!", c) + return + } + response.Result(0, teamList, "查询成功!", c) +} diff --git a/gin_server_admin/api/index/evaluation/evaluation.go b/gin_server_admin/api/index/evaluation/evaluation.go index 9abde6b..e6e5542 100644 --- a/gin_server_admin/api/index/evaluation/evaluation.go +++ b/gin_server_admin/api/index/evaluation/evaluation.go @@ -197,6 +197,8 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) { flowSteping.State = 1 flowSteping.RoleGroup = 16118387069540343 flowSteping.NextStep = 1 + flowSteping.ClickName = userCont.Key + flowSteping.AddTime = time.Now().Unix() flowStepAryMaps = append(flowStepAryMaps, flowSteping) fmt.Printf("%v------------------>%v\n", flowSteping, flowStepAryMaps) @@ -228,6 +230,8 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) { flowStep.State = 1 flowStep.RoleGroup = 16118387069540343 flowStep.NextStep = 1 + flowStep.ClickName = userCont.Key + flowStep.AddTime = time.Now().Unix() flowStepArys = append(flowStepArys, flowStep) saveData := commonus.MapOut() @@ -276,7 +280,7 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) { mainTitleDesc = programme.Content } } - handleUrl := fmt.Sprintf("http://www.hxgk.group?key=%v", keyNumber) + handleUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", keyNumber) callbakcMsg, isTrueCall, callBackCont := sendmessage.SendMsgPublic(sendUserList, mainTitle, mainTitleDesc, programme.Unit, requestData.Reason, handleUrl, requestData.Type, departmentId, userKey, requestData.Score, keyNumber, "请前往处理") outData := commonus.MapOut() outData["callbakcMsg"] = string(callbakcMsg) @@ -434,6 +438,8 @@ func (e *EvaluationInterface) AddDivisionResponsibility(c *gin.Context) { flowStep.State = 1 flowStep.RoleGroup = 16182159043990656 flowStep.NextStep = 2 + flowStep.ClickName = userCont.Key + flowStep.AddTime = time.Now().Unix() flowStepAry = append(flowStepAry, flowStep) evalProCont.OrderKey = orderId @@ -463,6 +469,8 @@ func (e *EvaluationInterface) AddDivisionResponsibility(c *gin.Context) { flowStep.State = 1 flowStep.RoleGroup = 16182159043990656 flowStep.NextStep = 2 + flowStep.ClickName = userCont.Key + flowStep.AddTime = time.Now().Unix() flowStepArys = append(flowStepArys, flowStep) saveData := commonus.MapOut() @@ -613,7 +621,7 @@ func (e *EvaluationInterface) AddCorrectiveMeasures(c *gin.Context) { return } keyNumber := commonus.GetFileNumberEs() - UpEvaluationProcessApproval(orderidval, 16182159043990656, keyNumber, 4) + UpEvaluationProcessApproval(orderidval, 16182159043990656, keyNumber, 4, userCont.Key) _, sendUserList := commonus.GetSendMsgUser(16182159043990656, departmentId) //获取对应部门负责人(高科) var scoreFlowInfo assessmentmodel.ScoreFlow @@ -858,7 +866,7 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { flowDataLog.EvaluationPlan = evaluationPlanid } flowDataLog.Key = keyNumber - flowDataLog.Score = v.Score + flowDataLog.Score = v.Score * 100 flowDataLog.Content = v.Reason flowDataLog.Enclosure = strings.Join(v.Enclosure, ",") flowDataLog.Time = time.Now().Unix() @@ -891,7 +899,7 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { // response.Result(0, sendUserList, "未指定相关部门处理人!未能向相关人员发送考核项目!请手动发起!", c) // return } - UpEvaluationProcessApproval(keyNumber, 16182159043990656, keyNumber, 1) + UpEvaluationProcessApproval(keyNumber, 16182159043990656, keyNumber, 1, userCont.Key) mainTitle := fmt.Sprintf("%v数据表", commonus.TimeStampToDate(operationTime, 10)) mainTitleDesc := "" @@ -913,9 +921,9 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { buttonCont.Key = fmt.Sprintf("ration_%v_2", keyNumber) buttonMap = append(buttonMap, buttonCont) - callbakcMsg, isTrueCall, callBackCont, sendText := sendmessage.SendButtonPublic(sendUserList, mainTitle, mainTitleDesc, subtitle, reason, departmentId, userKey, keyNumber, keyNumber, buttonMap) + callbakcMsg, isTrueCall, callBackCont, sendText := sendmessage.SendButtonPublicRation(sendUserList, mainTitle, mainTitleDesc, subtitle, reason, departmentId, userKey, keyNumber, keyNumber, buttonMap) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----%v\n", string(callbakcMsg), isTrueCall, callBackCont, sendText) + fmt.Printf("1、更新发送信息返回:%v-----------%v----------->%v-----%v\n", string(callbakcMsg), isTrueCall, callBackCont, sendText) response.Result(0, affairDbErr, "数据写入成功!", c) } else { @@ -931,3 +939,298 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) { } } } + +//查看定性考核审批列表 +func (e *EvaluationInterface) LookDutkScoreFlow(c *gin.Context) { + var requestData commonus.SetIds + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Id == 0 && requestData.OutId == "" { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + if requestData.OutId != "" { + idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) + if inIntErr == nil { + requestData.Id = idInt + } + } + fmt.Printf("1-------------------->\n") + var addScore assessmentmodel.ScoreFlow + gerErr := global.GVA_DB_Performanceappraisal.Where("`sf_key` = ?", requestData.Id).Find(&addScore).Error + fmt.Printf("2-------------------->%v\n", gerErr) + if gerErr != nil { + response.Result(103, gerErr, "没有此审批单!", c) + return + } + fmt.Printf("3-------------------->%v\n", gerErr) + // return + //获取方案 + qualEvalCont, qualEvalErr := commonus.GetQualitativeEvaluation(strconv.FormatInt(addScore.EvaluationPlan, 10)) + fmt.Printf("4-------------------->%v\n", addScore.EvaluationPlan) + if qualEvalErr != true { + response.Result(103, qualEvalErr, "没有此方案!", c) + return + } + fmt.Printf("5-------------------->%v\n", qualEvalErr) + var dutyCecorFlowInfo DutyCecorFlow + dutyCecorFlowInfo.OrderId = strconv.FormatInt(requestData.Id, 10) + fmt.Printf("6-------------------->%v\n", requestData.Id) + if qualEvalCont.Dimension != 0 { + dimInfo, dimInfoErr := commonus.GetDutyClassInfo(qualEvalCont.Dimension) + if dimInfoErr == true { + dutyCecorFlowInfo.Dimension = dimInfo.Title + } + } + if qualEvalCont.Target != 0 { + target, targetErr := commonus.GetTargetInfo(qualEvalCont.Target) + if targetErr == true { + dutyCecorFlowInfo.Target = target.Title + } + + } + if qualEvalCont.TargetSun != 0 { + tarsun, tarsunErr := commonus.GetQualitativeTargetInfo(qualEvalCont.TargetSun) + if tarsunErr == true { + dutyCecorFlowInfo.TargetSun = tarsun.Title + } + } + if qualEvalCont.DetailedTarget != 0 { + detaTar, detaTarErr := commonus.GetDetailedTargetInfo(qualEvalCont.DetailedTarget) + if detaTarErr == true { + dutyCecorFlowInfo.DetailedTarget = detaTar.Title + dutyCecorFlowInfo.Content = detaTar.Content + } + } + fmt.Printf("7-------------------->%v\n", requestData.Id) + dutyCecorFlowInfo.Reason = addScore.Reason + + if addScore.PlusReduceScore == 1 { + dutyCecorFlowInfo.ReasonInfo = "增加:" + strconv.FormatInt(addScore.Score, 10) + qualEvalCont.Unit + } else { + dutyCecorFlowInfo.ReasonInfo = "扣除:" + strconv.FormatInt(addScore.Score, 10) + qualEvalCont.Unit + } + fmt.Printf("8-------------------->%v\n", requestData.Id) + if addScore.Rectification == 1 { + var divisionResponsibilities []assessmentmodel.DivisionResponsibilities + dRBerr := global.GVA_DB_Performanceappraisal.Where("df_sf_id = ?", requestData.Id).Find(&divisionResponsibilities).Error + fmt.Printf("8-------1------------->%v\n", divisionResponsibilities) + if dRBerr == nil { + + for _, d_v := range divisionResponsibilities { + fmt.Printf("8-------2------------->%v\n", d_v.UserKey) + var divBilInfo DivisiosibilityType + switch d_v.Type { + case 1: + divBilInfo.Type = "主要责任人" + case 2: + divBilInfo.Type = "互保责任人" + case 3: + divBilInfo.Type = "责任班组" + case 4: + divBilInfo.Type = "责任班组长" + case 5: + divBilInfo.Type = "主管" + case 6: + divBilInfo.Type = "三大员" + case 7: + divBilInfo.Type = "厂长、主任" + default: + divBilInfo.Type = "主要责任人" + } + userInfoGet, userInfoGetErr := commonus.GetWorkUser(strconv.FormatInt(d_v.UserKey, 10)) + if userInfoGetErr == true { + divBilInfo.UserName = userInfoGet.Name + } + fmt.Printf("8-------1-3------------>%v\n", userInfoGet) + divBilInfo.Weight = int64(d_v.Weight) + dutyCecorFlowInfo.DivisionResponsibility = append(dutyCecorFlowInfo.DivisionResponsibility, divBilInfo) + } + } + var recMeasCont []assessmentmodel.RectificationMeasures + judgeRecMeas := global.GVA_DB_Performanceappraisal.Where("`rm_order` = ?", requestData.Id).First(&recMeasCont).Error + if judgeRecMeas == nil { + for _, r_v := range recMeasCont { + var recMeasInfo RectifMeasures + whe := commonus.MapOut() + whe["wm_key"] = r_v.UserKey + uidVal, uidValErr := commonus.GetUserInfoPublic("worker_man.*,worker_man_data.*", whe) + if uidValErr == true { + recMeasInfo.RecName = uidVal.Name + } + recMeasInfo.RecCont = r_v.Content + recMeasInfo.State = r_v.State + recMeasInfo.TimeVal = commonus.TimeStampToDate(r_v.Time, 1) + dutyCecorFlowInfo.RectifMeasures = append(dutyCecorFlowInfo.RectifMeasures, recMeasInfo) + } + } + } + fmt.Printf("9-------------------->%v\n", requestData.Id) + var evalProInfo assessmentmodel.EvaluationProcess + gerEvalErr := global.GVA_DB_Performanceappraisal.Where("`ep_order_key` = ?", requestData.Id).Find(&evalProInfo).Error + fmt.Printf("9-----------1--------->%v\n", gerEvalErr) + if gerEvalErr == nil { + var flowStepAryMaps []FlowStep + jsonFlowErr := json.Unmarshal([]byte(evalProInfo.Content), &flowStepAryMaps) + fmt.Printf("9-----------2--------->%v\n", flowStepAryMaps) + if jsonFlowErr == nil { + fmt.Printf("9-----------3--------->%v\n", flowStepAryMaps) + if len(flowStepAryMaps) > 0 { + for _, fw_v := range flowStepAryMaps { + var flowLog TechnologicalProcessType + flowLog.Step = fw_v.Step + flowLog.State = fw_v.State + workUser, workUserErr := commonus.GetWorkUser(fw_v.ClickName) + fmt.Printf("9-----------4-----2---->%v\n", fw_v) + if workUserErr == true { + fmt.Printf("9-----------4-----1---->%v\n", workUserErr) + bfErr, bf := commonus.GetBranchFactory(workUser.DepartmentId) + fmt.Printf("9-----------4-----3---->%v\n", bfErr) + if bfErr == true { + getGroupRoleInfoErr, getGroupRoleInfo, roleGroupInfo := commonus.GetOfficeWork(fw_v.RoleGroup, int64(bf.WechatId)) + fmt.Printf("9-----------4-----5---->%v---->%v---->%v\n", getGroupRoleInfoErr, getGroupRoleInfo, roleGroupInfo) + if getGroupRoleInfoErr == true { + flowLog.GroupName = roleGroupInfo.Title + + for _, rg_v := range getGroupRoleInfo { + clickUserInfoErr, clickUserInfo := commonus.GetUesrContForWechatID(rg_v.Id) + fmt.Printf("9-----------4--------->%v\n", clickUserInfoErr) + var caoZuoRenInfnfo caoZuoRen + if clickUserInfoErr == true { + if strconv.FormatInt(clickUserInfo.Key, 10) == fw_v.ClickName { + caoZuoRenInfnfo.IsTrue = 1 + if fw_v.AddTime != 0 { + caoZuoRenInfnfo.TimeVal = commonus.TimeStampToDate(fw_v.AddTime, 1) + } + } + caoZuoRenInfnfo.Name = clickUserInfo.Name + flowLog.UserList = append(flowLog.UserList, caoZuoRenInfnfo) + } + // var caoZuoRenInfnfo caoZuoRen + // caoZuoRenInfnfo.Name = + // if workUser.WechatId == rg_v.Id || workUser.WorkWechatId == rg_v.Id { + // } + } + } + } + + } + + dutyCecorFlowInfo.TechnologicalProcess = append(dutyCecorFlowInfo.TechnologicalProcess, flowLog) + } + } + } + } + response.Result(0, dutyCecorFlowInfo, "获取成功", c) +} + +//查看定量考核列表 +func (d *EvaluationInterface) LookRationkScoreFlow(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, requestData, "参数错误!请重新提交!", c) + return + } + if requestData.OutId != "" { + idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) + if inIntErr == nil { + requestData.Id = idInt + } + } + var flowDataLog []assessmentmodel.FlowLogData + getErr := global.GVA_DB_Performanceappraisal.Where("`fld_flow_log` = ?", requestData.Id).Order("fld_id ASC").Find(&flowDataLog).Error + if getErr != nil { + response.Result(103, err, "参数错误!请重新提交!", c) + return + } + var outList []RationOutStruct + for _, v := range flowDataLog { + var outContt RationOutStruct + outContt.Id = strconv.FormatInt(v.Id, 10) + outContt.FlowId = strconv.FormatInt(v.Key, 10) + targetCont, targetContErr := commonus.GetTargetInfo(v.EvaluationPlan) + if targetContErr == true { + outContt.Title = targetCont.Title + outContt.Unit = targetCont.Uniteing + } + outContt.Score = float64(v.Score) / 100 + outContt.Content = v.Content + outList = append(outList, outContt) + } + if len(outList) <= 0 { + response.Result(103, err, "没有数据!", c) + return + } + //流程查看 + var flowLogList []TechnologicalProcessType + var evalProInfo assessmentmodel.EvaluationProcess + gerEvalErr := global.GVA_DB_Performanceappraisal.Where("`ep_order_key` = ?", requestData.Id).Find(&evalProInfo).Error + fmt.Printf("9-----------1--------->%v\n", gerEvalErr) + if gerEvalErr == nil { + var flowStepAryMaps []FlowStep + jsonFlowErr := json.Unmarshal([]byte(evalProInfo.Content), &flowStepAryMaps) + fmt.Printf("9-----------2--------->%v\n", flowStepAryMaps) + if jsonFlowErr == nil { + fmt.Printf("9-----------3--------->%v\n", flowStepAryMaps) + if len(flowStepAryMaps) > 0 { + for _, fw_v := range flowStepAryMaps { + var flowLog TechnologicalProcessType + flowLog.Step = fw_v.Step + flowLog.State = fw_v.State + workUser, workUserErr := commonus.GetWorkUser(fw_v.ClickName) + fmt.Printf("9-----------4-----2---->%v\n", fw_v) + if workUserErr == true { + fmt.Printf("9-----------4-----1---->%v\n", workUserErr) + bfErr, bf := commonus.GetBranchFactory(workUser.DepartmentId) + fmt.Printf("9-----------4-----3---->%v\n", bfErr) + if bfErr == true { + getGroupRoleInfoErr, getGroupRoleInfo, roleGroupInfo := commonus.GetOfficeWork(fw_v.RoleGroup, int64(bf.WechatId)) + fmt.Printf("9-----------4-----5---->%v---->%v---->%v\n", getGroupRoleInfoErr, getGroupRoleInfo, roleGroupInfo) + if getGroupRoleInfoErr == true { + flowLog.GroupName = roleGroupInfo.Title + + for _, rg_v := range getGroupRoleInfo { + clickUserInfoErr, clickUserInfo := commonus.GetUesrContForWechatID(rg_v.Id) + fmt.Printf("9-----------4--------->%v\n", clickUserInfoErr) + var caoZuoRenInfnfo caoZuoRen + if clickUserInfoErr == true { + if strconv.FormatInt(clickUserInfo.Key, 10) == fw_v.ClickName { + caoZuoRenInfnfo.IsTrue = 1 + if fw_v.AddTime != 0 { + caoZuoRenInfnfo.TimeVal = commonus.TimeStampToDate(fw_v.AddTime, 1) + } + } + caoZuoRenInfnfo.Name = clickUserInfo.Name + flowLog.UserList = append(flowLog.UserList, caoZuoRenInfnfo) + } + // var caoZuoRenInfnfo caoZuoRen + // caoZuoRenInfnfo.Name = + // if workUser.WechatId == rg_v.Id || workUser.WorkWechatId == rg_v.Id { + // } + } + } + } + + } + + flowLogList = append(flowLogList, flowLog) + } + } + } + } + outListMap := commonus.MapOut() + outListMap["List"] = outList + outListMap["flowLog"] = flowLogList + response.Result(0, outListMap, "查询成功", c) +} + +//获取点击人信息 +// userContInfoIstrue, userContInfo := commonus.GetUesrContForWechatID(t.FromUsername) diff --git a/gin_server_admin/api/index/evaluation/lookquantita.go b/gin_server_admin/api/index/evaluation/lookquantita.go new file mode 100644 index 0000000..349f851 --- /dev/null +++ b/gin_server_admin/api/index/evaluation/lookquantita.go @@ -0,0 +1,100 @@ +package evaluation + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +//查看定量考核目标设定 +func (e *EvaluationInterface) LookQuantitativeConfig(c *gin.Context) { + var requestData SelectQuantitativeConfig + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + var qualConfigList []assessmentmodel.QuantitativeConfig + gormDb := global.GVA_DB_Performanceappraisal + if requestData.GroupId != "" { + gormDb = gormDb.Where("`group` = ?", requestData.GroupId) + } + if requestData.DepartmentID != "" { + gormDb = gormDb.Where("`departmentid` = ?", requestData.DepartmentID) + } + if requestData.Dimension != "" { + gormDb = gormDb.Where("`dimension` = ?", requestData.Dimension) + } + if requestData.Target != "" { + gormDb = gormDb.Where("`target` = ?", requestData.Target) + } + if requestData.DetailedTarget != "" { + gormDb = gormDb.Where("`targetconfig` = ?", requestData.DetailedTarget) + } + switch requestData.Type { + case 1: + gormDb = gormDb.Where("`type` = ?", requestData.Type) + case 2: + gormDb = gormDb.Where("`type` = ?", requestData.Type) + if requestData.Class != 0 { + gormDb = gormDb.Where("`timecopy` = ?", requestData.Class) + } + case 3: + gormDb = gormDb.Where("`type` = ?", requestData.Type) + if requestData.Class != 0 { + gormDb = gormDb.Where("`timecopy` = ?", requestData.Class) + } + default: + } + if requestData.Year != 0 { + gormDb = gormDb.Where("`year` = ?", requestData.Year) + } + if requestData.State != 0 { + gormDb = gormDb.Where("`state` = ?", requestData.State) + } + // gormDb = gormDb.Order("group ASC,departmentid ASC,dimension ASC,target ASC,targetconfig ASC").Order("year DESC").Order("timecopy ASC,id ASC") + gormDb = gormDb.Order("`group` ASC").Order("`departmentid` ASC").Order("`dimension` ASC").Order("`target` ASC").Order("`targetconfig` ASC").Order("`year` DESC").Order("`timecopy` ASC").Order("`id` ASC") + contErr := gormDb.Find(&qualConfigList).Error + if contErr != nil { + response.Result(102, err, "没有数据!", c) + return + } + var outList []OutQuantitativeConfig + for _, v := range qualConfigList { + var outCont OutQuantitativeConfig + outCont.Id = v.Id + outCont.DepartmentId = v.DepartmentId + outCont.Group = v.Group + outCont.Dimension = v.Dimension + outCont.Target = v.Target + outCont.TargetConfig = v.TargetConfig + outCont.Type = v.Type + outCont.Year = v.Year + outCont.Timecopy = v.Timecopy + outCont.Zeroprize = v.Zeroprize / 100 + outCont.Allprize = v.Allprize / 100 + outCont.Time = v.Time + outCont.State = v.State + + gErr, groupInfo := commonus.GetGroupCont(v.Group) + if gErr == true { + outCont.GroupTitle = groupInfo.Name + } + dErr, departmentInfo := commonus.GetBranchFactory(v.DepartmentId) + if dErr == true { + outCont.DimensionTitle = departmentInfo.Name + } + targetInfo, tErr := commonus.GetTargetInfo(v.Target) + if tErr == true { + outCont.TargetTitle = targetInfo.Title + } + dtargetInfo, dtErr := commonus.GetDetailedTargetInfo(v.TargetConfig) + if dtErr == true { + outCont.DetailedTargetTitle = dtargetInfo.Title + } + outList = append(outList, outCont) + } + response.Result(0, outList, "获取成功!", c) +} diff --git a/gin_server_admin/api/index/evaluation/sendwechatmsg.go b/gin_server_admin/api/index/evaluation/sendwechatmsg.go index 94b0645..c6553cd 100644 --- a/gin_server_admin/api/index/evaluation/sendwechatmsg.go +++ b/gin_server_admin/api/index/evaluation/sendwechatmsg.go @@ -39,7 +39,7 @@ func EiteScoreFlow(saveId int64, saveData map[string]interface{}) (isTrue bool, @keyNumber 卡片TaskID @nextStep 下一步 */ -func UpEvaluationProcessReject(orderKey, roleGroup, keyNumber int64, nextStep int) (evalProc assessmentmodel.EvaluationProcess, isTrue bool) { +func UpEvaluationProcessReject(orderKey, roleGroup, keyNumber int64, nextStep int, userkey string) (evalProc assessmentmodel.EvaluationProcess, isTrue bool) { isTrue = false judgeErr := global.GVA_DB_Performanceappraisal.Where("`ep_order_key` = ?", orderKey).First(&evalProc).Error if judgeErr != nil { @@ -61,6 +61,8 @@ func UpEvaluationProcessReject(orderKey, roleGroup, keyNumber int64, nextStep in rejectFlow.State = 1 rejectFlow.RoleGroup = roleGroup rejectFlow.NextStep = 2 + rejectFlow.ClickName = userkey + rejectFlow.AddTime = time.Now().Unix() flowLog = append(flowLog, rejectFlow) evalProc.OrderKey = orderKey @@ -91,6 +93,8 @@ func UpEvaluationProcessReject(orderKey, roleGroup, keyNumber int64, nextStep in flowStep.RoleGroup = roleGroup flowStep.NextStep = nextStep + flowStep.ClickName = userkey + flowStep.AddTime = time.Now().Unix() flowStepArys = append(flowStepArys, flowStep) saveData := commonus.MapOut() @@ -116,7 +120,7 @@ orderKey 流程Key roleGroup 角色数组 nextStep 下一步 */ -func UpEvaluationProcessApproval(orderKey, roleGroup, keyNumber int64, nextStep int) (evalProc assessmentmodel.EvaluationProcess, isTrue bool) { +func UpEvaluationProcessApproval(orderKey, roleGroup, keyNumber int64, nextStep int, userkey string) (evalProc assessmentmodel.EvaluationProcess, isTrue bool) { isTrue = false judgeErr := global.GVA_DB_Performanceappraisal.Where("`ep_order_key` = ?", orderKey).First(&evalProc).Error if judgeErr != nil { @@ -138,6 +142,8 @@ func UpEvaluationProcessApproval(orderKey, roleGroup, keyNumber int64, nextStep rejectFlow.State = 1 rejectFlow.RoleGroup = roleGroup rejectFlow.NextStep = nextStep + rejectFlow.ClickName = userkey + rejectFlow.AddTime = time.Now().Unix() flowLog = append(flowLog, rejectFlow) evalProc.OrderKey = orderKey @@ -168,6 +174,7 @@ func UpEvaluationProcessApproval(orderKey, roleGroup, keyNumber int64, nextStep flowStep.RoleGroup = roleGroup flowStep.NextStep = nextStep + flowStep.AddTime = time.Now().Unix() flowStepArys = append(flowStepArys, flowStep) saveData := commonus.MapOut() diff --git a/gin_server_admin/api/index/evaluation/type.go b/gin_server_admin/api/index/evaluation/type.go index 8bff6e5..b3a3ce1 100644 --- a/gin_server_admin/api/index/evaluation/type.go +++ b/gin_server_admin/api/index/evaluation/type.go @@ -1,5 +1,7 @@ package evaluation +import "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + type EvaluationInterface struct{} //考核方案细则列表输出 @@ -65,7 +67,9 @@ type FlowStep struct { Step int `json:"step"` //当前是第几步 Key string `json:"key"` //任务卡ID State int `json:"state"` //状态 - RoleGroup int64 `json:"rolefroup"` //状态 + RoleGroup int64 `json:"rolefroup"` //角色组 + ClickName string `json:"clickname"` //操作人 + AddTime int64 `json:"addtime"` //添加时间 NextStep int `json:"nextstep"` //下一步 1:内勤;2:部门负责人:3:整改;4:整改后部门负责;5:归档起草人 } @@ -96,3 +100,79 @@ type GetRationFlowLog struct { GroupId string `json:"groupid"` DepartmentID string `json:"departmentid"` } + +//定性指标流程展示 +type DutyCecorFlow struct { + OrderId string `json:"orderid"` //审批流标识 + Dimension string `json:"dimension"` //维度 + Target string `json:"target"` //指标 + TargetSun string `json:"targetsun"` //子指标 + DetailedTarget string `json:"detailedtargent"` //指标明细 + Content string `json:"content"` //指标说明 + Reason string `json:"reason"` //操作原因 + ReasonInfo string `json:"reasoninfo"` // + DivisionResponsibility []DivisiosibilityType `json:"divresbil"` //责任划分 + RectifMeasures []RectifMeasures `json:"rectifmeasures"` //整改措施 + TechnologicalProcess []TechnologicalProcessType `technologicalprocess` //流程 +} + +//审批流 +type TechnologicalProcessType struct { + Step int `json:"step"` + State int `json:"state"` //状态 + UserList []caoZuoRen `json:"userlist"` //操作人 + GroupName string `json:"groupname"` //操作组 +} + +type caoZuoRen struct { + Name string `json:"name"` + IsTrue int `json:"istrue"` + TimeVal string `json:"timeval"` //操作时间 +} + +//责任划分 +type DivisiosibilityType struct { + Type string `json:"type"` + UserName string `json:"username"` + Weight int64 `json:"weight"` +} + +//整改项目 +type RectifMeasures struct { + RecName string `json:"recname"` //整改人 + RecCont string `json:"reccont"` //整改内容 + State int `json:"state"` //状态 + TimeVal string `json:"timeval"` //操作时间 +} + +//定量考核审批输出 +type RationOutStruct struct { + Id string `json:"id"` + FlowId string `flowid` + Title string `json:"title"` + Unit string `json:"unit"` //单位"` + Score float64 `json:score` //分数\ + Content string `json:"content"` +} + +//定量考核目标设定查询 +type SelectQuantitativeConfig struct { + GroupId string `json:"groupid"` + DepartmentID string `json:"departmentid"` + Dimension string `json:"dimension"` //维度 + Target string `json:"target"` //指标 + DetailedTarget string `json:"detailedtargent"` //指标明细 + Type int `json:"type"` //1、年度;2、季度;3、月度 + Year int `json:"year"` //年度 + Class int `json:"class"` //季度与月度辅助值 + State int `json:"state"` //状态(1、启用;2、禁用;3、删除) +} + +//输出 +type OutQuantitativeConfig struct { + assessmentmodel.QuantitativeConfig + GroupTitle string `json:"grouptitle"` //操作组 + DimensionTitle string `json:"dimensiontitle"` //维度 + TargetTitle string `json:"targettitle"` //指标 + DetailedTargetTitle string `json:"detailedtargenttitle"` //指标明细 +} diff --git a/gin_server_admin/api/v1/assessment/department_target.go b/gin_server_admin/api/v1/assessment/department_target.go index c816d46..fcfe72a 100644 --- a/gin_server_admin/api/v1/assessment/department_target.go +++ b/gin_server_admin/api/v1/assessment/department_target.go @@ -476,11 +476,14 @@ func (d *DutyHandle) DepartmentListNew(c *gin.Context) { var departAryList []departmentDutyNew for _, v := range dutyClassAry { - var departCont departmentDutyNew - departCont.Id = strconv.FormatInt(v.Id, 10) - departCont.Name = v.Title - departCont.Child = GetEvalTarget(v.Id, requestData.Group, requestData.DepartmentId) - departAryList = append(departAryList, departCont) + childList := GetEvalTarget(v.Id, requestData.Group, requestData.DepartmentId) + if len(childList) > 0 { + var departCont departmentDutyNew + departCont.Id = strconv.FormatInt(v.Id, 10) + departCont.Name = v.Title + departCont.Child = GetEvalTarget(v.Id, requestData.Group, requestData.DepartmentId) + departAryList = append(departAryList, departCont) + } } response.Result(0, departAryList, "数据获取成功!", c) } @@ -499,6 +502,7 @@ func GetEvalTarget(dimId int64, group, departId string) (dimensionAry []taskDeta return } for _, v := range contAry { + var dimCont taskDetailsLinkage dimCont.Id = strconv.FormatInt(v.Id, 10) dimCont.Name = v.Title @@ -513,7 +517,19 @@ func GetEvalTarget(dimId int64, group, departId string) (dimensionAry []taskDeta dimCont.Unit = v.Uniteing dimCont.Cycles = v.Cycles dimCont.CycleAttres = v.CycleAttres - dimensionAry = append(dimensionAry, dimCont) + + if v.Type == 1 { + var counetNumber int64 + countErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DetailedTarget{}).Select("dt_id").Where("`dt_parentid` = ?", v.Id).Pluck("COALESCE(COUNT(dt_id), 0) as countid", &counetNumber).Error + if countErr == nil { + if counetNumber > 0 { + dimensionAry = append(dimensionAry, dimCont) + } + } + } else { + dimensionAry = append(dimensionAry, dimCont) + } + } return } @@ -541,7 +557,7 @@ func (d *DutyHandle) AddDepartmentDutyInfo(c *gin.Context) { return } groupId, groupErr := strconv.ParseInt(requestData.Group, 10, 64) - if groupErr == nil { + if groupErr != nil { groupId = 0 } if requestData.DepartmentId == "" { @@ -556,24 +572,28 @@ func (d *DutyHandle) AddDepartmentDutyInfo(c *gin.Context) { response.Result(104, err, "没有要添加的数据", c) return } + var eiteIdAry []int64 var saveDataAry []assessmentmodel.QualitativeEvaluation - fmt.Printf("1----------------------------->\n") + fmt.Printf("1-------------%v---------------->%v\n", groupId, requestData.Group) for _, v := range requestData.Child { //维度 for _, v_s := range v.Child { //指标 if v_s.Status == 1 { - var saveData assessmentmodel.QualitativeEvaluation - //指标ID + + //指标ID转换 targetId, targetErr := strconv.ParseInt(v_s.Id, 10, 64) if targetErr == nil { - fmt.Printf("2----------------------------->\n") //获取指标内容 evalTarCont, evalTarContErr := commonus.GetTargetInfo(targetId) if evalTarContErr == true { - fmt.Printf("3----------------------------->\n") + //判断是定量还是定性 if evalTarCont.Type == 2 { - fmt.Printf("4----------------------------->\n") - saveData.Target = targetId - saveData.Operator = evalTarCont.Report + //定量指标操作 + var saveData assessmentmodel.QualitativeEvaluation + + var qeId []int64 + eiteQualEvalSaveData := commonus.MapOut() + gormQualEval := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_dimension` = ? AND `qe_target` = ? AND `qe_type` = ?", v.Id, targetId, evalTarCont.Type) + //计算执行考核人部门 if evalTarCont.Report != "" { var departAry []string userKeyAry := strings.Split(evalTarCont.Report, ",") @@ -586,140 +606,189 @@ func (d *DutyHandle) AddDepartmentDutyInfo(c *gin.Context) { } } saveData.DepartmentId = strings.Join(departAry, ",") + gormQualEval = gormQualEval.Where("`qe_department_id` IN ?", departAry) + eiteQualEvalSaveData["qe_department_id"] = strings.Join(departAry, ",") } + //维度ID dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) if dimErr == nil { saveData.Dimension = dimId } - saveData.Type = evalTarCont.Type - saveData.Unit = v_s.Unit - saveData.ReferenceScore = v_s.ReferenceScore - saveData.State = 1 + saveData.Target = targetId //指标 + saveData.Type = evalTarCont.Type //类型 + saveData.Unit = v_s.Unit //单位 + saveData.ReferenceScore = v_s.ReferenceScore //分值 + saveData.State = 1 //状态 saveData.Addtime = time.Now().Unix() saveData.Eitetime = time.Now().Unix() + saveData.Group = groupId //集团 + saveData.Cycles = v_s.Cycles //单位 + saveData.CycleAttres = v_s.CycleAttres //辅助计数 + saveData.AcceptEvaluation = departId //接受考核部门 + saveData.Content = v_s.Content //描述 + saveData.Operator = evalTarCont.Report //执行考核人 + + judgeContErr := gormQualEval.Find(&qeId).Error + if judgeContErr == nil && len(qeId) > 0 { + eiteQualEvalSaveData["qe_dimension"] = dimId + eiteQualEvalSaveData["qe_target"] = targetId + eiteQualEvalSaveData["qe_type"] = evalTarCont.Type + eiteQualEvalSaveData["qe_unit"] = v_s.Unit + eiteQualEvalSaveData["qe_reference_score"] = v_s.ReferenceScore + eiteQualEvalSaveData["qe_state"] = 1 + eiteQualEvalSaveData["qe_eitetime"] = time.Now().Unix() + eiteQualEvalSaveData["qe_group"] = groupId + eiteQualEvalSaveData["qe_cycle"] = v_s.Cycles + eiteQualEvalSaveData["qe_cycleattr"] = v_s.CycleAttres + eiteQualEvalSaveData["qe_accept_evaluation"] = departId + eiteQualEvalSaveData["qe_operator"] = evalTarCont.Report + eiteQualEvalSaveData["qe_content"] = v_s.Content + eiteIdAry = append(eiteIdAry, dimId) + //修改已经存在的内容 + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` IN ?", qeId).Updates(eiteQualEvalSaveData) + } else { + saveDataAry = append(saveDataAry, saveData) + } - saveData.Group = groupId //departId - saveData.Cycles = v_s.Cycles - saveData.CycleAttres = v_s.CycleAttres - saveData.AcceptEvaluation = departId - saveData.Content = v_s.Content - saveDataAry = append(saveDataAry, saveData) } else { - fmt.Printf("5----------------------------->\n") + //定性考核 //获取子栏目列表 var sunTarget []assessmentmodel.QualitativeTarget sunErr := global.GVA_DB_Performanceappraisal.Where("q_parent_id = ?", targetId).Find(&sunTarget).Error - if sunErr == nil && len(sunTarget) > 0 { - fmt.Printf("6----------------------------->\n") - for _, s_d_v := range sunTarget { - fmt.Printf("7----------------------------->\n") - var detaTarget []assessmentmodel.DetailedTarget - detaiErr := global.GVA_DB_Performanceappraisal.Where("dt_parentid = ? AND dt_parentid_sun = ?", targetId, s_d_v.Id).Find(&detaTarget).Error - if detaiErr == nil && len(detaTarget) > 0 { - fmt.Printf("8----------------------------->\n") - for _, s_t_v := range detaTarget { - fmt.Printf("9----------------------------->\n") - saveData.Target = targetId - saveData.Operator = evalTarCont.Report - if evalTarCont.Report != "" { - var departAry []string - userKeyAry := strings.Split(evalTarCont.Report, ",") - if len(userKeyAry) > 0 { - for _, u_v := range userKeyAry { - usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_bf_id"}, map[string]interface{}{"wm_key": u_v}) - if usErr == true { - departAry = append(departAry, strconv.FormatInt(usCont.DepartmentId, 10)) + fmt.Printf("judge----------------1----------->%v\n", sunErr) + if sunErr == nil { + if len(sunTarget) > 0 { + fmt.Printf("judge----------------2----------->%v\n", len(sunTarget)) + //获取定性指标子项目下的考核详情 + for _, s_d_v := range sunTarget { + //指标详情 + var detaTarget []assessmentmodel.DetailedTarget + detaiErr := global.GVA_DB_Performanceappraisal.Where("dt_parentid = ? AND dt_parentid_sun = ?", targetId, s_d_v.Id).Find(&detaTarget).Error + fmt.Printf("judge----------------3----------->%v\n", detaiErr) + if detaiErr == nil { + if len(detaTarget) > 0 { + fmt.Printf("judge----------------4----------->%v\n", len(detaTarget)) + //指标详情循环 + for _, s_t_v := range detaTarget { + var saveDataDetar assessmentmodel.QualitativeEvaluation + + var qeId []int64 + eiteQualEvalSaveData := commonus.MapOut() + gormQualEval := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_dimension` = ? AND `qe_target` = ? AND `qe_type` = ? AND `qe_target_sun` = ? AND `qe_detailed_target` = ?", v.Id, targetId, evalTarCont.Type, s_d_v.Id, s_t_v.Id) + + //计算执行考核部门 + if evalTarCont.Report != "" { + var departAry []string + userKeyAry := strings.Split(evalTarCont.Report, ",") + if len(userKeyAry) > 0 { + for _, u_v := range userKeyAry { + usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_bf_id"}, map[string]interface{}{"wm_key": u_v}) + if usErr == true { + departAry = append(departAry, strconv.FormatInt(usCont.DepartmentId, 10)) + } + } } + saveDataDetar.DepartmentId = strings.Join(departAry, ",") + gormQualEval = gormQualEval.Where("`qe_department_id` IN ?", departAry) + eiteQualEvalSaveData["qe_department_id"] = strings.Join(departAry, ",") } - } - saveData.DepartmentId = strings.Join(departAry, ",") - } - //维度ID - dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) - if dimErr == nil { - saveData.Dimension = dimId - } - saveData.Type = evalTarCont.Type - saveData.DetailedTarget = s_t_v.Id - saveData.Unit = v_s.Unit - saveData.ReferenceScore = v_s.ReferenceScore - saveData.State = 1 - saveData.Addtime = time.Now().Unix() - saveData.Eitetime = time.Now().Unix() - - saveData.Group = groupId //departId - saveData.Cycles = v_s.Cycles - saveData.CycleAttres = v_s.CycleAttres - saveData.AcceptEvaluation = departId - saveData.Content = v_s.Content - saveDataAry = append(saveDataAry, saveData) - } - } - } - } else { - fmt.Printf("10----------------------------->\n") - var detaTarget []assessmentmodel.DetailedTarget - detaiErr := global.GVA_DB_Performanceappraisal.Where("dt_parentid = ? AND dt_parentid_sun = 0", targetId).Find(&detaTarget).Error - if detaiErr == nil && len(detaTarget) > 0 { - fmt.Printf("12----------------------------->\n") - for _, s_t_v := range detaTarget { - fmt.Printf("13----------------------------->\n") - saveData.Target = targetId - saveData.Operator = evalTarCont.Report - if evalTarCont.Report != "" { - var departAry []string - userKeyAry := strings.Split(evalTarCont.Report, ",") - if len(userKeyAry) > 0 { - for _, u_v := range userKeyAry { - usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_bf_id"}, map[string]interface{}{"wm_key": u_v}) - if usErr == true { - departAry = append(departAry, strconv.FormatInt(usCont.DepartmentId, 10)) + //维度ID + dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) + if dimErr == nil { + saveDataDetar.Dimension = dimId + } + saveDataDetar.Target = targetId //指标 + saveDataDetar.TargetSun = s_d_v.Id //子栏目 + saveDataDetar.DetailedTarget = s_t_v.Id //指标详情 + saveDataDetar.Type = evalTarCont.Type //类型 + saveDataDetar.Unit = v_s.Unit //单位 + saveDataDetar.ReferenceScore = v_s.ReferenceScore //得分 + saveDataDetar.State = 1 //状态 + saveDataDetar.Addtime = time.Now().Unix() + saveDataDetar.Eitetime = time.Now().Unix() + saveDataDetar.Group = groupId //departId + saveDataDetar.Cycles = v_s.Cycles + saveDataDetar.CycleAttres = v_s.CycleAttres + saveDataDetar.AcceptEvaluation = departId + saveDataDetar.Operator = evalTarCont.Report + saveDataDetar.Content = v_s.Content + + judgeContErr := gormQualEval.Find(&qeId).Error + if judgeContErr == nil && len(qeId) > 0 { + fmt.Printf("judge----------------5-------%v---->%v\n", judgeContErr, len(qeId)) + eiteQualEvalSaveData["qe_dimension"] = dimId + eiteQualEvalSaveData["qe_target"] = targetId + eiteQualEvalSaveData["qe_target_sun"] = s_d_v.Id + eiteQualEvalSaveData["qe_detailed_target"] = s_t_v.Id + eiteQualEvalSaveData["qe_type"] = evalTarCont.Type + eiteQualEvalSaveData["qe_unit"] = v_s.Unit + eiteQualEvalSaveData["qe_reference_score"] = v_s.ReferenceScore + eiteQualEvalSaveData["qe_state"] = 1 + eiteQualEvalSaveData["qe_eitetime"] = time.Now().Unix() + eiteQualEvalSaveData["qe_group"] = groupId + eiteQualEvalSaveData["qe_cycle"] = v_s.Cycles + eiteQualEvalSaveData["qe_cycleattr"] = v_s.CycleAttres + eiteQualEvalSaveData["qe_accept_evaluation"] = departId + eiteQualEvalSaveData["qe_operator"] = evalTarCont.Report + eiteQualEvalSaveData["qe_content"] = v_s.Content + eiteIdAry = append(eiteIdAry, dimId) + //修改已经存在的内容 + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` IN ?", qeId).Updates(eiteQualEvalSaveData) + } else { + fmt.Printf("judge----------------5---5----%v---->%v\n", judgeContErr, len(qeId)) + saveDataAry = append(saveDataAry, saveDataDetar) } + } + + } else { + fmt.Printf("judge----------------4-----4------>%v\n", len(detaTarget)) } - saveData.DepartmentId = strings.Join(departAry, ",") + } else { + fmt.Printf("judge----------------3-----3------>%v\n", detaiErr) } - //维度ID - dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) - if dimErr == nil { - saveData.Dimension = dimId - } - saveData.Type = evalTarCont.Type - saveData.DetailedTarget = s_t_v.Id - saveData.Unit = v_s.Unit - saveData.ReferenceScore = v_s.ReferenceScore - saveData.State = 1 - saveData.Addtime = time.Now().Unix() - saveData.Eitetime = time.Now().Unix() - - saveData.Group = groupId //departId - saveData.Cycles = v_s.Cycles - saveData.CycleAttres = v_s.CycleAttres - saveData.AcceptEvaluation = departId - saveData.Content = v_s.Content - saveDataAry = append(saveDataAry, saveData) } - + } else { + fmt.Printf("judge----------------2---2-------->%v\n", len(sunTarget)) } + } else { + fmt.Printf("judge----------------1-----1------>%v\n", sunErr) } } - } } - + } else { + fmt.Printf("judge----------------6-----1------>%v\n", v_s) + var qualEvalId []int64 + judgeQualEvalErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`qe_group` = ? AND FIND_IN_SET(%v,`qe_department_id`) AND `qe_dimension` = ? AND `qe_target` = ?", groupId, departId, v.Id, v_s.Id).Find(&qualEvalId).Error + if judgeQualEvalErr == nil { + if len(qualEvalId) > 0 { + eiteIdAry = append(eiteIdAry, 2) + fmt.Printf("judge----------------6-----3------>%v\n", judgeQualEvalErr) + qualEvalSave := commonus.MapOut() + qualEvalSave["qe_state"] = 2 + qualEvalSave["qe_eitetime"] = time.Now().Unix() + global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` IN ?", qualEvalId).Updates(qualEvalSave) + } + } } } } - if len(saveDataAry) <= 0 { + if len(saveDataAry) <= 0 && len(eiteIdAry) <= 0 { response.Result(105, saveDataAry, "没有要添加的数据", c) return } - addErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error - if addErr != nil { - response.Result(106, len(saveDataAry), "数据添加失败", c) - return + + // fmt.Printf("judge----------------7----------->%v\n", v_s) + if len(saveDataAry) > 0 { + addErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error + if addErr != nil { + response.Result(106, len(saveDataAry), "数据添加失败", c) + return + } } + if departId != 0 { } diff --git a/gin_server_admin/api/v1/assessment/dutyhandle.go b/gin_server_admin/api/v1/assessment/dutyhandle.go index 13bafc7..a0d692d 100644 --- a/gin_server_admin/api/v1/assessment/dutyhandle.go +++ b/gin_server_admin/api/v1/assessment/dutyhandle.go @@ -50,7 +50,7 @@ func (d *DutyHandle) DutyClassList(c *gin.Context) { total = 0 } } else { - listTitleErr := global.GVA_DB_Performanceappraisal.Where(whereMap).Where("`state` IN ?", []int{1, 2}).Order("id DESC").Limit(requestData.PageSize).Offset(offSetPage).Find(&dutyClassAry).Error + listTitleErr := global.GVA_DB_Performanceappraisal.Where(whereMap).Where("`state` IN ?", []int{1, 2}).Order("sort ASC,id DESC").Limit(requestData.PageSize).Offset(offSetPage).Find(&dutyClassAry).Error if listTitleErr != nil { response.Result(103, listTitleErr, "数据获取失败!", c) return @@ -70,6 +70,8 @@ func (d *DutyHandle) DutyClassList(c *gin.Context) { dutyClassCont.Time = val.Time dutyClassCont.State = val.State dutyClassCont.OutId = strconv.FormatInt(val.Id, 10) + dutyClassCont.Sort = val.Sort + dutyClassCont.IsTrue = judgeIsTrue(val.Id) dutyClassOutputAry = append(dutyClassOutputAry, dutyClassCont) } countSum := len(dutyClassOutputAry) @@ -78,6 +80,19 @@ func (d *DutyHandle) DutyClassList(c *gin.Context) { response.Result(0, printData, "查询成功!", c) } +//判断是否已经被使用 +func judgeIsTrue(classId int64) (isTrue int) { + isTrue = 2 + var evalTarCont []assessmentmodel.EvaluationTarget + err := global.GVA_DB_Performanceappraisal.Where("`et_dimension` = ?", classId).Find(&evalTarCont).Error + if err == nil { + if len(evalTarCont) > 0 { + isTrue = 1 + } + } + return +} + //添加职责类别 func (d *DutyHandle) AddDutyClass(c *gin.Context) { var requestData dutyClassAdd @@ -93,6 +108,9 @@ func (d *DutyHandle) AddDutyClass(c *gin.Context) { if requestData.Type == 0 { requestData.Type = 1 } + if requestData.Sort == 0 { + requestData.Sort = 1000 + } outMap := commonus.MapOut() juadgeErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DutyClass{}).Select("title").Where("`title` = ?", requestData.Title).First(&outMap).Error if juadgeErr == nil { @@ -105,6 +123,7 @@ func (d *DutyHandle) AddDutyClass(c *gin.Context) { dutyClassCont.Type = requestData.Type dutyClassCont.Weight = 0 dutyClassCont.State = 1 + dutyClassCont.Sort = requestData.Sort dutyClassCont.Time = time.Now().Unix() addArchiveFileErr := global.GVA_DB_Performanceappraisal.Create(&dutyClassCont).Error @@ -164,6 +183,7 @@ func (d *DutyHandle) EiteDutyClassInfo(c *gin.Context) { response.Result(103, err, "请输入职责名称", c) return } + var dutyClassCont assessmentmodel.DutyClass inFoErrJuadge := global.GVA_DB_Performanceappraisal.Where("`id` = ?", requestData.Id).First(&dutyClassCont).Error if inFoErrJuadge != nil { @@ -183,7 +203,9 @@ func (d *DutyHandle) EiteDutyClassInfo(c *gin.Context) { saveData := commonus.MapOut() saveData["title"] = requestData.Title saveData["time"] = time.Now().Unix() - + if requestData.Sort != 0 { + saveData["sort"] = requestData.Sort + } var eiteDutyClass assessmentmodel.DutyClass inFoErr := global.GVA_DB_Performanceappraisal.Model(&eiteDutyClass).Where("`id` = ?", requestData.Id).Updates(saveData).Error if inFoErr != nil { diff --git a/gin_server_admin/api/v1/assessment/dutytype.go b/gin_server_admin/api/v1/assessment/dutytype.go index a7f63e5..bd4c867 100644 --- a/gin_server_admin/api/v1/assessment/dutytype.go +++ b/gin_server_admin/api/v1/assessment/dutytype.go @@ -44,12 +44,14 @@ type dutyClassRequest struct { type dutyClassOutput struct { assessmentmodel.DutyClass OutIdStruct + IsTrue int `json:"istrue"` } //职责类别添加 type dutyClassAdd struct { Title string `json:"title"` Type int `json:"type"` //1:定性考核;2:定量考核 + Sort int `json:"sort"` } //职责类别修改 @@ -298,6 +300,7 @@ type addTargetType struct { type outTargetList struct { assessmentmodel.EvaluationTarget OutId string `json:"outid"` + DimensionName string `json:"dimensionname"` RelevantDepartmentMap []outTargetAttr `json:"relevantdepartmentsmap"` ReportMap []outTargetAttr `json:"reportmap"` VisibleRangeGroupMap []outTargetAttr `json:"visiblerangegroupmap"` //可见范围(集团) @@ -313,6 +316,7 @@ type outTargetAttr struct { //详细内容输出 type outTargetInfo struct { assessmentmodel.EvaluationTarget + DimensionIdStr string `json:"dimensionidstr"` RelevantDepartmentMap []string `json:"relevantdepartmentsmap"` ReportMap []string `json:"reportmap"` VisibleRangeGroupMap []string `json:"visiblerangegroupmap"` //可见范围(集团) @@ -740,3 +744,22 @@ type departmentDutyNew struct { QualEvalArrt Child []taskDetailsLinkage `json:"child"` //考核细则 } + +//设定指标结算周期 +type SetEvaluationObjectives struct { + Year int64 `json:"year"` //年度 + Group int64 `json:"group"` //集团 + DepartMent int64 `json:"department"` //部门 + Dimension string `json:"dimension"` //维度 + Target string `json:"target"` //指标 + TargetDetails string `json:"targetdetails"` //指标细则 + Cycle int `json:"cycle"` //周期 + CycleAdded []CycleAddedType `json:"cycleadded"` +} + +//周期列表 +type CycleAddedType struct { + Id int64 `json:"id"` + Zeroprize int64 `json:"zeroprize"` //零奖值"` + Allprize int64 `json:"allprize"` //全奖值"` +} diff --git a/gin_server_admin/api/v1/assessment/newassessment.go b/gin_server_admin/api/v1/assessment/newassessment.go index 9e57a2d..535ac69 100644 --- a/gin_server_admin/api/v1/assessment/newassessment.go +++ b/gin_server_admin/api/v1/assessment/newassessment.go @@ -1,6 +1,7 @@ package assessment import ( + "encoding/json" "fmt" "strconv" "strings" @@ -19,6 +20,8 @@ func (d *dataLockStatistics) AddCardAssEss(deparmentId string, addData AddQualEv sunTargetCont, sunTargetErr := judgeColumn(addData.Target, addData.TargetSun, addData.TargetSunTitle) if sunTargetErr != true { } + jsonCont, _ := json.Marshal(sunTargetCont) + fmt.Printf("jsonKKKK----------------->%v\n", string(jsonCont)) groupInt, groupIntErr := strconv.ParseInt(addData.Group, 10, 64) if groupIntErr != nil { groupInt = 1 @@ -35,6 +38,20 @@ func (d *dataLockStatistics) AddCardAssEss(deparmentId string, addData AddQualEv if departmentIdIntErr != nil { departmentIdInt = 0 } + // var dimIdInt int64 = 0 + //获取所属维度 + // targetInfo, targetInfoErr := commonus.GetDutyClassInfo(targetInt) + targetInfo, targetInfoErr := commonus.GetTargetInfo(targetInt) + // jsonDim, _ := json.Marshal(targetInfo) + // fmt.Printf("dim---------------->%v\n", jsonDim)s + if targetInfoErr == true { + if dimensionInt == 0 { + dimensionInt = targetInfo.Dimension + } + } + + addDepartDimension(addData.Group, strconv.FormatInt(dimensionInt, 10), addData.Dimension, 1) + var saveDataAry []assessmentmodel.QualitativeEvaluation for _, v := range addData.EvaluationList { var saveData assessmentmodel.QualitativeEvaluation @@ -55,7 +72,7 @@ func (d *dataLockStatistics) AddCardAssEss(deparmentId string, addData AddQualEv // if targetSunIntErr == nil { // saveData.TargetSun = targetSunInt // } - explainCont, explainErr := judgeDetails(addData.Target, v.Title, v.Content, v.DetailedTarget) + explainCont, explainErr := judgeDetails(addData.Target, v.Title, v.Content, v.DetailedTarget, sunTargetCont.Id) if explainErr == true { saveData.DetailedTarget = explainCont.Id } @@ -128,7 +145,15 @@ func judgeColumn(ascription, columId, title string) (content assessmentmodel.Qua } //判断考核细则是否存在 -func judgeDetails(ascription, title, explain, explainId string) (content assessmentmodel.DetailedTarget, isTrue bool) { +/* +参数说明 +@ascription 归属指标栏目 +@title 指标细则 +@explain 指标说明' +@explainId 指标明细ID +@sunTargetId 子栏目 +*/ +func judgeDetails(ascription, title, explain, explainId string, sunTargetId int64) (content assessmentmodel.DetailedTarget, isTrue bool) { isTrue = false if explainId != "" { judgeIdErr := global.GVA_DB_Performanceappraisal.Where("`dt_id` = ?", explainId).First(&content).Error @@ -148,7 +173,7 @@ func judgeDetails(ascription, title, explain, explainId string) (content assessm if ascriptionErr != nil { ascriptionId = 0 } - saveColum := assessmentmodel.DetailedTarget{Title: title, Content: explain, ParentId: ascriptionId, State: 1, AddTime: time.Now().Unix()} + saveColum := assessmentmodel.DetailedTarget{Title: title, Content: explain, ParentId: ascriptionId, ParentIdSun: sunTargetId, State: 1, AddTime: time.Now().Unix()} addErr := global.GVA_DB_Performanceappraisal.Create(&saveColum).Error if addErr != nil { // fmt.Printf("echo --------------3---------->%v\n", saveColum.Id) diff --git a/gin_server_admin/api/v1/assessment/qualitative_evaluation.go b/gin_server_admin/api/v1/assessment/qualitative_evaluation.go index dcfc575..6340894 100644 --- a/gin_server_admin/api/v1/assessment/qualitative_evaluation.go +++ b/gin_server_admin/api/v1/assessment/qualitative_evaluation.go @@ -33,10 +33,10 @@ func (d *DutyHandle) AddQualEval(c *gin.Context) { response.Result(102, err, "请选择接受考核的部门!", c) return } - if requestData.Dimension == "" { - response.Result(102, err, "请选择考核维度", c) - return - } + // if requestData.Dimension == "" { + // response.Result(102, err, "请选择考核维度", c) + // return + // } if requestData.Target == "" { response.Result(102, err, "请选择考核指标", c) return @@ -51,7 +51,7 @@ func (d *DutyHandle) AddQualEval(c *gin.Context) { } var synergeticProcess dataLockStatistics for _, deparmentId := range requestData.AcceptDepartmentId { - addDepartDimension(requestData.Group, deparmentId, requestData.Dimension, 1) + syncProcess.Add(1) // go synergeticProcess.addQualEvalList(deparmentId, requestData) go synergeticProcess.AddCardAssEss(deparmentId, requestData) diff --git a/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go b/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go new file mode 100644 index 0000000..19e9ad0 --- /dev/null +++ b/gin_server_admin/api/v1/assessment/set_evaluation_objectives.go @@ -0,0 +1,253 @@ +package assessment + +import ( + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +func (d *DutyHandle) SetEvaluationObjectives(c *gin.Context) { + var requestData SetEvaluationObjectives + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Year == 0 { + response.Result(102, err, "请填写年度", c) + return + } + if requestData.Group == 0 { + response.Result(102, err, "请选择归属集团", c) + return + } + if requestData.DepartMent == 0 { + response.Result(102, err, "请选择归属部门", c) + return + } + if requestData.Dimension == "" { + response.Result(102, err, "请选择归属维度", c) + return + } + if requestData.Target == "" { + response.Result(102, err, "请选择归属指标", c) + return + } + switch requestData.Cycle { + case 1: + if len(requestData.CycleAdded) != 1 { + response.Result(102, err, "年度只可填写一条!", c) + return + } + case 2: + if len(requestData.CycleAdded) > 4 { + response.Result(102, err, "季度最多只可填写四条!", c) + return + } + if len(requestData.CycleAdded) < 1 { + response.Result(102, err, "季度至少填写一条!", c) + return + } + case 3: + if len(requestData.CycleAdded) > 12 { + response.Result(102, err, "月度最多只可填写十二条!", c) + return + } + if len(requestData.CycleAdded) < 1 { + response.Result(102, err, "月度至少填写一条!", c) + return + } + default: + response.Result(102, err, "请选择周期", c) + return + } + var timecopy []int64 + gromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QuantitativeConfig{}).Select("Timecopy").Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?", requestData.Group, requestData.DepartMent, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle) + if requestData.TargetDetails != "" { + gromDb = gromDb.Where("`targetconfig` = ?", requestData.TargetDetails) + } + judgeErr := gromDb.Find(&timecopy).Error + var saveData []assessmentmodel.QuantitativeConfig + var eiteAddData []int64 + for _, v := range requestData.CycleAdded { + if judgeErr != nil { + var saveDataCont assessmentmodel.QuantitativeConfig + saveDataCont.DepartmentId = requestData.DepartMent + saveDataCont.Group = requestData.Group + dimensionId, dimensionIdErr := strconv.ParseInt(requestData.Dimension, 10, 64) + if dimensionIdErr == nil { + saveDataCont.Dimension = dimensionId + } + + targetId, targetIdErr := strconv.ParseInt(requestData.Target, 10, 64) + if targetIdErr == nil { + saveDataCont.Target = targetId + } + + targetDetailsId, targetDetailsIdErr := strconv.ParseInt(requestData.TargetDetails, 10, 64) + if targetDetailsIdErr == nil { + saveDataCont.TargetConfig = targetDetailsId + } + saveDataCont.Type = int64(requestData.Cycle) + saveDataCont.Year = requestData.Year + saveDataCont.Timecopy = v.Id + if v.Zeroprize < 0 { + saveDataCont.Zeroprize = 0 + } else { + if v.Zeroprize > 100 { + saveDataCont.Zeroprize = 10000 + } else { + saveDataCont.Zeroprize = v.Zeroprize * 100 + } + } + if v.Allprize < 0 { + saveDataCont.Allprize = 0 + } else { + if v.Allprize > 100 { + saveDataCont.Allprize = 10000 + } else { + saveDataCont.Allprize = v.Allprize * 100 + } + } + saveDataCont.Time = time.Now().Unix() + saveDataCont.State = 1 + saveData = append(saveData, saveDataCont) + } else { + if len(timecopy) <= 0 { + var saveDataCont assessmentmodel.QuantitativeConfig + saveDataCont.DepartmentId = requestData.DepartMent + saveDataCont.Group = requestData.Group + dimensionId, dimensionIdErr := strconv.ParseInt(requestData.Dimension, 10, 64) + if dimensionIdErr == nil { + saveDataCont.Dimension = dimensionId + } + + targetId, targetIdErr := strconv.ParseInt(requestData.Target, 10, 64) + if targetIdErr == nil { + saveDataCont.Target = targetId + } + + targetDetailsId, targetDetailsIdErr := strconv.ParseInt(requestData.TargetDetails, 10, 64) + if targetDetailsIdErr == nil { + saveDataCont.TargetConfig = targetDetailsId + } + saveDataCont.Type = int64(requestData.Cycle) + saveDataCont.Year = requestData.Year + saveDataCont.Timecopy = v.Id + if v.Zeroprize < 0 { + saveDataCont.Zeroprize = 0 + } else { + if v.Zeroprize > 100 { + saveDataCont.Zeroprize = 10000 + } else { + saveDataCont.Zeroprize = v.Zeroprize * 100 + } + } + if v.Allprize < 0 { + saveDataCont.Allprize = 0 + } else { + if v.Allprize > 100 { + saveDataCont.Allprize = 10000 + } else { + saveDataCont.Allprize = v.Allprize * 100 + } + } + saveDataCont.Time = time.Now().Unix() + saveDataCont.State = 1 + saveData = append(saveData, saveDataCont) + } else { + for _, s_v := range timecopy { + if s_v != v.Id { + var saveDataCont assessmentmodel.QuantitativeConfig + saveDataCont.DepartmentId = requestData.DepartMent + saveDataCont.Group = requestData.Group + dimensionId, dimensionIdErr := strconv.ParseInt(requestData.Dimension, 10, 64) + if dimensionIdErr == nil { + saveDataCont.Dimension = dimensionId + } + + targetId, targetIdErr := strconv.ParseInt(requestData.Target, 10, 64) + if targetIdErr == nil { + saveDataCont.Target = targetId + } + + targetDetailsId, targetDetailsIdErr := strconv.ParseInt(requestData.TargetDetails, 10, 64) + if targetDetailsIdErr == nil { + saveDataCont.TargetConfig = targetDetailsId + } + saveDataCont.Type = int64(requestData.Cycle) + saveDataCont.Year = requestData.Year + saveDataCont.Timecopy = v.Id + if v.Zeroprize < 0 { + saveDataCont.Zeroprize = 0 + } else { + if v.Zeroprize > 100 { + saveDataCont.Zeroprize = 10000 + } else { + saveDataCont.Zeroprize = v.Zeroprize * 100 + } + } + if v.Allprize < 0 { + saveDataCont.Allprize = 0 + } else { + if v.Allprize > 100 { + saveDataCont.Allprize = 10000 + } else { + saveDataCont.Allprize = v.Allprize * 100 + } + } + saveDataCont.Time = time.Now().Unix() + saveDataCont.State = 1 + saveData = append(saveData, saveDataCont) + } else { + eiteDataMap := commonus.MapOut() + eiteDataMap["type"] = requestData.Cycle + eiteDataMap["timecopy"] = v.Id + if v.Zeroprize < 0 { + eiteDataMap["zeroprize"] = 0 + } else { + if v.Zeroprize > 100 { + eiteDataMap["zeroprize"] = 10000 + } else { + eiteDataMap["zeroprize"] = v.Zeroprize * 100 + } + } + if v.Allprize < 0 { + eiteDataMap["allprize"] = 0 + } else { + if v.Allprize > 100 { + eiteDataMap["allprize"] = 10000 + } else { + eiteDataMap["allprize"] = v.Allprize * 100 + } + } + eiteDataMap["time"] = time.Now().Unix() + gromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QuantitativeConfig{}).Select("Timecopy").Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?", requestData.Group, requestData.DepartMent, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle) + if requestData.TargetDetails != "" { + gromDb = gromDb.Where("`targetconfig` = ?", requestData.TargetDetails) + } + gromDb.Updates(eiteDataMap) + eiteAddData = append(eiteAddData, 1) + } + } + } + } + } + if len(saveData) <= 0 && len(eiteAddData) <= 0 { + response.Result(102, err, "没有要添加的数据!", c) + return + } + if len(saveData) > 0 { + saveErr := global.GVA_DB_Performanceappraisal.Create(&saveData).Error + if saveErr != nil { + response.Result(102, err, "数据添加失败!", c) + return + } + } + response.Result(0, err, "数据处理完成!", c) +} diff --git a/gin_server_admin/api/v1/assessment/target.go b/gin_server_admin/api/v1/assessment/target.go index 6f0fcc1..c7109fc 100644 --- a/gin_server_admin/api/v1/assessment/target.go +++ b/gin_server_admin/api/v1/assessment/target.go @@ -120,6 +120,10 @@ func (d *DutyHandle) GetTargetList(c *gin.Context) { } outMapCont.Dimension = tg_val.Dimension + dimClass, dimClassErr := commonus.GetDutyClassInfo(tg_val.Dimension) + if dimClassErr == true { + outMapCont.DimensionName = dimClass.Title + } outMapCont.Key = tg_val.Key outMapCont.Report = tg_val.Report if tg_val.Report != "" { @@ -344,6 +348,7 @@ func (d *DutyHandle) GetTarget(c *gin.Context) { if systemEvalCont.VisibleRange != "" { systemEvalCont.VisibleRangeDepartMap = strings.Split(systemEvalCont.VisibleRange, ",") } + systemEvalCont.DimensionIdStr = strconv.FormatInt(systemEvalCont.Dimension, 10) response.Result(0, systemEvalCont, "数据获取成功!", c) } diff --git a/gin_server_admin/api/v1/shiyan/shiyan.go b/gin_server_admin/api/v1/shiyan/shiyan.go index 8c96563..faee679 100644 --- a/gin_server_admin/api/v1/shiyan/shiyan.go +++ b/gin_server_admin/api/v1/shiyan/shiyan.go @@ -83,7 +83,7 @@ func (s *ShiyanApi) DiGui(c *gin.Context) { setid = ids.Id } - _, connn := commonus.GetOfficeWork(16118387069540343, setid) + _, connn, _ := commonus.GetOfficeWork(16118387069540343, setid) response.Result(0, connn, "查询成功", c) return // var parentId []int64 diff --git a/gin_server_admin/api/wechatapp/callback/apphandle.go b/gin_server_admin/api/wechatapp/callback/apphandle.go index 141494a..c221467 100644 --- a/gin_server_admin/api/wechatapp/callback/apphandle.go +++ b/gin_server_admin/api/wechatapp/callback/apphandle.go @@ -5,6 +5,7 @@ import ( "encoding/xml" "fmt" "strconv" + "strings" "time" "github.com/flipped-aurora/gin-vue-admin/server/commonus" @@ -51,7 +52,8 @@ func (a *CallBackApi) CallbackMessageApi(c *gin.Context) { basicValueCallback.ToUserName = xmlMessageStr.ToUserName.Text basicValueCallback.Encrypt = xmlMessageStr.Encrypt.Text basicValueCallback.AgentID = xmlMessageStr.AgentID.Text - basicValueCallback.DecryptMessage() + msgStr := basicValueCallback.DecryptMessage() + c.String(200, msgStr) } } @@ -98,11 +100,12 @@ func (c *CallBackData) VerificationUrl() (msg string) { } //解析消息结构 -func (c *CallBackData) DecryptMessage() { +func (c *CallBackData) DecryptMessage() (echoMsg string) { wecahtCpt := WechatVerification() timestampStr := strconv.FormatInt(c.Timestamp, 10) reqData := []byte("") msg, cryptErr := wecahtCpt.DecryptMsg(c.MsgSignature, timestampStr, c.Nonce, reqData) + // fmt.Printf("%v=====>%v=====>%v\n: ", c.ToUserName, c.Encrypt, c.AgentID) if nil != cryptErr { fmt.Println("DecryptMsg fail", cryptErr) @@ -129,8 +132,8 @@ func (c *CallBackData) DecryptMessage() { /* 事件附属格式 */ - EventProcessing(msgContent.Event, msg) - + echoMsg = EventProcessing(msgContent.Event, msg, c) + return default: } @@ -150,11 +153,11 @@ func (c *CallBackData) DecryptMessage() { if msgContent.Event != "LOCATION" { global.GVA_DB_WechatCallBack.Create(&callbackLog) } - + return } //企业微信事件处理 -func EventProcessing(event string, decryptMsg []byte) { +func EventProcessing(event string, decryptMsg []byte, v *CallBackData) (msg string) { var msgContent MsgContentMailList err := xml.Unmarshal(decryptMsg, &msgContent) if nil != err { @@ -183,10 +186,34 @@ func EventProcessing(event string, decryptMsg []byte) { case "share_agent_change": //企业互联共享应用事件回调 case "share_chain_change": //上下游共享应用事件回调 case "template_card_event": //模板卡片事件推送 + + var msgContent TemplateCardPush + err := xml.Unmarshal(decryptMsg, &msgContent) + if nil != err { + fmt.Println("***********Unmarshal fail") + } + buttonClick := strings.Split(msgContent.EventKey, "_") + buttonClickNAme := "已批准" + if len(buttonClick) >= 3 { + if buttonClick[2] != "1" { + buttonClickNAme = "已驳回" + } + } + fmt.Printf("***********%v------------->%v------------->%v\n", buttonClick, buttonClick[2], msgContent) + xmlReply := fmt.Sprintf("%v", msgContent.ToUsername, msgContent.FromUsername, msgContent.CreateTime, buttonClickNAme) + wecahtCpt := WechatVerification() + timestampStr := strconv.FormatInt(v.Timestamp, 10) + encryptMsg, cryptErr := wecahtCpt.EncryptMsg(xmlReply, timestampStr, v.Nonce) + if cryptErr == nil { + msg = string(encryptMsg) + } else { + msg = "25000" + } templateEventPush(decryptMsg) case "template_card_menu_event": //通用模板卡片右上角菜单事件推送 default: } + return } //企业微信通讯录变更事件处理 diff --git a/gin_server_admin/api/wechatapp/callback/rationcallback.go b/gin_server_admin/api/wechatapp/callback/rationcallback.go index 5ebbfbe..6d81f83 100644 --- a/gin_server_admin/api/wechatapp/callback/rationcallback.go +++ b/gin_server_admin/api/wechatapp/callback/rationcallback.go @@ -16,25 +16,40 @@ import ( func (t *TemplateCardPush) ButtonTemplateCallBackHandleRation(orderId, clickEnter string) { buttonClickNAme := "已批准" // buttonClickNAmeOther := "其他人已批准" + + //获取点击人信息 + _, userContInfo := commonus.GetUesrContForWechatID(t.FromUsername) + //更新同级别其他人按钮 + _, butCallBackUser := commonus.GetSendMsgUser(16182159043990656, userContInfo.DepartmentId) //获取对应部门负责人(高科) + if clickEnter == "1" { - t.UpdateButton(t.FromUsername, buttonClickNAme) + // t.UpdateButton(t.FromUsername, buttonClickNAme) + // t.UpdateButtonIng(butCallBackUser, buttonClickNAme) } else { buttonClickNAme = "已驳回" // buttonClickNAmeOther = "其他人已驳回" - t.UpdateButton(t.FromUsername, buttonClickNAme) + // t.UpdateButton(t.FromUsername, buttonClickNAme) } - //获取点击人信息 - _, userContInfo := commonus.GetUesrContForWechatID(t.FromUsername) + // //获取点击人信息 + // _, userContInfo := commonus.GetUesrContForWechatID(t.FromUsername) + // //更新同级别其他人按钮 + // _, butCallBackUser := commonus.GetSendMsgUser(16182159043990656, userContInfo.DepartmentId) //获取对应部门负责人(高科) + userCallAry := strings.Split(butCallBackUser, "|") + t.OtherClickButton(userCallAry, buttonClickNAme) + + fmt.Printf("OtherContent--------------------->%v------->%v------->%v\n", userContInfo, butCallBackUser, userCallAry) + var scoreFlowInfo assessmentmodel.FlowLog judegFlowErr := global.GVA_DB_Performanceappraisal.Where("`fl_key` = ?", orderId).First(&scoreFlowInfo).Error if judegFlowErr != nil { - _, butCallBackUser := commonus.GetSendMsgUser(16182159043990656, userContInfo.DepartmentId) //获取对应部门负责人(高科) - userCallAry := strings.Split(butCallBackUser, "|") - t.OtherClickButton(userCallAry, buttonClickNAme) + // _, butCallBackUser := commonus.GetSendMsgUser(16182159043990656, userContInfo.DepartmentId) //获取对应部门负责人(高科) + // userCallAry := strings.Split(butCallBackUser, "|") + // t.OtherClickButton(userCallAry, buttonClickNAme) return } if clickEnter == "1" { - evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, 0, 2) + userKeyStr := strconv.FormatInt(userContInfo.Key, 10) + evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, 0, 2, userKeyStr) saveData := commonus.MapOut() saveData["fl_reply"] = 2 saveData["fl_eite_time"] = time.Now().Unix() @@ -88,14 +103,16 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleRation(orderId, clickEnte twoLevelKeyValue = userWechat.Name } twoLevelUserId := t.FromUsername - jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + // jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/quantitativeList?id=%v", orderId) jumpUrlTitle := "查看详情" sourceDesc := "通过" var sendTextMsg sendmessage.TextNoticeTemplateMedium callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("2、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) } else { - evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, 0, 2) + userKeyStr := strconv.FormatInt(userContInfo.Key, 10) + evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, 0, 2, userKeyStr) saveData := commonus.MapOut() saveData["fl_reply"] = 2 saveData["fl_eite_time"] = time.Now().Unix() @@ -149,12 +166,13 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleRation(orderId, clickEnte twoLevelKeyValue = userWechat.Name } twoLevelUserId := t.FromUsername - jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + // jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/quantitativeList?id=%v", orderId) jumpUrlTitle := "请前往重新提报!" sourceDesc := "驳回" var sendTextMsg sendmessage.TextNoticeTemplateMedium callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("3、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) } } diff --git a/gin_server_admin/api/wechatapp/callback/updatehandle.go b/gin_server_admin/api/wechatapp/callback/updatehandle.go index 4ebd918..fc55228 100644 --- a/gin_server_admin/api/wechatapp/callback/updatehandle.go +++ b/gin_server_admin/api/wechatapp/callback/updatehandle.go @@ -68,10 +68,15 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter } //获取点击人信息 userContInfoIstrue, userContInfo := commonus.GetUesrContForWechatID(t.FromUsername) + //更新同级别其他人按钮 + _, butCallBackUser := commonus.GetSendMsgUser(16182159043990656, userContInfo.DepartmentId) //获取对应部门负责人(高科) + userCallAry := strings.Split(butCallBackUser, "|") + t.OtherClickButton(userCallAry, buttonClickNAme) + var scoreFlowInfo assessmentmodel.ScoreFlow judegFlowErr := global.GVA_DB_Performanceappraisal.Where("`sf_key` = ?", scoreFlowKey).First(&scoreFlowInfo).Error fmt.Printf("1@@@@%v\n", scoreFlowInfo) - if judegFlowErr != nil { + if judegFlowErr == nil { _, butCallBackUser := commonus.GetSendMsgUser(16182159043990656, userContInfo.DepartmentId) //获取对应部门负责人(高科) userCallAry := strings.Split(butCallBackUser, "|") t.OtherClickButton(userCallAry, buttonClickNAme) @@ -118,6 +123,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter if len(flowLog) < 1 { return } + userKeyStr := strconv.FormatInt(userContInfo.Key, 10) sendUserList, _ := GetCaoZuoRen(flowLog[len(flowLog)-1].Step, scoreFlowInfo) // fmt.Printf("1ssss@@@@%v\n", scoreFlowInfo) fmt.Printf("45@@@@%v\n", flowLog[len(flowLog)-1].Step) @@ -129,7 +135,8 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter //是否需要整改 if scoreFlowInfo.Rectification == 1 { keyNumber := commonus.GetFileNumberEs() - evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, keyNumber, 3) + + evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, keyNumber, 3, userKeyStr) _, sendUserList = commonus.GetSendMsgUser(16182159043990656, scoreFlowInfo.DutyDepartment) //获取对应部门负责人(高科) userAry := strings.Split(sendUserList, "|") var userKeyInt int64 = 0 @@ -151,7 +158,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter return } keyNumber := commonus.GetFileNumberEs() - evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, keyNumber, 5) + evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, keyNumber, 5, userKeyStr) _, sendUserListing := commonus.GetSendMsgUser(16182159043990656, scoreFlowInfo.DutyDepartment) //获取对应部门负责人(高科) userAry := strings.Split(sendUserListing, "|") var userKeyInt int64 = 0 @@ -217,7 +224,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter return } keyNumber := commonus.GetFileNumberEs() - evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, keyNumber, 5) + evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, keyNumber, 5, userKeyStr) _, sendUserListing := commonus.GetSendMsgUser(16182159043990656, scoreFlowInfo.DutyDepartment) //获取对应部门负责人(高科) userAry := strings.Split(sendUserListing, "|") var userKeyInt int64 = 0 @@ -275,7 +282,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter // keyNumber := commonus.GetFileNumberEs() SendRectifyReceipt(sendUserList, mainTitle, mainTitleDesc, subtitle, reason, scoreFlowInfo.DutyDepartment, userKeyInt, keyNumber, scoreFlowInfo.Key, recMeasCont.Id) case 5: - evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, 0, 1) + evals.UpEvaluationProcessApproval(scoreFlowInfo.Key, 0, 0, 1, userKeyStr) flowSaveData := commonus.MapOut() flowSaveData["sf_reply"] = 3 flowSaveData["sf_eite_time"] = time.Now().Unix() @@ -318,7 +325,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter subTitleText := "考核部门" keyNumber := commonus.GetFileNumberEs() //发送整改通知 - handleUrl := fmt.Sprintf("http://www.hxgk.group?orderid=%v", scoreFlowInfo.Key) + handleUrl := fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", scoreFlowInfo.Key) callbakcMsg, isTrueCall, callBackCont, sendTextMsg := sendmessage.SendMsgTxtPublic(sendUserList, mainTitle, mainTitleDesc, programme.Unit, subtitle, handleUrl, scoreReason, subTitleText, scoreFlowInfo.PlusReduceScore, scoreFlowInfo.EvaluationDepartment, scoreFlowInfo.EvaluationUser, scoreFlowInfo.Score, keyNumber, "查看整改详情!") fmt.Printf("流程结束:%v-----------%v----------->%v------》%v\n", string(callbakcMsg), isTrueCall, callBackCont, sendTextMsg) default: @@ -332,7 +339,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter case 2: fmt.Printf("close==========2===============>\n") - evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 16118387069540343, 0, 1) + evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 16118387069540343, 0, 1, userKeyStr) //发送消息 sendUserIsTrue, sendUserList := commonus.GetSendMsgUser(16118387069540343, scoreFlowInfo.DutyDepartment) //获取对应部门内勤 if sendUserIsTrue != true { @@ -406,7 +413,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter sourceDesc := "驳回" var sendTextMsg sendmessage.TextNoticeTemplateMedium callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("4、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) case 3: case 4: buttonClickAry := strings.Split(t.EventKey, "_") @@ -421,7 +428,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter return } taskId := commonus.GetFileNumberEs() - evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 3) + evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 3, userKeyStr) //获取接收人是谁 第一责任人 var weChatStr []string var divisResponInfo []assessmentmodel.DivisionResponsibilities @@ -487,7 +494,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter jumpUrlTitle := "请前往处理被驳回的任务" sourceDesc := "驳回" callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("5、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) } else { fmt.Printf("未找到责任人:%v-----------%v-----\n", judegdivisErr, divisResponInfo) @@ -496,7 +503,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter taskId := commonus.GetFileNumberEs() buttonClickAry := strings.Split(t.EventKey, "_") if len(buttonClickAry) < 4 { - evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 1) + evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 1, userKeyStr) //发送消息 sendUserIsTrue, sendUserList := commonus.GetSendMsgUser(16118387069540343, scoreFlowInfo.DutyDepartment) //获取对应部门内勤 if sendUserIsTrue != true { @@ -564,10 +571,10 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter sourceDesc := "驳回" var sendTextMsg sendmessage.TextNoticeTemplateMedium callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("6、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) } else { if buttonClickAry[3] == "0" { - evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 1) + evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 1, userKeyStr) //发送消息 sendUserIsTrue, sendUserList := commonus.GetSendMsgUser(16118387069540343, scoreFlowInfo.DutyDepartment) //获取对应部门内勤 if sendUserIsTrue != true { @@ -635,7 +642,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter sourceDesc := "驳回" var sendTextMsg sendmessage.TextNoticeTemplateMedium callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("7、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) } else { var recMeasCont assessmentmodel.RectificationMeasures judgeRecMeas := global.GVA_DB_Performanceappraisal.Where("`rm_id` = ?", buttonClickAry[3]).First(&recMeasCont).Error @@ -643,7 +650,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter fmt.Printf("未知整改措施--->:%v\n", t.EventKey) return } - evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 3) + evals.UpEvaluationProcessReject(scoreFlowInfo.Key, 0, taskId, 3, userKeyStr) //获取接收人是谁 第一责任人 var weChatStr []string var divisResponInfo []assessmentmodel.DivisionResponsibilities @@ -705,7 +712,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter jumpUrlTitle := "请前往处理被驳回的任务" sourceDesc := "驳回" callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendNewsMsgText(sendUserList, strconv.FormatInt(taskId, 10), title, desc, quoteAreaTitle, quoteAreaContent, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, jumpUrl, jumpUrlTitle, sourceDesc) - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) + fmt.Printf("8、更新发送信息返回:%v-----------%v----------->%v-----\n", string(callbakcMsg), isTrueCall, callBackCont) } else { fmt.Printf("未找到责任人:%v-----------%v-----\n", judegdivisErr, divisResponInfo) @@ -740,18 +747,27 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandle(scoreFlowKey, clickEnter //其他按钮处理 func (t *TemplateCardPush) OtherClickButton(userAry []string, buttonClickNAmeOther string) { userInfoErr, userInfo := commonus.GetUesrContForWechatID(t.FromUsername) + fmt.Printf("OtherClick------------->%v------------>%v\n", userAry, userInfo) + var userAryList []string if len(userAry) > 0 { for _, v := range userAry { if v != t.FromUsername { - if userInfoErr == true { - buttonClickNAmeOtherEs := fmt.Sprintf("%v%v", userInfo.Name, buttonClickNAmeOther) - t.UpdateButton(v, buttonClickNAmeOtherEs) - } else { - t.UpdateButton(v, buttonClickNAmeOther) - } - + // if userInfoErr == true { + // // buttonClickNAmeOtherEs := fmt.Sprintf("%v%v", userInfo.Name, buttonClickNAmeOther) + // userAryList = append(userAryList, v) + // // t.UpdateButton(v, buttonClickNAmeOtherEs) + // } else { + // // t.UpdateButton(v, buttonClickNAmeOther) + // } + userAryList = append(userAryList, v) } } + buttonClickNAmeOtherEs := buttonClickNAmeOther + if userInfoErr == true { + buttonClickNAmeOtherEs = fmt.Sprintf("%v%v", userInfo.Name, buttonClickNAmeOther) + } + // userAryListStr := strings.Join(userAryList, "|") + t.UpdateButtonIng(userAryList, buttonClickNAmeOtherEs) } } @@ -764,7 +780,19 @@ func (t *TemplateCardPush) UpdateButton(userOpenId, buttonName string) { updateButtonNotClickable.ResponseCode = t.ResponseCode updateButtonNotClickable.Button.ReplaceName = buttonName callbakcMsg, isTrueCall, callBackCont := updateButtonNotClickable.UpdateSendButtonMessage() - fmt.Printf("更新发送信息返回:%v-----------%v----------->%v------》%v\n", string(callbakcMsg), isTrueCall, callBackCont, updateButtonNotClickable) + fmt.Printf("9、手动更新发送信息返回:%v-----------%v----------->%v------》%v\n", string(callbakcMsg), isTrueCall, callBackCont, updateButtonNotClickable) +} + +func (t *TemplateCardPush) UpdateButtonIng(userOpenId []string, buttonName string) { + var updateButtonNotClickable commonus.UpdateButtonNotClickable + // updateButtonNotClickable.Userids = append(updateButtonNotClickable.Userids, userOpenId) + updateButtonNotClickable.Userids = userOpenId + updateButtonNotClickable.Atall = 0 + updateButtonNotClickable.Agentid = t.Agentid + updateButtonNotClickable.ResponseCode = t.ResponseCode + updateButtonNotClickable.Button.ReplaceName = buttonName + callbakcMsg, isTrueCall, callBackCont := updateButtonNotClickable.UpdateSendButtonMessage() + fmt.Printf("10、更新发送信息返回:%v-----------%v----------->%v------》%v\n", string(callbakcMsg), isTrueCall, callBackCont, updateButtonNotClickable) } //获取操作人 diff --git a/gin_server_admin/api/wechatapp/sendmessage/sendmsgHandle.go b/gin_server_admin/api/wechatapp/sendmessage/sendmsgHandle.go index 812f6b9..1cb29fe 100644 --- a/gin_server_admin/api/wechatapp/sendmessage/sendmsgHandle.go +++ b/gin_server_admin/api/wechatapp/sendmessage/sendmsgHandle.go @@ -171,7 +171,78 @@ func SendButtonPublic(sendUserList, Title, Desc, subtitle, reason string, depart sendTextMsg.TemplateCard.HorizontalContentList = htalConListStrMap sendTextMsg.TemplateCard.CardAction.Type = 1 - sendTextMsg.TemplateCard.CardAction.Url = fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + // sendTextMsg.TemplateCard.CardAction.Url = fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + sendTextMsg.TemplateCard.CardAction.Url = fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", orderId) + // handleUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", keyNumber) + //按钮列表,列表长度不超过6(必填) + sendTextMsg.TemplateCard.ButtonList = buttonMap + send = sendTextMsg + callbakcMsg, isTrueCall, callBackCont = sendTextMsg.SendMessage("school") + return +} + +//定量 +func SendButtonPublicRation(sendUserList, Title, Desc, subtitle, reason string, departmentId, userKey, keyNumber, orderId int64, buttonMap []ButtonListtype) (callbakcMsg []byte, isTrueCall bool, callBackCont string, send ButtonNoticeTemplateMedium) { + var sendTextMsg ButtonNoticeTemplateMedium + sendTextMsg.Inset(sendUserList, "template_card", "button_interaction", keyNumber) + + //获取考核详情 + sendTextMsg.TemplateCard.MainTitle.Title = Title + sendTextMsg.TemplateCard.MainTitle.Desc = Desc + + //引用文献样式 + sendTextMsg.TemplateCard.QuoteArea.Type = 0 + sendTextMsg.TemplateCard.QuoteArea.Title = subtitle + sendTextMsg.TemplateCard.QuoteArea.QuoteText = reason + + var htalConListStrMap []HorizontalContentListType + var htalConListStrCon HorizontalContentListType + //二级普通文本, + sendTextMsg.TemplateCard.SubTitleText = "责任部门:" + execDerpatCont := "" + // execDerpatCont := "考核部门:" + execDerpatErr, execDerpat := commonus.GetBranchFactory(departmentId) + if execDerpatErr == true { + execDerpatCont = execDerpatCont + execDerpat.Name + } + htalConListStrCon.KeyName = execDerpatCont + //获取操作人 + userFileStr := "wm_number,qywx_key,wx_key" + //操作人条件 + userWherAry := commonus.MapOut() + // userWherAry["wm_key"] = "WoBenShanLiang_3" //"WoBenShanLiang_3" + userWherAry["wm_key"] = userKey + userConting, userIsTrue := commonus.GetUserInfoPublic(userFileStr, userWherAry) + if userIsTrue == true { + + if userConting.WechatId != "" { + userWechatErr, userWechat := commonus.GetUesrContForWechatID(userConting.WechatId) + if userWechatErr == true { + htalConListStrCon.Type = 3 + htalConListStrCon.Value = userWechat.Name + htalConListStrCon.UserId = userConting.WechatId + // htalConListStrMap = append(htalConListStrMap, htalConListStrCon) + // sendTextMsg.TemplateCard.HorizontalContentList = htalConListStrMap + } + } + if userConting.WorkWechatId != "" { + userWechatErr, userWechat := commonus.GetUesrContForWechatID(userConting.WorkWechatId) + if userWechatErr == true { + htalConListStrCon.Type = 3 + htalConListStrCon.Value = userWechat.Name + htalConListStrCon.UserId = userConting.WorkWechatId + // htalConListStrMap = append(htalConListStrMap, htalConListStrCon) + // sendTextMsg.TemplateCard.HorizontalContentList = htalConListStrMap + } + } + } + htalConListStrMap = append(htalConListStrMap, htalConListStrCon) + sendTextMsg.TemplateCard.HorizontalContentList = htalConListStrMap + + sendTextMsg.TemplateCard.CardAction.Type = 1 + // sendTextMsg.TemplateCard.CardAction.Url = fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) + sendTextMsg.TemplateCard.CardAction.Url = fmt.Sprintf("http://new.hxgk.group/#/quantitativeList?id=%v", orderId) + // handleUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", keyNumber) //按钮列表,列表长度不超过6(必填) sendTextMsg.TemplateCard.ButtonList = buttonMap send = sendTextMsg diff --git a/gin_server_admin/commonus/publichaneld.go b/gin_server_admin/commonus/publichaneld.go index 7e6098d..2c26bc1 100644 --- a/gin_server_admin/commonus/publichaneld.go +++ b/gin_server_admin/commonus/publichaneld.go @@ -1143,10 +1143,10 @@ func GetDimesionTargetWeight(setType, group, departmentID, dimensionId, targetId } //根据部门获取内勤数据 -func GetOfficeWork(id, departmentId int64) (isTrue bool, roleUser []roleGroupBodyAry) { +func GetOfficeWork(id, departmentId int64) (isTrue bool, roleUser []roleGroupBodyAry, roleGroup systemuser.RoleGroup) { isTrue = false departID := strconv.FormatInt(departmentId, 10) - var roleGroup systemuser.RoleGroup + // var roleGroup systemuser.RoleGroup err := global.GVA_DB_Master.Where("`srg_id` = ?", id).First(&roleGroup).Error //16118387069540343 if err != nil { return @@ -1178,7 +1178,7 @@ func GetSendMsgUser(id, departmentId int64) (isTrue bool, userStr string) { if err != true { return } - err, roleGroup := GetOfficeWork(id, int64(departmentCont.WechatId)) + err, roleGroup, _ := GetOfficeWork(id, int64(departmentCont.WechatId)) if err != true { return } @@ -1274,26 +1274,26 @@ returnData #detailedRulesInfo 明细说明 */ func GetDutyRationtedItems(orderId string) (targettitle, detailedRulesTitle, detailedRulesInfo, unit string, flowContent assessmentmodel.FlowLog, isTrue bool) { - // flowContent, isTrue = GetFlowLog(orderId) - // if isTrue != true { - // return - // } - // qualEvalCont, qualEvalErr := GetQualitativeEvaluation(strconv.FormatInt(flowContent.EvaluationPlan, 10)) - // if qualEvalErr != true { - // return - // } - // unit = qualEvalCont.Unit - // targetCont, targetErr := GetTargetInfo(qualEvalCont.Target) - // if targetErr == true { - // targettitle = targetCont.Title - // unit = targetCont.Uniteing - // } + flowContent, isTrue = GetFlowLog(orderId) + if isTrue != true { + return + } + qualEvalCont, qualEvalErr := GetQualitativeEvaluation(flowContent.EvaluationPlan) + if qualEvalErr != true { + return + } + unit = qualEvalCont.Unit + targetCont, targetErr := GetTargetInfo(qualEvalCont.Target) + if targetErr == true { + targettitle = targetCont.Title + unit = targetCont.Uniteing + } - // detailedTargetCont, detailedTargetErr := GetDetailedTargetInfo(qualEvalCont.Target) - // if detailedTargetErr == true { - // detailedRulesTitle = detailedTargetCont.Title - // detailedRulesInfo = detailedTargetCont.Content - // } + detailedTargetCont, detailedTargetErr := GetDetailedTargetInfo(qualEvalCont.Target) + if detailedTargetErr == true { + detailedRulesTitle = detailedTargetCont.Title + detailedRulesInfo = detailedTargetCont.Content + } isTrue = true return } @@ -1308,3 +1308,14 @@ func GetRoleGroup(id int64) (roleGroup systemuser.RoleGroup, isTrue bool) { isTrue = true return } + +//根据userkey 用户获取信息 +func GetWorkUser(key string) (userCont testpage.PersonalDetails, isTrue bool) { + isTrue = false + var userInfo testpage.WorkMan + userErr := global.GVA_DB_Master.Model(&userInfo).Select("worker_man.*,worker_man_data.*").Joins("left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key").Where("wm_key = ?", key).First(&userCont).Error + if userErr == nil { + isTrue = true + } + return +} diff --git a/gin_server_admin/model/assessmentmodel/dutyclass.go b/gin_server_admin/model/assessmentmodel/dutyclass.go index 8b8720e..8188fd7 100644 --- a/gin_server_admin/model/assessmentmodel/dutyclass.go +++ b/gin_server_admin/model/assessmentmodel/dutyclass.go @@ -8,6 +8,7 @@ type DutyClass struct { Weight int `json:"weight" gorm:"column:weight;type:int(3) unsigned;default:0;not null;comment:权重比例"` Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态"` + Sort int `json:"sort" gorm:"column:sort;type:int(5) unsigned;default:0;not null;comment:排序"` } func (DutyClass *DutyClass) TableName() string { @@ -337,3 +338,24 @@ type FlowLogData struct { func (FlowLogData *FlowLogData) TableName() string { return "flow_log_data" } + +//定量考核目标设定 +type QuantitativeConfig struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"` + DepartmentId int64 `json:"departmentid" gorm:"column:departmentid;type:bigint(20) unsigned;default:0;not null;comment:部门ID"` + Group int64 `json:"group" gorm:"column:group;type:bigint(20) unsigned;default:0;not null;comment:集团ID"` + Dimension int64 `json:"dimension" gorm:"column:dimension;type:bigint(20) unsigned;default:0;not null;comment:维度"` + Target int64 `json:"target" gorm:"column:target;type:bigint(20) unsigned;default:0;not null;comment:指标"` + TargetConfig int64 `json:"targetconfig" gorm:"column:targetconfig;type:bigint(20) unsigned;default:0;not null;comment:指标细则"` + Type int64 `json:"type" gorm:"column:type;type:tinyint(1) unsigned;default:0;not null;comment:1、年度;2、季度;3、月度"` + Year int64 `json:"year" gorm:"column:year;type:bigint(20) unsigned;default:0;not null;comment:年度"` + Timecopy int64 `json:"timecopy" gorm:"column:timecopy;type:int(3) unsigned;default:0;not null;comment:季度与月度辅助值"` + Zeroprize int64 `json:"zeroprize" gorm:"column:zeroprize;type:int(7) unsigned;default:0;not null;comment:零奖值"` + Allprize int64 `json:"allprize" gorm:"column:allprize;type:int(7) unsigned;default:0;not null;comment:全奖值"` + Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` + State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` +} + +func (QuantitativeConfig *QuantitativeConfig) TableName() string { + return "quantitative_config" +} diff --git a/gin_server_admin/router/assessment/assessmentrouter.go b/gin_server_admin/router/assessment/assessmentrouter.go index 124a027..5d26dfa 100644 --- a/gin_server_admin/router/assessment/assessmentrouter.go +++ b/gin_server_admin/router/assessment/assessmentrouter.go @@ -115,6 +115,8 @@ func (s *AssessmentRouter) InitAssessmentRouter(Router *gin.RouterGroup) { dutyCodeRouter.POST("adddepartmentdutyinfo", authorityApi.AddDepartmentDutyInfo) // 部门新增考核列表 + dutyCodeRouter.POST("setevaluationobjectives", authorityApi.SetEvaluationObjectives) // 结算周期 + } } @@ -153,6 +155,8 @@ func (s *AssessmentRouter) NoInitDutyHandelRouter(Router *gin.RouterGroup) { dutyIndexCodeRouter.POST("lookdepartmentassessinfo", authorityIndexApi.LookDepartmentAssessInfo) // 查看审批考核详细\ dutyIndexCodeRouter.GET("lookdepartmentassessinfo", authorityIndexApi.LookDepartmentAssessInfo) // 查看审批考核详细 + dutyIndexCodeRouter.POST("getteamlist", authorityIndexApi.GetTeamList) // 获取班组 + } } @@ -189,5 +193,9 @@ func (s *AssessmentRouter) InitEvaluationRouter(Router *gin.RouterGroup) { dutyIndexCodeRouter.POST("qualitativeevalration", authorityIndexApi.QualitativeEvalRation) // 定量考核列表 dutyIndexCodeRouter.POST("addflowrationlog", authorityIndexApi.AddFlowRationLog) // 添加定量考核列表 + dutyIndexCodeRouter.POST("lookdutkscoreflow", authorityIndexApi.LookDutkScoreFlow) // 查看定性考核审批列表 + dutyIndexCodeRouter.POST("lookrationkscoreflow", authorityIndexApi.LookRationkScoreFlow) // 查看定量考核审批列表 + + dutyIndexCodeRouter.POST("lookquantitativeconfig", authorityIndexApi.LookQuantitativeConfig) // 查看定量考核目标设定 } } diff --git a/备份/department_target.go b/备份/department_target.go new file mode 100644 index 0000000..55b0760 --- /dev/null +++ b/备份/department_target.go @@ -0,0 +1,730 @@ +package assessment + +import ( + "fmt" + "strconv" + "strings" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi" + "github.com/flipped-aurora/gin-vue-admin/server/commonus" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/testpage" + "github.com/gin-gonic/gin" +) + +//部门考核 +func (d *DutyHandle) DepartmentList(c *gin.Context) { + var requestData rationSelect + c.ShouldBindJSON(&requestData) + var groupId int64 = 3 + if requestData.Group != "" { + groupId, _ = strconv.ParseInt(requestData.Group, 10, 64) + } + var departList []deparMentModel + gromDb := global.GVA_DB_Master.Model(&testpage.BranchFactory{}).Select("bf_id", "bf_name", "bf_wechat_id").Where("`bf_set` = 1 AND `bf_group` = ?", groupId) + if requestData.DepartmentId != "" { + gromDb = gromDb.Where("`bf_id` = ?", requestData.DepartmentId) + } + departMentErr := gromDb.Find(&departList).Error + if departMentErr != nil || len(departList) < 1 { + response.Result(101, departMentErr, "没有数据!", c) + return + } + var departAryList []departmentDuty + for _, v := range departList { + var departCont departmentDuty + departCont.Id = strconv.FormatInt(v.Id, 10) + departCont.Name = v.Name + departCont.Child = getDepartDimension(groupId, v.Id) + departAryList = append(departAryList, departCont) + } + response.Result(0, departAryList, "数据获取成功!", c) +} + +//获取部门考核维度 +func getDepartDimension(groupId, departId int64) (dimensionAry []departmentDimension) { + var fileAry []int64 + dimErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimension{}).Select("dd_dimension").Where("`dd_group` = ? AND `dd_department` = ?", groupId, departId).Group("dd_dimension").Find(&fileAry).Error + // fmt.Printf("1--------------->%v\n", dimErr) + if dimErr == nil { + for _, v := range fileAry { + dimInfo, dimInfoErr := commonus.GetDutyClassInfo(v) + // fmt.Printf("2--------------->%v\n", dimInfo) + if dimInfoErr == true { + var dimCont departmentDimension + dimCont.Id = strconv.FormatInt(v, 10) + dimCont.Name = dimInfo.Title + dimCont.Child = targetRationDepartList(groupId, departId, v) + dimensionAry = append(dimensionAry, dimCont) + } + } + + } + return +} + +//部门考核项目 +func targetRationDepartList(groupID, departmentID, dimension int64) (contentList []taskDetails) { + var fileTargetAry []assessmentmodel.QualitativeEvaluation + listTargetErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ?", groupID, departmentID, dimension).Find(&fileTargetAry).Error + if listTargetErr != nil { + return + } + for _, v := range fileTargetAry { + var content taskDetails + targetInfo, targetErr := commonus.GetTargetInfo(v.Target) + if targetErr == true { + content.Id = strconv.FormatInt(v.Target, 10) + content.Name = targetInfo.Title + content.QeId = strconv.FormatInt(v.Id, 10) + content.Unit = v.Unit + content.ReferenceScore = v.ReferenceScore + content.Cycles = v.Cycles + content.CycleAttres = v.CycleAttres + content.State = v.State + + contentList = append(contentList, content) + } + } + return +} + +// +func (d *DutyHandle) DepartmentTaskList(c *gin.Context) { + var requestData DelQualitative + c.ShouldBindJSON(&requestData) + + var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation + gormDb := global.GVA_DB_Performanceappraisal + if requestData.Type != 0 { + gormDb = gormDb.Where("`qe_type` = ?", requestData.Type) + } + if requestData.Group != "" { + gormDb = gormDb.Where("`qe_group` = ?", requestData.Group) + } + if requestData.DepartmentId != "" { + gormDb = gormDb.Where("`qe_accept_evaluation` = ?", requestData.DepartmentId) + } + + if requestData.Dimension != "" { + gormDb = gormDb.Where("`qe_dimension` = ?", requestData.Dimension) + } + if requestData.Target != "" { + gormDb = gormDb.Where("`qe_target` = ?", requestData.Target) + } + if requestData.TargetSun != "" { + gormDb = gormDb.Where("`qe_target_sun` = ?", requestData.TargetSun) + } + listTargetErr := gormDb.Order("qe_group asc,qe_accept_evaluation asc,qe_dimension asc,qe_type asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error + + if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 { + response.Result(101, listTargetErr, "没有数据!", c) + return + } + var uotContAry []TargetContOutCont + for _, v := range qualitativeEvaluationAry { + var uotCont TargetContOutCont + uotCont.Id = strconv.FormatInt(v.Id, 10) + uotCont.Type = v.Type + uotCont.Group = strconv.FormatInt(v.Group, 10) + groupErr, groupCont := commonus.GetGroupCont(v.Group) + if groupErr == true { + uotCont.GroupNAme = groupCont.Name + } + uotCont.DepartmentId = strconv.FormatInt(v.AcceptEvaluation, 10) + deparConErr, deparConCont := commonus.GetBranchFactory(v.AcceptEvaluation) + if deparConErr == true { + uotCont.DepartmentName = deparConCont.Name + } + uotCont.Dimension = strconv.FormatInt(v.Dimension, 10) + dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(v.Dimension) + if dutyClassErr == true { + uotCont.DimensionName = dutyClassCont.Title + } + uotCont.DimensionWeight = commonus.GetDimesionTargetWeight(1, v.Group, v.AcceptEvaluation, v.Dimension, 0) + + uotCont.Target = strconv.FormatInt(v.Target, 10) + targetInfo, targetErr := commonus.GetTargetInfo(v.Target) + if targetErr == true { + uotCont.TargetName = targetInfo.Title + } + uotCont.TargetWeight = commonus.GetDimesionTargetWeight(1, v.Group, v.AcceptEvaluation, v.Dimension, v.Target) + uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10) + info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun) + if infoErr == true { + uotCont.TargetSunName = info.Title + } + uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) + dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget) + if dtIsTrue == true { + uotCont.DetailedTargetName = dtCont.Title + uotCont.Content = dtCont.Content + } + + uotCont.Unit = v.Unit + uotCont.ReferenceScore = v.ReferenceScore + uotCont.Cycles = v.Cycles + uotCont.CycleAttres = v.CycleAttres + uotCont.State = v.State + userAry := strings.Split(v.Operator, ",") + uotCont.UserList = userAry + for _, u_v := range userAry { + usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": u_v}) + if usErr == true { + var userCont QualEvalArrt + userCont.Id = u_v + userCont.Name = usCont.Name + uotCont.UserListAry = append(uotCont.UserListAry, userCont) + } + } + + uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) + uotContAry = append(uotContAry, uotCont) + } + response.Result(0, uotContAry, "数据获取成功!", c) +} + +//获取方案考核细则内容 +func (d *DutyHandle) DetailsAssessmentScheme(c *gin.Context) { + var requestData commonus.SetIds + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Id == 0 && requestData.OutId == "" { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + if requestData.OutId != "" { + idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) + if inIntErr == nil { + requestData.Id = idInt + } + } + + var systemBFCont assessmentmodel.QualitativeEvaluation + contErr := global.GVA_DB_Performanceappraisal.Where("`qe_id` = ?", requestData.Id).First(&systemBFCont).Error + if contErr != nil { + response.Result(102, err, "数据获取失败!", c) + return + } + var uotCont TargetContOutCont + uotCont.Id = strconv.FormatInt(systemBFCont.Id, 10) + uotCont.Type = systemBFCont.Type + uotCont.Group = strconv.FormatInt(systemBFCont.Group, 10) + groupErr, groupCont := commonus.GetGroupCont(systemBFCont.Group) + if groupErr == true { + uotCont.GroupNAme = groupCont.Name + } + uotCont.DepartmentId = strconv.FormatInt(systemBFCont.AcceptEvaluation, 10) + deparConErr, deparConCont := commonus.GetBranchFactory(systemBFCont.AcceptEvaluation) + if deparConErr == true { + uotCont.DepartmentName = deparConCont.Name + } + uotCont.Dimension = strconv.FormatInt(systemBFCont.Dimension, 10) + dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(systemBFCont.Dimension) + if dutyClassErr == true { + uotCont.DimensionName = dutyClassCont.Title + } + uotCont.Target = strconv.FormatInt(systemBFCont.Target, 10) + targetInfo, targetErr := commonus.GetTargetInfo(systemBFCont.Target) + if targetErr == true { + uotCont.TargetName = targetInfo.Title + } + uotCont.TargetSun = strconv.FormatInt(systemBFCont.TargetSun, 10) + info, infoErr := commonus.GetQualitativeTargetInfo(systemBFCont.TargetSun) + if infoErr == true { + uotCont.TargetSunName = info.Title + } + uotCont.DetailedTarget = strconv.FormatInt(systemBFCont.DetailedTarget, 10) + dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(systemBFCont.DetailedTarget) + if dtIsTrue == true { + uotCont.DetailedTargetName = dtCont.Title + uotCont.Content = dtCont.Content + } + uotCont.Unit = systemBFCont.Unit + uotCont.ReferenceScore = systemBFCont.ReferenceScore + uotCont.Cycles = systemBFCont.Cycles + uotCont.CycleAttres = systemBFCont.CycleAttres + uotCont.State = systemBFCont.State + uotCont.UserList = strings.Split(systemBFCont.Operator, ",") + uotCont.DetailedTarget = strconv.FormatInt(systemBFCont.DetailedTarget, 10) + response.Result(0, uotCont, "数据获取成功!", c) +} + +//删除考核细则方案内容 +func (d *DutyHandle) DelDepartmentTaskList(c *gin.Context) { + var requestData commonus.SetIds + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Id == 0 && requestData.OutId == "" { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + if requestData.OutId != "" { + idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) + if inIntErr == nil { + requestData.Id = idInt + } + } + var oldCont assessmentmodel.QualitativeEvaluation + getOldContErr := global.GVA_DB_Performanceappraisal.Where("qe_id = ?", requestData.Id).Find(&oldCont).Error + if getOldContErr != nil { + response.Result(102, err, "没有此数据", c) + return + } + roleErr := global.GVA_DB_Performanceappraisal.Where("qe_id = ?", requestData.Id).Delete(&assessmentmodel.QualitativeEvaluation{}).Error + if roleErr != nil { + response.Result(102, err, "删除失败!", c) + return + } else { + var judgeNum int64 + delGormDb := global.GVA_DB_Performanceappraisal + delGormDb = delGormDb.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_type` = ?", oldCont.Group, oldCont.AcceptEvaluation, oldCont.Dimension, oldCont.Type) + if oldCont.Type == 1 { + delGormDb = delGormDb.Where("`qe_target` = ? AND `qe_target_sun` = ? ", oldCont.Target, oldCont.TargetSun) + } + judgeErr := delGormDb.Pluck("COALESCE(COUNT(qe_id), 0) as countid", &judgeNum).Error + if judgeErr == nil && judgeNum == 0 && oldCont.Type == 1 { + delDimErr := global.GVA_DB_Performanceappraisal.Where("`ddw_type` = 1 AND `ddw_hierarchy` = 2 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ?", oldCont.Group, oldCont.AcceptEvaluation, oldCont.Dimension, oldCont.Target).Delete(&assessmentmodel.DepartmentDimensionWeight{}).Error + if delDimErr == nil { + } + } + response.Result(0, err, "删除成功!", c) + } +} + +//修改考核方案单条考核细则 +func (d *DutyHandle) EiteOneQualitativeEvaluation(c *gin.Context) { + var requestData EiteOneQualEval + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Id == 0 && requestData.OutId == "" { + response.Result(102, err, "参数错误!请重新提交!", c) + return + } + if requestData.OutId != "" { + idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) + if inIntErr == nil { + requestData.Id = idInt + } + } + saveData := commonus.MapOut() + saveData["qe_eitetime"] = time.Now().Unix() + if requestData.Unit != "" { + saveData["qe_unit"] = requestData.Unit + } + if requestData.ReferenceScore != 0 { + saveData["qe_reference_score"] = requestData.ReferenceScore + } + if requestData.Cycles != 0 { + saveData["qe_cycle"] = requestData.Cycles + } + if requestData.CycleAttres != 0 { + saveData["qe_cycleattr"] = requestData.CycleAttres + } + if requestData.State != 0 { + saveData["qe_state"] = requestData.State + } + if requestData.Content != "" { + saveData["qe_content"] = requestData.Content + } + if len(requestData.Operator) > 0 { + saveData["qe_operator"] = strings.Join(requestData.Operator, ",") + saveData["qe_department_id"] = strings.Join(GetDepartmentByUserBast(requestData.Operator), ",") + } + roleIsTrue, roleErr := eiteOneQuaEvaInfo(requestData.Id, saveData) + if roleIsTrue != true { + response.Result(106, roleErr, "编辑失败!", c) + } else { + response.Result(0, saveData, "编辑成功!", c) + } +} + +//编辑职务数据处理 +func eiteOneQuaEvaInfo(saveId int64, saveData map[string]interface{}) (isTrue bool, infoErr error) { + isTrue = false + infoErr = global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_id` = ?", saveId).Updates(saveData).Error + if infoErr != nil { + return + } + isTrue = true + return +} + +//获取定性考核指标对应的结构树 +func (d *DutyHandle) QualEvalTargetTree(c *gin.Context) { + var requestData QualEvalTargetTreeDies + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Group == "" { + response.Result(102, err, "数据获取失败!", c) + return + } + if requestData.DepartmentId == "" { + response.Result(103, err, "数据获取失败!", c) + return + } + if requestData.Dimension == "" { + response.Result(104, err, "数据获取失败!", c) + return + } + if requestData.Target == "" { + response.Result(105, err, "数据获取失败!", c) + return + } + + var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation + gormDb := global.GVA_DB_Performanceappraisal + + gormDb = gormDb.Where("`qe_group` = ?", requestData.Group) + gormDb = gormDb.Where("`qe_accept_evaluation` = ?", requestData.DepartmentId) + gormDb = gormDb.Where("`qe_dimension` = ?", requestData.Dimension) + gormDb = gormDb.Where("`qe_target` = ?", requestData.Target) + listTargetErr := gormDb.Order("qe_type asc,qe_group asc,qe_accept_evaluation asc,qe_dimension asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error + + if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 { + response.Result(101, listTargetErr, "没有数据!", c) + return + } + var uotContAry []TargetContOutCont + for _, v := range qualitativeEvaluationAry { + var uotCont TargetContOutCont + uotCont.Id = strconv.FormatInt(v.Id, 10) + uotCont.Type = v.Type + uotCont.Group = strconv.FormatInt(v.Group, 10) + groupErr, groupCont := commonus.GetGroupCont(v.Group) + if groupErr == true { + uotCont.GroupNAme = groupCont.Name + } + uotCont.DepartmentId = strconv.FormatInt(v.AcceptEvaluation, 10) + deparConErr, deparConCont := commonus.GetBranchFactory(v.AcceptEvaluation) + if deparConErr == true { + uotCont.DepartmentName = deparConCont.Name + } + uotCont.Dimension = strconv.FormatInt(v.Dimension, 10) + dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(v.Dimension) + if dutyClassErr == true { + uotCont.DimensionName = dutyClassCont.Title + } + uotCont.Target = strconv.FormatInt(v.Target, 10) + targetInfo, targetErr := commonus.GetTargetInfo(v.Target) + if targetErr == true { + uotCont.TargetName = targetInfo.Title + } + uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10) + info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun) + if infoErr == true { + uotCont.TargetSunName = info.Title + } + uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) + dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget) + if dtIsTrue == true { + uotCont.DetailedTargetName = dtCont.Title + uotCont.Content = dtCont.Content + } + uotCont.Unit = v.Unit + uotCont.ReferenceScore = v.ReferenceScore + uotCont.Cycles = v.Cycles + uotCont.CycleAttres = v.CycleAttres + uotCont.State = v.State + userAry := strings.Split(v.Operator, ",") + uotCont.UserList = userAry + for _, u_v := range userAry { + usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": u_v}) + if usErr == true { + var userCont QualEvalArrt + userCont.Id = u_v + userCont.Name = usCont.Name + uotCont.UserListAry = append(uotCont.UserListAry, userCont) + } + } + + uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) + uotContAry = append(uotContAry, uotCont) + } + response.Result(0, uotContAry, "数据获取成功!", c) +} + +//部门考核(新) +func (d *DutyHandle) DepartmentListNew(c *gin.Context) { + var requestData rationSelect + c.ShouldBindJSON(&requestData) + //获取维度列表 + var dutyClassAry []assessmentmodel.DutyClass + gromDb := global.GVA_DB_Performanceappraisal + gromDb = gromDb.Where("`state` = 1") + classErr := gromDb.Find(&dutyClassAry).Error + + if classErr != nil { + response.Result(0, classErr, "未获取到数据", c) + return + } + + var departAryList []departmentDutyNew + for _, v := range dutyClassAry { + childList := GetEvalTarget(v.Id, requestData.Group, requestData.DepartmentId) + if len(childList) > 0 { + var departCont departmentDutyNew + departCont.Id = strconv.FormatInt(v.Id, 10) + departCont.Name = v.Title + departCont.Child = GetEvalTarget(v.Id, requestData.Group, requestData.DepartmentId) + departAryList = append(departAryList, departCont) + } + } + response.Result(0, departAryList, "数据获取成功!", c) +} + +//获取考核指标 +func GetEvalTarget(dimId int64, group, departId string) (dimensionAry []taskDetailsLinkage) { + var contAry []assessmentmodel.EvaluationTarget + gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationTarget{}).Where("et_state = 1 AND `et_dimension` = ?", dimId) + if departId != "" { + sqlOrStr := fmt.Sprintf("FIND_IN_SET(%v,`et_relevant_departments`)", departId) + sqlOrStr = fmt.Sprintf("`et_share` = 1 OR (`et_share` = 2 AND (%v))", sqlOrStr) + gormDb = gormDb.Where(sqlOrStr) + } + listErr := gormDb.Find(&contAry).Error + if listErr != nil { + return + } + for _, v := range contAry { + var dimCont taskDetailsLinkage + dimCont.Id = strconv.FormatInt(v.Id, 10) + dimCont.Name = v.Title + dimCont.Content = "" + scoreVal := GetDepartDimTargetScore(group, departId, dimId, v.Id) + dimCont.ReferenceScore = scoreVal + if scoreVal > 0 { + dimCont.IsTrue = 2 + } else { + dimCont.IsTrue = 1 + } + dimCont.Unit = v.Uniteing + dimCont.Cycles = v.Cycles + dimCont.CycleAttres = v.CycleAttres + dimensionAry = append(dimensionAry, dimCont) + } + return +} + +//计算该指定部门维度指标下的分值 +func GetDepartDimTargetScore(group, depert string, dimeid, targetid int64) (scoreAll int64) { + + err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ? AND qe_state = 1", group, depert, dimeid, targetid).Pluck("COALESCE(SUM(qe_reference_score), 0) as rescore", &scoreAll).Error + if err != nil { + scoreAll = 0 + } + return +} + +//部门添加考核方案NEw +func (d *DutyHandle) AddDepartmentDutyInfo(c *gin.Context) { + var requestData AddDutyNewContGroup + err := c.ShouldBindJSON(&requestData) + if err != nil { + response.Result(101, err, "数据获取失败!", c) + return + } + if requestData.Group == "" { + response.Result(102, err, "数据获取失败!", c) + return + } + groupId, groupErr := strconv.ParseInt(requestData.Group, 10, 64) + if groupErr == nil { + groupId = 0 + } + if requestData.DepartmentId == "" { + response.Result(103, err, "数据获取失败!", c) + return + } + departId, departErr := strconv.ParseInt(requestData.DepartmentId, 10, 64) + if departErr != nil { + departId = 0 + } + if len(requestData.Child) < 0 { + response.Result(104, err, "没有要添加的数据", c) + return + } + var saveDataAry []assessmentmodel.QualitativeEvaluation + fmt.Printf("1----------------------------->\n") + for _, v := range requestData.Child { //维度 + for _, v_s := range v.Child { //指标 + if v_s.Status == 1 { + var saveData assessmentmodel.QualitativeEvaluation + //指标ID + targetId, targetErr := strconv.ParseInt(v_s.Id, 10, 64) + if targetErr == nil { + fmt.Printf("2----------------------------->\n") + //获取指标内容 + evalTarCont, evalTarContErr := commonus.GetTargetInfo(targetId) + if evalTarContErr == true { + fmt.Printf("3----------------------------->\n") + if evalTarCont.Type == 2 { + fmt.Printf("4----------------------------->\n") + saveData.Target = targetId + saveData.Operator = evalTarCont.Report + if evalTarCont.Report != "" { + var departAry []string + userKeyAry := strings.Split(evalTarCont.Report, ",") + if len(userKeyAry) > 0 { + for _, u_v := range userKeyAry { + usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_bf_id"}, map[string]interface{}{"wm_key": u_v}) + if usErr == true { + departAry = append(departAry, strconv.FormatInt(usCont.DepartmentId, 10)) + } + } + } + saveData.DepartmentId = strings.Join(departAry, ",") + } + //维度ID + dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) + if dimErr == nil { + saveData.Dimension = dimId + } + saveData.Type = evalTarCont.Type + saveData.Unit = v_s.Unit + saveData.ReferenceScore = v_s.ReferenceScore + saveData.State = 1 + saveData.Addtime = time.Now().Unix() + saveData.Eitetime = time.Now().Unix() + + saveData.Group = groupId //departId + saveData.Cycles = v_s.Cycles + saveData.CycleAttres = v_s.CycleAttres + saveData.AcceptEvaluation = departId + saveData.Content = v_s.Content + saveDataAry = append(saveDataAry, saveData) + } else { + fmt.Printf("5----------------------------->\n") + //获取子栏目列表 + var sunTarget []assessmentmodel.QualitativeTarget + sunErr := global.GVA_DB_Performanceappraisal.Where("q_parent_id = ?", targetId).Find(&sunTarget).Error + if sunErr == nil && len(sunTarget) > 0 { + fmt.Printf("6----------------------------->\n") + for _, s_d_v := range sunTarget { + fmt.Printf("7----------------------------->\n") + var detaTarget []assessmentmodel.DetailedTarget + detaiErr := global.GVA_DB_Performanceappraisal.Where("dt_parentid = ? AND dt_parentid_sun = ?", targetId, s_d_v.Id).Find(&detaTarget).Error + if detaiErr == nil && len(detaTarget) > 0 { + fmt.Printf("8----------------------------->\n") + for _, s_t_v := range detaTarget { + fmt.Printf("9----------------------------->\n") + saveData.Target = targetId + saveData.Operator = evalTarCont.Report + if evalTarCont.Report != "" { + var departAry []string + userKeyAry := strings.Split(evalTarCont.Report, ",") + if len(userKeyAry) > 0 { + for _, u_v := range userKeyAry { + usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_bf_id"}, map[string]interface{}{"wm_key": u_v}) + if usErr == true { + departAry = append(departAry, strconv.FormatInt(usCont.DepartmentId, 10)) + } + } + } + saveData.DepartmentId = strings.Join(departAry, ",") + } + //维度ID + dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) + if dimErr == nil { + saveData.Dimension = dimId + } + saveData.Type = evalTarCont.Type + saveData.DetailedTarget = s_t_v.Id + saveData.Unit = v_s.Unit + saveData.ReferenceScore = v_s.ReferenceScore + saveData.State = 1 + saveData.Addtime = time.Now().Unix() + saveData.Eitetime = time.Now().Unix() + + saveData.Group = groupId //departId + saveData.Cycles = v_s.Cycles + saveData.CycleAttres = v_s.CycleAttres + saveData.AcceptEvaluation = departId + saveData.Content = v_s.Content + saveDataAry = append(saveDataAry, saveData) + } + } + } + } else { + fmt.Printf("10----------------------------->\n") + var detaTarget []assessmentmodel.DetailedTarget + detaiErr := global.GVA_DB_Performanceappraisal.Where("dt_parentid = ? AND dt_parentid_sun = 0", targetId).Find(&detaTarget).Error + if detaiErr == nil && len(detaTarget) > 0 { + fmt.Printf("12----------------------------->\n") + for _, s_t_v := range detaTarget { + fmt.Printf("13----------------------------->\n") + saveData.Target = targetId + saveData.Operator = evalTarCont.Report + if evalTarCont.Report != "" { + var departAry []string + userKeyAry := strings.Split(evalTarCont.Report, ",") + if len(userKeyAry) > 0 { + for _, u_v := range userKeyAry { + usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_bf_id"}, map[string]interface{}{"wm_key": u_v}) + if usErr == true { + departAry = append(departAry, strconv.FormatInt(usCont.DepartmentId, 10)) + } + } + } + saveData.DepartmentId = strings.Join(departAry, ",") + } + //维度ID + dimId, dimErr := strconv.ParseInt(v.Id, 10, 64) + if dimErr == nil { + saveData.Dimension = dimId + } + saveData.Type = evalTarCont.Type + saveData.DetailedTarget = s_t_v.Id + saveData.Unit = v_s.Unit + saveData.ReferenceScore = v_s.ReferenceScore + saveData.State = 1 + saveData.Addtime = time.Now().Unix() + saveData.Eitetime = time.Now().Unix() + + saveData.Group = groupId //departId + saveData.Cycles = v_s.Cycles + saveData.CycleAttres = v_s.CycleAttres + saveData.AcceptEvaluation = departId + saveData.Content = v_s.Content + saveDataAry = append(saveDataAry, saveData) + } + + } + } + } + + } + } + + } + } + } + if len(saveDataAry) <= 0 { + response.Result(105, saveDataAry, "没有要添加的数据", c) + return + } + addErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error + if addErr != nil { + response.Result(106, len(saveDataAry), "数据添加失败", c) + return + } + if departId != 0 { + + } + response.Result(0, saveDataAry, "数据添加成功", c) +}