|
@@ -13,6 +13,7 @@ use think\Config;
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
|
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
|
|
use PhpOffice\PhpSpreadsheet\Style\Border;
|
|
use PhpOffice\PhpSpreadsheet\Style\Border;
|
|
|
|
|
+use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
use think\Db;
|
|
use think\Db;
|
|
|
use think\Log;
|
|
use think\Log;
|
|
@@ -7047,7 +7048,11 @@ class Procuremen extends Backend
|
|
|
$sheet->getRowDimension(1)->setRowHeight(28);
|
|
$sheet->getRowDimension(1)->setRowHeight(28);
|
|
|
|
|
|
|
|
$quoteLines = $this->buildMonthExportQuoteLines($detailRows, $mainBySid);
|
|
$quoteLines = $this->buildMonthExportQuoteLines($detailRows, $mainBySid);
|
|
|
- $this->appendMonthExportQuoteSheet($spreadsheet, $quoteLines, $ym);
|
|
|
|
|
|
|
+ $quoteStartRow = $lastRow + 3;
|
|
|
|
|
+ $quoteLastRow = $this->appendMonthExportQuoteBlock($sheet, $quoteLines, $ym, $quoteStartRow);
|
|
|
|
|
+ if ($quoteLastRow >= $quoteStartRow) {
|
|
|
|
|
+ $sheet->getColumnDimension('E')->setWidth(28);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
$fileBase = '协助明细_' . str_replace('-', '', $ym);
|
|
$fileBase = '协助明细_' . str_replace('-', '', $ym);
|
|
|
$filename = $fileBase . '.xlsx';
|
|
$filename = $fileBase . '.xlsx';
|
|
@@ -7191,35 +7196,39 @@ class Procuremen extends Backend
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 月度导出:在同一工作表指定行起写入供应商报价明细(含未中标)
|
|
|
|
|
+ *
|
|
|
* @param array<int, array<string, mixed>> $quoteLines
|
|
* @param array<int, array<string, mixed>> $quoteLines
|
|
|
*/
|
|
*/
|
|
|
- protected function appendMonthExportQuoteSheet(Spreadsheet $spreadsheet, array $quoteLines, string $ym): void
|
|
|
|
|
|
|
+ protected function appendMonthExportQuoteBlock(Worksheet $sheet, array $quoteLines, string $ym, int $startRow): int
|
|
|
{
|
|
{
|
|
|
- $sheet = $spreadsheet->createSheet();
|
|
|
|
|
- $sheet->setTitle('供应商报价明细');
|
|
|
|
|
$mon = (int)substr($ym, 5, 2);
|
|
$mon = (int)substr($ym, 5, 2);
|
|
|
- $sheet->mergeCells('A1:H1');
|
|
|
|
|
- $sheet->setCellValue('A1', $mon . '月供应商报价明细');
|
|
|
|
|
- $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
|
|
|
|
|
- $sheet->getStyle('A1')->getAlignment()
|
|
|
|
|
|
|
+ $titleRow = $startRow;
|
|
|
|
|
+ $headerRow = $startRow + 1;
|
|
|
|
|
+ $dataStartRow = $startRow + 2;
|
|
|
|
|
+
|
|
|
|
|
+ $sheet->mergeCells('A' . $titleRow . ':H' . $titleRow);
|
|
|
|
|
+ $sheet->setCellValue('A' . $titleRow, $mon . '月供应商报价明细');
|
|
|
|
|
+ $sheet->getStyle('A' . $titleRow)->getFont()->setBold(true)->setSize(14);
|
|
|
|
|
+ $sheet->getStyle('A' . $titleRow)->getAlignment()
|
|
|
->setHorizontal(Alignment::HORIZONTAL_CENTER)
|
|
->setHorizontal(Alignment::HORIZONTAL_CENTER)
|
|
|
->setVertical(Alignment::VERTICAL_CENTER);
|
|
->setVertical(Alignment::VERTICAL_CENTER);
|
|
|
|
|
|
|
|
$headers = ['序号', '传票号', '传票名称', '工序', '供应商', '单价', '交货期', '是否中标'];
|
|
$headers = ['序号', '传票号', '传票名称', '工序', '供应商', '单价', '交货期', '是否中标'];
|
|
|
$col = 'A';
|
|
$col = 'A';
|
|
|
foreach ($headers as $h) {
|
|
foreach ($headers as $h) {
|
|
|
- $sheet->setCellValue($col . '2', $h);
|
|
|
|
|
|
|
+ $sheet->setCellValue($col . $headerRow, $h);
|
|
|
$col++;
|
|
$col++;
|
|
|
}
|
|
}
|
|
|
- $sheet->getStyle('A2:H2')->getFont()->setBold(true);
|
|
|
|
|
- $sheet->getStyle('A2:H2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
|
|
|
|
|
|
+ $sheet->getStyle('A' . $headerRow . ':H' . $headerRow)->getFont()->setBold(true);
|
|
|
|
|
+ $sheet->getStyle('A' . $headerRow . ':H' . $headerRow)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
|
|
|
|
|
|
|
- $rowNum = 3;
|
|
|
|
|
|
|
+ $rowNum = $dataStartRow;
|
|
|
if ($quoteLines === []) {
|
|
if ($quoteLines === []) {
|
|
|
- $sheet->mergeCells('A3:H3');
|
|
|
|
|
- $sheet->setCellValue('A3', '(当月暂无供应商报价明细)');
|
|
|
|
|
- $sheet->getStyle('A3')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
|
|
|
|
- $rowNum = 4;
|
|
|
|
|
|
|
+ $sheet->mergeCells('A' . $dataStartRow . ':H' . $dataStartRow);
|
|
|
|
|
+ $sheet->setCellValue('A' . $dataStartRow, '(当月暂无供应商报价明细)');
|
|
|
|
|
+ $sheet->getStyle('A' . $dataStartRow)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
|
|
|
|
+ $rowNum = $dataStartRow + 1;
|
|
|
} else {
|
|
} else {
|
|
|
$i = 0;
|
|
$i = 0;
|
|
|
foreach ($quoteLines as $line) {
|
|
foreach ($quoteLines as $line) {
|
|
@@ -7245,8 +7254,8 @@ class Procuremen extends Backend
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$lastRow = $rowNum - 1;
|
|
$lastRow = $rowNum - 1;
|
|
|
- if ($lastRow >= 2) {
|
|
|
|
|
- $sheet->getStyle('A1:H' . $lastRow)->applyFromArray([
|
|
|
|
|
|
|
+ if ($lastRow >= $headerRow) {
|
|
|
|
|
+ $sheet->getStyle('A' . $titleRow . ':H' . $lastRow)->applyFromArray([
|
|
|
'borders' => [
|
|
'borders' => [
|
|
|
'allBorders' => [
|
|
'allBorders' => [
|
|
|
'borderStyle' => Border::BORDER_THIN,
|
|
'borderStyle' => Border::BORDER_THIN,
|
|
@@ -7254,20 +7263,14 @@ class Procuremen extends Backend
|
|
|
],
|
|
],
|
|
|
],
|
|
],
|
|
|
]);
|
|
]);
|
|
|
- $sheet->getStyle('A3:H' . $lastRow)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
|
|
|
|
|
- $sheet->getStyle('C3:C' . $lastRow)->getAlignment()->setWrapText(true)->setVertical(Alignment::VERTICAL_TOP);
|
|
|
|
|
- $sheet->getStyle('D3:D' . $lastRow)->getAlignment()->setWrapText(true)->setVertical(Alignment::VERTICAL_TOP);
|
|
|
|
|
- $sheet->getStyle('E3:E' . $lastRow)->getAlignment()->setWrapText(true)->setVertical(Alignment::VERTICAL_TOP);
|
|
|
|
|
|
|
+ $sheet->getStyle('A' . $dataStartRow . ':H' . $lastRow)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
|
|
|
|
|
+ $sheet->getStyle('C' . $dataStartRow . ':C' . $lastRow)->getAlignment()->setWrapText(true)->setVertical(Alignment::VERTICAL_TOP);
|
|
|
|
|
+ $sheet->getStyle('D' . $dataStartRow . ':D' . $lastRow)->getAlignment()->setWrapText(true)->setVertical(Alignment::VERTICAL_TOP);
|
|
|
|
|
+ $sheet->getStyle('E' . $dataStartRow . ':E' . $lastRow)->getAlignment()->setWrapText(true)->setVertical(Alignment::VERTICAL_TOP);
|
|
|
|
|
+ $sheet->getRowDimension($titleRow)->setRowHeight(28);
|
|
|
}
|
|
}
|
|
|
- $sheet->getColumnDimension('A')->setWidth(7);
|
|
|
|
|
- $sheet->getColumnDimension('B')->setWidth(16);
|
|
|
|
|
- $sheet->getColumnDimension('C')->setWidth(40);
|
|
|
|
|
- $sheet->getColumnDimension('D')->setWidth(24);
|
|
|
|
|
- $sheet->getColumnDimension('E')->setWidth(28);
|
|
|
|
|
- $sheet->getColumnDimension('F')->setWidth(12);
|
|
|
|
|
- $sheet->getColumnDimension('G')->setWidth(14);
|
|
|
|
|
- $sheet->getColumnDimension('H')->setWidth(10);
|
|
|
|
|
- $sheet->getRowDimension(1)->setRowHeight(28);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ return $lastRow;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|