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; } }