Ejemplo n.º 1
0
 public function actionDump()
 {
     Yii::import('ext.yiiexcel.YiiExcel', true);
     Yii::registerAutoloader(array('YiiExcel', 'autoload'), true);
     $root = dirname(dirname(dirname(__FILE__)));
     $ts = (int) (time() / 100);
     $filePath = $root . "/download/{$ts}.xlsx";
     if (file_exists($filePath)) {
         header("Location: /download/{$ts}.xlsx");
         echo "Cache: hit";
         exit;
     }
     $model = new Jmuser('search');
     $model->unsetAttributes();
     // clear any default values
     $model->attributes = array();
     $data = $model->search();
     $data->setPagination(false);
     $objPHPExcel = new PHPExcel();
     $row = 1;
     $base = 0;
     $labels = $model->attributeLabels();
     foreach (Jmuser::dumpFields() as $col => $field) {
         $name = isset($labels[$field]) ? $labels[$field] : $field;
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $name);
         $base += 1;
     }
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($base, $row, "出生日期");
     $base += 1;
     foreach (Jmuser::extraFields() as $col => $field) {
         $name = isset($labels[$field]) ? $labels[$field] : $field;
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($base, $row, $name);
         $base += 1;
     }
     foreach (Jmuser::paperFields() as $col => $field) {
         $name = isset($labels[$field]) ? $labels[$field] : $field;
         $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($base, $row, $name);
         $base += 1;
     }
     //var_dump($cnt, $data->getItemCount(),  $data->getTotalItemCount());
     $users = $data->getData(array("order" => "sysID"));
     foreach ($users as $key => $user) {
         // echo  "{$row}/" . count($users) . " " . $user->oa . "\n";
         $row += 1;
         $base = 0;
         foreach (Jmuser::dumpFields() as $col => $field) {
             $val = $user->{$field};
             $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col, $row);
             $cell->setValueExplicit($val, PHPExcel_Cell_DataType::TYPE_STRING);
             $base += 1;
         }
         $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($base, $row);
         $cell->setValueExplicit(substr($user->idcard, 6, 8));
         $base += 1;
         $extra = json_decode($user->extra, true);
         foreach (Jmuser::extraFields() as $col => $field) {
             $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($base, $row);
             $cell->setValueExplicit($extra[$field], PHPExcel_Cell_DataType::TYPE_STRING);
             $base += 1;
         }
         $paper = json_decode($user->paper, true);
         foreach (Jmuser::paperFields() as $col => $field) {
             $cell = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($base, $row);
             if (isset($paper[$field])) {
                 $cell->setValueExplicit($paper[$field], PHPExcel_Cell_DataType::TYPE_STRING);
             }
             $base += 1;
         }
     }
     $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
     $objWriter->save($filePath);
     header("Location: /download/{$ts}.xlsx");
 }
Ejemplo n.º 2
0
 public function actionP4()
 {
     $id = strtoupper(Yii::app()->getUser()->getName());
     $model = Jmuser::model()->findByPk($id);
     if (!$model) {
         $this->redirect('?r=site');
         return;
     }
     $errorMessage = "";
     $routeCount = Jmroute::getRouteCount($model->wave);
     $extra = json_decode($model->extra, true);
     if (isset($_POST['LoginForm'])) {
         $extra = $_POST['Extra'];
         $form = $_POST['LoginForm'];
         $translate = $model->attributeLabels();
         foreach ($form as $k => $v) {
             $model->{$k} = $v;
             if (empty($v)) {
                 $fieldName = isset($translate[$k]) ? $translate[$k] : $k;
                 $errorMessage = "所有信息均为必填,缺少信息: " . $fieldName;
             }
         }
         foreach (Jmuser::extraFields() as $idx => $f) {
             if (empty($extra[$f])) {
                 $fieldName = isset($translate[$f]) ? $translate[$f] : $f;
                 $errorMessage = "所有信息均为必填,缺少信息: {$fieldName}";
             }
         }
         $model->extra = json_encode($extra);
         if (empty($errorMessage)) {
             $luxian = $extra['luxian'];
             if ($routeCount[$luxian] <= 0) {
                 $errorMessage = "路线选择失败";
             } else {
                 if ($model->save()) {
                     Jmroute::setRoute($model->wave, $id, $extra['luxian']);
                     $this->redirect('?r=site/p5');
                     return;
                 }
                 $errorMessage = "保存失败 :(";
             }
         }
     }
     $model->extra = $extra;
     $this->renderPartial('p4', array('user' => $model, 'error' => $errorMessage, 'route' => $routeCount));
 }