likang vor 1 Jahr
Ursprung
Commit
49023bdfe6
2 geänderte Dateien mit 45 neuen und 11 gelöschten Zeilen
  1. 6 4
      catch/api/controller/Api.php
  2. 39 7
      catch/api/service/dispose.php

+ 6 - 4
catch/api/controller/Api.php

@@ -233,7 +233,6 @@ class Api extends CatchController
                                 $frist=$a[0]['dirt'];
                                 $end=$a[$count-1]['dirt'];
                                 if($frist!=$end){
-
                                     $data_array=[];
                                     $data_array[]=[
                                         "label"=>$item,
@@ -245,7 +244,7 @@ class Api extends CatchController
                                         "data"=>$data_array
                                     ];
                                     //设置key
-                                    $dispose->set_time_results($station,$item,$a[$count-1]['time']);
+                                    $dispose->set_time_results($station,$item,$a[$count-1]['time'],$frist==1?1:2);
                                     // debug_log("InAndOUT","得出计算结果:".json_encode($arr));
                                     debug_log("clear_label","发送给远程".json_encode($url_data));
 
@@ -295,7 +294,7 @@ class Api extends CatchController
                                     "data"=>$data_array
                                 ];
                                 //设置key
-                                $dispose->set_time_results($station,$item,$a[$count-1]['time']);
+                                $dispose->set_time_results($station,$item,$a[$count-1]['time'],$status['dirt']==1?1:2);
                                 // debug_log("InAndOUT","得出计算结果:".json_encode($arr));
                                 debug_log("clear_label","发送给远程".json_encode($url_data));
                                 //远程推送
@@ -304,6 +303,9 @@ class Api extends CatchController
                                 $this->temporary_label($redis,$item,2);
                              
                             }else{
+                                //上午不做二次计算
+
+                                
 
                                 if(empty($in_and_out)){
                                     //二次生成结果
@@ -330,7 +332,7 @@ class Api extends CatchController
                                             ];
                                             debug_log("clear_label","二次生成发送给远程".json_encode($url_data));
                                             //远程推送时间
-                                            $dispose->set_time_results($station,$item,$res['time']);
+                                            $dispose->set_time_results($station,$item,$res['time'],$res['dirt']);
                                             //远程推送
                                             $dispose->getRemoteData($url_data);
 

+ 39 - 7
catch/api/service/dispose.php

@@ -256,7 +256,7 @@ class dispose
                                 "data"=>$data_array
                             ];
                             //设定最后结果
-                            $this->set_time_results($data['mac'],$data['label'],$resArray['time']);
+                            $this->set_time_results($data['mac'],$data['label'],$resArray['time'],$inAndOut);
                             //推送远程数据
                             $this->getRemoteData($url_data);
                             //清除缓存数据
@@ -488,7 +488,31 @@ public function second_create_direction($mac,$label){
    }else{
         $res=2;
    }
-   
+   //早上对"进寝室不做二次计算
+
+   $start_time=strtotime(date("Y-m-d",time()));
+   $end_time=$start_time+60*60*8;
+   debug_log("second_dirt","判断的时间".date("Y-m-d H:i:s",$end_time));
+   debug_log("second_dirt","判断的时间".date("Y-m-d H:i:s",$time));
+   //当天结束之间 当天早上7点之前进寝室,不做二次计算
+    if($time<$end_time&&$res==1){
+        debug_log("second_dirt","当天早上7点之前进寝室,不做二次计算");
+        return false;
+    }
+  
+    $befor_res= $this->get_time_results($mac,$label,2);
+    debug_log("second_dirt","间隔时间".json_encode($befor_res));
+    if($befor_res['dir']==$res){
+        $interval_time=$time-$befor_res["time"];
+        debug_log("second_dirt","间隔时间".$interval_time);
+        debug_log("second_dirt","间隔时间第一个小时,且方向相同 不做二次计算".$interval_time);
+        if($interval_time<1*60*60){
+            return false;
+        }
+
+    }
+
+
    debug_log("second_dirt","最终结果".json_encode(["dirt"=>$res,"time"=>$time]));
     return ["dirt"=>$res,"time"=>$time];
 
@@ -536,22 +560,30 @@ public function get_station_config($mac){
      * @param [type] $mac
      * @param [type] $label
      * @param [type] $time
+     * @param [type] $dir 进出结果
      * @return void
      */
-    public function set_time_results($mac,$label,$time){
+    public function set_time_results($mac,$label,$time,$dir){
         $mac_key=$mac."res_time";
-        $this->setHash($mac_key,$label,$time);
+        $array=["time"=>$time,"dir"=>$dir];
+        $this->setHash($mac_key,$label,$array);
     }
     /**
      * function 获取存储结果的时间
      *
      * @param [type] $mac
-     * @param [type] $label
+     * @param [type] $label 
+     * @param [type] $type 类型
      * @return void
      */
-    public function get_time_results($mac,$label){
+    public function get_time_results($mac,$label,$type=1){
         $mac_key=$mac."res_time";
-        return $this->selectHash($mac_key,$label);
+        $data=$this->selectHash($mac_key,$label);
+        if($type==1){
+            return $data["time"];
+        }else{
+            return $data;
+        }
     }