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 @@ - + + + 入場
車辨失敗 + +   前後範圍 + + + + @@ -1238,7 +1251,13 @@ function show_item(tags, type) { $("#cario_"+idx+">[data-tag=io_name]").text(jdata[idx]['io_name']); $("#cario_"+idx+">[data-tag=io_time]").html(jdata[idx]['io_time']); - $("#cario_"+idx+">[data-tag=lpr]").text(jdata[idx]['lpr']); + + // 車辨失敗可新增車號 + if(jdata[idx]['lpr'] == 'NONE') + $("#cario_"+idx+">[data-tag=lpr]").html('車辨失敗
'); + else + $("#cario_"+idx+">[data-tag=lpr]").html('' + jdata[idx]['lpr'] +''); + $("#cario_"+idx+">[data-tag=etag]").text(jdata[idx]['etag']); $("#cario_"+idx+">[data-tag=owner]").text(jdata[idx]['owner']); $("#cario_"+idx+">[data-tag=pic_name]>img").attr("src",jdata[idx]['pic_name']); @@ -1454,6 +1473,73 @@ function carin_time_query() }); } +// 車辨失敗查詢 +function carin_none_query() +{ + var time_query = $("#carin_none_query").val(); + if (time_query == "") + { + alert("時間欄位必填"); + return false; + } + + $.ajax + ({ + url: "carin_none_query/", + type: "post", + dataType:"json", + data: {"time_query":time_query, "hours_range":$("#hours_range").val()}, + success: function(jdata) + { + var content_arr = []; + for(idx in jdata) + { + content_arr = content_arr.concat([ + "", jdata[idx]['io_name'], + "", jdata[idx]['io_time'], + "" + ]); + + // 車辨失敗可新增車號 + content_arr = content_arr.concat([ + '車辨失敗
' + ]); + + content_arr = content_arr.concat([ + "", jdata[idx]['etag'], + "", jdata[idx]['owner'], + "", + "" + ]); + } + + $("#carin_query_tbody").html(content_arr.join('')); + + + $('.carin_resize').hover + ( + function() + { + pos_x = $(this).position().left; + pos_y = $(this).position().top; + + $("#works").css + ({ "position":"absolute", + "top":pos_y, + "left":pos_x + }).html("").show(); + }, + function() + { + $("#works").hide(); + } + ); + + $("#carin_query_list").show(); + } + }); +} + function member_modify(member_no) @@ -1705,7 +1791,7 @@ $(document).ready(function() // Custom: altob-input // ******************** - $('#cms_lpr').keyboard({ + $('#upd_cario_lpr, #cms_lpr').keyboard({ usePreview: false, @@ -1877,7 +1963,6 @@ function logout(event) }); } - @@ -1966,7 +2051,6 @@ function show_create_cario_dialog() AltobObject.xvars["create_cario_info"] = {}; AltobObject.xvars["create_cario_info"]["station_no"] = AltobObject.station_no; - AltobObject.xvars["create_cario_info"]["cmd"] = 1; $("#create_cario_station_name").text(AltobObject.station_name); $("#create_cario_station_no").text(AltobObject.station_no); @@ -1997,7 +2081,6 @@ function do_create_cario() if (!confirm("確認資料無誤並送出 ?")) return false; var station_no = AltobObject.xvars["create_cario_info"]["station_no"]; - var cmd = AltobObject.xvars["create_cario_info"]["cmd"]; var io = $("#sel_cms_io_" + station_no).val(); var ctype = $("#sel_cms_ctype_" + station_no).val(); var lpr = $("#cms_lpr").val(); @@ -2015,7 +2098,7 @@ function do_create_cario() type:"post", data: { - "cmd":cmd, + "cmd": 1, "station_no":station_no, "ivsno": 0, // 都帶 0 "io":io, @@ -2046,3 +2129,151 @@ function do_create_cario() $('#show_create_cario_dialog').modal('hide'); } + + + + + + + + + + + + + + + + + + + + + + + +