Ver código fonte

Bug修改 问题件,追踪件

ajun 5 anos atrás
pai
commit
840e479870

+ 2 - 1
app/Http/Controllers/OrderIssueController.php

@@ -41,8 +41,9 @@ class OrderIssueController extends Controller
         $orderIssues = $orderIssueService->paginate($request->all());
         $orderIssueType = OrderIssueType::all();
         $qualityLabel = QualityLabel::all();
+        $logistics = Logistic::all();
         $userWorkgroup = UserWorkgroup::all();
-        return view('order.issue.index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel','userWorkgroup'));
+        return view('order.issue.index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel','userWorkgroup','logistics'));
     }
 
     public function create()

+ 1 - 1
app/Http/Controllers/TestController.php

@@ -608,7 +608,7 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
         /** @var OrderTrackingService $orderTrackingService */
         $orderTrackingService  = app('orderTrackingService');
-        /** @var OrderService $orderSerivce */
+        /** @var OrderService $orderService */
         $orderService = app(OrderService::class);
         /** @var OracleDOCOrderHeaderService $orderHeaderService */
         $orderHeaderService = app(OracleDOCOrderHeaderService::class);

+ 12 - 2
app/OrderIssue.php

@@ -102,16 +102,27 @@ class OrderIssue extends Model
         $orderItems = [];
         $orderIssueId = $this['id'];
         if ($this->logistic_number_return ?? false) {
-            $rejectedBillItems = RejectedBillItem::query()
+            $rejectedBillItems = RejectedBillItem::query()->with('quality')
                 ->whereHas('rejectedBill.orderIssue', function ($query) use ($orderIssueId) {
                     $query->where('id',$orderIssueId);
                 })->get();
+            $barcode_goods = data_get($rejectedBillItems,'*.barcode_goods');
+
+            if($rejectedBillItems->where('quality.name','残次')->count() > 0){
+                $this->update(['rejecting_status' => '差异退回']);
+                return;
+            }
+
+            $commodityBarcode = CommodityBarcode::query()->with('commodity')->whereIn('code',$barcode_goods)->get();
             if (count($rejectedBillItems) == 0) {
                 $this->update(['rejecting_status' => '未退回']);
                 return;
             }
             foreach ($rejectedBillItems as $item) {
                 $barcode_goods = (string)$item->barcode_goods;
+                if($commodityBarcode->where('code',$barcode_goods)->count()){
+                    $barcode_goods = $commodityBarcode->where('code',$barcode_goods)->first()->commodity->sku;
+                }
                 if (!isset($rejectedItems[$barcode_goods])){
                     $rejectedItems[$barcode_goods] = 0;
                 }
@@ -170,7 +181,6 @@ class OrderIssue extends Model
                 $isLack++;
         }
 
-        //dd($isAccord,$rejectedReview,$isLack,$isExcess,$isDiff,$rejectedExcess);
         if($isAccord == $rejectedReview && $isLack == 0 && $isExcess == 0 && $isDiff==0 && $rejectedExcess == 0 )
             $this->update(['rejecting_status' => '全部退回']);
         else if($isExcess > 0 && $isAccord ==  $rejectedReview && $isDiff == 0 && $isLack == 0)

+ 4 - 0
app/OrderPackageCommodities.php

@@ -10,8 +10,12 @@ class OrderPackageCommodities extends Model
     //
     use ModelTimeFormat;
 
+    /*
+     * amount => OracleActAllocationDetails->qty_each
+     */
     protected $fillable = ['order_package_id','commodity_id','amount'];
 
+
     public function package(){
         return $this->belongsTo('App\OrderPackage','order_package_id','id');
     }

+ 9 - 5
app/Services/OrderIssueService.php

@@ -55,10 +55,17 @@ class OrderIssueService
                 }
             });
         }
+
         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']);
+            });
+        }
+
         $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')
@@ -261,9 +268,6 @@ class OrderIssueService
             try {
                 $orderIssue = $this->createOrFindByOrderNo($orderNo);
                 if($orderIssue != null){
-
-
-
                     OrderIssue::query()->where('id', $orderIssue['id'])->update(['order_issue_type_id' => $params['typeId'], 'result_explain' => $params['result_explain']]);
                     OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);
                     LogService::log(__METHOD__, __FUNCTION__, '标记订单问题件' . json_encode($orderNo).json_encode($orderIssue));
@@ -353,9 +357,9 @@ class OrderIssueService
 
     public function create(array $arr)
     {
-        $orderIssue = OrderIssue::create($arr);
+        $orderIssue = OrderIssue::query()->create($arr);
         if (!$arr['order_id']) {
-            $order = Order::create($arr);
+            $order = Order::query()->create($arr);
             $orderIssue->order_id = $order['id'];
             $orderIssue->save();
         }

+ 8 - 269
app/Services/OrderPackageCommoditiesService.php

@@ -37,7 +37,7 @@ class OrderPackageCommoditiesService
     public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){
         $details = OracleActAllocationDetails::query()->where('orderno', $orderNo)->get();
         $orderPackageCommodities =  OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
-        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty');
+        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty_each');
         unset($details,$orderPackageCommodities);
     }
 
@@ -103,7 +103,7 @@ class OrderPackageCommoditiesService
     {
         $details = OracleActAllocationDetails::query()->where('picktotraceid', $orderPackage->logistic_number)->get();
         $orderPackageCommodities =  OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
-        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty');
+        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty_each');
         unset($details,$orderPackageCommodities);
     }
 
@@ -133,9 +133,9 @@ class OrderPackageCommoditiesService
             $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
         }
         try {
-            $count  = OrderPackageCommodities::query()->where(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']])->count();
+            $count  = OrderPackageCommodities::query()->where(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty_each']])->count();
             if($count == 0){
-                $orderPackageCommodities = OrderPackageCommodities::query()->firstOrCreate(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']]);
+                $orderPackageCommodities = OrderPackageCommodities::query()->firstOrCreate(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty_each']]);
                 LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹详情'.json_encode($orderPackageCommodities));
             }
         } catch (\Exception $e) {
@@ -145,265 +145,6 @@ class OrderPackageCommoditiesService
         }
     }
 
-    public function getOrderPackageCommoditiesByOrderId($orderId)
-    {
-        $order = Order::query()->where('id', $orderId)->first();
-        if (!$order) {
-            return null;
-        }
-        $orderPackageIds = OrderPackage::query()->select('id')->where('order_id', $order['id'])->get();
-        if (!$orderPackageIds) {
-            return null;
-        }
-        return OrderPackageCommodities::query()->with('commodity')->whereIn('order_package_id', $orderPackageIds)->get();
-    }
-
-    public function createByOrderDetail(OracleDOCOrderDetail $detail, OrderPackage $orderPackage)
-    {
-        $owner = Owner::query()->where('code', $detail['customerid'])->first();      // 货主
-        $sku = $detail->sku;    // sku
-        $owner_id = $owner->id; // 货主id
-        $commodity = Commodity::query()->where('sku', $sku)->where('owner_id', $owner_id)->first(); // 商品
-        if ($commodity == null) {
-            $basSku = OracleBasSKU::query()->where('sku', $sku)->where('customerid' , $detail->customerid)->first();   // 没有找到对应的商品信息
-            $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
-        }
-        return OrderPackageCommodities::query()->create(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qtyordered']]);
-    }
-
-    public function 根据WMS订单信息创建WAS订单包裹商品($orderHeaders,$oracleDOCOrderDetails,$actAllocationDetails,$orders)
-    {
-        /** @var CommodityService $commodityService */
-        $commodityService = app('commodityService');
-        $commodities = $commodityService->getWASCommoditiesByWMSOrderHeaders($orderHeaders); // 商品
-
-        $orderPackages = [];
-        $orderList = [];
-        foreach ($orders as $order) {
-            $orderList[$order['id']] = $order;
-            $packages = $order['packages'] ?? [];
-            foreach ($packages as $package) {
-                $orderPackages[$package['logistic_number']]  = $package;
-            }
-        }
-        $fillables = [];
-        foreach ($orderPackages as $key=>$orderPackage) {
-            $logistic_number = $key;
-            $order = $orderList[$orderPackage['order_id']];
-            $details1 =  $actAllocationDetails[strval($logistic_number)] ?? [];
-            $details2 = [];
-            if(count($details1)== 0){
-                $details2 = $actAllocationDetails[$order['code']] ?? [];
-            }
-            if(count($details1) > 0 ||  count($details2) > 0){
-                $items = $this->根据订单分配详情返回创建数组($details1,$orderPackage,$commodities,$order);
-                foreach ($items as $item){
-                    $fillables[] = $item;
-                }
-                $items = $this->根据订单分配详情返回创建数组($details2,$orderPackage,$commodities,$order);
-                foreach ($items as $item){
-                    $fillables[] = $item;
-                }
-                continue;
-             }
-            $details =  $oracleDOCOrderDetails[$order['code']] ?? [];
-            if($details->count() >0){
-                $items = $this->根据订单详情返回创建数组($details,$orderPackage,$commodities,$order);
-                foreach ($items as $item){
-                    $fillables[] = $item;
-                }
-            }
-        }
-        try {
-            if(count($fillables) > 0){
-                OrderPackageCommodities::query()->insert($fillables);
-                LogService::log(__METHOD__,__FUNCTION__,'批量创建 OrderPackageCommodities'.count($fillables).json_encode($fillables));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,'批量创建异常 OrderPackageCommodities error '.json_encode($fillables).$e->getMessage().$e->getTraceAsString());
-        } finally {
-            $orderIds = data_get($orders,'*.id');
-            return Order::query()->with('packages.commodities')->whereIn('id',$orderIds)->get();
-        }
-    }
-
-    // XXX 逻辑优化 删除不存在未完成
-    public function 更新WAS订单快递打包商品信息($orderHeaders,$orders,$commodities)
-    {
-        $newItems = $this->获取WMS订单打包信息($orderHeaders,$commodities,$orders);
-        $orderPackagesCommodities = $this->basedOrdersReturnOrderPackageCommodities($orders);
-
-        $multipleData = [['id','order_package_id','commodity_id']];
-        $packageCommodity_list_amount = [];
-        $packageCommodity_list = [];
-
-        foreach ($orderPackagesCommodities as $item) {
-            $key = 'order_package_id='.$item['order_package_id'].' commodity_id='.$item['commodity_id'].' amount='.$item['amount'];
-            if(!($packageCommodity_list_amount[$key] ?? false)){
-                $packageCommodity_list_amount[$key] = [];
-            }
-            $packageCommodity_list_amount[$key][] = $item;
-            $key2 = 'order_package_id'.$item['order_package_id'].' commodity_id='.$item['commodity_id'];
-            if($packageCommodity_list[$key2] ?? false){
-                $packageCommodity_list[$key2] = [];
-            }
-            $packageCommodity_list[$key2][] = $item;
-        }
-        foreach ($newItems as $key=>$newItem) {
-            $key1 = 'order_package_id='.$newItem['order_package_id'].' commodity_id='.$newItem['commodity_id'].' amount='.$newItem['amount'];
-            $packageCommodity = $packageCommodity_list_amount[$key1][0] ?? false;
-            if($packageCommodity ?? false){
-                unset($newItems[$key]);
-                array_shift($packageCommodity_list_amount[$key1]);
-            }else{
-                $key2 = 'order_package_id'.$newItem['order_package_id'].' commodity_id='.$newItem['commodity_id'];
-                $packageCommodity = $packageCommodity_list[$key2][0] ?? false;
-                if($packageCommodity ?? false) {
-                    $amount = intval($newItem['amount']);
-                    if($packageCommodity['amount'] !== $amount){
-                        $data = [
-                            'order_package_id' => $packageCommodity['order_package_id'],
-                            'commodity_id' => $packageCommodity['commodity_id'],
-                            'amount' => $amount,
-                        ];
-                        $multipleData[]  = $data;
-                    }
-                    array_shift($packageCommodity_list[$key2]);
-                    unset($newItems[$key]);
-                }
-            }
-        }
-        try {
-            if (count($newItems) > 0) {
-                OrderPackageCommodities::query()->insert($newItems);
-                LogService::log(__METHOD__, __FUNCTION__, '添加打包信息' . json_encode($newItems));
-            }
-        }catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '添加打包信息失败' . json_encode($newItems).$e->getMessage().$e->getTraceAsString());
-        }
-
-        if(count($multipleData) > 1){
-            try {
-                /** @var BatchUpdateService $batchUpdateService */
-                $batchUpdateService = app('batchUpdateService');
-                $batchUpdateService->batchUpdate('order_package_commodities', $multipleData);
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新'.count($multipleData).json_encode($multipleData));
-            } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新失败'.json_encode($multipleData).$e->getMessage(),$e->getTraceAsString());
-            } finally {
-                unset($multipleData);
-            }
-        }
-    }
-
-    private function 获取WMS订单打包信息($orderHeaders,$commodities,$orders){
-        $newItems = [];
-
-        $commodities_list = [];
-        foreach ($commodities as $commodity) {
-            $key = 'sku='.$commodity['sku'].' owner_id='.$commodity['owner_id'];
-            $commodities_list[$key] = $commodity;
-        }
-        foreach ($orderHeaders as $orderHeader) {
-            $order = $orders[$orderHeader['orderno']] ?? null;
-            if(!isset($order)){
-                continue;
-            }
-            $orderPackages = $order['packages'];
-            $oracleDOCOrderDetails = $orderHeader['oracleDOCOrderDetails'] ?? [];
-            $actAllocationDetails = $orderHeader['actAllocationDetails'] ?? [];
-
-            if($actAllocationDetails->count() > 0){
-                foreach ($orderPackages as $orderPackage) {
-                    $details = [];
-                    if($orderPackage['logistic_number'] == $orderHeader['soreference5'] ){
-                        foreach ($actAllocationDetails as $detail) {
-                            if($detail['picktotraceid'] == '*' || $detail['picktotraceid'] == $orderHeader['soreference5'])
-                                $details[] = $detail;
-                        }
-                    }else{
-                        $logistic_number = $orderPackage['logistic_number'];
-                        foreach ($actAllocationDetails as $detail) {
-                            if($detail['picktotraceid'] == $logistic_number)
-                                $details[] = $detail;
-                        }
-                    }
-                    $addArr = $this->basedDetailsReturnFillables($details,$orderPackage,$commodities_list,$order,'qty');
-                    $newItems = array_merge($newItems,$addArr);
-                }
-            }elseif($oracleDOCOrderDetails->count() > 0){
-                foreach ($orderPackages as $orderPackage) {
-                    $details = [];
-                    $logistic_number = $orderPackage['logistic_number'];
-                    foreach ($actAllocationDetails as $detail) {
-                        if($detail['dropid'] == $logistic_number){
-                            array_push($details,$detail);
-                        }
-                    }
-                    $addArr = $this->basedDetailsReturnFillables($details,$orderPackage,$commodities_list,$order,'qtyordered');
-                    $newItems = array_merge($newItems,$addArr);
-                }
-            }
-        }
-        return $newItems;
-    }
-
-    public function 根据订单详情返回创建数组($details,$orderPackage,$commodities,$order){
-        $orderPackagerCommodities = [];
-        foreach ($details as $detail) {
-            $commodity = $commodities->where('sku', $detail['sku'])->where('owner_id', $order['owner_id'])->first();
-            $fillable = [
-                'order_package_id' => $orderPackage['id'] ?? '',
-                'commodity_id' => $commodity['id'] ?? '',
-                'amount' => $detail['qtyordered'],
-            ];
-            $orderPackagerCommodities[] = $fillable;
-        }
-        return $orderPackagerCommodities;
-    }
-
-    public function 根据订单分配详情返回创建数组($details,$orderPackage,$commodities,$order){
-        $orderPackagerCommodities = [];
-        foreach ($details as $detail) {
-
-            $commodity = $commodities->where('sku', $detail['sku'])->where('owner_id', $order['owner_id'])->first();
-            $fillable = [
-                'order_package_id' => $orderPackage['id'] ?? '',
-                'commodity_id' => $commodity['id'] ?? '',
-                'amount' => $detail['qty'] ?? '',
-            ];
-            array_push($orderPackagerCommodities,$fillable);
-        }
-        return $orderPackagerCommodities;
-    }
-
-    public function basedOrdersReturnOrderPackageCommodities($orders){
-        $orderPackageCommodities = [];
-        foreach ($orders as $order) {
-            foreach ($order['packages'] as $package) {
-                foreach ($package['commodities'] as $commodity) {
-                    $orderPackageCommodities[] = $commodity;
-                }
-            }
-        }
-        return $orderPackageCommodities;
-    }
-
-    public function basedDetailsReturnFillables($details,$orderPackage,$commoditiesMap,$order,$column){
-        $orderPackagerCommodities = [];
-        foreach ($details as $detail) {
-            $key = 'sku='.$detail['sku'].' owner_id='.$order['owner_id'];
-            $commodity = $commoditiesMap[$key] ?? '';
-            $fillable = [
-                'order_package_id' => $orderPackage['id'] ?? '',
-                'commodity_id' => $commodity['id'] ?? '',
-                'amount' => $detail[$column] ?? '',
-            ];
-            array_push($orderPackagerCommodities,$fillable);
-        }
-        return $orderPackagerCommodities;
-    }
-
     public function createByWmsOrder($orderHeaders)
     {
         if(!$orderHeaders){ return [];}
@@ -471,7 +212,7 @@ class OrderPackageCommoditiesService
                 $params[] = [
                     'commodity_id' =>$commodity->id,
                     'order_package_id' =>$orderPackage->id,
-                    'amount' => $actAllocationDetail->qty,
+                    'amount' => $actAllocationDetail->qty_each,
                     'created_at' => $create_at
                 ];
             }
@@ -480,7 +221,6 @@ class OrderPackageCommoditiesService
         return $params;
     }
 
-
     public function create(array $params){
         if(!$params){return [];}
         try {
@@ -550,16 +290,16 @@ class OrderPackageCommoditiesService
                 foreach ($actAllocationDetails as $key1=>$actAllocationDetail) {
                     foreach ( $order_package_commodities as $key=>$item) {
                         $commodity = $item->commodity;
-                        if($actAllocationDetail->sku == $commodity->sku && $item->amount ==  $actAllocationDetail->qty){
+                        if($actAllocationDetail->sku == $commodity->sku && $item->amount ==  $actAllocationDetail->qty_each){
                             unset($order_package_commodities[$key]);
                             unset($actAllocationDetails[$key1]);
                             $deleteKey[] = $key1;
                             break;
-                        }else if($item ->sku == $commodity->sku && $item->amount !=  $actAllocationDetail->qty){
+                        }else if($item ->sku == $commodity->sku && $item->amount !=  $actAllocationDetail->qty_each){
                             $updateParams[] = [
                                 'id' => $item->id,
                                 'commodity_id' => $commodity->id,
-                                'amount' => $actAllocationDetail->qty,
+                                'amount' => $actAllocationDetail->qty_each,
                                 'updated_at' => $updated_at
                             ];
                             $deleteKey[] = $key1;
@@ -601,7 +341,6 @@ class OrderPackageCommoditiesService
             })->get();
     }
 
-
     public function batchUpdateItself($column, array $params)
     {
         return app(BatchUpdateService::class)->batchUpdateItself('order_package_commodities', $column, $params);

+ 0 - 187
app/Services/OrderPackageService.php

@@ -173,180 +173,6 @@ class OrderPackageService
             ->paginate($paginate);
     }
 
-
-    public function 根据WMS订单创建WAS包裹($orderHeaders, $orders)
-    {
-        $orderPackagesFillables = [];
-        foreach ($orders as $order) {
-            $orderHeader = $orderHeaders[strval($order['code'])] ?? false;
-            if(!$orderHeader){
-                continue;
-            }
-            $fillables = $this->根据WMS订单生成包裹信息($orderHeader, $order);
-            foreach ($fillables as $fillable) {
-                $orderPackagesFillables[] = $fillable;
-            }
-        }
-        try {
-            if(count($orderPackagesFillables) > 0){
-                OrderPackage::query()->insert($orderPackagesFillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量订单包裹信息' .count($orderPackagesFillables). json_encode($orderPackagesFillables) );
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量订单包裹信息 error' .json_encode($orderPackagesFillables) .  $e->getMessage().$e->getTraceAsString());
-        } finally {
-            $order_ids = data_get($orders,'*.id');
-            unset($orderPackagesFillables,$orders,$fillables);
-            return Order::query()->with('packages')->whereIn('id',$order_ids)->get();
-        }
-    }
-
-    public function 根据WMS订单生成包裹信息($orderHeader, $order)
-    {
-
-        $soReference5 = $orderHeader['soreference5'];
-        $orderPackages= [];
-        $logistic_numbers = [];
-
-        foreach ($orderHeader['actAllocationDetails'] as $actAllocationDetail) {
-            $logistic_numbers[]  =$actAllocationDetail->picktotraceid;
-            array_push($logistic_numbers,$actAllocationDetail['picktotraceid']);
-        }
-
-        $logistic_numbers = array_unique($logistic_numbers);
-        $logistic_numbers = array_diff($logistic_numbers,['','*',null]);
-
-        $logistic_numbers = count($logistic_numbers) == 0 ? ($soReference5 != '*' ? [$soReference5] : []) : $logistic_numbers;
-        $logistic_numbers = array_diff($logistic_numbers,['','*',null]);
-
-        if(count($logistic_numbers) == 0 ){ return  [];}
-
-        if (count($logistic_numbers) != 0) {
-            foreach ($logistic_numbers as $logistic_number) {
-                $fillable = [
-                    'order_id' => $order['id'],
-                    'logistic_number' => $logistic_number,
-                ];
-                $orderPackages[] = $fillable;
-            }
-        }
-        return $orderPackages;
-    }
-
-    public function 更新WAS订单的包裹的重量和体积($orderHeaders,$orderPackages)
-    {
-
-        /** @var CommodityService $commodityService */
-        $commodityService = app('commodityService');
-        $commodities = $commodityService->getWASCommoditiesByWMSOrderHeaders($orderHeaders); // 商品
-
-
-        $multipleData = [['id','weight','bulk']];
-        $noAttributeCommodity = [];
-
-        $commodity_map = [];
-        foreach ($commodities as $commodity) {
-            $key = ' id='.$commodity->id;
-            $commodity_map[$key] = $commodity;
-        }
-        foreach ($orderPackages as $packages) {
-            foreach ($packages as $package) {
-
-                if($package == null){
-                    continue;
-                }
-                $orderPackageCommodities = $package['commodities'] ?? [];
-                $updateArr = [
-                    'id' => $package['id'],
-                    'weight' => 0,
-                    'bulk' => 0,
-                ];
-                foreach ($orderPackageCommodities as $packageCommodity) {
-                    $commodity =  $commodity_map[' id='.$packageCommodity->commodity_id];
-                    if($commodity['weight'] == 0  || !$commodity['bulk'] == 0 ){
-                        array_push($noAttributeCommodity,$commodity);
-                    }
-//                    $updateArr['weight'] += bcmul($commodity['weight'], $packageCommodity['amount'],5);
-//                    $updateArr['bulk'] += bcmul($commodity['bulk'], $packageCommodity['amount'],5);
-//                    $updateArr['weight'] += round($commodity['weight']*$packageCommodity['amount'],5);
-                    $updateArr['bulk'] += round($commodity['bulk']*$packageCommodity['amount'],5);
-                    //$updateArr['weight'] +=(intval($commodity['weight'] ?? 0) )  * ( intval($packageCommodity['amount'] ?? 0) );
-                    //$updateArr['bulk'] += (intval($commodity['bulk']  ?? 0)) * (intval($packageCommodity['amount'] ?? 0) );
-                }
-                if($package['weight'] == $updateArr['weight'] && $package['bulk'] == $updateArr['bulk']){
-                    continue;
-                }
-                // 订单同步步时 重量 体积不覆盖已有值
-                if($packages['weight'] ?? false){
-                    $updateArr['weight'] = $packages['weight'];
-                }
-                if($packages['bulk'] ?? false){
-                    $updateArr['bulk'] = $packages['bulk'];
-                }
-                $multipleData[] = $updateArr;
-            }
-        }
-        if(count($multipleData) > 1){
-            /** @var BatchUpdateService $batchUpdateService */
-            $batchUpdateService = app('batchUpdateService');
-            $batchUpdateService->batchUpdate('order_packages',$multipleData);
-        }
-        array_unique($noAttributeCommodity);
-        if(count($noAttributeCommodity) > 1){
-            $commodityService->syncCommodityAttribute($noAttributeCommodity);
-        }
-        unset($multipleData,$noAttributeCommodity,$commodities);
-    }
-
-    public function 更新WAS订单快递单号信息($orderHeaders,$orders)
-    {
-
-        $fillables = [];
-        $orders_map = [];
-        $orders_package_map = [];
-        foreach ($orders as $order){
-            $key = $order['code'];
-            $orders_map[$key] = $order;
-            foreach ($order['packages'] as $package) {
-                $logistic_numbers = $package['logistic_number'];
-                $orders_package_map[$key][$logistic_numbers] =$package;
-            }
-        }
-
-        foreach ($orderHeaders as $key=>$orderHeader) {
-            $order = $orders[$key] ?? false;
-            if(!$order){
-                continue;
-            }
-            $packages = $orders_package_map[$key] ?? false;
-            $pickToTraceIds = [];
-            foreach ($orderHeader->actAllocationDetails as $actAllocationDetail) {
-                $pickToTraceIds[] = $actAllocationDetail['picktotraceid'];
-            }
-            $pickToTraceIds = array_unique(array_diff($pickToTraceIds,['','*',null]));
-
-            foreach ($pickToTraceIds as $pickToTraceId) {
-                if(!$packages || !($orders_package_map[$key][$pickToTraceId] ?? false)){
-                    $fillables[] = [
-                        'order_id' => $order->id,
-                        'logistic_number' => $pickToTraceId
-                    ];
-                }
-            }
-        }
-
-        try {
-            if(count($fillables)>0){
-                OrderPackage::query()->insert($fillables);
-                LogService::log(__METHOD__,__FUNCTION__,'创建orderPackage:'.json_encode($fillables));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,'创建orderPackage 失败:'.json_encode($fillables).$e->getMessage().$e->getTraceAsString());
-        } finally {
-            unset($fillables);
-        }
-    }
-
     public function createByWmsOrder($orderHeaders)
     {
         if(!$orderHeaders ){return ;}
@@ -443,19 +269,6 @@ class OrderPackageService
         $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
     }
 
-    public function getLogisticNumbersByOrderHeader($orderHeader){
-       $oracleDOCOrderDetails =  $orderHeader->oracleDOCOrderDetails;
-       $actAllocationDetails = $orderHeader->actAllocationDetails;
-       if($actAllocationDetails){
-            $logistic_numbers = data_get($actAllocationDetails,'*.picktotraceid');
-            return array_diff(array_unique($logistic_numbers),['','*',null]);
-       }
-       if($oracleDOCOrderDetails){
-           return [$orderHeader->soreference5];
-       }
-       return [];
-    }
-
     public function getByWmsOrders($orderHeaders){
         $order_nos = data_get($orderHeaders,'*.orderno');
         return OrderPackage::query()->with('order')

+ 0 - 329
app/Services/OrderService.php

@@ -405,335 +405,6 @@ class OrderService
         return $this->findOrCreateByClientCode($orderHeader['soreference1']);
     }
 
-    public function 根据设置从WMS获取跟踪的订单($startDate)
-    {
-
-        /** @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService */
-        $oracleDOCOrderHeaderService = app('oracleDOCOrderHeaderService');
-        $orderHeadersResult = $oracleDOCOrderHeaderService->根据时间获取在这段时间内创建的WMS订单($startDate);
-
-//        LogService::log('111','111',json_encode($orderHeadersResult));
-        if ($orderHeadersResult->count() == 0) {
-            return null;
-        }
-
-        $orderHeaders_map = [];
-        $oracleDOCOrderDetails = [];
-        $actAllocationDetails = [];
-
-        foreach ($orderHeadersResult as $key=>$orderHeader) {
-            $orderHeaders_map[$orderHeader['orderno']] = $orderHeader;
-            $oracleDOCOrderDetails[$orderHeader['orderno']] = $orderHeader['oracleDOCOrderDetails'];
-            $details = $orderHeader['actAllocationDetails'];
-            $orderno = strval($orderHeader['orderno']);
-            foreach ($details as $detail) {
-                $picktotraceid = strval($detail['picktotraceid']);
-                if ($picktotraceid == '*') {
-                    if (!($actAllocationDetails[$orderno] ?? false)) {
-                        $actAllocationDetails[$orderno] = [];
-                    }
-                    array_push($actAllocationDetails[$orderno], $detail);
-                    continue;
-                }
-                if (!($actAllocationDetails[$picktotraceid] ?? false)) {
-                    $actAllocationDetails[$picktotraceid] = [];
-                }
-                $actAllocationDetails[$picktotraceid][] =$detail;
-            }
-        }
-        unset($orderHeadersResult);
-
-        return $this->根据WMS订单生成WAS订单($orderHeaders_map, $oracleDOCOrderDetails, $actAllocationDetails);
-    }
-
-    public function 根据设置从WMS同步该时间段内更新的订单($startDate)
-    {
-        /** @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService */
-        $oracleDOCOrderHeaderService = app('oracleDOCOrderHeaderService');
-        $editedOrderHeaders = $oracleDOCOrderHeaderService->根据时间获取在这段时间内更新的WMS订单($startDate);
-
-        $orderHeaders_map = [];
-        foreach ($editedOrderHeaders as $editedOrderHeader) {
-            $orderHeaders_map[$editedOrderHeader['orderno']] = $editedOrderHeader;
-        }
-
-        $orderNos = array_keys($orderHeaders_map);
-
-        $orders = Order::query()
-            ->with('packages.commodities')
-            ->whereIn('code', $orderNos)
-            ->get();
-
-        if ($orders->count() == 0) {
-            return ['orderPackageCommodities'=> null, 'orderHeaders'=>null];
-        }
-
-        $ordersList =[];
-        foreach ($orders as $order) {
-            $ordersList[$order['code']] = $order;
-        }
-        $orderHeaders_map = $this->filterNoCorrespondingOrder($orderHeaders_map,$ordersList);
-
-        $this->将WMS订单对应的WAS订单信息更新($orderHeaders_map,$ordersList);
-
-        $orderPackageCommodities = OrderPackageCommodities::query()
-            ->with('package.order')
-            ->whereHas('package.order', function ($query) use ($orderNos) {
-                $query->whereIn('code',$orderNos);
-            })->get();
-        $orderHeaders = $orderHeaders_map;
-        return compact('orderPackageCommodities', 'orderHeaders');
-    }
-
-
-    public function 根据WMS订单生成WAS订单($orderHeaders, $oracleDOCOrderDetails, $actAllocationDetails)
-    {
-
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app('orderPackageService');
-        /** @var OrderPackageCommoditiesService $orderCommoditiesService */
-        $orderCommoditiesService = app('orderPackageCommoditiesService');
-
-        if (count($orderHeaders) === 0) {
-            return [];
-        }
-        $params = $this->根据WMS订单信息返回创建WAS订单需要信息($orderHeaders);
-        $owners = $params['owners'];
-        $shops = $params['shops'];
-        $logistics = $params['logistics'];
-        $orderHeaders = $this->过滤已有的WAS订单($orderHeaders);
-        $this->根据WMS订单创建WAS订单($orderHeaders, $owners, $shops, $logistics);
-        $orderNos = array_keys($orderHeaders);
-        $orders = Order::query()->whereIn('code',$orderNos)->get();
-        $orders = $orderPackageService->根据WMS订单创建WAS包裹($orderHeaders, $orders);
-        $orders = $orderCommoditiesService->根据WMS订单信息创建WAS订单包裹商品($orderHeaders, $oracleDOCOrderDetails, $actAllocationDetails, $orders);
-
-        $orderPackages = [];
-        foreach ($orders as $order) {
-            $orderPackages[] = $order['packages'];
-           $packages =  $order['packages'] ?? null;
-            $orderPackages[] =  $packages;
-//           array_push($orderPackages,$packages);
-        }
-        $orderPackageService->更新WAS订单的包裹的重量和体积($orderHeaders,$orderPackages);
-        return compact('orders', 'orderHeaders', 'actAllocationDetails', 'oracleDOCOrderDetails');
-    }
-
-    public function 过滤已有的WAS订单($orderHeaders,$orders_map = [])
-    {
-
-        if(count($orders_map) == 0){
-            $orderNos = array_keys($orderHeaders);
-            $orders = Order::query()->whereIn('code', $orderNos)->get();
-            foreach ($orders as $order) {
-                $orders_map[$order['code']] = $order;
-            }
-        }
-        if(count($orders_map) !== 0){
-            foreach ($orders_map as $key=>$orderHeader) {
-                unset($orderHeaders[$key]);
-            }
-        }
-        return $orderHeaders;
-    }
-
-    public function filterNoCorrespondingOrder($orderHeaders_map,$orders_map = []){
-        if(count($orders_map) == 0){
-            $orderNos = array_keys($orderHeaders_map);
-            $orders = Order::query()->whereIn('code', $orderNos)->get();
-            foreach ($orders as $order) {
-                $orders_map[$order['code']] = $order;
-            }
-        }
-        if(count($orders_map) !== 0){
-            foreach ($orderHeaders_map as $key=>$orderHeader) {
-                if(!($orders_map[$key] ?? false)){
-                    unset($orderHeaders_map[$key]);
-                }
-            }
-        }
-        return $orderHeaders_map;
-
-    }
-
-    private function 根据WMS订单信息返回创建WAS订单需要信息($orderHeaders)
-    {
-        /** @var ShopService $shopService */
-        $shopService = app('shopService');
-        /** @var LogisticService $logisticService */
-        $logisticService = app('logisticService');
-        /** @var OwnerService $ownerService */
-        $ownerService = app('ownerService');
-        $owners = $ownerService->获取订单跟踪的货主();    // 监听的货主
-        $shops = $shopService->根据追踪的WMS订单返回商铺($orderHeaders);     // 商铺
-        $logistics = $logisticService->getWASLogisticsByWMSOrderHeaders($orderHeaders); // 承运商
-        return compact('owners', 'shops', 'logistics');
-    }
-
-    public function 根据WMS订单创建WAS订单($orderHeaders, $owners, $shops, $logistics)
-    {
-        if(!$orderHeaders){return [];}
-        $fillables = [];
-        $owners_map = [];
-        $shop_map = [];
-        $logistics_map = [];
-        foreach ($owners as $owner) {
-            $key = 'code='.$owner->code;
-            $owners_map[$key] = $owner;
-        }
-
-        foreach ($shops as $shop) {
-            $key = 'name='.$shop->name.' owner_id='.$shop->owner_id;
-            $shop_map[$key] =  $shop;
-        }
-
-        foreach ($logistics as $logistic) {
-            $key = 'code='.$logistic->code;
-            $logistics_map[$key] =  $logistic;
-        }
-
-        $logistic_change = Logistic::query()->where('name','自提')->first();
-        $owner_change = Owner::query()->where('name','安桥主品')->first();
-        $logistic_an_jie = Logistic::query()->where('name','新杰物流')->first();
-
-        // XXX 循环 300 个元素 3s-5s
-        foreach ($orderHeaders as $orderHeader) {
-            $owner_key = 'code='.$orderHeader->customerid;
-            $owner = $owners_map[$owner_key] ?? '';
-
-            $shop_key = 'name='.$orderHeader->issuepartyname.' owner_id='.$owner->owner_id ?? '';
-            $shop = $shop_map[$shop_key] ?? '';
-
-            $logistic_key = 'code='. $orderHeader->userdefine1;
-            $logistic = $logistics_map[$logistic_key] ?? '';
-
-            // change logistic to 新杰物流
-            // $logistic 自提 and $owner 安桥主品
-            if($logistic_change->id == $logistic->id ??'' && $owner_change->id == $owner->id ?? ''){
-                $logistic = $logistic_an_jie;
-            }
-
-            $fillables[] = [
-                'code' => $orderHeader->orderno ,
-                'owner_id' => $owner->id ?? '',
-                'wms_status' => $orderHeader->oracleBASCode_codename_c,
-                'created_at' => $orderHeader->addtime,
-                'logistic_id' => $logistic->id ?? '',
-                'shop_id' => $shop->id ?? '',
-                'consignee_name' => $orderHeader->c_contact,
-                'consignee_phone' => $orderHeader->c_tel2,
-                'province' => $orderHeader->c_province,
-                'city' => $orderHeader->c_city,
-                'district' => $orderHeader->c_district,
-                'address' => $orderHeader->c_address1,
-                'client_code' => $orderHeader->soreference1,
-                'wms_edittime' => $orderHeader->edittime,
-            ];
-
-        }
-        try {
-            if (count($fillables) > 0) {
-                Order::query()->insert($fillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建Order' . count($fillables) . json_encode($fillables));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, $e->getMessage(), $e->getTraceAsString() . json_encode($fillables));
-        } finally {
-            unset($owners_map,$shop_map,$logistics_map,$fillables);
-        }
-    }
-
-    // XXX 业务逻辑待修改完善
-    public function 将WMS订单对应的WAS订单信息更新($orderHeaders,$ordersList)
-    {
-        /** @var CommodityService $commodityService */
-        $commodityService = app('commodityService');
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app('orderPackageService');
-        /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
-        $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
-        if (count($orderHeaders) == 0) {
-            return [];
-        }
-        $commodities = $commodityService->getWASCommoditiesByWMSOrderHeaders($orderHeaders);     // 商品信息
-
-        $this->更新WMS订单对应的的WAS订单($orderHeaders, $ordersList);
-
-        $orderPackageService->更新WAS订单快递单号信息($orderHeaders, $ordersList);
-
-        $orderPackageCommoditiesService->更新WAS订单快递打包商品信息($orderHeaders, $ordersList, $commodities);
-
-        $orderNos = data_get($ordersList,'*.code');
-/*        $orderPackages = OrderPackage::query()
-            ->with('commodities','order')
-            ->whereHas('order', function ($query) use ($orderNos) {
-                $query->whereIn('code', $orderNos);
-            })
-            ->get();*/
-        $orders = Order::query()
-            ->with('packages.commodities')
-            ->whereIn('code',$orderNos)
-            ->get();
-        $orderPackages = [];
-        foreach ($orders as $order) {
-            $packages =  $order['packages'] ?? null;
-            $orderPackages[] =  $packages;
-        }
-        unset($orderNos);
-        $orderPackageService->更新WAS订单的包裹的重量和体积($orderHeaders,$orderPackages);    // 同步包裹重量和体积
-    }
-
-    public function  更新WMS订单对应的的WAS订单($orderHeaders, $orders)
-    {
-        $multipleData = [[
-            'id', 'wms_status', 'consignee_name', 'consignee_phone', 'province', 'city', 'district', 'wms_edittime', 'address', 'client_code'
-        ]];
-        // XXX 循环 300个元素 3s - 5s
-            /** @var Order $order */
-        foreach ($orders as $key=>$order) {
-            $orderHeader = $orderHeaders[$key] ?? false;
-            if ($orderHeader) {
-
-                if($order->wms_status != $orderHeader->oracleBASCode_codename_c ||
-                    $order->consignee_name != $orderHeader->c_contact ||
-                    $order->consignee_phone != $orderHeader->c_tel2 ||
-                    $order->province != $orderHeader->c_province ||
-                    $order->city != $orderHeader->c_city ||
-                    $order->district != $orderHeader->c_district ||
-                    $order->wms_edittime != $orderHeader->edittime ||
-                    $order->address != $orderHeader->c_address1 ||
-                    $order->client_code != $orderHeader->soreference1 ){
-
-                    $multipleData[] =[
-                        'id' =>$order->id,
-                        'wms_status' => $orderHeader->oracleBASCode_codename_c,
-                        'consignee_name' => $orderHeader->c_contact,
-                        'consignee_phone' => $orderHeader->c_tel2,
-                        'province' => $orderHeader->c_province,
-                        'city' => $orderHeader->c_city,
-                        'district' => $orderHeader->c_district,
-                        'wms_edittime' => $orderHeader->edittime,
-                        'address' => $orderHeader->c_address1,
-                        'client_code' => $orderHeader->soreference1,
-                    ];
-                }
-            }
-        }
-
-        if(count($multipleData)  > 1){
-            try {
-                /** @var BatchUpdateService $batchUpdateService */
-                $batchUpdateService = app('batchUpdateService');
-                $batchUpdateService->batchUpdate('orders', $multipleData);
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新'.count($multipleData).json_encode($multipleData));
-            } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新失败'.json_encode($multipleData).$e->getMessage(),$e->getTraceAsString());
-            } finally {
-                unset($multipleData);
-            }
-        }
-    }
-
     public function first(array $params)
     {
         $order = Order::query();

+ 10 - 181
app/Services/OrderTrackingService.php

@@ -9,6 +9,7 @@ use App\OrderTracking;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Services\common\QueryService;
+use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\Auth;
 use Maatwebsite\Excel\Facades\Excel;
 
@@ -79,6 +80,15 @@ class OrderTrackingService
             });
         }// 运输单号(快递单号)
 
+        if(isset($params['remark'])){
+            $query->where('remark','like','%'.$params['remark'].'%');
+            if(isset($params['remark_addtime'])){
+                $query->where('created_at','>',Carbon::now()->subDays($params['remark_addtime']));
+            }else{
+                $query->where('created_at','>=',Carbon::now()->subDays(15));
+            }
+        }
+
         if ($params['ids'] ?? false) {
             $ids = explode(',', $params['ids']);
             $query->whereIn('id', $ids);
@@ -102,124 +112,6 @@ class OrderTrackingService
         return $this->downLoadAsExec($trackOrders->get());
     }
 
-    public function 根据设置从WMS同步追踪货主的订单($startDate)
-    {
-        $this->根据设置从WMS追踪货主的生成订单($startDate);
-        $this->根据设置从该时间段内获取WMS更新的订单($startDate);
-
-    }
-
-    public function 根据设置从WMS追踪货主的生成订单($startDate)
-    {
-        /** @var OrderService $orderService */
-        $orderService = app('orderService');
-        $params = $orderService->根据设置从WMS获取跟踪的订单($startDate);
-        $orders = $params['orders'];
-        $orderHeaders = $params['orderHeaders'];
-        $this->根据订单生成订单跟踪($orderHeaders, $orders);
-
-    }
-
-    public function 根据设置从该时间段内获取WMS更新的订单($startDate)
-    {
-        /** @var OrderService $orderService */
-        $orderService = app('orderService');
-        $params = $orderService->根据设置从WMS同步该时间段内更新的订单($startDate);
-        $orderPackageCommodities = $params['orderPackageCommodities'];
-        $orderHeaders = $params['orderHeaders'];
-        $this->更新创建的WAS订单商品跟踪($orderPackageCommodities, $orderHeaders);
-    }
-
-    //  XXX 代码逻辑有待纠正
-    public function 更新创建的WAS订单商品跟踪($updateOrderPackageCommodities, $updateOrderHeader)
-    {
-        if ($updateOrderPackageCommodities == null || $updateOrderPackageCommodities->count() == 0) {
-            return;
-        }
-        if ($updateOrderHeader == null || count($updateOrderHeader) == 0) {
-            return;
-        }
-        $ids = data_get($updateOrderPackageCommodities, '*.id');
-
-        $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id', $ids)->get();
-
-
-        $this->updateOrderTracking($orderTrackings, $updateOrderPackageCommodities); // 更新
-
-        unset($updateOrderPackageCommodities, $updateOrderHeader);
-    }
-
-    public function 根据订单生成订单跟踪($orderHeaders, $orders)
-
-    {
-        $orderPackages = [];
-        $orderPackageCommodities = [];
-        $ordersList = [];
-        $fillables = [];
-        if($orders == null){
-            return;
-        }else if($orderHeaders == null){
-            return ;
-        }
-
-        foreach ($orders as $order) {
-            $ordersList[$order['id']] = $order;
-            foreach ($order['packages'] as $packages) {
-                $orderPackages[$packages['id']] = $packages;
-                foreach ($packages['commodities'] as $item) {
-                    $orderPackageCommodities[] = $item;
-                }
-            }
-        }
-        if (count($orderPackageCommodities) == 0) {
-            return;
-        }
-
-        foreach ($orderPackageCommodities as $key=>$orderPackageCommodity) {
-            $order_package_id = $orderPackageCommodity['order_package_id'];
-            $orderPackage = $orderPackages[$order_package_id];
-            $order_id = $orderPackage['order_id'] ?? '';
-            $order = $ordersList[$order_id] ?? '';
-            $orderHeader = $orderHeaders[$order['code']];
-            $pick_up_at = $orderHeader['lastshipmenttime'] ?? null; // 提货时间
-
-            $client = null;
-            $order_remark = null;
-
-            if ($orderHeader['notes'] ?? false) {
-                $notes = $orderHeader['notes'];
-//                $notes = str_replace('【','[',$notes);
-                if (strpos($notes, '[')) {
-                    $arr= str_split($notes,strpos($notes,'['));
-                    $client = $arr[0] ?? '';
-                    $order_remark = $arr[1] ?? '';
-                    $order_remark = str_replace(['[',']'],'',$order_remark);
-                }
-            }
-
-            $fillable = [
-                'order_package_commodity_id' => $orderPackageCommodity['id'],
-                'owner_id' => $order['owner_id'],
-                'client' => $client,
-                'created_at' => $order['created_at'],
-                'order_remark' => $order_remark,
-                'pick_up_at' => $pick_up_at, // 提货时间
-            ];
-
-            $fillables[] = $fillable;
-         }
-        try {
-            if (count($fillables) > 0) {
-                OrderTracking::query()->insert($fillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建订单跟踪成功' . count($fillables) . json_encode($fillables));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建订单跟踪失败' . $e->getMessage() . $e->getTraceAsString());
-        } finally {
-            unset($fillables, $orderHeaders, $orders,$orderPackageCommodities);
-        }
-    }
-
     private function downLoadAsExec($trackOrders)
     {
         $row = [[
@@ -261,69 +153,6 @@ class OrderTrackingService
         return Excel::download(new Export($row, $list), date('YmdHis', time()) . '-订单跟踪.xlsx');
     }
 
-    private function updateOrderTracking($orderTrackings, $orderPackagesCommodities)
-    {
-        $multipleData = [['id', 'owner_id', 'client', 'pick_up_at','web_order_number']];
-        $orderTrackings_list = [];
-
-        foreach ($orderPackagesCommodities as $item) {
-            $orderTrackings_list[$item['order_package_commodity_id']] = $item;
-        }
-
-        foreach ($orderTrackings as $orderTracking) {
-            $Commodities = $orderTrackings_list[$orderTracking['order_package_commodity_id']] ?? false;
-            $order = $Commodities['package']['order'] ?? '';
-
-            if ($order ?? false) {
-                $code = $order['code'];
-                $orderHeader = $orderPackagesCommodities[$code] ?? '';
-                $pick_up_at = $orderHeader['lastshipmenttime'] ?? null; // 提货时间
-
-                $client = null;
-                $order_remark = null;
-
-                if ($orderHeader['notes'] ?? false) {
-                    $notes = $orderHeader['notes'];
-//                $notes = str_replace('【','[',$notes);
-                    if (strpos($notes, '[')) {
-                        $arr= str_split($notes,strpos($notes,'['));
-                        $client = $arr[0] ?? '';
-                        $order_remark = $arr[1] ?? '';
-                        $order_remark = str_replace(['[',']'],'',$order_remark);
-                    }
-                }
-                $web_order_number = null;
-                if(preg_match('/^O[\d]/',$orderHeader['orderno'] ?? '') > 0){
-                    $web_order_number = $orderHeader['soreference1'];
-                }
-                $data = [
-                    'id' => $orderTracking['id'],
-                    'owner_id' => $order['owner_id'] ?? '',
-                    'client' => $client,
-                    'pick_up_at' => $pick_up_at ?? null, // 提货时间
-                    'order_remark' => $order_remark,
-                    'web_order_number' => $web_order_number,
-                ];
-
-                if ($data['owner_id'] !== $orderTracking['owner_id'] ||
-                    $data['client'] !== $orderTracking['client'] ||
-                    $data['pick_up_at'] !== $orderTracking['pick_up_at'] ||
-                    $data['order_remark'] !== $orderTracking['order_remark'] ||
-                    $data['web_order_number'] !==  $orderTracking['web_order_number']
-                ) {
-                    $multipleData[] = $data;
-                }
-            }
-        }
-
-        if (count($multipleData) > 1) {
-            /** @var BatchUpdateService $batchUpdateService */
-            $batchUpdateService = app('batchUpdateService');
-            $batchUpdateService->batchUpdate('order_trackings', $multipleData);
-        }
-    }
-
-
     /**
      * @param $startData
      */

+ 5 - 7
resources/views/order/index/delivering.blade.php

@@ -631,18 +631,14 @@
                     axios.post("{{url('apiLocal/order/issue/orderIssueTag')}}",data).then(function(res){
                         tempTip.setDuration(5000)
                         tempTip.cancelWaitingTip();
-                        if(res.data.success){console.log(11);
-                        tempTip.setDuration(3000);
-                            tempTip.showSuccess('已标记为问题件,稍后前往订单问题件查询页面');
-                            setTimeout(function(){
-                                window.location.href = "{{url('order/issue/index')}}";
-                            },1000);
+                        if(res.data.success){
+                            tempTip.setDuration(3000);
+                            tempTip.showSuccess('已标记为问题件');
                         }else{
                             tempTip.setDuration(4000);
                             tempTip.show(res.data.fail_info);
                         }
                     }).catch(function(err){
-                        console.log(err);
                         tempTip.setDuration(3000);
                         tempTip.cancelWaitingTip();
                         tempTip.show('网络链接异常'+err);
@@ -690,6 +686,7 @@
                 },
                 isRejectedBillExist(){
                     let _this = this;
+                    if(confirm('是否生成退货单')){return;}
                     axios.post('{{url('order/isRejectedBillExist')}}',{data:this.checkData})
                         .then(function (response) {
                             if (!response.data.success){
@@ -707,6 +704,7 @@
                 },
                 createRejectedBill() {
                     let url = '{{url('order/createRejectedBill')}}';
+
                     axios.post(url,{data:this.checkData})
                         .then(res=>{
                             if (res.data.success){

+ 37 - 38
resources/views/order/issue/index.blade.php

@@ -45,7 +45,6 @@
                         </button>
                     </span>
                 </div>
-                {{--table table-sm  table-bordered table-hover card-body table-responsive-sm p-0 m-0 --}}
                 <table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0" style="background: #fff;min-width: 3000px;">
                     <tr class="tr-yellow" align="center">
                         <th class=" font-weight-bolder header-1" ></th>
@@ -56,12 +55,9 @@
                             </button>
                         </th>
                         <th class="font-weight-bolder header-3">
-
-                            {{--                            @cannot('订单管理-问题件-客户不可见')--}}
                             <button class="btn btn-sm btn-outline-secondary float-left" v-if="isShowRejectedBill" @click="hideRejectedBill">
                                 隐藏退单列
                             </button>
-                            {{--                            @endcannot--}}
                             情况说明
                             @cannot('订单管理-问题件-客户不可见')
                                 <button class="btn btn-sm btn-outline-secondary" v-if="isShowSecondOrderInfo" @click="hideSecondOrder">
@@ -75,7 +71,6 @@
                     </tr>
 
                     <tr class="tr-yellow" align="center">
-
                         <th rowspan="2" class="align-middle one-layer">
                             <label for="all">
                                 <input id="all" type="checkbox" @click="checkAll($event)"/>
@@ -110,12 +105,9 @@
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" rowspan="2" style="min-width: 70px">区</th>
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" rowspan="2" style="min-width:300px">收货人地址</th>
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" colspan="3" style="min-width:300px">原始商品明细</th>
-                        {{--                        <th class="three-layer  align-middle" rowspan="2" >退回单号</th>--}}
-                        {{--                        @cannot('订单管理-问题件-客户不可见')--}}
                         <th class="three-layer   align-middle" rowspan="2" v-if="!isShowRejectedBill" style="min-width:50px">展开</th>
                         <th class="three-layer align-middle" rowspan="2" v-if="isShowRejectedBill" style="min-width:220px">退回单号</th>
                         <th class="three-layer   align-middle" colspan="5" v-if="isShowRejectedBill" style="min-width: 450px">返回商品明细</th>
-                        {{--                        @endcannot--}}
                         <th class="three-layer bg-whit  align-middle" rowspan="2" style="min-width: 115px">情况说明</th>
                         <th class="three-layer   align-middle" rowspan="2" style="min-width: 115px">问题类别</th>
                         <th class="three-layer  align-middle" colspan="4" style="min-width: 155px">处理结果</th>
@@ -148,7 +140,6 @@
                             <th  v-if="isShowRejectedBill" style="min-width: 50px">是否正品</th>
                             <th  v-if="isShowRejectedBill" style="min-width: 100px">备注</th>
                         @endcannot
-                        <th  style="min-width: 75px">操作类型</th>
                         <th  style="min-width: 120px">说明</th>
                         <th  style="min-width: 100px">操作者</th>
                         <th  style="min-width: 170px">时间</th>
@@ -198,7 +189,7 @@
                                     @else
                                         @{{ orderIssue.rejecting_status }}
                                     @endcan
-                                </td>{{--退件状态--}}
+                                </td>
                             @endcan
                         @endcannot
                         <td class="child-layer-1">
@@ -210,7 +201,7 @@
                                 @{{ orderIssue.final_status }}
                             @endcan
                         </td>{{--最终状态--}}
-                        @cannot('订单管理-问题件-客户不可见')  {{--登记日期--}}
+                        @cannot('订单管理-问题件-客户不可见')
                         <td class="toptd td-yellow child-layer-2">
                             <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
                                 置顶备注:@{{ orderIssue.remark }}
@@ -219,7 +210,7 @@
                         </td>
                         @endcannot
 
-                        <td class="td-yellow child-layer-2"> {{--订单日期--}}
+                        <td class="td-yellow child-layer-2">
                             @cannot('订单管理-问题件-客户不可见')
                             @else
                                 <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
@@ -262,36 +253,26 @@
                         <td class="td-yellow child-layer-2-hide" style="width: 400px" v-if="isShowOrderInfo">
                             <span class="text-wrap m-0 p-0 " style="width: 400px">@{{ orderIssue.order.address }}</span>
                         </td>
-                        <td class="td-yellow p-0 child-layer-2-hide" :id="orderIssue.id+'items'" colspan="3"
-                            v-if="isShowOrderInfo">
+                        <td class="td-yellow p-0 child-layer-2-hide" :id="orderIssue.id+'items'" colspan="3" v-if="isShowOrderInfo" :data-value="orderIssue.orderCount = 0" :data-value1='orderIssue.orderPackagecount = 0'>
                             <div v-if="orderIssue.order">
                                 <table  class="table table-sm m-0" v-if="orderIssue.order.packages"
-                                        :class="orderIssue.orderPackagecount > 1  ? 'collapse' : ''" :id="'order'+orderIssue.id"
-                                        :data-value="orderIssue.orderCount = 0" :data-count="orderIssue.orderPackagecount = 0">
+                                        :class="orderIssue.order.commodityPackages > 1? 'collapse' : ''" :id="'order'+orderIssue.id">
                                     <template v-for="packages in orderIssue.order.packages">
                                         <tr v-for="item in packages.commodities" class="text-center" :data-value="orderIssue.orderCount += 1" align="center" v-if="item.commodity">
                                             <td >@{{ item.commodity.sku }}</td>
                                             <td>
-                                                <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.commodity.name }}</div>
-                                                <div class="text-nowrap m-0 p-0 tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</div>
-                                                {{--                                                <p class="text-truncate text-primary m-0 p-0 tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开"  @dblclick="nowrapText($event)">@{{ item.commodity.name }}</p>--}}
-                                                {{--                                                <p class="text-nowrap m-0 p-0 tooltipTarget" style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</p>--}}
+                                                <p class="text-truncate text-primary m-0 p-0 tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开"  @dblclick="nowrapText($event)">@{{ item.commodity.name }}</p>
+                                                <p class="text-nowrap m-0 p-0 tooltipTarget" style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</p>
                                             </td>
-                                            <td  :data-value="orderIssue.orderPackagecount += item.amount ">@{{ item.amount }}</td>
+                                            <td  >@{{ item.amount }}</td>
                                         </tr>
                                     </template>
                                 </table>
-                                <button v-if="orderIssue.orderCount > 1 " type="button" class="btn btn-sm btn-outline-primary mt-1"
-                                        :id="'orderBtn'+orderIssue.id"   @click="toggleOrder(orderIssue.id,orderIssue.orderPackagecount)"
-                                        data-toggle="collapse" :data-target="'#order'+orderIssue.id">
-                                    商品@{{ orderIssue.orderPackagecount}}件,点击展开
+                                <button v-if="orderIssue.order.commodityPackages > 1" type="button" class="btn btn-sm btn-outline-primary mt-1" :id="'orderBtn'+orderIssue.id"   @click="toggleOrder(orderIssue.id,orderIssue.orderIssue.order.amount)" data-toggle="collapse" :data-target="'#order'+orderIssue.id">
+                                    商品@{{ orderIssue.order.amount }}件,点击展开
                                 </button>
                             </div>
                         </td>
-                        {{--商品明细 结束--}}
-
-                        {{--退单商品明细 开始--}}
-                        {{--                        @cannot('订单管理-问题件-客户不可见')--}}
 
                         <td class="text-muted child-layer-3-hide" v-if="isShowRejectedBill">
                             @can('订单管理-问题件-编辑')
@@ -300,10 +281,11 @@
                                 @{{ orderIssue.logistic_number_return }}
                             @endcan
                         </td>
-                        {{--                        @cannot('订单管理-问题件-客户不可见')--}}
+
                         <td class="p-0 m-0 child-layer-3" v-if="!isShowRejectedBill && index === 0 " style="width:50px;" :rowspan="orderIssues.length" >
                             <span class="btn  btn-outline-secondary "  @click="showRejectedBill"  :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''" >展开退单列</span>
                         </td>
+
                         <td class="p-0 child-layer-3-hide" :id="orderIssue.id+'rejectedBill'" valign="middle" align="center" colspan="5" v-if="isShowRejectedBill">
                             <div v-if="orderIssue.rejected_bill" class="m-0 p-0">
                                 <table v-if="orderIssue.rejected_bill.items" class="table table-sm  m-0" :class="orderIssue.rejected_bill.items.length > 1 ? 'collapse' : '' " :id="'rejectedBill'+orderIssue.id"
@@ -314,8 +296,6 @@
                                         <td style="min-width: 100px" >
                                             <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.name_goods }}</div>
                                             <div class="text-nowrap m-0 p-0 tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.name_goods }}</div>
-                                            {{--                                            <p class="text-truncate text-primary m-0 p-0 tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开"  @dblclick="nowrapText($event)" >@{{ item.name_goods }}</p>--}}
-                                            {{--                                            <p class="text-nowrap m-0 p-0 tooltipTarget" style="display: none;cursor:pointer"  title="双击收起" @dblclick="truncateText($event)" >@{{ item.name_goods }}</p>--}}
                                         </td>
                                         <td style="min-width: 50px" :data-value="orderIssue.rejectedCount += item.amount">@{{ item.amount }}</td>
                                         <td style="min-width: 50px" >@{{ item.quality_label }}</td>
@@ -328,8 +308,6 @@
                                 </button>
                             </div>
                         </td>
-                        {{--                        @endcannot--}}
-                        {{--退单商品明细 结束--}}
 
                         <td class="child-layer-3">@{{ orderIssue.result_explain}}</td>
                         <td class="child-layer-3">
@@ -345,7 +323,6 @@
                             @endcan
                         </td>
 
-                        {{--处理结果--}}
                         <td class=" m-0 p-0 log-td child-layer-3" valign="middle" align="center" v-on:mouseover="showAddBtn($event)" v-on:mouseleave="hideAddBtn($event)" colspan="4">
                             <div class="addLogDiv row m-0 p-0 form-group" :id="'AddLog_'+orderIssue.id" style="display: none;">
                                 <input type="hidden" name="id" :value="orderIssue.id">
@@ -368,7 +345,6 @@
                                 <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id" :data-value="orderIssue.logShow == null ? orderIssue.logShow=false:''">
                                     <tr style="position:static" align="center" v-for="(log,index) in orderIssue.logs" :class="(orderIssue.logs.length <= 2 ? '' : ((index === 0 || orderIssue.logShow )  ? '' : 'd-none' )) "
                                         v-on:mouseover="showDelBtn($event)" v-on:mouseleave="hideDelBtn($event)" >
-                                        <td style="min-width: 75px">@{{ log.type }}</td>
                                         <td style="min-width: 200px">@{{ log.content }}</td>
                                         <td class="text-muted" style="min-width: 120px">@{{ log.user.name }}</td>
                                         <td class="text-muted" style="min-width: 170px">@{{ log.created_at }}</td>
@@ -667,6 +643,11 @@
                     {name:'超量退回',value:'超量退回'},
                     {name:'全部退回',value:'全部退回'},
                 ],
+                logistics:[
+                    @foreach($logistics as $logistic)
+                    {name:{{$logistic->id}},value:'{{$logistic->name}}'},
+                    @endforeach
+                ],
                 expressRemission:['原单减免', '部分减免', '全部减免'],
                 checkData: [],
                 from: '',
@@ -680,6 +661,7 @@
                 message:{},
                 edit:{
                     batchStoreLogs:'',
+                    isShow:[],
                 },
             },
             mounted: function () {
@@ -711,6 +693,13 @@
                     },
                     {name: 'client_code', type: 'input', tip: '原始订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '原始订单号'},
                     {name: 'logistic_number', type: 'input', tip: ['输入原始运单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索'], placeholder: '运单号'},
+                    {
+                        name: 'logistic_id',
+                        type: 'select_multiple_select',
+                        tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的承运商'],
+                        placeholder: ['承运商', '定位或多选承运商'],
+                        data: this.logistics
+                    },
                     {name: 'logistic_number_return', type: 'input', tip: '退回单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '退回单号'},
                     {name: 'send_client_code', type: 'input', tip: '二次订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '二次订单号'},
 
@@ -772,7 +761,7 @@
                     let _this = this;
                     setTimeout(function(){
                         let countShow = $(tr).children('.three-layer').length;
-                        $('.header-3').attr('colspan',countShow +2+  (_this.isShowSecondOrderInfo ? 2:0) +(_this.isShowRejectedBill?4:0));
+                        $('.header-3').attr('colspan',countShow +3+  (_this.isShowSecondOrderInfo ? 2:0) +(_this.isShowRejectedBill?4:0));
                     },2);
                 },
                 isShowSecondOrderInfo(newValue){
@@ -780,7 +769,7 @@
                     let _this = this;
                     setTimeout(function(){
                         let countShow = $(tr).children('.three-layer').length;
-                        $('.header-3').attr('colspan',countShow +2+  (_this.isShowSecondOrderInfo ? 2:0) +(_this.isShowRejectedBill?4:0));
+                        $('.header-3').attr('colspan',countShow +3+  (_this.isShowSecondOrderInfo ? 2:0) +(_this.isShowRejectedBill?4:0));
                     },2);
                 },
             },
@@ -1298,6 +1287,8 @@
                         }else{
                             if(response.data.message){
                                 orderIssue['logistic_number_return'] = logistic_number_return
+                                orderIssue.rejected_bill = null
+                                orderIssue.finalStatus = '未退回'
                                 tempTip.okWindow(response.data.message,'确认')
                             }else{
                                 tempTip.setDuration(3000)
@@ -1318,6 +1309,14 @@
                     let truncateSpan = $(e.target);
                     truncateSpan.hide();
                     truncateSpan.siblings('.text-nowrap').show();
+                },
+                addShow(id){
+                    console.log(id)
+                    this.edit.isShow.push(id)
+                },
+                removeShow(id){
+                    let index = this.edit.isShow.indexOf(id)
+                    if(index!==-1) this.edit.isShow.splice(index,1)
                 }
             }
         })

+ 30 - 13
resources/views/order/tracking/index.blade.php

@@ -82,22 +82,24 @@
                         <td>@{{ index+1 }}</td>
                         <td class="text-decoration-none td-warm">@{{ trackOrder.ownerName }}</td>
                         <td class="td-warm">
-                            <span v-if="trackOrder.web_order_number"> </span>
+                            <span v-if="trackOrder.web_order_number">
+                                <span v-if="trackOrder.orderClientCode"></span>
+                                <span v-else> @{{ trackOrder.orderClientCode }}</span>
+                            </span>
                             <span v-else>  @{{ trackOrder.orderClientCode }}</span>
-{{--                            @{{ trackOrder.orderClientCode }}--}}
                         </td>
                         <td class="td-warm">
-                            <span v-if="trackOrder.web_order_number"> @{{ trackOrder.web_order_number }}</span>
+                            @can('订单管理-跟踪-仓库编辑')
+                                <input class="form-control form-control-sm" :value="trackOrder.web_order_number" @keydown.enter="warehouseUpdate($event,'web_order_number',trackOrder)" >
+                            @else
+                                @{{ trackOrder.web_order_number }}
+                            @endcan
+{{--                            <span v-if="trackOrder.web_order_number">@{{ trackOrder.web_order_number }} </span>--}}
 {{--                            <span v-else> @{{ trackOrder.web_order_number }}</span>--}}
-{{--                            @can('订单管理-跟踪-仓库编辑')--}}
-{{--                                <input class="form-control form-control-sm" :value="trackOrder.web_order_number" @keydown.enter="warehouseUpdate($event,'web_order_number',trackOrder)" >--}}
-{{--                            @else--}}
-{{--                            @{{ trackOrder.web_order_number }}--}}
-{{--                            @endcan--}}
                         </td>
                         <td class="td-warm">
                             @can('订单管理-跟踪-仓库编辑')
-                                <input class="form-control form-control-sm" type="datetime-local" :value="trackOrder.pick_up_at | dateTime" @change="warehouseUpdate($event,'pick_up_at',trackOrder)" >
+                                <input class="form-control form-control-sm" type="datetime-local" :value="trackOrder.pick_up_at | dateLocal" @change="warehouseUpdate($event,'pick_up_at',trackOrder)" >
                             @else
                                 @{{ trackOrder.pick_up_at }}
                             @endcan
@@ -252,7 +254,15 @@
             },
             mounted:function(){
 
-                let selectDate = [
+                let selectDate1 = [
+                    {name:'31',value:'近一月'},
+                    {name:'92',value:'近三月'},
+                    {name:'183',value:'近半年'},
+                    {name:'366',value:'近一年'},
+                    {name:'0',value: '不限'},
+                ];
+                let selectDate2 = [
+                    {name:'15',value:'15天内'},
                     {name:'31',value:'近一月'},
                     {name:'92',value:'近三月'},
                     {name:'183',value:'近半年'},
@@ -270,9 +280,12 @@
                         {name:'owner_id',type:'select_multiple_select', tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的客户'], placeholder: ['货主', '定位或多选货主'], data: _this.owners},
                         {name:'client_code',type:'input',tip:'订单号',placeholder:'订单号'},
                         {name:['client','addtime'],type:'input_select',tip:['右侧选择查询范围,默认为一月内','查询范围,范围越短搜索越快'],placeholder: ['客户',''],
-                            data:selectDate, rules:[{son:{addtime:{default:'31',required_without_all_if:['orderdate_start','orderdate_end']}}},
-                                {date_relevance:{date:['start_at','end_at'],relevance:'addtime',killing:'date',default:[31,92,183,366]}}]},
-                    ],
+                            data:selectDate1, rules:[{son:{addtime:{default:'31',required_without_all_if:['start_at','end_at']}}},
+                                {date_relevance:{date:['start_at','end_at'],relevance:'addtime',killing:'date',default:[15,31,92,183,366]}}]},
+                        {name:['remark','remark_addtime'],type:'input_select',tip:['右侧选择查询范围,默认为15天内','查询范围,范围越短搜索越快'],placeholder: ['订单备注',''],
+                            data:selectDate2, rules:[{son:{remark_addtime:{default:'15',required_without_all_if:['start_at','end_at']}}},
+                                {date_relevance:{date:['start_at','end_at'],relevance:'remark_addtime',killing:'date',default:[15,31,92,183,366]}}]},
+                     ],
                     [
                         {name:'end_at',type:'dateTime',tip:'结束日期',placeholder: '结束日期'},
                         {name:'logistic_number',type:'input',tip:'运输单号',placeholder:'运输单号'},
@@ -462,6 +475,10 @@
                     }
                     return value
                 },
+                dateLocal:function(value) {
+                    if (value !== null) {return value.replace(' ', 'T')}
+                    return value
+                },
                 number:function(value){
                     var toFixedNum = Number(value).toFixed(3);
                     var realVal = toFixedNum.substring(0, toFixedNum.toString().length - 1);