getAssigner(); $assignEmps = array(); $arr_a = explode('|', $strAssign); foreach ($arr_a as $key => $value) { if (empty($value)) { continue; } $arr_b = explode(':', $value); $val = explode('-', $arr_b[0]); $arr_c = explode(',', $arr_b[1]); $str_next_user = ""; foreach ($arr_c as $key => $value) { if (empty($value)) { continue; } if ($value == '00000') { $str_next_user .= '00000' . '-' . "00000,"; } else { $str_next_user .= AssignerStringParser::process($value); } } array_push($assignEmps, array( $val[0], //assign_status $str_next_user )); } return $assignEmps; } /** * 检查是否满足流转下一关条件 * @param $assignClass * @param $leadCode * @return bool */ function checkTrust($assignClass, $leadCode) { $_flag = false; $flowContext = unserialize($_SESSION['flowContext']); $assignStatus = $flowContext->getAssignStatus(); #如果签核节点assign_status 在定义的同层签核节点当中则不可签回 if (in_array($assignStatus, AssignStatus::$same_level_status)) { return $_flag; } switch ($assignClass) { case 'A': //无需审核 $_flag = true; break; case 'B': //审核至科长 $_flag = (in_array($leadCode, array('50', '20', '19', '18', '17', '16', '12', '10','15')) ? true : false); break; case 'C': //审核至经理 $_flag = in_array($leadCode, array('20', '19', '18', '17', '16', '12', '10','15')) ? true : false; break; case 'D': //审核至 协理/厂长/总监 $_flag = in_array($leadCode, array('19', '18', '17', '16', '12', '10','15')) ? true : false; break; case 'E': //审核至副总 $_flag = in_array($leadCode, array('12', '10')) ? true : false; break; case 'F': //审核至总经理 $_flag = substr($leadCode, 0, 2) == '10' ? true : false; break; case 'X': $method = MethodLoader::getInstanceByMethodString(strip_tags($this->getAssignClassMethod())); $_assignClass = $method->invokeMethod($this->getFlow(), $this->getFormData()); $_flag = $this->checkTrust($_assignClass, $leadCode); break; default: $_flag = false; break; } return $_flag; } /** * 获取附加的签核人员 * @param string $userId * @return array */ public function getDepartmentalAssignerList($userId) { $leader = Employee::leader($userId); $nextAssignerStr = Employee::get_employee($leader, $format = "employee_no-name"); $nextAssigner = array(0 => array(0 => "F6", 1 => $nextAssignerStr)); $subordinates = Employee::subordinates($userId); if (count($subordinates) > 0) { $nextAssignerStr = ""; foreach ($subordinates as $empl) { $nextAssignerStr .= Employee::get_employee($empl, $format = "employee_no-name") . ','; } array_push($nextAssigner, array(0 => 'FH', 1 => $nextAssignerStr)); } return $nextAssigner; } }