瀏覽代碼

Merge remote-tracking branch 'origin/fyy' into fyy

cqpCow 2 年之前
父節點
當前提交
5bb8a06ff6
共有 8 個文件被更改,包括 1027 次插入191 次删除
  1. 87 0
      app/Exports/CommonExport.php
  2. 23 0
      app/Exports/MyExport.php
  3. 13 9
      app/Service/Box/BoxHookService.php
  4. 95 42
      app/Service/Box/BoxService.php
  5. 52 0
      app/Service/Oa/OaService.php
  6. 2 1
      composer.json
  7. 754 138
      composer.lock
  8. 1 1
      routes/api.php

+ 87 - 0
app/Exports/CommonExport.php

@@ -0,0 +1,87 @@
+<?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;
+    }
+
+    /**
+     * 导出数据的处理
+     * @return array
+     */
+    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];
+    }
+
+
+}

+ 13 - 9
app/Service/Box/BoxHookService.php

@@ -46,8 +46,8 @@ class BoxHookService extends Service
         $box = new Box();
         $data['order_no'] = $this->setOrderNo();
         if(!isset($data['out_order_no'])) return [false,'out_order_no is not exist'];
-        if(!isset($data['top_id'])) return [false,'top_id is not exist'];
-        if(!isset($data['num'])) return [false,'num is not exist'];
+//        if(!isset($data['top_id'])) return [false,'top_id is not exist'];
+//        if(!isset($data['num'])) return [false,'num is not exist'];
         list($status,$box) = $this->dealBox($box,$data);
         if(!$status) return [false,$box];
         $box->save();
@@ -68,8 +68,8 @@ class BoxHookService extends Service
 
         $box->order_no = $data['order_no'];
         $box->out_order_no = $data['out_order_no'];
-        $box->top_id = $data['top_id'];
-        $box->num = $data['num'];
+//        $box->top_id = $data['top_id'];
+//        $box->num = $data['num'];
         $box->ext_1 = isset($data['ext_1']) ? $data['ext_1'] : '';
         $box->ext_2 = isset($data['ext_2']) ? $data['ext_2'] : '';
         $box->ext_3 = isset($data['ext_3']) ? $data['ext_3'] : '';
@@ -112,15 +112,18 @@ class BoxHookService extends Service
         $time = time();
         foreach ($data as $v){
             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['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'];
+            if(!isset($v['num'])) return [false,'type is not exist'];
 
             $insert[] = [
                 'order_no' => $order_no,
                 'out_order_no' => $out_order_no,
                 'top_id' => $v['top_id'],
-                'code' => $v['code'],
-                'title' => $v['title'],
+                'code' => '',
+                'title' => '',
+                'num' => $v['num'],
                 'type' => isset($v['type'])?$v['type'] : 1,
                 'crt_time' => $time,
                 'upd_time' => $time,
@@ -151,7 +154,8 @@ class BoxHookService extends Service
      * @return array
      */
     public function boxDetail($data){
-        $box = new Box();
+        $order_no = $data['order_no'];
+        $box = new BoxDetail(['channel'=>$order_no]);
         if(!isset($data['id'])) return [false,'id not found'];
         $list = $box->where('top_id',$data['id'])->get()->toArray();
 

+ 95 - 42
app/Service/Box/BoxService.php

@@ -42,8 +42,8 @@ class BoxService extends Service
     public function boxIn($data)
     {
 
-        if(!isset($data['param'])) return [false,'not found param'];
-        $param = $data['param'];
+//        if(!isset($data['params'])) return [false,'not found params'];
+//        $param = $data['params'];
 //        $param = [
 //            [
 //                'id' => 716,
@@ -62,26 +62,28 @@ class BoxService extends Service
 
         $ids = [];
         $key_list = [];
-        foreach ($param as $v) {
+        foreach ($data as $v) {
             $ids[] = $v['id'];
             $total = 0;
 
-            foreach ($v['param'] as $vv) {
+            foreach ($v['params'] as $vv) {
                 $total += $vv;
             }
             $key_list[$v['id']] = [
-                'detail' => $v['param'],
+                'detail' => $v['params'],
                 'total' => $total,
             ];
         }
-
+        $insert = [];
         try{
             DB::beginTransaction();
-            $product_list = SaleOrdersProduct::wherein('id', $ids)->get()->toArray();
+            $key = $this->lock_key.'_'.$v['id'];
+            $lock_status = $this->isLock($key);
+            if(!$lock_status) return [false,'操作过于频繁'];
+            $product_list = OrdersProduct::wherein('id', $ids)->get()->toArray();
+            $box_insert = [];
             foreach ($product_list as $v) {
-                $key = $this->lock_key.'_'.$v['id'];
-                $lock_status = $this->isLock($key);
-                if(!$lock_status) return [false,'操作过于频繁'];
+
                 $num_list = $key_list[$v['id']];
                 $total = $num_list['total'];
                 $detail = $num_list['detail'];
@@ -93,10 +95,10 @@ class BoxService extends Service
                 $ext_3 = $v['product_no'];
                 $ext_4 = $v['product_title'];
                 $ext_5 = $v['product_size'];
-                $out_order_no = $v['out_order_no'];
-                $top_id = $v['id'];
+                $out_order_no = $insert['out_order_no'] = $v['out_order_no'];
+                $top_id = $v['sale_orders_product_id'];
                 foreach ($detail as $vv){
-                    $box_insert = [
+                    $box_insert[] = [
                         'out_order_no' => $out_order_no,
                         'top_id' => $top_id,
                         'ext_1' => $ext_1,
@@ -107,22 +109,26 @@ class BoxService extends Service
                         'num' => $vv,
 
                     ];
-                    list($status,$msg) = self::$box_hook->boxInsert($box_insert);
 
-                    if(!$status) {
-                        $this->delLock($key);
-                        DB::rollBack();
-                        return [false,$msg];
-                    }
 
                 }
-                $this->delLock($key);
-                SaleOrdersProduct::where('id',$top_id)->update([
+                SaleOrdersProduct::where('id',$v['sale_orders_product_id'])->update([
                     'box_num' => DB::raw('box_num + '.$total),
                 ]);
 
 
+
+
             }
+            $insert['detail'] = $box_insert;
+            list($status,$msg) = self::$box_hook->boxInsert($insert);
+
+            if(!$status) {
+                $this->delLock($key);
+                DB::rollBack();
+                return [false,$msg];
+            }
+            $this->delLock($key);
 
             DB::commit();
             return [true,''];
@@ -147,30 +153,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];
     }
 
 

+ 52 - 0
app/Service/Oa/OaService.php

@@ -19,6 +19,11 @@ use App\Service\Service;
 class OaService extends Service
 {
 
+    /**
+     * 审核列表
+     * @param $data
+     * @return array
+     */
     public function oaList($data)
     {
 
@@ -35,6 +40,11 @@ class OaService extends Service
     }
 
 
+    /**
+     * 审核详情
+     * @param $data
+     * @return array
+     */
     public function oaDetail($data)
     {
 
@@ -58,6 +68,11 @@ class OaService extends Service
 
     }
 
+    /**
+     * 审核新增
+     * @param $data
+     * @return array
+     */
     public function oaAdd($data)
     {
 
@@ -102,6 +117,11 @@ class OaService extends Service
     }
 
 
+    /**
+     * 审核流
+     * @param $data
+     * @return array
+     */
     public function oaEdit($data)
     {
         $first = Oa::where('del_time', 0)->where('id', '<>', $data['id'])->where('menu_id', $data['menu_id']);
@@ -145,6 +165,11 @@ class OaService extends Service
         return [true, '更新成功'];
     }
 
+    /**
+     * 删除审核
+     * @param $data
+     * @return array
+     */
     public function oaDel($data)
     {
         $id = $data['id'];
@@ -175,6 +200,11 @@ class OaService extends Service
     }
 
 
+    /**
+     * 进入审批流
+     * @param $data
+     * @return array
+     */
     public function createOaOrder($data)
     {
         $menu_id = $data['menu_id'];
@@ -245,6 +275,11 @@ class OaService extends Service
 
     }
 
+    /**
+     * 审核列表
+     * @param $data
+     * @return array
+     */
     public function oaOrderList($data){
         $list = OaOrder::from('oa_order as o')
             ->leftJoin('sys_menu as s','s.id','o.menu_id')
@@ -255,6 +290,11 @@ class OaService extends Service
         return [true,$list];
     }
 
+    /**
+     * 审核详情
+     * @param $data
+     * @return array
+     */
     public function oaOrderDetail($data,$user){
 
         $id = $data['id'];
@@ -277,6 +317,12 @@ class OaService extends Service
         return [true,$first];
     }
 
+
+    /**
+     * 审核
+     * @param $data
+     * @return array
+     */
     public function oaCheck($data,$user){
 
 
@@ -394,6 +440,12 @@ class OaService extends Service
         return [true,'审核成功!'];
     }
 
+    /**
+     * 处理审核中的每个流程
+     * @param $list
+     * @param $sub_list
+     * @return array
+     */
     public function dealBeforeOaUser($list,$sub_list){
 
         $sub_key_list = [];

+ 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


+ 1 - 1
routes/api.php

@@ -189,5 +189,5 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     //包装相关
     $route->any('boxDetail', 'Api\BoxController@boxDetail');
     $route->any('boxProductList', 'Api\BoxController@boxProductList');
-    $route->any('boxIn', 'Api\BoxController@boxIn');
+    $route->any('box_in', 'Api\BoxController@boxIn');
 });

部分文件因文件數量過多而無法顯示