webmain-main-userinfo20231219175633@userinfoAction.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. class userinfoClassAction extends Action
  3. {
  4. public function userinfobefore($table)
  5. {
  6. $table = '`[Q]admin` a left join `[Q]userinfo` b on a.id=b.id';
  7. $s = '';
  8. $key = $this->post('key');
  9. if($key!=''){
  10. $s = " and (a.`name` like '%$key%' or a.`user` like '%$key%' or a.`ranking` like '%$key%' or a.`deptname` like '%$key%') ";
  11. }
  12. if(ISMORECOM)$s.= ' and a.`companyid`='.m('admin')->getcompanyid().'';
  13. return array(
  14. 'table' => $table,
  15. 'where' => $s,
  16. 'fields'=> 'a.name,a.deptname,a.id,a.status,a.ranking,b.id as ids,b.dkip,b.dkmac,b.iskq,b.isdwdk,b.isdaily,b.finger'
  17. );
  18. }
  19. public function userinfoafter($table, $rows)
  20. {
  21. $db = m($table);
  22. foreach($rows as $k=>$rs){
  23. if(isempt($rs['ids'])){
  24. $db->insert(array(
  25. 'id' => $rs['id'],
  26. 'name' => $rs['name'],
  27. 'deptname' => $rs['deptname'],
  28. 'ranking' => $rs['ranking']
  29. ));
  30. }
  31. }
  32. return array('rows'=>$rows);
  33. }
  34. public function fieldsafters($table, $fid, $val, $id)
  35. {
  36. $fields = 'sex,ranking,tel,mobile,workdate,email,quitdt';
  37. if(contain($fields, $fid)){
  38. if($fid=='quitdt'){
  39. $dbs = m($table);
  40. if(isempt($val)){
  41. $dbs->update('`state`=0', "`id`='$id' and `state`=5");
  42. }else{
  43. $dbs->update('`state`=5', "`id`='$id'");
  44. }
  45. }
  46. m('admin')->update(array($fid=>$val), $id);
  47. }
  48. }
  49. public function userinfobeforegeren()
  50. {
  51. return ' and id='.$this->adminid.'';
  52. }
  53. //人员分析
  54. public function useranaybefore()
  55. {
  56. return 'and 1=2';
  57. }
  58. public function useranayafter($table, $rows)
  59. {
  60. $type = $this->post('type','deptname');
  61. $dt = $this->post('dt');
  62. $db = m('userinfo');
  63. $where = 'and state<>5';
  64. if($dt !=''){
  65. $where = "and ((state<>5 and workdate<='$dt') or (state=5 and workdate<='$dt' and quitdt>'$dt'))";
  66. }
  67. $where .= m('admin')->getcompanywhere();
  68. $rows = $db->getall("id>0 $where",'deptname,sex,xueli,state,birthday,workdate,quitdt,ranking');
  69. $nianls = array(
  70. array(0,'16-20岁',16,20),
  71. array(0,'21-25岁',21,25),
  72. array(0,'26-30岁',26,30),
  73. array(0,'31-40岁',31,40),
  74. array(0,'41岁以上',41,9999),
  75. array(0,'其他',-555,15),
  76. );
  77. $yearls = array(
  78. array(0,'1年以下',0,1),
  79. array(0,'1-3年',1,3),
  80. array(0,'3-5年',3,5),
  81. array(0,'5-10年',5,10),
  82. array(0,'10年以上',10,9999)
  83. );
  84. $atatea = explode(',', '试用期,正式,实习生,兼职,临时工,离职');
  85. $atrows = $this->option->getmnum('userstate');
  86. foreach($atrows as $k1=>$rs1)if(!isempt($rs1['value']))$atatea[$rs1['value']] = $rs1['name'];
  87. foreach($rows as $k=>$rs){
  88. $year = '';
  89. if(!$this->isempt($rs['workdate'])) $year = substr($rs['workdate'],0,4);
  90. $rows[$k]['year'] = $year;
  91. $lian = $this->jsnianl($rs['birthday']);
  92. foreach($nianls as $n=>$nsa){
  93. if( $lian >= $nsa[2] && $lian <= $nsa[3]){
  94. $rows[$k]['nian'] = $nsa[1];
  95. break;
  96. }
  97. }
  98. $state = (int)$rs['state'];
  99. $rows[$k]['state'] = $atatea[$state];
  100. //入职连
  101. $nan = $this->worknx($rs['workdate']);
  102. foreach($yearls as $n=>$nsa){
  103. if( $nan >= $nsa[2] && $nan < $nsa[3]){
  104. $rows[$k]['nianxian'] = $nsa[1];
  105. break;
  106. }
  107. }
  108. }
  109. $arr = array();
  110. $total = $this->db->count;
  111. foreach($rows as $k=>$rs){
  112. $val = $rs[$type];
  113. if($this->isempt($val))$val = '其他';
  114. if(!isset($arr[$val]))$arr[$val]=0;
  115. $arr[$val]++;
  116. }
  117. $a = array();
  118. foreach($arr as $k=>$v){
  119. $a[] = array(
  120. 'name' => $k,
  121. 'value' => $v,
  122. 'bili' => ($this->rock->number($v/$total*100)).'%'
  123. );
  124. }
  125. return array(
  126. 'rows' => $a,
  127. 'totalCound' => count($a)
  128. );
  129. }
  130. private function jsnianl($dt)
  131. {
  132. $nY = date('Y')+1;
  133. $lx = 0;
  134. if(!$this->isempt($dt) && !$this->contain($dt, '0000')){
  135. $ss = explode('-', $dt);
  136. $saa = (int)$ss[0];
  137. $lx = $nY - $saa;
  138. }
  139. return $lx ;
  140. }
  141. //计算工作年限的
  142. private function worknx($dt)
  143. {
  144. $w = 0;
  145. if(!$this->isempt($dt) && !$this->contain($dt, '0000')){
  146. $startt = strtotime($dt);
  147. $date = date('Y-m-d');
  148. $endtime = strtotime($date);
  149. $w = (int)(($endtime - $startt) / (24*3600) / 365);
  150. }
  151. return $w;
  152. }
  153. }