tongshanglei 2 anos atrás
pai
commit
47bf71f341

+ 1 - 1
app/common.php

@@ -1394,7 +1394,7 @@ use think\facade\Cache;
         $redis_info= $redis->hget('vehicle_table_count', $whereStr);
         if($redis_info){
             $info=json_decode($redis_info,true);
-            if((time()-$info['time'])<24*3600){
+            if((time()-$info['time'])<3600){
                 return $info['count'];
             }
         }

+ 8 - 1
catch/device/controller/Station.php

@@ -203,13 +203,20 @@ class Station extends CatchController
             }
             $total += $highestRow - 1;
             for ($j = 2; $j <= $highestRow; $j++) {
-                $shortcode++;
+                
                 $arr = array(); //每条设备信息
                 $arr['mac'] = strtoupper(trim($sheet->getCell("A" . $j)->getFormattedValue())); 
+                if(empty($arr['mac']) ||  strlen($arr['mac'])!=8){
+                    $fail++;
+                    debug_log('importStationError','MAC格式格式不正确,MAC为:'.$arr['mac']);
+                    continue;
+                }
                 $arr['longitude'] = trim($sheet->getCell("B" . $j)->getFormattedValue());  
                 $arr['latitude'] = trim($sheet->getCell("C" . $j)->getFormattedValue());  
                 $arr['name'] = trim($sheet->getCell("D" . $j)->getFormattedValue());  
                 $arr['created_at']=time();
+
+                $shortcode++;
                 $arr['shortcode']=$shortcode;
                
                 array_push($data,$arr);

+ 10 - 0
catch/map/controller/RouteMap.php

@@ -658,6 +658,16 @@ class RouteMap extends CatchController
             oci_execute($vtid);
             oci_fetch($vtid);
             $cond['RF_FLAGID']=['=',$rfid_sn];
+            if(!$rfid_sn){
+                $response=[
+                    'code'=>10000,
+                    'message'=>'查询成功',
+                    'data'=>[],
+                    'current'=>isset($params['page'])?(int)$params['page']:1,
+                    'limit'=>isset($params['limit'])?(int)$params['limit']:10,
+                ];
+                return $response;
+            }
         }
         $start_time = date('Y-m-d 00:00:00',time());
         $end_time = date('Y-m-d 23:59:59',time());

+ 60 - 15
catch/yunying/controller/Vehicle.php

@@ -365,16 +365,32 @@ class Vehicle extends CatchController
             $brand_type_id = Db::table("sys_dict_type")->where('code', 'CAR_BRAND_OPTION')->value('id');
             $car_type_id = Db::table("sys_dict_type")->where('code', 'CAR_TYPE_OPTION')->value('id');
             
-        // return $this->where('type_id', $type_id)
-        //             ->where('code', $value)
-        //             ->cache(true, 60)
-        //             ->value('remark');
 
-            // $r=$this->execSaveVehicle($param);
             $total += $highestRow - 1;
+            $sql='declare
+                tagId number;
+                ownId number;
+            begin
+          
+                INSERT INTO DSSC3.W_DW_RFID_TAGS("ID", "RFID_SN","INSTALLER","INSTA_DATE") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, :col1,:col2, TO_DATE(:col3, \'SYYYY-MM-DD HH24:MI:SS\'))  returning ID into tagId;
+                INSERT INTO DSSC3.W_DW_NON_MOTOR_OWNER("ID", "NAME","ID_CARD_NUMBER","MOBILE_NUMBER") VALUES (DSSC3.SEQ_W_DW_NON_MOTOR_OWNER.nextval,:col4,:col5,:col6) returning ID into ownId;
+                INSERT INTO DSSC3.W_DW_NON_MOTOR("ID", "RFID_ID","PLATE_NO","CAR_BRAND","CAR_TYPE","OWNER_ID") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, tagId,:col7,:col8,:col9,ownId);
+            
+
+            end;';
+
+       
+            $stmt = oci_parse($conn, $sql);
+
+
             for ($j = 2; $j <= $highestRow; $j++) {
                 $arr = array(); //每条设备信息
                 $arr['PLATE_NO'] = strtoupper(trim($sheet->getCell("A" . $j)->getFormattedValue())); 
+                if(empty($arr['PLATE_NO']) ||  strlen($arr['PLATE_NO'])!=13){
+                        $fail++;
+                        debug_log('importVehicleError','车牌格式不正确,车牌号为:'.$arr['PLATE_NO']);
+                        continue;
+                }
                 $brand = trim($sheet->getCell("B" . $j)->getFormattedValue());  
                 $brand_id=Db::table("sys_dict_data")->where('type_id', $brand_type_id)->whereLike('value','%'.$brand.'%')->cache(60)->value('code');
                 $arr['CAR_BRAND']=$brand_id?$brand_id:'99';
@@ -383,30 +399,59 @@ class Vehicle extends CatchController
                 $car_type=Db::table("sys_dict_data")->where('type_id', $car_type_id)->whereLike('value','%'.$type.'%')->cache(60)->value('code');
                 $arr['CAR_TYPE']=$car_type?$car_type:'4';
                 $arr['RFID_SN'] = trim($sheet->getCell("D" . $j)->getFormattedValue());  
+                if(empty($arr['RFID_SN']) ||  strlen($arr['RFID_SN'])!=8){
+                    $fail++;
+                    debug_log('importVehicleError','标签格式格式不正确,标签为:'.$arr['RFID_SN']);
+                    continue;
+                }
                 $arr['INSTA_DATE'] = trim($sheet->getCell("E" . $j)->getFormattedValue());  
                 $arr['INSTALLER'] = trim($sheet->getCell("F" . $j)->getFormattedValue()); 
                 $arr['NAME'] = trim($sheet->getCell("G" . $j)->getFormattedValue()); 
                 $arr['ID_CARD_NUMBER'] = trim($sheet->getCell("H" . $j)->getFormattedValue()); 
                 $arr['MOBILE_NUMBER'] = trim($sheet->getCell("I" . $j)->getFormattedValue()); 
                 // var_dump($arr);
-                $r=$this->execSaveVehicle($arr);
-                if($r){
-                    $arr['DATA_TYPE']='vehicle_save';
-                    pushDataToRedisList($arr);
-                    $success++;
-                }else{
-                    $fail++;
-                }
+                //变量绑定 
+                oci_bind_by_name($stmt, ':col1', $arr['RFID_SN']);
+                oci_bind_by_name($stmt, ':col2', $arr['INSTALLER']);
+                oci_bind_by_name($stmt, ':col3', $arr['INSTA_DATE']);
+                oci_bind_by_name($stmt, ':col4', $arr['NAME']);
+                oci_bind_by_name($stmt, ':col5', $arr['ID_CARD_NUMBER']);
+                oci_bind_by_name($stmt, ':col6', $arr['MOBILE_NUMBER']);
+                oci_bind_by_name($stmt, ':col6', $arr['PLATE_NO']);
+                oci_bind_by_name($stmt, ':col6', $arr['CAR_BRAND']);
+                oci_bind_by_name($stmt, ':col6', $arr['CAR_TYPE']);
+                
+                 // 添加到批处理
+                 oci_execute($stmt, OCI_DEFAULT);
+
+                 $arr['DATA_TYPE']='vehicle_save';
+                 pushDataToRedisList($arr);
+                 $success++;
+                 if( ($j%1000 == 0) || $j==$highestRow){
+                     // 提交事务
+                     $res=oci_commit($conn);
+                     
+                 }
+
+                // $r=$this->execSaveVehicle($arr);
+                // if($r){
+                //     $arr['DATA_TYPE']='vehicle_save';
+                //     pushDataToRedisList($arr);
+                //     $success++;
+                // }else{
+                //     $fail++;
+                // }
                 // var_dump($arr);
             //    array_push($data,$arr);
             }
+            oci_free_statement($stmt);
         }
         // array_unique($data, SORT_REGULAR);
         // // var_dump($data);return CatchResponse::success();
         // $count = $this->deviceModel->limit(100)->insertAll($data);
         // if ($success = $count) {
-
-            return CatchResponse::success('共' . $total . '条数据,成功' . $success . '条,失败' . $fail . '条');
+        oci_close($conn); 
+        return CatchResponse::success('共' . $total . '条数据,成功' . $success . '条,失败' . $fail . '条');
 
         // }
         // return CatchResponse::success(['error' => true, 'msg' => '导入失败']);