root 2 роки тому
батько
коміт
b8303c9989

+ 83 - 0
app/Exports/CommonExport.php

@@ -0,0 +1,83 @@
+<?php
+
+namespace App\Exports;
+
+
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Redis;
+use Maatwebsite\Excel\Concerns\FromCollection;
+
+use Maatwebsite\Excel\Concerns\WithEvents;     // 自动注册事件监听器
+use Maatwebsite\Excel\Concerns\WithStrictNullComparison;    // 导出 0 原样显示,不为 null
+use Maatwebsite\Excel\Events\AfterSheet;
+
+
+
+
+class CommonExport implements FromCollection, WithEvents, WithStrictNullComparison
+{
+
+    public $data;
+
+    /**
+     * @return \Illuminate\Support\Collection
+     */
+    public function __construct($data)
+    {
+        $this->data = $data;
+    }
+
+    public function registerEvents(): array
+    {
+        //这边处理数据格式
+
+        //关于表单的合并
+        $params = $this->data['params'];
+
+        $style = [
+            AfterSheet::class => function (AfterSheet $event) use($params) {
+                $count = count($this->data);
+
+                //设置区域单元格水平居中
+                $event->sheet->getDelegate()->getStyle('A1:'.'BZ'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
+
+
+                //合并相关
+                $merge = $params['merge'];
+                $event->sheet->getDelegate()->setMergeCells($merge);
+            },
+        ];
+
+        return $style;
+
+    }
+
+
+    //数组转集合
+    public function collection()
+    {
+        return new Collection($this->createData());
+    }
+    //业务代码
+    public function createData()
+    {
+        $data = $this->export();
+        return $data;
+
+    }
+
+    private function export(){
+//        var_dump($this->data);die;
+        $data = $this->data['data'];
+        $list = [];
+        foreach ($data as $v){
+            $list[] = $v;
+        }
+        return $list;
+    }
+
+
+
+
+
+}

+ 23 - 0
app/Exports/MyExport.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Exports;
+
+use Maatwebsite\Excel\Facades\Excel;
+
+
+
+
+class MyExport {
+
+
+    public function commonExport($data,$path = ''){
+
+        $param = $data;
+        $export = new CommonExport($param);
+
+        Excel::store($export, $path);
+        return ['file'=>$path];
+    }
+
+
+}

+ 1 - 0
app/Service/Box/BoxHookService.php

@@ -114,6 +114,7 @@ class BoxHookService extends Service
             if(!isset($v['top_id'])) return [false,'top_id is not exist'];
             if(!isset($v['code'])) return [false,'code is not exist'];
             if(!isset($v['title'])) return [false,'title is not exist'];
+            if(!isset($v['type'])) return [false,'type is not exist'];
 
             $insert[] = [
                 'order_no' => $order_no,

+ 68 - 21
app/Service/Box/BoxService.php

@@ -147,30 +147,77 @@ class BoxService extends Service
     }
 
     public function boxProductList($data){
-        $box = new Box();
         if(!isset($data['id'])) return [false,'id not found'];
-        $model = OrdersProduct::where('del_time',0)->wherein('sale_orders_product_id',$data['id'])
-            ->select('id','order_no','out_order_no','out_order_no_time','customer_no','customer_name','table_header_mark','product_no','product_title','product_size','product_unit','order_quantity','technology_material','technology_name','wood_name','process_mark','table_body_mark','out_crt_man','out_checker_man','out_checker_time','production_quantity','production_time','production_no','status','sale_orders_product_id')
+        $sale_order_ids = $data['id'];
+        $model = OrdersProduct::where('del_time',0)->wherein('sale_orders_product_id',$sale_order_ids)
+            ->select('id','out_order_no','customer_no','customer_name','product_no','product_title','product_size','production_time','production_no','sale_orders_product_id','dispatch_complete_quantity','box_num','technology_name','wood_name','crt_time')
             ->orderBy('id','desc')->get()->toArray();
+        $sale_list = SaleOrdersProduct::wherein('id',$sale_order_ids)->select('order_quantity','id','production_quantity','box_num')->get()->toArray();
+        $sale_key_list = [];
+        foreach ($sale_list as $v){
+            $sale_key_list[$v['id']] = [
+                'order_quantity' => $v['order_quantity'],
+                'production_quantity' => $v['production_quantity'],
+                'box_num' => $v['box_num'],
+            ];
+        }
+        $return = [];
+        $product_key_list = [];
+        foreach ($model as $v){
+            if(!isset($product_key_list[$v['sale_orders_product_id']])) {
+                $p = $sale_key_list[$v['sale_orders_product_id']];
+                $product_key_list[$v['sale_orders_product_id']] = [
+                    'out_order_no' => $v['out_order_no'],
+                    'production_time' => '未下生产',
+                    'customer_no' => $v['customer_no'],
+                    'customer_name' => $v['customer_name'],
+                    'product_no' => $v['production_no'],
+                    'product_title' => $v['product_title'],
+                    'product_size' => $v['product_size'],
+                    'id' => -$v['sale_orders_product_id'],
+                    'type' => '2',
+                    'is_box_num' => $p['box_num'],
+                    'un_box_num' => $p['order_quantity'] - $p['box_num'] - $p['production_quantity'],
+                    'sale_num' => $p['order_quantity'],
+                ];
+            }
+            $return[] = [
+                'id' => $v['id'],
+                'out_order_no' => $v['out_order_no'],
+                'production_time' => date('Y-m-d',$v['crt_time']),
+                'customer_no' => $v['customer_no'],
+                'customer_name' => $v['customer_name'],
+                'product_no' => $v['production_no'],
+                'product_title' => $v['product_title'],
+                'product_size' => $v['product_size'],
+                'type' => '1',
+                'is_box_num' => $v['box_num'],
+                'un_box_num' => $v['dispatch_complete_quantity'] - $v['box_num'],
+                'sale_num' => $sale_key_list[$v['sale_orders_product_id']]['order_quantity'],
+            ];
+        }
+        foreach ($product_key_list as $v){
+            $return[] = $v;
+        }
+
+//        $data = [
+//            [
+//                'id' => 1,
+//                'out_order_no' => '销售订单号',
+//                'production_time' => '下生产时间',
+//                'customer_no' => '客户编码',
+//                'customer_name' => '客户名称',
+//                'product_no' => '产品编码',
+//                'product_title' => '产品名称',
+//                'product_size' => '产品规格',
+//                'type' => '1生产包装2备用包装',
+//                'is_box_num' => '已包装数量',
+//                'un_box_num' => '未包装',
+//                'sale_num' => '销售数量',
+//            ]
+//        ];
 
-        $data = [
-            [
-                'id' => 1,
-                'out_order_no' => '销售订单号',
-                'production_time' => '下生产时间时间戳',
-                'customer_no' => '客户编码',
-                'customer_name' => '客户名称',
-                'product_no' => '产品编码',
-                'product_title' => '产品名称',
-                'product_size' => '产品规格',
-                'type' => '1生产包装2备用包装',
-                'is_box_num' => '已包装数量',
-                'un_box_num' => '未包装',
-                'sale_num' => '销售数量',
-            ]
-        ];
-
-        return [true,$data];
+        return [true,$return];
     }
 
 

+ 2 - 1
composer.json

@@ -13,7 +13,8 @@
         "firebase/php-jwt": "^6.4",
         "fruitcake/laravel-cors": "^2.2",
         "laravel/framework": "^6.20.26",
-        "laravel/tinker": "^2.5"
+        "laravel/tinker": "^2.5",
+        "maatwebsite/excel": "^3.1"
     },
     "require-dev": {
         "facade/ignition": "^1.16.15",

Різницю між файлами не показано, бо вона завелика
+ 754 - 138
composer.lock


Деякі файли не було показано, через те що забагато файлів було змінено