DwyService.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace App\Service;
  3. /**
  4. * dwy相关
  5. * @package App\Models
  6. */
  7. class DwyService extends Service
  8. {
  9. private $url = 'https://tm.dwycloud.com';
  10. protected $num = 0;
  11. protected static $instance;
  12. public static function getInstance(): self
  13. {
  14. if (self::$instance == null) {
  15. self::$instance = new DwyService();
  16. }
  17. return self::$instance;
  18. }
  19. public function setBoxData($token,$dv,$data,$box_list){
  20. //
  21. $this->num = 0;
  22. // $token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NjYxNTc5MjMwMDUzNzAzNjgiLCJhdXRoIjoiUk9MRV9CUkFORF9TVVBQTElFUixST0xFX1VTRV9CUkFORF9TVVBQTElFUixST0xFX0lOTkVSX1VTRVIsUk9MRV9JTlRFUkZBQ0UsUk9MRV9TRU5EX0JSQU5EX1NVUFBMSUVSIiwidG9rZW5JZCI6IjQiLCJleHAiOjE3MTk2NzI1OTN9.VKDLhTILWHe6MIAlzNvxCk4pBQaV-Et1UFYb12xTxl-QcVWpYaWLZnk6_QJ2bDXMplp75DuIKADmjuHDjDFSWQ';
  23. // $dv = 'DV00001';
  24. // $box_list = [
  25. // 'CK00007',
  26. // 'CK00004',
  27. // ];
  28. //
  29. // $data = [
  30. // 'CK00007'=>[
  31. // 'fake_qty' => '6',
  32. // 'detail' => ['K45SGTLA5HMM7YL1SPMM','R0FWCC4OG0BJFGY5D6BW','7I1V5NXUB8HO68TQT6F3','8EDJPMJQ3K0RCQ0DW45R'],
  33. // ],
  34. // 'CK00004'=>[
  35. // 'fake_qty' => '7',
  36. // 'detail' => ['WO17UD8SJ5CMF8X4RCNF','IKUOBRFEDM2QI2KQ15TI','GB0C22CDHO4WMWCVO5GL','OHYL6X2RYCBQ2M6FYTDI','8IVEAK4UXO6HY9YN4MTI','B9MCUXN8CB25750R1U41'],
  37. // ]
  38. // ];
  39. //请求获取仓位卷码信息
  40. $box_roll_list = $this->getBoxData($dv,$token,$box_list);
  41. $new_data = [];
  42. foreach ($data as $k=>$box_detail){
  43. foreach ($box_detail['detail'] as $v){
  44. foreach ($box_roll_list as $roll_number=>$roll_detail){
  45. if(in_array($v,$roll_detail['detail'])){
  46. if(!isset($new_data[$roll_detail['box_code']])) $new_data[$roll_detail['box_code']] = [
  47. 'detail' => [],
  48. 'fake_qty' => $data[$roll_detail['box_code']]['fake_qty'],
  49. 'material_code' => $roll_detail['material_code'],
  50. 'roll_number' => $roll_number
  51. ];
  52. $new_data[$roll_detail['box_code']]['detail'][] = $v;
  53. break;
  54. }
  55. }
  56. }
  57. }
  58. // var_dump($new_data);die;
  59. //补全数据
  60. $data = $this->setBoxFake($new_data);
  61. return $data;
  62. }
  63. private function setBoxFake($data){
  64. foreach ($data as $k=>$v){
  65. if($v['fake_qty'] > count($v['detail'])){
  66. $diff = $v['fake_qty'] - count($v['detail']);
  67. var_dump($diff);
  68. $return = $this->fakeData($v['roll_number'],$diff);
  69. $data[$k]['detail'] = array_merge($v['detail'],$return);
  70. }
  71. }
  72. return $data;
  73. }
  74. private function fakeData($number,$diff){
  75. $return = [];
  76. for ($i=0;$i < $diff;$i++){
  77. $this->num++;
  78. $return[] = 'f'.$number.'a'.$this->num.rand(10,99);
  79. }
  80. return $return;
  81. }
  82. private function getBoxData($dv,$token,$box_list){
  83. //为了取商标卷码
  84. $res = $this->post_helper($this->url.'/jbl/api/module-data/device/device/diy/device_code',['device_code'=>$dv],$token);
  85. $res = json_decode($res,true);
  86. $detail = [];
  87. $qr_codes = [];
  88. if(isset($res['data'])){
  89. foreach ($res['data'] as $v){
  90. if(in_array($v['box_code'],$box_list)){
  91. $detail[$v['roll_qr_code']] = $v['box_code'];
  92. $qr_codes[] = $v['roll_qr_code'];
  93. }
  94. }
  95. }else{
  96. return [false,''];
  97. }
  98. //为了取仓对应卷码进行获取
  99. $res = $this->post_helper($this->url.'/jbl/api/module-data/brand_sale_order/brand_sale_order/diy/find_roll_qr_code_list',['roll_qr_code_list'=>$qr_codes],$token);
  100. $res = json_decode($res,true);
  101. $qr_roll_list = [];
  102. if(isset($res['data'])){
  103. foreach ($res['data'] as $v){
  104. if(!isset($qr_roll_list[$v['roll_qr_code']]['material_code'])) {
  105. $qr_roll_list[$v['roll_qr_code']]['material_code'] = $v['material_code'];
  106. $qr_roll_list[$v['roll_qr_code']]['box_code'] = $detail[$v['roll_qr_code']];
  107. }
  108. $qr_roll_list[$v['roll_qr_code']]['detail'][] = $v['brand_qr_code'];
  109. }
  110. }
  111. return $qr_roll_list;
  112. }
  113. public function post_helper($url, $data, $auth)
  114. {
  115. $header = [
  116. 'Content-Type: application/json',
  117. 'Authorization: ' . $auth,
  118. ];
  119. $data = json_encode($data);
  120. // var_dump($url);die;
  121. $ch = curl_init();
  122. curl_setopt($ch, CURLOPT_POST, 1);
  123. curl_setopt($ch, CURLOPT_URL, $url);
  124. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  125. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  126. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  127. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  128. if (!is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  129. $r = curl_exec($ch);
  130. curl_close($ch);
  131. return $r;
  132. }
  133. }