Ver código fonte

智能搜索

cqp 6 meses atrás
pai
commit
8a2ac794ff

+ 24 - 3
app/Service/ConstructionService.php

@@ -30,6 +30,7 @@ use App\Model\ScheduleInfo;
 use App\Model\SeeRange;
 use App\Model\Storehouse;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 //use Barryvdh\DomPDF\Facade as PDF;
 use Barryvdh\DomPDF\PDF;
@@ -634,9 +635,19 @@ class ConstructionService extends Service
             $customer_id = $service_2->titleSearch($user, $data, $data['smart_search']);
             $customer_id_2 = $service_2->contactSearch($data['smart_search']);
             $customer_id = array_unique(array_merge_recursive($customer_id,$customer_id_2));
-            $model->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
-                ->orWhereIn('customer_id', $customer_id)
-                ->orWhereIn('sales_order_id',$sale_id);
+            $model->where(function (Builder $query) use ($data, $customer_id,$sale_id) {
+                $query->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
+                    ->orWhereIn('customer_id', $customer_id)
+                    ->orWhereIn('sales_order_id',$sale_id);
+            });
+        }
+        if(! empty($data['crt_title'])){
+            $id = (new EmployeeService())->searchByEmpName($data['crt_title']);
+            $model->whereIn('crt_id', $id);
+        }
+        if(! empty($data['js'])){
+            $js = $this->searchByJs($data['js']);
+            $model->whereIn('id',$js);
         }
         if(! empty($data['wx_crt_time'][0]) && ! empty($data['wx_crt_time'][1])) {
             $model->where('crt_time','>=',$data['wx_crt_time'][0]);
@@ -646,6 +657,16 @@ class ConstructionService extends Service
         return $model;
     }
 
+    public function searchByJs($js){
+        $id = (new EmployeeService())->searchByEmpName($js);
+        $construction_id = ConstructionInfo::where('del_time',0)
+            ->where('type', ConstructionInfo::type_three)
+            ->whereIn('employee_id', $id)
+            ->select('construction_id')
+            ->get()->toArray();
+        return array_unique(array_column($construction_id,'construction_id'));
+    }
+
     /**
      * 施工订单列表
      * @param $data

+ 6 - 3
app/Service/CustomerService.php

@@ -14,6 +14,7 @@ use App\Model\RoleMenuButton;
 use App\Model\SeeRange;
 use App\Model\WxEmployeeOfficial;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -650,9 +651,11 @@ class CustomerService extends Service
         if(! empty($data['smart_search'])){
             $customer_id = $this->contactSearch($data['smart_search']);
             $progress_stage_id = (new RangeService())->customerBasicTypeSearch($data['smart_search'],[5]);
-            $model->where('title', 'LIKE', '%'.$data['smart_search'].'%')
-                ->orWhereIn('id', $customer_id)
-                ->orWhereIn('progress_stage', $progress_stage_id);
+            $model->where(function (Builder $query) use ($data, $customer_id,$progress_stage_id) {
+                $query->where('title', 'LIKE', '%'.$data['smart_search'].'%')
+                    ->orWhereIn('id', $customer_id)
+                    ->orWhereIn('progress_stage', $progress_stage_id);
+            });
         }
 
         if(! empty($data['wx_crt_time'][0]) && ! empty($data['wx_crt_time'][1])) {

+ 8 - 0
app/Service/EmployeeService.php

@@ -1725,4 +1725,12 @@ class EmployeeService extends Service
         $top = $user['depart_top'] ?? [];
         return [true, ['top' => $top]];
     }
+
+    public function searchByEmpName($emp_name){
+        $emp = Employee::where('del_time',0)
+            ->where('emp_name', 'LIKE', '%'.$emp_name.'%')
+            ->select('id')
+            ->get()->toArray();
+        return array_column($emp,'id');
+    }
 }

+ 9 - 2
app/Service/PaymentReceiptService.php

@@ -11,6 +11,7 @@ use App\Model\PurchaseOrderSpecial;
 use App\Model\ReturnExchangeOrder;
 use App\Model\SalesOrder;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 
 class PaymentReceiptService extends Service
@@ -435,6 +436,10 @@ class PaymentReceiptService extends Service
         if(! empty($data['data_type'])) $model->where('data_type', $data['data_type']);
         if(! empty($data['type'])) $model->where('type', $data['type']);
         if(! empty($data['account'])) $model->where('account',$data['account']);
+        if(! empty($data['account_title'])){
+            $id = (new BasicTypeService())->basicTypeSearch($data['account_title']);
+            $model->whereIn('account',$id);
+        }
         if(! empty($data['pay_way'])) $model->where('pay_way',$data['pay_way']);
         if(! empty($data['mark'])) $model->where('mark', 'LIKE', '%'.$data['mark'].'%');
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
@@ -453,8 +458,10 @@ class PaymentReceiptService extends Service
         }
         if(! empty($data['smart_search'])){
             $id = $this->searchForDataOrder($data['smart_search']);
-            $model->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
-                ->OrWhereIn('id',$id);
+            $model->where(function (Builder $query) use ($data, $id) {
+                $query->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
+                    ->OrWhereIn('id',$id);
+            });
         }
         if(! empty($data['wx_crt_time'][0]) && ! empty($data['wx_crt_time'][1])) {
             $model->where('crt_time','>=',$data['wx_crt_time'][0]);

+ 16 - 3
app/Service/PurchaseOrderService.php

@@ -9,6 +9,7 @@ use App\Model\Employee;
 use App\Model\InvoiceOrder;
 use App\Model\PaymentReceipt;
 use App\Model\PaymentReceiptInfo;
+use App\Model\Product;
 use App\Model\PurchaseOrder;
 use App\Model\PurchaseOrderFile;
 use App\Model\PurchaseOrderInfo;
@@ -23,6 +24,7 @@ use App\Model\SportsBagProductInfo;
 use App\Model\Storehouse;
 use App\Model\Supplier;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 
@@ -252,6 +254,7 @@ class PurchaseOrderService extends Service
         $order = $order->toArray();
 
         $order['activity_product'] = $order['file'] = [];
+        $order['top_depart_title'] = Depart::where('id',$order['top_depart_id'])->value('title') ?? "";
         $order['purchase_type_title'] = BasicType::where('id',$order['purchase_type'])->value('title') ?? '';
         $order['storehouse_title'] = Storehouse::where('id',$order['storehouse_id'])->value('title');
         $supplier = Supplier::where('id',$order['supplier'])->first();
@@ -518,8 +521,10 @@ class PurchaseOrderService extends Service
         }
         if(! empty($data['smart_search'])){
             $sale_id = (new SalesOrderService())->orderNumberSearch($user, $data, $data['smart_search']);
-            $model->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
-                ->orWhereIn('sales_order_id',$sale_id);
+            $model->where(function (Builder $query) use ($data, $sale_id) {
+                $query->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
+                    ->orWhereIn('sales_order_id',$sale_id);
+            });
         }
         if(! empty($data['wx_crt_time'][0]) && ! empty($data['wx_crt_time'][1])) {
             $model->where('crt_time','>=',$data['wx_crt_time'][0]);
@@ -774,12 +779,20 @@ class PurchaseOrderService extends Service
             $res = $this->checkNumber($data['purchase_total']);
             if(! $res) return [false, '采购总价请输入不超过两位小数并且大于0的数值'];
         }
-        $sports_bag_id = [];
+        $sports_bag_id = [];$product_id = [];
         foreach ($data['product'] as $value){
             if(empty($value['number'])) return [false,'产品数量不能为空'];
             $res = $this->checkNumber($value['number']);
             if(! $res) return [false,'请输入正确的产品数量'];
             if(! empty($value['sports_bag_id']) && ! in_array($value['sports_bag_id'], $sports_bag_id)) $sports_bag_id[] = $value['sports_bag_id'];
+            $product_id[] = $value['product_id'];
+        }
+        $maps = Product::where("del_time",0)
+            ->whereIn('id',$product_id)
+            ->pluck('title','id')
+            ->toArray();
+        foreach ($data['product'] as $value){
+            if(! isset($maps[$value['product_id']])) return [false, '产品不存在'];
         }
 
         //所属部门 以及 顶级部门

+ 14 - 11
app/Service/ReturnExchangeOrderService.php

@@ -15,6 +15,7 @@ use App\Model\SalesOrderProductInfo;
 use App\Model\SeeRange;
 use App\Model\Storehouse;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 
 class ReturnExchangeOrderService extends Service
@@ -365,17 +366,19 @@ class ReturnExchangeOrderService extends Service
         if(! empty($data['smart_search'])){
             $sale_id = (new SalesOrderService())->orderNumberSearch($user, $data, $data['smart_search']);
             $purchase_id = (new PurchaseOrderService())->orderNumberSearch($user, $data, $data['smart_search']);
-            $model->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
-               ->when(! empty($sale_id), function ($query) use ($sale_id) {
-                   $id = implode(',',$sale_id);
-                   $search = "(type = " . ReturnExchangeOrder::Order_type . " And data_id In ($id))";
-                   return $query->OrWhereRaw($search);
-               })
-               ->when(! empty($purchase_id), function ($query) use ($purchase_id) {
-                   $id = implode(',',$purchase_id);
-                   $search = "(type = " . ReturnExchangeOrder::Order_type2 . " And data_id In ($id))";
-                   return $query->OrWhereRaw($search);
-               });
+            $model->where(function (Builder $query) use ($data, $sale_id,$purchase_id) {
+                $query->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
+                    ->when(! empty($sale_id), function ($query) use ($sale_id) {
+                        $id = implode(',',$sale_id);
+                        $search = "(type = " . ReturnExchangeOrder::Order_type . " And data_id In ($id))";
+                        return $query->OrWhereRaw($search);
+                    })
+                    ->when(! empty($purchase_id), function ($query) use ($purchase_id) {
+                        $id = implode(',',$purchase_id);
+                        $search = "(type = " . ReturnExchangeOrder::Order_type2 . " And data_id In ($id))";
+                        return $query->OrWhereRaw($search);
+                    });
+            });
         }
 
        if(! empty($data['wx_crt_time'][0]) && ! empty($data['wx_crt_time'][1])) {

+ 6 - 2
app/Service/SalesOrderService.php

@@ -31,6 +31,7 @@ use App\Model\U8Job;
 use App\Model\WxEmployee;
 use App\Service\Weixin\WxSendMessageService;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -963,8 +964,11 @@ class SalesOrderService extends Service
             $customer_id = $service->contactSearch($data['smart_search']);
             $customer_id_2 = $service->titleSearch($user, $data, $data['smart_search']);
             $customer_id = array_unique(array_merge_recursive($customer_id,$customer_id_2));
-            $model->where('order_number', 'LIKE', '%'.$data['smart_search'].'%')
-                ->orWhereIn('customer_id', $customer_id);
+
+            $model->where(function (Builder $query) use ($data, $customer_id) {
+                $query->where('order_number', 'LIKE', '%' . $data['smart_search'] . '%')
+                    ->orWhereIn('customer_id', $customer_id);
+            });
         }
         if(! empty($data['wx_crt_time'][0]) && ! empty($data['wx_crt_time'][1])) {
             $model->where('crt_time','>=',$data['wx_crt_time'][0]);