DoorDeviceJob.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. <?php
  2. namespace App\Jobs;
  3. use App\Service\ClearDataService;
  4. use App\Service\InOutOptionService;
  5. use Illuminate\Bus\Queueable;
  6. use Illuminate\Contracts\Queue\ShouldQueue;
  7. use Illuminate\Foundation\Bus\Dispatchable;
  8. use Illuminate\Queue\InteractsWithQueue;
  9. use Illuminate\Queue\SerializesModels;
  10. use Illuminate\Support\Facades\Redis;
  11. use Symfony\Component\Console\Output\ConsoleOutput;
  12. use Symfony\Component\Console\Output\OutputInterface;
  13. class DoorDeviceJob implements ShouldQueue
  14. {
  15. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  16. protected $data;
  17. protected $type;
  18. protected $site;
  19. protected $device_id;
  20. /**
  21. * Create a new job instance
  22. *
  23. * @return void
  24. */
  25. public function __construct($data,$type,$site,$device_id)
  26. {
  27. $this->data = $data;
  28. $this->type = $type;
  29. $this->site = $site ?? '91451322MA5P9JNKXA';
  30. $this->device_id = $device_id;
  31. }
  32. /**
  33. * Execute the job.
  34. *
  35. * @return void
  36. */
  37. public function handle()
  38. {
  39. try{
  40. $epc = $this->data;
  41. $type = $this->type;//1 入库 2 出库
  42. $order_number = [];
  43. foreach ($epc as $value){
  44. $str = @hex2bin($value);
  45. $str = ltrim($str, "\x00");// 代0字符串
  46. $str = str_replace(chr(26), '', $str); //过滤CRTL-Z字符
  47. if(! empty($str) && substr($str, 0, 2) === "BZ"){
  48. if(! in_array($str, $order_number)) $order_number[] = $str; // 十六进制字符串转回原来字符串
  49. }
  50. }
  51. file_put_contents('record_door_data.txt',date("Y-m-d H:i:s",time())."原数据:".json_encode($epc) . "解析后:" . json_encode($order_number) .PHP_EOL.'start'.PHP_EOL,8);
  52. if(empty($order_number)) return;
  53. $this->zs($type,$order_number);
  54. //输出信息 测试
  55. $this->echoMessage(new ConsoleOutput());
  56. }catch (\Exception $exception){
  57. file_put_contents('record_door_error.txt',date("Y-m-d H:i:s",time()).json_encode($this->data) . PHP_EOL.$exception->getMessage()."line" . $exception->getLine().PHP_EOL,8);
  58. }
  59. }
  60. //测试--------------------------------------
  61. public function getDeviceStateCs($data){
  62. if(empty($data)) return [];
  63. list($status,$token) = ClearDataService::getTokenCs();
  64. if(! $status) return [];
  65. $site = $this->site;
  66. $url = "http://121.36.142.167:7774/jbl/api/module-data/device/device/diy/machine_code_list";
  67. $post = [
  68. 'machine_code_list' => $data,
  69. ];
  70. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  71. $json = str_replace('"workflowSearchBean":[]','"workflowSearchBean":{}',json_encode($post));
  72. $curl = curl_init();
  73. curl_setopt_array($curl, array(
  74. CURLOPT_URL => $url,
  75. CURLOPT_RETURNTRANSFER => true,
  76. CURLOPT_ENCODING => '',
  77. CURLOPT_MAXREDIRS => 10,
  78. CURLOPT_TIMEOUT => 0,
  79. CURLOPT_FOLLOWLOCATION => true,
  80. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  81. CURLOPT_CUSTOMREQUEST => 'POST',
  82. CURLOPT_POSTFIELDS => $json,
  83. CURLOPT_HTTPHEADER => $header,
  84. ));
  85. $response = curl_exec($curl);
  86. curl_close($curl);
  87. file_put_contents('record_door_result_cs.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'getDoorState'.PHP_EOL,8);
  88. $result = json_decode($response,true);
  89. if(empty($result)) return false;
  90. $first = $result[0];
  91. return $first['status'];
  92. }
  93. public function productionReceiptCs($data){
  94. list($status,$token) = ClearDataService::getTokenCs();
  95. if(! $status) return;
  96. $site = $this->site;
  97. $url = "http://121.36.142.167:7774/jbl/api/module-data/box_orders/box_orders/diy/production_receipt";
  98. $post = [
  99. 'defective_order_no_list' => $data,
  100. ];
  101. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  102. $json = str_replace('"workflowSearchBean":[]','"workflowSearchBean":{}',json_encode($post));
  103. $curl = curl_init();
  104. curl_setopt_array($curl, array(
  105. CURLOPT_URL => $url,
  106. CURLOPT_RETURNTRANSFER => true,
  107. CURLOPT_ENCODING => '',
  108. CURLOPT_MAXREDIRS => 10,
  109. CURLOPT_TIMEOUT => 0,
  110. CURLOPT_FOLLOWLOCATION => true,
  111. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  112. CURLOPT_CUSTOMREQUEST => 'POST',
  113. CURLOPT_POSTFIELDS => $json,
  114. CURLOPT_HTTPHEADER => $header,
  115. ));
  116. $response = curl_exec($curl);
  117. curl_close($curl);
  118. file_put_contents('record_door_result_cs.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'in_opt'.PHP_EOL,8);
  119. $return = json_decode($response,true);
  120. if(! empty($return['data'])){
  121. $expire_time = 10;
  122. $key = $this->device_id . InOutOptionService::OrderKeyQueueIn;
  123. Redis::set($key, json_encode($return['data']));
  124. Redis::expire($key, $expire_time);
  125. }
  126. }
  127. public function getDispatchListCs($data){
  128. if(empty($data)) return [];
  129. list($status,$token) = ClearDataService::getTokenCs();
  130. if(! $status) return [];
  131. $site = $this->site;
  132. $url = "http://121.36.142.167:7774/jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list";
  133. $post = [
  134. 'defective_order_no_list' => $data,
  135. ];
  136. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  137. $json = str_replace('"workflowSearchBean":[]','"workflowSearchBean":{}',json_encode($post));
  138. $curl = curl_init();
  139. curl_setopt_array($curl, array(
  140. CURLOPT_URL => $url,
  141. CURLOPT_RETURNTRANSFER => true,
  142. CURLOPT_ENCODING => '',
  143. CURLOPT_MAXREDIRS => 10,
  144. CURLOPT_TIMEOUT => 0,
  145. CURLOPT_FOLLOWLOCATION => true,
  146. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  147. CURLOPT_CUSTOMREQUEST => 'POST',
  148. CURLOPT_POSTFIELDS => $json,
  149. CURLOPT_HTTPHEADER => $header,
  150. ));
  151. $response = curl_exec($curl);
  152. curl_close($curl);
  153. file_put_contents('record_door_result_cs.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'getlist'.PHP_EOL,8);
  154. return json_decode($response,true);
  155. }
  156. public function completionOrdersCs($data,$type){
  157. list($status,$token) = ClearDataService::getTokenCs();
  158. if(! $status) return;
  159. $site = $this->site;
  160. $device_id = $this->device_id;
  161. //组织数据
  162. $main_dtl = $orderNo = [];
  163. if($type == 1){
  164. $opt = InOutOptionService::OrderKeyQueueIn;
  165. $url = 'http://121.36.142.167:7774/jbl/api/module-data/production_receipt/production_receipt';
  166. $dynamicFormId = "473758926009479168";
  167. $showModelId = "473761325902147584";
  168. foreach ($data as $value){
  169. if(empty($value['box_orders']['delivery_status'])){
  170. $main_dtl[] = [
  171. "product_code"=> $value['brand_code'],
  172. "product_title"=> $value['product_title'],
  173. "product_size"=> $value['product_size'],
  174. "color"=> $value['color'],
  175. "color_two"=> $value['color_two'],
  176. "product_unit_title"=> $value['product_unit_title'],
  177. "product_unit"=> $value['product_unit'],
  178. "color_code"=> $value['color_code'],
  179. "color_code_two"=> $value['color_code_two'],
  180. "in_num"=> $value['box_num'],
  181. ];
  182. if(! in_array($value['box_orders']['defective_order_no'], $orderNo)) $orderNo[] = $value['box_orders']['defective_order_no'];
  183. }
  184. }
  185. $datas = [
  186. 'production_receipt' => [
  187. 'production_receipt_no' => null,
  188. 'in_out_type' => 'RK007',
  189. 'box_title' => 'WH05001',
  190. 'in_time' => gmdate("Y-m-d\TH:i:s.000\Z"),
  191. 'status' => "NOT_APPROVED",
  192. ],
  193. 'production_receipt_dtl' => $main_dtl
  194. ];
  195. }else{
  196. $opt = InOutOptionService::OrderKeyQueueOut;
  197. $url = 'http://121.36.142.167:7774/jbl/api/module-data/picking_out/picking_out';
  198. $dynamicFormId = "473763313217908736";
  199. $showModelId = "473771977253269504";
  200. foreach ($data as $value){
  201. if(empty($value['box_orders']['delivery_status'])){
  202. $main_dtl[] = [
  203. "product_code"=> $value['brand_code'],
  204. "product_title"=> $value['product_title'],
  205. "product_size"=> $value['product_size'],
  206. "color"=> $value['color'],
  207. "color_two"=> $value['color_two'],
  208. "product_unit_title"=> $value['product_unit_title'],
  209. "product_unit"=> $value['product_unit'],
  210. "color_code"=> $value['color_code'],
  211. "color_code_two"=> $value['color_code_two'],
  212. "in_num"=> $value['box_num'],
  213. ];
  214. if(! in_array($value['box_orders']['defective_order_no'], $orderNo)) $orderNo[] = $value['box_orders']['defective_order_no'];
  215. }
  216. }
  217. $datas = [
  218. 'picking_out' => [
  219. 'picking_out_no' => null,
  220. 'in_out_type' => 'CK010',
  221. 'box_title' => 'WH05001',
  222. 'out_time' => gmdate("Y-m-d\TH:i:s.000\Z"),
  223. 'status' => "NOT_APPROVED",
  224. ],
  225. 'picking_out_product' => $main_dtl
  226. ];
  227. }
  228. if(! empty($main_dtl)){
  229. //有产品
  230. $post = [
  231. "bizTypeEk" => "LOWCODE",
  232. "bizId" => -1,
  233. "data" => $datas,
  234. "dynamicFormId" => $dynamicFormId,
  235. "showModelId" => $showModelId
  236. ];
  237. }
  238. //组织数据------
  239. file_put_contents('record_door_result_cs.txt',date('Y-m-d H:i:s'). PHP_EOL . json_encode($post) .PHP_EOL.'post'.PHP_EOL,8);
  240. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  241. $curl = curl_init();
  242. curl_setopt_array($curl, array(
  243. CURLOPT_URL => $url,
  244. CURLOPT_RETURNTRANSFER => true,
  245. CURLOPT_ENCODING => '',
  246. CURLOPT_MAXREDIRS => 10,
  247. CURLOPT_TIMEOUT => 0,
  248. CURLOPT_FOLLOWLOCATION => true,
  249. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  250. CURLOPT_CUSTOMREQUEST => 'POST',
  251. CURLOPT_POSTFIELDS => json_encode($post),
  252. CURLOPT_HTTPHEADER => $header,
  253. ));
  254. $response = curl_exec($curl);
  255. curl_close($curl);
  256. $result = json_decode($response,true);
  257. if(! empty($result['createdDate'])) {
  258. $expire_time = 10;
  259. $key = $device_id . $opt;
  260. Redis::set($key, json_encode($orderNo));
  261. Redis::expire($key, $expire_time);
  262. }
  263. file_put_contents('record_door_result_cs.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'create'.PHP_EOL,8);
  264. }
  265. public function cs($type,$order_number){
  266. //获取是否开启通道门
  267. $bool = $this->getDeviceStateCs([$this->device_id]);
  268. if(! $bool) {
  269. file_put_contents('record_door_result.txt',date("Y-m-d H:i:s",time()).'door_not_open'.PHP_EOL,8);
  270. return;
  271. }
  272. if($type == 1){
  273. //入库
  274. $this->productionReceiptCs($order_number);
  275. }else{
  276. //出库
  277. //获取包装单产品
  278. $dispatchList = $this->getDispatchListCs($order_number);
  279. if(empty($dispatchList) || empty($dispatchList['data'])) {
  280. file_put_contents('record_door_result.txt',date("Y-m-d H:i:s",time()).'getlist_end'.PHP_EOL,8);
  281. return;
  282. }
  283. $this->completionOrdersCs($dispatchList['data'],$type);
  284. }
  285. }
  286. //测试--------------------------------------
  287. //正式--------------------------------------
  288. public function getDeviceState($data){
  289. if(empty($data)) return [];
  290. list($status,$token) = ClearDataService::getToken();
  291. if(! $status) return [];
  292. $site = $this->site;
  293. $url = "http://122.112.250.253:7774/jbl/api/module-data/device/device/diy/machine_code_list";
  294. $post = [
  295. 'machine_code_list' => $data,
  296. ];
  297. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  298. $json = str_replace('"workflowSearchBean":[]','"workflowSearchBean":{}',json_encode($post));
  299. $curl = curl_init();
  300. curl_setopt_array($curl, array(
  301. CURLOPT_URL => $url,
  302. CURLOPT_RETURNTRANSFER => true,
  303. CURLOPT_ENCODING => '',
  304. CURLOPT_MAXREDIRS => 10,
  305. CURLOPT_TIMEOUT => 0,
  306. CURLOPT_FOLLOWLOCATION => true,
  307. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  308. CURLOPT_CUSTOMREQUEST => 'POST',
  309. CURLOPT_POSTFIELDS => $json,
  310. CURLOPT_HTTPHEADER => $header,
  311. ));
  312. $response = curl_exec($curl);
  313. curl_close($curl);
  314. file_put_contents('record_door_result.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'getDoorState'.PHP_EOL,8);
  315. $result = json_decode($response,true);
  316. if(empty($result)) return false;
  317. $first = $result[0];
  318. return $first['status'];
  319. }
  320. public function productionReceipt($data){
  321. list($status,$token) = ClearDataService::getToken();
  322. if(! $status) return;
  323. $site = $this->site;
  324. $url = "http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/production_receipt";
  325. $post = [
  326. 'defective_order_no_list' => $data,
  327. ];
  328. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  329. $json = str_replace('"workflowSearchBean":[]','"workflowSearchBean":{}',json_encode($post));
  330. $curl = curl_init();
  331. curl_setopt_array($curl, array(
  332. CURLOPT_URL => $url,
  333. CURLOPT_RETURNTRANSFER => true,
  334. CURLOPT_ENCODING => '',
  335. CURLOPT_MAXREDIRS => 10,
  336. CURLOPT_TIMEOUT => 0,
  337. CURLOPT_FOLLOWLOCATION => true,
  338. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  339. CURLOPT_CUSTOMREQUEST => 'POST',
  340. CURLOPT_POSTFIELDS => $json,
  341. CURLOPT_HTTPHEADER => $header,
  342. ));
  343. $response = curl_exec($curl);
  344. curl_close($curl);
  345. file_put_contents('record_door_result.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'in_opt'.PHP_EOL,8);
  346. $return = json_decode($response,true);
  347. if(! empty($return['data'])){
  348. $expire_time = 10;
  349. $key = $this->device_id . InOutOptionService::OrderKeyQueueIn;
  350. Redis::set($key, json_encode($return['data']));
  351. Redis::expire($key, $expire_time);
  352. }
  353. }
  354. public function getDispatchList($data){
  355. if(empty($data)) return [];
  356. list($status,$token) = ClearDataService::getToken();
  357. if(! $status) return [];
  358. $site = $this->site;
  359. $url = "http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list";
  360. $post = [
  361. 'defective_order_no_list' => $data,
  362. ];
  363. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  364. $json = str_replace('"workflowSearchBean":[]','"workflowSearchBean":{}',json_encode($post));
  365. $curl = curl_init();
  366. curl_setopt_array($curl, array(
  367. CURLOPT_URL => $url,
  368. CURLOPT_RETURNTRANSFER => true,
  369. CURLOPT_ENCODING => '',
  370. CURLOPT_MAXREDIRS => 10,
  371. CURLOPT_TIMEOUT => 0,
  372. CURLOPT_FOLLOWLOCATION => true,
  373. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  374. CURLOPT_CUSTOMREQUEST => 'POST',
  375. CURLOPT_POSTFIELDS => $json,
  376. CURLOPT_HTTPHEADER => $header,
  377. ));
  378. $response = curl_exec($curl);
  379. curl_close($curl);
  380. file_put_contents('record_door_result.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'getlist'.PHP_EOL,8);
  381. return json_decode($response,true);
  382. }
  383. public function completionOrders($data,$type){
  384. list($status,$token) = ClearDataService::getToken();
  385. if(! $status) return;
  386. $site = $this->site;
  387. $device_id = $this->device_id;
  388. //组织数据
  389. $main_dtl = $orderNo = [];
  390. if($type == 1){
  391. $opt = InOutOptionService::OrderKeyQueueIn;
  392. $url = 'http://122.112.250.253:7774/jbl/api/module-data/production_receipt/production_receipt';
  393. $dynamicFormId = "473758926009479168";
  394. $showModelId = "473761325902147584";
  395. foreach ($data as $value){
  396. if(empty($value['box_orders']['delivery_status'])){
  397. $main_dtl[] = [
  398. "product_code"=> $value['brand_code'],
  399. "product_title"=> $value['product_title'],
  400. "product_size"=> $value['product_size'],
  401. "color"=> $value['color'],
  402. "color_two"=> $value['color_two'],
  403. "product_unit_title"=> $value['product_unit_title'],
  404. "product_unit"=> $value['product_unit'],
  405. "color_code"=> $value['color_code'],
  406. "color_code_two"=> $value['color_code_two'],
  407. "in_num"=> $value['box_num'],
  408. ];
  409. if(! in_array($value['box_orders']['defective_order_no'], $orderNo)) $orderNo[] = $value['box_orders']['defective_order_no'];
  410. }
  411. }
  412. $datas = [
  413. 'production_receipt' => [
  414. 'production_receipt_no' => null,
  415. 'in_out_type' => 'RK007',
  416. 'box_title' => 'WH05001',
  417. 'in_time' => gmdate("Y-m-d\TH:i:s.000\Z"),
  418. 'status' => "NOT_APPROVED",
  419. ],
  420. 'production_receipt_dtl' => $main_dtl
  421. ];
  422. }else{
  423. $opt = InOutOptionService::OrderKeyQueueOut;
  424. $url = 'http://122.112.250.253:7774/jbl/api/module-data/picking_out/picking_out';
  425. $dynamicFormId = "473763313217908736";
  426. $showModelId = "473771977253269504";
  427. foreach ($data as $value){
  428. if(empty($value['box_orders']['delivery_status'])){
  429. $main_dtl[] = [
  430. "product_code"=> $value['brand_code'],
  431. "product_title"=> $value['product_title'],
  432. "product_size"=> $value['product_size'],
  433. "color"=> $value['color'],
  434. "color_two"=> $value['color_two'],
  435. "product_unit_title"=> $value['product_unit_title'],
  436. "product_unit"=> $value['product_unit'],
  437. "color_code"=> $value['color_code'],
  438. "color_code_two"=> $value['color_code_two'],
  439. "in_num"=> $value['box_num'],
  440. ];
  441. if(! in_array($value['box_orders']['defective_order_no'], $orderNo)) $orderNo[] = $value['box_orders']['defective_order_no'];
  442. }
  443. }
  444. $datas = [
  445. 'picking_out' => [
  446. 'picking_out_no' => null,
  447. 'in_out_type' => 'CK010',
  448. 'box_title' => 'WH05001',
  449. 'out_time' => gmdate("Y-m-d\TH:i:s.000\Z"),
  450. 'status' => "NOT_APPROVED",
  451. ],
  452. 'picking_out_product' => $main_dtl
  453. ];
  454. }
  455. if(! empty($main_dtl)){
  456. //有产品
  457. $post = [
  458. "bizTypeEk" => "LOWCODE",
  459. "bizId" => -1,
  460. "data" => $datas,
  461. "dynamicFormId" => $dynamicFormId,
  462. "showModelId" => $showModelId
  463. ];
  464. }else{
  465. file_put_contents('record_door_result.txt',date('Y-m-d H:i:s'). PHP_EOL . "no_products" .PHP_EOL.'post'.PHP_EOL,8);
  466. }
  467. //组织数据------
  468. file_put_contents('record_door_result.txt',date('Y-m-d H:i:s'). PHP_EOL . json_encode($post) .PHP_EOL.'post'.PHP_EOL,8);
  469. $header = ["Authorization: Bearer {$token}","Content-Type:application/json","Site:{$site}"];
  470. $curl = curl_init();
  471. curl_setopt_array($curl, array(
  472. CURLOPT_URL => $url,
  473. CURLOPT_RETURNTRANSFER => true,
  474. CURLOPT_ENCODING => '',
  475. CURLOPT_MAXREDIRS => 10,
  476. CURLOPT_TIMEOUT => 0,
  477. CURLOPT_FOLLOWLOCATION => true,
  478. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  479. CURLOPT_CUSTOMREQUEST => 'POST',
  480. CURLOPT_POSTFIELDS => json_encode($post),
  481. CURLOPT_HTTPHEADER => $header,
  482. ));
  483. $response = curl_exec($curl);
  484. curl_close($curl);
  485. $result = json_decode($response,true);
  486. if(! empty($result['createdDate'])) {
  487. $expire_time = 10;
  488. $key = $device_id . $opt;
  489. Redis::set($key, json_encode($orderNo));
  490. Redis::expire($key, $expire_time);
  491. }
  492. file_put_contents('record_door_result.txt',date('Y-m-d H:i:s'). PHP_EOL . $response .PHP_EOL.'create'.PHP_EOL,8);
  493. }
  494. public function zs($type,$order_number){
  495. //获取是否开启通道门
  496. $bool = $this->getDeviceState([$this->device_id]);
  497. if(! $bool) {
  498. file_put_contents('record_door_result.txt',date("Y-m-d H:i:s",time()).'door_not_open'.PHP_EOL,8);
  499. return;
  500. }
  501. if($type == 1){
  502. //入库
  503. $this->productionReceipt($order_number);
  504. }else{
  505. //出库
  506. //获取包装单产品
  507. $dispatchList = $this->getDispatchList($order_number);
  508. if(empty($dispatchList) || empty($dispatchList['data'])) {
  509. file_put_contents('record_door_result.txt',date("Y-m-d H:i:s",time()).'getlist_end'.PHP_EOL,8);
  510. return;
  511. }
  512. $this->completionOrders($dispatchList['data'],$type);
  513. }
  514. }
  515. //正式--------------------------------------
  516. protected function echoMessage(OutputInterface $output)
  517. {
  518. $output->writeln($this->data);
  519. }
  520. }