tongshanglei 1 vuosi sitten
vanhempi
commit
5ce2af54ef
1 muutettua tiedostoa jossa 108 lisäystä ja 42 poistoa
  1. 108 42
      catch/yunying/controller/Vehicle.php

+ 108 - 42
catch/yunying/controller/Vehicle.php

@@ -221,9 +221,11 @@ class Vehicle extends CatchController
         
         $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, \''.$data['RFID_SN'].'\',\''.$data['INSTALLER'].'\', TO_DATE(\''.$data['INSTA_DATE'].'\', \'SYYYY-MM-DD HH24:MI:SS\'))  returning ID into tagId;
-            INSERT INTO DSSC3.W_DW_NON_MOTOR("ID", "RFID_ID","PLATE_NO","CAR_BRAND","CAR_TYPE") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, tagId,\''.$data['PLATE_NO'].'\',\''.$data['CAR_BRAND'].'\',\''.$data['CAR_TYPE'].'\');
+            INSERT INTO DSSC3.W_DW_NON_MOTOR_OWNER("ID", "NAME","ID_CARD_NUMBER","MOBILE_NUMBER","HOME_ADDRESS") VALUES (DSSC3.SEQ_W_DW_NON_MOTOR_OWNER.nextval,\''.$data['NAME'].'\',\''.$data['ID_CARD_NUMBER'].'\',\''.$data['MOBILE_NUMBER'].'\',\''.$data['HOME_ADDRESS'].'\') returning ID into ownId;
+            INSERT INTO DSSC3.W_DW_NON_MOTOR("ID", "RFID_ID","PLATE_NO","CAR_BRAND","CAR_TYPE","CAR_VIN","OWNER_ID") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, tagId,\''.$data['PLATE_NO'].'\',\''.$data['CAR_BRAND'].'\',\''.$data['CAR_TYPE'].'\',\''.$data['CAR_VIN'].'\',ownId);
         end;';
         $stid = oci_parse($conn, $sql);
         $r = oci_execute($stid);
@@ -250,24 +252,43 @@ class Vehicle extends CatchController
         oci_execute($stid);
         oci_fetch($stid);
         $params['OLD_NO']=$OLD_NO;
-
         $params['RFID_SN']=strtoupper($params['RFID_SN']);
         $params['PLATE_NO']=strtoupper($params['PLATE_NO']);
         // var_dump($params);
-       
         // //更新
         $sql='UPDATE DSSC3.W_DW_RFID_TAGS  SET RFID_SN = \''.$params['RFID_SN'].'\' WHERE ID = \''.$id.'\' ';
         $stid = oci_parse($conn, $sql);
         $r = oci_execute($stid);
-        
-        $sql='UPDATE DSSC3.W_DW_NON_MOTOR  SET PLATE_NO = \''.$params['PLATE_NO'].'\',CAR_BRAND=\''.$params['CAR_BRAND'].'\',CAR_TYPE=\''.$params['CAR_TYPE'].'\' WHERE RFID_ID = \''.$id.'\' ';
-        // var_dump($sql);
+        if(!$r){
+            oci_rollback($conn);
+            return CatchResponse::fail('修改失败');
+        }
+        $sql='UPDATE DSSC3.W_DW_NON_MOTOR  SET PLATE_NO = \''.$params['PLATE_NO'].'\',CAR_BRAND=\''.$params['CAR_BRAND'].'\',CAR_TYPE=\''.$params['CAR_TYPE'].'\',CAR_VIN=\''.$params['CAR_VIN'].'\' WHERE RFID_ID = \''.$id.'\' ';
         $stid2 = oci_parse($conn, $sql);
         $r2 = oci_execute($stid2);
-        
+        if(!$r2){
+            oci_rollback($conn);
+            return CatchResponse::fail('修改失败');
+        }
+        //查车主ID
+        $vehicle_sql='SELECT o.OWNER_ID FROM DSSC3.W_DW_NON_MOTOR o WHERE o.RFID_ID =\''.$id.'\' ';
+        $owner_id='';
+        $stid = oci_parse($conn, $vehicle_sql);
+        oci_define_by_name($stid, 'OWNER_ID', $owner_id);
+        oci_execute($stid);
+        oci_fetch($stid);
+
+        $sql='UPDATE DSSC3.W_DW_NON_MOTOR_OWNER SET MOBILE_NUMBER=\''.$params['MOBILE_NUMBER'].'\',NAME=\''.$params['NAME'].'\',ID_CARD_NUMBER=\''.$params['ID_CARD_NUMBER'].'\',HOME_ADDRESS=\''.$params['HOME_ADDRESS'].'\' WHERE ID = \''.$owner_id.'\' ';
+
+        $stid3 = oci_parse($conn, $sql);
+        $r3 = oci_execute($stid3);
+        if(!$r3){
+            oci_rollback($conn);
+            return CatchResponse::fail('修改失败');
+        }
+        oci_commit($conn);
         $params['DATA_TYPE']='vehicle_update';
         pushDataToRedisList($params);
-
         return CatchResponse::success('修改成功');
 
     }
@@ -291,18 +312,43 @@ class Vehicle extends CatchController
         $delete_data['PLATE_NO']=$rows;
         $delete_data['DATA_TYPE']='vehicle_delete';
 
-
+        //查车主ID
+        $sql='SELECT OWNER_ID FROM DSSC3.W_DW_NON_MOTOR  WHERE RFID_ID in ('.$id.')';
+        $stid = oci_parse($conn, $sql);
+        $r = oci_execute($stid);
+        $rows=[];
+        while($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
+             $rows[]=$row['OWNER_ID'];
+        }
+        $owner_ids=implode(',',$rows);
+        $sql='DELETE FROM DSSC3.W_DW_NON_MOTOR_OWNER WHERE ID in ('.$owner_ids.')';
+        $stid = oci_parse($conn, $sql);
+        $r = oci_execute($stid);
+        if(!$r){
+            oci_rollback($conn);
+            return CatchResponse::fail('删除失败');
+        }
+        
         $sql='DELETE FROM DSSC3.W_DW_RFID_TAGS WHERE ID in ('.$id.')';
-      
         $stid = oci_parse($conn, $sql);
         $r = oci_execute($stid);
-
+        if(!$r){
+            oci_rollback($conn);
+            return CatchResponse::fail('删除失败');
+        }
         $sql='DELETE FROM DSSC3.W_DW_NON_MOTOR WHERE RFID_ID in ('.$id.')';
         $stid = oci_parse($conn, $sql);
         $r = oci_execute($stid);
+        if(!$r){
+            oci_rollback($conn);
+            return CatchResponse::fail('删除失败');
+        }
+        oci_commit($conn);
 
+       
         pushDataToRedisList($delete_data);
-        return CatchResponse::success($r);
+       
+        return CatchResponse::success(true);
     }
     /**
      * 导出
@@ -362,29 +408,40 @@ class Vehicle extends CatchController
             
 
             $total += $highestRow - 1;
-            // $sql='declare
-            //     tagId number;
-            // begin
-            //     INSERT INTO DSSC3.W_DW_RFID_TAGS("ID", "RFID_SN","INSTALLER","INSTA_DATE") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, \''.$arr['RFID_SN'].'\',\''.$arr['INSTALLER'].'\', TO_DATE(\''.$arr['INSTA_DATE'].'\', \'SYYYY-MM-DD HH24:MI:SS\'))  returning ID into tagId;
-            //     INSERT INTO DSSC3.W_DW_NON_MOTOR("ID", "RFID_ID","PLATE_NO","CAR_BRAND","CAR_TYPE") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, tagId,\''.$arr['PLATE_NO'].'\',\''.$arr['CAR_BRAND'].'\',\''.$arr['CAR_TYPE'].'\');
-            // end;';
-            // 预编译SQL语句
             $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("ID", "RFID_ID","PLATE_NO","CAR_BRAND","CAR_TYPE") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, tagId,:col4,:col5,:col6);
+                INSERT INTO DSSC3.W_DW_NON_MOTOR_OWNER("ID", "NAME","ID_CARD_NUMBER","MOBILE_NUMBER",,"HOME_ADDRESS") VALUES (DSSC3.SEQ_W_DW_NON_MOTOR_OWNER.nextval,:col4,:col5,:col6,:col7) returning ID into ownId;
+                INSERT INTO DSSC3.W_DW_NON_MOTOR("ID", "RFID_ID","PLATE_NO","CAR_BRAND","CAR_TYPE","CAR_VIN","OWNER_ID") VALUES (DSSC3.SEQ_W_DW_RFID_TAGS.nextval, tagId,:col8,:col9,:col10,:col11,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){
+                if(empty($arr['PLATE_NO']) ||  strlen($arr['PLATE_NO'])<10){
+                        $fail++;
+                        debug_log('importVehicleError','车牌格式不正确,车牌号为:'.$arr['PLATE_NO']);
+                        continue;
+                }
+                //检测车牌是否存在
+                $vehicle_sql='SELECT o.RFID_ID FROM DSSC3.W_DW_NON_MOTOR o WHERE o.PLATE_NO =\''.$arr['PLATE_NO'].'\' ';
+                $rfid_id='';
+                $stid = oci_parse($conn, $vehicle_sql);
+                oci_define_by_name($stid, 'RFID_ID', $rfid_id);
+                oci_execute($stid);
+                oci_fetch($stid);
+                if($rfid_id){
                     $fail++;
-                    debug_log('importVehicleError','车牌格式不正确,车牌号为:'.$arr['PLATE_NO']);
+                    debug_log('importVehicleError','车牌已存在,车牌号为:'.$arr['PLATE_NO']);
                     continue;
                 }
-                $brand = trim($sheet->getCell("B" . $j)->getFormattedValue());  
+                 $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';
                 
@@ -397,36 +454,45 @@ class Vehicle extends CatchController
                     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['CAR_VIN'] = trim($sheet->getCell("E" . $j)->getFormattedValue());  
+                $arr['INSTA_DATE'] = trim($sheet->getCell("F" . $j)->getFormattedValue());  
+                $arr['INSTALLER'] = trim($sheet->getCell("G" . $j)->getFormattedValue()); 
+                $arr['NAME'] = trim($sheet->getCell("H" . $j)->getFormattedValue()); 
+                $arr['ID_CARD_NUMBER'] = trim($sheet->getCell("I" . $j)->getFormattedValue()); 
+                $arr['MOBILE_NUMBER'] = trim($sheet->getCell("J" . $j)->getFormattedValue()); 
+                $arr['HOME_ADDRESS'] = trim($sheet->getCell("K" . $j)->getFormattedValue()); 
+                // var_dump($arr);
                 //变量绑定 
                 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['PLATE_NO']);
-                oci_bind_by_name($stmt, ':col5', $arr['CAR_BRAND']);
-                oci_bind_by_name($stmt, ':col6', $arr['CAR_TYPE']);
+                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, ':col7', $arr['HOME_ADDRESS']);
+                oci_bind_by_name($stmt, ':col8', $arr['PLATE_NO']);
+                oci_bind_by_name($stmt, ':col9', $arr['CAR_BRAND']);
+                oci_bind_by_name($stmt, ':col10',$arr['CAR_TYPE']);
+                oci_bind_by_name($stmt, ':col11',$arr['CAR_VIN']);
+                
+                 // 添加到批处理
+                 oci_execute($stmt, OCI_DEFAULT);
 
-                // 添加到批处理
-                oci_execute($stmt, OCI_DEFAULT);
+                 $arr['DATA_TYPE']='vehicle_save';
+                 pushDataToRedisList($arr);
+                 $success++;
+                 if( ($j%1000 == 0) || $j==$highestRow){
+                     // 提交事务
+                     $res=oci_commit($conn);
+                     
+                 }
 
-                $arr['DATA_TYPE']='vehicle_save';
-                pushDataToRedisList($arr);
-                $success++;
-                if( ($j%1000 == 0) || $j==$highestRow){
-                    // 提交事务
-                    $res=oci_commit($conn);
-                }
-                
             }
-            // 释放资源
             oci_free_statement($stmt);
         }
-        //关闭连接
         oci_close($conn); 
         return CatchResponse::success('共' . $total . '条数据,成功' . $success . '条,失败' . $fail . '条');
-
+        
        
     }