`

OA 多种情况自动选人

OA 
阅读更多

业务需求(简化后)

 

报销流程

一、

1      2     3

申请人-领导-出纳

 

自动选人需求(领导,出纳都是申请表单所选的费用来源部门 例如wft_11 表里面的f44xxc字段决定

 

二、

请假申请

1       2      3

申请人-领导-人事备案

自动选人需求(领导,人事备案都是 根据发起的申请人所在部门决定 

 

三、

信控申请

1                 2        3              4             5

发文人(A部门信控部)-收文人- 收文人领导 --信控经理-- 信控助理备案

 

自动选择人规则

 

收文人领导3是根据 收文人即节点2 决定,信控经理是 根据 发文人 所在的部门决定,信控助理备案

 

5也是 根据1 决定!

 

 

以上总结来看

1、每个节点都要具备 自动选不同的角色(自动选人事专员A,信控专员B,人事经理等)

D,等)

2、每个节点都必须能选择 根据前面哪个节点 来决定 该节点 自动选人

3、每个节点都可以选择根据表单某一字段 来决定自动选人

 

第一步建立 角色对应关系, 例如 甲的领导是  C,对应的人事经理是D,等

 

例如先以请假申请为例子,建立部门领导自动选人,(同样可以新建一个出纳,人事等,根据需求创建)

 

 图片

 

 

建立规则 只要是 是授权部门内的  只要找部门经理,都是找到A A就是这些部门的部门经理

 

图片

图片

 

 

以上建立的信息

配置好相应流程,建立节点选人属性

 

图片

 

 

图片

 

 

在 流程下一步,根据转让转出条件 满足后(非本篇内容重点 此不论述)  转到目标下一步 自动填充 人员

 

核心 选人规则代码

  /$contrl_flow_id  某一节点定义,自动选人类型根据 第几步的节点

//$RUN_ID 当前流水号

//$FLOW_PRCS  是根据 前面节点选人   默认发起人 即为0 不起作用

//$table_key  表单关联的值自动选人 默认是0,既为不关联

//$form_id 表单ID

//以上 信息都从 流程跑到 当前节点 可以读取到

/*$OP_FLAG 主办标示 */

function get_user_op($contrl_flow_id,$RUN_ID,$FLOW_PRCS,$form_id,$table_key)// 函数 通过输入 申请人所在的部门ID  和后台配置权限控制的流程 也就是那个$auto_type 的值得 返回控制人用户ID和姓名数组

       {

    if ($FLOW_PRCS!='0')// 选人规则是 根据 某 一步骤 节点的主办人决定

    {

       $sql="select flow_run_prcs.user_id,`user`.dept_id from flow_run_prcs,`user` where  `user`.user_id=flow_run_prcs.user_id and flow_run_prcs.run_id='$RUN_ID' and flow_run_prcs.prcs_id='$FLOW_PRCS' AND flow_run_prcs.OP_FLAG='1' ORDER BY id DESC LIMIT  1";

        

    }

   

    if ($table_key!='0'))// 选人规则是 根据 某表单 某个字段 决定

    {

      $sql="SELECT ".$table_key." as dept_id  FROM WFT_".$form_id." where RUN_ID='$RUN_ID'";

    }

   

    if ($FLOW_PRCS!='0' || $table !='0') //取得 关联管理所在的部门

    {

     $result = mysql_query($sql);

         while($row = mysql_fetch_array($result))

         {

          $dept_id_xie = $row['dept_id'];

         }

    }

  

  // 从关联部门 取得 该部门 对应角色的 负责人                                          

       $sql="select  prcs_user from  flow_process  WHERE  FIND_IN_SET('$dept_id_xie',PRCS_DEPT) AND FLOW_ID='$contrl_flow_id' LIMIT 1";

       $result = mysql_query($sql);

       $result_row = mysql_num_rows($result);

       if($result_row>0)

       {

         while($row = mysql_fetch_array($result))

            {

             $user_op_xie=$row['prcs_user'];

             $user_op_xie=str_replace(",",'',$user_op_xie);

             }

           $sql="select user_id,user_name from `user`  where user_id='$user_op_xie' LIMIT 1";

            $result = mysql_query($sql);

           while($row = mysql_fetch_array($result))

               {

              $user_op_name_xie=$row['user_name'];

            }

          $user_op_xie=array($user_op_xie,$user_op_name_xie); //返回找到负责人

          return $user_op_xie;

       }

       else

       {

       return 0;

       }

    }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics