Examination_system/Examination_system-1/.svn/pristine/a4/a4858e16d61df223129499c6834...

412 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.bonus.registration.controller;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
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.multipart.MultipartFile;
import com.bonus.registration.beans.RegistrationBean;
import com.bonus.registration.service.RegistrationService;
import com.bonus.sys.AjaxRes;
import com.bonus.sys.BaseController;
import com.bonus.sys.GlobalConst;
import com.bonus.sys.Page;
import com.bonus.sys.UserShiroHelper;
import com.bonus.sys.beans.UserBean;
import com.bonus.sys.service.UserService;
@Controller
@RequestMapping("/backstage/registration/")
public class RegistrationController extends BaseController<RegistrationBean> {
@Autowired
RegistrationService service;
@Autowired
UserService userService;
@RequestMapping("list")
public String List(Model model) {
return "/registration/registrationList";
}
@RequestMapping("findByPage")
public String findByPage(@RequestBody Page<RegistrationBean> page, RegistrationBean o, Model model) {
try {
o = page.getObj();
page = service.findByPage(o, page);
if (page.getResults() != null && page.getResults().size() != 0) {
SimpleDateFormat df = new SimpleDateFormat("yyyy");// 设置日期格式
String date = df.format(new Date());
for (int i = 0; i < page.getResults().size(); i++) {
RegistrationBean bean = page.getResults().get(i);
String temp = date + "年年度考试 第" + bean.getTimes() + "场";
bean.setTimesName(temp);
page.getResults().set(i, bean);
}
}
model.addAttribute("page", page);
} catch (Exception e) {
e.printStackTrace();
}
return "/registration/registrationDetails";
}
@RequestMapping("registrationFormPage")
public String questionFormPage(Model model) {
return "/registration/registrationForm";
}
@RequestMapping("findRegistrationForm")
public String questionFormPage(RegistrationBean o, Model model) {
try {
String type = o.getType();
o = service.findById(o);
o.setType(type);
model.addAttribute("registration", o);
} catch (Exception e) {
e.printStackTrace();
}
return "/registration/registrationForm";
}
@RequestMapping("addRegistration")
@ResponseBody
public AjaxRes addQuestion(@RequestBody RegistrationBean o) {
AjaxRes ar = getAjaxRes();
try {
RegistrationBean b = service.findByidcard(o.getIdcard());
UserBean ubean = userService.findByidcard(o.getIdcard());
if (b == null && ubean != null) {
ar = service.addRegistration(o);
ar.setSucceedMsg("添加考试人员成功");
} else if (b != null) {
ar.setFailMsg("该人员已参加其他场次考试,请勿重复添加");
} else if (ubean == null) {
ar.setFailMsg("该人员身份未录入系统,请联系管理员");
}
} catch (Exception e) {
e.printStackTrace();
ar.setFailMsg("新增考试人员失败,异常处理!");
}
return ar;
}
@RequestMapping("judgeExamPerson")
@ResponseBody
public AjaxRes judgeExamPerson(RegistrationBean o,HttpServletRequest request) {
AjaxRes ar = getAjaxRes();
try {
UserBean user = UserShiroHelper.getRealCurrentUser();
// UserBean user = (UserBean) request.getSession().getAttribute("currentUser");
System.out.println("你妹的");
Integer res = service.judgeExamPerson(user);
if (res == 0) {
ar.setSucceedMsg("您被管理员拒绝参加本场考试请现在离开考场!!!");
}
} catch (Exception e) {
e.printStackTrace();
ar.setFailMsg("参加考试失败!");
}
return ar;
}
@RequestMapping("updateRegistration")
@ResponseBody
public AjaxRes updateRegistration(@RequestBody RegistrationBean o) {
AjaxRes ar = getAjaxRes();
try {
ar = service.updateRegistration(o);
} catch (Exception e) {
e.printStackTrace();
ar.setFailMsg("修改失败!");
}
return ar;
}
@RequestMapping("deleteApply")
@ResponseBody
public AjaxRes deleteApply(RegistrationBean o) {
AjaxRes ar = getAjaxRes();
try {
ar = service.deleteApply(o);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg("删除失败!");
}
return ar;
}
@RequestMapping("toUpdateTimes")
@ResponseBody
public AjaxRes toUpdateTimes(RegistrationBean o) {
AjaxRes ar = getAjaxRes();
try {
Integer res = service.toUpdateTimes(o);
RegistrationBean bean = service.findExamProfess(o);
Integer re = 0;
if (bean == null) { // exam_profess表插入新专业
re = service.insertExamProfess(o);
} else { // 本身就有这个专业
re = 1;
}
if (res == 1 && re == 1) {
ar.setSucceedMsg("修改成功," + o.getName() + "可参加本场考试!");
} else {
ar.setSucceedMsg("修改失败" + o.getName() + "不可参加本场考试!");
}
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg("修改失败!");
}
return ar;
}
@RequestMapping("toUpdateIsActive")
@ResponseBody
public AjaxRes toUpdateIsActive(RegistrationBean o) {
AjaxRes ar = getAjaxRes();
try {
Integer res = service.toUpdateIsActive(o);
if (res == 1) {
ar.setSucceedMsg("拒绝成功,请您驱赶" + o.getName() + "离开考场!");
} else {
ar.setSucceedMsg("修改失败");
}
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg("修改失败!");
}
return ar;
}
@RequestMapping("changeIsActive")
@ResponseBody
public AjaxRes changeIsActive() {
AjaxRes ar = getAjaxRes();
UserBean user = UserShiroHelper.getRealCurrentUser();
try {
ar = service.changeIsActive(user);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg("删除失败!");
}
return ar;
}
@RequestMapping(value = "import", method = RequestMethod.POST)
@ResponseBody
public AjaxRes export(@RequestParam("file") MultipartFile file) {
AjaxRes ar = getAjaxRes();
AjaxRes ars = getAjaxRes();
Integer result = 0;
try {
// @RequestParam("file") MultipartFile file 是用来接收前端传递过来的文件
// 1.创建workbook对象读取整个文档
InputStream inputStream = file.getInputStream();
POIFSFileSystem poifsFileSystem = new POIFSFileSystem(inputStream);
HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem);
// 2.读取页脚sheet
HSSFSheet hssfSheet = wb.getSheetAt(0);
// 判断Sheet是否为空
if (hssfSheet != null) {
System.out.println(hssfSheet.getLastRowNum());
// 获得数据的总行数
int totalRowNum = hssfSheet.getLastRowNum();
// 要获得属性
String name = "";
String latitude = "";
String specialty = "";
String times = "";
// 获得所有数据
for (int i = 1; i <= totalRowNum; i++) {
// 获得第i行对象
Row row = hssfSheet.getRow(i);
// 获得获得第i行第0列的 String类型对象
Cell cell = row.getCell((short) 0);
name = cell.getStringCellValue().toString();
System.out.println("名字:" + name);
}
// 遍历行rowcontinue只是终止本次循环接着还执行后面的循环
for (int rownum = 1; rownum <= hssfSheet.getLastRowNum(); rownum++) {
// 获取到每一行
HSSFRow sheetRow = hssfSheet.getRow(rownum);
if (sheetRow != null && !isRowEmpty(sheetRow)) {
// 保存数据到数据库
System.out.println(sheetRow);
// 获得第i行对象
Row row = hssfSheet.getRow(rownum);
// 获得获得第i行第0列的 String类型对象
Cell cell = row.getCell((short) 0);
name = cell.getStringCellValue().toString();
// 获得获得第i行第2列的对象并转为int类型
Cell cell1 = row.getCell((short) 1);
latitude = cell1.getStringCellValue().toString();
// 获取考试场次 int类型的值转换为string类型再由对象接收转换后的值
if (row.getCell(2) != null) {
row.getCell(2).setCellType(Cell.CELL_TYPE_STRING);
times = (row.getCell(2).getStringCellValue());
}
// 获取专业ID int类型的值转换为string类型再由对象接收转换后的值
if (row.getCell(3) != null) {
row.getCell(3).setCellType(Cell.CELL_TYPE_STRING);
specialty = (row.getCell(3).getStringCellValue());
}
ars = compareSaveData(sheetRow);
if (name.isEmpty()) {
ar.setSucceedMsg("姓名为空,请更改");
result = 3;
break;
}
if (specialty.isEmpty()) {
ar.setSucceedMsg("专业id为空请更改");
result = 3;
break;
}
if (times.isEmpty()) {
ar.setSucceedMsg("考试场次为空,请更改");
result = 3;
break;
}
boolean isRule = isSpecialtyRule(specialty);
if (!isRule) {
ar.setSucceedMsg("专业id不符合规则请更改");
result = 3;
break;
}
if (ars.getRes() == 2 || ars.getRes() == 3) {
ar.setFailMsg(ars.getResMsg());
result = ars.getRes();
break;
}
}
}
if (result != 2 && result != 3) {
for (int rownums = 1; rownums <= hssfSheet.getLastRowNum(); rownums++) {
// 获取到每一行
HSSFRow sheetRows = hssfSheet.getRow(rownums);
if (sheetRows != null && !isRowEmpty(sheetRows)) {
addSaveData(sheetRows);
}
}
ar.setSucceedMsg(GlobalConst.IMP_SUCCEED);
}
}
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.IMP_FAIL);
}
return ar;
}
/**
* 判断专业id是否符合规则
*
* @param specialty
* @return
*/
private boolean isSpecialtyRule(String specialty) {
boolean tf = true;
try {
int orgId = Integer.parseInt(specialty);
UserBean bean = userService.findOrgId(orgId);
if(bean == null){
tf = false;
}
} catch (Exception e) {
logger.error(e.toString());
tf = false;
}
return tf;
}
// 判断该行是否为空
public static boolean isRowEmpty(Row row) {
for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
Cell cell = row.getCell(c);
if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
return false;
}
}
return true;
}
private void addSaveData(HSSFRow sheetRow) throws Exception {
// 保存数据到数据库
RegistrationBean bean = new RegistrationBean();
bean.setName(getValue(sheetRow.getCell(0)));
bean.setIdcard(change(getValue(sheetRow.getCell(1))));
bean.setTimes(change(getValue(sheetRow.getCell(2))));
bean.setSpecialty(change(getValue(sheetRow.getCell(3))));
RegistrationBean b = service.findByidcard(change(getValue(sheetRow.getCell(1))));
UserBean ubean = userService.findByidcard(change(getValue(sheetRow.getCell(1))));
if (b == null && ubean != null) {
service.addRegistration(bean);
}
}
private AjaxRes compareSaveData(HSSFRow sheetRow) throws Exception {
// 保存数据到数据库
AjaxRes ar = getAjaxRes();
RegistrationBean bean = new RegistrationBean();
bean.setName(getValue(sheetRow.getCell(0)));
bean.setIdcard(change(getValue(sheetRow.getCell(1))));
bean.setTimes(change(getValue(sheetRow.getCell(2))));
bean.setSpecialty(change(getValue(sheetRow.getCell(3))));
ar = service.findUserByIdAndTimes(change(getValue(sheetRow.getCell(1))));
return ar;
}
private static String getValue(HSSFCell hssfCell) {
// hssfCell.getCellType() 获取当前列的类型
if (hssfCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
return String.valueOf(hssfCell.getNumericCellValue());
} else {
return String.valueOf(hssfCell.getStringCellValue());
}
}
// 将double类型字符串转化为整型
private static String change(String str) {
if (str.indexOf('.') != -1) {
return str.substring(0, str.indexOf('.'));
} else {
return str;
}
}
}