1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情。其他不说,先上代码:
1 package com.tydic.eshop.action.feedback; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.FileInputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.text.SimpleDateFormat; 9 import java.util.Date; 10 import java.util.List; 11 12 import javax.annotation.Resource; 13 import javax.servlet.http.HttpServletRequest; 14 import org.apache.struts2.ServletActionContext; 15 16 import com.tydic.eshop.dto.feedback.vo.FeedBackVO; 17 import com.tydic.eshop.model.feedback.FeedBack; 18 import com.tydic.eshop.service.feedback.FeedBackService; 19 import com.tydic.eshop.util.feedback.ExportExcelUtils; 20 import com.tydic.framework.base.dataobject.Pagination; 21 import com.tydic.framework.base.dataobject.ResultDto; 22 import com.tydic.framework.base.exception.ServiceException; 23 import com.tydic.framework.base.web.struts.BaseSupportAction; 24 25 /** 26 * @ClassName: FeedBackAction 27 * @Description: ECP后台增加意见日志导出功能 28 * @author liuren 29 * @date 2016年3月25日 30 * 31 */ 32 public class FeedBackAction extends BaseSupportAction{ 33 34 private static final long serialVersionUID = 5684835836631112914L; 35 @Resource(name = "feedBackService") 36 private FeedBackService feedbackService; 37 38 private FeedBack feedback; 39 private FeedBackVO feedbackVO; 40 41 private List<FeedBack> feedbackList; 42 43 private String feedbackId; 44 45 private ResultDto<FeedBack> feedbackPage; 46 47 private InputStream excelStream; //输出流变量 48 private String excelFileName; //下载文件名 49 /** 50 * 总页数 51 */ 52 private int totalPage; 53 private FileInputStream stream; 54 55 public String execute() throws Exception { 56 //这里可加入权限控制 57 return "downloadsuccess"; 58 } 59 /** 60 * 意见反馈查询 61 * @return 62 * @throws Exception 63 */ 64 public String queryFeedBackList() throws ServiceException{ 65 if(feedbackVO == null){ 66 feedbackVO = new FeedBackVO(); 67 } 68 HttpServletRequest request = ServletActionContext.getRequest(); 69 String currentPage = request.getParameter("index"); 70 int currentPagei=0; 71 if(currentPage!=null){ 72 currentPagei = Integer.parseInt(currentPage); 73 } 74 Pagination pagination = new Pagination(currentPagei); 75 String pagesize = request.getParameter("pageSize"); 76 if(pagesize==null){ 77 pagesize="10"; 78 } 79 pagination.setPageSize(Integer.parseInt(pagesize)); 80 81 feedbackVO.setPagination(pagination); 82 try { 83 feedbackPage = feedbackService.findFeedBackPage(feedbackVO); 84 totalPage = feedbackPage.getPagination().getTotalPage(); 85 } catch (Exception e) { 86 throw new ServiceException("数据分页查询失败"+e.getMessage()); 87 } 88 return "toFeedBackListPage"; 89 } 90 91 /** 92 * @throws IOException 93 * @throws 94 * @Title: exportExecl 95 * @Description: 报表导出并下载 96 * @param @return 97 * @param @throws ServiceException 参数 98 * @return String 返回类型 99 * @throws 100 */ 101 public String exportExecl() throws ServiceException, IOException{ 102 ExportExcelUtils<FeedBack> ex = new ExportExcelUtils<FeedBack>(); 103 Date fileDate = new Date(); 104 System.out.println(fileDate); 105 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss"); 106 String ds = sdf.format(fileDate); 107 String fileName = "意见反馈报表"+ds+".xls"; //生成的文件名称 108 System.out.println(fileName); 109 String exportPath = request.getSession().getServletContext().getRealPath("/WEB-INF/download/"+fileName); 110 String[] headers = { "序号", "渠道标示", "手机号码", "终端机型", "反馈信息内容", "创建时间", "图片地址", "版本号", "状态" }; 111 if (exportPath==null||exportPath==""||exportPath==" ") { 112 throw new ServiceException("请选择导出目录"); 113 } 114 try { 115 feedbackList = feedbackService.findFeedBackList(feedbackVO); 116 } catch (Exception e) { 117 e.printStackTrace(); 118 throw new ServiceException("数据查询失败"+e.getMessage()); 119 } 120 121 ByteArrayOutputStream out = new ByteArrayOutputStream(); 122 ByteArrayOutputStream os = ex.exportExcel("海航通信意见反馈报表",headers, feedbackList, out,"yyyy/MM/dd HH:mm:ss"); 123 124 byte[] fileContent = os.toByteArray(); 125 ByteArrayInputStream is = new ByteArrayInputStream(fileContent); 126 127 excelStream = is; //文件流 128 excelFileName = new String(fileName.getBytes(), "ISO8859-1"); //设置下载的文件名 129 System.out.println(excelFileName); 130 131 return "successdownload"; 132 } 133 /** 134 * @Title: queryFeedBackById 135 * @Description: 根据意见反馈Id查询意见反馈详情 136 * @param @return 137 * @param @throws ServiceException 参数 138 * @return String 返回类型 139 * @throws 140 */ 141 public String queryFeedBackById() throws ServiceException{ 142 feedback = feedbackService.queryFeedBackById(feedbackId); 143 return "toFeedBackDetailPage"; 144 } 145 146 public FeedBackVO getFeedbackVO() { 147 return feedbackVO; 148 } 149 public void setFeedbackVO(FeedBackVO feedbackVO) { 150 this.feedbackVO = feedbackVO; 151 } 152 public List<FeedBack> getFeedbackList() { 153 return feedbackList; 154 } 155 public void setFeedbackList(List<FeedBack> feedbackList) { 156 this.feedbackList = feedbackList; 157 } 158 public String getFeedbackId() { 159 return feedbackId; 160 } 161 public void setFeedbackId(String feedbackId) { 162 this.feedbackId = feedbackId; 163 } 164 165 public ResultDto<FeedBack> getFeedbackPage() { 166 return feedbackPage; 167 } 168 public void setFeedbackPage(ResultDto<FeedBack> feedbackPage) { 169 this.feedbackPage = feedbackPage; 170 } 171 public int getTotalPage() { 172 return totalPage; 173 } 174 public void setTotalPage(int totalPage) { 175 this.totalPage = totalPage; 176 } 177 public FeedBack getFeedback() { 178 return feedback; 179 } 180 public void setFeedback(FeedBack feedback) { 181 this.feedback = feedback; 182 } 183 public InputStream getExcelStream() { 184 return excelStream; 185 } 186 public void setExcelStream(InputStream excelStream) { 187 this.excelStream = excelStream; 188 } 189 public String getExcelFileName() { 190 return excelFileName; 191 } 192 public void setExcelFileName(String excelFileName) { 193 this.excelFileName = excelFileName; 194 } 195 public FileInputStream getStream() { 196 return stream; 197 } 198 public void setStream(FileInputStream stream) { 199 this.stream = stream; 200 } 201 202 203 }