package taskflow import ( "appPlatform/models/modelshr" "appPlatform/overall" "appPlatform/overall/publicmethod" "strconv" ) /* * @ 作者: 秦东 @ 时间: 2023-11-25 13:14:11 @ 功能: 获取流程管理员人员 @ 参数 #role 角色ID @ 返回值 # @ 方法原型 # */ func GainFlowRoleUser(role int) (Operator []OperatorList, userKey []string) { var userInfoAry []modelshr.ManCont overall.CONSTANT_DB_HR.Model(&modelshr.ManCont{}).Select("`key`,`name`,`number`,`icon`,`icon_photo`,`wechat`,`work_wechat`,`admin_org`,`position`,`teamid`,`mobilephone`,`company`").Where("FIND_IN_SET(?,`role`) AND `emp_type` BETWEEN ? AND ?", role, 1, 10).Find(&userInfoAry) if len(userInfoAry) > 0 { for _, uv := range userInfoAry { Operator = append(Operator, TransformPublicUs(uv)) usKey := strconv.FormatInt(uv.Key, 10) if !publicmethod.IsInTrue[string](usKey, userKey) { userKey = append(userKey, usKey) } } } return } /* * @ 作者: 秦东 @ 时间: 2023-11-25 13:29:04 @ 功能: 判断操作人是否已经操作过,并写入操作记录 @ 参数 #userKey 当前操作人 #runId 执行码 #Operator 操作人 @ 返回值 #isTrue @ 方法原型 #func JudgeOperUser(userKey, runId int64, Operator []OperatorList) (isTrue bool) */ func JudgeOperUser(userKey, runId int64, Operator []OperatorList) (bool, string) { // fmt.Printf("节点审批人--->%v\n", userKey) if len(Operator) < 1 { return true, "您不是此节点操作人!请不要提交!" } caoZuoQuanXian := true for _, v := range Operator { // fmt.Printf("节点审批人--11->%v------>%v------>%v\n", v.Id, userKey, Operator) // fmt.Printf("节点审批人-13-->%v-->%v\n", userKey, v.Id == strconv.FormatInt(userKey, 10)) if v.Id == strconv.FormatInt(userKey, 10) { // fmt.Printf("节点审批人-14->%v-->%v\n", userKey, len(v.LogList)) caoZuoQuanXian = false if len(v.LogList) > 0 { for _, m := range v.LogList { if m.UID == strconv.FormatInt(runId, 10) { return true, "您已经操作过此节点!请不要重复提交!" } } } } } if caoZuoQuanXian { return true, "您不是此节点操作人!请不要提交!" } return false, "" } /* * @ 作者: 秦东 @ 时间: 2023-11-25 13:50:28 @ 功能: 查询驳回到哪个点 @ 参数 #nodeKey 返回的节点 @ 返回值 #isNew 是否重新发起 @ 方法原型 # */ func (r *RunWorkFlow) RejectNode(nodeKey string) (isNew bool) { if nodeKey == "beginnode" { r.Step = 1 if r.TotalSteps >= 2 { r.NextStep = 2 isNew = false } else { r.NextStep = 0 isNew = true } return } for _, v := range r.FlowList { if nodeKey == v.NodeKey { r.Step = v.Step nextStep := v.Step + 1 if nextStep <= r.TotalSteps { r.NextStep = nextStep isNew = false } else { r.NextStep = 0 isNew = true } return } } return }