gogs 11 bulan lalu
induk
melakukan
7cffa6d40c
1 mengubah file dengan 110 tambahan dan 7 penghapusan
  1. 110 7
      app/Service/DwyService.php

+ 110 - 7
app/Service/DwyService.php

@@ -9,6 +9,9 @@ namespace App\Service;
  */
 class DwyService extends Service
 {
+    private $url = 'https://tm.dwycloud.com';
+
+    protected $num = 0;
 
     protected static $instance;
 
@@ -20,17 +23,115 @@ class DwyService extends Service
         return self::$instance;
     }
 
-    public function setBoxData($token,$dv,$data){
+    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;
 
-        $token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NjYxNTc5MjMwMDUzNzAzNjgiLCJhdXRoIjoiUk9MRV9CUkFORF9TVVBQTElFUixST0xFX1VTRV9CUkFORF9TVVBQTElFUixST0xFX0lOTkVSX1VTRVIsUk9MRV9JTlRFUkZBQ0UsUk9MRV9TRU5EX0JSQU5EX1NVUFBMSUVSIiwidG9rZW5JZCI6IjQiLCJleHAiOjE3MTk2NzI1OTN9.VKDLhTILWHe6MIAlzNvxCk4pBQaV-Et1UFYb12xTxl-QcVWpYaWLZnk6_QJ2bDXMplp75DuIKADmjuHDjDFSWQ';
-        $dv = 'DV00001';
+    }
+
+
+    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;
 
-    private function getBoxData(){
 
     }
 
@@ -38,9 +139,11 @@ class DwyService extends Service
     public function post_helper($url, $data, $auth)
     {
         $header = [
-            'Content-Type:application/json',
+            'Content-Type: application/json',
             'Authorization: ' . $auth,
         ];
+        $data = json_encode($data);
+//        var_dump($url);die;
         $ch = curl_init();
 
         curl_setopt($ch, CURLOPT_POST, 1);
@@ -49,7 +152,7 @@ class DwyService extends Service
         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, json_encode($data));
+        if (!is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
         $r = curl_exec($ch);
         curl_close($ch);
         return $r;