/**
  * 学生有申请的列表.
  * 
  * @access public
  * @return void
  * @author Liuping <*****@*****.**>
  */
 public function studentList()
 {
     // 允许申请的部门
     $allowParts = AgentAuth::getAllowParts([AgentAuth::READ]);
     $part_ids = [];
     foreach ($allowParts as $row) {
         $part_ids[] = $row['id'];
     }
     $modelAppStatus = new ApplyStatusModel();
     // 已有申请的年份
     $allAppYears = $modelAppStatus->fetchApplyYears($part_ids);
     // 当前允许申请的年份
     $allowAppYears = getApplyForYears();
     // 从第几个年份显示
     $_tmp_year = $allowAppYears[0];
     // 增加一个 全部 的部门
     array_unshift($allowParts, ['id' => '', 'name' => 'All']);
     // 默认显示的部门名称
     $default_show_part_name = 'All';
     // 页面展示的全部年份
     $showYears = $allowAppYears;
     foreach ($allAppYears as $row) {
         $showYears[] = intval($row['year']);
     }
     $showYears = array_unique($showYears);
     // 去重
     sort($showYears);
     // 排序
     // 获取 左右 移动控制默认显示的第几页
     $_tmp_key = array_search($_tmp_year, $showYears);
     // selectYear(integer), startDate(string), endDate(string), dept(integer), firstName(string),
     // familyName(string),  birth(string)
     $defaultWhere = ['selectYear' => '', 'startDate' => '', 'endDate' => '', 'dept' => '', 'firstName' => '', 'familyName' => '', 'birth' => ''];
     // 列表数据
     $lists = [];
     foreach ($showYears as $row) {
         $defaultWhere['selectYear'] = $row;
         $lists[$row] = $this->fetchApplyStuList($defaultWhere, TRUE, 20);
         // 替换分页请求的控制器为 ajaxGetStudentList
         $pageList = $lists[$row]['pageList'];
         $pageList = str_replace(ACTION_NAME, 'ajaxGetStudentList', $pageList);
         $lists[$row]['pageList'] = $pageList;
     }
     $this->assign('controlPage', $_tmp_key + 1);
     $this->assign('lists', $lists);
     $this->assign('defaultDeptName', $default_show_part_name);
     $this->assign('allowParts', $allowParts);
     $this->assign('showYears', $showYears);
     $this->display();
 }
 protected function forCasApplicationList($what)
 {
     $where['a.is_complete'] = 1;
     $where['a.is_del'] = 0;
     $where['a.a_no'] = array('EXP', 'IS NOT NULL');
     $where['b.lang'] = 'en-us';
     $where['a.c_status'] = array('GT', 0);
     //通过部门查询学生
     if ($what['department'] != "") {
         $id = M('agent_part')->where(array('name' => $what['department']))->getField('id');
         $uid = M('user_agent')->field('uid')->where(array('partID' => $id))->select();
         if ($uid) {
             foreach ($uid as $rs) {
                 $uidList[] = $rs['uid'];
             }
             $where['a.uid'] = array('IN', $uidList);
         } else {
             $where['a.uid'] = 0;
         }
     }
     //通过编辑时间查询学生
     if ($what['startTime'] != "") {
         $makeTime = explode('/', $what['startTime']);
         $startTime = strtotime($makeTime[2] . $makeTime[1] . $makeTime[0] . ' 0:0:0');
     }
     if ($what['endTime'] != "") {
         $makeTime = explode('/', $what['endTime']);
         $endTime = strtotime($makeTime[2] . $makeTime[1] . $makeTime[0] . ' 23:59:59');
     }
     if ($startTime != "" && $endTime == '') {
         $where['a.e_time'] = array('EGT', $startTime);
     }
     if ($startTime == "" && $endTime != '') {
         $where['a.e_time'] = array('BETWEEN', array('1', $endTime));
     }
     if ($startTime != "" && $endTime != '') {
         $where['a.e_time'] = array('BETWEEN', array($startTime, $endTime));
     }
     //根据姓查询申请学生
     if ($what['family_name'] != "") {
         $where['a.family_name'] = array('like', '%' . $what['family_name'] . '%');
     }
     //根据名查询申请学生
     if ($what['first_name'] != "") {
         $where['a.first_name'] = array('like', '%' . $what['first_name'] . '%');
     }
     //根据申请编号查询申请学生
     if ($what['reference'] != "") {
         $where['a.reference'] = array('like', $what['reference']);
     }
     //通过学校查询申请单
     if ($what['university'] != "") {
         $us_id = M('universitylang')->where(array('name' => array("LIKE", "%" . $what['university'] . "%")))->getField('fid');
         if ($us_id != "") {
             $where['a.us_id'] = $us_id;
         } else {
             $where['a.us_id'] = 0;
         }
     }
     //查询无效单
     if ($what['invalid'] == 1) {
         $where['a.invalid'] = 1;
     }
     //初始状态设置
     $this->assign('what', $what);
     // 有读取权限的部门列表
     $allowDepts = AgentAuth::getAllowParts(['r']);
     $partInfo = [];
     // 有权限操作的部门键值对 id => name
     foreach ($allowDepts as $row) {
         $partInfo[$row['id']] = $row['name'];
     }
     unset($allowDepts);
     $ids = array_keys($partInfo);
     if (!empty($ids)) {
         $map['a.uid'] = session('uid');
         $map['a.partid'] = array('IN', $ids);
         $map['_logic'] = 'or';
         $where['_complex'] = $map;
     } else {
         $where['a.uid'] = session('uid');
     }
     return $where;
 }