userinfoAction.php 4.0 KB

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