Pārlūkot izejas kodu

upd

station_14109
altob.rd pirms 8 gadiem
vecāks
revīzija
eada8cd9f4
5 mainītis faili ar 426 papildinājumiem un 61 dzēšanām
  1. +84
    -41
      controllers/Carpark.php
  2. +18
    -6
      controllers/Cars.php
  3. +54
    -1
      models/Carpark_model.php
  4. +27
    -1
      models/Cars_model.php
  5. +243
    -12
      views/carpark/main_page.php

+ 84
- 41
controllers/Carpark.php Parādīt failu

@@ -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()


+ 18
- 6
controllers/Cars.php Parādīt failu

@@ -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'; // 顯示上傳錯誤


+ 54
- 1
models/Carpark_model.php Parādīt failu

@@ -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']}(入)<br>{$rows['out_time']}(出)<br>{$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)


+ 27
- 1
models/Cars_model.php Parādīt failu

@@ -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));
}
}


+ 243
- 12
views/carpark/main_page.php Parādīt failu

@@ -565,19 +565,32 @@
<td style="text-align:left;"><input type="text" id="lpr_query" name="lpr_query" class="form-control" style="text-transform:uppercase" placeholder="請至少輸入四碼" /></td>
<td style="text-align:left;"><input type="button" name="lpr_query" value="查詢" onclick="carin_lpr_query();" /></td>
</tr>
<tr>
<!--tr>
<td style="text-align:right;">時間</td>
<td style="text-align:left;">
<input type="datetime-local" id="carin_time_query" />&nbsp;&nbsp;前後範圍
<select name="minutes_range" id="minutes_range">
<option value="10" selected>10分鐘</option>
<option value="15">15分鐘</option>
<option value="20">20分鐘</option>
<option value="30">30分鐘</option>
<option value="10" selected>10分鐘</option>
<option value="15">15分鐘</option>
<option value="20">20分鐘</option>
<option value="30">30分鐘</option>
</select>
</td>
<td style="text-align:left;"><input type="button" value="查詢" onclick="carin_time_query();" /></td>
</tr>
</tr-->
<tr>
<td style="text-align:right;">入場<br/>車辨失敗</td>
<td style="text-align:left;">
<input type="datetime-local" id="carin_none_query"/>&nbsp;&nbsp;前後範圍
<select name="hours_range" id="hours_range">
<option value="1" selected>1小時</option>
<option value="3">3小時</option>
<option value="12">12小時</option>
<option value="24">24小時</option>
</select>
</td>
<td style="text-align:left;"><input type="button" value="查詢" onclick="carin_none_query();" /></td>
</tr>
</table>
</div><?php /* ----- end of dataTable_wrapper ----- */?>
<!--div id="carin_query_list" class="dataTable_wrapper" style="display:none;"-->
@@ -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('<span style="font-size:16px;">車辨失敗</span><br/><button class="btn-default" onclick="show_upd_cario_dialog(' + jdata[idx]['cario_no'] + ', \'' + jdata[idx]['lpr'] + '\');">輸入車號</button>');
else
$("#cario_"+idx+">[data-tag=lpr]").html('<span style="font-size:28px;">' + jdata[idx]['lpr'] +'</span>');
$("#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: "<?=APP_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([
"<tr><td style='text-align:center;vertical-align:middle;'>", jdata[idx]['io_name'],
"</td><td style='text-align:center;vertical-align:middle;'>", jdata[idx]['io_time'],
"</td><td style='text-align:center;vertical-align:middle;'>"
]);
// 車辨失敗可新增車號
content_arr = content_arr.concat([
'<span style="font-size:16px;">車辨失敗</span><br/><button class="btn-default" onclick="show_upd_cario_dialog(', jdata[idx]['cario_no'], ', \'', jdata[idx]['lpr'], '\');">輸入車號</button>'
]);
content_arr = content_arr.concat([
"</td><td style='text-align:center;vertical-align:middle;'>", jdata[idx]['etag'],
"</td><td style='text-align:center;vertical-align:middle;'>", jdata[idx]['owner'],
"</td><td style='text-align:center;vertical-align:middle;'>",
"<img height='57' width='150' class='carin_resize' src='", jdata[idx]['pic_name'], "' /></td></tr>"
]);
}
$("#carin_query_tbody").html(content_arr.join(''));
<?php /* mouse滑過時放大照片 */ ?>
$('.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("<img src='"+$(this).attr("src")+"' width='300px' height='140px' />").show();
},
function()
{
$("#works").hide();
}
);
$("#carin_query_list").show();
}
});
}

<?php /* 修改或刪除選項 */ ?>
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)
});
}


</script>


@@ -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');
}
</script>



<!-- ----- 進出資料修改小框 ----- -->
<div class="modal fade" id="show_upd_cario_dialog">
<div class="modal-dialog" style="width:70%;height:100%">
<div class="modal-content" style="width:70%;height:100%">
<div class="modal-header"><h3>手動建立資料</h3></div>
<div class="modal-body" style="max-height: calc(100vh - 210px); overflow-y: auto">
<form id="show_upd_cario_form" class="center-block">
<div class="main">
<div class="dataTable_wrapper">
<table class="table table-striped table-bordered table-hover" style="font-size:28px;">
<tbody>

<tr class="form-group">
<td style="text-align:right;">場站</td>
<td style="text-align:left;" id="upd_cario_station_name"></td>
</tr>
<tr class="form-group">
<td style="text-align:right;">場站編號</td>
<td style="text-align:left;" id="upd_cario_station_no"></td>
</tr>
<tr class="form-group">
<td style="text-align:right;">車牌號碼</td>
<td style="text-align:left;">
<input id="upd_cario_lpr" name="lpr" class="form-control" placeholder="限英數字碼" style="text-transform:uppercase;font-size:48px;height:56px;" />
</td>
</tr>


</tbody>
</table>
<button type="button" class="btn btn-large btn-success pull-right" style="font-size:22px;" onclick="do_upd_cario();">確認送出</button>
&nbsp;&nbsp;
<button type="button" class="btn btn-large btn-cancel" onclick="$('#show_upd_cario_dialog').modal('hide');">取消</button>
</div><!-- ----- end of dataTable_wrapper ----- -->
</div><!-- ----- end of main ----- -->
</form>
</div><!-- end of modal-body -->
</div><!-- end of modal-content -->
</div><!-- end of modal-dialog -->
</div><!-- end of modal show -->
<!-- ----- 進出資料修改小框(結束) ----- -->



<script>

// 顯示新增車辨記錄
function show_upd_cario_dialog(cario_no, lpr)
{
if(typeof AltobObject.station_no == 'undefined' || AltobObject.station_no == '' || AltobObject.station_no == 0)
{
alertify_msg("尚未設定場站。。");
return false;
}
if(typeof AltobObject.xvars == 'undefined')
{
alertify_msg("未知的錯誤。。");
return false;
}

AltobObject.xvars["upd_cario_info"] = {};
AltobObject.xvars["upd_cario_info"]["station_no"] = AltobObject.station_no;
AltobObject.xvars["upd_cario_info"]["cario_no"] = cario_no;
AltobObject.xvars["upd_cario_info"]["old_lpr"] = lpr;

$("#upd_cario_station_name").text(AltobObject.station_name);
$("#upd_cario_station_no").text(AltobObject.station_no);
// 車號
if(lpr == 'NONE')
$("#upd_cario_lpr").val('');
else
$("#upd_cario_lpr").val(lpr);
$("#show_upd_cario_dialog").modal({backdrop:false,keyboard:false});
}
// 完成
function do_upd_cario()
{
if (!confirm("確認資料無誤並送出 ?")) return false;
var station_no = AltobObject.xvars["upd_cario_info"]["station_no"];
var cario_no = AltobObject.xvars["upd_cario_info"]["cario_no"];
var old_lpr = AltobObject.xvars["upd_cario_info"]["old_lpr"];
var new_lpr = $("#upd_cario_lpr").val();
if(!(station_no && cario_no))
{
alertify_msg("資料不足。。");
return false;
}
$.ajax
({
url: "<?=APP_URL?>local_lprio",
dataType: "text",
type:"post",
data:
{
"cmd": 2,
"station_no":station_no,
"cario_no":cario_no,
"old_lpr":old_lpr,
"new_lpr":new_lpr
},
error:function(xhr, ajaxOptions, thrownError)
{
alertify_msg(xhr.responseText);
console.log("error:"+xhr.responseText+"|"+ajaxOptions+"|"+thrownError);
},
success:function(jdata)
{
if (jdata == "ok")
{
alertify_msg("操作完成。。");
show_item('cario_list', 'cario_list'); // 更新
}
else
{
alertify_msg("操作失敗。。" + jdata);
}
}
});
delete AltobObject.xvars["upd_cario_info"];
$('#show_upd_cario_dialog').modal('hide');
}
</script>















Notiek ielāde…
Atcelt
Saglabāt