You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

124 lines
3.7 KiB

<?php
/**
* User: u73376
* Date: 2018/8/23
* Time: 14:18
*/
class AssignerStringParser
{
/**
* 第一码:数字:员工号;
* 字母D:部门所有员工
* 字母L:部门的领导
* @param $assignerString
* @param string $format
* @param string $delimiter
* @return string 员工号-姓名, 员工号-姓名, 员工号-姓名......
*/
public static function process($assignerString, $format = "employee_no-name position", $delimiter = ",")
{
$_firstCode = substr($assignerString, 0, 1);
if (is_numeric($_firstCode)) {
return self::processCodeN($assignerString, $format, $delimiter);
}
$function = "processCode" . $_firstCode;
if (!method_exists('AssignerStringParser', $function)) {
echo self::processUndefined($function);
exit();
}
return self::$function($assignerString, $format, $delimiter);
}
/**
* 处理第一码为D :获取部门员工
* @param $assignerString
* @param string $format
* @param string $delimiter
* @return string
*/
public static function processCodeD($assignerString, $format = "employee_no-name", $delimiter = ",")
{
$depart = substr($assignerString, 1);
$employees = Depart::getEmployee($depart);
$str_next_user = "";
foreach ($employees as $employee) {
$tmp_str = Employee::get_employee($employee, $format);
$str_next_user .= $tmp_str . $delimiter;
}
return $str_next_user;
}
/**
* 处理第一码为L :获取部门领导
* @param $assignerString
* @param string $format
* @param string $delimiter
* @return string
*/
public static function processCodeL($assignerString, $format = "employee_no-name", $delimiter = ",")
{
$leader = Depart::leader(substr($assignerString, 1));
$tmp_str = Employee::get_employee($leader, $format);
return $tmp_str . $delimiter;
}
/**
*处理第一码为数字 N: 获取 员工号-姓名
* @param $assignerString
* @param string $format
* @param string $delimiter
* @return string
*/
public static function processCodeN($assignerString, $format = "employee_no-name", $delimiter = ",")
{
return Employee::get_employee($assignerString, $format) . $delimiter;
}
/**
*处理第一码为 P: 获取 员工号-姓名
* @param $assignerString
* @param string $format
* @param string $delimiter
* @return string
*/
public static function processCodeP($assignerString, $format = "employee_no-name", $delimiter = ",")
{
return Employee::get_employee($assignerString, $format) . $delimiter;
}
/**
* 处理第一码为E,从节点里的已签核人员选择
* @param $assignerString
* @param string $format
* @param string $delimiter
* @return string
*/
public static function processCodeC($assignerString, $format = "employee_no-name", $delimiter = ",")
{
$flowContext = unserialize($_SESSION['flowContext']);
$code = substr($assignerString, 1);
$records = Assign::get_records($flowContext->getFormKey(), $as_array = true, $code);
$str_next_user = "";
foreach ($records as $record) {
$tmp_str = Employee::get_employee($record['assigner'], $format);
$str_next_user .= $tmp_str . $delimiter;
}
return $str_next_user;
}
/**
* 处理未定义的情况
* @return string
*/
public static function processUndefined($function)
{
return "调用了不存在的处理函数:" . $function;
}
}