NoWriteListController.class.php
3.93 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
<?php
/**
* 【调研中心-后台】21_未填写人员数据导出
* NoWriteListController.class.php
* CreateBy:dj
* Date:2017-03-08
*/
namespace Apicp\Controller\Export;
use Common\Service\AnswerService;
use Common\Service\BaseinfoService;
use Common\Service\RightService;
class NoWriteListController extends \Apicp\Controller\AbstractController
{
// 导出excel文件名
const EXAM_XLS_FILE_NAME = '调研未填写人员数据';
/** @var BaseinfoService */
protected $base_info_s;
public function before_action($action = '')
{
if (parent::before_action($action) === false) {
return false;
}
// 实例化调研基本信息Service
$this->base_info_s = new BaseinfoService();
return true;
}
public function Index()
{
// 调研id
$qu_id = trim(I('post.qu_id'));
// 调研基本信息
$data = $this->base_info_s->get($qu_id);
// 实例化权限Service
$right_s = new RightService();
// 获取调研可填写全部人员
$all_users = $right_s->list_user($qu_id, $data['is_all']);
// 实例化调研填写信息Service
$answer_s = new AnswerService();
// 查询已经参与调研的记录信息
$join_list = $answer_s->list_by_conds(['qu_id' => $qu_id]);
// 已填写人员uid集合
$join_users = [];
if (!empty($join_list)) {
$join_users = array_unique(array_column($join_list, 'uid'));
}
// 未填写人员uid集合
$no_join_users = array_diff($all_users, $join_users);
sort($no_join_users);
// 未填写人员列表
$user_list = [];
if (!empty($no_join_users)) {
// 查询用户列表,将用户列表转换成以用户uid为主键的二维数组
$user_list = $this->base_info_s->getUser($no_join_users);
}
// 序号
$i = 1;
// 未填写人员信息
$no_join_list = [];
// 遍历组装未参加人员返回数据
foreach ($user_list as $_v) {
// 组织名称
$dp_name = '';
// 组织名称赋值
if (!empty($_v['dpName'])) {
$arr_dp_name = array_column($_v['dpName'], 'dpName');
$dp_name = implode(',', $arr_dp_name);
}
$no_join_list[] = [
'num' => $i, // 序号
'memUsername' => $_v['memUsername'],// 姓名
'dp_name' => $dp_name, // 组织
'memJob' => $_v['memJob'], // 岗位
'memRole' => $_v['memRole'], // 角色
'memMobile' => $_v['memMobile'] // 手机号
];
$i++;
}
$this->export($no_join_list, $data);
return true;
}
/**
* 数据导出
* @param array $list 导出的数据
* @param array $data 调研详情
*/
private function export($list = [], $data = [])
{
// Excel 表头
$params['title'] = [
'序号',
'姓名',
'组织',
'岗位',
'角色',
'手机号'
];
// Excel 数据行
$params['rows'] = [];
// 数据处理
foreach ($list as $v) {
$params['rows'][] = [
$v['num'],
$v['memUsername'],
$v['dp_name'],
$v['memJob'],
$v['memRole'],
$v['memMobile']
];
}
// 文件名
$file_name = $data['title'] . '_' . self::EXAM_XLS_FILE_NAME . rgmdate(MILLI_TIME, '_YmdHis');
// 下载
$this->base_info_s->download($params, $file_name, $this->_login->user['eaId'], $this->_login->user['eaRealname']);
}
}