Jelajahi Sumber

Merge branch 'yang'

zhouzhendong 4 tahun lalu
induk
melakukan
5d1b6e601a

+ 1 - 1
app/Events/OrderIssueProcessLogCreateEvent.php

@@ -18,7 +18,7 @@ class OrderIssueProcessLogCreateEvent
     /**
      * @var int
      * 1 返回派件
-     * 2 已收
+     * 2 已
      */
     public $status;
 

+ 10 - 6
app/Filters/OrderPackageFilters.php

@@ -32,6 +32,7 @@ class OrderPackageFilters
         'sent_at_end',
         'default_date',
         'has_transfer_status',
+        'is_new_rejecting',
     ];
 
     protected $orderIssueQuery;
@@ -149,15 +150,11 @@ class OrderPackageFilters
     {
         if ($is_issue === '是') {
             $this->queryBuilder->whereIn('order_id', function ($query) {
-                $query->from('orders')->select('id')->whereIn('id', function ($query) {
-                    $query->from('order_issues')->select('order_id')->whereNotNull('order_id');
-                });
+                $query->from('order_issues')->select('order_id')->whereNotNull('order_id');
             });
         } else {
             $this->queryBuilder->whereIn('order_id', function ($query) {
-                $query->from('orders')->select('id')->whereNotIn('id', function ($query) {
-                    $query->from('order_issues')->select('order_id')->whereNotNull('order_id');
-                });
+                $query->from('order_issues')->select('order_id')->whereNotNull('order_id');
             });
         }
     }
@@ -173,4 +170,11 @@ class OrderPackageFilters
             $query->from('order_package_remarks')->select('order_package_id')->where('content', 'like', $remark);
         });
     }
+
+    public function is_new_rejecting($is_new_rejecting)
+    {
+        $this->queryBuilder->whereIn('order_id', function ($query) use ($is_new_rejecting) {
+            $query->from('order_issues')->select('order_id')->where('is_new_rejecting', $is_new_rejecting);
+        });
+    }
 }

+ 2 - 0
app/Http/Controllers/PackageLogisticController.php

@@ -66,6 +66,8 @@ class PackageLogisticController extends Controller
     {
         $data['status'] = OrderPackage::switchStatus($request->input('status'));
         $logistic_numbers = $request->input('logistic_numbers');
+        //标记为手动更新
+        $data['is_manual_update']= true;
         OrderPackage::query()->whereIn('logistic_number', $logistic_numbers)->update($data);
     }
 

+ 1 - 1
app/Listeners/UpdateOrderPackageExceptionListener.php

@@ -33,7 +33,7 @@ class UpdateOrderPackageExceptionListener implements ShouldQueue
                 $status = '返回派件';
                 break;
             case 2:
-                $status = '已收';
+                $status = '已收';
                 break;
             default:
                 $status = '无';

+ 4 - 1
app/OrderPackage.php

@@ -44,11 +44,13 @@ class OrderPackage extends Model
         'owner_id',
         'uploaded_to_wms',
         'sync_routes_flag',
+        'is_manual_update',
     ];
 
     protected $casts = [
         'transfer_status' => 'array',
         'sync_routes_flag' => 'boolean',
+        'is_manual_update' => 'boolean',
     ];
 
     static public $enums = [
@@ -67,7 +69,8 @@ class OrderPackage extends Model
             '返回异常'=>11,
             '返回派件'=>12,
             '其他异常'=>13,
-            '已收件'=>14,
+            '已签收'=>14,
+            '其他'=>14,
         ],
     ];
 

+ 3 - 3
app/Services/LogisticAliJiSuApiService.php

@@ -58,7 +58,7 @@ class LogisticAliJiSuApiService
             if (!empty($list) && is_array($list)) {
                 $lastNativeRoute = $list[0];
                 $result['status'] = $this->getStatus($response);
-                if ($result['status'] == '已收') $result['received_at'] = $lastNativeRoute->time;
+                if ($result['status'] == '已收') $result['received_at'] = $lastNativeRoute->time;
                 $result['transfer_status'] = $this->getTransferStatus($list);
                 $result['routes_length'] = array_key_exists('transfer_status', $result) ? count($result['transfer_status']) : 0;
                 $orderPackageReceivedSyncService = app('OrderPackageReceivedSyncService');
@@ -90,13 +90,13 @@ class LogisticAliJiSuApiService
                 $status = '派送中';
                 break;
             case '3':
-                $status = '已收';
+                $status = '已收';
                 break;
             case '4':
                 $status = '派送异常';
                 break;
             default:
-                $status = '';
+                $status = '其他';
         }
         return $status;
     }

+ 1 - 1
app/Services/LogisticSFService.php

@@ -165,7 +165,7 @@ xml;
                 case 607:
                 case 8000:
                 case 80:
-                    $data['status'] = '已收';
+                    $data['status'] = '已收';
                     $data['received_at'] = $lastRoute[$this->protected_switch['received_at']];
                     break;
                 case 648:

+ 4 - 8
app/Services/LogisticYDService.php

@@ -114,19 +114,15 @@ class LogisticYDService
             if (!empty($nativeRoutes)) {
                 $lastNativeRoute = $nativeRoutes[count($nativeRoutes) - 1];
                 $result['status'] = $this->getStatus($nativeData);
-                if ($result['status'] == '已收') {
+                if ($result['status'] == '已收') {
                     $result['received_at'] = $lastNativeRoute->time;
                 }
                 $result['transfer_status'] = $this->getTransferStatus($nativeRoutes);
                 $result['routes_length'] = array_key_exists('transfer_status', $result) ? count($result['transfer_status']) : 0;
-                $orderPackageReceivedSyncService = app('OrderPackageReceivedSyncService');
-                $exceptionData = $orderPackageReceivedSyncService->setExceptionType($result, $lastNativeRoute ? $lastNativeRoute->time : null);
-
             } else {
                 $result['status'] = null;
                 $result['transfer_status'] = [];
             }
-
             if (!array_key_exists('status', $result)) {
                 $result['status'] = null;
                 $result['transfer_status'] = [];
@@ -150,16 +146,16 @@ class LogisticYDService
                 $status = '在途';
                 break;
             case 'SIGNED':
-                $status = '已收';
+                $status = '已收';
                 break;
             case 'RETURN':
                 $status = '返回中';
                 break;
             case 'SIGNFAIL':
-                $status = '';
+                $status = '其他';
                 break;
             default:
-                $status = '';
+                $status = '其他';
         }
         return $status;
     }

+ 3 - 3
app/Services/LogisticYTOService.php

@@ -61,7 +61,7 @@ class LogisticYTOService
             if (!empty($response) && is_array($response)) {
                 $lastNativeRoute = $response[count($response) - 1];
                 $result['status'] = $this->getStatus($lastNativeRoute);
-                if ($result['status'] == '已收') $result['received_at'] = $lastNativeRoute->upload_Time;
+                if ($result['status'] == '已收') $result['received_at'] = $lastNativeRoute->upload_Time;
                 $result['transfer_status'] = $this->getTransferStatus($response);
                 $result['routes_length'] = array_key_exists('transfer_status', $result) ? count($result['transfer_status']) : 0;
                 $orderPackageReceivedSyncService = app('OrderPackageReceivedSyncService');
@@ -95,13 +95,13 @@ class LogisticYTOService
                 $status = '派送中';
                 break;
             case 'SIGNED':
-                $status = '已收';
+                $status = '已收';
                 break;
             case 'TMS_RETURN':
                 $status = '返回中';
                 break;
             default:
-                $status = '';
+                $status = '其他';
         }
         return $status;
     }

+ 2 - 2
app/Services/LogisticZopService.php

@@ -72,11 +72,11 @@ class LogisticZopService implements LogisticRouteInterface
                 break;
             case 'SIGNED':
             case '签收':
-                $status = '已收';
+                $status = '已收';
                 $received_at = Carbon::parse($lastRoute->scanDate / 1000)->addHours(8)->toDateTimeString();
                 break;
             default:
-                $status = '';
+                $status = '其他';
                 break;
         }
         return array($status, $received_at);

+ 7 - 3
app/Services/OrderPackageReceivedSyncService.php

@@ -180,9 +180,9 @@ class OrderPackageReceivedSyncService
         foreach ($logisticResponses as $logisticResponse) {
             if (empty($logisticResponse)) continue;
             $orderPackage = OrderPackage::query()->where('logistic_number', $logisticResponse['logistic_number'])->first();
-            //如果已经收货,状态改为已收
+            //如果已经收货,状态改为已
             if ($logisticResponse['received_at']??false) {
-                $logisticResponse['status'] = '已收';
+                $logisticResponse['status'] = '已收';
             }
             //未查询到路由信息改为  揽件异常
             if (empty($logisticResponse['transfer_status'])) {
@@ -192,6 +192,10 @@ class OrderPackageReceivedSyncService
                     $logisticResponse['status'] = '疑似库内丢件';
                 }
             }
+            //标记为手动更新的 status不更新
+            if ($orderPackage->is_manual_update) {
+                unset($logisticResponse['status']);
+            }
             if (isset($logisticResponse['status'])) $orderPackage->status = $logisticResponse['status'];
             if (isset($logisticResponse['received_at'])) $orderPackage->received_at = $logisticResponse['received_at'];
             if (isset($logisticResponse['transfer_status']) && !empty($logisticResponse['transfer_status'])) $orderPackage->transfer_status = $logisticResponse['transfer_status'];
@@ -343,7 +347,7 @@ class OrderPackageReceivedSyncService
             $conclusion |= !empty($data['transfer_status']) ? $IS_ROUTED : 0;
             $conclusion |= ($delivered_duration > $VALID_HOURS) ? $IS_IN_VALID_TIME : 0;
             $conclusion |= ($orderPackage->weighed_at) ? $IS_WEIGHED : 0;
-            $conclusion |= ($data['status'] == '已收') ? $IS_RECEIVED : 0;
+            $conclusion |= ($data['status'] == '已收') ? $IS_RECEIVED : 0;
             $conclusion |= ($data['status'] == '派送中') ? $IS_SENDING : 0;//
             $conclusion |= ($last_routed_duration > $SHORT_RESPONSE_HOURS && $last_routed_duration < $LONG_RESPONSE_HOURS) ? $IS_SHORT_NO_RESPONSE : 0;
             $conclusion |= ($last_routed_duration > $LONG_RESPONSE_HOURS) ? $IS_LONG_NO_RESPONSE : 0;

+ 1 - 1
database/factories/OrderPackageFactory.php

@@ -7,7 +7,7 @@ use App\OrderPackage;
 use Faker\Generator as Faker;
 
 $factory->define(OrderPackage::class, function (Faker $faker) {
-    $statuses = ['无', '已称重', '已揽收', '在途', '在途异常', '派送中', '派送异常', '返回中', '返回异常', '返回派件', '其他异常', '已收',];
+    $statuses = ['无', '已称重', '已揽收', '在途', '在途异常', '派送中', '派送异常', '返回中', '返回异常', '返回派件', '其他异常', '已收',];
     $exceptions = ['是', '否'];
     $exception_types = ['疑似库内丢件','揽件异常','中转异常','疑似丢件','派件异常','其他','无'];
     return [

+ 32 - 0
database/migrations/2021_08_25_132757_add_column_is_manual_update_status_to_order_packages_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddColumnIsManualUpdateStatusToOrderPackagesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->boolean('is_manual_update')->default(false)->comment('是否手动更新');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->dropColumn('is_manual_update');
+        });
+    }
+}

+ 28 - 2
resources/views/package/logistic/index.blade.php

@@ -121,6 +121,10 @@
                             <span
                                 style="display: inline-block;width: 15px;height: 15px;border-radius: 50%;position: absolute;top: 2px; margin-left: 3px;box-shadow: 0 0 3px #211f1f"
                                   :style="package.sync_routes_flag?'background-color:#4ed32d':'background-color:#e83939'"></span>
+                            <span v-if="package.is_manual_update">
+                                <i class="fa fa-hand-paper-o" aria-hidden="true"
+                                   style="color: red;position: absolute;left: 50px;top: 3px;"></i>
+                            </span>
                         </span>
                     </td>
                     <td>@{{ package.logistic_number }}</td>
@@ -132,6 +136,7 @@
                     <td>@{{ package.received_at }}</td>
                     <td>@{{ package.weighed_at }}</td>
                     <td>
+
                         <div v-if="package.transfer_status && package.transfer_status.length>0"
                              class="text-overflow-warp-200 up" :id="'route-'+i">
                             <p v-for="route in package.transfer_status">
@@ -150,6 +155,8 @@
                             </label>
                         </div>
                     </td>
+                    <!--退件状态-->
+                    <td>@{{ package.order.issue?package.order.issue.is_new_rejecting:'' }}</td>
                     <td  class="m-0 p-0 order-package-remarks" style="padding-left: 0 !important;padding-right: 0 !important">
                         @can('包裹管理-快递-客服备注')
                         <label :for="'create_remark_'+package.id" class="btn-create-remark" @click="package.input_remark=!package.input_remark">
@@ -258,9 +265,20 @@
                 showRemarkList: {},
                 selectTr: 0,
                 statuses: [
+                    '无',
+                    '已称重',
                     '已揽收',
+                    '揽件异常',
+                    '疑似库内丢件',
                     '在途',
-                    '无',
+                    '在途异常',
+                    '派送中',
+                    '派送异常',
+                    '返回中',
+                    '返回异常',
+                    '返回派件',
+                    '其他异常',
+                    '已签收',
                 ],
                 batchStatus: null,
                 remarkHover: null,
@@ -311,7 +329,7 @@
                                 {name: '11', value: '返回异常'},
                                 {name: '12', value: '返回派件'},
                                 {name: '13', value: '其他异常'},
-                                {name: '14', value: '已收'},
+                                {name: '14', value: '已收'},
                             ]
                         },
                         {name: 'sent_at_start', type: 'dateTime', tip: '选择显示发出时间的起始时间'},
@@ -363,6 +381,13 @@
                             placeholder: '是否为问题件',
                             data: [{name: '是', value: '是'}, {name: '否', value: '否'}]
                         },
+                        {
+                            name: 'is_new_rejecting',
+                            type: 'select',
+                            tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的状态'],
+                            placeholder: '退件状态',
+                            data: [{name: '无', value: '无'}, {name: '有', value: '有'},{name: '已处理', value: '已处理'}]
+                        },
                     ]
                 ];
                 _this.form = new query({
@@ -382,6 +407,7 @@
                     {name: 'received_at', value: '收货日期'},
                     {name: 'weighed_at', value: '称重日期'},
                     {name: 'transfer_status', value: '快递路由'},
+                    {name: 'is_new_rejecting', value: '退件状态'},
                     {name: 'remark', value: '客服备注'},
                     {name: 'result_explain', value: '情况说明'},
                     {name: 'issue_type', value: '问题类别'},