From 461abb080e3c26b0ef5ea0a55d14f53c2d44157a Mon Sep 17 00:00:00 2001 From: xuquan <1099815072@qq.com> Date: Thu, 11 May 2023 12:44:11 +0800 Subject: [PATCH] 修改提交 --- cloud/dahua/pom.xml | 6 ++++++ cloud/dahua/src/main/java/com/example/dahua/bean/yx/ExportStudentBean.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java | 18 ++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java | 3 +++ cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java | 49 +++++++++++++++++++++++++++++++++++++++++++++---- cloud/dahua/src/main/java/com/example/dahua/utils/ExcelUtil2.java | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/resources/logback-spring.xml | 2 +- cloud/pom.xml | 10 +++++----- 8 files changed, 221 insertions(+), 10 deletions(-) create mode 100644 cloud/dahua/src/main/java/com/example/dahua/bean/yx/ExportStudentBean.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/utils/ExcelUtil2.java diff --git a/cloud/dahua/pom.xml b/cloud/dahua/pom.xml index 763242c..88c22d5 100644 --- a/cloud/dahua/pom.xml +++ b/cloud/dahua/pom.xml @@ -143,6 +143,12 @@ pinyin4j 2.5.0 + + + cn.afterturn + easypoi-spring-boot-starter + 4.3.0 + diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/yx/ExportStudentBean.java b/cloud/dahua/src/main/java/com/example/dahua/bean/yx/ExportStudentBean.java new file mode 100644 index 0000000..f35f3e8 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/yx/ExportStudentBean.java @@ -0,0 +1,49 @@ +package com.example.dahua.bean.yx; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +import java.io.Serializable; + +public class ExportStudentBean implements Serializable { + + @Excel(name = "姓名") + private String name; + @Excel(name = "班级") + private String className; + @Excel(name = "十六进制") + private String studentNum; + @Excel(name = "十进制") + private String studentNum10; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getStudentNum() { + return studentNum; + } + + public void setStudentNum(String studentNum) { + this.studentNum = studentNum; + } + + public String getStudentNum10() { + return studentNum10; + } + + public void setStudentNum10(String studentNum10) { + this.studentNum10 = studentNum10; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java b/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java index b83b03c..8d18a79 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java @@ -7,6 +7,7 @@ import com.example.dahua.dao.UserDao; import com.example.dahua.service.UserOperateService; import com.example.dahua.service.imp.BaseService; import com.example.dahua.utils.ExcelUtil; +import com.example.dahua.utils.ExcelUtil2; import com.example.dahua.utils.HttpUtils; import com.example.dahua.utils.ReadExcelUtil; import io.swagger.annotations.Api; @@ -19,10 +20,12 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 用户信息、人脸、卡信息、权限下发控制类 @@ -119,6 +122,21 @@ public class UserOperateController { userOperateService.saveStudentInfo(readExcel, fileName); } + /** + * 中意导出学生名单 + * @param schoolId + * @param request + * @param response + */ + @ApiOperation(value = "导入学生信息") + @RequestMapping(value = "exportStudent", method = RequestMethod.GET) + public void importExcel(@RequestParam("schoolId") Integer schoolId, + HttpServletRequest request, HttpServletResponse response){ + + List> sheetList = userOperateService.exportStudent(schoolId,"188368,188369,188370,188371"); + ExcelUtil2.exportExcelByEasyPoi(sheetList,"中意",request,response); + } + @ApiOperation(value = "艺校照片特定下发") @RequestMapping(value = "sendYxFace", method = RequestMethod.POST) public Result sendFaceByThread(@RequestBody YxSendFaceDto sendFaceDto) { diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java b/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java index 22dbc5a..7dc84bd 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java @@ -6,6 +6,7 @@ import com.example.dahua.bean.yx.YxSendFaceDto; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 下发用户信息、人脸、卡、权限接口 @@ -40,4 +41,6 @@ public interface UserOperateService { Result sendYxUserFace(YxSendFaceDto sendFaceDto); void sendCard(String cardNum,Integer schoolId,String deviceIds); + + List> exportStudent(Integer schoolId, String deviceIds); } diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java index b7d071a..0b75fd0 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java @@ -1,13 +1,11 @@ package com.example.dahua.service.imp; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.example.dahua.MyTask; import com.example.dahua.bean.SendRecordBean; import com.example.dahua.bean.StudentBean; import com.example.dahua.bean.UserInfoBean; -import com.example.dahua.bean.yx.ImportStudent; -import com.example.dahua.bean.yx.Result; -import com.example.dahua.bean.yx.ResultGenerator; -import com.example.dahua.bean.yx.YxSendFaceDto; +import com.example.dahua.bean.yx.*; import com.example.dahua.dao.UserDao; import com.example.dahua.lib.CompressPic; import com.example.dahua.lib.FilePath; @@ -324,4 +322,47 @@ public class UserOperateServiceImpl implements UserOperateService { } }); } + + + @Override + public List> exportStudent(Integer schoolId,String classIds) { + // 将sheet1、sheet2使用得map进行包装 + List> sheetsList = new ArrayList<>(); + //根据类型获取下发用户信息 + List studentBeanList = baseService.getStudentByClassId(schoolId,classIds); + log.info("统计共有下发用户数量:{}",studentBeanList.size()); + + List studentBeans = studentBeanList.stream().map(s->{ + ExportStudentBean studentBean = new ExportStudentBean(); + studentBean.setName(s.getName()); + studentBean.setClassName(s.getClass_name()); + studentBean.setStudentNum(s.getStudent_num()); + studentBean.setStudentNum10(Long.parseLong(getCard(s.getStudent_num()),16)+""); + return studentBean; + }).collect(Collectors.toList()); + + String title = "学事通升学汇大数据(多元升学规划定位表)"; + ExportParams exportParams = new ExportParams(); + exportParams.setSheetName("选科规划"); + exportParams.setTitle(title); + Map universityMap = new HashMap<>(); + universityMap.put("title", exportParams); + + universityMap.put("entity", ExportStudentBean.class); + universityMap.put("data", studentBeans); + sheetsList.add(universityMap); + return sheetsList; + } + + public static String getCard(String cardNo) { + if (cardNo.length() == 8) { + int length = cardNo.length(); + String result = cardNo.substring(length - 2, length) + cardNo.substring(length - 4, length - 2) + cardNo.substring(length - 6, length - 4) + + cardNo.substring(length - 8, length - 6); + return result; + } else { + System.out.println("卡号位数不对:" + cardNo); + return ""; + } + } } diff --git a/cloud/dahua/src/main/java/com/example/dahua/utils/ExcelUtil2.java b/cloud/dahua/src/main/java/com/example/dahua/utils/ExcelUtil2.java new file mode 100644 index 0000000..e61d33c --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/utils/ExcelUtil2.java @@ -0,0 +1,94 @@ +package com.example.dahua.utils; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import org.apache.poi.ss.usermodel.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; + + +/** + * Excel相关处理 + * + * @author liudhc + */ +public class ExcelUtil2 { + + private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class); + + /** + * 导出多个Sheet + * @param sheetsList + * @param sheetName + * @param request + * @param response + */ + public static void exportExcelByEasyPoi(List> sheetsList,String sheetName, HttpServletRequest request, HttpServletResponse response) { + //功能描述:把同一个表格多个sheet测试结果重新输出, + Workbook workBook = null; + try { + // 执行方法 + workBook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF); + //文件名 + String fileName = sheetName; + fileName = getFileName(request, fileName); + //设置编码格式 + response.setCharacterEncoding(StandardCharsets.UTF_8.name()); + //设置内容类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + //设置头及文件命名。 + response.setHeader("Content-Disposition","attachment;filename="+ fileName +".xlsx"); + //写出流 + workBook.write(response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); + log.error("导出Excel异常{}", e.getMessage()); + } finally { + if (workBook != null) { + try { + //强行关流 + workBook.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + public static String getFileName(HttpServletRequest request, String fileName) throws UnsupportedEncodingException + { + final String agent = request.getHeader("USER-AGENT"); + String filename = fileName; + if (agent.contains("MSIE")) + { + // IE浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + filename = filename.replace("+", " "); + } + else if (agent.contains("Firefox")) + { + // 火狐浏览器 + filename = new String(fileName.getBytes(), "ISO8859-1"); + } + else if (agent.contains("Chrome")) + { + // google浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + } + else + { + // 其它浏览器 + filename = URLEncoder.encode(filename, "utf-8"); + } + return filename; + } +} \ No newline at end of file diff --git a/cloud/dahua/src/main/resources/logback-spring.xml b/cloud/dahua/src/main/resources/logback-spring.xml index 294230b..fe4ef93 100644 --- a/cloud/dahua/src/main/resources/logback-spring.xml +++ b/cloud/dahua/src/main/resources/logback-spring.xml @@ -9,7 +9,7 @@ - + diff --git a/cloud/pom.xml b/cloud/pom.xml index 3ede0bb..65f2acd 100644 --- a/cloud/pom.xml +++ b/cloud/pom.xml @@ -31,7 +31,7 @@ common dahua haikangface - + quartz @@ -54,10 +54,10 @@ 1.2.58 compile - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - + + + + org.springframework.boot spring-boot-configuration-processor -- libgit2 0.21.0