root 2 سال پیش
والد
کامیت
205501d316
2فایلهای تغییر یافته به همراه77 افزوده شده و 18 حذف شده
  1. 1 0
      app/Service/Box/BoxHookService.php
  2. 76 18
      app/Service/Box/BoxService.php

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

@@ -129,6 +129,7 @@ class BoxHookService extends Service
                 'crt_time' => $time,
                 'upd_time' => $time,
                 'top_order_no' => $top_order_no,
+                'box_type' => $v['box_type'],
                 'ext_1' => isset($v['ext_1']) ? $v['ext_1'] : '',
                 'ext_2' => isset($v['ext_2']) ? $v['ext_2'] : '',
                 'ext_3' => isset($v['ext_3']) ? $v['ext_3'] : '',

+ 76 - 18
app/Service/Box/BoxService.php

@@ -62,10 +62,15 @@ class BoxService extends Service
 //        ];
 
         $ids = [];
+        $sale_ids = [];
         $key_list = [];
         $top_order_no = $data['order_no'];
+        $data = $data['param'];
         foreach ($data as $v) {
-            $ids[] = $v['id'];
+
+            if($v['id'] < 0)  $sale_ids[] = -$v['id'];
+            else $ids[] = $v['id'];
+            if($v['id'] < 0) $v['id'] = -$v['id'];
             $total = 0;
 
             foreach ($v['params'] as $vv) {
@@ -77,19 +82,23 @@ class BoxService extends Service
             ];
         }
         $insert = [];
+//        var_dump($ids);
+//        var_dump($sale_ids);die;
         try{
             DB::beginTransaction();
             $key = $this->lock_key.'_'.$v['id'];
             $lock_status = $this->isLock($key);
             if(!$lock_status) return [false,'操作过于频繁'];
             $product_list = OrdersProduct::wherein('id', $ids)->get()->toArray();
+//            var_dump($product_list);die;
+            $sale_product_list = SaleOrdersProduct::wherein('id', $sale_ids)->get()->toArray();
             $box_insert = [];
             foreach ($product_list as $v) {
 
                 $num_list = $key_list[$v['id']];
                 $total = $num_list['total'];
                 $detail = $num_list['detail'];
-                $un_box_num = $v['order_quantity'] - $v['box_num'];
+                $un_box_num = $v['dispatch_complete_quantity'] - $v['box_num'];
                 if ($total > $un_box_num) return [false, $v['product_title'] . '数量不足'];
 
                 $ext_1 = $v['customer_no'];
@@ -109,6 +118,7 @@ class BoxService extends Service
                         'ext_4' => $ext_4,
                         'ext_5' => $ext_5,
                         'num' => $vv,
+                        'box_type' => 0
 
                     ];
 
@@ -117,6 +127,49 @@ class BoxService extends Service
                 SaleOrdersProduct::where('id',$v['sale_orders_product_id'])->update([
                     'box_num' => DB::raw('box_num + '.$total),
                 ]);
+                OrdersProduct::where('id',$v['id'])->update([
+                    'box_num' => DB::raw('box_num + '.$total),
+                ]);
+
+
+
+
+            }
+            foreach ($sale_product_list as $v) {
+                if($v['id'] < 0)  $v['id'] = -$v['id'];
+                $num_list = $key_list[$v['id']];
+                $total = $num_list['total'];
+                $detail = $num_list['detail'];
+                $box_detail = new BoxDetail(['channel'=>$top_order_no]);
+                $un_box_num = $v['order_quantity'] - $v['box_num'] - $box_detail->where('top_id',$v['id'])->where('box_type',1)->sum('num');
+                if ($total > $un_box_num) return [false, $v['product_title'] . '数量不足'];
+
+                $ext_1 = $v['customer_no'];
+                $ext_2 = $v['customer_name'];
+                $ext_3 = $v['product_no'];
+                $ext_4 = $v['product_title'];
+                $ext_5 = $v['product_size'];
+                $out_order_no = $insert['out_order_no'] = $v['out_order_no'];
+                $top_id = $v['id'];
+                foreach ($detail as $vv){
+                    $box_insert[] = [
+                        'out_order_no' => $out_order_no,
+                        'top_id' => $top_id,
+                        'ext_1' => $ext_1,
+                        'ext_2' => $ext_2,
+                        'ext_3' => $ext_3,
+                        'ext_4' => $ext_4,
+                        'ext_5' => $ext_5,
+                        'num' => $vv,
+                        'box_type' => 1,
+
+                    ];
+
+
+                }
+                SaleOrdersProduct::where('id',$v['id'])->update([
+                    'box_num' => DB::raw('box_num + '.$total),
+                ]);
 
 
 
@@ -124,6 +177,7 @@ class BoxService extends Service
             }
             $insert['detail'] = $box_insert;
             $insert['top_order_no'] = $top_order_no;
+//            var_dump($insert);die;
             list($status,$msg) = self::$box_hook->boxInsert($insert);
 
             if(!$status) {
@@ -168,7 +222,6 @@ class BoxService extends Service
             $model_key_list[$v['id']] = $v;
         }
 
-        $product_key_list = [];
         $product_key_num_list = [];
         foreach ($product_list as $v){
             if(!isset($product_key_num_list[$v['sale_orders_product_id']]))$product_key_num_list[$v['sale_orders_product_id']] = [
@@ -179,6 +232,7 @@ class BoxService extends Service
             $product_key_num_list[$v['sale_orders_product_id']]['box_num'] += $v['box_num'];
             $detail = $model_key_list[$v['sale_orders_product_id']];
             $detail['box_type'] = 1;
+            $detail['id'] = $v['id'];
             $detail['is_box_num'] = $v['box_num'];
             $detail['un_box_num'] = $v['production_quantity'] - $v['box_num'];
             $detail['type'] = 1;
@@ -188,10 +242,12 @@ class BoxService extends Service
 
         $return = [];
         $product_key_list = [];
+//        var_dump($model);die;
         foreach ($model as $v){
             if(!isset($v['box_type'])) {
                 $product_num = isset($product_key_num_list[$v['id']]) ? $product_key_num_list[$v['id']]['product_num'] : 0;
                 $box_num = isset($product_key_num_list[$v['id']]) ? $product_key_num_list[$v['id']]['box_num'] : 0;
+                if(($v['order_quantity'] - $product_num) === 0) continue;
                 $product_key_list[$v['sale_orders_product_id']] = [
                     'out_order_no' => $v['out_order_no'],
                     'production_time' => '未下生产',
@@ -206,22 +262,24 @@ class BoxService extends Service
                     'un_box_num' => $v['order_quantity'] - $v['box_num'] - $product_num,
                     'sale_num' => $v['order_quantity'],
                 ];
+            }else{
+
+                $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['product_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' => $v['order_quantity'],
+                ];
             }
-            if($v['box_num'] === 0 && ($v['dispatch_complete_quantity'] - $v['box_num']) === 0) continue;
-            $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['product_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' => $v['order_quantity'],
-            ];
+
         }
         foreach ($product_key_list as $v){
             $return[] = $v;