diff --git a/controllers/Carpark.php b/controllers/Carpark.php
index 7d8e5da..a8cec5f 100644
--- a/controllers/Carpark.php
+++ b/controllers/Carpark.php
@@ -149,61 +149,94 @@ class Carpark extends CC_Controller
return md5($parms['sno']. 'a' . date('dmh') . 'l' . $parms['ts'] . 't'. $parms['lpr']. 'o'. $parms['ivsno'] . 'b'. $parms['io'] . $function_name);
}
- // [local] 新增車辨記錄
+ // [local] 手動車辨記錄
public function local_lprio()
{
- $LOG_FLAG = 'cms://';
+ $LOG_FLAG = 'local-cms://';
- $sno = $this->input->post('station_no', true);
- $ivsno = $this->input->post('ivsno', true);
- $io = $this->input->post('io', true);
- $ctype = $this->input->post('ctype', true);
- $lpr = $this->input->post('lpr', true);
+ // 判斷 cmd
$cmd = $this->input->post('cmd', true);
- // 判斷 cmd 正確性
+ // 新增車辨記錄
if($cmd == 1)
{
- // 新增車辨記錄
+ $sno = $this->input->post('station_no', true);
+ $ivsno = $this->input->post('ivsno', true);
+ $io = $this->input->post('io', true);
+ $ctype = $this->input->post('ctype', true);
+ $lpr = $this->input->post('lpr', true);
+
+ $parms = array();
+ $parms['sno'] = preg_replace('/[^0-9]/', '', strtoupper(urldecode($sno)));
+ $parms['ivsno'] = $ivsno;
+ $parms['io'] = $ctype.$io;
+ $parms['type'] = 'C';
+ $parms['lpr'] = strtoupper(urldecode($lpr));
+ $parms['color'] = 'NONE';
+ $parms['sq'] = 0;
+ $parms['ts'] = date('YmdHis');
+ $parms['sq2'] = 0;
+ $parms['etag'] = 'NONE';
+ $parms['ant'] = 1;
+ // 補充
+ $parms['obj_type'] = 1;
+ $parms['curr_time_str'] = date('Y-m-d H:i:s');
+ $parms['pic_name'] = '';
+
+ trigger_error($LOG_FLAG . __FUNCTION__ . '..' . print_r($parms, true));
+
+ // 判斷 io 正確性
+ if(!in_array($parms['io'], array('CI', 'CO', 'MI', 'MO')))
+ {
+ echo 'unknown_io';
+ exit;
+ }
+
+ // 執行
+ $this->app_model('cars')->lprio($parms);
+ echo 'ok';
+ exit;
}
- else
+
+ // 修改車辨記錄
+ else if($cmd == 2)
{
- echo 'unknown_cmd';
+ $station_no = $this->input->post('station_no', true);
+ $cario_no = $this->input->post('cario_no', true);
+ $old_lpr = $this->input->post('old_lpr', true);
+ $new_lpr = $this->input->post('new_lpr', true);
+
+ $parms = array();
+ $parms['sno'] = preg_replace('/[^0-9]/', '', strtoupper(urldecode($station_no)));
+ $parms['cno'] = preg_replace('/[^0-9]/', '', strtoupper(urldecode($cario_no)));
+ $parms['old_lpr'] = strtoupper(urldecode($old_lpr));
+ $parms['lpr'] = strtoupper(urldecode($new_lpr));
+
+ trigger_error($LOG_FLAG . __FUNCTION__ . '..' . print_r($parms, true));
+
+ // 判斷 lpr 正確性
+ if($parms['new_lpr'] == $parms['old_lpr'])
+ {
+ echo 'no_changed';
+ exit;
+ }
+ else if($parms['lpr'] == 'NONE')
+ {
+ echo 'lpr_none';
+ exit;
+ }
+
+ // 執行
+ echo $this->app_model('cars')->upd_cario($parms);
exit;
}
- // 摸擬連結參數
- $parms = array();
- $parms['sno'] = $sno;
- $parms['ivsno'] = $ivsno;
- $parms['io'] = $ctype.$io;
- $parms['type'] = 'C';
- $parms['lpr'] = preg_replace('/[^0-9A-Z]/', '', strtoupper(urldecode($lpr)));
- $parms['color'] = 'NONE';
- $parms['sq'] = 0;
- $parms['ts'] = date('YmdHis');
- $parms['sq2'] = 0;
- $parms['etag'] = 'NONE';
- $parms['ant'] = 1;
-
- // 補充
- $parms['obj_type'] = 1;
- $parms['curr_time_str'] = date('Y-m-d H:i:s');
- $parms['pic_name'] = '';
-
- trigger_error($LOG_FLAG . __FUNCTION__ . '..' . print_r($parms, true));
-
- // 判斷 io 正確性
- if(!in_array($parms['io'], array('CI', 'CO', 'MI', 'MO')))
+ // 未知
+ else
{
- echo 'unknown_io';
+ echo 'unknown_cmd';
exit;
}
-
- // 執行
- $this->app_model('cars')->lprio($parms);
- echo 'ok';
- exit;
}
// [remote] 新增車辨記錄
@@ -921,7 +954,17 @@ class Carpark extends CC_Controller
$data = $this->app_model()->carin_time_query($time_query, $minutes_range);
echo json_encode($data);
- }
+ }
+
+ // 車辨失敗查詢
+ public function carin_none_query()
+ {
+ $time_query = $this->input->post('time_query', true);
+ $hours_range = $this->input->post('hours_range', true);
+
+ $data = $this->app_model()->carin_none_query($time_query, $hours_range);
+ echo json_encode($data);
+ }
// 查詢行動支付記錄
public function tx_bill_query()
diff --git a/controllers/Cars.php b/controllers/Cars.php
index 300ffc0..6e62225 100644
--- a/controllers/Cars.php
+++ b/controllers/Cars.php
@@ -14,8 +14,7 @@ class Cars extends CC_Controller
'ipcam', 'ipcam_meta',
'check_lpr_etag',
'opendoor',
- 'temp_opendoors', 'member_opendoors',
- 'post_ipcam'
+ 'temp_opendoors', 'member_opendoors'
)))
{
ob_end_clean();
@@ -29,6 +28,19 @@ class Cars extends CC_Controller
ob_end_flush();
flush();
}
+ else if(in_array($this->router->fetch_method(), array('post_ipcam')))
+ {
+ ob_end_clean();
+ ignore_user_abort();
+ ob_start();
+
+ echo 'OK'; // 痾
+
+ header('Connection: close');
+ header('Content-Length: ' . ob_get_length());
+ ob_end_flush();
+ flush();
+ }
}
// ------------------------------------
@@ -65,12 +77,12 @@ class Cars extends CC_Controller
$pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd)
if (!file_exists($pic_folder)) mkdir($pic_folder); // 如果資料夾不存在, 建立日期資料夾
- $config['upload_path'] = $pic_folder;
- // $config['allowed_types'] = 'gif|jpg|png';
- $config['allowed_types'] = '*';
- // ex. lpr_1625AB_I_1_152_C_1_2015080526.jpg -> car_交易序號_進出_順序_車號_時間.jpg
+ $config['upload_path'] = $pic_folder;
+ $config['allowed_types'] = 'jpg';
$config['file_name'] = "lpr-{$parms['lpr']}-{$parms['io']}-{$parms['ivsno']}-{$parms['sq']}-C-1-{$this->vars['time_num']}.jpg";
+ trigger_error(__FUNCTION__ . '..' . print_r($_FILES, true));
+
if (!isset($_FILES['cars']))
{
$status = 'error'; // 顯示上傳錯誤
diff --git a/models/Carpark_model.php b/models/Carpark_model.php
index e718055..b58bd05 100644
--- a/models/Carpark_model.php
+++ b/models/Carpark_model.php
@@ -140,11 +140,13 @@ class Carpark_model extends CI_Model
$pic_name = str_replace('.jpg', '', empty($rows['out_pic_name']) ? $rows['in_pic_name'] : $rows['out_pic_name']);
$arr = explode('-', $pic_name);
- $pic_path = APP_URL.'pics/'.substr($arr[7], 0, 8).'/'.$pic_name;
+ $pic_path = isset($arr[7]) ? APP_URL.'pics/'.substr($arr[7], 0, 8).'/'.$pic_name : '';
$data[$idx] = array
(
// 'io_name' => $io_name[$rows['in_out']],
+ 'cario_no' => $rows['cario_no'],
+
'io_name' => $lane_no,
'lpr' => $rows['lpr'],
// 'etag' => $rows['etag'],
@@ -305,6 +307,57 @@ class Carpark_model extends CI_Model
return $data;
}
+
+
+ // 車辨失敗查詢
+ public function carin_none_query($time_query, $hours_range)
+ {
+ $curr_time = date('Y-m-d H:i:s');
+
+ $start_time = date('Y-m-d H:i:s', strtotime("{$time_query} - {$hours_range} hours"));
+ $end_time = date('Y-m-d H:i:s', strtotime("{$time_query} + {$hours_range} hours"));
+
+ $data_cario = $this->db
+ ->select('c.cario_no, c.in_out, in_lane, out_lane, c.in_time, c.out_time, c.minutes, c.obj_id as lpr, c.etag, c.in_pic_name, c.out_pic_name')
+ ->from('cario c')
+ ->where(array( 'c.in_time >=' => $start_time,
+ 'c.in_time <=' => $end_time,
+ 'c.obj_id' => 'NONE',
+ 'c.err' => 0,
+ 'c.finished' => 0
+ ))
+ ->order_by('c.in_time', 'desc')
+ ->get()
+ ->result_array();
+
+ $data = array();
+ $idx = 0;
+ foreach($data_cario as $rows)
+ {
+ ++$rows['in_lane'];
+ ++$rows['out_lane'];
+
+ $lane_no = empty($rows['out_time']) ? "入{$rows['in_lane']}" : "入{$rows['in_lane']} -> 出{$rows['out_lane']}";
+ $io_time = empty($rows['out_time']) ? $rows['in_time'] : "{$rows['in_time']}(入)
{$rows['out_time']}(出)
{$rows['minutes']}分(停留時間)";
+
+ $pic_name = str_replace('.jpg', '', empty($rows['out_pic_name']) ? $rows['in_pic_name'] : $rows['out_pic_name']);
+ $arr = explode('-', $pic_name);
+ $pic_path = APP_URL.'pics/'.substr($arr[7], 0, 8).'/'.$pic_name;
+
+ $data[$idx++] = array
+ (
+ 'cario_no' => $rows['cario_no'],
+ 'io_name' => $lane_no,
+ 'lpr' => $rows['lpr'],
+ 'etag' => $rows['etag'],
+ 'owner' => '',
+ 'io_time' => $io_time,
+ 'pic_name' => $pic_path
+ );
+ }
+
+ return $data;
+ }
// 時間長度轉成日時分秒
public function time2str($d1, $d2)
diff --git a/models/Cars_model.php b/models/Cars_model.php
index 7b4debd..45c811a 100644
--- a/models/Cars_model.php
+++ b/models/Cars_model.php
@@ -32,6 +32,32 @@ class Cars_model extends CI_Model
return $open_id . ',' . str_pad($msg_id, 5, '0', STR_PAD_LEFT);
}
+ // 修改車辨記錄
+ public function upd_cario($parms)
+ {
+ trigger_error(__FUNCTION__ . '|修改車辨記錄:' . print_r($parms, true));
+
+ // 更新入場記錄
+ $data = array('obj_id' => $parms['lpr']);
+ $this->db->update('cario', $data, array('station_no' => $parms['sno'], 'cario_no' => $parms['cno'], 'obj_id' => $parms['old_lpr'], 'err' => 0, 'finished' => 0));
+ if ($this->db->affected_rows() <= 0)
+ {
+ trigger_error(__FUNCTION__ . '|fail|' . $this->db->last_query());
+ return 'fail';
+ }
+
+ /* 20171226 車辨失敗暫不同步
+
+ // 傳送更新記錄
+ $sync_agent = new AltobSyncAgent();
+ $sync_agent->init($parms['sno'], $this->now_str);
+ $sync_agent->cario_no = $parms['cno']; // 進出編號
+ $sync_result = $sync_agent->sync_st_io_meta($data);
+ trigger_error( __FUNCTION__ . "..sync_st_io_meta|{$sync_agent->cario_no}|$sync_result|..". print_r($data, true));
+ */
+ return 'ok';
+ }
+
// 特殊方式進出註記
public function ipcam_meta($parms)
{
@@ -75,7 +101,7 @@ class Cars_model extends CI_Model
$sync_agent->init($parms['sno'], $this->now_str);
$sync_agent->cario_no = $rows_cario['cario_no']; // 進出編號
$sync_result = $sync_agent->sync_st_io_meta($data);
- trigger_error( __FUNCTION__ . "..sync_st_io_meta.." . $sync_result);
+ trigger_error( __FUNCTION__ . "..sync_st_io_meta|{$sync_agent->cario_no}|$sync_result|..". print_r($data, true));
}
}
diff --git a/views/carpark/main_page.php b/views/carpark/main_page.php
index 9c1018e..e4cdd6a 100644
--- a/views/carpark/main_page.php
+++ b/views/carpark/main_page.php
@@ -565,19 +565,32 @@