定时调用一个导出Excel文件的方法,但是报错,同样的方法,在postman中执行正常

报错信息

map的值:{beginTime=2020-10-14, endTime=2020-10-21}
准备插入的文件名是:D:/ruoyi/uploadPath/static/img/fever_发热门诊病例信息.csv
模板路径:D:/ruoyi/uploadPath/large/fever_发热门诊病例信息.xlsx
java.lang.NullPointerException
	at com.ruoyi.web.controller.fr.FrFrController.easyExcelAction(FrFrController.java:185)
	at com.ruoyi.web.controller.fr.FrFrController.easyExcel(FrFrController.java:219)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:56)
	at com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:38)
	at com.ruoyi.quartz.util.QuartzDisallowConcurrentExecution.doExecute(QuartzDisallowConcurrentExecution.java:19)
	at com.ruoyi.quartz.util.AbstractQuartzJob.execute(AbstractQuartzJob.java:43)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
18:40:00.765 [RuoyiScheduler_Worker-1] ERROR c.r.c.c.c.BaseController - [easyExcelAction,191] - 导出出错:null
18:40:00.768 [RuoyiScheduler_Worker-1] DEBUG c.r.q.m.S.insertJobLog - [debug,159] - ==>  Preparing: insert into sys_job_log( job_name, job_group, invoke_target, job_message, status, create_time )values( ?, ?, ?, ?, ?, sysdate() ) 
18:40:00.770 [RuoyiScheduler_Worker-1] DEBUG c.r.q.m.S.insertJobLog - [debug,159] - ==> Parameters: fever_发热门诊病例信息(String), DEFAULT(String), com.ruoyi.web.controller.fr.FrFrController.easyExcel(7)(String), fever_发热门诊病例信息 总共耗时:739毫秒(String), 0(String)
18:40:00.775 [RuoyiScheduler_Worker-1] DEBUG c.r.q.m.S.insertJobLog - [debug,159] - <==    Updates: 1
18:41:54.006 [Finalizer] WARN  c.a.e.ExcelWriter - [finalize,342] - Destroy object failed
com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.
	at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:378)
	at com.alibaba.excel.write.ExcelBuilderImpl.finish(ExcelBuilderImpl.java:95)
	at com.alibaba.excel.ExcelWriter.finish(ExcelWriter.java:329)
	at com.alibaba.excel.ExcelWriter.finalize(ExcelWriter.java:340)
	at java.lang.System$2.invokeFinalize(System.java:1270)
	at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:98)
	at java.lang.ref.Finalizer.access$100(Finalizer.java:34)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:210)
Caused by: java.io.IOException: Stream Closed
	at java.io.FileOutputStream.writeBytes(Native Method)
	at java.io.FileOutputStream.write(FileOutputStream.java:326)
	at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)
	at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:255)
	at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:360)
	at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:238)
	at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:377)
	at org.apache.poi.xssf.streaming.SXSSFWorkbook.injectData(SXSSFWorkbook.java:401)
	at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:936)
	at com.alibaba.excel.context.WriteContextImpl.finish(WriteContextImpl.java:339)
	... 7 common frames omitted
 

我的定时配置:

 


我的定时方法:

    /**
     * wsy导出调用接口
     * 定时导出
     * @param days
     * @return
     */
    @PostMapping("easyExcel")
    @ResponseBody
    public AjaxResult easyExcel(Integer days) {
        FrFr frFr = new FrFr();
        Object OBeginTime = TimeCon.getPastDate(days+1);//获取过去第几天的日期
        Object OendTime = TimeCon.getPastDate(1);//从今天的上一天开始
        //组合成一个Map数组
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("beginTime", OBeginTime);
        map.put("endTime", OendTime);

        System.out.println("map的值:"+map);
        frFr.setParams(map);
        AjaxResult ajaxResult = easyExcelAction(frFr);
        return ajaxResult;
    }
    public AjaxResult easyExcelAction(FrFr frFr)
    {
        //创建文件
        FileOutputStream fileOut;

        String reFileName = "static/img";
        if (!new File(Global.getProfile() + "/" + reFileName).exists()) {
            new File(Global.getProfile() +  "/" + reFileName).mkdirs();
        }
        reFileName = reFileName+"/fever_发热门诊病例信息.csv";
        /*   reFileName = reFileName+"/tj.csv";*/
        StringBuilder fileName = new StringBuilder();
        fileName.append(Global.getProfile() +  "/" + reFileName);
        try {
            //String dateStr = tools.getStringTodayNoKong();
            System.out.println("准备插入的文件名是:" + fileName);
            //需要先成一个后缀是。xlsx的文件,格式不对,不能正常打开
            File fileFill07 = new File(fileName.toString());
            if(!fileFill07.exists()){
                fileFill07.createNewFile();
            }

            String LargFilePath = "large";
            String large = LargFilePath+"/fever_发热门诊病例信息.xlsx";
            StringBuilder fileNameLarg = new StringBuilder();
            fileNameLarg.append(Global.getProfile() +  "/" + large);
            System.out.println("模板路径:"+fileNameLarg.toString());
            File template07 = new File(fileNameLarg.toString());

            ExcelWriter excelWriter = EasyExcel.write(fileFill07).withTemplate(template07).build();
            WriteSheet writeSheet = EasyExcel.writerSheet().build();


            List<FrFr> frFrs = frFrService.selectFrFrList(frFr);
            //System.out.println("待导出的数据" + tj0staffs);
            excelWriter.fill(frFrs, writeSheet);
            excelWriter.finish();
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("导出出错:{}", e.getMessage());
            return error("导出出错!");

        }

        return success(Constants.RESOURCE_PREFIX+"/"+reFileName);

    }
 

执行后的效果:

 

 

断点跟踪,这里导致空指针。定时任务对service有影响?

 
 

网上有许多springboot的定时任务中@Autowired失效的说法,但是不一致,不知道在若依中怎么解决?

 

例如:List<xxx> list = SpringUtils.getBean(ISysOperLogService.class).select();

这样做,我试验成功了,谢谢!

posted @ 2023-04-21 23:26  binbinx  阅读(282)  评论(0编辑  收藏  举报