- 浏览: 10061 次
最新评论
文章列表
C#委托实现了类内部的方法暴露给调用者,类似C++中的方法指针,方法以返回值的形式传递。这种设计方式可以实现统一方法名。
import java.util.*;
import java.lang.reflect.*;
interface Command {
Method executeMethod();
}
class StartComputer implements Command {
Class classType = StartComputer.class;
public Method executeMethod() {
try {
retu ...
如果导出的任务正在进行中时,系统异常关闭,那么再次启动时应该自动将上次未操作完的和未处理的任务重新加入到处理队列中。
操作流程如下:
首先从数据库中读取未完成的任务,按照第一篇文章中分享的PDM图,参数是以字符串的方式保存的。所以读取完任务后,会解析参数字符串,生成相应的Map。其次,根据参数信息,生成线程。最后,提交线程到ProcessOrderExportService中。
部分代码如下:
private static void resumeUnfinishedExportExcelJob() {
AsynchronyEx ...
当异步导出使用一段时间后,会出现大量的没有用的excel文件,占用大量系统硬盘空间,因此,异步excel表格处理还需要有定时删除一定时间前的数据功能。
针对上面的问题,我采用quartz的CronTrigger触发方法,定时触发删除excel文件的任务。定时删除Job工作流程如下:
job首先查询数据库里一定时间前的标记未删除结果文件的任务,然后通过File类去判断文件是否依然存在。如果存在,就删除文件。Job及配置代码如下:
public class AsynchronyExportDeleteJob extends QuartzJob ...
上一篇文章分享了用户下载任务的提交与下载,以及系统中对任务的保存方式,这篇文章,主要分享excel处理部分。excel处理基本流程如下:
excel处理线程首先要获得生成excel表格的基本数据(其中不包括大的查询数据),保存到新创建的beansMap中;然后对于大的数据多次查询,将多次查询结果List统一保存到一个List中,最后保存到beansMap中,通过jxls生成excel报表。
public void run() {
if(orderViewService != null && pager != null) {
...
在现在的ERP系统中,数据库往往很大,批量导出几万甚至几十万条记录已经是很常见的事情。一般数据库里存在着上百万甚至上千万的数据,这种情况,对于一般的服务器,数据库查询时间要超过十分钟,对于复杂 ...