userinfoAction.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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. $total = 0;
  88. foreach($rows as $k=>$rs){
  89. $total ++;
  90. $year = '';
  91. if(!$this->isempt($rs['workdate'])) $year = substr($rs['workdate'],0,4);
  92. $rows[$k]['year'] = $year;
  93. $lian = $this->jsnianl($rs['birthday']);
  94. foreach($nianls as $n=>$nsa){
  95. if( $lian >= $nsa[2] && $lian <= $nsa[3]){
  96. $rows[$k]['nian'] = $nsa[1];
  97. break;
  98. }
  99. }
  100. $state = (int)$rs['state'];
  101. $rows[$k]['state'] = $atatea[$state];
  102. //入职连
  103. $nan = $this->worknx($rs['workdate']);
  104. foreach($yearls as $n=>$nsa){
  105. if( $nan >= $nsa[2] && $nan < $nsa[3]){
  106. $rows[$k]['nianxian'] = $nsa[1];
  107. break;
  108. }
  109. }
  110. }
  111. $arr = array();
  112. //$total = $this->db->count;
  113. foreach($rows as $k=>$rs){
  114. $val = $rs[$type];
  115. if($this->isempt($val))$val = '其他';
  116. if(!isset($arr[$val]))$arr[$val]=0;
  117. $arr[$val]++;
  118. }
  119. $a = array();
  120. foreach($arr as $k=>$v){
  121. $a[] = array(
  122. 'name' => $k,
  123. 'value' => $v,
  124. 'bili' => ($this->rock->number($v/$total*100)).'%'
  125. );
  126. }
  127. return array(
  128. 'rows' => $a,
  129. 'totalCount' => count($a)
  130. );
  131. }
  132. private function jsnianl($dt)
  133. {
  134. $nY = date('Y')+1;
  135. $lx = 0;
  136. if(!$this->isempt($dt) && !$this->contain($dt, '0000')){
  137. $ss = explode('-', $dt);
  138. $saa = (int)$ss[0];
  139. $lx = $nY - $saa;
  140. }
  141. return $lx ;
  142. }
  143. //计算工作年限的
  144. private function worknx($dt)
  145. {
  146. $w = 0;
  147. if(!$this->isempt($dt) && !$this->contain($dt, '0000')){
  148. $startt = strtotime($dt);
  149. $date = date('Y-m-d');
  150. $endtime = strtotime($date);
  151. $w = (int)(($endtime - $startt) / (24*3600) / 365);
  152. }
  153. return $w;
  154. }
  155. }
粤ICP备19079148号