绩效考核
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

926 lines
36 KiB

package evaluation
import (
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
"gin_server_admin/api/wechatapp/sendmessage"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/common/response"
"gin_server_admin/model/hrsystem"
"github.com/gin-gonic/gin"
)
// 加减分
func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) {
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
var requestData addPlusOrMinusPoints
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.PlanId == "" {
response.Result(103, requestData, "未知考核项目!请检查你的提交是否正确!", c)
return
}
planIdInt, planIdIntErr := strconv.ParseInt(requestData.PlanId, 10, 64)
if planIdIntErr != nil {
response.Result(104, requestData, "未知考核项目!请检查你的提交是否正确!", c)
return
}
//获取考核项目内容
var programme assessmentmodel.QualitativeEvaluation
judgeProgramme := global.GVA_DB_Performanceappraisal.Where("`qe_id` = ?", planIdInt).First(&programme).Error
if judgeProgramme != nil {
response.Result(105, programme, "未知考核项目!请检查你的提交是否正确!", c)
return
}
if requestData.Type == 0 {
response.Result(106, requestData, "请问您是要进行加分还是减分?请指定,谢谢!", c)
return
}
countFrequency := 1
if requestData.Count != 0 {
countFrequency = requestData.Count
}
switch requestData.State {
case 2, 3:
if requestData.Score == "" {
response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c)
return
}
tijaoFenshu := commonus.GetDuyCycle(requestData.Score, 100)
if tijaoFenshu > programme.MaxScore {
response.Result(107, requestData, fmt.Sprintf("您提交的分数操作允许提交的最大值(最大值:%v)!", float64(programme.MaxScore)/100), c)
return
}
if tijaoFenshu < programme.MinScore {
response.Result(107, requestData, fmt.Sprintf("您提交的分数操作允许提交的最大值(最小值:%v)!", float64(programme.MinScore)/100), c)
return
}
case 1:
//获取分数
requestData.Score = strconv.FormatInt(programme.MaxScore, 10)
default:
if requestData.Score == "" {
response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c)
return
}
}
if requestData.Reason == "" {
response.Result(108, requestData, "请输入您的原因,谢谢!", c)
return
}
if requestData.Addtime == "" {
response.Result(108, requestData, "请输入您的检查时间,谢谢!", c)
return
}
if requestData.Rectification == 0 {
requestData.Rectification = 2
}
var correctionTime int64 = 0
if requestData.Rectification == 1 {
if requestData.CorrectionTime == "" {
response.Result(108, requestData, "请输入整改期限,谢谢!", c)
return
}
var corrTimeErr bool = false
correctionTime, corrTimeErr = commonus.DateToTimeStampEs(requestData.CorrectionTime)
if corrTimeErr == false {
response.Result(108, requestData, "请输入整改期限时间格式不对,谢谢!", c)
return
}
}
operationTime := time.Now().Unix()
keyNumber := commonus.GetFileNumberEs()
var addScore assessmentmodel.ScoreFlow
addScore.EvaluationPlan = planIdInt //考核方案项目ID
addScore.PlusReduceScore = requestData.Type //1:加分;2:减分
addScore.PlanVersion = requestData.PlanVersionNumber
//分值转化
scoreStringToInt64 := commonus.GetDuyCycle(requestData.Score, 100)
addScore.Score = scoreStringToInt64 //分值(乘100录入)
addScore.Key = keyNumber //识别标志
addScore.Reason = requestData.Reason //操作原因
addScore.Time = operationTime
addScore.EiteTime = operationTime
addScore.Count = countFrequency //发生次数
timeOccurrence := commonus.DateToTimeStamp(requestData.Addtime) //发生时间
addScore.HappenTime = timeOccurrence
// addScore.HappenTime = commonus.DateToTimeStamp(requestData.Addtime) //发生时间
departmentId, departmentIdErr := strconv.ParseInt(userCont.Deparment, 10, 64)
if departmentIdErr == nil {
addScore.EvaluationDepartment = departmentId //测评部门
}
userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64)
if userKeyErr == nil {
addScore.EvaluationUser = userKey //测评人
}
userGroup, userGroupErr := strconv.ParseInt(userCont.Company, 10, 64)
if userGroupErr == nil {
addScore.EvaluationGroup = userGroup //测评集团
}
//获取拆分时间节
addScore.Year = commonus.ComputingTime(timeOccurrence, 1)
addScore.Quarter = commonus.ComputingTime(timeOccurrence, 2)
addScore.Month = commonus.ComputingTime(timeOccurrence, 3)
addScore.Week = commonus.ComputingTime(timeOccurrence, 4)
// addScore.Year = commonus.ComputingTime(operationTime, 1)
// addScore.Quarter = commonus.ComputingTime(operationTime, 2)
// addScore.Month = commonus.ComputingTime(operationTime, 3)
// addScore.Week = commonus.ComputingTime(operationTime, 4)
if len(requestData.Enclosure) > 0 {
enclosure, enclosureErr := json.Marshal(requestData.Enclosure)
if enclosureErr == nil {
addScore.Enclosure = string(enclosure) //附件
}
}
addScore.DutyGroup = programme.Group //职责集团
addScore.DutyDepartment = programme.AcceptEvaluation //职责部门
addScore.Rectification = requestData.Rectification //1、需要整改;2:无需整改
addScore.Reply = 1
addScore.CorrectionTime = correctionTime
addErr := global.GVA_DB_Performanceappraisal.Create(&addScore).Error
//步进内容
if addErr != nil {
response.Result(109, addErr, "数据写入失败", c)
return
}
//给发起人部门负责人发送消息
//1、获取发起人部门负责人
founderDepartId, _ := strconv.ParseInt(userCont.Deparment, 10, 64)
sendUserIsTrue, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, founderDepartId) //获取对应部门负责人
if sendUserIsTrue != true {
// global.GVA_DB_Performanceappraisal.Where("`sf_id` = ?", addScore.Id).Delete(&assessmentmodel.ScoreFlow{})
response.Result(0, sendUserList, "未指定相关部门处理人!请确定部门负责人后,重新发起请求!", c)
return
}
//判断发起人是否为部门负责人
myIsTrue := 1
for _, v := range sendUserList {
if v == userCont.Wechat {
myIsTrue = 2
}
}
taskId := strconv.FormatInt(keyNumber, 10)
//确定标题
var title string = ""
//一级标题副本内容
var desc string = ""
detailedTargetCont, detailedTargetErr := commonus.GetDetailedTargetInfo(programme.DetailedTarget) //获取指标细则
if detailedTargetErr == true {
tarInf, tarErr := commonus.GetTargetInfo(detailedTargetCont.ParentId) //获取指标信息
if tarErr == true {
title = tarInf.Title //一级标题,建议不超过36个字
desc = detailedTargetCont.Title //一级标题辅助信息,建议不超过44个字
} else {
title = detailedTargetCont.Title //一级标题,建议不超过36个字
}
} else {
tarInf, tarErr := commonus.GetTargetInfo(programme.Target) //获取指标信息
if tarErr == true {
title = tarInf.Title //一级标题,建议不超过36个字
} else {
title = strconv.FormatInt(programme.DetailedTarget, 10) //一级标题,建议不超过36个字
}
}
//执行原因
reason := fmt.Sprintf("原因:%v\n", requestData.Reason)
//执行操作内容
var subtitle string = ""
//分数
sendScore := scoreStringToInt64 * int64(countFrequency)
sendScVal := float64(sendScore) / 100
scoreFloat64ToStringsss := strconv.FormatFloat(sendScVal, 'f', -1, 64)
// fmt.Printf("ScoreSetp---2----s->%v----f->%v----fs->%v----si->%v\n", sendScore, float64(sendScore)/100, sendScVal, scoreFloat64ToStringsss)
if requestData.Type == 1 {
subtitle = fmt.Sprintf("考核加分:%v\n", scoreFloat64ToStringsss)
} else {
subtitle = fmt.Sprintf("考核减分:%v\n", scoreFloat64ToStringsss)
}
twoLevelTitle := "考核上报部门:"
twoLevelKeyName := ""
// execDerpatErr, execDerpat := commonus.GetBranchFactory(departmentId)
execDerpat, execDerpatErr := commonus.GetNewOrgCont(departmentId)
if execDerpatErr == nil {
twoLevelKeyName = execDerpat.Name
}
var twoLevelKeyValue string = ""
var twoLevelUserId string = ""
//获取操作人
if userCont.Wechat != "" {
userWechatErr, userWechat := commonus.GetUesrContForWechatID(userCont.Wechat)
if userWechatErr == true {
twoLevelKeyValue = userWechat.Name
twoLevelUserId = userCont.Wechat
}
}
// commonus.StepAddDataEs(keyNumber, 0, 3, 1, 1, 2, 1, userCont.Key, requestData.Enclosure)
// response.Result(0, addScore, "数据写入成功", c)
// return
//暂停审核方便录入测试数据
cardJumpUrl := fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", keyNumber)
if requestData.Type != 1 {
if myIsTrue != 1 {
//写入当前流程步骤
// commonus.StepAddData(keyNumber, 0, 3, 1, 1, 2, 1, userCont.Key) //原
commonus.StepAddDataEs(keyNumber, 0, 3, 1, 1, 1, 1, userCont.Key, requestData.Enclosure, timeOccurrence)
//申请人也是部门负责人
//给相关部门内勤发送消息。确定相关责任人
sendUserIsTrue, sendUserList := commonus.GetSendMsgUser(16118387069540343, programme.AcceptEvaluation) //获取对应部门内勤
if sendUserIsTrue != true {
response.Result(0, sendUserList, "未指定相关部门处理人!未能向相关人员发送考核项目!请手动发起!", c)
return
}
jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", keyNumber)
jumpUrlTitle := "请前往处理"
sourceDesc := "责任划分"
var sendTextMsg sendmessage.TextNoticeTemplateMedium
sendTextMsg.SendMsgTextShare(sendUserList, taskId, title, desc, subtitle, reason, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, cardJumpUrl, jumpUrl, jumpUrlTitle, sourceDesc)
} else {
//写入当前流程步骤
// commonus.StepAddData(keyNumber, 16182159043990656, 2, 1, 1, 2, 1, userCont.Key) //原
commonus.StepAddDataEs(keyNumber, 16182159043990656, 2, 1, 1, 1, 1, userCont.Key, requestData.Enclosure, timeOccurrence)
//申请人不是是部门负责人 给本部门负责人发送审批
//获取发起人部门负责人
departmentIdInts, _ := strconv.ParseInt(userCont.Deparment, 10, 64)
_, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, departmentIdInts) //获取对应部门负责人
sendUserStr := strings.Join(sendUserList, "|")
//按钮
var buttonMap []sendmessage.ButtonListtype
var buttonCont sendmessage.ButtonListtype
buttonCont.Type = 0
buttonCont.Text = "批准"
buttonCont.Style = 1
buttonCont.Key = fmt.Sprintf("duty_%v_1_%v", keyNumber, 0)
buttonMap = append(buttonMap, buttonCont)
buttonCont.Type = 0
buttonCont.Text = "驳回"
buttonCont.Style = 3
buttonCont.Key = fmt.Sprintf("duty_%v_2_%v", keyNumber, 0)
buttonMap = append(buttonMap, buttonCont)
// response.Result(0, buttonCont, "数据写入成功", c)
// return
var sendTextMsg sendmessage.ButtonNoticeTemplateMedium
callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendButtonShare(sendUserStr, taskId, "部门负责人审批", title, desc, subtitle, reason, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, cardJumpUrl, buttonMap)
outData := commonus.MapOut()
outData["callbakcMsg"] = string(callbakcMsg)
outData["isTrueCall"] = isTrueCall
outData["callBackCont"] = callBackCont
response.Result(0, outData, "数据写入成功", c)
}
} else {
commonus.StepAddDataEs(keyNumber, 16182159043990656, 2, 7, 1, 1, 1, userCont.Key, requestData.Enclosure, timeOccurrence)
//申请人不是是部门负责人 给本部门负责人发送审批
//获取发起人部门负责人
departmentIdInts, _ := strconv.ParseInt(userCont.Deparment, 10, 64)
_, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, departmentIdInts) //获取对应部门负责人
sendUserStr := strings.Join(sendUserList, "|")
//按钮
var buttonMap []sendmessage.ButtonListtype
var buttonCont sendmessage.ButtonListtype
buttonCont.Type = 0
buttonCont.Text = "批准"
buttonCont.Style = 1
buttonCont.Key = fmt.Sprintf("duty_%v_1_%v", keyNumber, 0)
buttonMap = append(buttonMap, buttonCont)
buttonCont.Type = 0
buttonCont.Text = "驳回"
buttonCont.Style = 3
buttonCont.Key = fmt.Sprintf("duty_%v_2_%v", keyNumber, 0)
buttonMap = append(buttonMap, buttonCont)
// response.Result(0, buttonCont, "数据写入成功", c)
// return
var sendTextMsg sendmessage.ButtonNoticeTemplateMedium
callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendButtonShare(sendUserStr, taskId, "部门负责人审批", title, desc, subtitle, reason, twoLevelTitle, twoLevelKeyName, twoLevelKeyValue, twoLevelUserId, cardJumpUrl, buttonMap)
outData := commonus.MapOut()
outData["callbakcMsg"] = string(callbakcMsg)
outData["isTrueCall"] = isTrueCall
outData["callBackCont"] = callBackCont
response.Result(0, outData, "数据写入成功", c)
}
}
// 添加责任人
func (e *EvaluationInterface) PersonInCharge(c *gin.Context) {
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
var requestData DivisionResponsibilityTypes
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.Id == "" {
response.Result(103, requestData, "未知考核项目!请检查你的提交是否正确!", c)
return
}
orderId, orderIdIntErr := strconv.ParseInt(requestData.Id, 10, 64)
if orderIdIntErr != nil {
response.Result(104, requestData, "未知考核项目!请检查你的提交是否正确!", c)
return
}
if requestData.Register == "" {
response.Result(1041, requestData, "未知考核项目!请检查你的提交是否正确!", c)
return
}
var registerCont assessmentmodel.Register
regWhere := commonus.MapOut()
regWhere["number"] = requestData.Register
regErr := registerCont.GetCont(regWhere)
if regErr == nil {
if registerCont.State != 1 {
response.Result(1041, requestData, "该考核项的责任划分您已经提交!请不要重复提交", c)
return
}
} else {
// response.Result(1042, regErr, "未知考核项目!请检查你的提交是否正确!", c)
// return
registerNumber, _ := strconv.ParseInt(requestData.Register, 10, 64)
var registerCont assessmentmodel.Register
registerCont.Number = registerNumber
registerCont.State = 1
registerCont.Time = time.Now().Unix()
registerCont.AddCont()
}
if len(requestData.UserList) < 1 {
response.Result(105, requestData, "请选择要考核的人员!", c)
return
} else {
for _, u_v := range requestData.UserList {
if len(u_v.UserKey) < 1 {
response.Result(105, requestData, "您有未输入的考核的人员选项!", c)
return
}
// if u_v.Type != 3 {
// if len(u_v.UserKey) < 1 {
// response.Result(105, requestData, "您有未输入的考核的人员选项!", c)
// return
// }
// }else{}
}
}
//写入审批流程
commonus.StepAddData(orderId, 0, 4, 3, 1, 2, 3, userCont.Key)
var scoreFlowInfo assessmentmodel.ScoreFlow
judegFlowErr := global.GVA_DB_Performanceappraisal.Where("`sf_key` = ?", orderId).First(&scoreFlowInfo).Error
if judegFlowErr != nil {
response.Result(106, judegFlowErr, "未知考核项目!请检查你的提交是否正确!", c)
return
}
//获取考核项目内容
var programme assessmentmodel.QualitativeEvaluation
judgeProgramme := global.GVA_DB_Performanceappraisal.Where("`qe_id` = ?", scoreFlowInfo.EvaluationPlan).First(&programme).Error
if judgeProgramme != nil {
response.Result(107, programme, "未知考核项目!请检查你的提交是否正确!", c)
return
}
//确定相关责任人
sendUserIsTrue, sendUserList := commonus.GetSendMsgUser(16182159043990656, scoreFlowInfo.DutyDepartment) //获取对应部门负责人
if sendUserIsTrue != true {
response.Result(109, sendUserList, "未指定相关部门处理人!未能向相关人员发送考核项目!请手动发起!", c)
return
}
//同一订单下,删除原有的,再从新分配。
global.GVA_DB_Performanceappraisal.Where("df_sf_id = ?", orderId).Delete(&assessmentmodel.DivisionResponsibilities{})
var reason string //引用文本描述
var saveDataAry []assessmentmodel.DivisionResponsibilities
var userKeyAry []int64
var userKeyMainAry []int64
var MainResponsiblePerson MainResponsiblePersonType
var teamIsTrue int = 1
for _, v := range requestData.UserList {
var saveDataCont assessmentmodel.DivisionResponsibilities
saveDataCont.ScoreFlow = orderId //流程Key
saveDataCont.Type = v.Type //责任类型(1、主要责任人;2、互保责任人;3、责任班组;4、责任班组长;5、主管;6、三大员;7、厂长、主任)
departmentId, departmentIdErr := strconv.ParseInt(userCont.Deparment, 10, 64)
if departmentIdErr == nil {
saveDataCont.EvaluationDepartment = departmentId //测评人部门
}
userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64)
if userKeyErr == nil {
saveDataCont.EvaluationUser = userKey //测评人
}
userGroup, userGroupErr := strconv.ParseInt(userCont.Company, 10, 64)
if userGroupErr == nil {
saveDataCont.EvaluationGroup = userGroup //测评人集团
}
if v.Type != 3 {
userKeyLen := len(v.UserKey)
if userKeyLen < 1 {
userKeyLen = 1
}
//分配权限
weightFloat := float64(v.Weight) / float64(userKeyLen)
weightInt := commonus.Round(weightFloat, 2) * 100
weightInt64, _ := strconv.ParseInt(strconv.FormatFloat(weightInt, 'f', -1, 64), 10, 64)
//不是班组选项
for _, ua_v := range v.UserKey {
userConting, userIsTrue := commonus.GetWorkUser(ua_v)
if userIsTrue == true {
}
saveDataCont.UserName = userConting.Name
saveDataCont.Weight = weightInt64
saveDataCont.Time = time.Now().Unix()
saveDataCont.EiteTime = time.Now().Unix()
saveDataCont.DistributionUser = commonus.GetFileNumberEs()
saveDataCont.UserKey = userConting.Key
saveDataCont.Group = userConting.Company
saveDataCont.Department = userConting.MainDeparment
saveDataCont.Tema = userConting.TeamId
if v.Type != 3 {
userKeyAry = append(userKeyAry, userConting.Key)
}
var zeren string
switch v.Type {
case 1:
zeren = "主要责任人"
MainResponsiblePerson.UserKey = userConting.Key
MainResponsiblePerson.Group = userConting.Company
MainResponsiblePerson.Department = userConting.MainDeparment
MainResponsiblePerson.WorkshopId = userConting.AdminOrg
MainResponsiblePerson.Tema = userConting.TeamId
userKeyMainAry = append(userKeyMainAry, userConting.Key)
case 2:
zeren = "互保责任人"
case 3:
zeren = "责任班组"
case 4:
zeren = "责任班组长"
case 5:
zeren = "主管"
case 6:
zeren = "三大员"
case 7:
zeren = "主任"
case 8:
zeren = "厂长"
default:
zeren = "主要责任人"
}
reason = fmt.Sprintf("%v%v:%v 责任占比:%v\n", reason, zeren, userConting.Name, weightInt64/100)
saveDataAry = append(saveDataAry, saveDataCont)
}
} else {
teamIsTrue = 2
}
}
//遍历班组情况
if teamIsTrue == 2 {
for _, t_v := range requestData.UserList {
if t_v.Type == 3 {
var saveDataContTeam assessmentmodel.DivisionResponsibilities
saveDataContTeam.ScoreFlow = orderId //流程Key
saveDataContTeam.Type = t_v.Type //责任类型(1、主要责任人;2、互保责任人;3、责任班组;4、责任班组长;5、主管;6、三大员;7、厂长、主任)
departmentId, departmentIdErr := strconv.ParseInt(userCont.Deparment, 10, 64)
if departmentIdErr == nil {
saveDataContTeam.EvaluationDepartment = departmentId //测评人部门
}
userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64)
if userKeyErr == nil {
saveDataContTeam.EvaluationUser = userKey //测评人
}
userGroup, userGroupErr := strconv.ParseInt(userCont.Company, 10, 64)
if userGroupErr == nil {
saveDataContTeam.EvaluationGroup = userGroup //测评人集团
}
for _, tt_v := range t_v.UserKey {
teamIdInt64, _ := strconv.ParseInt(tt_v, 10, 64)
teamContErr, teamCont := commonus.GetTeaming(teamIdInt64)
if teamContErr == true {
reason = fmt.Sprintf("%v%v:%v 责任占比:%v\n", reason, "责任班组", teamCont.Name, t_v.Weight)
}
teamGroup := strconv.FormatInt(MainResponsiblePerson.Group, 10)
teamDepartment := strconv.FormatInt(MainResponsiblePerson.Department, 10)
teamWorkshopId := strconv.FormatInt(MainResponsiblePerson.WorkshopId, 10)
teamUserList, teamUserErr := commonus.GetTeamUserList(teamGroup, teamDepartment, teamWorkshopId, tt_v)
if teamUserErr == true {
var jiShuQi int64 = 0
for _, tu_v := range teamUserList {
if judgeIsSet(tu_v.Key, userKeyAry) == false {
jiShuQi++
}
}
if jiShuQi < 1 {
jiShuQi = 1
}
//分配权限
weightFloat := float64(t_v.Weight) / float64(jiShuQi)
weightInt := commonus.Round(weightFloat, 2) * 100
weightInt64, _ := strconv.ParseInt(strconv.FormatFloat(weightInt, 'f', -1, 64), 10, 64)
for _, tu_v := range teamUserList {
if judgeIsSet(tu_v.Key, userKeyAry) == false {
saveDataContTeam.UserName = tu_v.Name
saveDataContTeam.Weight = weightInt64
saveDataContTeam.Time = time.Now().Unix()
saveDataContTeam.EiteTime = time.Now().Unix()
saveDataContTeam.DistributionUser = commonus.GetFileNumberEs()
saveDataContTeam.UserKey = tu_v.Key
saveDataContTeam.Group = tu_v.Company
saveDataContTeam.Department = tu_v.MainDeparment
saveDataContTeam.Tema = tu_v.TeamId
saveDataAry = append(saveDataAry, saveDataContTeam)
}
}
}
}
}
}
}
if len(saveDataAry) < 1 {
response.Result(107, saveDataAry, "请检查您提交的要考核人员名单是否正确!", c)
return
}
global.GVA_DB_Performanceappraisal.Where("`df_sf_id` = ?", orderId).Delete(&assessmentmodel.DivisionResponsibilities{})
writeDataErr := global.GVA_DB_Performanceappraisal.Create(&saveDataAry).Error
if writeDataErr != nil {
response.Result(108, writeDataErr, "数据写入失败", c)
return
}
saveRegData := commonus.MapOut()
saveRegData["state"] = 2
saveRegData["time"] = time.Now().Unix()
registerCont.EiteCont(regWhere, saveRegData)
//审批节点写入责任人
commonus.WriteFlowMainSet(orderId, userKeyMainAry)
flowSaveData := commonus.MapOut()
flowSaveData["sf_reply"] = 2
flowSaveData["sf_eite_time"] = time.Now().Unix()
EiteScoreFlow(orderId, flowSaveData)
//提交部门负责人审批
taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) //卡片唯一识别符
//获取执行结果
var mainTitleDesc string = ""
//分数
sendScore := scoreFlowInfo.Score * int64(scoreFlowInfo.Count)
if scoreFlowInfo.PlusReduceScore == 1 {
mainTitleDesc = fmt.Sprintf("考核加分:%v\n", float64(sendScore)/100)
} else {
mainTitleDesc = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
}
// if scoreFlowInfo.PlusReduceScore == 1 {
// mainTitleDesc = "增加:" + strconv.FormatInt(scoreFlowInfo.Score, 10) + programme.Unit
// } else {
// mainTitleDesc = "扣除:" + strconv.FormatInt(scoreFlowInfo.Score, 10) + programme.Unit
// }
//部门名称
var twoLevelKeyName string = ""
departmentId, _ := strconv.ParseInt(userCont.Deparment, 10, 64)
execDerpatErr, execDerpat := commonus.GetBranchFactory(departmentId)
if execDerpatErr == true {
twoLevelKeyName = execDerpat.Name
}
twoLevelUserId := userCont.Wechat
cardJumpUrl := fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", orderId)
// 按钮
var buttonMap []sendmessage.ButtonListtype
var buttonCont sendmessage.ButtonListtype
buttonCont.Type = 0
buttonCont.Text = "批准"
buttonCont.Style = 1
buttonCont.Key = fmt.Sprintf("duty_%v_1_%v", orderId, 0)
buttonMap = append(buttonMap, buttonCont)
buttonCont.Type = 0
buttonCont.Text = "驳回"
buttonCont.Style = 3
buttonCont.Key = fmt.Sprintf("duty_%v_2_%v", orderId, 0)
buttonMap = append(buttonMap, buttonCont)
var sendTextMsg sendmessage.ButtonNoticeTemplateMedium
callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendButtonShare(sendUserList, taskId, "部门负责人审批", scoreFlowInfo.Reason, mainTitleDesc, "责任划分", reason, "责任部门", twoLevelKeyName, userCont.Name, twoLevelUserId, cardJumpUrl, buttonMap)
outData := commonus.MapOut()
outData["callbakcMsg"] = string(callbakcMsg)
outData["isTrueCall"] = isTrueCall
outData["callBackCont"] = callBackCont
response.Result(0, outData, "数据写入成功", c)
}
// 判断是否已经存在
func judgeIsSet(id int64, idAry []int64) (isTrue bool) {
isTrue = false
for _, v := range idAry {
if id == v {
isTrue = true
}
}
return
}
// 填写整改措施
func (e *EvaluationInterface) RectificationMeasures(c *gin.Context) {
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(1001, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64)
if userKeyErr != nil {
response.Result(102, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
departmentId, departmentIdErr := strconv.ParseInt(userCont.Deparment, 10, 64)
if departmentIdErr != nil {
response.Result(103, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
userGroup, userGroupErr := strconv.ParseInt(userCont.Company, 10, 64)
if userGroupErr != nil {
response.Result(104, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
var requestData CorrectiveMeasuresType
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(105, err, "数据获取失败!", c)
return
}
if requestData.OrderId == "" {
response.Result(106, err, "数据异常!", c)
return
}
orderidval, orderidvalErr := strconv.ParseInt(requestData.OrderId, 10, 64)
if orderidvalErr != nil {
response.Result(107, isTrue, "数据异常!!", c)
return
}
var registerCont assessmentmodel.Register
regWhere := commonus.MapOut()
regWhere["number"] = requestData.Register
regErr := registerCont.GetCont(regWhere)
if regErr == nil {
if registerCont.State != 1 {
response.Result(1041, requestData, "该考核项的责任划分您已经提交!请不要重复提交", c)
return
}
} else {
response.Result(1042, regErr, "未知考核项目!请检查你的提交是否正确!", c)
return
}
if requestData.Content == "" {
response.Result(108, err, "请输入整改内容!", c)
return
}
var addRecMeas assessmentmodel.RectificationMeasures
addRecMeas.UserKey = userKey
addRecMeas.Department = departmentId
addRecMeas.Group = userGroup
addRecMeas.OrderKey = orderidval
addRecMeas.State = 1
addRecMeas.Time = time.Now().Unix()
addRecMeas.EiteTime = time.Now().Unix()
addRecMeas.Content = requestData.Content
if len(requestData.Enclosure) > 0 {
enclosure, enclosureErr := json.Marshal(requestData.Enclosure)
if enclosureErr == nil {
addRecMeas.Enclosure = string(enclosure) //附件
}
}
// enclosure, enclosureErr := json.Marshal(requestData.Enclosure)
// if enclosureErr == nil {
// addRecMeas.Enclosure = string(enclosure)
// }
addErr := global.GVA_DB_Performanceappraisal.Create(&addRecMeas).Error
//步进内容
if addErr != nil {
response.Result(109, addErr, "数据写入失败", c)
return
}
saveRegData := commonus.MapOut()
saveRegData["state"] = 2
saveRegData["time"] = time.Now().Unix()
registerCont.EiteCont(regWhere, saveRegData)
//写入流程步骤
// commonus.StepAddData(orderidval, 0, 6, 4, 1, 2, 5, userCont.Key) //原
commonus.StepAddDataEs(orderidval, 0, 6, 4, 1, 2, 5, userCont.Key, requestData.Enclosure, time.Now().Unix())
/*
向本部门负责人发送审批
*/
//确定相关责任人
departmentIdInts, _ := strconv.ParseInt(userCont.Deparment, 10, 64)
sendUserIsTrue, sendUserList := commonus.GetSendMsgUserAry(16182159043990656, departmentIdInts) //获取对应部门负责人
sendUserStr := strings.Join(sendUserList, "|")
taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) //卡片唯一识别符
if sendUserIsTrue != true {
response.Result(109, sendUserList, "未指定相关部门处理人!未能向相关人员发送考核项目!请手动发起!", c)
return
}
//获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _, _ := commonus.GetDutyAssociatedItems(requestData.OrderId)
//一级文本处理
var title, desc string
if detailedRulesTitle != "" {
if targettitle != "" {
title = targettitle
desc = detailedRulesTitle
} else {
title = detailedRulesTitle
desc = detailedRulesInfo
}
} else if targettitle != "" {
title = targettitle
}
//获取执行结果
var mainTitleDesc string
mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason)
if flowContent.PlusReduceScore == 1 {
mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit)
} else {
mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit)
}
var reason string
reason = fmt.Sprintf("整改措施:\n%v", requestData.Content)
//部门名称
var twoLevelKeyName string = ""
execDerpatErr, execDerpat := commonus.GetBranchFactory(departmentIdInts)
if execDerpatErr == true {
twoLevelKeyName = execDerpat.Name
}
twoLevelUserId := userCont.Wechat
cardJumpUrl := fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", requestData.OrderId)
// 按钮
var buttonMap []sendmessage.ButtonListtype
var buttonCont sendmessage.ButtonListtype
buttonCont.Type = 0
buttonCont.Text = "批准"
buttonCont.Style = 1
buttonCont.Key = fmt.Sprintf("duty_%v_1_%v", orderidval, addRecMeas.Id)
buttonMap = append(buttonMap, buttonCont)
buttonCont.Type = 0
buttonCont.Text = "驳回"
buttonCont.Style = 3
buttonCont.Key = fmt.Sprintf("duty_%v_2_%v", orderidval, addRecMeas.Id)
buttonMap = append(buttonMap, buttonCont)
var sendTextMsg sendmessage.ButtonNoticeTemplateMedium
callbakcMsg, isTrueCall, callBackCont := sendTextMsg.SendButtonShare(sendUserStr, taskId, "部门负责人审批", title, desc, mainTitleDesc, reason, "责任人", twoLevelKeyName, userCont.Name, twoLevelUserId, cardJumpUrl, buttonMap)
outData := commonus.MapOut()
outData["callbakcMsg"] = string(callbakcMsg)
outData["isTrueCall"] = isTrueCall
outData["callBackCont"] = callBackCont
response.Result(0, outData, "数据写入成功", c)
}
// 写入责任节点
func WritePersonLiable(flowKey, userKey []int64) {
var userAry []hrsystem.PersonArchives
userAryErr := global.GVA_DB_HrDataBase.Model(&hrsystem.PersonArchives{}).Where("`key` IN ?", userKey).Find(&userAry)
var userFlow []commonus.UserListFlowAll
if userAryErr == nil {
for _, uv := range userAry {
var usFlowInfo commonus.UserListFlowAll
usFlowInfo.Id = strconv.FormatInt(uv.Key, 10) // `json:"id"` //操作人ID
usFlowInfo.Name = uv.Name // `json:"name"` //操作人姓名
usFlowInfo.Icon = uv.Icon // `json:"icon"` //操作人头像
usFlowInfo.Wechat = uv.Wechat
if uv.WorkWechat != "" {
usFlowInfo.Wechat = uv.WorkWechat // `json:"wechat"` //微信Openid
}
whereGroup := commonus.MapOut()
whereGroup["id"] = uv.Company
orgContGroup, _ := commonus.GetNewOrgCont(whereGroup, "name")
usFlowInfo.Group = uv.Company // `json:"group"` //集团公司
usFlowInfo.GroupName = orgContGroup.Name // `json:"groupname"` //分厂名称
// departId, _ := strconv.ParseInt(uv.Deparment, 10, 64)
usFlowInfo.DepartmentId = uv.MainDeparment // `json:"departmentid"` //分厂Id
whereDepart := commonus.MapOut()
whereDepart["id"] = uv.MainDeparment
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "name")
usFlowInfo.DepartmentName = orgContDepart.Name // `json:"departmentname"` //分厂名称
usFlowInfo.WorkshopId = uv.AdminOrg // `json:"workshopid"` //工段Id
wherePost := commonus.MapOut()
wherePost["id"] = uv.AdminOrg
orgContPost, _ := commonus.GetNewOrgCont(wherePost, "name")
usFlowInfo.WorkshopName = orgContPost.Name // `json:"workshopname"` //工段名称
usFlowInfo.PostId = uv.Position // `json:"postid"` //职务Id
var positCont hrsystem.PostDutiesJob
positCont.GetCont(map[string]interface{}{"`id`": uv.Position}, "`name`")
usFlowInfo.PostName = positCont.Name // `json:"postname"` //职务名称
usFlowInfo.Tema = uv.TeamId // `json:"tema"` //班组Id
var teamInCont hrsystem.TeamGroup
teamInCont.GetCont(map[string]interface{}{"`id`": uv.Position}, "`name`")
usFlowInfo.TemaName = teamInCont.Name // `json:"temaname"` //班组名称
userFlow = append(userFlow, usFlowInfo)
}
}
//获取流程内容
var flowCont string
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationProcess{}).Select("`ep_next_cont`").Where("`ep_order_key` = ?", flowKey).First(&flowCont)
if err == nil {
var twoFlowInfo []commonus.FlowAllMap
jsonErr := json.Unmarshal([]byte(flowCont), &twoFlowInfo)
if jsonErr == nil {
for i, v := range twoFlowInfo {
if v.Step == 5 {
twoFlowInfo[i].UserList = userFlow
}
}
}
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationProcess{}).Where("`ep_order_key` = ?", flowKey).Updates(&twoFlowInfo)
}
}
func WritePersonLiableold(flowKey, userKey []int64) {
var userAry []hrsystem.Personnel
userAryErr := global.GVA_DB_HrDataBase.Model(&hrsystem.Personnel{}).Where("`key` IN ?", userKey).Find(&userAry)
var userFlow []commonus.UserListFlowAll
if userAryErr == nil {
for _, uv := range userAry {
var usFlowInfo commonus.UserListFlowAll
usFlowInfo.Id = strconv.FormatInt(uv.Key, 10) // `json:"id"` //操作人ID
usFlowInfo.Name = uv.Name // `json:"name"` //操作人姓名
usFlowInfo.Icon = uv.Icon // `json:"icon"` //操作人头像
usFlowInfo.Wechat = uv.Wechat
if uv.WorkWechat != "" {
usFlowInfo.Wechat = uv.WorkWechat // `json:"wechat"` //微信Openid
}
whereGroup := commonus.MapOut()
whereGroup["id"] = uv.Company
orgContGroup, _ := commonus.GetNewOrgCont(whereGroup, "name")
usFlowInfo.Group = uv.Company // `json:"group"` //集团公司
usFlowInfo.GroupName = orgContGroup.Name // `json:"groupname"` //分厂名称
departId, _ := strconv.ParseInt(uv.Deparment, 10, 64)
usFlowInfo.DepartmentId = departId // `json:"departmentid"` //分厂Id
whereDepart := commonus.MapOut()
whereDepart["id"] = uv.Deparment
orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "name")
usFlowInfo.DepartmentName = orgContDepart.Name // `json:"departmentname"` //分厂名称
usFlowInfo.WorkshopId = uv.AdminOrg // `json:"workshopid"` //工段Id
wherePost := commonus.MapOut()
wherePost["id"] = uv.AdminOrg
orgContPost, _ := commonus.GetNewOrgCont(wherePost, "name")
usFlowInfo.WorkshopName = orgContPost.Name // `json:"workshopname"` //工段名称
usFlowInfo.PostId = uv.Position // `json:"postid"` //职务Id
usFlowInfo.PostName = "" // `json:"postname"` //职务名称
usFlowInfo.Tema = 1 // `json:"tema"` //班组Id
usFlowInfo.TemaName = "" // `json:"temaname"` //班组名称
userFlow = append(userFlow, usFlowInfo)
}
}
//获取流程内容
var flowCont string
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationProcess{}).Select("`ep_next_cont`").Where("`ep_order_key` = ?", flowKey).First(&flowCont)
if err == nil {
var twoFlowInfo []commonus.FlowAllMap
jsonErr := json.Unmarshal([]byte(flowCont), &twoFlowInfo)
if jsonErr == nil {
for i, v := range twoFlowInfo {
if v.Step == 5 {
twoFlowInfo[i].UserList = userFlow
}
}
}
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.EvaluationProcess{}).Where("`ep_order_key` = ?", flowKey).Updates(&twoFlowInfo)
}
}