num = 0; // 测试 // $token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1ODg5MzM1OTMwMTE3MjAxOTIiLCJhdXRoIjoiUk9MRV9JTlRFUkZBQ0UsUk9MRV9TRU5EX0JSQU5EX1NVUFBMSUVSLFJPTEVfQlJBTkRfU1VQUExJRVIsUk9MRV9VU0VfQlJBTkRfU1VQUExJRVIsUk9MRV9PVVRFUl9VU0VSLFJPTEVfSU5ORVJfVVNFUiIsInRva2VuSWQiOiIyIiwiZXhwIjoxNzIxMDExNjcwfQ.T8M-h2_EbBLU9xxMUP52c4B_OtzIRLWdLOYru8qE0Zi0k9PfIfYff8TxaQ9Kux8j6_2zJW1asSODjK3slNsNYQ'; // $dv = 'cff4dc68c73115b';/**/ // $box_list = [ // 'CK00009', // 'CK00018', // ]; // // $old_data = json_decode(file_get_contents('38929.txt'),true); // var_dump($old_data);die; // 处理数据 // list ($data,$box_list) = $this->clearData($old_data); // var_dump($data);die; // var_dump($box_list);die; // dd($old_data);die; //请求获取仓位卷码信息 $box_roll_list = $this->getBoxData($dv,$token,$box_list); // var_dump($box_roll_list);die; $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; } } } } //补全数据 if($dv === 'a6a672c3e458bed2'&&false){ $new_data = $this->setBoxFake($new_data); list($lind_bind,$lead_out) = $this->setNewData1($old_data,$new_data); }else{ list($lind_bind,$lead_out) = $this->setNewData($old_data,$new_data); } // //把数据拼回去 // var_dump($data);die; // var_dump($old_data);die; // var_dump($lind_bind); // var_dump($lead_out);die; // die('ddd'); return [$lind_bind,$lead_out]; } public function clearData($data){ $return = []; $box_list = []; if( empty($data['lead_out']) || empty($data['lead_out']['brand_out_stock_list'])) return; foreach ($data['lead_out']['brand_out_stock_list'] as $value){ $tmp = $value['brand_out_stock_dtl'][0] ?? []; $return[$value['send_box_code']] = [ 'fake_qty' => $tmp['fake_qty'], 'detail' => explode(',',$tmp['brand_qr_code_list']) ]; $box_list[] = $value['send_box_code']; } return [$return,$box_list]; } // 获取指定数量的值,并从原数组中删除这些值 function getValues(&$array, $count) { // 获取前$count个值 $result = array_slice($array, 0, $count); // 从原数组中删除这些值 $array = array_slice($array, $count); return $result; } private function setNewData($old_data,$data){ // var_dump($old_data); $code_key_data = []; foreach ($data as $v){ if(!isset($code_key_data[$v['material_code']])) $code_key_data[$v['material_code']] = []; $code_key_data[$v['material_code']] = array_merge($code_key_data[$v['material_code']],$v['detail']); } $lind_bind = $old_data['lead_bind']; $lind_bind_key_list = []; foreach ($lind_bind['material_list'] as &$l){ // unset($l['brand_qr_code_list']); // $l['qty'] = $l['fake_qty']; // $l['brand_qr_code_list'] = $this->getValues( $code_key_data[$l['material_code']],$l['qty']); $lind_bind_key_list[$l['order_item_id']] = [ 'product_code' => $l['product_code'], 'product_code_show' => $l['product_code_show'], 'process_title' => $l['process_title'], 'color' => $l['color'], 'process_title_two' => $l['process_title_two'], 'color_two' => $l['color_two'], ]; unset($l['fake_qty']); } $lead_out = $old_data['lead_out']['brand_out_stock_list']; foreach ($lead_out as &$ll){ foreach ($ll['brand_out_stock_dtl'] as &$lll){ // unset($lll['brand_qr_code_list']); // $lll['qty'] = $ll['brand_out_stock_dtl'][0]['fake_qty']; // $lll['qty'] = $lll['fake_qty']; // unset($lll['fake_qty']); // var_dump($data[$ll['send_box_code']]); // $lll['brand_qr_code_list'] = implode(',',$data[$ll['send_box_code']]['detail']); // $lll['brand_qr_code_list'] = implode(',',$this->getValues( $data[$ll['send_box_code']]['detail'],$lll['qty']));; $lll['product_code'] = $lind_bind_key_list[$lll['bus_no']]['product_code'] ?? ''; $lll['product_code_show'] = $lind_bind_key_list[$lll['bus_no']]['product_code_show'] ?? ''; $lll['process_title'] = $lind_bind_key_list[$lll['bus_no']]['process_title'] ?? ''; $lll['color'] = $lind_bind_key_list[$lll['bus_no']]['color'] ?? ''; $lll['process_title_two'] = $lind_bind_key_list[$lll['bus_no']]['process_title_two'] ?? ''; $lll['color_two'] = $lind_bind_key_list[$lll['bus_no']]['color_two'] ?? ''; } } file_put_contents('1.txt',json_encode(['lind_bind'=>$lind_bind,'lead_out'=>['brand_out_stock_list'=>$lead_out]])); // var_dump($lind_bind); // var_dump($lead_out);die; return [$lind_bind,['brand_out_stock_list'=>$lead_out]]; } private function setNewData1($old_data,$data){ // var_dump($old_data); $code_key_data = []; foreach ($data as $v){ if(!isset($code_key_data[$v['material_code']])) $code_key_data[$v['material_code']] = []; $code_key_data[$v['material_code']] = array_merge($code_key_data[$v['material_code']],$v['detail']); } $lind_bind = $old_data['lead_bind']; $lind_bind_key_list = []; foreach ($lind_bind['material_list'] as &$l){ unset($l['brand_qr_code_list']); // $l['qty'] = $l['fake_qty']; $l['brand_qr_code_list'] = $this->getValues( $code_key_data[$l['material_code']],$l['qty']); $lind_bind_key_list[$l['order_item_id']] = [ 'product_code' => $l['product_code'], 'product_code_show' => $l['product_code_show'], 'process_title' => $l['process_title'], 'color' => $l['color'], 'process_title_two' => $l['process_title_two'], 'color_two' => $l['color_two'], ]; unset($l['fake_qty']); } $lead_out = $old_data['lead_out']['brand_out_stock_list']; foreach ($lead_out as &$ll){ foreach ($ll['brand_out_stock_dtl'] as &$lll){ unset($lll['brand_qr_code_list']); // $lll['qty'] = $ll['brand_out_stock_dtl'][0]['fake_qty']; // $lll['qty'] = $lll['fake_qty']; // unset($lll['fake_qty']); // var_dump($data[$ll['send_box_code']]); // $lll['brand_qr_code_list'] = implode(',',$data[$ll['send_box_code']]['detail']); $lll['brand_qr_code_list'] = implode(',',$this->getValues( $data[$ll['send_box_code']]['detail'],$lll['qty']));; $lll['product_code'] = $lind_bind_key_list[$lll['bus_no']]['product_code'] ?? ''; $lll['product_code_show'] = $lind_bind_key_list[$lll['bus_no']]['product_code_show'] ?? ''; $lll['process_title'] = $lind_bind_key_list[$lll['bus_no']]['process_title'] ?? ''; $lll['color'] = $lind_bind_key_list[$lll['bus_no']]['color'] ?? ''; $lll['process_title_two'] = $lind_bind_key_list[$lll['bus_no']]['process_title_two'] ?? ''; $lll['color_two'] = $lind_bind_key_list[$lll['bus_no']]['color_two'] ?? ''; } } file_put_contents('1.txt',json_encode(['lind_bind'=>$lind_bind,'lead_out'=>['brand_out_stock_list'=>$lead_out]])); // var_dump($lind_bind); // var_dump($lead_out);die; return [$lind_bind,['brand_out_stock_list'=>$lead_out]]; } private function setBoxFake($data){ foreach ($data as $k=>$v){ if($v['fake_qty'] > count($v['detail'])){ $diff = $v['fake_qty'] - count($v['detail']); $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(!empty($v['out_brand_qr_code'])) continue; 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 setLimitForBoxOut($data){ if(empty($data['token']) || empty($data['list']) || empty($data['mac'])) return [false, '缺少必要参数,操作失败']; foreach ($data['list'] as $value){ $key = $value['order_item_id'] . hash('md5', $value['title']); $bool = $this->limitingSendRequestBackg($key, $value['num'], 600); if(! $bool) return [false, '同一产品相同商标限制同时操作,请稍后操作!']; } return [true, '']; } //删除限制领标 public function delLimitForBoxOut($data){ if(empty($data['material_list'])) return ; foreach ($data['material_list'] as $value){ $key = $value['order_item_id'] . hash('md5', $value['material_code_show']); $this->dellimitingSendRequestBackg($key); } } 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; } }