StatisticsController.class.php
3.44 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
<?php
/**
* 管理后台-首页
* CreateBy:zs_anything
* Date:2016-01-03
*
*/
namespace Apicp\Controller\HomePage;
use Common\Common\Department;
use VcySDK\Member;
use VcySDK\Service;
use VcySDK\Adminer;
class StatisticsController extends AbstractController
{
/**
* 在职状态:实习
*/
const ACTIVE_TYPE_INTERNSHIP = 2;
/**
* 在职状态:试用
*/
const ACTIVE_TYPE_PROBATION = 3;
/**
* 在职状态:正式
*/
const ACTIVE_TYPE_FORMAL = 1;
/**
* 在职状态:离职
*/
const ACTIVE_TYPE_QUIT = 4;
/**
* 在职状态: 退休
*/
const ACTIVE_TYPE_RETIRE = 5;
/**
* VcySDK 用户操作类
*
* @type Member
*/
protected $_mem;
/**
* VcySDK 部门操作类
*
* @type Department
*/
protected $_department;
protected $_serv;
public function before_action($action = ''){
if (! parent::before_action($action)) {
return false;
}
$this->_serv = &Service::instance();
$this->_department = new Department();
$this->_mem = new Member($this->_serv);
return true;
}
public function Index_post()
{
$adminerSdk = new Adminer($this->_serv);
// 管理员、角色统计
$adminerAndRoleTotal = $adminerSdk->adminerAndRoleTotal();
$memSdk = new Member($this->_serv);
// 人员统计
$memRelevantTotal = $memSdk->memberRelevantTotal();
// 人员在职情况, 按照在职类型统计(1:正式 2:实习 3:试用 4:离职 5:退休)
$memActiveTotal = $memSdk->memberActiveTotal();
if(!empty($memActiveTotal)){
foreach ($memActiveTotal as $key => &$v) {
switch ($v['memActive']) {
case self::ACTIVE_TYPE_FORMAL:
$v['memJobName'] = "正式";
break;
case self::ACTIVE_TYPE_INTERNSHIP:
$v['memJobName'] = "实习";
break;
case self::ACTIVE_TYPE_PROBATION:
$v['memJobName'] = "试用";
break;
case self::ACTIVE_TYPE_QUIT:
$v['memJobName'] = "离职";
break;
case self::ACTIVE_TYPE_RETIRE:
$v['memJobName'] = "退休";
break;
default:
$v['memJobName'] = "未知";
break;
}
}
}
// 按人员数量降序排列
$allDep = $this->_department->listAll();
multi_array_sort($allDep, array_column($allDep, 'user_total'), SORT_NUMERIC, SORT_DESC);
foreach ($allDep as &$item) {
$item = [
'dpId' => $item['dpId'],
'dpName' => $item['dpName'],
'isChildDepartment' => $item['isChildDepartment'],
'order' => $item['dpDisplayorder'],
'user_total' => $item['departmentMemberCount'],
'dept_level' => $item['dpLevel'],
];
}
$this->_result = array(
'member' => $memRelevantTotal,
'adminer' => $adminerAndRoleTotal,
'memActiveGroup' => $memActiveTotal,
'departments' => array_values($allDep)
);
return true;
}
}