设为首页 加入收藏

TOP

页面添加下载任务,后台开启线程异步下载,下载完成更新任务状态
2019-05-11 02:06:46 】 浏览:69
Tags:页面 添加 下载 任务 后台 开启 线程 异步 完成 更新 状态


@RequestMapping("addExportTaskAndExportExcel")
@ResponseBody
public MessageBean addExportTaskAndExportExcel(HttpServletRequest request) {
MessageBean messageBean = null;
String topicId = request.getParameter("topicId");
String exportType = request.getParameter("exportType");
String postStartTime = request.getParameter("postStartTime");
String postEndTime = request.getParameter("postEndTime");
String spiderStartTime = request.getParameter("spiderStartTime");
String spiderEndTime = request.getParameter("spiderEndTime");
String exportArticleContentFlag = request.getParameter("exportArticleContentFlag");
try {
TaskBean taskBean = new TaskBean();
String name = "【主题文章导出】";
taskBean.setType((short) 2); //主题文章导出
taskBean.setStatus((short) 1); //处理中
taskBean.setName(name);
taskBean.setRemark(null);
taskBean.setResult(null);

TopicArticleExportTaskBean bean = new TopicArticleExportTaskBean();
bean.setTopicId(topicId);
bean.setExportType(exportType);
bean.setPostStartTime(postStartTime);
bean.setPostEndTime(postEndTime);
bean.setSpiderStartTime(spiderStartTime);
bean.setSpiderEndTime(spiderEndTime);
bean.setExportArticleContentFlag(exportArticleContentFlag);

String contentJson = JsonUtil.toJson(bean);
log.info("===contentJson===" +contentJson + "===");

taskBean.setContent(contentJson);

Integer result = topicSupport.addExportTask(taskBean);
if(result!=null) {
messageBean = buildMessage(MESSAGE_TYPE_SUCCESS, "成功");
} else {
messageBean = buildMessage(MESSAGE_TYPE_ERROR, "失败");
}
String path= request.getRealPath("/");

Thread t= new Thread(new ExportTask(path, bean, result));
t.setDaemon(false);
t.start();

} catch (Exception e) {
log.error("===addExportTaskAndExportExcel==="+e.getMessage(), e);
messageBean = buildMessage(MESSAGE_TYPE_ERROR, "失败");
}
return messageBean;
}

private class ExportTask implements Runnable {
private String path;
private TopicArticleExportTaskBean bean;
private Integer result;

public ExportTask(String path, TopicArticleExportTaskBean bean, Integer result){
this.path = path;
this.bean = bean;
this.result = result;
}

@Override
public void run() {
String topicId =bean.getTopicId();
log.info("===result===" + result + "===topicId===" + bean.getTopicId() + "===postStartTime===" + bean.getPostStartTime() + "===postEndTime===" + bean.getPostEndTime() + "===spiderStartTime===" + bean.getSpiderStartTime() + "===spiderEndTime===" + bean.getSpiderEndTime() + "===");
List<ArticleBean> artList = topicSupport.queryTopicArticleExportList(bean.getTopicId(),bean.getPostStartTime(), bean.getPostEndTime(), bean.getSpiderStartTime(), bean.getSpiderEndTime());

try {
if(bean.getExportArticleContentFlag()!=null && "1".equals(bean.getExportArticleContentFlag())){
if(CollectionUtils.isNotEmpty(artList)){
for(ArticleBean articleBean : artList){
String content = articleService.findArticle(articleBean.getGuid()).getContent();
content = (null == content"":content);
articleBean.setContent(content);
}
}
}
} catch (ArticleServiceException e1) {
log.error(e1.getMessage(), e1);
}

Map<String,Object> beans = new HashMap<String,Object>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
beans.put("dateFormat", dateFormat);
beans.put("resultList", artList);
beans.put("tag", SpringContextUtil.getBean(TagUtil.class));
beans.put("constUtil", SpringContextUtil.getBean(ConstUtil.class));
XLSTransformer transformer = new XLSTransformer();
transformer.markAsFixedSizeCollection("resultList");

String templateFile = path+"//WEB-INF/classes/template/topicArticleReportTemplate.xls";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String dateTime = sdf.format(new Date()) ;
String fileName = topicId + "_" + dateTime + ".xls";


String tagerPath = topicArticleExportFilePath + topicId + "/";
File targetFile = new File(tagerPath);
if(!targetFile.exists()){
targetFile.mkdirs();
targetFile = null;
}

String reportFile = topicArticleExportFilePath +topicId + "/" + fileName;

TaskBean updateTaskBean = new TaskBean();
updateTaskBean.setId(result);
updateTaskBean.setUpdateTime(new Date());
try {
transformer.transformXLS(templateFile, beans, reportFile);
updateTaskBean.setStatus((short)2); //成功
updateTaskBean.setResult(fileName);
Integer updResult = topicSupport.updateExportTask(updateTaskBean);
log.info("===id==="+updateTaskBean.getId() + "===status==="+updateTaskBean.getStatus() + "===fileName==="+updateTaskBean.getResult() + "===updResult==="+updResult);

} catch (ParsePropertyException e) {
log.error("===addExportTaskAndExportExcel===ParsePropertyException==="+e.getMessage(), e);
updateTaskBean.setStatus((short)3); //失败
updateTaskBean.setResult("ParsePropertyException:"+e.getMessage());
try {
topicSupport.updateExportTask(updateTaskBean);
} catch (TaskServiceException e1) {
e1.printStackTrace();
}
} catch (InvalidFormatException e) {
log.error("===addExportTaskAndExportExcel===InvalidFormatException==="+e.getMessage(), e);
updateTaskBean.setStatus((short)3); //失败
updateTaskBean.setResult("InvalidFormatException:"+e.getMessage());
try {
topicSupport.updateExportTask(updateTaskBean);
} catch (TaskServiceException e1) {
e1.printStackTrace();
}

} catch (IOException e) {
log.error("===addExportTaskAndExportExcel===IOException==="+e.getMessage(), e);
updateTaskBean.setStatus((short)3); //失败
updateTaskBean.setResult("IOException:"+e.getMessage());
try {
topicSupport.updateExportTask(updateTaskBean);
} catch (TaskServiceException e1) {
e1.printStackTrace();
}
} catch (TaskServiceException e) {
log.error("===updateExportTask===TaskServiceException==="+e.getMessage(), e);
}
}
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇度量驱动开发 下一篇CDH集群安装部署

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目