shish 2 gadi atpakaļ
vecāks
revīzija
8fdebd4197

+ 7 - 6
app-ghs/controllers/GhsController.php

@@ -176,12 +176,13 @@ class GhsController extends BaseController
     //下载供货商 ssh 20240506
     public function actionDownloadGhs()
     {
-//        $level = Yii::$app->request->get('level', 0);
-//        $respond = ProductService::generatePriceTable($this->sjId, $level, $this->mainId);
-//        $file = $respond['file'] ?? '';
-//        $shortFile = $respond['shortFile'] ?? '';
-//        $fileUrl = Yii::$app->params['ghsHost'] . $file;
-//        util::success(['file' => $fileUrl, 'shortFile' => $shortFile]);
+        //$get = Yii::$app->request->get();
+        $mainId = $this->mainId;
+        $respond = GhsClass::getGhsFile($mainId);
+        $file = $respond['file'] ?? '';
+        $shortFile = $respond['shortFile'] ?? '';
+        $fileUrl = Yii::$app->params['ghsHost'] . $file;
+        util::success(['file' => $fileUrl, 'shortFile' => $shortFile]);
     }
 
 }

+ 83 - 0
biz-ghs/ghs/classes/GhsClass.php

@@ -6,6 +6,7 @@ use bizGhs\base\classes\BaseClass;
 use bizGhs\order\classes\PurchaseOrderClass;
 use bizGhs\shop\classes\ShopClass;
 use common\components\imgUtil;
+use Yii;
 
 class GhsClass extends BaseClass
 {
@@ -59,4 +60,86 @@ class GhsClass extends BaseClass
         return $list;
     }
 
+    public static function getGhsFile($mainId)
+    {
+        $ghsList = GhsClass::getAllByCondition(['ownMainId' => $mainId], null, '*');
+        if (!empty($ghsList)) {
+            foreach ($ghsList as $key => $ghs) {
+                $count = PurchaseOrderClass::getCount(['ghsId' => $ghs['id'], 'debt' => PurchaseOrderClass::DEBT_YES]);
+                $debtAmount = PurchaseOrderClass::sum(['ghsId' => $ghs['id'], 'debt' => PurchaseOrderClass::DEBT_YES], 'actPrice');
+                $ghsList[$key]['debtNum'] = $count;
+                $ghsList[$key]['debtAmount'] = $debtAmount;
+            }
+        }
+print_r($ghsList);die;
+
+        $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
+        require_once($phpExcelFile . 'Classes/PHPExcel.php');
+
+        $objPHPExcel = new \PHPExcel();
+
+        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
+            ->setLastModifiedBy("Maarten Balliauw")
+            ->setTitle("Office 2007 XLSX Document")
+            ->setSubject("Office 2007 XLSX Document")
+            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
+            ->setKeywords("office 2007 openxml php")
+            ->setCategory("file");
+
+        //$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $levelName . "客户");
+        //$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " 编号 " . $level);
+        $ghsTitle = '供货商';
+        $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
+
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
+
+        $i = 1;
+        $letter = [1 => ['A', 'B'], 2 => ['C', 'D'], 3 => ['E', 'F'], 4 => ['G', 'H'], 5 => ['I', 'J'], 6 => ['K', 'L'], 7 => ['M', 'N'],
+            8 => ['O', 'P'], 9 => ['Q', 'R'], 10 => ['S', 'T'], 11 => ['U', 'V']];
+        //最大行
+        $max = 50;
+        foreach ($formatData as $key => $product) {
+            $currentPage = ceil($i / $max);
+            $x = $i % $max == 0 ? $max : $i % $max;
+            $before = $letter[$currentPage][0] ?? 'A';
+            $after = $letter[$currentPage][1] ?? 'B';
+
+            //行高14
+            $objPHPExcel->getActiveSheet()->getRowDimension($x)->setRowHeight(15);
+
+            //设置表格宽度
+            $objPHPExcel->getActiveSheet()->getColumnDimension($before)->setWidth(11);
+            $objPHPExcel->getActiveSheet()->getColumnDimension($after)->setWidth(5);
+
+
+            $objPHPExcel->getActiveSheet()->setCellValue($before . $x, $product['name'])->setCellValue($after . $x, $product['price']);
+            //字体大小
+            $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getFont()->setSize(9);
+            //垂直居中
+            $objPHPExcel->getActiveSheet()->getStyle($before . $x)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+
+
+            $i++;
+        }
+        $objPHPExcel->getActiveSheet()->setTitle('供货商列表');
+        $objPHPExcel->setActiveSheetIndex(0);
+        $dir = './priceTable/' . $mainId;
+        if (file_exists($dir) == false) {
+            mkdir($dir, 0777, true);
+        }
+        $date = date("m-d") . "-" . '供货商';
+        $file = $date . '.xls';
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        if (file_exists($dir . '/' . $file)) {
+            unlink($dir . '/' . $file);
+        }
+        $objWriter->save($dir . '/' . $file);
+        return ['file' => '/priceTable/' . $mainId . '/' . $file, 'shortFile' => $file];
+    }
+
 }