فهرست منبع

Merge branch 'zengjun' of ssh://was.baoshi56.com:10022/var/git/bswas

LD 5 سال پیش
والد
کامیت
9b8228c5f6

+ 423 - 0
app/Filters/OrderIssueFilters.php

@@ -0,0 +1,423 @@
+<?php
+
+
+namespace App\Filters;
+
+
+use App\Commodity;
+use App\Order;
+use App\OrderIssue;
+use App\OrderIssueProcessLog;
+use App\OrderIssueRejectedBill;
+use App\OrderPackage;
+use App\OrderPackageCommodities;
+use App\RejectedBill;
+use App\RejectedBillItem;
+use App\Shop;
+use App\UserWorkgroup;
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use PhpMyAdmin\Server\UserGroups;
+
+
+class OrderIssueFilters
+{
+    protected $request;
+    protected $queryBuilder;
+    protected $orderQuery;
+    protected $commodityQuery;
+    protected $orderPackageQuery;
+    protected $orderPackageCommodityQuery;
+    protected $orderIssueRejectedBIllQuery;
+    protected $rejectedBillQuery;
+    protected $rejectedBillItemQuery;
+    protected $orderIssueProcessLogQuery;
+    protected $shopQuery;
+    protected $filters = [
+        'log_content',
+        'is_imported',
+        'is_new_rejecting',
+        'logistic_id',
+        'custom_code',
+        'hiddenTag',
+        'client_code',
+        'consignee_name',
+        'consignee_phone',
+        'logistic_number',
+        'good_barcode',
+        'good_name',
+        'send_client_code',
+        'id_quality_label',
+        'id',
+        'created_at_start',
+        'created_at_end',
+        'order_issue_type_id',
+        'logistic_indemnity_money',
+        'baoshi_indemnity_money',
+        'rejectingStatus',
+        'order_issue_ids',
+        'settlement_at_start',
+        'settlement_at_end',
+        'sendOrderClientCode',
+        'sendOrderLogisticNumber',
+        'user_workgroups',
+        'shop_name',
+        'finance_confirm',
+        'logistic_number_return',
+        'final_status'
+    ];
+    protected $array_filter;
+    protected $params = [];
+
+    public function __construct(Request $request)
+    {
+        $this->request = $request;
+        $this->params = $request->all();
+        $this->array_filter = array_filter($this->request->only($this->filters));
+    }
+
+    private function getOrderQuery()
+    {
+        if(!$this->orderQuery)
+            $this->orderQuery = Order::query()->selectRaw('id');
+        return $this->orderQuery;
+    }
+
+    private function getCommodityQuery()
+    {
+        if(!$this->commodityQuery)
+            $this->commodityQuery = Commodity::query()->selectRaw('id');
+        return  $this->commodityQuery;
+    }
+
+    private function getOrderPackageQuery()
+    {
+        if(is_null($this->orderPackageQuery))
+            $this->orderPackageQuery = OrderPackage::query()->selectRaw('order_packages.order_id');
+        return $this->orderPackageQuery;
+    }
+
+    private function getRejectedBillQuery()
+    {
+        if(!$this->rejectedBillQuery)
+            $this->rejectedBillQuery= RejectedBill::query()->selectRaw('logistic_number_return');
+        return $this->rejectedBillQuery;
+    }
+
+    private function getRejectedBillItemQuery()
+    {
+        if(!$this->rejectedBillItemQuery)
+            $this->rejectedBillItemQuery =  RejectedBillItem::query()->selectRaw('id_rejected_bill');
+        return $this->rejectedBillItemQuery;
+    }
+
+    private function getOrderPackageCommodityQuery()
+    {
+        if(!$this->orderPackageCommodityQuery)
+            $this->orderPackageCommodityQuery = OrderPackageCommodities::query()->selectRaw('order_package_commodities.order_package_id');
+        return $this->orderPackageCommodityQuery;
+    }
+
+    private function getOrderIssueRejectedBillQuery()
+    {
+        if(!$this->orderIssueRejectedBIllQuery)
+            $this->orderIssueRejectedBIllQuery = OrderIssueRejectedBill::query()->selectRaw('order_issue_id');
+        return $this->orderIssueRejectedBIllQuery;
+    }
+
+    private function getOrderIssueProcessLogQuery()
+    {
+        if(!$this->orderIssueProcessLogQuery)
+            $this->orderIssueProcessLogQuery = OrderIssueProcessLog::query()->selectRaw('order_issue_id');
+        return $this->orderIssueProcessLogQuery;
+    }
+
+    private function getShopQuery()
+    {
+        if(!$this->shopQuery)
+            $this->shopQuery = Shop::query()->selectRaw('id');
+        return $this->shopQuery;
+    }
+
+    public function apply($builder)
+    {
+        $this->queryBuilder = $builder;
+        $this->beforeApply();
+        foreach ($this->array_filter as $filter => $value) {
+            if (method_exists($this, $filter)) {
+                $this->$filter($value, $this->queryBuilder);
+            }
+        }
+        $this->afterApply();
+        return $this->queryBuilder;
+    }
+
+    private function beforeApply()
+    {
+        if(empty($this->params['hidden_tag']))
+            $this->queryBuilder->whereNull('order_issues.hidden_tag');
+
+        if(isset($this->params['data'])){
+            $ids = explode(',',$this->params['data']);
+            $this->id($ids);
+        }elseif(!($this->params['is_handle'] ?? false) && !($this->params['final_status'] ?? false)){
+            if(!(isset($this->params['settlement_at_start']) || isset($this->params['settlement_at_end']))) {
+                $this->queryBuilder->where(function ($query) {
+                    $query->whereNotIn('order_issues.final_status', ['已解决', '已归档'])->orWhereNull('order_issues.final_status');
+                });
+            }
+        }
+
+        $user = Auth::user();
+        $owner_ids = $user ? app('UserService')->getPermittingOwnerIds($user) : [];
+        if (isset($this->params['owner_id'])){
+            $this->searchWay($this->getOrderQuery(),$this->params['owner_id'],'orders.owner_id');
+        } else{
+            $this->getOrderQuery()->whereIn('owner_id',$owner_ids);
+        }
+    }
+
+    public function afterApply()
+    {
+        if($this->commodityQuery)
+            $this->getOrderPackageCommodityQuery()->whereIn('commodity_id',$this->commodityQuery);
+
+        if($this->orderPackageCommodityQuery)
+            $this->getOrderPackageQuery()->whereIn('order_packages.id',$this->orderPackageCommodityQuery);
+
+        if($this->orderPackageQuery)
+            $this->getOrderQuery()->whereIn('order_id',$this->orderPackageQuery);
+
+        if($this->shopQuery)
+            $this->getOrderQuery()->whereIn('shop_id',$this->shopQuery);
+
+        if($this->orderQuery)
+            $this->queryBuilder->whereIn('order_issues.order_id',$this->orderQuery);
+
+        if($this->rejectedBillItemQuery)
+            $this->getRejectedBillQuery()->whereIn('id',$this->rejectedBillItemQuery);
+
+        if($this->rejectedBillQuery)
+            $this->getOrderIssueRejectedBIllQuery()->whereIn('logistic_number_return',$this->rejectedBillQuery);
+
+        if($this->orderIssueRejectedBIllQuery)
+            $this->queryBuilder->whereIn('order_issues.id',$this->orderIssueRejectedBIllQuery);
+
+        if($this->orderIssueProcessLogQuery)
+            $this->queryBuilder->whereIn('order_issues.id',$this->orderIssueProcessLogQuery);
+
+    }
+
+    private function isSearchLike($str)
+    {
+        if (substr($str, 0, 1) == "%" || substr($str, strlen($str) - 1, 1) == "%") {
+            return true;
+        }
+        return false;
+    }
+
+    private function searchWay($query, $param, $column)
+    {
+        if ($this->isSearchLike($param)) {
+            $query->where($column, 'like', $param);
+        } else {
+            $query->whereIn($column, array_filter(preg_split('/[,, ]+/is', $param)));
+        }
+        return $query;
+    }
+
+    public function log_content($log_content)
+    {
+        $order_issue_process_log_query = OrderIssueProcessLog::query()->selectRaw('order_issue_id')->where('content','like',$log_content);
+        if(!$this->params['addtime']){
+            $order_issue_process_log_query->where('created_at', '>=', Carbon::now()->subDays(31));
+        }else{
+            $order_issue_process_log_query->where('created_at', '>=', Carbon::now()->subDays($this->params['addtime']));
+        }
+        $this->queryBuilder->whereIn('order_issues.id',$order_issue_process_log_query);
+    }
+
+    public function is_imported($is_imported)
+    {
+        $this->queryBuilder->where('order_issues.imported_status',$is_imported);
+    }
+
+    public function is_new_rejecting($is_new_rejecting)
+    {
+        $this->queryBuilder->where('order_issues.is_new_rejecting',$is_new_rejecting);
+    }
+
+    public function logistic_id($logistic_id)
+    {
+        $this->getOrderQuery()->where('orders.logistic_id',$logistic_id);
+    }
+
+    public function custom_code($custom_code)
+    {
+        $this->queryBuilder->where('order_issues.custom_code',$custom_code);
+    }
+
+    public function hiddenTag($hiddenTag)
+    {
+        $this->queryBuilder->where('order_issues.hidden_tag',$hiddenTag);
+    }
+
+    public function client_code($client_code)
+    {
+        $this->searchWay($this->getOrderQuery(),$client_code,'orders.client_code');
+    }
+
+    public function consignee_name($consignee_name)
+    {
+        $this->searchWay($this->getOrderQuery(),$consignee_name,'orders.consignee_name');
+    }
+
+    public function consignee_phone($consignee_name)
+    {
+        $this->searchWay($this->getOrderQuery(),$consignee_name,'orders.consignee_phone');
+    }
+
+    public function logistic_number($logistic_number)
+    {
+        $this->searchWay($this->getOrderPackageQuery(),$logistic_number,'logistic_number');
+    }
+
+    public function good_barcode($good_barcode)
+    {
+        $this->searchWay($this->getCommodityQuery(),$good_barcode,'sku');
+    }
+
+    public function good_name($good_name)
+    {
+        $this->searchWay($this->getCommodityQuery(),$good_name,'name');
+    }
+
+    public function send_client_code($send_client_code)
+    {
+        $this->searchWay($this->queryBuilder,$send_client_code,'order_issues.second_client_no');
+    }
+
+    public function logistic_number_return($logistic_number_return)
+    {
+        $this->searchWay($this->getOrderIssueRejectedBillQuery(),$logistic_number_return,'logistic_number_return');
+     }
+
+    public function id_quality_label($id_quality_label)
+    {
+        $this->getRejectedBillItemQuery()->where('id_quality_label',$id_quality_label);
+    }
+
+    public function id($id)
+    {
+        $this->queryBuilder->whereIn('order_issues.id',$id);
+    }
+
+    public function created_at_start($created_at_start)
+    {
+        $this->queryBuilder->where('order_issues.created_at', '>=', $created_at_start . " 00:00:00");
+    }
+
+    public function created_at_end($created_at_end)
+    {
+        $this->queryBuilder->where('order_issues.created_at', '<=', $created_at_end . " 23:59:59");
+    }
+
+    public function order_issue_type_id($order_issue_type_id)
+    {
+        $this->searchWay($this->queryBuilder,$order_issue_type_id,'order_issues.order_issue_type_id');
+    }
+
+    public function logistic_indemnity_money($logistic_indemnity_money)
+    {
+        if($logistic_indemnity_money==='是')
+            $this->queryBuilder->whereNotNull('order_issues.logistic_indemnity_money');
+        elseif($logistic_indemnity_money==='否')
+            $this->queryBuilder->whereNull('order_issues.logistic_indemnity_money');
+    }
+
+    public function baoshi_indemnity_money($baoshi_indemnity_money)
+    {
+        if($baoshi_indemnity_money==='是')
+            $this->queryBuilder->whereNotNull('order_issues.baoshi_indemnity_money');
+        elseif($baoshi_indemnity_money==='否')
+            $this->queryBuilder->whereNull('order_issues..baoshi_indemnity_money');
+    }
+
+    public function rejectingStatus($rejectingStatus)
+    {
+        $this->queryBuilder->where('order_issues.rejecting_status',$rejectingStatus);
+    }
+
+    public function order_issue_ids($order_issue_ids)
+    {
+        $this->searchWay($this->queryBuilder,$order_issue_ids,'order_issues.id');
+    }
+
+    public function settlement_at_start($settlement_at_start)
+    {
+        $this->getOrderIssueProcessLogQuery()->where('created_at','>=',$settlement_at_start.' 00:00:00')->where('type','结束');
+    }
+
+    public function settlement_at_end($settlement_at_end)
+    {
+        $this->getOrderIssueProcessLogQuery()->where('created_at','<=',$settlement_at_end.' 23:59:59')->where('type','结束');
+    }
+
+    public function sendOrderClientCode($sendOrderClientCode)
+    {
+        $this->searchWay($this->queryBuilder,$sendOrderClientCode,'order_issues.second_client_no');
+    }
+
+    public function user_workgroups($user_work_groups)
+    {
+        if(is_string($user_work_groups)){
+            $user_work_groups = explode(',', $user_work_groups);
+        }
+        $this->queryBuilder->whereIn('order_issues.id',function($query)use($user_work_groups){
+            $query->from('order_issue_user_workgroup')->selectRaw('order_issue_id')->whereIn('user_workgroup_id',$user_work_groups);
+        });
+    }
+
+    public function sendOrderLogisticNumber($sendOrderLogisticNumber)
+    {
+        $order_issue_query = OrderIssue::query()->selectRaw('id');
+        $this->searchWay($order_issue_query,$sendOrderLogisticNumber,'second_logistic_number');
+        $order_issues = $order_issue_query->get();
+        if(count($order_issues)>0){
+            $this->queryBuilder->where('order_issues.id',$order_issues->map(function($orderIssue){
+                return $orderIssue->id;
+            }));
+        }
+        $orders = Order::query()->selectRaw('client_code')->whereIn('id',function($query)use($sendOrderLogisticNumber){
+            $query->from('order_packages')->selectRaw('order_id');
+            $this->searchWay($query,$sendOrderLogisticNumber,'logistic_number');
+        })->get();
+         if($orders->count()>0){
+            $this->queryBuilder->where('order_issues.second_client_no',$orders->map(function($order){
+                return $order->client_code;
+            }));
+        }
+    }
+
+    public function shop_name($shop_name)
+    {
+        $this->searchWay($this->getShopQuery(),$shop_name,'name');
+        if (isset($this->params['shop_name_limit_time'])) {
+            $this->queryBuilder->Where('order_issues.created_at','>=', Carbon::now()->subDays($this->params['shop_name_limit_time']));
+        } else {
+            $this->queryBuilder->Where('order_issues.created_at','>=', Carbon::now()->subDays(31));
+        }
+    }
+
+    public function final_status($final_status)
+    {
+        $this->queryBuilder->where('order_issues.final_status',$final_status);
+    }
+
+    public function finance_confirm($finance_confirm)
+    {
+        $this->queryBuilder->where('order_issues.finance_confirm',$finance_confirm);
+    }
+
+}

+ 1 - 0
app/Http/Controllers/OrderController.php

@@ -138,6 +138,7 @@ sql;
         $rejectedBillItemService->insert($rejectedBillItems);
         LogService::log(__METHOD__,"批量生成退货单详情",json_encode($rejectedBillItems),Auth::user()['id']);
         $rejectedBill_collect->each(function($rejectedBill)use($rejectedBillService){
+            $rejectedBillService->joinOrderIssue($rejectedBill);
             $rejectedBillService->syncOrderIssue($rejectedBill);
         });
         return ['success'=>true];

+ 5 - 16
app/Http/Controllers/OrderIssueController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Filters\OrderIssueFilters;
 use App\Imports\OrderIssueImport;
 use App\Logistic;
 use App\OracleDOCOrderHeader;
@@ -22,10 +23,8 @@ use App\UserWorkgroup;
 use Exception;
 use Illuminate\Database\QueryException;
 use Illuminate\Http\Request;
-use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
-use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Validator;
@@ -34,7 +33,7 @@ use Maatwebsite\Excel\Facades\Excel;
 class OrderIssueController extends Controller
 {
 
-    public function index(Request $request)
+    public function index(Request $request, OrderIssueFilters $filter)
     {
         if (!Gate::allows('订单管理-问题件-查询')) {
             return redirect(url('/'));
@@ -42,7 +41,7 @@ class OrderIssueController extends Controller
         /** @var OrderIssueService $orderIssueService */
         $orderIssueService = app('OrderIssueService');
         $owners = app(OwnerService::class)->getAuthorizedOwners();
-        $orderIssues = $orderIssueService->paginate($request->all());
+        $orderIssues = OrderIssue::query()->filter($filter)->defaultWith()->paginate($request['paginate'] ?? 50);
         $orderIssueType = OrderIssueType::all();
         $qualityLabel = QualityLabel::all();
         $logistics = Logistic::all();
@@ -570,22 +569,12 @@ class OrderIssueController extends Controller
         }
     }
 
-    public function exportJsonExcel(Request $request)
+    public function exportJsonExcel(Request $request, OrderIssueFilters $filter)
     {
         if (!Gate::allows('订单管理-问题件-查询')) {
             return redirect(url('/'));
         }
-        $params = $request->input();
-        if ($request->checkAllSign){
-            $params = $request->input();
-            unset($params['checkAllSign']);
-        }else{
-            $params['id'] = $request['data'];
-            $params['is_handle'] = true;
-        }
-        /** @var OrderIssueService $service */
-        $service = app('OrderIssueService');
-        $order_Issues  = $service->getJsonObj($params);
+        $order_Issues = OrderIssue::query()->filter($filter)->jsonWith()->get();
         return $this->getJson($order_Issues);
     }
 

+ 1 - 0
app/Http/Controllers/RejectedBillController.php

@@ -428,6 +428,7 @@ class RejectedBillController extends Controller
                 LogService::log(__METHOD__, "批量生成退货单详情", json_encode($inner_items_params), Auth::user()['id']);
             }
             $rejectedBill_collect->each(function ($rejectedBill)use($service){
+                $service->joinOrderIssue($rejectedBill);
                 $service->syncOrderIssue($rejectedBill);
             });
             return ['success'=>true];

+ 1 - 0
app/Imports/RejectedImport.php

@@ -90,6 +90,7 @@ class RejectedImport implements ToCollection, WithHeadingRow
                     'is_loaded'=>0,
                 ]);
                 $bill->save();
+                $bill->joinOrderIssue();
                 $bill->syncOrderIssue();
                 $item=RejectedBillItem::where('id_rejected_bill',$bill['id'])
                     ->where('barcode_goods',trim($barcode))->where('id_quality_label',$id_quality_label)->first();

+ 34 - 0
app/OrderIssue.php

@@ -3,12 +3,17 @@
 namespace App;
 
 use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 use Illuminate\Database\Eloquent\SoftDeletes;
 
 use App\Traits\LogModelChanging;
 
+/**
+ * @method Builder filter
+ */
+
 class OrderIssue extends Model
 {
     use LogModelChanging;
@@ -290,6 +295,35 @@ class OrderIssue extends Model
         return $this->rejectedBills()->updateExistingPivot($logistic_number,['logistic_number_return'=>$logistic_number_update]);
     }
 
+    public function scopeFilter($query, $filters)
+    {
+        return $filters->apply($query);
+    }
+
+    public function scopeDefaultWith($query)
+    {
+        $this->scopeJsonWith($query);
+        return $query->with(['top'])
+            ->selectRaw('order_issues.* ,order_issue_on_tops.id top_id ,order_issue_on_tops.remark,order_issue_on_tops.updated_at top_update')
+            ->leftJoin('order_issue_on_tops', 'order_issue_on_tops.order_issue_id', '=', 'order_issues.id')
+            ->whereNull('order_issue_on_tops.deleted_at')
+            ->orderBy('order_issue_on_tops.updated_at', 'desc');
+    }
+
+    public function scopeJsonWith($query)
+    {
+        return $query->with(['issueType', 'logs' => function ($query){
+            $query->with('user')->orderByDesc('created_at');
+        },'order'=>function($query){
+            $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity.barcodes']);
+        },'secondOrder'=>function($query){
+            $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity.barcodes']);
+        },'orderIssueRejectedBills.rejectedBill'=>function($query){
+            $query->with(['owner','logistic','user','items.quality']);
+        },'userWorkgroups'])
+            ->orderBy('order_issues.id', 'desc');
+    }
+
     public function userWorkgroups(): BelongsToMany
     {
         return $this->belongsToMany(UserWorkgroup::class);

+ 6 - 2
app/RejectedBill.php

@@ -198,13 +198,17 @@ class RejectedBill extends Model
         }
         if(!$orderIssue)return;
         $orderIssue->joinRejectedBill($this->logistic_number_return);
+        $orderIssue->syncRejectingStatus();
     }
 
     public function syncOrderIssue()
     {
         if(isset($this->orderIssueRejectedBill)){
-            if(isset($this->orderIssueRejectedBill->orderIssue)) $this->orderIssueRejectedBill->orderIssue->syncRejectingStatus();
-            return;
+            if(isset($this->orderIssueRejectedBill->orderIssue)){
+                /** @var OrderIssue $orderIssue */
+                $orderIssue = $this->orderIssueRejectedBill->orderIssue;
+                $orderIssue->syncRejectingStatus();
+            }
         }
     }
 

+ 0 - 315
app/Services/OrderIssueService.php

@@ -24,320 +24,12 @@ use App\Traits\ServiceAppAop;
 class OrderIssueService
 {
     use ServiceAppAop;
-    public function __construct()
-    {
-        app()->bind("orderService", OrderService::class);
-        app()->bind("rejectedService", RejectedService::class);
-        app()->bind("orderPackageCommoditiesService", OrderPackageCommoditiesService::class);
-    }
 
     public function insert($params)
     {
         OrderIssue::query()->insert($params);
     }
 
-    public function getQuery(array $arr, array $condition = null)
-    {
-        if (!isset($condition)) {
-            $condition = $arr;
-        }
-        $user = Auth::user();
-        $owner_ids = $user ? app('UserService')->getPermittingOwnerIds($user) : [];
-        if ($condition['owner_id'] ?? false) {
-            $owner_ids = explode(',', $condition['owner_id']);
-        }
-        $query = OrderIssue::with(['top', 'userWorkgroups', 'issueType', 'logs' => function ($query) use ($arr) {
-            $query->with('user')->orderByDesc('created_at');
-        }, 'order' => function ($query) {
-            $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity' => function ($query) {
-                $query->with('barcodes');
-            }]);
-        }, 'orderIssueRejectedBills.rejectedBill' => function ($query) {
-            $query->with(['items.quality']);
-        }, 'secondOrder' => function ($query) {
-            $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity' => function ($query) {
-                $query->with('barcodes');
-            }]);
-        }])->whereHas('order.owner', function ($query) use ($owner_ids) {
-            $query->whereIn('id', $owner_ids);
-        });
-        if ($arr['log_content'] ?? false) {
-            $query->whereHas('logs', function ($query) use ($arr) {
-                $query->where('content', 'like', $arr['log_content']);
-                if ($arr['addtime'] ?? false) {
-                    $query->where('created_at', '>=', Carbon::now()->subDays($arr['addtime']));
-                } else {
-                    $query->where('created_at', '>=', Carbon::now()->subDays(31));
-                }
-            });
-        }
-        if (isset($arr['is_imported'])) {
-            $query->where('imported_status', $arr['is_imported']);
-        }
-
-        if (isset($arr['is_new_rejecting'])) {
-            $query->where('is_new_rejecting', '=', $arr['is_new_rejecting']);
-        }
-
-        if (isset($arr['logistic_id'])) {
-            $query->whereHas('order', function ($query) use ($arr) {
-                $query->where('logistic_id', $arr['logistic_id']);
-            });
-        }
-        if (isset($arr['custom_code'])) {
-            $query->where('custom_code', $arr['custom_code']);
-        }
-        if(isset($arr['hiddenTag'])){
-            $query->where('hidden_tag', $arr['hiddenTag']);
-        }else{
-            $query->whereNull('hidden_tag');
-        }
-        $query->selectRaw('order_issues.* ,order_issue_on_tops.id top_id ,order_issue_on_tops.remark,order_issue_on_tops.updated_at top_update')
-            ->leftJoin('order_issue_on_tops', 'order_issue_on_tops.order_issue_id', '=', 'order_issues.id')
-            ->whereNull('order_issue_on_tops.deleted_at')
-            ->orderBy('order_issue_on_tops.updated_at', 'desc');
-        $query->orderBy('order_issues.id', 'desc');
-        return $query;
-    }
-
-    private function getOrderQuery(array $arr, $query)
-    {
-        $query->whereHas('order', function ($query) use ($arr) {
-            if ($arr['client_code'] ?? false) {
-                return $this->searchWay($query, $arr['client_code'], 'client_code');
-            }
-            if ($arr['consignee_name'] ?? false) {
-                return $this->searchWay($query, $arr['consignee_name'], 'consignee_name');
-            }
-            if ($arr['consignee_phone'] ?? false) {
-                return $this->searchWay($query, $arr['consignee_phone'], 'consignee_phone');
-            }
-            if ($arr['logistic_number'] ?? false) {
-                $logistic_number = $arr['logistic_number'];
-                $query->whereHas('packages', function ($query) use ($logistic_number) {
-                    return $this->searchWay($query, $logistic_number, 'logistic_number');
-                });
-            }
-            if (($arr['good_barcode'] ?? false) || ($arr['good_name'] ?? false)) {
-                $query->whereHas('packages.commodities.commodity', function ($query) use ($arr) {
-                    if ($arr['good_barcode'] ?? false) {
-                        return $this->searchWay($query, $arr['good_barcode'], 'sku');
-                    }
-                    if ($arr['good_name'] ?? false) {
-                        $query->where('name', 'like', '%' . $arr['good_name'] . '%');
-                    }
-                });
-            }
-        });
-        if ($arr['send_client_code'] ?? false) {
-            $query->whereHas('secondOrder', function ($query) use ($arr) {
-                return $this->searchWay($query, $arr['send_client_code'], 'client_code');
-            });
-        }
-        return $query;
-    }
-
-    public function getRejectedBillQuery(array $arr, $query)
-    {
-        if (($arr['logistic_number_return'] ?? false) || ($arr['id_quality_label'] ?? false)) {
-            $order_issue_rejected_bill_query = OrderIssueRejectedBill::query()->selectRaw('order_issue_id');
-            if(isset($arr['id_quality_label'])){
-                $rejected_bill_item_query = RejectedBillItem::query()->selectRaw('id_rejected_bill')->where('rejected_bill_items.id_quality_label',$arr['id_quality_label']);
-                $rejected_bill_query = RejectedBill::query()->selectRaw('rejected_bills.logistic_number_return')->whereIn('rejected_bills.id',$rejected_bill_item_query);
-                $order_issue_rejected_bill_query->whereIn('order_issue_rejected_bill.logistic_number_return',$rejected_bill_query);
-            }
-            if(isset($arr['logistic_number_return'])){
-                $this->searchWay($order_issue_rejected_bill_query,$arr['logistic_number_return'],'logistic_number_return');
-            }
-            $query->whereIn('order_issues.id',$order_issue_rejected_bill_query);
-        }
-        return $query;
-    }
-
-    public function getConditionQuery(array $arr, array $condition = null)
-    {
-        /** @var Builder $query */
-        $query = $this->getQuery($arr, $condition);
-        $query = $this->getOrderQuery($condition ?? $arr, $query);
-        $query = $this->getRejectedBillQuery($condition ?? $arr, $query);
-        if (!isset($condition)) {
-            $condition = $arr;
-        }
-        if ($condition['id'] ?? false) {
-            $query->whereIn('order_issues.id', explode(',', $condition['id']));
-        }
-        if (isset($condition['created_at_start'])) {
-            $query->where('order_issues.created_at', '>=', $condition['created_at_start'] . " 00:00:00");
-        }
-        if (isset($condition['created_at_end'])) {
-            $query->where('order_issues.created_at', '<=', $condition['created_at_end'] . " 23:59:59");
-        }
-        if (isset($condition['final_status'])) {
-            if ($condition['final_status'] == 'null') {
-                $query->whereNull('final_status');
-            } else {
-                $query->where('final_status', $condition['final_status']);
-            }
-        }
-        if (isset($condition['order_issue_type_id'])) {
-            $type_ids = explode(',',$condition['order_issue_type_id']);
-            $query->whereIn('order_issue_type_id', $type_ids);
-        }
-        if (!($condition['is_handle'] ?? false) && !($condition['final_status'] ?? false)) {
-            if (!(isset($condition['settlement_at_start']) || isset($condition['settlement_at_end']))) {
-                $query->where(function ($query) {
-                    $query->whereNotIn('final_status',['已解决','已归档'])->orWhereNull('final_status');
-                });
-            }
-        }
-        if (isset($condition['logistic_indemnity_money'])) {
-            if($condition['logistic_indemnity_money']== '是'){
-                $query->whereNotNull('logistic_indemnity_money');
-            }elseif($condition['logistic_indemnity_money']== '否'){
-                $query->whereNull('logistic_indemnity_money');
-            }
-        }
-        if (isset($condition['baoshi_indemnity_money'])) {
-            if($condition['baoshi_indemnity_money']== '是'){
-                $query->whereNotNull('baoshi_indemnity_money');
-            }elseif($condition['baoshi_indemnity_money']== '否'){
-                $query->whereNull('baoshi_indemnity_money');
-            }
-        }
-        if (isset($condition['rejectingStatus'])) {
-            $query->where('rejecting_status',$condition['rejectingStatus']);
-        }
-        if (isset($condition['order_issue_ids'])) {
-            $orderIssuesId = $condition['order_issue_ids'];
-            if (is_string($orderIssuesId)) {
-                $orderIssuesId = explode(',', $orderIssuesId);
-            }
-            $query->whereIn('order_issues.id', $orderIssuesId);
-        }
-        if (isset($condition['settlement_at_start']) || isset($condition['settlement_at_end'])) {
-            $query->whereHas('logs', function ($query) use ($condition) {
-                if (isset($condition['settlement_at_start'])) {
-                    $query->where('created_at', '>=', $condition['settlement_at_start'] . ' 00:00:00')->where('type', '结束');
-                }
-                if (isset($condition['settlement_at_end'])) {
-                    $query->where('created_at', '<=', $condition['settlement_at_end'] . ' 23:59:59')->where('type', '结束');
-                }
-            });
-        }
-        if(isset($condition['sendOrderClientCode'])){
-            $query->whereHas('secondOrder',function($query)use($condition){
-                $this->searchWay($query,$condition['sendOrderClientCode'],'client_code');
-            });
-            $query->orWhere('second_client_no',$condition['sendOrderClientCode']);
-        }
-        if(isset($condition['sendOrderLogisticNumber'])){
-            $query->whereHas('secondOrder.packages',function($query)use($condition){
-                $this->searchWay($query,$condition['sendOrderLogisticNumber'],'logistic_number');
-            });
-            $query->orWhere('second_logistic_number',$condition['sendOrderLogisticNumber']);
-        }
-        if (isset($condition['finance_confirm'])) {
-            $query->where('finance_confirm', $condition['finance_confirm']);
-        }
-        if (isset($condition['user_workgroups'])) {
-
-            if (is_string($condition['user_workgroups'])) {
-                $userWorkgroupIds = explode(',', $condition['user_workgroups']);
-            }
-            $query->whereHas('userWorkgroups', function ($query) use ($userWorkgroupIds) {
-                $query->whereIn('id', $userWorkgroupIds);
-            });
-        }
-        //根据店铺名称模糊筛选
-        if (isset($condition['shop_name'])) {
-            $query->whereHas('order.shop', function ($query) use ($condition) {
-                $this->searchWay($query, $condition['shop_name'].'%', 'name');
-            });
-            if (isset($condition['shop_name_limit_time'])) {
-                $query->Where('order_issues.created_at','>=', Carbon::now()->subDays($condition['shop_name_limit_time']));
-            } else {
-                $query->Where('order_issues.created_at','>=', Carbon::now()->subDays(31));
-            }
-        }
-        return $query;
-    }
-
-    private function isSearchLike($str)
-    {
-        if (substr($str, 0, 1) == "%" || substr($str, strlen($str) - 1, 1) == "%") {
-            return true;
-        }
-        return false;
-    }
-
-    private function searchWay($query, $param, $column)
-    {
-        if ($this->isSearchLike($param)) {
-            $query->where($column, 'like', $param);
-        } else {
-            $query->whereIn($column, array_filter(preg_split('/[,, ]+/is', $param)));
-        }
-        return $query;
-    }
-
-    public function getSqlList(array $params)
-    {
-        $orderPackageSql = OrderPackage::query()->selectRaw('order_packages.logistic_number order_package_logistic_number')
-            ->leftJoin('order_package_commodities','order_packages.id','order_package_commodities.order_package_id')
-            ->selectRaw('order_package_commodities.amount commodity_amount')
-            ->leftJoin('commodities','order_package_commodities.commodity_id','commodities.id')
-            ->selectRaw('commodities.name commodity_name,commodities.sku commodity_sku')
-            ->leftJoin('order_issues','order_packages.order_id','order_issues.order_id')
-            ->selectRaw('order_issues.id order_issue_id')
-            ->sql();
-        $secondOrderPackageSql = Order::query()->from('order_packages','s_o_p')->selectRaw('s_o_p.logistic_number')
-            ->leftJoin("orders as o_d","s_o_p.order_id","o_d.id")
-            ->leftJoin('order_package_commodities as s_o_p_c','s_o_p_c.order_package_id','s_o_p.id')
-            ->selectRaw('s_o_p_c.amount s_o_p_c_amount')
-            ->leftJoin('commodities as s_c','s_o_p_c.commodity_id','s_c.id')
-            ->selectRaw('s_c.sku s_c_sku,s_c.name s_c_name')
-            ->leftJoin('order_issues','o_d.client_code','order_issues.second_client_no')
-            ->selectRaw('order_issues.id order_issue_id')
-            ->sql();
-        $rejectedBillItemSql = RejectedBillItem::query()->selectRaw('rejected_bill_items.remark,rejected_bill_items.amount rejected_bill_amount,rejected_bill_items.name_goods,rejected_bill_items.barcode_goods')
-            ->leftJoin('rejected_bills',"rejected_bill_items.id_rejected_bill","rejected_bills.id")
-            ->leftJoin('order_issues','rejected_bills.logistic_number_return','order_issues.logistic_number_return')
-            ->selectRaw('order_issues.id order_issue_id')
-            ->sql();
-        $logSql = OrderIssueProcessLog::query()->selectRaw('order_issue_process_logs.content log_content,order_issue_process_logs.type log_type')
-            ->leftJoin('users','order_issue_process_logs.user_id','users.id')
-            ->selectRaw('users.name user_name')
-            ->leftJoin('order_issues','order_issue_process_logs.order_issue_id','order_issues.id')
-            ->selectRaw('order_issues.id order_issue_id')
-            ->sql();
-        $column = "order_issues.id,order_issues.rejected_bill_id,order_issues.rejecting_status,order_issues.created_at order_issues_created_at,order_issues.result_explain,order_issues.final_status,";
-        $column .= "order_issues.logistic_indemnity_money,order_issues.logistic_express_remission,order_issues.baoshi_indemnity_money,order_issues.baoshi_express_remission";
-        $orderIssueSql =  $this->getConditionQuery($params)->selectRaw($column)
-            ->leftJoin('order_issue_types','order_issues.order_issue_type_id','order_issue_types.id')
-            ->selectRaw('order_issue_types.`name` order_issue_type_name')
-            ->leftJoin('orders','order_issues.order_id','orders.id')
-            ->selectRaw('orders.id order_id,orders.address,orders.district,orders.city,orders.province,orders.consignee_phone,orders.consignee_name,orders.client_code,orders.created_at order_created_at')
-            ->leftJoin('logistics','logistics.id','orders.logistic_id')
-            ->selectRaw('logistics.name logistic_name')
-            ->leftJoin('owners','owners.id','orders.owner_id')
-            ->selectRaw('owners.name owner_name')
-            ->leftJoin('shops','orders.shop_id','shops.id')
-            ->selectRaw('shops.name shop_name')
-            ->leftJoin('orders as s_o','s_o.client_code','order_issues.second_client_no')
-            ->selectRaw('s_o.id s_o_id,s_o.client_code s_o_client_code')
-            ->leftJoin('logistics as s_logistics','s_o.logistic_id','s_logistics.id')
-            ->selectRaw('s_logistics.name s_logistics_name')
-            ->leftJoin('user_workgroups','user_workgroups.id','order_issues.user_workgroup_id')
-            ->selectRaw('user_workgroups.name user_workgroup_name')
-            ->sql();
-        return compact('orderPackageSql','secondOrderPackageSql','orderIssueSql','rejectedBillItemSql','logSql');
-    }
-
-    public function paginate(array $params)
-    {
-        return $query = $this->getConditionQuery($params)->paginate($params['paginate'] ?? 50);
-    }
-
     public function orderIssueTag(array $params)
     {
         $orderNos = $params['orderNos'];
@@ -567,7 +259,6 @@ class OrderIssueService
         return ['success' => true, 'order' => $order];
     }
 
-
     public function createOrderIssue($logisticNumber, $type, $result_explain, $importedStatus = '正常', $custom_code = null,$hiddenTag = null)
     {
         $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails', 'oracleBASCode','orderType'])
@@ -630,12 +321,6 @@ class OrderIssueService
         }
     }
 
-    public function getJsonObj(array $params)
-    {
-        return  $this->getConditionQuery($params)->get();
-    }
-
-
     public function getRecycleBinPaginate($params){
         return OrderIssue::query()
             ->with(['order'=>function($query){

+ 4 - 4
resources/views/order/issue/index.blade.php

@@ -80,13 +80,13 @@
                 <table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0" style="background: #fff;@cannot('订单管理-问题件-客户不可见')min-width: 3000px;@else min-width: 1990px; @endcannot">
                     <tr class="tr-yellow align-center">
                         <th class=" font-weight-bolder header-1" ></th>
-                        <th class="td-yellow  font-weight-bolder original-class table-head-warning  header-2">
+                        <th class="td-yellow  font-weight-bolder original-class table-head-warning  header-2 text-center">
                             <span>原始运单</span>
                             <button class="btn btn-sm btn-outline-secondary float-right" v-if="isShowOrderInfo" @click="hideOrderInfo">
                                 隐藏运单列
                             </button>
                         </th>
-                        <th class="font-weight-bolder header-3">
+                        <th class="font-weight-bolder header-3 text-center">
                             <button class="btn btn-sm btn-outline-secondary float-left" v-if="isShowRejectedBill" @click="hideRejectedBill">
                                 隐藏退单列
                             </button>
@@ -862,10 +862,9 @@
                     },
                     {name: 'logistic_number_return', type: 'input', tip: '退回单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '退回单号'},
                     {name: 'send_client_code', type: 'input', tip: '二次订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '二次订单号'},
-                    {name: ['shop_name','shop_name_limit_time'], type: 'input_select', tip: ['处理结果:前或后加 百分号为单个模糊搜索,默认添加后%,否则为多条件精确搜索','查询范围越短,搜索速度越快'], placeholder: ['店铺',''],
+                    {name: ['shop_name','shop_name_limit_time'], type: 'input_select', tip: ['商铺:前或后加 百分号为单个模糊搜索,默认添加后%,否则为多条件精确搜索','查询范围越短,搜索速度越快'], placeholder: ['店铺',''],
                         data:log_content_range,
                         rules:[{son:{shop_name_limit_time:{default:'15',required_without_all_if:['created_at_start','created_at_end']}}}]},
-                    {name: 'finance_confirm', type: 'select', tip: '财务却认', placeholder: '财务却认是/否', data:[{name: '是',value:'是'},{name: '否',value:'否'}]},
                 ], [
                     {name: 'created_at_end', type: 'dateTime', tip: '登记结束日期'},
                     {name: 'consignee_name', type: 'input', tip: '收货人名称:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '收货人名称'},
@@ -890,6 +889,7 @@
                     // {date_relevance:{date:['orderdate_start','orderdate_end'],relevance:'addtime',killing:'date',default:[31,92,183,366]}}]},
                     {name: 'custom_code', type: 'input', tip: '自定义订单号:自定义订单号', placeholder: '自定义订单号'},
                     {name: 'is_handle', type: 'checkbox', tip: '是否已处理', data: [{name: 'ture', value: '已解决'}]},
+                    {name: 'finance_confirm', type: 'select', tip: '财务确认', placeholder: '财务确认是/否', data:[{name: '是',value:'是'},{name: '否',value:'否'}]},
                 ],[
                     {name: 'settlement_at_start', type: 'dateTime', tip: '完结起始日期'},
                     {name: 'settlement_at_end', type: 'dateTime', tip: '完结结束日期' },