cqp 3 månader sedan
förälder
incheckning
ab092ed8e5
2 ändrade filer med 94 tillägg och 1 borttagningar
  1. 1 1
      app/Http/Controllers/Api/LoginController.php
  2. 93 0
      app/Service/ApplyOrderService.php

+ 1 - 1
app/Http/Controllers/Api/LoginController.php

@@ -30,7 +30,7 @@ class LoginController extends BaseController
         $jwtToken = TokenService::getToken($return['id'], $data['password']);
         $jwtToken = self::PERSONAL_COMPUTER . $jwtToken;
 
-        return $this->json_return(200,'', ['token' => $jwtToken, 'emp_name'=>$return['name']]);
+        return $this->json_return(200,'', ['token' => $jwtToken, 'emp_name'=>$return['name'],"emp_id"=>$return['id']]);
     }
 
     public function loginMobile(Request $request){

+ 93 - 0
app/Service/ApplyOrderService.php

@@ -5,6 +5,7 @@ namespace App\Service;
 use App\Model\ApplyOrder;
 use App\Model\ApplyOrderDetail;
 use App\Model\Box;
+use App\Model\BoxDetail;
 use App\Model\DispatchSub;
 use App\Model\Employee;
 use App\Model\EmployeeTeamPermission;
@@ -12,6 +13,7 @@ use App\Model\InOutRecord;
 use App\Model\Process;
 use App\Model\ReportWorking;
 use App\Model\ReportWorkingDetail;
+use App\Model\SaleOrdersProduct;
 use App\Model\Team;
 use Illuminate\Support\Facades\DB;
 
@@ -181,6 +183,38 @@ class ApplyOrderService extends Service
                 ->get()->toArray();
             $model->whereIn('id', array_unique(array_column($detail,'apply_order_id')));
         }
+        if(! empty($data['sale_order_number'])){
+            if(in_array($data['type'], [ApplyOrder::type_one,ApplyOrder::type_two])){
+                $dispatch_id = DispatchSub::where('del_time',0)
+                    ->where('out_order_no', 'LIKE', '%'.$data['sale_order_number'].'%')
+                    ->select('id')
+                    ->get()->toArray();
+                $dispatch_id = array_column($dispatch_id,'id');
+                $detail = ApplyOrderDetail::where('del_time',0)
+                    ->where('type', $data['type'])
+                    ->whereIn('data_id', $dispatch_id)
+                    ->select('apply_order_id')
+                    ->get()->toArray();
+                $model->whereIn('id', array_unique(array_column($detail,'apply_order_id')));
+            }else{
+                $no = SaleOrdersProduct::where('del_time',0)
+                    ->where('out_order_no', 'LIKE', '%'.$data['sale_order_number'].'%')
+                    ->select('order_no')
+                    ->get()->toArray();
+                $no = array_unique(array_column($no,'order_no'));
+                $box_id = Box::where('del_time',0)
+                    ->whereIn('top_order_no', $no)
+                    ->select('id')
+                    ->get()->toArray();
+                $box_id = array_column($box_id,'id');
+                $detail = ApplyOrderDetail::where('del_time',0)
+                    ->where('type', $data['type'])
+                    ->whereIn('data_id', $box_id)
+                    ->select('apply_order_id')
+                    ->get()->toArray();
+                $model->whereIn('id', array_unique(array_column($detail,'apply_order_id')));
+            }
+        }
 
         $list = $this->limit($model,'',$data);
         $list = $this->fillData($list);
@@ -195,11 +229,70 @@ class ApplyOrderService extends Service
             ->pluck('emp_name','id')
             ->toArray();
 
+        $array1 = $array2 = [];
+        foreach ($data['data'] as $value){
+            if(in_array($value['type'], [ApplyOrder::type_one,ApplyOrder::type_two])){
+                $array1[] = $value['id'];
+            }else{
+                $array2[] = $value['id'];
+            }
+        }
+        $order1 = ApplyOrderDetail::whereIn('type',[ApplyOrder::type_one,ApplyOrder::type_two])
+            ->whereIn('apply_order_id', $array1)
+            ->select('data_id','apply_order_id')
+            ->get()->toArray();
+        $order1_map = [];
+        foreach ($order1 as $value){
+            $order1_map[$value['apply_order_id']][] = $value['data_id'];
+        }
+        $order2 = ApplyOrderDetail::whereNotIn('type',[ApplyOrder::type_one,ApplyOrder::type_two])
+            ->whereIn('apply_order_id', $array2)
+            ->select('data_id','apply_order_id')
+            ->get()->toArray();
+        $order2_map = [];
+        foreach ($order2 as $value){
+            $order2_map[$value['apply_order_id']][] = $value['data_id'];
+        }
+        $map1 = DispatchSub::whereIn('id', array_unique(array_column($order1,'data_id')))
+            ->pluck('out_order_no','id')
+            ->toArray();
+        $map2 = Box::whereIn('id', array_unique(array_column($order2,'data_id')))
+            ->pluck('top_order_no','id')
+            ->toArray();
+        $map2_fin = SaleOrdersProduct::whereIn('order_no',array_unique(array_values($map2)))
+            ->pluck('out_order_no','order_no')
+            ->toArray();
         foreach ($data['data'] as $key => $value){
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['status_title'] = ApplyOrder::$state_name[$value['status']] ?? "";
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['apply_name'] = $emp[$value['apply_id']] ?? '';
+            if(in_array($value['type'], [ApplyOrder::type_one,ApplyOrder::type_two])){
+                $order_tmp = $order1_map[$value['id']] ?? [];
+                $order_tmp = array_unique($order_tmp);
+                $sale_order_number = [];
+                foreach ($order_tmp as $v){
+                    $str = $map1[$v] ?? '';
+                    if(empty($str)) continue;
+                    $sale_order_number[] = $str;
+                }
+                $sale_order_number = array_unique($sale_order_number);
+                $sale_order_number = implode(',',$sale_order_number);
+                $data['data'][$key]['sale_order_number'] = $sale_order_number;
+            }else{
+                $order_tmp = $order2_map[$value['id']] ?? [];
+                $order_tmp = array_unique($order_tmp);
+                $sale_order_number = [];
+                foreach ($order_tmp as $v){
+                    $m2_t = $map2[$v] ?? '';
+                    $m2_t = $map2_fin[$m2_t] ?? "";
+                    if(empty($m2_t)) continue;
+                    $sale_order_number[] = $m2_t;
+                }
+                $sale_order_number = array_unique($sale_order_number);
+                $sale_order_number = implode(',',$sale_order_number);
+                $data['data'][$key]['sale_order_number'] = $sale_order_number;
+            }
         }
 
         return $data;