shish 1 rok temu
rodzic
commit
6af01dfc10

+ 30 - 13
app-ghs/controllers/OrderItemController.php

@@ -376,28 +376,28 @@ class OrderItemController extends BaseController
         $info->remark = $remark;
         $info->save();
 
-        $orderSn = $info->orderSn??'';
-        $productId = $info->productId??0;
-        $order = OrderClass::getByCondition(['orderSn'=>$orderSn],true);
-        if(empty($order)){
+        $orderSn = $info->orderSn ?? '';
+        $productId = $info->productId ?? 0;
+        $order = OrderClass::getByCondition(['orderSn' => $orderSn], true);
+        if (empty($order)) {
             util::fail('没有找订单');
         }
-        $customId = $order->customId??0;
+        $customId = $order->customId ?? 0;
         $shop = $this->shop;
-        $bookSn = $shop->bookSn??0;
-        if(!empty($bookSn) && !empty($remark)){
-            $bookItemRes = BookItemClass::getByCondition(['bookSn'=>$bookSn,'itemId'=>$productId],true);
-            if(!empty($bookItemRes)){
+        $bookSn = $shop->bookSn ?? 0;
+        if (!empty($bookSn) && !empty($remark)) {
+            $bookItemRes = BookItemClass::getByCondition(['bookSn' => $bookSn, 'itemId' => $productId], true);
+            if (!empty($bookItemRes)) {
                 $bookItemRes->hasRemark = 1;
                 $bookItemRes->save();
             }
-            $bookCustomRes = BookCustomClass::getByCondition(['bookSn'=>$bookSn,'customId'=>$customId],true);
-            if(!empty($bookCustomRes)){
+            $bookCustomRes = BookCustomClass::getByCondition(['bookSn' => $bookSn, 'customId' => $customId], true);
+            if (!empty($bookCustomRes)) {
                 $bookCustomRes->hasRemark = 1;
                 $bookCustomRes->save();
             }
-            $bookItemCustomRes = BookItemCustomClass::getByCondition(['bookSn'=>$bookSn,'customId'=>$customId,'itemId'=>$productId],true);
-            if(!empty($bookItemCustomRes)){
+            $bookItemCustomRes = BookItemCustomClass::getByCondition(['bookSn' => $bookSn, 'customId' => $customId, 'itemId' => $productId], true);
+            if (!empty($bookItemCustomRes)) {
                 $bookItemCustomRes->hasRemark = 1;
                 $bookItemCustomRes->remark = $remark;
                 $bookItemCustomRes->save();
@@ -406,4 +406,21 @@ class OrderItemController extends BaseController
         util::complete();
     }
 
+    //下载excel ssh 20241127
+    public function actionGetDownExcel()
+    {
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? 0;
+        $order = OrderClass::getById($id, true);
+        if (empty($order)) {
+            util::fail('没有找到订单');
+        }
+        if ($order->mainId != $this->mainId) {
+            util::fail('不是你的订单');
+        }
+        $orderSn = $order->orderSn ?? '';
+        $list = OrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
+        OrderItemClass::exportExcel($order, $list, $this->mainId);
+    }
+
 }

+ 126 - 1
biz-ghs/order/classes/OrderItemClass.php

@@ -460,4 +460,129 @@ class OrderItemClass extends BaseClass
         }
     }
 
-}
+    //导出excel ssh 20241127
+    public static function exportExcel($order, $orderList, $mainId)
+    {
+        $customName = $order->customName ?? '';
+        $orderSn = $order->orderSn ?? '';
+        $fileTitle = $customName . '-' . $orderSn;
+        if (empty($orderList)) {
+            util::fail('没有数据需要导出');
+        }
+
+        $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");
+
+        $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);
+
+        //设置宽度
+        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(16);
+
+        //加粗
+        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setSize(9)->setBold(true);
+
+        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+
+        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+
+        $objPHPExcel->getActiveSheet()->setCellValue('A1', '花材ID');
+        $objPHPExcel->getActiveSheet()->setCellValue('B1', '花材名称');
+        $objPHPExcel->getActiveSheet()->setCellValue('C1', '数量');
+        $objPHPExcel->getActiveSheet()->setCellValue('D1', '单价');
+        $objPHPExcel->getActiveSheet()->setCellValue('E1', '总价');
+        $objPHPExcel->getActiveSheet()->setCellValue('F1', '备注');
+        $objPHPExcel->getActiveSheet()->setCellValue('G1', '预留1');
+        $objPHPExcel->getActiveSheet()->setCellValue('H1', '预留2');
+        $objPHPExcel->getActiveSheet()->setCellValue('I1', '预留3');
+
+        $baseRow = 2;
+        foreach ($orderList as $key => $order) {
+            $i = $baseRow + $key;
+            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $order['productId']);
+            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $order['name']);
+            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $order['xhNum']);
+            $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $order['xhUnitPrice']);
+            $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $order['xhPrice']);
+            $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $order['remark']);
+            $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, '');
+            $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, '');
+            $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, '');
+
+            //居中
+            $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+            $objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        }
+
+        $fileName = $fileTitle.'-' . time();
+        $objPHPExcel->getActiveSheet()->setTitle($fileName);
+        $objPHPExcel->setActiveSheetIndex(0);
+        $dir = './orderItemExcel/' . $mainId;
+        if (file_exists($dir) == false) {
+            mkdir($dir, 0777, true);
+        }
+        $date = $fileName;
+        $file = $date . '.xls';
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        if (file_exists($dir . '/' . $file)) {
+            unlink($dir . '/' . $file);
+        }
+        $objWriter->save($dir . '/' . $file);
+        $fileUrl = Yii::$app->params['ghsHost'] . '/orderItemExcel/' . $mainId . '/' . $file;
+        util::success(['file' => $fileUrl, 'shortFile' => $file]);
+    }
+
+}