vd/tests/ExportTest.php
2019-01-15 09:15:34 +08:00

86 lines
2.7 KiB
PHP

<?php
use Illuminate\Support\Facades\DB;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
require_once realpath(dirname(__FILE__) . '/TestCase.php');
set_time_limit(-1);
ini_set('memory_limit', '4096m');
$nos = require __DIR__ . '/no.php';
$group = array_chunk($nos, '1000');
$nos = DB::connection('vd_old')->table('ckb_custom')
->select('custom_no')
->whereRaw('custom_no NOT IN (SELECT custom_no FROM ckb_custom_handle_log WHERE type = 13)')
->get()->pluck('custom_no')->toArray();
$companies = DB::connection('vd_old')->table('ckb_company')->get()->pluck('unicom_name', 'id')->toArray();
$packages = DB::connection('vd_old')->table('ckb_package')->get()->pluck('name', 'package_sn')->toArray();
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$startCell = 'A1';
$sheet->fromArray([
'SIM',
'IMSI',
'ICCID',
'客户编号',
'企业ID',
'企业名称',
'套餐编号',
'套餐名称',
'服务开始时间',
'服务结束时间',
'任务编号',
'创建时间',
]);
foreach ($group as $nos) {
echo '.';
$customs = DB::connection('vd_old')->table('ckb_custom')->select(['card_number', 'imsi', 'iccid', 'custom_no', 'company', 'create_time', 'task_number'])
->whereIn('custom_no', $nos)->get()->keyBy('custom_no');
$userPackages = DB::connection('vd_old')->table('ckb_user_package')->select(['custom_no','package_sn','service_start_time','service_end_time'])
->whereIn('custom_no', $nos)->get()->keyBy('custom_no');
$array = [];
$startCell = 'A' . ($sheet->getHighestRow() + 1);
foreach ($nos as $no) {
$custom = (array)$customs[$no];
$userPackage = (array) $userPackages[$no];
$item = array_merge($custom, $userPackage);
$item = [
'sim' => ' ' . $item['card_number'],
'imsi' => ' ' . $item['imsi'],
'iccid' => ' ' . $item['iccid'],
'custom_no' => $item['custom_no'],
'company' => $item['company'],
'company_name' => $companies[$item['company']],
'package' => $userPackage['package_sn'],
'package_name' => $packages[$userPackage['package_sn']],
'service_start_time' => date('Y-m-d H:i:s', $userPackage['service_start_time']),
'service_end_time' => date('Y-m-d H:i:s', $userPackage['service_end_time']),
'task_number' => $item['task_number'],
'create_time' => date('Y-m-d H:i:s', $item['create_time']),
];
$array[] = $item;
}
$sheet->fromArray($array, null, $startCell);
}
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save(__DIR__ . '/没有销售记录的卡.xlsx');