engineering/app/adminapi/logic/oa/FlowApproveLogic.php
2024-02-01 18:00:29 +08:00

69 lines
2.6 KiB
PHP

<?php
namespace app\adminapi\logic\oa;
use app\common\model\auth\Admin;
use app\common\model\dept\Dept;
use app\common\model\oa\Flow;
use app\common\model\oa\FlowApprove;
use app\common\logic\BaseLogic;
use app\common\model\oa\FlowRecord;
use app\common\model\oa\FlowStep;
/**
* 日常审批逻辑
* Class FlowApproveLogic
* @package app\adminapi\logic\oa
*/
class FlowApproveLogic extends BaseLogic
{
/**
* @notes 获取日常审批详情
* @param $params
* @return array
* @author likeadmin
* @date 2024/02/01 11:26
*/
public static function detail($params): array
{
$data = FlowApprove::field('id,title,flow_id,content_id,content_model,content_logic,create_user,check_status')->findOrEmpty($params['id']);
//获取审批内容信息
$content = $data['content_logic']::detail(['id'=>$data['content_id']]);
//获取创建人信息
$create_user = Admin::field('name,dept_id')->where('id',$data['create_user'])->findOrEmpty();
//获取审批流程信息
$flow = Flow::field('name,copy_uids')->where('id',$data['flow_id'])-> findOrEmpty();
//获取抄送人信息
$copy = Admin::where('id','in',$flow['copy_uids'])->column('name');
//获取审核步骤
$step = FlowStep::field('flow_step,flow_user')->where('approve_id',$data['id'])->order('sort asc')->select()->each(function($item)use($create_user){
$item['flow_step_text'] = $item->flow_step_text;
if($item['flow_step'] == 0){
$item['flow_step_text'] = $create_user['name'].'创建';
$item['flow_user'] = '';
}else if($item['flow_step'] == 1){
$item['flow_step_text'] = $item->flow_step_text;
$dept = Dept::field('leader')->where('id',$create_user['dept_id'])->findOrEmpty();
$flow_user = Admin::field('name')->where('id',$dept['leader'])->findOrEmpty();
$item['flow_user'] = $flow_user['name'];
}else{
$item['flow_step_text'] = $item->flow_step_text;
$flow_user = Admin::where('id','in',$item['flow_user'])->column('name');
$item['flow_user'] = implode(',',$flow_user);
}
})->toArray();
//获取审批记录
$record = FlowRecord::field('title,content,check_time,status')->where('approve_id',$data['id'])->select()->each(function($item){
$item['status_text'] = $item->status_text;
})->toArray();
$data['flow_name'] = $flow['name'];
$data['check_status_text'] = $data->check_status_text;
$data['create_user_name'] = $create_user['name'];
$data['copy_user'] = implode(',',$copy);
$data['content'] = $content;
$data['step'] = $step;
$data['record'] = $record;
unset($data['flow_id'],$data['content_id'],$data['content_model'],$data['content_logic']);
return $data->toArray();
}
}