Bläddra i källkod

问题件可以创建问题件所有的类型

loustwo 3 år sedan
förälder
incheckning
5c6f1b2de0

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

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Events\AddOrUpdateOrderIssues;
 use App\Filters\OrderIssueFilters;
 use App\Imports\OrderIssueImport;
+use App\Jobs\SyncOrderIssueOrWorkOrderBySWMS;
 use App\Jobs\SyncRejectedBillRejectingStatusJob;
 use App\Logistic;
 use App\OracleDOCOrderHeader;
@@ -114,6 +115,7 @@ class OrderIssueController extends Controller
             ]);
         }
         SyncRejectedBillRejectingStatusJob::dispatch($orderIssue->order);
+        SyncOrderIssueOrWorkOrderBySWMS::dispatch($orderIssue,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
         OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => $request['content'], 'type' => '创建']);
         return redirect('order/issue/index');
     }

+ 4 - 0
app/Imports/OrderIssueImport.php

@@ -3,6 +3,7 @@
 namespace App\Imports;
 
 use App\Events\AddOrUpdateOrderIssues;
+use App\Jobs\SyncOrderIssueOrWorkOrderBySWMS;
 use App\Jobs\SyncRejectedBillRejectingStatusJob;
 use App\OracleActAllocationDetails;
 use App\OracleDOCOrderHeader;
@@ -110,8 +111,11 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
                 $orderIssue = OrderIssue::query()->create($arr);
                 event(new AddOrUpdateOrderIssues([$orderIssue->order_id]));
                 SyncRejectedBillRejectingStatusJob::dispatch($orderIssue->order);
+
                 if ($orderIssue) {
                     array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建成功!']);
+                    SyncOrderIssueOrWorkOrderBySWMS::dispatch($orderIssue,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
+
                     OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);
                 } else {
                     array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建失败']);

+ 56 - 0
app/Jobs/SyncOrderIssueOrWorkOrderBySWMS.php

@@ -0,0 +1,56 @@
+<?php
+
+namespace App\Jobs;
+
+use App\OrderIssue;
+use App\Services\SyncSWMSOrderIssueAndWorkOrderService;
+use App\WorkOrder;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+
+class SyncOrderIssueOrWorkOrderBySWMS implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public static $ORDER_ISSUE_TYPE = 1;
+    public static $WORK_ORDER_TYPE = 2;
+    /** @var OrderIssue */
+    private $orderIssue;
+    /** @var WorkOrder */
+    private $workOrder;
+    private $type;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct($params,$type)
+    {
+        $this->type = $type;
+        if($type == $this::$ORDER_ISSUE_TYPE){
+            $this->orderIssue = $params;
+        } else if($type == $this::$WORK_ORDER_TYPE){
+            $this->workOrder = $params;
+        }
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        /** @var SyncSWMSOrderIssueAndWorkOrderService  $service */
+        $service = app(SyncSWMSOrderIssueAndWorkOrderService::class);
+        if($this->type ==  $this::$ORDER_ISSUE_TYPE){
+            $service->sendOrderIssue($this->orderIssue);
+        } else if($this->type ==  $this::$WORK_ORDER_TYPE){
+            $service->sendWorkOrder($this->workOrder);
+        }
+    }
+}

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -106,6 +106,7 @@ use App\Services\StoreCheckingReceiveService;
 use App\Services\StoreItemService;
 use App\Services\StoreService;
 use App\Services\CheckActiveMenuService;
+use App\Services\SyncSWMSOrderIssueAndWorkOrderService;
 use App\Services\UnitService;
 use App\Services\UserOwnerGroupService;
 use App\Services\UserService;
@@ -430,6 +431,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('WorkOrderService',WorkOrderService::class);
         app()->singleton('WorkOrderTypeService',WorkOrderTypeService::class);
         app()->singleton('LaborCompanyDispatchDetailService',LaborCompanyDispatchDetailService::class);
+        app()->singleton('SyncSWMSOrderIssueAndWorkOrderService',SyncSWMSOrderIssueAndWorkOrderService::class);
     }
 
     private function registerObserver()

+ 0 - 1
app/Services/OrderIssueProcessLogService.php

@@ -2,7 +2,6 @@
 
 namespace App\Services;
 
-use App\OrderIssue;
 use App\OrderIssueProcessLog;
 use Illuminate\Support\Facades\Auth;
 use App\Traits\ServiceAppAop;

+ 6 - 0
app/Services/OrderIssueService.php

@@ -3,6 +3,7 @@
 namespace App\Services;
 
 use App\Events\AddOrUpdateOrderIssues;
+use App\Jobs\SyncOrderIssueOrWorkOrderBySWMS;
 use App\Jobs\SyncRejectedBillRejectingStatusJob;
 use App\OracleActAllocationDetails;
 use App\OracleDOCASNHeader;
@@ -92,6 +93,7 @@ class OrderIssueService
         event(new AddOrUpdateOrderIssues(data_get($ordersIssues, '*.order_id')));
         $ordersIssues->each(function ($item){
             SyncRejectedBillRejectingStatusJob::dispatch($item->order);
+            SyncOrderIssueOrWorkOrderBySWMS::dispatch($item,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
         });
 //        $this->同步退单状态($ordersIssues);
         $param = [
@@ -132,6 +134,7 @@ class OrderIssueService
             event(new AddOrUpdateOrderIssues(data_get($ordersIssues, '*.order_id')));
             $ordersIssues->each(function ($item){
                 SyncRejectedBillRejectingStatusJob::dispatch($item->order);
+                SyncOrderIssueOrWorkOrderBySWMS::dispatch($item,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
             });
 //            $this->同步退单状态($ordersIssues);
             $param = [
@@ -183,6 +186,7 @@ class OrderIssueService
             $orderIssue->order = $order;
             event(new AddOrUpdateOrderIssues([$orderIssue['order_id']]));
             SyncRejectedBillRejectingStatusJob::dispatch($order);
+            SyncOrderIssueOrWorkOrderBySWMS::dispatch($orderIssue,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
 
             $this->logService->log(__METHOD__, __FUNCTION__, '创建问题件' . json_encode($orderIssue));
         } catch (\Exception $e) {
@@ -233,6 +237,7 @@ class OrderIssueService
             $orderIssue->order_id = $order['id'];
             $orderIssue->save();
             SyncRejectedBillRejectingStatusJob::dispatch($order);
+            SyncOrderIssueOrWorkOrderBySWMS::dispatch($orderIssue,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
             $this->logService->log(__METHOD__, __FUNCTION__, '创建 Order' . json_encode($order));
         }
         return $orderIssue;
@@ -249,6 +254,7 @@ class OrderIssueService
         OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $arr['logistic_number_return']]);
         $orderIssue->update(['order_id' => $order['id']]);
         SyncRejectedBillRejectingStatusJob::dispatch($order);
+        SyncOrderIssueOrWorkOrderBySWMS::dispatch($orderIssue,SyncOrderIssueOrWorkOrderBySWMS::$ORDER_ISSUE_TYPE);
         event(new AddOrUpdateOrderIssues([$orderIssue['order_id']]));
         return $orderIssue;
     }

+ 60 - 0
app/Services/SyncSWMSOrderIssueAndWorkOrderService.php

@@ -0,0 +1,60 @@
+<?php
+
+
+namespace App\Services;
+
+use App\OrderIssue;
+use App\OrderPackage;
+use App\WorkOrder;
+use Illuminate\Support\Facades\Http;
+
+class SyncSWMSOrderIssueAndWorkOrderService
+{
+    private function getLogisticNumber($orderId)
+    {
+        return OrderPackage::query()->where("order_id", $orderId)->get()->map(function ($item) {
+            return $item->logistic_number;
+        });
+    }
+
+    public function sendOrderIssue(OrderIssue $orderIssue)
+    {
+        $url = config('api.java.base') . config('api.java.reject.syncOrderIssue');
+        $logisticNumbers = $this->getLogisticNumber($orderIssue->order_id);
+        if(sizeof($logisticNumbers) == 0){
+            return;
+        }
+        $request = [
+            $logisticNumbers
+        ];
+        $this->sendMessage($request, $url, "问题件通知SWMS");
+    }
+
+
+    public function sendWorkOrder(WorkOrder $workOrder)
+    {
+        $url = config('api.java.base') . config('api.java.reject.syncWorkOrder');
+        $logisticNumbers = $this->getLogisticNumber($workOrder->order_id);
+        if(sizeof($logisticNumbers) == 0){
+            return;
+        }
+        $request = [
+            $logisticNumbers
+        ];
+        $this->sendMessage($request, $url, "工创建通知SWMS");
+    }
+
+    public function sendMessage($requestBody, $url, $type)
+    {
+        app('LogService')->log("二次分拣计件", "通知服务端", json_encode($requestBody));
+        $http = Http::post($url, $requestBody);
+        if (!$http->successful()) {
+            app('LogService')->log($type, "sendPiece", '发送失败:' . $http->body());
+            return;
+        }
+        $result = $http->json();
+        if ($result["code"] != 200) {
+            app('LogService')->log($type, "sendPiece", '服务端错误:' . $http->body());
+        }
+    }
+}

+ 5 - 1
app/Services/WorkOrderService.php

@@ -2,6 +2,7 @@
 
 namespace App\Services;
 
+use App\Jobs\SyncOrderIssueOrWorkOrderBySWMS;
 use App\Jobs\SyncRejectedBillRejectingStatusJob;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
@@ -64,9 +65,10 @@ class WorkOrderService
                 'last_handler_id' => Auth::id() ?? '',
                 'created_at' => now(),
             ]);
+            SyncOrderIssueOrWorkOrderBySWMS::dispatch($workOrder,SyncOrderIssueOrWorkOrderBySWMS::$WORK_ORDER_TYPE);
             return $workOrder;
         }
-        return WorkOrder::query()->create([
+        $workOrder  = WorkOrder::query()->create([
             'order_id' => $order->id,
             'logistic_id' => $order->logistic_id ?? '',
             'owner_id' => $order->owner_id ?? '',
@@ -80,6 +82,8 @@ class WorkOrderService
             'type' => $process_progress,
             'last_handler_id' => Auth::id() ?? '',
         ]);
+        SyncOrderIssueOrWorkOrderBySWMS::dispatch($workOrder,SyncOrderIssueOrWorkOrderBySWMS::$WORK_ORDER_TYPE);
+        return $workOrder;
     }
 
     public function createAndNotification($order, $orderIssueType, $remark, $process_progress = '商家创建'): WorkOrder

+ 4 - 0
config/api.php

@@ -110,6 +110,10 @@ return [
             "log" => [
                 "record" => "api/piece/user/record/create",
             ]
+        ],
+        "reject" => [
+            "syncOrderIssue" => "api/order/packageManage/modifyOrderIssues",
+            "syncWorkOrder" => "api/order/packageManage/modifyWorkOrders",
         ]
     ]
 ];