root 2 years ago
parent
commit
94eb62c060

+ 15 - 0
app/Http/Controllers/Api/BoxController.php

@@ -30,6 +30,21 @@ class BoxController extends BaseController
 
     }
 
+    public function transportBoxIn(Request $request)
+    {
+
+
+        $service = new BoxService();
+        list($status,$data) = $service->transportBoxIn($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
     public function boxDetail(Request $request)
     {
 

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

@@ -44,7 +44,7 @@ class BoxHookService extends Service
      */
     public function boxInsert($data){
         $box = new Box();
-        $data['order_no'] = $this->setOrderNo();
+        if(!isset($data['order_no'])||empty($data['order_no'])) $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'];
@@ -76,6 +76,7 @@ class BoxHookService extends Service
         $box->ext_4 = isset($data['ext_4']) ? $data['ext_4'] : '';
         $box->ext_5 = isset($data['ext_5']) ? $data['ext_5'] : '';
         $box->top_order_no = $data['top_order_no'];
+        $box->shipment_order_no = isset($data['shipment_order_no'])? $data['shipment_order_no'] : '';
 
 
         return [true,$box];
@@ -136,6 +137,7 @@ class BoxHookService extends Service
                 'ext_4' => isset($v['ext_4']) ? $v['ext_4'] : '',
                 'ext_5' => isset($v['ext_5']) ? $v['ext_5'] : '',
                 'team_id' => isset($v['team_id']) ? $v['team_id'] : '',
+                'shipment_order_no' => isset($v['shipment_order_no']) ? $v['shipment_order_no'] : '',
 
             ];
         }

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

@@ -49,14 +49,16 @@ class BoxService extends Service
 //            [
 //                'id' => 716,
 //                'order_no' => 716,
-//                'param' => [
+//                'params' => [
 //                    '1',
-//                    '1'
+//                    '1',
+//
 //                ],
+
 //            ], [
 //                'id' => 723,
-//                'param' => [
-//                    '40',
+//                'order_no' => 716,
+//                'params' => [
 //                    '40'
 //                ],
 //            ],
@@ -65,10 +67,16 @@ class BoxService extends Service
         $ids = [];
         $sale_ids = [];
 //        $key_list = [];
+//        var_dump($data);die;
         $top_order_no = $data['order_no'];
+        $box_no = isset($data['box_no']) ? $data['box_no'] : '';
+        $transport_no = isset($data['transport_no']) ? $data['transport_no'] : '';
         $data = $data['param'];
+        $key_list = [];
         foreach ($data as $v) {
 
+
+
             if($v['id'] < 0)  $sale_ids[] = -$v['id'];
             else $ids[] = $v['id'];
             if($v['id'] < 0) $v['id'] = -$v['id'];
@@ -92,10 +100,9 @@ class BoxService extends Service
             $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) {
+                foreach ($product_list as $v) {
 
                 $num_list = $key_list[$v['id']];
                 $total = $num_list['total'];
@@ -104,11 +111,11 @@ class BoxService extends Service
                 $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'];
-                $ext_2 = $v['customer_name'];
-                $ext_3 = $v['product_no'];
-                $ext_4 = $v['product_title'];
-                $ext_5 = $v['product_size'];
+                $ext_1 = $v['product_no'];//产品编号
+                $ext_2 = $v['technology_material']; //工艺材质
+                $ext_3 = $v['technology_name'];//工艺名称
+                $ext_4 = $v['wood_name'];//木皮
+                $ext_5 = $v['process_mark'];//工艺备注
                 $out_order_no = $insert['out_order_no'] = $v['out_order_no'];
                 $top_id = $v['sale_orders_product_id'];
                 foreach ($detail as $vv){
@@ -123,6 +130,7 @@ class BoxService extends Service
                         'num' => $vv,
                         'box_type' => 0,
                         'team_id' => $team_id,
+                        'shipment_order_no' => $transport_no,
 
                     ];
 
@@ -149,11 +157,11 @@ class BoxService extends Service
                 $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'];
+                $ext_1 = $v['product_no'];//产品编号
+                $ext_2 = $v['technology_material']; //工艺材质
+                $ext_3 = $v['technology_name'];//工艺名称
+                $ext_4 = $v['wood_name'];//木皮
+                $ext_5 = $v['process_mark'];//工艺备注
                 $out_order_no = $insert['out_order_no'] = $v['out_order_no'];
                 $top_id = $v['id'];
                 foreach ($detail as $vv){
@@ -168,6 +176,7 @@ class BoxService extends Service
                         'num' => $vv,
                         'box_type' => 1,
                         'team_id' => $team_id,
+                        'shipment_order_no' => $transport_no,
 
                     ];
 
@@ -183,9 +192,9 @@ class BoxService extends Service
             }
             $insert['detail'] = $box_insert;
             $insert['top_order_no'] = $top_order_no;
-//            var_dump($insert);die;
+            $insert['order_no'] = $box_no;
+            $insert['shipment_order_no'] = $transport_no;
             list($status,$msg) = self::$box_hook->boxInsert($insert);
-
             if(!$status) {
                 $this->delLock($key);
                 DB::rollBack();
@@ -202,6 +211,102 @@ class BoxService extends Service
         }
     }
 
+    /**
+     * 根据发货单包装
+     * @param $data
+     * @return array
+     */
+    public function transportBoxIn($data)
+    {
+//        $param = [
+//            [
+//                'order_no' => 'XD202309000155',
+//                'product_no' => '0301011816',
+//                'technology_material' => '多层板,单贴,新木纹钢板',
+//                'technology_name' => '',
+//                'wood_name' => '',
+//                'process_mark' => '',
+//                'num' => '5',
+//                'team_id' => '1',
+//            ],[
+//                'order_no' => 'XD202309000155',
+//                'product_no' => '0104010753',
+//                'technology_material' => '多层线条',
+//                'technology_name' => '',
+//                'wood_name' => '',
+//                'process_mark' => '',
+//                'num' => '4',
+//                'team_id' => '1',
+//            ],[
+//                'order_no' => 'XD202309000156',
+//                'product_no' => '0301011712',
+//                'technology_material' => '多层板,双贴,雨丝钢板',
+//                'technology_name' => '',
+//                'wood_name' => '',
+//                'process_mark' => '',
+//                'num' => '3',
+//            ],
+//        ];
+//        dd(json_encode($param));
+//        $params = [
+//            'params' => $param,
+//            'transport_no' => '123443212',
+//        ];
+
+
+        $param = $data['params'];
+        $shipment_order_no = $data['transport_no'];
+        $sale_order_nos = [];
+        $key_list = [];
+        foreach ($param as $v){
+            if(!in_array($v['order_no'],$sale_order_nos)) $sale_order_nos[] = $v['order_no'];
+            $key = $this->getKey($v);
+            $key_list[$key] = [
+                'num' => $v['num'],
+                'order_no' => $v['order_no'],
+                'team_id' => isset($v['team_id']) ? $v['team_id'] : 0,
+            ];
+        }
+        $sale_order_product_list = SaleOrdersProduct::wherein('out_order_no',$sale_order_nos)->get()->toArray();
+        $sale_order_product_key_list = [];
+        foreach ($sale_order_product_list as $v){
+            $key = $this->getKey($v);
+            $sale_order_product_key_list[$key] = $v['id'];
+        }
+
+        $param = [];
+//        var_dump($key_list);
+//        var_dump($sale_order_product_key_list);die;
+        foreach ($key_list as $k=>$v){
+            if(!isset($sale_order_product_key_list[$k])) return [false,$k.' 不存在!'];
+            $param[$v['order_no']][] = [
+                'id' => -(intval($sale_order_product_key_list[$k])),
+                'team_id' => $v['team_id'],
+                'params' => [$v['num']]
+            ];
+
+        }
+
+        $box_no = self::$box_hook->setOrderNo();
+        foreach ($param as $k=>$v){
+            $postParam = [
+                'order_no' => $k,
+                'param' => $v,
+                'box_no' => $box_no,
+                'transport_no' => $shipment_order_no,
+            ];
+            $this->boxIn($postParam);
+//            var_dump($postParam);die;
+        }
+        return [true,'保存成功'];
+
+
+    }
+    protected function getKey($data){
+
+        return $data['product_no'].'_'.$data['technology_material'].'_'.$data['technology_name'].'_'.$data['wood_name'].'_'.$data['process_mark'];
+    }
+
 
     /**
      * 包装详情1用于包装前

+ 1 - 0
routes/api.php

@@ -227,6 +227,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('boxOrderDetail', 'Api\BoxController@boxOrderDetail');
     $route->any('boxProductList', 'Api\BoxController@boxProductList');
     $route->any('box_in', 'Api\BoxController@boxIn');
+    $route->any('transportBoxIn', 'Api\BoxController@transportBoxIn');
     $route->any('boxOrderDetailByTop', 'Api\BoxController@boxOrderDetailByTop');
     $route->any('boxOrderDetailByOrderNo', 'Api\BoxController@boxOrderDetailByOrderNo');
     //包装扫码出库