package com.ots.framework.web.controller; import cn.hutool.core.util.URLUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ots.common.utils.DateUtils; import com.ots.common.utils.StringUtils; import com.ots.common.utils.security.ShiroUtils; import com.ots.common.utils.sql.SqlUtil; import com.ots.framework.web.domain.AjaxResult; import com.ots.framework.web.domain.AjaxResult.Type; import com.ots.framework.web.page.PageDomain; import com.ots.framework.web.page.TableDataInfo; import com.ots.framework.web.page.TableSupport; import com.ots.project.system.user.domain.User; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.core.io.ClassPathResource; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.beans.PropertyEditorSupport; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class BaseController { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { @Override public void setAsText(String text) { setValue(DateUtils.parseDate(text)); } }); } protected void startPage() { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); PageHelper.startPage(pageNum, pageSize, orderBy); } } @SuppressWarnings({"rawtypes", "unchecked"}) protected TableDataInfo getDataTable(List list) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(0); rspData.setRows(list); rspData.setTotal(new PageInfo(list).getTotal()); return rspData; } protected AjaxResult toAjax(int rows) { return rows > 0 ? success() : error(); } protected AjaxResult toAjax(boolean result) { return result ? success() : error(); } public AjaxResult success() { return AjaxResult.success(); } public AjaxResult error() { return AjaxResult.error(); } public AjaxResult success(String message) { return AjaxResult.success(message); } public AjaxResult error(String message) { return AjaxResult.error(message); } public AjaxResult error(Type type, String message) { return new AjaxResult(type, message); } public String redirect(String url) { return StringUtils.format("redirect:{}", url); } public User getSysUser() { return ShiroUtils.getSysUser(); } public void setSysUser(User user) { ShiroUtils.setSysUser(user); } public Long getUserId() { return getSysUser().getUserId(); } public String getLoginName() { return getSysUser().getLoginName(); } public static void main(String[] args) { String line = "xxxxx"; System.out.println(getJson(line, "time_slot_list")); } public static String getJson(String json, String key) { String pattern = key + "\": \\{[^}]*\\}"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(json); if (m.find()) { String group = m.group(0); group = group.replace(key + "\":", key + "\":["); group += "]"; return json.replaceAll(pattern, group); } return json; } public void downDeviceManagementTemplate(String fileName, String path , HttpServletRequest req, HttpServletResponse res) throws UnsupportedEncodingException { // 读取服务器端模板文件 // ClassPathResource类的构造方法接收路径名称,自动去classpath路径下找文件 ClassPathResource classPathResource = new ClassPathResource(path); //创建临时文件 XSSFWorkbook workbook = null; try (InputStream inputStream = classPathResource.getInputStream()) { // 转为POI的Workbook输出流,这样下载后 打开不报错,直接输出 流 的话,打开excel可能提示错误 workbook = new XSSFWorkbook(inputStream); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("模板下载异常"); } String userAgent = req.getHeader("User-Agent"); // 针对IE或者以IE为内核的浏览器: if(userAgent.contains("MSIE")||userAgent.contains("Trident")) { fileName = URLUtil.encode(fileName, Charset.forName("UTF-8")); } else { // 非IE浏览器的处理: fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1"); } res.setHeader("Content-disposition", "attachment; filename=" + fileName); res.setContentType("application/vnd.ms-excel; charset=utf-8"); res.setCharacterEncoding("UTF-8"); // 将流中内容写出去 try (OutputStream outputStream = res.getOutputStream()) { workbook.write(outputStream); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("模板下载异常"); } } }