cqp 10 mesi fa
parent
commit
46bcf6f9fc
1 ha cambiato i file con 40 aggiunte e 35 eliminazioni
  1. 40 35
      app/Service/WorkFlowService.php

+ 40 - 35
app/Service/WorkFlowService.php

@@ -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;
         }
     }