perf 优化导出

This commit is contained in:
ganzizi 2023-04-21 11:50:51 +08:00
parent 16d1591675
commit d42fcca81f

View File

@ -747,13 +747,14 @@ class WorkflowController extends AbstractController
// //
$nickname = Base::filterEmoji($val['start_user_name']); $nickname = Base::filterEmoji($val['start_user_name']);
$participant = $this->getUserProcessParticipantById($val['id']); // 获取参与人 $participant = $this->getUserProcessParticipantById($val['id']); // 获取参与人
$participant = $this->handleParticipant($participant['data']); // 处理参与人返回数据 $participant = $this->handleParticipant($val, $participant['data']); // 处理参与人返回数据
// //
$job_number = ''; // 发起人工号
$department_leader = User::userid2nickname(UserDepartment::find(1, ['owner_userid'])['owner_userid']); // 部门负责人 $department_leader = User::userid2nickname(UserDepartment::find(1, ['owner_userid'])['owner_userid']); // 部门负责人
$historical_approver = $participant['historical_approver'] ?? ''; // 历史审批人 $historical_approver = $participant['historical_approver'] ?? ''; // 历史审批人
$historical_agent = $participant['historical_agent'] ?? ''; // 历史办理人 $historical_agent = ''; // 历史办理人
$approval_record = $participant['approval_record'] ?? ''; // 审批记录 $approval_record = $participant['approval_record'] ?? ''; // 审批记录
$current_handler = implode(',', User::whereIn('userid', explode(';', $val['candidate']))->pluck('nickname')->toArray()); // 当前处理人 $current_handler = !$val['is_finished'] ? implode(',', User::whereIn('userid', explode(';', $val['candidate']))->pluck('nickname')->toArray()) : ''; // 当前处理人
$approved_node = $participant['approved_node'] ?? 0; // 审批节点 $approved_node = $participant['approved_node'] ?? 0; // 审批节点
$approved_num = $participant['approved_num'] ?? 0; // 审批人数 $approved_num = $participant['approved_num'] ?? 0; // 审批人数
// 计算审批耗时 // 计算审批耗时
@ -761,9 +762,9 @@ class WorkflowController extends AbstractController
$endTime = $val['end_time'] ? Carbon::parse($val['end_time'])->timestamp : time(); $endTime = $val['end_time'] ? Carbon::parse($val['end_time'])->timestamp : time();
$approval_time = Base::timeDiff($startTime, $endTime); // 审批耗时 $approval_time = Base::timeDiff($startTime, $endTime); // 审批耗时
// 计算时长 // 计算时长
$varStartTime = Carbon::parse($val['var']['start_time'])->timestamp; $varStartTime = Carbon::parse($val['var']['start_time']);
$varEndTime = Carbon::parse($val['var']['end_time'])->timestamp; $varEndTime = Carbon::parse($val['var']['end_time']);
$duration = Base::timeDiff($varStartTime, $varEndTime); // 时长 $duration = $varEndTime->diffInHours($varStartTime);
$duration_unit = '小时'; // 时长单位 $duration_unit = '小时'; // 时长单位
$datas[] = [ $datas[] = [
$val['id'], // 申请编号 $val['id'], // 申请编号
@ -771,7 +772,7 @@ class WorkflowController extends AbstractController
$this->getStateDescription($val['state']), // 申请状态 $this->getStateDescription($val['state']), // 申请状态
$val['start_time'], // 发起时间 $val['start_time'], // 发起时间
$val['end_time'], // 完成时间 $val['end_time'], // 完成时间
$val['start_user_id'], // 发起人工号 $job_number, // 发起人工号
$val['start_user_id'], // 发起人User ID $val['start_user_id'], // 发起人User ID
$nickname, // 发起人姓名 $nickname, // 发起人姓名
$val['department'], // 发起人部门 $val['department'], // 发起人部门
@ -871,13 +872,14 @@ class WorkflowController extends AbstractController
} }
// 处理参与人返回数据 // 处理参与人返回数据
public function handleParticipant($participant) public function handleParticipant($process, $participant)
{ {
// 如果空 // 如果空
if (empty($participant)) { if (empty($participant)) {
return []; return [];
} }
$res = []; $res = [];
$historical_approver = [];
$approved_node = 0; // 审批节点 $approved_node = 0; // 审批节点
$approved_num = 0; // 审批人数 $approved_num = 0; // 审批人数
foreach ($participant as $val) { foreach ($participant as $val) {
@ -885,18 +887,23 @@ class WorkflowController extends AbstractController
if ($val['type'] == 'participant') { if ($val['type'] == 'participant') {
// 审批人累加加到;格式字符串 // 审批人累加加到;格式字符串
if ($val['step'] != 0) { if ($val['step'] != 0) {
$res['historical_approver'] .= $val['username'] . ';'; // 过滤掉空的审批意见
if ($val['comment'] == '' || in_array($val['username'], $historical_approver)) {
continue;
}
$historical_approver = array_unique(array_merge($historical_approver, explode(',', $val['username'])));
$approved_node++; $approved_node++;
$approved_num++; $approved_num++;
} }
// 审批记录用|格式字符串 // 审批记录用|格式字符串
$name = $val['username'] . '|'; $name = $val['username'] . '|';
$call = $val['step'] == 0 ? '发起审批'. '|' : '同意' . '|'; $call = $val['step'] == 0 ? '发起审批'. '|' : '同意' . '|';
$time = date('Y-m-d H:i:s', $val['time']) . '|'; $time =$val['step'] == 0 ? $process['start_time'] . '|' : '';
$comment = $val['step'] == 0 ? '' : ($val['comment'] ?? '') . '|'; $comment = $val['step'] == 0 ? '' : ($val['comment'] ?? '') . '|';
$res['approval_record'] .= $name . $call . $time . $comment; $res['approval_record'] .= $name . $call . $time . $comment;
} }
} }
$res['historical_approver'] = trim(implode(';', $historical_approver), ';');
$res['approved_node'] = $approved_node; $res['approved_node'] = $approved_node;
$res['approved_num'] = $approved_num; $res['approved_num'] = $approved_num;
$res['historical_agent'] = $res['historical_approver']; $res['historical_agent'] = $res['historical_approver'];
@ -990,7 +997,7 @@ class WorkflowController extends AbstractController
} }
// 处理流程节点返回是否有抄送人 // 处理流程节点返回是否有抄送人
public function handleProcessNode($process, $step = 0) public function handleProcessNode($process)
{ {
// 获取流程节点 // 获取流程节点
$process_node = $process['node_infos']; $process_node = $process['node_infos'];