AnswerListController.class.php
5.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?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);
}
}
}