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