public function ActionEffect()
 {
     if (isset($_REQUEST['start_time']) && $_REQUEST['start_time']) {
         $date_start = strtotime($_REQUEST['start_time']);
     } else {
         $prev = time() - 86400;
         $date_start = mktime(0, 0, 0, date("n", $prev), date("j", $prev), date("Y", $prev));
         $_REQUEST['start_time'] = date('Y-m-d H:i', $date_start);
     }
     if (isset($_REQUEST['end_time']) && $_REQUEST['end_time']) {
         $date_end = strtotime($_REQUEST['end_time']);
     } else {
         $date_end = time();
         $_REQUEST['end_time'] = date('Y-m-d H:i', $date_end);
     }
     // $db = Events::model()->getDbConnection();
     // $c = Events::model()->getCompanyId();
     $time_slice = $this->getSliceData($date_start, $date_end);
     $event_fields = array(8 => 'wbrknum', 2 => 'sbrknum', 1 => 'tbrknum');
     $skip_keys = array('name', 'max_ts', 'min_ts');
     $stop_events = array(1, 4, 8);
     $other_events = array(2);
     $n = count($time_slice);
     foreach ($time_slice as $k => $slice) {
         //$slice = $time_slice[$i];
         $stop_time = 0;
         $other_time = 0;
         $all_time = 0;
         foreach ($slice as $key => $value) {
             if (is_numeric($key)) {
                 //!in_array($key, $skip_keys)
                 if (in_array($key, $stop_events)) {
                     $stop_time += $value['time_len'];
                 }
                 if (in_array($key, $other_events)) {
                     $other_time += $value['time_len'];
                 }
                 $all_time += $value['time_len'];
                 if (isset($event_fields[$key])) {
                 }
             }
         }
         //print_r($slice);
         $time_slice[$k]['stop_times'] = $time_slice[$k]['wbrknum'] + $time_slice[$k]['sbrknum'] + $time_slice[$k]['tbrknum'] + $time_slice[$k]['obrknum'];
         $time_slice[$k]['all_time0'] = $slice['max_ts'] - $slice['min_ts'];
         $time_slice[$k]['all_time'] = $all_time;
         $time_slice[$k]['stop_time'] = $stop_time;
         $time_slice[$k]['other_time'] = $other_time;
         if ($all_time > 0) {
             $time_slice[$k]['efficiency'] = ($all_time - $stop_time) / $all_time;
         }
     }
     /////////////////
     if (false) {
         $objPHPExcel = new PHPExcel();
         // $objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
         // $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
         // $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
         // $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
         // $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
         $objPHPExcel->setActiveSheetIndex(0);
         // $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
         // $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
         // $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
         // $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');
         //setCellValueByColumnAndRow( [string $pColumn = 0], [string $pRow = 1], [mixed $pValue = null], [bool $returnCell = false])
         $objPHPExcel->setCellValueByColumnAndRow(0, 1, '机台');
         $objPHPExcel->setCellValueByColumnAndRow(1, 1, '运转效率');
         $objPHPExcel->setCellValueByColumnAndRow(2, 1, '总停时间');
         $objPHPExcel->setCellValueByColumnAndRow(3, 1, '总停次数');
         $objPHPExcel->setCellValueByColumnAndRow(4, 1, '违停时间');
         $objPHPExcel->setCellValueByColumnAndRow(5, 1, '违停次数');
         $objPHPExcel->setCellValueByColumnAndRow(6, 1, '经停时间');
         $objPHPExcel->setCellValueByColumnAndRow(7, 1, '经停次数');
         $objPHPExcel->setCellValueByColumnAndRow(8, 1, '耳丝停时间');
         $objPHPExcel->setCellValueByColumnAndRow(9, 1, '耳丝停次数');
         $objPHPExcel->setCellValueByColumnAndRow(10, 1, '其他停时间');
         $objPHPExcel->setCellValueByColumnAndRow(11, 1, '其他停次数');
         $i = 1;
         foreach ($time_slice as $k => $slice) {
             $i++;
             $objPHPExcel->setCellValueByColumnAndRow(0, 1, $slice['name']);
             $f = '--';
             if (isset($slice['efficiency'])) {
                 $f = sprintf("%.2f", $slice['efficiency'] * 100) . '%';
             }
             $objPHPExcel->setCellValueByColumnAndRow(1, $i, $f);
             $objPHPExcel->setCellValueByColumnAndRow(2, $i, $slice['stop_time']);
             $objPHPExcel->setCellValueByColumnAndRow(3, $i, $slice['stop_times']);
             $objPHPExcel->setCellValueByColumnAndRow(4, $i, isset($slice[8]) ? $slice[8]['time_len'] : '--');
             $objPHPExcel->setCellValueByColumnAndRow(5, $i, $slice['wbrknum']);
             $objPHPExcel->setCellValueByColumnAndRow(6, $i, isset($slice[1]) ? $slice[1]['time_len'] : '--');
             $objPHPExcel->setCellValueByColumnAndRow(7, $i, $slice['tbrknum']);
             $objPHPExcel->setCellValueByColumnAndRow(8, $i, isset($slice[2]) ? $slice[2]['time_len'] : '--');
             $objPHPExcel->setCellValueByColumnAndRow(9, $i, $slice['sbrknum']);
             $objPHPExcel->setCellValueByColumnAndRow(10, $i, $slice['other_time']);
             $objPHPExcel->setCellValueByColumnAndRow(11, $i, $slice['obrknum']);
         }
         $objPHPExcel->setCellValueByColumnAndRow(0, 1, '');
         // $objPHPExcel->getActiveSheet()->setTitle('Simple');
         $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
         // $objWriter->save(str_replace('.php', '.xlsx', __FILE__));
         echo $objWriter->save();
         Yii::app()->end();
     } else {
         //TODO
         $viewName = 'effect';
         $this->render($viewName, array('time_slice' => $time_slice));
     }
 }