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

108 lines
4.6 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\Controller;
use App\Services\Admin\YeWu\HealthCheckupService;
use App\Services\OrgService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
class CheckUpController extends Controller
{
//给第三的接口,创建体检记录
public function CreateCheckupRecord(Request $request){
// 验证请求数据
$validator = Validator::make($request->all(), [
'checkup_info.type' => 'required|integer',
'checkup_info.free_type' => 'required|integer',
'checkup_info.name' => 'required|string',
'checkup_info.sex' => 'required|integer',
'checkup_info.tel' => 'required|string',
'checkup_info.id_card_num' => 'required|string',
'checkup_info.doc_type_id' => 'required|integer',
'checkup_info.doc_type_name' => 'required|string',
'checkup_info.org_sn' => 'required|string',
'checkup_info.tijian_num' => 'required|string',
'checkup_info.tijian_time' => 'required|date',
'checkup_info.report_content' => 'required|array',
'checkup_info.report_content.*.item_name' => 'required|string',
'checkup_info.report_content.*.item_result' => 'required|string',
'checkup_info.report_content.*.item_range' => 'required|array',
'checkup_info.report_content.*.flag' => 'required|string',
'checkup_info.report_content.*.item_unit' => 'required|string',
'checkup_info.report_content.*.check_time' => 'required|date',
'checkup_info.result_status' => 'required|integer',
'checkup_info.shenhe_time' => 'required|date',
'checkup_info.result_content' => 'required|string',
]);
if ($validator->fails()) {
return \Yz::echoError1( $validator->errors());
}
$checkupInfo = $request->input('checkup_info');
$checkupInfo['institution_sn']=$checkupInfo['org_sn'];
$checkupInfo['industry_type']=$checkupInfo['doc_type_name'];
$checkupInfo['register_time']=$checkupInfo['tijian_time'];
$checkupInfo['issue_time']=null;
$checkupInfo['expire_time']=null;
$s=app()->make(HealthCheckupService::class);
return $s->CreateRecord($checkupInfo);
}
//给第三的接口上传体检结果pdf文档
public function UploadPdf(Request $request){
// 验证请求数据
$validator = Validator::make($request->all(), [
'tijian_num' => 'required|string',
'org_sn' => 'required|string',
'files' => 'required|array',
'files.*' => 'required|file|mimes:pdf|max:2048',// 每个文件必须是PDF格式且大小不超过2MB
]);
if ($validator->fails()) {
return \Yz::echoError1( $validator->errors());
}
//查询体检号是否存在
$service=new OrgService();
$res=$service->GetOrgInfo($request->input('org_sn'));
if($res['status']!==true){
return \Yz::echoError1($res['msg']);
}
//查询体检号是否存在
$checkupInfo=DB::table('examination_records')
->where([
'tijian_num'=>$request->input('tijian_num'),
'institution_id'=>$res['data']->id,
])->orderBy('id','desc')->first();
if(!$checkupInfo){
return \Yz::echoError1("体检号不存在");
}
if ($request->hasFile('files') && $request->file('files')) {
$filesUrls=[];
foreach ($request->file('files') as $file) {
// 检查文件是否有效
if ($file->isValid()) {
// 定义存储路径
$path = 'uploads/pdfs/' . date('Ymd'); // 根据当前日期创建子目录
// 保存文件到磁盘
$filename = uniqid() . '_' . $file->getClientOriginalName();
$file->storeAs($path, $filename, 'public'); // 使用 'public' 磁盘
$filesUrls[]=env('APP_URL').'/storage/'.$path.'/'.$filename;
}
}
$u=DB::table('examination_records')->where('id',$checkupInfo->id)->update(['pdfs'=>json_encode($filesUrls,JSON_UNESCAPED_UNICODE)]);
if(!$u){
return \Yz::echoError1("上传文件失败");
}
return \Yz::Return(true,'上传成功',[]);
}
return \Yz::echoError1("上传文件失败");
}
}