> /dev/null 2>&1 */ class ExpressAutoUpdate extends Command { protected function configure() { $this->setName('express:auto-update') ->setDescription('自动更新物流追踪信息'); } protected function execute(Input $input, Output $output) { $output->writeln('开始自动更新物流信息...'); $startTime = microtime(true); try { $result = ExpressTrackingService::autoUpdateBatch(500); $recon = ExpressTrackingService::reconcileAssistantReleaseForShippedPrescriptionOrders(200); $duration = round(microtime(true) - $startTime, 2); $output->writeln("更新完成!"); $output->writeln("总数: {$result['total']}"); $output->writeln("成功: {$result['success']}"); $output->writeln("失败: {$result['failed']}"); $output->writeln("医助已移除(物流任务+指派日志): " . (int) ($result['assistant_cleared'] ?? 0)); $output->writeln("医助已移除(履约已发货/签收核对): " . (int) ($recon['cleared'] ?? 0) . " (扫描 " . (int) ($recon['scanned'] ?? 0) . " 单)"); $lines = array_merge($result['assistant_lines'] ?? [], $recon['lines'] ?? []); if ($lines === []) { $output->writeln('医助明细: (无)'); } else { $output->writeln('医助明细:'); foreach ($lines as $line) { $output->writeln(' ' . $line); } } $output->writeln("耗时: {$duration}秒"); return 0; } catch (\Throwable $e) { $output->error("更新失败: " . $e->getMessage()); return 1; } } }