|
@@ -298,26 +298,27 @@ class WorkFlowService extends Service
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- // 0 发起人 1审批 2抄送 3条件 4路由
|
|
|
function settleWorkFlowData($data, $array){
|
|
|
$return = $return_detail = $map = [];
|
|
|
if(empty($array)) return [true, [$return, $return_detail]];
|
|
|
|
|
|
foreach ($array as $key => $value){
|
|
|
$tmp = [
|
|
|
- 'm_id' => $value['id'],
|
|
|
- 'type' => $value['type'],
|
|
|
- 'data_id' => 0,
|
|
|
- 'settype' => $value['settype'] ?? 0,
|
|
|
- 'selectMode' => $value['selectMode'] ?? 0,
|
|
|
- 'selectRange' => $value['selectRange'] ?? 0,
|
|
|
- 'examineMode' => $value['examineMode'] ?? 0,
|
|
|
- 'priorityLevel' => $value['priorityLevel'] ?? 0,
|
|
|
+ 'm_id' => $value['id'],//节点id 后端生成
|
|
|
+ 'type' => $value['type'],// 0 发起人 1审批 2抄送 3条件 4路由
|
|
|
+ 'p_id' => 0,//人员id
|
|
|
+ 'd_id' => 0,//部门id
|
|
|
+ 'settype' => $value['settype'] ?? 0,// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管
|
|
|
+ 'selectMode' => $value['selectMode'] ?? 0,//审批人数 1选一个人 2选多个人
|
|
|
+ 'selectRange' => $value['selectRange'] ?? 0,//选择范围 1.全公司 2指定成员 2指定角色
|
|
|
+ 'examineMode' => $value['examineMode'] ?? 0,//多人审批时采用的审批方式 1依次审批 2会签
|
|
|
+ 'priorityLevel' => $value['priorityLevel'] ?? 0,//优先级
|
|
|
];
|
|
|
$tmp_return = $return;
|
|
|
if($value['type'] == 0){
|
|
|
//发起人
|
|
|
- $this->settleTypeZero($tmp, $data, $return);
|
|
|
+ list($status, $msg) = $this->settleTypeZero($tmp, $data, $return);
|
|
|
+ if(! $status) return [false, $msg];
|
|
|
}elseif ($value['type'] == 1){
|
|
|
//审批人
|
|
|
list($status, $msg) = $this->settleTypeOne($tmp, $data, $value, $return);
|
|
@@ -332,7 +333,7 @@ class WorkFlowService extends Service
|
|
|
//路由
|
|
|
$this->settleTypeFour($tmp, $value, $return);
|
|
|
}else{
|
|
|
- return [false, '不存在的TYPE类型'];
|
|
|
+ return [false, '非法参数:节点TYPE'];
|
|
|
}
|
|
|
|
|
|
$differences = array_diff_key($return, $tmp_return);
|
|
@@ -350,11 +351,21 @@ class WorkFlowService extends Service
|
|
|
$return[] = $tmp;
|
|
|
}else{
|
|
|
foreach ($data['flowPermission'] as $n){
|
|
|
- //发起人为指定的一些人
|
|
|
- $tmp['data_id'] = $n['targetId'];
|
|
|
- $return[] = $tmp;
|
|
|
+ $t = $tmp;
|
|
|
+ //发起人为指定的人或部门
|
|
|
+ if($n['type'] == 1){
|
|
|
+ $t['p_id'] = $n['targetId'];
|
|
|
+ }elseif($n['type'] == 3){
|
|
|
+ $t['d_id'] = $n['targetId'];
|
|
|
+ }else{
|
|
|
+ return [false, '非法参数:发起人'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $return[] = $t;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
}
|
|
|
|
|
|
//审批人
|
|
@@ -370,9 +381,10 @@ class WorkFlowService extends Service
|
|
|
if($value['settype'] == 1){
|
|
|
|
|
|
foreach ($value['nodeUserList'] as $n){
|
|
|
- //发起人为指定的一些人
|
|
|
- $tmp['data_id'] = $n['targetId'];
|
|
|
- $return[] = $tmp;
|
|
|
+ $t = $tmp;
|
|
|
+ //指定成员
|
|
|
+ $t['p_id'] = $n['targetId'];
|
|
|
+ $return[] = $t;
|
|
|
}
|
|
|
}elseif ($value['settype'] == 2){
|
|
|
|
|
@@ -385,9 +397,10 @@ class WorkFlowService extends Service
|
|
|
$return[] = $tmp;
|
|
|
}elseif ($value['selectRange'] == 2){
|
|
|
foreach ($value['nodeUserList'] as $n){
|
|
|
+ $t = $tmp;
|
|
|
//指定人里的一个人
|
|
|
- $tmp['data_id'] = $n['targetId'];
|
|
|
- $return[] = $tmp;
|
|
|
+ $t['p_id'] = $n['targetId'];
|
|
|
+ $return[] = $t;
|
|
|
}
|
|
|
}else{
|
|
|
return [false, '非法参数:选择范围'];
|
|
@@ -400,27 +413,19 @@ class WorkFlowService extends Service
|
|
|
}elseif ($value['selectRange'] == 2){
|
|
|
//指定人里的所有人
|
|
|
foreach ($value['nodeUserList'] as $n){
|
|
|
- $tmp['data_id'] = $n['targetId'];
|
|
|
- $return[] = $tmp;
|
|
|
+ $t = $tmp;
|
|
|
+ $t['p_id'] = $n['targetId'];
|
|
|
+ $return[] = $t;
|
|
|
}
|
|
|
}else{
|
|
|
return [false, '非法参数:选择范围'];
|
|
|
}
|
|
|
}
|
|
|
}elseif ($value['settype'] == 5){
|
|
|
-
|
|
|
- if(empty($data['flowPermission'])) {
|
|
|
- //为空 则是 审核人为 公司里的随意一个人
|
|
|
- $tmp['selectMode'] = 1;
|
|
|
- $tmp['selectRange'] = 1;
|
|
|
- $return[] = $tmp;
|
|
|
- }else{
|
|
|
- foreach ($data['flowPermission'] as $n){
|
|
|
- //审核人 发起人为指定的一些人
|
|
|
- $tmp['data_id'] = $n['targetId'];
|
|
|
- $return[] = $tmp;
|
|
|
- }
|
|
|
- }
|
|
|
+ //发起人则是触发工作流的那个人
|
|
|
+ $tmp['selectMode'] = 1;
|
|
|
+ $tmp['selectRange'] = 2;
|
|
|
+ $return[] = $tmp;
|
|
|
}elseif ($value['settype'] == 7){
|
|
|
|
|
|
return [false, '暂不支持连续多级主管设置'];
|
|
@@ -436,7 +441,7 @@ class WorkFlowService extends Service
|
|
|
function settleTypeTwo($tmp, $value, &$return){
|
|
|
foreach ($value['nodeUserList'] as $n){
|
|
|
//抄送人为指定的一些人
|
|
|
- $tmp['data_id'] = $n['targetId'];
|
|
|
+ $tmp['p_id'] = $n['targetId'];
|
|
|
$return[] = $tmp;
|
|
|
}
|
|
|
}
|