|
|
@@ -23,6 +23,7 @@ use App\Http\Controllers\api\thirdPart\syrius\units\Signature;
|
|
|
use App\Http\Controllers\api\thirdPart\syrius\units\StorageTypeAttribute;
|
|
|
use App\Http\Requests\AndroidGateRequest;
|
|
|
use App\Http\Requests\OrderDelivering;
|
|
|
+use App\InventoryAccount;
|
|
|
use App\Jobs\BatchTaskJob;
|
|
|
use App\Jobs\BroadcastBatchToZhengCangJob;
|
|
|
use App\Jobs\CacheShelfTaskJob;
|
|
|
@@ -269,94 +270,7 @@ class TestController extends Controller
|
|
|
}
|
|
|
|
|
|
|
|
|
-}
|
|
|
-class Worker{
|
|
|
- //监听socket
|
|
|
- protected $socket = NULL;
|
|
|
-
|
|
|
- //所有的socket连接
|
|
|
- protected $allSockets = array();
|
|
|
-
|
|
|
- //连接事件回调
|
|
|
- public $onConnect = NULL;
|
|
|
-
|
|
|
- //断线事件回调
|
|
|
- public $onClose = NULL;
|
|
|
-
|
|
|
- //接收消息事件回调
|
|
|
- public $onMessage = NULL;
|
|
|
-
|
|
|
- public function __construct($socket_address) {
|
|
|
- //创建一个socket监听
|
|
|
- $this->socket = stream_socket_server($socket_address);
|
|
|
-
|
|
|
- //设置为非阻塞
|
|
|
- stream_set_blocking($this->socket, 0);
|
|
|
-
|
|
|
- //将socket监听加入allSockets
|
|
|
- $this->allSockets[(int)$this->socket] = $this->socket;
|
|
|
- }
|
|
|
-
|
|
|
- public function run() {
|
|
|
- while(true) {
|
|
|
- //不监听可写事件与带外数据事件
|
|
|
- $write = $except = array();
|
|
|
- //监听所有的socket事件
|
|
|
- $read = $this->allSockets;
|
|
|
- //整个进程阻塞在这里,持续监听可读事件
|
|
|
- //此处参数均为引用传递,在函数中会改变传值
|
|
|
- stream_select($read, $write, $except, 60);
|
|
|
-
|
|
|
- //处理所有可读事件
|
|
|
- foreach ($read as $index => $socket) {
|
|
|
- //如果是监听socket,此处表示有新的连接
|
|
|
- if ($socket === $this->socket) {
|
|
|
- //通过stream_socket_accept获取新的连接
|
|
|
- $new_conn_socket = stream_socket_accept($socket);
|
|
|
|
|
|
- if ($this->onConnect) {
|
|
|
- //触发连接事件的回调,并将当前连接传递给回掉函数
|
|
|
- call_user_func($this->onConnect, $socket);
|
|
|
- }
|
|
|
- //记录此socket连接,以便于sream_select监听可读事件
|
|
|
- $this->allSockets[(int)$new_conn_socket] = $new_conn_socket;
|
|
|
- } else
|
|
|
- //如果可读事件不为监听socket,则表示对应客户端有数据发过来
|
|
|
- {
|
|
|
- //从连接中读取数据
|
|
|
- $buffer = fread($socket, 65535);
|
|
|
- //如果数据为空,表示客户端已经断开连接
|
|
|
- if ('' === $buffer || false === $buffer) {
|
|
|
- //尝试触发onClose回调
|
|
|
- if ($this->onClose) {
|
|
|
- call_user_func($this->onClose, $socket);
|
|
|
- }
|
|
|
- fclose($socket);
|
|
|
- //关闭socket连接并从allSockets中删除
|
|
|
- unset($this->allSockets[(int)$socket]);
|
|
|
- continue;
|
|
|
- }
|
|
|
- //表示一个正常的连接,已经读取到消息,交给回掉函数处理
|
|
|
- if ($this->onMessage) {
|
|
|
- call_user_func($this->onMessage, $socket, $buffer);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function asnTest(){
|
|
|
- $service = new StoreItemService();
|
|
|
- $docAsns = OracleDOCASNHeader::query()->whereIn('asnno',['ASN2112080434','ASN2112080435'])->get();
|
|
|
- $storeItems = $service->getAsnDetailsByAsnHerder($docAsns);
|
|
|
- dd($storeItems);
|
|
|
- }
|
|
|
|
|
|
- public function testSyncOrder(){
|
|
|
- $order_no = 'SO211124008523';
|
|
|
- $service = new OracleDOCOrderHeaderService();
|
|
|
- $order_headers = $service->getQuery()->where('OrderNo',$order_no)->get();
|
|
|
- $order_tracking_service = new OrderTrackingService();
|
|
|
- $order_tracking_service->createByWmsOrderHeader($order_headers);
|
|
|
- }
|
|
|
}
|
|
|
+
|