Преглед на файлове

Merge branch 'master' into zengjun

ajun преди 4 години
родител
ревизия
dfc3767a6c

+ 1 - 1
app/OracleDOCASNHeader.php

@@ -29,6 +29,6 @@ class OracleDOCASNHeader extends Model
     public function asnDetails()
     {
         return $this->hasMany(OracleDOCASNDetail::class,'asnno','asnno')
-            ->select('asnno','asnlineno','customerid','sku','skudescrc','linestatus','lotatt08','lotatt05','receivedqty','expectedqty','addtime','edittime');
+            ->select('asnno','asnlineno','customerid','sku','skudescrc','linestatus','lotatt08','lotatt05','receivedqty','receivedqty_each','expectedqty','addtime','edittime');
     }
 }

+ 1 - 2
app/Services/HandInStorageService.php

@@ -618,11 +618,10 @@ sql;
                 $asnDetail['customerid'] == $info['customerid'] &&
                 $asnDetail['sku'] == $info['sku'] ){
                 $receiveAsn = $asnDetail;
-                break;
             }
         }
 
-        if (!$receiveAsn) return true;
+        if (!$receiveAsn) return false;
 
         $receivedQty = (int)($receiveAsn['receivedqty']??$receiveAsn['receivedqty_each']);  // 已收货数量
         $amount = (int) $info['amount'];                    // 当前收货数量

+ 1 - 0
app/Services/LogisticSFService.php

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

+ 7 - 8
app/Services/OrderPackageReceivedSyncService.php

@@ -191,20 +191,19 @@ class OrderPackageReceivedSyncService
             }
             //标记为手动更新的 status不更新
             if ($orderPackage->is_manual_update) {
-                if (OrderPackage::switchStatus($orderPackage->status)>OrderPackage::switchStatus($logisticResponse['status'])) {
+                if (OrderPackage::switchStatus($orderPackage->status)>OrderPackage::switchStatus($logisticResponse['status']??'生成订单')) {
                     unset($logisticResponse['status']);
                 }
             }
             $logisticResponse = $this->setExceptionStatus($logisticResponse);
-            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'];
-            if (isset($logisticResponse['exception_status']) && !empty($logisticResponse['exception_status'])) $orderPackage->exception_status = $logisticResponse['exception_status'];
-            if (isset($logisticResponse['is_delay_deliver']) && !empty($logisticResponse['is_delay_deliver'])) $orderPackage->is_delay_deliver = $logisticResponse['is_delay_deliver'];
             if (Str::contains($orderPackage->logistic_number,['SO','#','-'])) {
-                $orderPackage->exception_status = '单号异常';
+                $logisticResponse['exception_status'] = '单号异常';
             }
-            $orderPackage->save();
+            if (isset($logisticResponse['exception_status'])) $logisticResponse['exception_status'] = OrderPackage::switchExceptionStatus($logisticResponse['exception_status']);
+            if (isset($logisticResponse['status'])) $logisticResponse['status'] = OrderPackage::switchStatus($logisticResponse['status']);
+            if (isset($logisticResponse['routes_length'])) unset($logisticResponse['routes_length']);
+            OrderPackage::query()->where('logistic_number', $logisticResponse['logistic_number'])
+                ->update($logisticResponse);
         }
     }
 

+ 14 - 4
app/Traits/LogisticSyncTrait.php

@@ -4,6 +4,8 @@ namespace App\Traits;
 
 use App\OrderPackage;
 use Illuminate\Support\Carbon;
+use Illuminate\Support\Str;
+use function DeepCopy\deep_copy;
 
 trait LogisticSyncTrait
 {
@@ -36,13 +38,16 @@ trait LogisticSyncTrait
         if (empty($orderPackage->sent_at)) {//没复核
             if (empty($transfer_status)) {//没有路由信息
                 //延迟发货
-                if ($created_at->gt($created_at->startOfDay()->addHours(16))) {//下午16的单
-                    if ($created_at->addDay()->endOfDay()->lt(now())) {//超过第二天的24时
+                $created_at_clone = deep_copy($created_at);
+                if ($created_at->gt($created_at_clone->startOfDay()->addHours(16)->addMinutes(30))) {//下午16的单
+                    $created_at_clone = deep_copy($created_at);
+                    if ($created_at_clone->addDay()->endOfDay()->lt(now())) {//超过第二天的24时
+                        $created_at_clone = deep_copy($created_at);
                         $data['exception_status'] = '延迟发货';
                         $data['is_delay_deliver'] = true;
                     }
                 } else {
-                    if ($created_at->endOfDay()->lt(now())) {//超过当天的24时
+                    if ($created_at_clone->endOfDay()->lt(now())) {//超过当天的24时
                         $data['exception_status'] = '延迟发货';
                         $data['is_delay_deliver'] = true;
                     }
@@ -63,7 +68,6 @@ trait LogisticSyncTrait
                     }
                 }
             } else {//有路由信息
-
                 usort($transfer_status, function ($a, $b) {
                     if ($a['accept_time'] === $b['accept_time']) {
                         return 0;
@@ -72,6 +76,7 @@ trait LogisticSyncTrait
                 });
 
                 $last_transfer = $transfer_status[0]['accept_time'];
+                $last_remark = $transfer_status[0]['remark'];
                 if (count($transfer_status) <= 3) {//三条以内的不管地区 时间限制为24h
                     if (Carbon::parse($last_transfer)->diffInHours(now()) > 24) {
                         $data['exception_status'] = '在途异常';
@@ -121,6 +126,11 @@ trait LogisticSyncTrait
                         $data['exception_status'] = '在途异常';
                     }
                 }
+                if (Str::contains($last_remark,['代收','快递柜'])) {
+                    $data['exception_status'] = '';
+                    $data['status'] = '已签收';
+
+                }
             }
         }
         return $data;

+ 42 - 0
database/migrations/2021_09_11_142547_add_index_to_order_packages_table.php

@@ -0,0 +1,42 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddIndexToOrderPackagesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->dropIndex('order_packages_express_index');
+        });
+
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->index(['sent_at', 'order_id', 'status', 'exception_status', 'received_at', 'sync_routes_flag'], 'order_packages_express_index');
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->dropIndex('order_packages_express_index');
+
+        });
+
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->index(['sent_at', 'order_id', 'status', 'received_at', 'sync_routes_flag'], 'order_packages_express_index');
+        });
+    }
+}