Browse Source

临时提交

ajun 5 năm trước cách đây
mục cha
commit
3942163815

+ 9 - 8
app/Http/Controllers/OrderTrackingController.php

@@ -77,17 +77,18 @@ class OrderTrackingController extends Controller
             return ['success'=>false,'fail_info'=>'没有对应权限'];
         try {
             $logistic = Logistic::query()->where('name',$request['value'])->first();
-            $order = Order::query()->whereHas('packages.commodities.orderTracking',function($query)use($request){
-                $query->where('id',$request['id']);
-            })->first();
-            $order->update(['logistic_id'=>$logistic->id]);
-            app('LogService')->log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
-            return ['success'=>true];
+            $bool = OrderTracking::query()->where('id',$request['id'])->update(['logistic_id'=>$logistic['id']]);
+            if($bool){
+                app('LogService')->log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
+                return ['success'=>true];
+            }else{
+                app('LogService')->log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()));
+                return  ['success'=>false,'fail_info'=>'修改失败'];
+            }
         } catch (\Exception $e) {
             app('LogService')->log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false,'fail_info'=>$e->getMessage()];
         }
-
     }
 
     public function upload(Request $request)
@@ -162,7 +163,7 @@ class OrderTrackingController extends Controller
         $order_client_code_temp = '';
         $row_count = 0;
         foreach ($orderTrackings as $index=> $orderTracking) {
-            $logistic =  $orderTracking->commodities->package->order->logistic->name ?? '';
+            $logistic =  $orderTracking->logistic->name ?? '';
             if($order_client_code_temp==''){
                 $order_client_code_temp=$orderTracking->order_client_code;
                 $row_count=1;

+ 5 - 1
app/OrderTracking.php

@@ -10,7 +10,8 @@ class OrderTracking extends ModelExtended
 
     use ModelTimeFormat;
     protected $fillable = [
-        'order_package_commodity_id','owner_id','web_order_number',
+        'order_package_commodity_id','owner_id','logistic_id',
+        'web_order_number',
         'pick_up_at','sale','client','order_client_code',
         'order_remark','pallet_total','planning_sent_at',
         'is_on_duty_shift','is_arrival','signed_at',
@@ -45,6 +46,9 @@ class OrderTracking extends ModelExtended
     public function owner(){
         return $this->hasOne(Owner::class,'id','owner_id');
     }
+    public function logistic(){
+        return $this->hasOne(Logistic::class,'id','logistic_id');
+    }
     public function uploadFile()
     {
         return $this->hasOne(UploadFile::class,'table_id','order_client_code')->where('table_name','order_trackings');

+ 19 - 17
app/Services/OrderTrackingService.php

@@ -33,10 +33,10 @@ class OrderTrackingService
             $ownerids = explode(",", $params['owner_id']);
             $owner_ids = array_intersect($owner_ids, $ownerids);
         }
-        $query = OrderTracking::query()->with(['owner','uploadFile', 'commodities' => function ($query) {
+        $query = OrderTracking::query()->with(['logistic','owner','uploadFile', 'commodities' => function ($query) {
             $query->with(['commodity'=>function($query){
                 $query->with('barcodes');
-            }, 'package.order.logistic']);
+            }, 'package.order']);
         },])->whereHas('owner', function ($query) use ($owner_ids) {
             $query->whereIn('id', $owner_ids); //货主
         });
@@ -68,17 +68,14 @@ class OrderTrackingService
                 if($params['client_code'] ?? false){
                     $query->where('client_code','like', $params['client_code']);
                 }
-                if(isset($params['logistic_id']) ){
-                    $query->where('logistic_id',$params['logistic_id']);
-                }
             });
         }
 
-        if ($params['client'] ?? false)  // 客户
-            $query->where('client', 'like', $params['client']);
+        if(isset($params['logistic_id']))$query->where('logistic_id',$params['logistic_id']);   // 快递
+
+        if ($params['client'] ?? false) $query->where('client', 'like', $params['client']);  // 客户
 
-        if(!empty($params['web_order_number']))
-            $query->where('web_order_number', 'like', $params['web_order_number'].'%');
+        if(!empty($params['web_order_number'])) $query->where('web_order_number', 'like', $params['web_order_number'].'%'); // web+订单好
 
         if ($params['sku'] ?? false) {
             $query->whereHas('commodities.commodity', function ($query) use ($params) {
@@ -166,7 +163,7 @@ class OrderTrackingService
         $orderService = app(OrderService::class);
         /** @var Collection $orderHeaders */
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
-        $this->customizedOperation($orderHeaders);
+       // $this->customizedOperation($orderHeaders);
         $orderService->createByWmsOrder($orderHeaders);
         $this->createByWmsOrderHeader($orderHeaders);
     }
@@ -176,7 +173,7 @@ class OrderTrackingService
         $orderService = app(OrderService::class);
         /** @var Collection $orderHeaders */
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateEdit($startData);
-        $this->customizedOperation($orderHeaders);
+       // $this->customizedOperation($orderHeaders);
         $orderService->updateByWmsOrders($orderHeaders);
         $this->updateByWmsOrderHeaders($orderHeaders);
     }
@@ -438,6 +435,8 @@ class OrderTrackingService
      */
     public function getParamsByOrderHeaderAndOrder($orderHeader,$order)
     {
+        /** @var LogisticService $logisticService */
+        $logisticService = app('LogisticService');
         $client = $orderHeader['issuepartyname'] ?? '';
         $order_remark = $orderHeader['notes'] ?? '';
         $web_order_number = null;
@@ -446,11 +445,13 @@ class OrderTrackingService
         }
         $pick_up_at = $orderHeader->lastshipmenttime;
         $planning_sent_at = null;
+
+        // 快递方式
+        $logistic = $logisticService->getLogisticByCode($orderHeader['userdefine1']);
+        if($orderHeader['userdefine1'] =='自提') $logistic = $logisticService->getLogisticByCode('XJWL'); // 自提转新杰物流
         if(isset($pick_up_at)){
-             $logisticTiming = app(LogisticTimingService::class)->findByParams($orderHeader['c_city']??'',$orderHeader['c_province']??'',$order->logistic_id);
-             if($logisticTiming){
-                 $planning_sent_at = Carbon::parse((string)$pick_up_at)->addDays($logisticTiming->days_at_working);
-             }
+             $logisticTiming = app(LogisticTimingService::class)->findByParams($orderHeader['c_city']??'',$orderHeader['c_province']??'',$logistic['id']);
+             if($logisticTiming)$planning_sent_at = Carbon::parse((string)$pick_up_at)->addDays($logisticTiming->days_at_working); // 预期到货时间
         }
         if(stristr($order_remark,'[')){
             $items = [];
@@ -458,10 +459,11 @@ class OrderTrackingService
             $client = $items[1][0];
             $order_remark = $items[3][0];
         }
-        if(stristr($client,'天猫'))$client='天猫';
-        if(stristr($client,'京东'))$client='京东';
+        if(mb_strpos($client,'天猫')!=false)$client='天猫';
+        if(mb_strpos($client,'京东')!=false)$client='京东';
         return [
             'owner_id' => $order->owner_id,
+            'logistic_id' => $logistic['id'],
             'client' => $client,
             'sale' => $orderHeader['issuepartyname'] ?? '',
             'created_at' => $order->created_at,

+ 1 - 1
database/migrations/2020_07_29_160826_create_order_issues_table.php

@@ -22,7 +22,7 @@ class CreateOrderIssuesTable extends Migration
             $table->string('send_back_number')->nullable()->index()->comment('退回单号');
             $table->enum('is_new_rejecting',['无','有','已处理'])->default('无')->index()->comment('有新退件');
             $table->integer('rejected_bill_id')->index()->nullable()->comment('退回单');
-            $table->enum('rejecting_status', ['无', '未退回', '全部退回', '部分退回', '差异退回', '超量退回', '全部退回',])->default('无')->index()->comment('退回状态');
+            $table->enum('rejecting_status', ['无', '未退回', '全部退回', '部分退回', '差异退回', '超量退回'])->default('无')->index()->comment('退回状态');
             $table->string('order_issue_type_id')->nullable()->comment('问题类别');
             $table->string('result_explain')->nullable()->comment('处理结果说明');
             $table->integer('second_order_id')->nullable()->comment('二次订单号');

+ 61 - 0
database/migrations/2020_12_23_174008_add_column_owner_id_to_order_trackings.php

@@ -0,0 +1,61 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddColumnOwnerIdToOrderTrackings extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_trackings', function (Blueprint $table) {
+            $table->integer('logistic_id')->index()->comment('快递');
+        });
+        $this->migrationLogistic();
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_trackings', function (Blueprint $table) {
+            $table->dropColumn('logistic_id');
+        });
+    }
+
+    public function migrationLogistic()
+    {
+        /** @var \App\Services\OrderTrackingService $service */
+        $service = app(\App\Services\OrderTrackingService::class);
+        $count= \App\OrderTracking::query()->count();
+        $logistic = \App\Logistic::query()->where('name','新杰物流')->first();
+        $logistic_zt = \App\Logistic::query()->where('name','自提')->first();
+        for ($i=0;$i<= $count;$i+=100){
+            $orderTrackings = \App\OrderTracking::query()
+                ->where('id','>=',$i)
+                ->where('id','<=',$i+100)
+                ->get();
+            if($orderTrackings->count() ==0) return;
+            $update_params = [['id','logistic_id']];
+            $orderTrackings->each(function($orderTracking,$logistic_zt,$logistic){
+                $order =$orderTracking->commodities->package->order;
+                $logistic_id = $order->logistic_id;
+                if($order->logistic_id == $logistic_zt->id)$logistic_id = $logistic->id;
+                $update_params[] = [
+                    'id' => $orderTracking->id,
+                    'logistic_id' => $logistic_id,
+                ];
+            });
+            $service->batchUpdate($update_params);
+            unset($service);
+        }
+    }
+}

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

@@ -143,13 +143,13 @@
                             @endcan
                         </td>
                         <td class="td-yellow">
-                            <span v-if="['新杰物流','新杰物流到付'].includes(trackOrder.packageLogistic)">
+                            <span v-if="['新杰物流','新杰物流到付'].includes(trackOrder.logistic.name)">
                                 <button class="btn btn-md btn-outline-primary m-0 text-nowrap" @click="changeLogistic(trackOrder,$event)">
-                                    @{{ trackOrder.packageLogistic }}
+                                    @{{ trackOrder.logistic.name }}
                                 </button>
                             </span>
                             <span v-else>
-                                @{{ trackOrder.packageLogistic }}
+                                @{{ trackOrder.logistic.name }}
                             </span>
                         </td>
                         <td class="td-yellow">
@@ -512,7 +512,7 @@
                     }else if(value==='新杰物流到付'){
                         value='新杰物流'
                     }
-                    let data = {id:tackOrder.id,param:'packageLogistic',value:value}
+                    let data = {id:tackOrder.id,param:'logistic_id',value:value}
                     let _this = this
                     axios.post('{{url('apiLocal/order/tracking/updateLogisticId')}}',data).then(function (response) {
                         tempTip.setDuration(2000)