shish 1 day ago
parent
commit
159c27e592
2 changed files with 80 additions and 53 deletions
  1. 16 5
      app-ghs/controllers/OrderController.php
  2. 64 48
      biz-ghs/order/classes/OrderClass.php

+ 16 - 5
app-ghs/controllers/OrderController.php

@@ -1127,14 +1127,25 @@ class OrderController extends BaseController
             }
             }
         }
         }
 
 
+        // 导出区间跟当前时间类型走:0 开单 addTime,1 账单 payTime,2 发货 sendTime
         if ($export == 1) {
         if ($export == 1) {
             ini_set('memory_limit', '2045M');
             ini_set('memory_limit', '2045M');
             set_time_limit(0);
             set_time_limit(0);
-            if (!isset($where['payTime'])) {
-                util::fail('请选 账单时间 和 时间段');
+            if ($searchTimeType === 2) {
+                $exportTimeKey = 'sendTime';
+                $exportTimeName = '发货时间';
+            } elseif ($searchTimeType === 1) {
+                $exportTimeKey = 'payTime';
+                $exportTimeName = '账单时间';
+            } else {
+                $exportTimeKey = 'addTime';
+                $exportTimeName = '开单时间';
+            }
+            if (!isset($where[$exportTimeKey])) {
+                util::fail('请选 ' . $exportTimeName . ' 和时间段');
             }
             }
-            $start = $where['payTime'][1][0];
-            $end = $where['payTime'][1][1];
+            $start = $where[$exportTimeKey][1][0];
+            $end = $where[$exportTimeKey][1][1];
             $monthTime = bcmul(31, 86400);
             $monthTime = bcmul(31, 86400);
             $startArea = strtotime($start);
             $startArea = strtotime($start);
             $endArea = strtotime($end);
             $endArea = strtotime($end);
@@ -1202,7 +1213,7 @@ class OrderController extends BaseController
         }
         }
         $respond = OrderClass::getOrderList($where, $order);
         $respond = OrderClass::getOrderList($where, $order);
         if ($export == 1) {
         if ($export == 1) {
-            OrderClass::exportOrderData($respond, $this->mainId);
+            OrderClass::exportOrderData($respond, $this->mainId, $searchTimeType);
         }
         }
         $respond['shop'] = $this->shop;
         $respond['shop'] = $this->shop;
         $respond['shopExt'] = $this->shopExt;
         $respond['shopExt'] = $this->shopExt;

+ 64 - 48
biz-ghs/order/classes/OrderClass.php

@@ -185,7 +185,11 @@ class OrderClass extends BaseClass
 
 
     }
     }
 
 
-    public static function exportOrderData($respond, $mainId)
+    /**
+     * 导出订单明细 Excel。
+     * $searchTimeType 与列表一致:0 开单、1 账单、2 发货,只影响文件名里的时间类型标注。
+     */
+    public static function exportOrderData($respond, $mainId, $searchTimeType = 0)
     {
     {
         $orderList = $respond['list'] ?? [];
         $orderList = $respond['list'] ?? [];
         if (empty($orderList)) {
         if (empty($orderList)) {
@@ -248,38 +252,40 @@ class OrderClass extends BaseClass
         $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
         $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
 
 
         $objPHPExcel->getActiveSheet()->setCellValue('A1', '订单号');
         $objPHPExcel->getActiveSheet()->setCellValue('A1', '订单号');
-        $objPHPExcel->getActiveSheet()->setCellValue('B1', '创建时间');
-        $objPHPExcel->getActiveSheet()->setCellValue('C1', '账单日期');
-        $objPHPExcel->getActiveSheet()->setCellValue('D1', '订单金额');
-        $objPHPExcel->getActiveSheet()->setCellValue('E1', '退款金额');
-        $objPHPExcel->getActiveSheet()->setCellValue('F1', '实际金额');
-        $objPHPExcel->getActiveSheet()->setCellValue('G1', '客户');
-        $objPHPExcel->getActiveSheet()->setCellValue('H1', '客户手机号');
-        $objPHPExcel->getActiveSheet()->setCellValue('I1', '在线支付');
-        $objPHPExcel->getActiveSheet()->setCellValue('J1', '结清状态');
-        $objPHPExcel->getActiveSheet()->setCellValue('K1', '已优惠');
-        $objPHPExcel->getActiveSheet()->setCellValue('L1', '备注');
-        $objPHPExcel->getActiveSheet()->setCellValue('M1', '开单人');
-        $objPHPExcel->getActiveSheet()->setCellValue('N1', '花材Id');
-        $objPHPExcel->getActiveSheet()->setCellValue('O1', '花材名称');
-        $objPHPExcel->getActiveSheet()->setCellValue('P1', '单价');
-        $objPHPExcel->getActiveSheet()->setCellValue('Q1', '数量');
-        $objPHPExcel->getActiveSheet()->setCellValue('R1', '已退数量');
-        $objPHPExcel->getActiveSheet()->setCellValue('S1', '金额');
-        $objPHPExcel->getActiveSheet()->setCellValue('T1', '分类');
-        $objPHPExcel->getActiveSheet()->setCellValue('U1', '备注');
-        $objPHPExcel->getActiveSheet()->setCellValue('V1', '成本');
+        $objPHPExcel->getActiveSheet()->setCellValue('B1', '开单时间');
+        $objPHPExcel->getActiveSheet()->setCellValue('C1', '发货时间');
+        $objPHPExcel->getActiveSheet()->setCellValue('D1', '账单日期');
+        $objPHPExcel->getActiveSheet()->setCellValue('E1', '订单金额');
+        $objPHPExcel->getActiveSheet()->setCellValue('F1', '退款金额');
+        $objPHPExcel->getActiveSheet()->setCellValue('G1', '实际金额');
+        $objPHPExcel->getActiveSheet()->setCellValue('H1', '客户');
+        $objPHPExcel->getActiveSheet()->setCellValue('I1', '客户手机号');
+        $objPHPExcel->getActiveSheet()->setCellValue('J1', '在线支付');
+        $objPHPExcel->getActiveSheet()->setCellValue('K1', '结清状态');
+        $objPHPExcel->getActiveSheet()->setCellValue('L1', '已优惠');
+        $objPHPExcel->getActiveSheet()->setCellValue('M1', '备注');
+        $objPHPExcel->getActiveSheet()->setCellValue('N1', '开单人');
+        $objPHPExcel->getActiveSheet()->setCellValue('O1', '花材Id');
+        $objPHPExcel->getActiveSheet()->setCellValue('P1', '花材名称');
+        $objPHPExcel->getActiveSheet()->setCellValue('Q1', '单价');
+        $objPHPExcel->getActiveSheet()->setCellValue('R1', '数量');
+        $objPHPExcel->getActiveSheet()->setCellValue('S1', '已退数量');
+        $objPHPExcel->getActiveSheet()->setCellValue('T1', '金额');
+        $objPHPExcel->getActiveSheet()->setCellValue('U1', '分类');
+        $objPHPExcel->getActiveSheet()->setCellValue('V1', '备注');
+        $objPHPExcel->getActiveSheet()->setCellValue('W1', '成本');
 
 
         //设置宽度
         //设置宽度
         $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
         $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
         $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
         $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
         $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
         $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
-        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(16);
-        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
-        $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(20);
-        $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(20);
-        $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(18);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(16);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(20);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(20);
         $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth(18);
         $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth(18);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setWidth(18);
         //加粗
         //加粗
         $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
@@ -303,6 +309,7 @@ class OrderClass extends BaseClass
         $objPHPExcel->getActiveSheet()->getStyle('T1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('T1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('U1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('U1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('V1')->getFont()->setSize(9)->setBold(true);
         $objPHPExcel->getActiveSheet()->getStyle('V1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('W1')->getFont()->setSize(9)->setBold(true);
 
 
         $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $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('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
@@ -326,6 +333,7 @@ class OrderClass extends BaseClass
         $objPHPExcel->getActiveSheet()->getStyle('T1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('T1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('U1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('U1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('V1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('V1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('W1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
 
         $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_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('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
@@ -349,6 +357,7 @@ class OrderClass extends BaseClass
         $objPHPExcel->getActiveSheet()->getStyle('T1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('T1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('U1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('U1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('V1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle('V1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
+        $objPHPExcel->getActiveSheet()->getStyle('W1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
 
         $baseRow = 2;
         $baseRow = 2;
         $x = 0;
         $x = 0;
@@ -359,32 +368,37 @@ class OrderClass extends BaseClass
                     $i = $baseRow + $x;
                     $i = $baseRow + $x;
                     $x++;
                     $x++;
 
 
+                    $sendTime = $orderData['sendTime'] ?? '';
+                    if (empty($sendTime) || strpos((string)$sendTime, '0000-00-00') === 0) {
+                        $sendTime = '';
+                    }
                     $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $orderData['orderSn']);
                     $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $orderData['orderSn']);
                     $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $orderData['addTime']);
                     $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $orderData['addTime']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $orderData['payTime']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $orderData['orderPrice']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $orderData['tkPrice']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $orderData['actPrice']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $orderData['customName']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $orderData['customMobile']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $orderData['onlinePay'] == 1 ? '否' : '是');
-                    $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $orderData['debt'] == 1 ? '未结清' : '已结清');
-                    $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $orderData['discountAmount']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('L' . $i, $orderData['remark']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('M' . $i, $orderData['shopAdminName']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $orderInfo['productId']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('O' . $i, $orderInfo['name']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('P' . $i, $orderInfo['xhUnitPrice']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sendTime);
+                    $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $orderData['payTime']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $orderData['orderPrice']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $orderData['tkPrice']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $orderData['actPrice']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $orderData['customName']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $orderData['customMobile']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $orderData['onlinePay'] == 1 ? '否' : '是');
+                    $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $orderData['debt'] == 1 ? '未结清' : '已结清');
+                    $objPHPExcel->getActiveSheet()->setCellValue('L' . $i, $orderData['discountAmount']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('M' . $i, $orderData['remark']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $orderData['shopAdminName']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('O' . $i, $orderInfo['productId']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('P' . $i, $orderInfo['name']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('Q' . $i, $orderInfo['xhUnitPrice']);
                     $remainNum = bcsub($orderInfo['xhNum'], $orderInfo['refundNum']);
                     $remainNum = bcsub($orderInfo['xhNum'], $orderInfo['refundNum']);
                     $price = bcmul($remainNum, $orderInfo['xhUnitPrice'], 2);
                     $price = bcmul($remainNum, $orderInfo['xhUnitPrice'], 2);
-                    $objPHPExcel->getActiveSheet()->setCellValue('Q' . $i, $remainNum);
-                    $objPHPExcel->getActiveSheet()->setCellValue('R' . $i, $orderInfo['refundNum']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('S' . $i, $price);
+                    $objPHPExcel->getActiveSheet()->setCellValue('R' . $i, $remainNum);
+                    $objPHPExcel->getActiveSheet()->setCellValue('S' . $i, $orderInfo['refundNum']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('T' . $i, $price);
                     $classId = $orderInfo['classId'] ?? 0;
                     $classId = $orderInfo['classId'] ?? 0;
                     $className = isset($classList[$classId]) && isset($classList[$classId]['name']) ? $classList[$classId]['name'] : '';
                     $className = isset($classList[$classId]) && isset($classList[$classId]['name']) ? $classList[$classId]['name'] : '';
-                    $objPHPExcel->getActiveSheet()->setCellValue('T' . $i, $className);
-                    $objPHPExcel->getActiveSheet()->setCellValue('U' . $i, $orderInfo['remark']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('V' . $i, $orderInfo['cost']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('U' . $i, $className);
+                    $objPHPExcel->getActiveSheet()->setCellValue('V' . $i, $orderInfo['remark']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('W' . $i, $orderInfo['cost']);
 
 
                     //居左
                     //居左
                     $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                     $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
@@ -408,10 +422,12 @@ class OrderClass extends BaseClass
                     $objPHPExcel->getActiveSheet()->getStyle('S' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                     $objPHPExcel->getActiveSheet()->getStyle('S' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                     $objPHPExcel->getActiveSheet()->getStyle('T' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                     $objPHPExcel->getActiveSheet()->getStyle('T' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                     $objPHPExcel->getActiveSheet()->getStyle('V' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                     $objPHPExcel->getActiveSheet()->getStyle('V' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+                    $objPHPExcel->getActiveSheet()->getStyle('W' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                 }
                 }
             }
             }
         }
         }
-        $fileName = '订单明细-' . time();
+        $timeTypeName = $searchTimeType === 2 ? '发货时间' : ($searchTimeType === 1 ? '账单时间' : '开单时间');
+        $fileName = '订单明细-' . $timeTypeName . '-' . time();
         $objPHPExcel->getActiveSheet()->setTitle($fileName);
         $objPHPExcel->getActiveSheet()->setTitle($fileName);
         $objPHPExcel->setActiveSheetIndex(0);
         $objPHPExcel->setActiveSheetIndex(0);
         $dir = './priceTable/' . $mainId;
         $dir = './priceTable/' . $mainId;