|
|
|
@ -4,6 +4,7 @@ declare(strict_types=1); |
|
|
|
namespace app\service\school_approval; |
|
|
|
|
|
|
|
use app\model\personnel\Personnel; |
|
|
|
use app\model\personnel\PersonnelInfo; |
|
|
|
use app\model\school_approval\SchoolApprovalConfig; |
|
|
|
use app\model\school_approval\SchoolApprovalConfigNode; |
|
|
|
use app\model\school_approval\SchoolApprovalParticipants; |
|
|
|
@ -33,8 +34,8 @@ class SchoolApprovalProcessService |
|
|
|
|
|
|
|
$list = (new SchoolApprovalProcess()) |
|
|
|
->alias("a") |
|
|
|
->join(['school_personnel' => 'b'],'a.applicant_id = b.id','left') |
|
|
|
->join(['school_personnel' => 'c'],'a.current_approver_id = c.id','left') |
|
|
|
->join(['school_personnel' => 'b'], 'a.applicant_id = b.id', 'left') |
|
|
|
->join(['school_personnel' => 'c'], 'a.current_approver_id = c.id', 'left') |
|
|
|
->where($where) |
|
|
|
->field($field) |
|
|
|
->order($order) |
|
|
|
@ -59,8 +60,8 @@ class SchoolApprovalProcessService |
|
|
|
{ |
|
|
|
$info = (new SchoolApprovalProcess()) |
|
|
|
->alias("a") |
|
|
|
->join(['school_personnel' => 'b'],'a.applicant_id = b.id','left') |
|
|
|
->join(['school_personnel' => 'c'],'a.current_approver_id = c.id','left') |
|
|
|
->join(['school_personnel' => 'b'], 'a.applicant_id = b.id', 'left') |
|
|
|
->join(['school_personnel' => 'c'], 'a.current_approver_id = c.id', 'left') |
|
|
|
->with(['participants']) |
|
|
|
->where(['a.id' => $id]) |
|
|
|
->field('a.*,b.name as applicant_name,c.name as current_approver_name') |
|
|
|
@ -96,15 +97,15 @@ class SchoolApprovalProcessService |
|
|
|
|
|
|
|
// 创建审批流程 |
|
|
|
$process = [ |
|
|
|
'process_name' => $data['process_name'], |
|
|
|
'applicant_id' => $data['applicant_id'], |
|
|
|
'application_time' => date("Y-m-d H:i:s"), |
|
|
|
'process_name' => $data['process_name'], |
|
|
|
'applicant_id' => $data['applicant_id'], |
|
|
|
'application_time' => date("Y-m-d H:i:s"), |
|
|
|
'current_approver_id' => 0, // 初始时为0,后面会更新 |
|
|
|
'approval_status' => SchoolApprovalProcess::STATUS_PENDING, |
|
|
|
'remarks' => $data['remarks'] ?? '', |
|
|
|
'business_type' => $data['business_type'] ?? '', |
|
|
|
'business_id' => $data['business_id'] ?? 0, |
|
|
|
'business_data' => isset($data['business_data']) ? json_encode($data['business_data']) : '' |
|
|
|
'approval_status' => SchoolApprovalProcess::STATUS_PENDING, |
|
|
|
'remarks' => $data['remarks'] ?? '', |
|
|
|
'business_type' => $data['business_type'] ?? '', |
|
|
|
'business_id' => $data['business_id'] ?? 0, |
|
|
|
'business_data' => isset($data['business_data']) ? json_encode($data['business_data']) : '' |
|
|
|
]; |
|
|
|
|
|
|
|
$process_id = (new SchoolApprovalProcess())->insertGetId($process); |
|
|
|
@ -119,11 +120,11 @@ class SchoolApprovalProcessService |
|
|
|
|
|
|
|
foreach ($actual_approvers as $approver_id) { |
|
|
|
$participants[] = [ |
|
|
|
'process_id' => $process_id, |
|
|
|
'process_id' => $process_id, |
|
|
|
'participant_id' => $approver_id, |
|
|
|
'sequence' => $node['sequence'], |
|
|
|
'status' => SchoolApprovalParticipants::STATUS_PENDING, |
|
|
|
'sign_type' => $node['sign_type'] |
|
|
|
'sequence' => $node['sequence'], |
|
|
|
'status' => SchoolApprovalParticipants::STATUS_PENDING, |
|
|
|
'sign_type' => $node['sign_type'] |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -236,7 +237,7 @@ class SchoolApprovalProcessService |
|
|
|
(new SchoolApprovalProcess())->where(['id' => $process_id]) |
|
|
|
->update([ |
|
|
|
'approval_status' => SchoolApprovalProcess::STATUS_REJECTED, |
|
|
|
'approval_time' => time(), |
|
|
|
'approval_time' => date('Y-m-d H:i:s'), |
|
|
|
'remarks' => $remarks |
|
|
|
]); |
|
|
|
|
|
|
|
@ -271,7 +272,7 @@ class SchoolApprovalProcessService |
|
|
|
(new SchoolApprovalProcess())->where(['id' => $process_id]) |
|
|
|
->update([ |
|
|
|
'approval_status' => SchoolApprovalProcess::STATUS_APPROVED, |
|
|
|
'approval_time' => time() |
|
|
|
'approval_time' => date('Y-m-d H:i:s') |
|
|
|
]); |
|
|
|
|
|
|
|
// 处理业务逻辑 |
|
|
|
@ -327,7 +328,7 @@ class SchoolApprovalProcessService |
|
|
|
(new SchoolApprovalProcess())->where(['id' => $process_id]) |
|
|
|
->update([ |
|
|
|
'approval_status' => SchoolApprovalProcess::STATUS_REJECTED, |
|
|
|
'approval_time' => time(), |
|
|
|
'approval_time' => date('Y-m-d H:i:s'), |
|
|
|
'remarks' => '申请人撤销' |
|
|
|
]); |
|
|
|
|
|
|
|
@ -396,12 +397,33 @@ class SchoolApprovalProcessService |
|
|
|
$createData = $personnelData; |
|
|
|
$createData['status'] = 2; // 设置为已审核状态 |
|
|
|
|
|
|
|
// 创建人员记录 |
|
|
|
$result = $personnelService->addPersonnel($createData); |
|
|
|
if (!$result['code']) { |
|
|
|
throw new \Exception($result['msg']); |
|
|
|
$insert_status = (new Personnel())->where(['phone' => $createData['phone']])->order('id', 'desc')->find(); |
|
|
|
if ($insert_status) { |
|
|
|
$personnelId = $insert_status->id; |
|
|
|
//获取Personnel模型中所有字段 |
|
|
|
$fields = (new Personnel())->getFields(); |
|
|
|
// 过滤只保留字符串和整数类型的键 |
|
|
|
$fields = array_filter($fields, function($field) { |
|
|
|
return is_string($field) || is_int($field); |
|
|
|
}); |
|
|
|
$PersonnelData = array_intersect_key($createData, array_flip($fields)); |
|
|
|
(new Personnel())->where(['id' => $insert_status->id])->update($PersonnelData); |
|
|
|
$fields = (new PersonnelInfo())->getFields(); |
|
|
|
// 过滤只保留字符串和整数类型的键 |
|
|
|
$fields = array_filter($fields, function($field) { |
|
|
|
return is_string($field) || is_int($field); |
|
|
|
}); |
|
|
|
$PersonnelInfoData = array_intersect_key($createData, array_flip($fields)); |
|
|
|
(new PersonnelInfo())->where(['person_id' => $insert_status->id])->update($PersonnelInfoData); |
|
|
|
} else { |
|
|
|
// 创建人员记录 |
|
|
|
$result = $personnelService->addPersonnel($createData); |
|
|
|
if (!$result['code']) { |
|
|
|
throw new \Exception($result['msg']); |
|
|
|
} |
|
|
|
$personnelId = $result['data']['personnel_id']; |
|
|
|
} |
|
|
|
$personnelId = $result['data']['personnel_id']; |
|
|
|
|
|
|
|
|
|
|
|
// 更新流程的business_id为实际创建的人员ID |
|
|
|
(new SchoolApprovalProcess())->where(['id' => $process['id']]) |
|
|
|
|