package com.hyf.cemap.controller;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.hyf.cemap.bean.po.EmploymentInformation;
import com.hyf.cemap.bean.po.GraduateInformation;
import com.hyf.cemap.bean.po.GraduationFile;
import com.hyf.cemap.bean.po.base.AdministrativeClass;
import com.hyf.cemap.bean.po.base.College;
import com.hyf.cemap.bean.po.base.Profession;
import com.hyf.cemap.bean.security.Member;
import com.hyf.cemap.bean.security.Role;
import com.hyf.cemap.bean.vo.ResultVO;
import com.hyf.cemap.dao.UserDao;
import com.hyf.cemap.service.EmploymentInformationServiceImpl;
import com.hyf.cemap.service.GraduateInformationServiceImpl;
import com.hyf.cemap.service.GraduationFileServiceImpl;
import com.hyf.cemap.service.MemberServiceImpl;
import com.hyf.cemap.service.UserDetailServiceImpl;
import com.hyf.cemap.service.base.AdministrativeClassServiceImpl;
import com.hyf.cemap.service.base.CollegeServiceImpl;
import com.hyf.cemap.service.base.ProfessionServiceImpl;
import com.hyf.cemap.util.common.CEMAPConstants;
import com.hyf.cemap.util.common.DataTableUtil;
/**
* 毕业生信息Controller
* @author admin
* @ClassName GraduateInformationController
* @date 2017年3月8日 下午4:56:09
*/
@Controller
@RequestMapping(value = "/graduateinformation")
public class GraduateInformationController {
@Autowired
private CollegeServiceImpl collegeService;
@Autowired
private ProfessionServiceImpl professionService;
@Autowired
private AdministrativeClassServiceImpl administrativeClassService;
@Autowired
private GraduateInformationServiceImpl graduateInformationService;
@Autowired
private GraduationFileServiceImpl graduationFileService;
@Autowired
private EmploymentInformationServiceImpl employmentInformationService;
@Autowired
private UserDao userDao;
@Autowired
private MemberServiceImpl memberService;
@Autowired
private UserDetailServiceImpl userDetailServiceImpl;
/**
* 主页
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/index", method = { RequestMethod.GET })
public ModelAndView indexPage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
List<College> colleges = collegeService.listAll("id", "ace");
modelAndView.addObject("colleges", colleges);
/**
* 获取用户权限
*/
UserDetails userDetails = (UserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
String usernameonline = userDetails.getUsername();
Member memberonline = userDetailServiceImpl.findUserByUsername(usernameonline);
//只有辅导员需要区分开 辅导员查到自己所管的班级的学生信息
if (userDetailServiceImpl.findUserAuthorities(memberonline).toString().equals("[ROLE_TEACHER]")) {
try {
String sclassId = memberonline.getManageClass();
String[] sclassIds = sclassId.split(",");
List<Integer> classIds =new ArrayList<Integer>();
for(int i=0;i<sclassIds.length;i++){
classIds.add(Integer.parseInt(sclassIds[i]));
}
List<AdministrativeClass> administrativeClasss = administrativeClassService.listByClassIds(classIds);
modelAndView.addObject("administrativeClasss", administrativeClasss);
} catch (Exception e) {
e.printStackTrace();
}
}
// List<Profession> professions = professionService.listByCollegeId(colleges.get(0).getId());
// modelAndView.addObject("professions", professions);
// List<AdministrativeClass> administrativeClasss = administrativeClassService.listByProfessionId(professions.get(0).getId());
// modelAndView.addObject("administrativeClasss", administrativeClasss);
modelAndView.setViewName("graduateinformation/index");
return modelAndView;
}
/**
* 获取数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/data", method = { RequestMethod.POST }, produces = "application/json; charset=utf-8")
@ResponseBody
public String data(HttpServletRequest request, HttpServletResponse response) {
/**
* 获取查询参数
*/
Integer collegeId = -1;
Integer professionId = -1;
Integer administrativeClassId = -1;
Integer administrativeClassId_f = -1;
String scollegeId = request.getParameter("scollegeId");
if(scollegeId != null){
collegeId = Integer.parseInt(scollegeId);
}
String sprofessionId = request.getParameter("sprofessionId");
if(sprofessionId != null){
professionId = Integer.parseInt(sprofessionId);
}
String sadministrativeClassId = request.getParameter("sadministrativeClassId");
if(sadministrativeClassId != null){
administrativeClassId = Integer.parseInt(sadministrativeClassId);
}
String sadministrativeClassId_f = request.getParameter("f_sadministrativeClassId");
if(sadministrativeClassId_f != null){
administrativeClassId_f = Integer.parseInt(sadministrativeClassId_f);
}
String name = request.getParameter("sname");
if(name != null && name.equals("")){
name = null;
}
String studentId = request.getParameter("sstudentId");
if(studentId != null && studentId.equals("")){
studentId = null;
}
DataTableUtil dataTableUtil = new DataTableUtil(request);
/**
* 获取用户权限
*/
UserDetails userDetails = (UserDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
String usernameonline = userDetails.getUsername();
Member memberonline = userDetailServiceImpl.findUserByUsername(usernameonline);
//只有辅导员需要区分开 辅导员查到自己所管的班级的学生信息
if (userDetailServiceImpl.findUserAuthorities(memberonline).toString().equals("[ROLE_TEACHER]")) {
try {
String sclassId = memberonline.getManageClass();
String[] sclassIds = sclassId.split(",");
List<Integer> classIds =new ArrayList<Integer>();
for(int i=0;i<sclassIds.length;i++){
classIds.add(Integer.parseInt(sclassIds[i]));
}
// 总记录数
Integer recordsTotal = graduateInformationService.listGraduateInformationVOByInfos_f(classIds,-1, null, null, -1, -1).size();
// 关键字过滤后总记录数
Integer recordsFiltered = graduateInformationService.listGraduateInformationVOByInfos_f(classIds,administrativeClassId_f, name, studentId,-1, -1).size();
dataTableUtil.setResult(recordsTotal, recordsFiltered,
graduateInformationService.listGraduateInformationVOByInfos_f(classIds,administrativeClassId_f, name, studentId,dataTableUtil.getPage(),
da