ufutx.dma/app/Console/Commands/ImportMedicalReport.php
2026-03-04 14:42:40 +08:00

117 lines
3.5 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Facades\UploadService;
use App\Models\MedicalReport;
use App\Models\ServiceUser;
use App\Models\User;
use DB;
use Illuminate\Console\Command;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
class ImportMedicalReport extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'sync:medical_report {type}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$type = $this->argument("type");
if ($type == "import") {
$this->importReport();
} else {
$this->syncReport();
}
}
public function syncReport()
{
$user_num = 0;
$other_num = 0;
$name_arr = [];
$name_arr2 = [];
$logs = DB::table(table: "health_reports")->get();
foreach($logs as $index=>$log) {
$this->info("{$index}");
$user = User::where("name", $log->name)->whereIn("source", User::APP_USER_SOURCE)->first();
if ($user) {// 用户存在
$user_num++;
$report = MedicalReport::where("user_id", $user->id)->where("type", MedicalReport::TYPE_BEFORE)->first();
if (empty($report)) {// 没有方案前报告
MedicalReport::create([
"user_id"=>$user->id,
"type"=>MedicalReport::TYPE_BEFORE,
"content"=>$log->content,
"medical_date"=>date("Y-m-d"),
"desc"=>"技术导入数据",
"anomaly_type"=>1
]);
}
if ($report->desc != "技术导入数据") {
$name_arr2[] = $log->name;
}
} else {// 用户不存在
$other_num++;
$name_arr[] = $log->name;
}
}
$this->info("用户数量:{$user_num}");
$this->info("非用户数量:{$other_num}");
$this->info("非用户名称:".json_encode($name_arr,JSON_UNESCAPED_UNICODE));
$this->info("已填过用户名称:".json_encode($name_arr2,JSON_UNESCAPED_UNICODE));
}
public function importReport()
{
// $dir = storage_path("health");
// $sub_dirs = glob($dir . '/*');
$dir = "medical_reports/health/";
$sub_dirs = UploadService::getOssDir($dir);
foreach ($sub_dirs as $index => $sub_dir) {
$this->info("{$index}");
$arr = explode("/", $sub_dir);
$name = $arr[count($arr)-2];
if (empty($name)) dd($sub_dir);
$log = DB::table("health_reports")->where("name", $name)->first();
if ($log) continue;
$files = $sub_dirs = UploadService::getOssFile($sub_dir);
$urls = [];
if (count($files) == 0) {
$this->info($sub_dir);
dd($index);
}
foreach ($files as $file) {
$this->info($file);
if (strpos($file, ".pdf")) {
dd($index);
}
$urls[] = "https://images.health.ufutx.com/".$file;
}
DB::table(table: "health_reports")->insert(["name"=>$name, "content"=>json_encode($urls)]);
}
}
}