소스 검색

无地址待发货订单导出优化

wufeng 2 년 전
부모
커밋
66c88abaf8
1개의 변경된 파일31개의 추가작업 그리고 19개의 파일을 삭제
  1. 31 19
      app/admin/controller/SaleReport.php

+ 31 - 19
app/admin/controller/SaleReport.php

@@ -1482,32 +1482,44 @@ class SaleReport extends Base
             ->select()
             ->toArray();
 //            ->cursor();
-//halt($data);
 
-        
+
+        //所有部门名称
+        $all_company = [];
+        foreach ($data as $value) {
+            if (!isset($all_company[$value['apply_id']])) $all_company[$value['apply_id']] = get_company_name_by_uid($value['apply_id']);
+        }
+
+        //所有商品相关
+        $goon_3_4 = Db::name("good_zixun")
+            ->where('is_del', 0)
+            ->whereIn('spuCode', array_column($data, '商品编码'))
+            ->column('id,cat_id,customized', 'spuCode');
+
+        $goon_else = Db::name('good_platform')
+            ->alias('a')
+            ->join('good b', 'b.spuCode=a.spuCode', 'left')
+            ->where('a.is_del', 0)
+            ->whereIn('a.skuCode', array_column($data, 'skuCode'))
+            ->column('a.id,b.cat_id,b.customized', 'skuCode');
+
+        //所有分类
+        $all_cat = [];
+        $all_cat_id = array_unique(array_merge(array_column($goon_3_4, 'cat_id'), array_column($goon_else, 'cat_id')));
+        foreach ($all_cat_id as $cat_id) {
+            if (!isset($all_cat[$cat_id])) $all_cat[$cat_id] = implode('/', array_column(made($cat_id), 'name'));
+        }
 
 
         $list = [];
         foreach ($data as $value) {
 
-            $value['部门'] = get_company_name_by_uid($value['apply_id']);
+            $value['部门'] = $all_company[$value['apply_id']] ?? '';
 
-            if ($value['order_type'] == 3 || $value['order_type'] == 4) {
-                $goon = Db::name("good_zixun")
-                    ->field('id,cat_id,customized')
-                    ->where(["spuCode" => $value['商品编码'], "is_del" => 0])
-                    ->find();
-
-            } else {
-                $goon = Db::name('good_platform')
-                    ->alias('a')
-                    ->field('a.id,b.cat_id,b.customized')
-                    ->join('good b', 'b.spuCode=a.spuCode', 'left')
-                    ->where(['a.is_del' => 0, 'a.skuCode' => $value['skuCode']])
-                    ->find();
-            }
+            if ($value['order_type'] == 3 || $value['order_type'] == 4) $goon = $goon_3_4[$value['商品编码']];
+            else $goon = $goon_else[$value['skuCode']];
 
-            $value['商品分类'] = implode('/', array_column(made($goon['cat_id']), 'name'));
+            $value['商品分类'] = $all_cat[$goon['cat_id']] ?? '';
             $value['应发货日期'] = date('Y-m-d H:i:s', strtotime($value['下单时间']) + $goon['customized'] * 24 * 3600);
 
             $value['状态'] = isset($this->order_out_status[$value['状态']]) ? $this->order_out_status[$value['状态']] : '';
@@ -1518,7 +1530,7 @@ class SaleReport extends Base
 
             $list[] = $value;
         }
-
+        
         if (empty($list)) $list[] = '没有相关可导出的数据';
         excelSave('无地址待发货订单' . date('YmdHis'), array_keys($list[0]), $list);