| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- <?php
 
- namespace App\Service;
 
- /**
 
-  * dwy相关
 
-  * @package App\Models
 
-  */
 
- class DwyService extends Service
 
- {
 
-     private $url = 'https://tm.dwycloud.com';
 
-     protected $num = 0;
 
-     protected static $instance;
 
-     public static function getInstance(): self
 
-     {
 
-         if (self::$instance == null) {
 
-             self::$instance = new DwyService();
 
-         }
 
-         return self::$instance;
 
-     }
 
-     public function setBoxData($token,$dv,$data,$box_list){
 
-         //
 
-         $this->num = 0;
 
- //        $token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NjYxNTc5MjMwMDUzNzAzNjgiLCJhdXRoIjoiUk9MRV9CUkFORF9TVVBQTElFUixST0xFX1VTRV9CUkFORF9TVVBQTElFUixST0xFX0lOTkVSX1VTRVIsUk9MRV9JTlRFUkZBQ0UsUk9MRV9TRU5EX0JSQU5EX1NVUFBMSUVSIiwidG9rZW5JZCI6IjQiLCJleHAiOjE3MTk2NzI1OTN9.VKDLhTILWHe6MIAlzNvxCk4pBQaV-Et1UFYb12xTxl-QcVWpYaWLZnk6_QJ2bDXMplp75DuIKADmjuHDjDFSWQ';
 
- //        $dv = 'DV00001';
 
- //        $box_list = [
 
- //            'CK00007',
 
- //            'CK00004',
 
- //        ];
 
- //
 
- //        $data = [
 
- //            'CK00007'=>[
 
- //                'fake_qty' => '6',
 
- //                'detail' => ['K45SGTLA5HMM7YL1SPMM','R0FWCC4OG0BJFGY5D6BW','7I1V5NXUB8HO68TQT6F3','8EDJPMJQ3K0RCQ0DW45R'],
 
- //            ],
 
- //            'CK00004'=>[
 
- //                'fake_qty' => '7',
 
- //                'detail' => ['WO17UD8SJ5CMF8X4RCNF','IKUOBRFEDM2QI2KQ15TI','GB0C22CDHO4WMWCVO5GL','OHYL6X2RYCBQ2M6FYTDI','8IVEAK4UXO6HY9YN4MTI','B9MCUXN8CB25750R1U41'],
 
- //            ]
 
- //        ];
 
-         //请求获取仓位卷码信息
 
-         $box_roll_list = $this->getBoxData($dv,$token,$box_list);
 
-         $new_data = [];
 
-         foreach ($data as $k=>$box_detail){
 
-             foreach ($box_detail['detail'] as $v){
 
-                 foreach ($box_roll_list as $roll_number=>$roll_detail){
 
-                     if(in_array($v,$roll_detail['detail'])){
 
-                         if(!isset($new_data[$roll_detail['box_code']])) $new_data[$roll_detail['box_code']] = [
 
-                             'detail' => [],
 
-                             'fake_qty' => $data[$roll_detail['box_code']]['fake_qty'],
 
-                             'material_code' =>  $roll_detail['material_code'],
 
-                             'roll_number' => $roll_number
 
-                         ];
 
-                         $new_data[$roll_detail['box_code']]['detail'][] = $v;
 
-                         break;
 
-                     }
 
-                 }
 
-             }
 
-         }
 
- //        var_dump($new_data);die;
 
-         //补全数据
 
-         $data = $this->setBoxFake($new_data);
 
-         return $data;
 
-     }
 
-     private function setBoxFake($data){
 
-         foreach ($data as $k=>$v){
 
-             if($v['fake_qty'] > count($v['detail'])){
 
-                 $diff = $v['fake_qty'] - count($v['detail']);
 
-                 var_dump($diff);
 
-                 $return = $this->fakeData($v['roll_number'],$diff);
 
-                 $data[$k]['detail'] = array_merge($v['detail'],$return);
 
-             }
 
-         }
 
-         return $data;
 
-     }
 
-     private function fakeData($number,$diff){
 
-         $return = [];
 
-         for ($i=0;$i < $diff;$i++){
 
-             $this->num++;
 
-             $return[] = 'f'.$number.'a'.$this->num.rand(10,99);
 
-         }
 
-         return $return;
 
-     }
 
-     private function getBoxData($dv,$token,$box_list){
 
-         //为了取商标卷码
 
-         $res = $this->post_helper($this->url.'/jbl/api/module-data/device/device/diy/device_code',['device_code'=>$dv],$token);
 
-         $res = json_decode($res,true);
 
-         $detail = [];
 
-         $qr_codes = [];
 
-         if(isset($res['data'])){
 
-             foreach ($res['data'] as $v){
 
-                 if(in_array($v['box_code'],$box_list)){
 
-                     $detail[$v['roll_qr_code']] = $v['box_code'];
 
-                     $qr_codes[] = $v['roll_qr_code'];
 
-                 }
 
-             }
 
-         }else{
 
-             return [false,''];
 
-         }
 
-         //为了取仓对应卷码进行获取
 
-         $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);
 
-         $res = json_decode($res,true);
 
-         $qr_roll_list = [];
 
-         if(isset($res['data'])){
 
-             foreach ($res['data'] as $v){
 
-                 if(!isset($qr_roll_list[$v['roll_qr_code']]['material_code']))  {
 
-                     $qr_roll_list[$v['roll_qr_code']]['material_code'] = $v['material_code'];
 
-                     $qr_roll_list[$v['roll_qr_code']]['box_code'] = $detail[$v['roll_qr_code']];
 
-                 }
 
-                 $qr_roll_list[$v['roll_qr_code']]['detail'][] = $v['brand_qr_code'];
 
-             }
 
-         }
 
-         return $qr_roll_list;
 
-     }
 
-     public function post_helper($url, $data, $auth)
 
-     {
 
-         $header = [
 
-             'Content-Type: application/json',
 
-             'Authorization: ' . $auth,
 
-         ];
 
-         $data = json_encode($data);
 
- //        var_dump($url);die;
 
-         $ch = curl_init();
 
-         curl_setopt($ch, CURLOPT_POST, 1);
 
-         curl_setopt($ch, CURLOPT_URL, $url);
 
-         curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 
-         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
-         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
-         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
 
-         if (!is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 
-         $r = curl_exec($ch);
 
-         curl_close($ch);
 
-         return $r;
 
-     }
 
- }
 
 
  |