cqpCow 1 éve
szülő
commit
b57eda0728

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

@@ -23,6 +23,19 @@ class BoxController extends BaseController
         }
     }
 
+    public function saveOutOrder(Request $request)
+    {
+        $service = new BoxService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->saveOutOrder($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function transportBoxIn(Request $request)
     {
         $service = new BoxService();
@@ -107,6 +120,30 @@ class BoxController extends BaseController
         }
     }
 
+    public function boxOrderGroupGwp(Request $request)
+    {
+        $service = new BoxService();
+        list($status,$data) = $service->boxOrderGroupGwp($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function boxOrderGroupGwpDetail(Request $request)
+    {
+        $service = new BoxService();
+        list($status,$data) = $service->boxOrderGroupGwpDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function transportNo(Request $request)
     {
         $service = new BoxService();

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

@@ -123,6 +123,7 @@ class BoxHookService extends Service
                 'ext_3' => isset($v['ext_3']) ? $v['ext_3'] : '',
                 'ext_4' => isset($v['ext_4']) ? $v['ext_4'] : '',
                 'ext_5' => isset($v['ext_5']) ? $v['ext_5'] : '',
+                'ext_8' => isset($v['ext_8']) ? $v['ext_8'] : '',
                 'team_id' => isset($v['team_id']) ? $v['team_id'] : '',
                 'shipment_order_no' => isset($v['shipment_order_no']) ? $v['shipment_order_no'] : '',
             ];

+ 114 - 26
app/Service/Box/BoxService.php

@@ -91,6 +91,8 @@ class BoxService extends Service
                 $ext_3 = $v['technology_name'];//工艺名称 改为颜色
                 $ext_4 = $v['wood_name'];//木皮 废弃
                 $ext_5 = $v['process_mark'];//工艺备注 废弃
+                $ext_8 = $v['product_title'];//产品名称
+
                 $out_order_no = $insert['out_order_no'] = $v['out_order_no'];
                 $top_id = $v['sale_orders_product_id'];
                 foreach ($detail as $vv){
@@ -103,6 +105,7 @@ class BoxService extends Service
                         'ext_3' => $ext_3,//颜色
                         'ext_4' => $ext_4,
                         'ext_5' => $ext_5,
+                        'ext_8' => $ext_8,//产品名称
                         'num' => $vv,
                         'price' => $v['price'],
                         'box_type' => 1,
@@ -139,6 +142,7 @@ class BoxService extends Service
                 $ext_3 = $v['technology_name'];//工艺名称 改为颜色
                 $ext_4 = $v['wood_name'];//木皮 废弃
                 $ext_5 = $v['process_mark'];//工艺备注 废弃
+                $ext_8 = $v['product_title'];//产品名称
                 $out_order_no = $insert['out_order_no'] = $v['out_order_no'];
                 $top_id = $v['id'];
                 foreach ($detail as $vv){
@@ -151,6 +155,7 @@ class BoxService extends Service
                         'ext_3' => $ext_3,
                         'ext_4' => $ext_4,
                         'ext_5' => $ext_5,
+                        'ext_8' => $ext_8,
                         'num' => $vv,
                         'price' => $v['price'],
                         'box_type' => $box_type,
@@ -200,6 +205,10 @@ class BoxService extends Service
         }
     }
 
+    public function saveOutOrder($data,$user){
+        //todo
+    }
+
     /**
      * 根据发货单包装(恒诚塑业不需要)
      * @param $data
@@ -292,12 +301,12 @@ class BoxService extends Service
 
 
     }
+
     protected function getKey($data){
 
         return $data['product_no'].'_'.$data['technology_material'].'_'.$data['technology_name'].'_'.$data['wood_name'].'_'.$data['process_mark'];
     }
 
-
     /**
      * 包装详情1用于包装前
      * @param $data
@@ -326,32 +335,49 @@ class BoxService extends Service
     }
 
     public function boxProductList($data){
-        if(empty($data['id'])) return [false,'请选择数据!'];
-        $sale_order_ids = $data['id'];
-        $model = SaleOrdersProduct::where('del_time',0)->wherein('id',$sale_order_ids)
+        if(empty($data['id']) && empty($data['out_order_no'])) return [false,'请选择数据!'];
+        if(! empty($data['id'])){
+            $sale_order_ids = $data['id'];
+        }else{
+            $ids = SaleOrdersProduct::where('del_time',0)
+                ->where('out_order_no','Like','%'. $data['out_order_no'] . '%')
+                ->select('id')
+                ->get()->toArray();
+            $sale_order_ids = array_column($ids,'id');
+            if(empty($sale_order_ids)) return [false, '暂无数据!'];
+        }
+
+        $model = SaleOrdersProduct::where('del_time',0)
+            ->whereIn('id',$sale_order_ids)
             ->select('id','out_order_no','order_no','customer_no','customer_name','product_no','product_title','product_size','crt_time as production_time','id as sale_orders_product_id','finished_num as dispatch_complete_quantity','box_num','technology_name','wood_name','crt_time','order_quantity','technology_material','technology_name','wood_name','process_mark')
-            ->orderBy('id','desc')->get()->toArray();
-        $product_list = ordersProduct::where('del_time',0)->wherein('sale_orders_product_id',$sale_order_ids)->select('id','out_order_no','customer_no','customer_name','product_no','sale_orders_product_id','product_title','product_size','dispatch_complete_quantity','box_num','technology_name','wood_name','crt_time',DB::raw('(production_quantity - scrapp_num) as production_quantity'),DB::raw('finished_num as dispatch_complete_quantity'),'technology_material','technology_name','wood_name','process_mark')->get()->toArray();
+            ->orderBy('id','desc')
+            ->get()->toArray();
+        $product_list = ordersProduct::where('del_time',0)
+            ->whereIn('sale_orders_product_id',$sale_order_ids)->select('id','out_order_no','customer_no','customer_name','product_no','sale_orders_product_id','product_title','product_size','box_num','technology_name','wood_name','crt_time',DB::raw('(production_quantity - scrapp_num) as production_quantity'),DB::raw('finished_num as dispatch_complete_quantity'),'technology_material','technology_name','wood_name','process_mark',"production_no")->get()->toArray();
         $model_key_list = [];
         foreach ($model as $v){
             $model_key_list[$v['id']] = $v;
         }
 
-        $product_key_num_list = [];
-        foreach ($product_list as $v){
-            if(!isset($product_key_num_list[$v['sale_orders_product_id']][$v['id']]))$product_key_num_list[$v['sale_orders_product_id']][$v['id']] = [
-                'product_num' => 0 ,
-                'box_num' => 0 ,
-            ];
-            $product_key_num_list[$v['sale_orders_product_id']][$v['id']]['product_num'] += $v['production_quantity'];
-            $product_key_num_list[$v['sale_orders_product_id']][$v['id']]['box_num'] += $v['box_num'];
-            $detail = $model_key_list[$v['sale_orders_product_id']];
-            $detail['box_type'] = 1;
-            $detail['id'] = $v['id'];
-            $detail['box_num'] = $v['box_num'];
-            $detail['un_box_num'] = $v['dispatch_complete_quantity'] - $v['box_num'];
-            $detail['type'] = 1;
-            $model[] = $detail;
+        //存在生产订单,组织数据
+        if(! empty($product_list)){
+            $product_key_num_list = [];
+            foreach ($product_list as $v){
+                if(!isset($product_key_num_list[$v['sale_orders_product_id']][$v['id']]))$product_key_num_list[$v['sale_orders_product_id']][$v['id']] = [
+                    'product_num' => 0 ,
+                    'box_num' => 0 ,
+                ];
+                $product_key_num_list[$v['sale_orders_product_id']][$v['id']]['product_num'] += $v['production_quantity'];
+                $product_key_num_list[$v['sale_orders_product_id']][$v['id']]['box_num'] += $v['box_num'];
+                $detail = $model_key_list[$v['sale_orders_product_id']];
+                $detail['box_type'] = 1;
+                $detail['id'] = $v['id'];
+                $detail['box_num'] = $v['box_num'];
+                $detail['un_box_num'] = $v['dispatch_complete_quantity'] - $v['box_num'];
+                $detail['type'] = 1;
+                $detail['production_no'] = $v['production_no'];
+                $model[] = $detail;
+            }
         }
 
         $return = [];
@@ -370,6 +396,7 @@ class BoxService extends Service
                 $product_key_list[$v['sale_orders_product_id']] = [
                     'out_order_no' => $v['out_order_no'],
                     'order_no' => $v['order_no'],
+                    'production_no' => "",
                     'production_time' => '未下生产',
                     'customer_no' => $v['customer_no'],
                     'customer_name' => $v['customer_name'],
@@ -393,6 +420,7 @@ class BoxService extends Service
                     'technology_name' => $v['technology_name'],
                     'wood_name' => $v['wood_name'],
                     'order_no' => $v['order_no'],
+                    'production_no' => $v['production_no'],
                     'process_mark' => $v['process_mark'],
                     'out_order_no' => $v['out_order_no'],
                     'production_time' => date('Y-m-d',$v['crt_time']),
@@ -510,21 +538,81 @@ class BoxService extends Service
 
     public function boxOrderGroup($data){
         $list = new Box();
-        if(empty($data['top_order_no'])&&empty($data['transport_no'])) return [false,'销售单或发货单必选一个'];
-        if(isset($data['top_order_no'])&&!empty($data['top_order_no'])) $list = $list->wherein('top_order_no',$data['top_order_no']);
-        if(!empty($data['transport_no'])) {
+        if(empty($data['top_order_no']) && empty($data['transport_no'])) return [false,'请输入单号!'];
+
+        if(! empty($data['top_order_no'])) $list = $list->whereIn('top_order_no',$data['top_order_no']);
+        if(! empty($data['transport_no'])) {
             if(is_array($data['transport_no'])){
-                $list = $list->wherein('shipment_order_no',$data['transport_no']);
+                $list = $list->whereIn('shipment_order_no',$data['transport_no']);
             }else{
                 $list = $list->where('shipment_order_no','Like','%'. $data['transport_no'] . '%');
             }
         }
-        $list = $list->select('top_order_no','order_no','crt_time','shipment_order_no')->where('del_time',0)->get()->toArray();
 
+        $list = $list->select('top_order_no','order_no','crt_time','shipment_order_no')->where('del_time',0)
+            ->get()->toArray();
 
         return [true,$list];
     }
 
+    public function boxOrderGroupGwp($data){
+        $out_order_no = $data['out_order_no'] ?? "";
+        $model = Box::where('del_time',0)
+            ->when(! empty($out_order_no), function ($query) use ($out_order_no) {
+            return $query->where('out_order_no','Like','%'. $out_order_no . '%');
+        })
+            ->select('out_order_no','ext_1','top_order_no','order_no','crt_time','shipment_order_no',DB::raw("count(id) as package_num"))
+            ->groupBy('out_order_no');
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillData($list);
+
+        return [true, $list];
+    }
+
+    public function fillData($data){
+        if(empty($data['data'])) return $data;
+
+        foreach ($data['data'] as $key => $value){
+            $model = new BoxDetail(['channel'=> $value['top_order_no']]);
+            $tmp = $model->where('del_time',0)
+                ->where('out_order_no',$value['out_order_no'])
+                ->select('num')
+                ->get()->toArray();
+            $data['data'][$key]['num'] = array_sum(array_column($tmp,'num'));
+        }
+
+        return $data;
+    }
+
+    public function boxOrderGroupGwpDetail($data){
+        if(empty($data['top_order_no']) || empty($data['out_order_no'])) return [false, '请选择数据!'];
+        $top_order_no = $data['top_order_no'];
+        $model = new BoxDetail(['channel'=> $top_order_no]);
+        $detail_list = $model->where('del_time',0)
+            ->where('out_order_no',$data['out_order_no'])
+            ->get()->toArray();
+
+        $return = [];
+        foreach ($detail_list as $value){
+            //销售订单号  包装单号  产品编码  颜色
+            $key = $value['out_order_no'] . $value['order_no'] . $value['ext_1'] . $value['ext_3'];
+            if(isset($return[$key])){
+                $return[$key]['num'] += $value['num'];
+            }else{
+                $return[$key] = [
+                    'out_order_no' =>  $value['out_order_no'],
+                    'ext_8' =>  $value['ext_8'],
+                    'ext_3' =>  $value['ext_3'],
+                    'num' =>  $value['num'],
+                    'crt_time' => date("Y-m-d",$value['crt_time']),
+                    'top_order_no' => $value['top_order_no'],
+                ];
+            }
+        }
+
+        return [true, array_values($return)];
+    }
 
     public function transportNo(){
         $list = Box::where('del_time',0)->where('shipment_order_no','<>','')->groupBy('shipment_order_no')->pluck('shipment_order_no')->toArray();

+ 7 - 7
app/Service/FinishedOrderService.php

@@ -131,13 +131,13 @@ class FinishedOrderService extends Service
                     $scrapp_model = new ScrappCount();
                     $scrapp_model->insert($scrapp);
                 }
-
-                if(! empty($value['waste_quantity'])){
-                    $num = $value['waste_quantity'];
-                    OrdersProduct::where('id',$value['order_product_id'])->update([
-                        'scrapp_num' => DB::raw("scrapp_num + {$num}"),
-                    ]);
-                }
+// todo 暂时注释
+//                if(! empty($value['waste_quantity'])){
+//                    $num = $value['waste_quantity'];
+//                    OrdersProduct::where('id',$value['order_product_id'])->update([
+//                        'scrapp_num' => DB::raw("scrapp_num + {$num}"),
+//                    ]);
+//                }
             }
 
             //反写数量

+ 2 - 2
app/Service/FyyOrderService.php

@@ -386,7 +386,7 @@ class FyyOrderService extends Service
     }
 
     public function getShipmentOrder($data,$user){
-        if(empty($data['time'][0]) || empty($data['time'][1])) return ['false', '时间范围不能为空!'];
+        if(empty($data['time'][0]) || empty($data['time'][1])) return ['false', '时间区间不能为空!'];
 
         $sqlServerModel = new FyySqlServerService($user);
         if($sqlServerModel->error) return [false,$sqlServerModel->error];
@@ -438,7 +438,7 @@ class FyyOrderService extends Service
     }
 
     public function getYyShipmentOrder($data,$user){
-        if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间范围不能为空!'];
+        if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间区间不能为空!'];
 
         $sqlServerModel = new FyySqlServerService($user);
         if($sqlServerModel->error) return [false,$sqlServerModel->error];

+ 38 - 8
app/Service/FyySqlServerService.php

@@ -472,7 +472,9 @@ class FyySqlServerService extends Service
     public function getDataFromDispatchListPage($data)
     {
         //检索条件
-        if (empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间不能为空'];
+        if (empty($data['time'][0]) || empty($data['time'][1])) return [false, '时间区间不能为空!'];
+        if(empty($data['page_size'])) $data['page_size'] = 20;
+        if(empty($data['page_index'])) $data['page_index'] = 1;
 
         $model = $this->db->table('DispatchList as a')
             ->leftJoin('DispatchLists as b', 'b.DLID', 'a.DLID')
@@ -494,7 +496,7 @@ class FyySqlServerService extends Service
 
         $list = $this->limit($model, '', $data);
 
-        if (!empty($list['data'])) {
+        if (! empty($list['data'])) {
             $product_no = array_unique(array_column($list['data'], 'cinvcode'));
             $messageMap = $this->db->table('Inventory as a')
                 ->join('ComputationUnit as b', function ($join) {
@@ -504,14 +506,42 @@ class FyySqlServerService extends Service
                 ->whereIn('a.cInvCode', $product_no)
                 ->pluck('b.cComUnitName as product_unit', 'a.cInvCode')
                 ->toArray();
+            $list['data'] = Collect($list['data'])->map(function ($object) {
+                return (array)$object;
+            })->toArray();
+
+            $new_data = [];
+            foreach ($list['data'] as $value) {
+                $unit = $messageMap[$value['cinvcode']] ?? '';
+                $iquantity = intval($value['iquantity']);
+                $out_quantity = intval($value['out_quantity']);
+                $quantity = intval($value['quantity']);
+                $inum = intval($value['inum']);
+                $pro = [
+                    "cinvcode" => $value['cinvcode'],
+                    "product_title" => $value['product_title'],
+                    "cfree1" => $value['cfree1'],
+                    "iquantity" => $iquantity,
+                    "inum" => $inum,
+                    "out_quantity" => $out_quantity,
+                    "product_size" => $value['product_size'] ?? "",
+                    "quantity" => $quantity,
+                    "unit" => $unit
+                ];
 
-            foreach ($list['data'] as $key => $value) {
-                $list['data'][$key] = (array)$value;
-                $list['data'][$key]['unit'] = $messageMap[$value->cinvcode] ?? '';
-                $list['data'][$key]['iquantity'] = intval($value->iquantity);
-                $list['data'][$key]['out_quantity'] = intval($value->out_quantity);
-                $list['data'][$key]['quantity'] = intval($value->quantity);
+                if(isset($new_data[$value['cdlcode']])){
+                    $new_data[$value['cdlcode']]['product'][] = $pro;
+                }else{
+                    $new_data[$value['cdlcode']] = [
+                        "cdlcode" => $value['cdlcode'],
+                        "csocode" => $value['csocode'],
+                        "customer_name" => $value['customer_name'] ?? "",
+                        "product" => [$pro]
+                    ];
+                }
             }
+
+            $list['data'] = array_values($new_data);
         }
 
         return $list;

+ 1 - 1
app/Service/Service.php

@@ -24,7 +24,7 @@ class Service
     //分页共用
     public function limit($db, $columns, $request)
     {
-        $per_page = $request['page_size'] ?? 9999;
+        $per_page = $request['page_size'] ?? 20;
         $page = $request['page_index'] ?? 1;
         $return = $db->paginate($per_page, $columns, 'page', $page)->toArray();
 

+ 8 - 3
routes/api.php

@@ -128,7 +128,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('fyyMobileList', 'Api\FyyOrderController@orderMobileList');
     //销售订单----------------------
 
-    //获取发货单
+    //获取发货单 全部返回
     $route->any('getShipmentOrder', 'Api\FyyOrderController@getShipmentOrder');
 
     //生产订单----------------------
@@ -213,7 +213,9 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('boxDetail', 'Api\BoxController@boxDetail');
     $route->any('boxOrderDetail', 'Api\BoxController@boxOrderDetail');
     $route->any('boxProductList', 'Api\BoxController@boxProductList');
-    $route->any('box_in', 'Api\BoxController@boxIn');
+    $route->any('boxOrderGroupGwp', 'Api\BoxController@boxOrderGroupGwp');
+    $route->any('boxOrderGroupGwpDetail', 'Api\BoxController@boxOrderGroupGwpDetail');
+    $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');
@@ -224,9 +226,12 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('transportDetail', 'Api\BoxController@transportDetail');
     //包装扫码出库
     $route->any('fyySaveOutOrder','Api\FyyOrderController@fyySaveOutOrder');
+    //扫码出库
+    $route->any('saveOutOrder','Api\BoxController@saveOutOrder');
 
-    //发货包装单
+    //发货单 分页
     $route->any('getYyShipmentOrder', 'Api\FyyOrderController@getYyShipmentOrder');
+    //发货包装单
     $route->any('boxAdd','Api\BoxController@boxAdd');
     $route->any('boxFhDetail','Api\BoxController@boxFhDetail');
     $route->any('boxFhDel','Api\BoxController@boxFhDel');