- <?php
-
- /**
- * @author yusf
- * @copyright 2020
- */
- function exportedList(){
-
- $ids=$_REQUEST['ids'];
- $sql_se="";
- $sql = $_SESSION['callList_condition'] ;
- $order = $_SESSION['callList_order'];
-
- if(!empty($ids) && $ids != "" ){
- $sql_se = " select * from ($sql) as t where call_uuid in (".$ids.") $order ";
- }else{
- $sql_se = " select * from ($sql) as t $order ";
- }
-
- ob_end_clean();
- ob_start();
- header ( "Content-type:application/vnd.ms-excel" );
- header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GB18030", "话单导出记录" ) . ".csv" );
- //不段的刷新缓冲期,来实现大数据流的导出
- $fp = fopen('php://output', 'a');
-
- $title = array('caller_id_number' => "被叫号码", 'start_stamp' => "开始时间", 'end_stamp'=> "结束时间",'answer_stamp'=>"应答时间", 'billsec' => "接听时长",'app_billing_unit' => "计费单元",'billing_type'=>'计费类型','bill_num'=>'计费次数','bill_total'=>"费用",'hangup_cause'=>'挂机原因','call_key'=>"客户按键",'requests_text'=>"推送结果",'call_pbx_node'=>"呼叫节点");
-
- // 输出Excel列名信息$head = array("电子邮件");
- foreach ($title as $i => $v) {
- // CSV的Excel支持GBK编码,一定要转换,否则乱码
- $head[$i] = iconv('utf-8', 'gbk', $v);
- }
-
- fputcsv($fp, $head);
-
- // 计数器
- $cnt = 0;
- // 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
- $limit = 1000;
-
- $db = DBHelper::loadDB();
- $sum = $db->getOne("select count(1) as count from ($sql) as t ");
-
- $limit = 1000;
-
-
-
- if($sum) {
- $iEnd = ceil($sum / $limit);
-
- for ($i = 0; $i < $iEnd; $i++) {
-
- $dataList = $db->getAll($sql_se. " limit " . strval($i * $limit) . "," . $limit);
-
- foreach($dataList as $key=>$val){
-
- $cnt++;
- if (3000 == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
- ob_flush();
- flush();
- $cnt = 0;
- }
-
-
- $row[]=@iconv('utf-8', 'gbk', $val['caller_id_number']);
-
- $row[]=@iconv('utf-8', 'gbk', $val['start_stamp']);
-
- $row[]=@iconv('utf-8', 'gbk', $val['end_stamp']);
-
- $row[]=@iconv('utf-8', 'gbk', $val['answer_stamp']);
-
- $row[]=$this->changeTimeType($val['billsec']);
-
- $row[]=@iconv('utf-8', 'gbk', $val['app_billing_unit']);
-
- if($val['billing_type']==1){
- $row[]=@iconv('utf-8', 'gbk',"6秒计费");
- }else if($val['billing_type']==2){
- $row[]=@iconv('utf-8', 'gbk',"1分钟计费");
- }else if($val['billing_type']==3){
- $row[]=@iconv('utf-8', 'gbk',"18秒计费");
- }else if($val['billing_type']==4){
- $row[]=@iconv('utf-8', 'gbk',"12秒计费");
- }else{
- $row[]="";
- }
-
- $row[]=@iconv('utf-8', 'gbk', $val['bill_num']);
-
- $row[]=@iconv('utf-8', 'gbk', $val['bill_total']);
-
- $h="";
- if($val['hangup_cause']=="NORMAL_CLEARING"){
- $h="正常挂断";
- }else if($val['hangup_cause']=="CAlL_REJECTED"){
- $h="用户拒绝";
- }else if($val['hangup_cause']=="NO_ANSWER"){
- $h="用户无应答";
- }else if($val['hangup_cause']=="NO_USER_RESPONSE"){
- $h="用户无响应";
- }else if($val['hangup_cause']=="NONE"){
- $h="正常挂断";
- }else if($val['hangup_cause']=="NORMAL_TEMPORARY_FAILURE"){
- $h="呼叫线路超时";
- }else if($val['hangup_cause']=="NORMAL_UNSPECIFIED"){
- $h="线路不通";
- }else if($val['hangup_cause']=="RECOVERY_ON_TIMER_EXPIRE"){
- $h="媒体超时";
- }else if($val['hangup_cause']=="UNALLOCATED_NUMBER"){
- $h="线路不通";
- }else if($val['hangup_cause']=="USER_BUSY"){
- $h="用户忙";
- }else{
- $h="呼叫未应答";
- }
- $row[]=@iconv('utf-8', 'gbk', $h);
-
-
- $row[]=@iconv('utf-8', 'gbk', $val['call_key']);
- $row[]=@iconv('utf-8', 'gbk', $val['requests_text']);
- $row[]=@iconv('utf-8', 'gbk', $val['call_pbx_node']);
-
- fputcsv($fp, $row);
- unset($row);
-
- }
-
- }
-
- }
- exit();
- }
-
- ?>
发表评论