| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 | <?phpnamespace App\Service;/** * dwy相关 * @package App\Models */class DwyService extends Service{    private $url = 'https://tm.dwycloud.com';    private $url1 = '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,$old_data){        //        $this->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 setBoxData1($token,$dv,$data,$box_list,$old_data){        //        $this->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->getBoxData1($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;                    }                }            }        }        //补全数据        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->setNewData2($old_data,$new_data);        }//        var_dump($lind_bind);//        var_dump($lead_out);die;//        //把数据拼回去//        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 setNewData2($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']);            $mma = $l['mat_material_a'] ?? [];            //"mat_material_a":{"mat_category_code_show":"免漆板1800香杉木","mat_category_code":"BC020202","cpdj_show":"尊贵型","cpdj":"cpdj01","grade_show":"E0","grade":"01"            if(isset($l['mat_material_a'])){                $l['mat_category_code_show'] = $l['mat_material_a']['mat_category_code_show'] ?? '';                $l['mat_category_code'] = $l['mat_material_a']['mat_category_code'] ?? '';                $l['cpdj'] = $l['mat_material_a']['cpdj'] ?? '';                $l['cpdj_show'] = $l['mat_material_a']['cpdj_show'] ?? '';                $l['grade_show'] = $l['mat_material_a']['grade_show'] ?? '';                $l['grade'] = $l['mat_material_a']['grade'] ?? '';            }            $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']??'',                'mat_material_a' => $l['mat_material_a']??'',                'mat_category_code_show' => $mma['mat_category_code_show'] ?? '',                'mat_category_code' => $mma['mat_category_code'] ?? '',                'cpdj' => $mma['cpdj'] ?? '',                'cpdj_show' => $mma['cpdj_show'] ?? '',                'grade_show' => $mma['grade_show'] ?? '',                'grade' => $mma['grade'] ?? '',            ];            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'] ?? '';                $lll['mat_category_code_show'] = $lind_bind_key_list[$lll['bus_no']]['mat_category_code_show'] ?? '';                $lll['mat_category_code'] = $lind_bind_key_list[$lll['bus_no']]['mat_category_code'] ?? '';                $lll['cpdj'] = $lind_bind_key_list[$lll['bus_no']]['cpdj'] ?? '';                $lll['cpdj_show'] = $lind_bind_key_list[$lll['bus_no']]['cpdj_show'] ?? '';                $lll['grade_show'] = $lind_bind_key_list[$lll['bus_no']]['grade_show'] ?? '';                $lll['grade'] = $lind_bind_key_list[$lll['bus_no']]['grade'] ?? '';            }        }        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;    }    private function getBoxData1($dv,$token,$box_list){        //为了取商标卷码        $res = $this->post_helper($this->url1.'/jbl/api/module-data/device/device/diy/device_code',['device_code'=>$dv],$token);//        var_dump($this->url1);//        var_dump($res);die;        $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->url1.'/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;    }}
 |