三类工单审核提交

This commit is contained in:
2025-03-19 22:54:11 +08:00
parent cf2a2892b5
commit 05a0577d3e
9 changed files with 426 additions and 13 deletions

View File

@ -41,7 +41,7 @@ class Ticket extends Controller
$query->like(['title|content|contact_name|ticket_address|contact_phone#keyword'])
->dateBetween(['create_at'])
->equal(['status', 'type_id']);
$query->append(['imgs_arr', 'source_type_name', 'type_name', 'last_reply'])->with(['views', 'repairs', 'verifys']);
$query->append(['imgs_arr', 'source_type_name', 'type_name', 'last_reply'])->with(['views', 'repairs', 'verifys', 'view_process', 'repair_process', 'verify_process']);
});
}
@ -283,6 +283,219 @@ class Ticket extends Controller
$this->success('创建成功!');
}
public function view_process_create()
{
$data = $this->_vali([
'ticket_id.require'=>'请指定工单ID!',
]);
$process = ApprovalProcess::where('type', '=', 'HSSH')->order('id', 'asc')->findOrEmpty();
if ($process->isEmpty()) {
$this->error('未找到可用的审核流程');
}
$adminInfo = $this->request->session('user');
$ticket = TicketTicket::query()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->where('id', '=', $data['ticket_id'])->findOrEmpty();
if ($ticket->isEmpty()) {
$this->error('未找到工单信息');
}
if ($this->request->isPost()) {
$instance_data = $this->_vali([
'title.default'=>'核验工单审核',
'content.default'=>'',
]);
ApprovalInstance::mk()->startTrans();
try {
$instance = ApprovalInstance::create([
'process_id' => $process->id,
'oid' => $ticket->id,
'title' => $instance_data['title'],
'content' => $instance_data['content'],
'status' => 0,
'current_step' => 0,
'create_time' => date('Y-m-d H:i:s'),
'create_by' => $adminInfo['id'],
'create_name' => $adminInfo['username'],
]);
foreach ($process->steps as $index => $step) {
$approver_id = $step['approver_id'] ?? 0;
if ($index == 0) {
if ($step['approver_type'] == 3) {
$approve_data = $this->_vali([
'approver_id.require' => '请指定审核人!',
]);
$approver_id = $approve_data['approver_id'];
}
}
ApprovalStep::create([
'instance_id' => $instance->id,
'step_number' => $index,
'approver_type' => $step['approver_type'],
'approver_id' => $approver_id,
'status' => 0,
]);
}
$ticket->view_pid = $instance->id;
$ticket->save();
ApprovalInstance::mk()->commit();
} catch (HttpResponseException $e) {
ApprovalInstance::mk()->rollback();
throw $e;
} catch (\Exception $e) {
ApprovalInstance::mk()->rollback();
$this->error("创建失败");
}
$this->success('创建成功!');
} else {
$this->vo = $ticket;
$this->process = $process;
$this->step_index = -1;
$this->current_step = $process->steps[0];
$this->users = SystemUser::query()->field('id,username,nickname')->select();
$this->fetch();
}
}
public function repair_process_create()
{
$data = $this->_vali([
'ticket_id.require'=>'请指定工单ID!',
]);
$process = ApprovalProcess::where('type', '=', 'WXSH')->order('id', 'asc')->findOrEmpty();
if ($process->isEmpty()) {
$this->error('未找到可用的审核流程');
}
$adminInfo = $this->request->session('user');
$ticket = TicketTicket::query()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->where('id', '=', $data['ticket_id'])->findOrEmpty();
if ($ticket->isEmpty()) {
$this->error('未找到工单信息');
}
if ($this->request->isPost()) {
$instance_data = $this->_vali([
'title.default'=>'核验工单审核',
'content.default'=>'',
]);
ApprovalInstance::mk()->startTrans();
try {
$instance = ApprovalInstance::create([
'process_id' => $process->id,
'oid' => $ticket->id,
'title' => $instance_data['title'],
'content' => $instance_data['content'],
'status' => 0,
'current_step' => 0,
'create_time' => date('Y-m-d H:i:s'),
'create_by' => $adminInfo['id'],
'create_name' => $adminInfo['username'],
]);
foreach ($process->steps as $index => $step) {
$approver_id = $step['approver_id'] ?? 0;
if ($index == 0) {
if ($step['approver_type'] == 3) {
$approve_data = $this->_vali([
'approver_id.require' => '请指定审核人!',
]);
$approver_id = $approve_data['approver_id'];
}
}
ApprovalStep::create([
'instance_id' => $instance->id,
'step_number' => $index,
'approver_type' => $step['approver_type'],
'approver_id' => $approver_id,
'status' => 0,
]);
}
$ticket->view_pid = $instance->id;
$ticket->save();
ApprovalInstance::mk()->commit();
} catch (HttpResponseException $e) {
ApprovalInstance::mk()->rollback();
throw $e;
} catch (\Exception $e) {
ApprovalInstance::mk()->rollback();
$this->error("创建失败");
}
$this->success('创建成功!');
} else {
$this->vo = $ticket;
$this->process = $process;
$this->step_index = -1;
$this->current_step = $process->steps[0];
$this->users = SystemUser::query()->field('id,username,nickname')->select();
$this->fetch();
}
}
public function verify_process_create()
{
$data = $this->_vali([
'ticket_id.require'=>'请指定工单ID!',
]);
$process = ApprovalProcess::where('type', '=', 'YSSH')->order('id', 'asc')->findOrEmpty();
if ($process->isEmpty()) {
$this->error('未找到可用的审核流程');
}
$adminInfo = $this->request->session('user');
$ticket = TicketTicket::query()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->where('id', '=', $data['ticket_id'])->findOrEmpty();
if ($ticket->isEmpty()) {
$this->error('未找到工单信息');
}
if ($this->request->isPost()) {
$instance_data = $this->_vali([
'title.default'=>'核验工单审核',
'content.default'=>'',
]);
ApprovalInstance::mk()->startTrans();
try {
$instance = ApprovalInstance::create([
'process_id' => $process->id,
'oid' => $ticket->id,
'title' => $instance_data['title'],
'content' => $instance_data['content'],
'status' => 0,
'current_step' => 0,
'create_time' => date('Y-m-d H:i:s'),
'create_by' => $adminInfo['id'],
'create_name' => $adminInfo['username'],
]);
foreach ($process->steps as $index => $step) {
$approver_id = $step['approver_id'] ?? 0;
if ($index == 0) {
if ($step['approver_type'] == 3) {
$approve_data = $this->_vali([
'approver_id.require' => '请指定审核人!',
]);
$approver_id = $approve_data['approver_id'];
}
}
ApprovalStep::create([
'instance_id' => $instance->id,
'step_number' => $index,
'approver_type' => $step['approver_type'],
'approver_id' => $approver_id,
'status' => 0,
]);
}
$ticket->view_pid = $instance->id;
$ticket->save();
ApprovalInstance::mk()->commit();
} catch (HttpResponseException $e) {
ApprovalInstance::mk()->rollback();
throw $e;
} catch (\Exception $e) {
ApprovalInstance::mk()->rollback();
$this->error("创建失败");
}
$this->success('创建成功!');
} else {
$this->vo = $ticket;
$this->process = $process;
$this->step_index = -1;
$this->current_step = $process->steps[0];
$this->users = SystemUser::query()->field('id,username,nickname')->select();
$this->fetch();
}
}
/**
* 进行审核
* @return void