User.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. <?php
  2. namespace app\api\controller\screen;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. class User extends Index
  6. {
  7. // 项目大屏--员工数据分析
  8. public function userCate(){
  9. $lists = model('WorkTypeMode')->getWorkerUserStatistics($this->orgId);
  10. $data = [];
  11. foreach ($lists as $v){
  12. $data[] = [
  13. 'name' => $v['name'],
  14. 'value' => $v['count']
  15. ];
  16. }
  17. HelpHander::success($data);
  18. }
  19. // 项目大屏--员工好评度排名
  20. public function userPraise(){
  21. $allUids = model('WorkTypeMode')->getWorkerUserIds($this->orgId);
  22. $users = [];
  23. if($allUids){
  24. $users = Db::name('user')
  25. ->where('id','in',$allUids)
  26. ->order('score desc,id asc')
  27. ->field('id,real_name')
  28. ->limit(10)
  29. ->select();
  30. $users = $users?$users:[];
  31. }
  32. $data = [];
  33. $host = request()->domain(true);
  34. foreach ($users as $k=>$v){
  35. if($k == 0){
  36. $top = '<img src="'.$host.'/img/org-top1.png" width="35" style="margin-top:5px">';
  37. }else if($k == 1){
  38. $top = '<img src="'.$host.'/img/org-top2.png" width="35" style="margin-top:5px">';
  39. }else if($k == 2){
  40. $top = '<img src="'.$host.'/img/org-top3.png" width="35" style="margin-top:5px">';
  41. }else{
  42. $top = 'TOP'.($k+1);
  43. }
  44. $data[] = [$top,$v['real_name']];
  45. }
  46. HelpHander::success($data);
  47. }
  48. // 项目大屏--员工实时在岗情况
  49. public function userPosition(){
  50. $lists = Db::name('todo')
  51. ->where('todo_mode',3)
  52. ->where('org_id',$this->orgId)
  53. ->where('create_yyyymmdd',date('Ymd'))
  54. ->field('count(*) as count,to_user_id')
  55. ->group('to_user_id')
  56. ->distinct(true)
  57. ->order('count desc,to_user_id asc')
  58. ->select();
  59. $data = [];
  60. foreach ($lists as $k=>$v){
  61. $addr = Db::name('convey_plan_record')
  62. ->alias('cpr')
  63. ->join('address a','a.id = cpr.addr_id')
  64. ->where('user_id',$v['to_user_id'])
  65. ->value('title');
  66. $username = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
  67. $data[] = [$username?$username:'',$v['count'],$addr?$addr:''];
  68. }
  69. HelpHander::success($data);
  70. }
  71. public function userDep(){
  72. $depList = Db::name('dep')->where('enable',1)->where('del',0)->limit(6)->order('id desc')->select();
  73. $data = [];
  74. foreach ($depList as $v){
  75. $data[] = [
  76. 'name' => $v['title'],
  77. 'value' => Db::name('user_dep')->where('dep_id',$v['id'])->count(),
  78. ];
  79. }
  80. HelpHander::success($data);
  81. }
  82. //新项目大屏---在岗人员情况
  83. public function onGuardUserData(){
  84. $type = input('type','');
  85. $pid = 0;
  86. if($type == 1){
  87. $pid = 7;
  88. }elseif ($type == 2){
  89. $pid = 8;
  90. }elseif ($type == 3){
  91. $pid = 6;
  92. }elseif ($type == 4){
  93. $pid = 5;
  94. }elseif ($type == 5){
  95. $pid = 9;
  96. }elseif ($type == 6){
  97. $pid = 11;
  98. }
  99. $rolesId = Db::name('roles')
  100. ->where('parent_id',$pid)
  101. ->where('del',0)
  102. ->where('type',1)
  103. ->where('enable',1)
  104. ->where('org_id',$this->orgId)
  105. ->column('id');
  106. $userCount = Db::name('user')
  107. ->alias('u')
  108. ->field('u.id,u.real_name,ur.roles_id')
  109. ->join('user_roles ur','ur.user_id=u.id')
  110. ->where('u.del',0)
  111. ->where('u.enable',1)
  112. ->whereIn('ur.roles_id',$rolesId)
  113. ->count();
  114. $rolesUser = Db::name('user')
  115. ->alias('u')
  116. ->field('u.id,u.real_name,ur.roles_id')
  117. ->join('user_roles ur','ur.user_id=u.id')
  118. ->where('u.del',0)
  119. ->where('u.enable',1)
  120. ->where('u.work',1)
  121. ->whereIn('ur.roles_id',$rolesId)
  122. ->select();
  123. foreach ($rolesUser as $k=>$v){
  124. $roles = Db::name('roles')->where('id',$v['roles_id'])->find();
  125. $rolesUser[$k]['roles_name'] = Db::name('roles')->where('id',$roles['parent_id'])->value('name');
  126. $rolesUser[$k]['dep_name'] = Db::name('user_dep')
  127. ->alias('ud')
  128. ->join('dep d','d.id=ud.dep_id')
  129. ->where('ud.user_id',$v['id'])
  130. ->where('d.org_id',$this->orgId)
  131. ->value('d.title');
  132. }
  133. $list = [];
  134. foreach ($rolesUser as $k=>$v){
  135. $list[$k][] = $v['roles_name'];
  136. $list[$k][] = $v['dep_name'];
  137. $list[$k][] = $v['real_name'];
  138. }
  139. $data = [
  140. 'userCount'=>$userCount,
  141. 'rolesCount'=>count($rolesUser),
  142. 'list'=>$list
  143. ];
  144. HelpHander::success($data);
  145. }
  146. //人员在岗数据总览
  147. public function orgUserCount(){
  148. $userCount = Db::name('user')
  149. ->alias('u')
  150. ->join('user_org uo','u.id=uo.user_id')
  151. ->where('uo.org_id',$this->orgId)
  152. ->where('u.type',0)
  153. ->where('enable',1)
  154. ->where('del',0)
  155. ->count();
  156. $userPostCount = Db::name('user')
  157. ->alias('u')
  158. ->join('user_org uo','u.id=uo.user_id')
  159. ->where('uo.org_id',$this->orgId)
  160. ->where('u.work',1)
  161. ->where('u.type',0)
  162. ->where('del',0)
  163. ->where('enable',1)
  164. ->count();
  165. $data = [
  166. ['name'=>'总人数','value'=>$userCount],
  167. ['name'=>'在岗人员','value'=>$userPostCount]
  168. ];
  169. HelpHander::success($data);
  170. }
  171. public function rolesUserData(){
  172. $data = [
  173. ['pid'=>8,'name'=>'保洁','value'=>0],
  174. ['pid'=>7,'name'=>'维修','value'=>0],
  175. ['pid'=>5,'name'=>'保安','value'=>0],
  176. ['pid'=>6,'name'=>'运送','value'=>0],
  177. ['pid'=>11,'name'=>'陪护','value'=>0],
  178. ];
  179. foreach ($data as $k=>$v){
  180. $data[$k]['pid'] = Db::name('roles')
  181. ->where('parent_id',$v['pid'])
  182. ->where('del',0)
  183. ->where('type',1)
  184. ->where('enable',1)
  185. ->where('org_id',$this->orgId)
  186. ->column('id');
  187. }
  188. foreach ($data as $k=>$v){
  189. $data[$k]['value'] = Db::name('user')
  190. ->alias('u')
  191. ->join('user_roles ur','ur.user_id=u.id')
  192. ->whereIn('ur.roles_id',$v['pid'])
  193. ->where('u.del',0)
  194. ->where('u.enable',1)
  195. ->count();
  196. unset($data[$k]['pid']);
  197. }
  198. HelpHander::success($data);
  199. }
  200. public function bjUserCountData(){
  201. //保洁
  202. $bjRolesId = Db::name('roles')
  203. ->where('parent_id',8)
  204. ->where('del',0)
  205. ->where('type',1)
  206. ->where('enable',1)
  207. ->where('org_id',$this->orgId)
  208. ->column('id');
  209. $bjCount = Db::name('user')
  210. ->alias('u')
  211. ->join('user_roles ur','ur.user_id=u.id')
  212. ->whereIn('ur.roles_id',$bjRolesId)
  213. ->where('u.del',0)
  214. ->where('u.enable',1)
  215. ->count();
  216. $bjWorkCount = Db::name('user')
  217. ->alias('u')
  218. ->join('user_roles ur','ur.user_id=u.id')
  219. ->whereIn('ur.roles_id',$bjRolesId)
  220. ->where('u.del',0)
  221. ->where('u.enable',1)
  222. ->where('u.work',1)
  223. ->count();
  224. $bl = $bl2 = 0;
  225. if($bjCount > 0){
  226. $bl = round($bjWorkCount/$bjCount*100,1);
  227. $bl2 = 100 - $bl;
  228. }
  229. $data = [
  230. 'count'=>['bjCount'=>$bjCount,'bjWorkCount'=>$bjWorkCount],
  231. 'count2'=>[['value'=>$bl],['value'=>$bl2]],
  232. 'bl'=>$bl
  233. ];
  234. HelpHander::success($data);
  235. }
  236. public function wxUserCountData(){
  237. //维修
  238. $rolesId = Db::name('roles')
  239. ->where('parent_id',7)
  240. ->where('del',0)
  241. ->where('type',1)
  242. ->where('enable',1)
  243. ->where('org_id',$this->orgId)
  244. ->column('id');
  245. $count = Db::name('user')
  246. ->alias('u')
  247. ->join('user_roles ur','ur.user_id=u.id')
  248. ->whereIn('ur.roles_id',$rolesId)
  249. ->where('u.del',0)
  250. ->where('u.enable',1)
  251. ->count();
  252. $workCount = Db::name('user')
  253. ->alias('u')
  254. ->join('user_roles ur','ur.user_id=u.id')
  255. ->whereIn('ur.roles_id',$rolesId)
  256. ->where('u.del',0)
  257. ->where('u.enable',1)
  258. ->where('u.work',1)
  259. ->count();
  260. $bl = $bl2 = 0;
  261. if($count > 0){
  262. $bl = round($workCount/$count*100,1);
  263. $bl2 = 100 - $bl;
  264. }
  265. $data = [
  266. 'count'=>['count'=>$count,'workCount'=>$workCount],
  267. 'count2'=>[['value'=>$bl],['value'=>$bl2]],
  268. 'bl'=>$bl
  269. ];
  270. HelpHander::success($data);
  271. }
  272. public function baUserCountData(){
  273. //保安
  274. $rolesId = Db::name('roles')
  275. ->where('parent_id',5)
  276. ->where('del',0)
  277. ->where('type',1)
  278. ->where('enable',1)
  279. ->where('org_id',$this->orgId)
  280. ->column('id');
  281. $count = Db::name('user')
  282. ->alias('u')
  283. ->join('user_roles ur','ur.user_id=u.id')
  284. ->whereIn('ur.roles_id',$rolesId)
  285. ->where('u.del',0)
  286. ->where('u.enable',1)
  287. ->count();
  288. $workCount = Db::name('user')
  289. ->alias('u')
  290. ->join('user_roles ur','ur.user_id=u.id')
  291. ->whereIn('ur.roles_id',$rolesId)
  292. ->where('u.del',0)
  293. ->where('u.enable',1)
  294. ->where('u.work',1)
  295. ->count();
  296. $bl = $bl2 = 0;
  297. if($count > 0){
  298. $bl = round($workCount/$count*100,1);
  299. $bl2 = 100 - $bl;
  300. }
  301. $data = [
  302. 'count'=>['count'=>$count,'workCount'=>$workCount],
  303. 'count2'=>[['value'=>$bl],['value'=>$bl2]],
  304. 'bl'=>$bl
  305. ];
  306. HelpHander::success($data);
  307. }
  308. public function phUserCountData(){
  309. //陪护
  310. $rolesId = Db::name('roles')
  311. ->where('parent_id',11)
  312. ->where('del',0)
  313. ->where('type',1)
  314. ->where('enable',1)
  315. ->where('org_id',$this->orgId)
  316. ->column('id');
  317. $count = Db::name('user')
  318. ->alias('u')
  319. ->join('user_roles ur','ur.user_id=u.id')
  320. ->whereIn('ur.roles_id',$rolesId)
  321. ->where('u.del',0)
  322. ->where('u.enable',1)
  323. ->count();
  324. $workCount = Db::name('user')
  325. ->alias('u')
  326. ->join('user_roles ur','ur.user_id=u.id')
  327. ->whereIn('ur.roles_id',$rolesId)
  328. ->where('u.del',0)
  329. ->where('u.enable',1)
  330. ->where('u.work',1)
  331. ->count();
  332. $bl = $bl2 = 0;
  333. if($count > 0){
  334. $bl = round($workCount/$count*100,1);
  335. $bl2 = 100 - $bl;
  336. }
  337. $workUserIds = Db::name('user')
  338. ->alias('u')
  339. ->join('user_roles ur','ur.user_id=u.id')
  340. ->whereIn('ur.roles_id',$rolesId)
  341. ->where('u.del',0)
  342. ->where('u.enable',1)
  343. ->where('u.work',1)
  344. ->column('u.id');
  345. $isWorkCount = Db::name('ph_todo')->whereIn('user_id',$workUserIds)->where('org_id',$this->orgId)->where('status',1)->group('user_id')->count();
  346. $noWorkCount = $workCount - $isWorkCount;
  347. if($noWorkCount < 1 ){
  348. $noWorkCount = 0;
  349. }
  350. $data = [
  351. 'count'=>['count'=>$count,'workCount'=>$workCount,'noWorkCount'=>$noWorkCount],
  352. 'count2'=>[['value'=>$bl],['value'=>$bl2]],
  353. 'bl'=>$bl
  354. ];
  355. HelpHander::success($data);
  356. }
  357. public function ysUserCountData(){
  358. //运送
  359. $rolesId = Db::name('roles')
  360. ->where('parent_id',6)
  361. ->where('del',0)
  362. ->where('type',1)
  363. ->where('enable',1)
  364. ->where('org_id',$this->orgId)
  365. ->column('id');
  366. $count = Db::name('user')
  367. ->alias('u')
  368. ->join('user_roles ur','ur.user_id=u.id')
  369. ->whereIn('ur.roles_id',$rolesId)
  370. ->where('u.del',0)
  371. ->where('u.enable',1)
  372. ->count();
  373. $workCount = Db::name('user')
  374. ->alias('u')
  375. ->join('user_roles ur','ur.user_id=u.id')
  376. ->whereIn('ur.roles_id',$rolesId)
  377. ->where('u.del',0)
  378. ->where('u.enable',1)
  379. ->where('u.work',1)
  380. ->count();
  381. $bl = $bl2 = 0;
  382. if($count > 0){
  383. $bl = round($workCount/$count*100,1);
  384. $bl2 = 100 - $bl;
  385. }
  386. $workUserIds = Db::name('user')
  387. ->alias('u')
  388. ->join('user_roles ur','ur.user_id=u.id')
  389. ->whereIn('ur.roles_id',$rolesId)
  390. ->where('u.del',0)
  391. ->where('u.enable',1)
  392. ->where('u.work',1)
  393. ->column('u.id');
  394. $isWorkCount = Db::name('todo')->whereIn('to_user_id',$workUserIds)->where('org_id',$this->orgId)->where('todo_mode',2)->where('work_type_mode',3)->group('to_user_id')->where('del',0)->count();
  395. $noWorkCount = $workCount - $isWorkCount;
  396. if($noWorkCount < 1 ){
  397. $noWorkCount = 0;
  398. }
  399. $data = [
  400. 'count'=>['count'=>$count,'workCount'=>$workCount,'noWorkCount'=>$noWorkCount],
  401. 'count2'=>[['value'=>$bl],['value'=>$bl2]],
  402. 'bl'=>$bl
  403. ];
  404. HelpHander::success($data);
  405. }
  406. public function userCount(){
  407. $userCount = Db::name('user')
  408. ->alias('u')
  409. ->join('user_org uo','uo.user_id=u.id')
  410. ->join('org o','o.id=uo.org_id')
  411. ->where('u.del',0)
  412. ->where('u.type','in',[0,2])
  413. ->where('o.enable',1)
  414. ->where('o.del',0)
  415. ->where('o.id',$this->orgId)
  416. ->count();
  417. HelpHander::success($userCount);
  418. }
  419. // 项目大屏--满意度排名
  420. public function userCommentScoreList(){
  421. $user = Db::name('comment')
  422. ->field('user_id')
  423. ->where('org_id',$this->orgId)
  424. ->group('user_id')
  425. ->select();
  426. foreach ($user as $k=>$v){
  427. $user[$k]['score'] = Db::name('comment')
  428. ->where('org_id',$this->orgId)
  429. ->where('user_id',$v['user_id'])
  430. ->sum('score');
  431. $user[$k]['name'] = Db::name('user')->where('id',$v['user_id'])->value('real_name');
  432. $user[$k]['dep'] = Db::name('user_dep')
  433. ->alias('ud')
  434. ->join('dep d','d.id=ud.dep_id')
  435. ->where('ud.user_id',$v['user_id'])
  436. ->value('title');
  437. $rolesId = Db::name('user_roles')
  438. ->alias('ur')
  439. ->join('roles r','r.id=ur.roles_id')
  440. ->where('ur.user_id',$v['user_id'])
  441. ->value('r.parent_id');
  442. $user[$k]['roles'] = $rolesId ? Db::name('roles')->where('id',$rolesId)->value('name'):'';
  443. $user[$k]['task'] = Db::name('comment')
  444. ->where('org_id',$this->orgId)
  445. ->where('user_id',$v['user_id'])
  446. ->count();
  447. }
  448. $list = list_sort_by($user,'score','desc');
  449. $data = [];
  450. $host = request()->domain(true);
  451. foreach ($list as $k=>$v){
  452. if(isset($k) && $k==0){
  453. $top = '<img src="'.$host.'/img/org-top1.png" width="30" style="margin-top:5px" >';
  454. }elseif (isset($k) && $k==1){
  455. $top = '<img src="'.$host.'/img/org-top2.png" width="30" style="margin-top:5px" >';
  456. }elseif (isset($k) && $k==2){
  457. $top = '<img src="'.$host.'/img/org-top3.png" width="30" style="margin-top:5px">';
  458. }else{
  459. $top = 'TOP'.($k+1);
  460. }
  461. $data[] = [$top,$v['name'],$v['dep'],$v['roles'],$v['task'],$v['score']];
  462. }
  463. HelpHander::success($data);
  464. }
  465. }