8 changed files with 328 additions and 12 deletions
@ -0,0 +1,13 @@ |
|||
redis-cli -a 20030322 --cluster create --cluster-replicas 1 192.168.146.128:6379 192.168.146.129:6399 192.168.146.129:6379 192.168.146.130:6399 192.168.146.130:6379 192.168.146.128:6399 |
|||
|
|||
|
|||
|
|||
172.20.5.30 |
|||
172.20.5.31 |
|||
172.20.5.32 |
|||
|
|||
172.20.5.33 |
|||
172.20.5.34 |
|||
172.20.5.55 |
|||
|
|||
redis-cli -a Redis+brngJ3U19@8_Z2^7a --cluster create --cluster-replicas 1 172.20.5.34:6379 172.20.5.31:6379 172.20.5.33:6379 172.20.5.30:6379 172.20.5.32:6379 172.20.5.55:6379 |
|||
@ -0,0 +1,186 @@ |
|||
package taskflow |
|||
|
|||
import ( |
|||
"appPlatform/models/modelshr" |
|||
"appPlatform/overall" |
|||
"appPlatform/overall/publicmethod" |
|||
"strconv" |
|||
) |
|||
|
|||
/* |
|||
* |
|||
@ 作者: 秦东 |
|||
@ 时间: 2023-11-01 10:28:48 |
|||
@ 功能: 生成步进工作流 |
|||
@ 参数 |
|||
|
|||
# |
|||
|
|||
@ 返回值 |
|||
|
|||
# |
|||
|
|||
@ 方法原型 |
|||
|
|||
# |
|||
*/ |
|||
func (f *NodePublicInfo) GenerateFlow(creater publicmethod.AuthenticationPower) { |
|||
//寻找发起节点
|
|||
|
|||
} |
|||
|
|||
/* |
|||
* |
|||
@ 作者: 秦东 |
|||
@ 时间: 2023-11-01 10:52:35 |
|||
@ 功能: 无限极循环节点 |
|||
@ 参数 |
|||
|
|||
#step 步进值 |
|||
|
|||
@ 返回值 |
|||
|
|||
# |
|||
|
|||
@ 方法原型 |
|||
|
|||
# |
|||
*/ |
|||
func (n *NodePublicInfo) CircularParsing(step int) (nodeList []RunFlow) { |
|||
var nodeInfo RunFlow |
|||
nodeInfo.Step = step |
|||
nodeInfo.Types = n.Types |
|||
nodeInfo.NodeKey = n.NodeNumber |
|||
nodeInfo.NodeName = n.NodeName |
|||
nodeInfo.Status = 1 |
|||
nodeInfo.FromNode = n.FromNode |
|||
if n.SendBackNode == "" { |
|||
nodeInfo.GoBackNode = "beginnode" |
|||
} else { |
|||
nodeInfo.GoBackNode = n.SendBackNode |
|||
} |
|||
nodeInfo.ExamineMode = n.ExamineMode |
|||
nodeInfo.NoHanderAction = n.NoHanderAction |
|||
//判断节点类型
|
|||
//0:发起人;1:审批;2:抄送;3:执行人;4:条件;5:路由
|
|||
switch n.Types { |
|||
case 1, 3: |
|||
// 审批人设置 1:指定成员; 2:主管;3:行政岗位; 4:发起人自选; 5:发起人自己;6:连续多级主管;7:指定前置审批为本节点设置审批人;8:表单字段;9:权限矩阵
|
|||
switch n.Settype { |
|||
case 1: //指定成员
|
|||
nodeInfo.Operator = OperatorHandle(n.NodeUserList) |
|||
case 2: //主管
|
|||
case 3: //行政岗位
|
|||
case 4: //发起人自选
|
|||
case 5: //发起人自己
|
|||
case 6: //连续多级主管
|
|||
case 7: //指定前置审批为本节点设置审批人
|
|||
case 8: //表单字段
|
|||
case 9: //权限矩阵
|
|||
default: |
|||
} |
|||
|
|||
nodeList = append(nodeList, nodeInfo) |
|||
if n.ChildNode != nil { |
|||
nodeList = append(nodeList, n.ChildNode.CircularParsing(step+1)...) |
|||
} |
|||
case 2: |
|||
nodeInfo.Operator = OperatorHandle(n.NodeUserList) |
|||
nodeList = append(nodeList, nodeInfo) |
|||
if n.ChildNode != nil { |
|||
nodeList = append(nodeList, n.ChildNode.CircularParsing(step+1)...) |
|||
} |
|||
case 4: |
|||
case 5: |
|||
default: |
|||
} |
|||
return |
|||
} |
|||
|
|||
/* |
|||
* |
|||
@ 作者: 秦东 |
|||
@ 时间: 2023-11-01 16:16:33 |
|||
@ 功能: 处理操作人 |
|||
@ 参数 |
|||
|
|||
#userList 节点处理人 |
|||
|
|||
@ 返回值 |
|||
|
|||
#userAry 人员列表信息 |
|||
|
|||
@ 方法原型 |
|||
|
|||
# |
|||
*/ |
|||
func OperatorHandle(userList []NodeUserListInfo) (userAry []OperatorList) { |
|||
if len(userList) > 0 { |
|||
var userIdAry []int64 |
|||
for _, v := range userList { |
|||
switch v.Types { //1:人员;2:角色;3:行政组织
|
|||
case 1: |
|||
myKey, myErr := strconv.ParseInt(v.TargetId, 10, 64) |
|||
if myErr == nil { |
|||
userIdAry = append(userIdAry, myKey) |
|||
} |
|||
case 2: //角色
|
|||
var usIdList []int64 |
|||
overall.CONSTANT_DB_HR.Model(&modelshr.PersonArchives{}).Select("`key`").Where("FIND_IN_SET(?,`role`)", v.TargetId).Find(&usIdList) |
|||
if len(usIdList) > 0 { |
|||
userIdAry = append(userIdAry, usIdList...) |
|||
} |
|||
case 3: //行政组织
|
|||
myKey, myErr := strconv.ParseInt(v.TargetId, 10, 64) |
|||
if myErr == nil { |
|||
var sunOrg publicmethod.GetOrgAllParent |
|||
sunOrg.GetOrgSonAllId(myKey) |
|||
sunOrg.Id = append(sunOrg.Id, myKey) |
|||
var usIdList []int64 |
|||
overall.CONSTANT_DB_HR.Model(&modelshr.PersonArchives{}).Select("`key`").Where("`admin_org` IN ?", sunOrg.Id).Find(&usIdList) |
|||
if len(usIdList) > 0 { |
|||
userIdAry = append(userIdAry, usIdList...) |
|||
} |
|||
} |
|||
|
|||
default: |
|||
} |
|||
} |
|||
var userContMap []modelshr.PersonArchives |
|||
overall.CONSTANT_DB_HR.Model(&modelshr.PersonArchives{}).Where("`key` IN ?", userIdAry).Find(&userContMap) |
|||
for _, v := range userContMap { |
|||
var userCont OperatorList |
|||
userCont.Types = 1 //1:人员;2:角色;3:行政组织
|
|||
userCont.Name = v.Name //操作人姓名
|
|||
userCont.Number = v.Number //操作人工号
|
|||
userCont.Icon = v.Icon //操作人头像
|
|||
userCont.IconBase64 = v.IconPhoto //操作人头像
|
|||
userCont.Wechat = v.Wechat //微信Openid
|
|||
if v.WorkWechat != "" { |
|||
userCont.Wechat = v.WorkWechat //微信Openid
|
|||
} |
|||
_, companyId, _, _, _ := publicmethod.GetOrgStructurees(v.AdminOrg) |
|||
userCont.DepartmentId = companyId //分厂Id
|
|||
if companyId != 0 { |
|||
var orgCont modelshr.AdministrativeOrganization |
|||
orgCont.GetCont(map[string]interface{}{"`id`": companyId}, "`name`") |
|||
userCont.DepartmentName = orgCont.Name //分厂名称
|
|||
} |
|||
//获取岗位
|
|||
if v.Position != 0 { |
|||
var postCont modelshr.Position |
|||
postCont.GetCont(map[string]interface{}{"`id`": v.Position}, "`name`") |
|||
userCont.PostId = v.Position //职务Id
|
|||
userCont.PostName = postCont.Name //职务名称
|
|||
} |
|||
if v.TeamId != 0 { |
|||
var teamCont modelshr.TeamGroup |
|||
teamCont.GetCont(map[string]interface{}{"`id`": v.TeamId}, "`name`") |
|||
userCont.Tema = v.TeamId //班组Id
|
|||
userCont.TemaName = teamCont.Name //班组名称
|
|||
} |
|||
userAry = append(userAry, userCont) |
|||
} |
|||
} |
|||
return |
|||
} |
|||
Loading…
Reference in new issue