Необходимо сделать сравнение одной строки из двух отчетов

500 руб. за проект
22 января 2020, 19:38 • 4 отклика • 66 просмотров
Есть обработчик написанный на php. Есть таблица в которую выгружаются данные из БД. Надо прописать код который будет сравнивать определенные строки из отчета текущего периода, с отчетом предыдущего периода. Сравнение такое: Значение, указанное в строке 2.5 отчета представленного за текущий отчетный период(4ый) должно быть больше или равно значению, указанному в строке 2.5 отчета за предыдущий отчетный период. По итогу должен выдавать 0 если ошибки нет, и 1 если есть. Необходимо прописать сравнение всего одной строки.

Вот так выгружается отчет.
public function actionReportbetween()
{
$data = [];

$okud = Yii::$app->request->get('okud', 0);
$report_year = Yii::$app->request->get('report_year', date('Y'));
$time_code = Yii::$app->request->get('time_code', 0);
$values = Yii::$app->request->get('values', 0);

if (!$okud || !$report_year || !$time_code) {
return $this->redirect(['/mkk/reports-index']);
}

if ($okud != 420847 && $values) {
$values = 0;
}

//~ Yii::$app->db->createCommand("SET names cp1251")->execute();
$data = Yii::$app->db->createCommand("
SELECT id, name, inn, errors , quarter , uploadDate , nomercb , nomercb2
FROM okud0420846
")->bindValues([':okud' => $okud, ':report_year' => $report_year, ':time_code' => $time_code])->queryAll();

$file_name = date('d-m-Y-');
$file_name .= MKK::getTitle($okud, $values) . ' ';
$file_name .= self::periods[$time_code];
$file_name .= ' ' . $report_year . 'г';

if ($values) {
$csv = $this->values_0420847($data);
// header('Content-Type: text/plain');
// $out = fopen('php://output', 'w');
// foreach ($csv as $row) {
// fputcsv($out, $row, ';');
// }
// fclose($out);
// return;
} else {
$csv = [];
$csv[] = [
'Дата загрузки',
'Входящий номер отчета о деятельности за текущий отчетный период 1 (ОКУД 0420846)',
'Входящий номер отчета о деятельности за текущий отчетный период 2 (ОКУД 0420846)',
'Полное наименование члена саморегулируемой организации',
'Идентификационный номер налогоплательщика (ИНН)',
'Квартал',
'Всего'
];

$codes = self::between;

foreach ($codes as $v) {
$csv[0][] = $v;
}

foreach ($data as $k => $v) {
$a = [];
$a[0] = $v['uploadDate'];
$a[1] = 'ТР-2019-'.$v['nomercb2'];
$a[2] = 'ТР-2019-'.$v['nomercb'];
$a[3] = $v['name'];
$a[4] = (string)$v['inn'] . ' ';
$a[5] = $v['quarter'];
$errors = json_decode($v['errors']);
$z = [];
$n = 0;
if ($errors && is_array($errors)) {
foreach ($codes as $e) {
if (in_array($e, $errors)) {
$z[] = '1';
$n++;
} else {
$z[] = '0';
}
}
} else {
foreach ($codes as $e) {
$z[] = '0';
}
}
$a[6] = (string)$n;
foreach ($z as $x) {
$a[] = $x;
}
$csv[] = $a;
}
}

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $file_name . '.xlsx"');
header('Cache-Control: max-age=0');

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->fromArray($csv, NULL, 'A1');

$cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(true);
foreach ($cellIterator as $cell) {
$sheet->getColumnDimension($cell->getColumn())->setAutoSize(true);
// $sheet->getColumnDimension($cell->getColumn())->setWidth(20);
}

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

exit;
}