StdExportControl.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package cn.hmsoft.mr.control.std;
  2. import java.io.ByteArrayOutputStream;
  3. import java.net.URLEncoder;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.servlet.ServletOutputStream;
  8. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import cn.hmsoft.frame.constants.FrameStatus;
  13. import cn.hmsoft.frame.control.FrameControl;
  14. import cn.hmsoft.frame.util.FrameDictUtil;
  15. import cn.hmsoft.helper.excel.Excel2007Writer;
  16. import cn.hmsoft.mr.data.dao.std.StdApplyDetailDao;
  17. import cn.hmsoft.mr.data.dao.std.StdEnrolDao;
  18. import cn.hmsoft.mr.data.model.std.StdApplyDetail;
  19. @RestController
  20. public class StdExportControl extends FrameControl {
  21. @Autowired
  22. private StdEnrolDao daoEnrol;
  23. @Autowired
  24. private StdApplyDetailDao daoDetail;
  25. @RequestMapping("std/enrol/video/export")
  26. public void export() {
  27. List<List<Object>> values = new ArrayList<List<Object>>();
  28. List<Object> headerList = new ArrayList<Object>();
  29. ServletOutputStream outStream = null;
  30. headerList.add("考生姓名");
  31. headerList.add("证件号码");
  32. headerList.add("考生性别");
  33. headerList.add("报考专业");
  34. headerList.add("考生类型");
  35. headerList.add("是否完成上传");
  36. values.add(headerList);
  37. List<Map<String,Object>> enrolList = daoEnrol.listStdEnrolPay(FrameStatus.Active.toString());
  38. for (Map<String,Object> enrol : enrolList) {
  39. List<Object> rowList = new ArrayList<>();
  40. rowList.add(getStdName(enrol));
  41. rowList.add(enrol.get("cert_id"));
  42. rowList.add(enrol.get("std_sex"));
  43. rowList.add(enrol.get("aspect_name"));
  44. rowList.add(FrameDictUtil.getFrameDictText("StdType", String.valueOf(enrol.get("std_type"))));
  45. rowList.add(getHaveUpload(Integer.parseInt(String.valueOf(enrol.get("std_id"))),String.valueOf(enrol.get("aspect_name"))));
  46. values.add(rowList);
  47. }
  48. try {
  49. String fileName = "考生视频上传情况" + ".xlsx";
  50. fileName = URLEncoder.encode(fileName, "UTF-8");
  51. fileName = new String(fileName.getBytes(), "ISO-8859-1");
  52. XSSFWorkbook wb = Excel2007Writer.createExcel(values);
  53. ByteArrayOutputStream os = new ByteArrayOutputStream();
  54. wb.write(os);
  55. this.getResponse().reset();
  56. this.getResponse().setContentType("application/x-msdownload");
  57. this.getResponse().setHeader("Content-Disposition", "attachment; filename=" + fileName);
  58. outStream = this.getResponse().getOutputStream();
  59. outStream.write(os.toByteArray());
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. } finally {
  63. if(outStream != null) {
  64. try {
  65. outStream.close();
  66. } catch (Exception e) {
  67. e.printStackTrace();
  68. }
  69. }
  70. }
  71. }
  72. private String getHaveUpload(Integer std_id, String aspect_name) {
  73. List<StdApplyDetail> detailList = daoDetail.listStdApplyDeail(std_id, aspect_name);
  74. if(detailList != null && detailList.size() > 0) return "已上传";
  75. return "未上传";
  76. }
  77. private Object getStdName(Map<String, Object> enrol) {
  78. String std_type = String.valueOf(enrol.get("std_type"));
  79. if(std_type.equals("Overseas") || std_type.equals("HMT")) {
  80. return enrol.get("std_name");
  81. } else {
  82. return enrol.get("passport_last_name")+ " " +enrol.get("passport_name");
  83. }
  84. }
  85. @RequestMapping("std/enrol/video/totol/export")
  86. public void totalExport() {
  87. List<List<Object>> values = new ArrayList<List<Object>>();
  88. List<Object> headerList = new ArrayList<Object>();
  89. ServletOutputStream outStream = null;
  90. headerList.add("专业名称");
  91. headerList.add("报考总人数");
  92. headerList.add("已缴费人数");
  93. headerList.add("未缴费人数");
  94. headerList.add("完成上传人数");
  95. headerList.add("未上传人数");
  96. values.add(headerList);
  97. List<Map<String,Object>> list = daoEnrol.totalStd();
  98. for (Map<String, Object> map : list) {
  99. List<Object> rowList = new ArrayList<>();
  100. rowList.add(map.get("aspect_name"));
  101. rowList.add(map.get("nums"));
  102. rowList.add(map.get("have_pay_num"));
  103. rowList.add(map.get("no_pay_num"));
  104. Integer haveUploadNum = daoDetail.countStdByAspect(String.valueOf(map.get("aspect_name")));
  105. rowList.add(haveUploadNum);
  106. rowList.add(Integer.parseInt(String.valueOf(map.get("have_pay_num")))-haveUploadNum);
  107. values.add(rowList);
  108. }
  109. try {
  110. String fileName = "专业视频上传统计" + ".xlsx";
  111. fileName = URLEncoder.encode(fileName, "UTF-8");
  112. fileName = new String(fileName.getBytes(), "ISO-8859-1");
  113. XSSFWorkbook wb = Excel2007Writer.createExcel(values);
  114. ByteArrayOutputStream os = new ByteArrayOutputStream();
  115. wb.write(os);
  116. this.getResponse().reset();
  117. this.getResponse().setContentType("application/x-msdownload");
  118. this.getResponse().setHeader("Content-Disposition", "attachment; filename=" + fileName);
  119. outStream = this.getResponse().getOutputStream();
  120. outStream.write(os.toByteArray());
  121. } catch (Exception e) {
  122. e.printStackTrace();
  123. } finally {
  124. if(outStream != null) {
  125. try {
  126. outStream.close();
  127. } catch (Exception e) {
  128. e.printStackTrace();
  129. }
  130. }
  131. }
  132. }
  133. }