<?php /** * 【调研中心-后台】22_导出问题的回答列表 * AnswerListController.class.php * CreateBy:dj * Date:2017-03-08 */ namespace Apicp\Controller\Export; use Com\PythonExcel; use Common\Common\ExportDownload; use Common\Common\User; use Common\Service\AnswerService; use Common\Service\BaseinfoService; use Common\Service\QuestionService; use Common\Service\RecordService; class AnswerListController extends \Apicp\Controller\AbstractController { // 导出excel文件名 const QUESTIONNAIRE_XLS_FILE_NAME = '调研已填写记录数据'; public function Index() { // 问题id $q_id = trim(I('post.q_id')); // 实例化调研问题信息Service $question_s = new QuestionService(); // 问题信息 $q_data = $question_s->get($q_id); // 实例化调研基本信息Service $baseinfo_s = new BaseinfoService(); // 调研基本信息 $qu_data = $baseinfo_s->get($q_data['qu_id']); if (!in_array($q_data['q_type'], [4, 5, 6, 7, 8, 13, 15, 16, 17, 18, 19, 20, 21, 22])) { return true; } // 实例化调研回答详情信息Service $record_s = new RecordService(); // 获取问题的回答详情 $record_list = $record_s->list_by_conds(['q_id' => $q_id]); $list = []; // 匿名 if (BaseinfoService::ANONYMOUS == $qu_data['anonymous']) { $i = 1; foreach ($record_list as $v) { // 排序 $list[] = [ $i, // 序号 '', // 部门 '匿名' . $i, // 姓名 '', // 邮箱 '', // 手机 $v['answer'] . ' ' . $v['other'], rgmdate(strval($v['created']), 'Y-m-d H:i') ]; $i++; } } else { // 实例化调研回答用户记录Service $answer_s = new AnswerService(); // 获取问题的回答记录 $answer_list = $answer_s->list_by_conds(['qu_id' => $q_data['qu_id']]); // 组成以回答ID为主键的二维数组 $answer_list = array_combine_by_key($answer_list, 'a_id'); // 获取回答该调研的用户的ID集合 $uids = array_column($answer_list, 'uid'); $user = User::instance(); // 查询用户列表 $user_list = $user->listAll(['memUids' => $uids]); // 组成以用户ID为主键的二维数据 $user_list = array_combine_by_key($user_list, 'memUid'); // 序号 $i = 1; foreach ($record_list as $v) { if ($v['answer'] == '' && $v['other'] == '') { // 如果答案为空,则不导出该条记录 continue; } // 获取当前的回答记录 $answer_data = $answer_list[$v['a_id']]; // 获取用户信息和部门 $user_data = []; $dp_name = ''; if (!empty($answer_data['uid'])) { $user_data = $user_list[$answer_data['uid']]; $dp_list = $user_data['dpName']; if (!empty($dp_list)) { $dp_names = array_column($dp_list, 'dpName'); $dp_name = implode(',', $dp_names); } } $list[] = [ $i, // 序号 $dp_name, // 部门 !empty($user_data['memUsername']) ? $user_data['memUsername'] : $answer_data['username'], // 姓名 !empty($user_data['memEmail']) ? $user_data['memEmail'] : '', // 邮箱 !empty($user_data['memMobile']) ? $user_data['memMobile'] : '', // 手机 $v['answer'] . ' ' . $v['other'], rgmdate(strval($v['created']), 'Y-m-d H:i') ]; $i++; } } $this->_download($q_data, $list); return true; } /** * 导出模板信息 * * @param array $q_data 问题基本信息 * @param array $list 问题列表 */ private function _download($q_data, $list) { $fileName = $q_data['q_title'] . date('_YmdHi'); $titles = ['序号', '组织', '姓名', '邮箱', '手机', '填写内容', '填写时间']; // 生成Excel 下载 $real_path = get_data_dir('Excel') . $fileName . '.xls'; $ret = PythonExcel::instance()->write($real_path, $titles, $list); if ($ret) { // 数据写入到下载中心 $conditon = [ 'title' => $fileName, 'ea_id' => $this->_login->user['eaId'], 'type' => ExportDownload::EXCEL_TYPE, 'size' => filesize($real_path), 'url' => $real_path, 'username' => $this->_login->user['eaRealname'], 'app_dir' => APP_DIR ]; ExportDownload::insert_down_load($conditon); } } }