spring的定时任务配置

时间:2021-11-27 07:52:19

工作中需求:每天早上定时将数据查询出来只作为excel上传至远程服务器

配置spring的xml文件

<!--配置spring的定时任务bean  触发器Trigger[] 集合 他的值为list里面的定时触发器对象 -->
    <bean id="schedulerTasksWeb"
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="exportTask1" />
            </list>
        </property>
    </bean>

    <!--配置包扫描-->
    <context:component-scan base-package="com.spark.service.mkExcel"/>
    <!--定时导入-->

    <!--配置定时任务的rgetObject- 要定时执行哪个类哪个方法-->
    <bean id="testTask"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="concurrent" value="false" />
        <property name="targetObject" ref="test" />
        <property name="targetMethod" value="say" />
    </bean>

    <!--配置定时任务是哪个JobDetail类 引用上面的  cronExpression执行周期 与linux的crontab一样-->
    <bean id="exportTask1"
          class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="testTask" />
        <property name="cronExpression" value="*/10 * * * * ?" />
    </bean>
服务端url的接口代码
@RequestMapping(value = "/stat/upload")
    public Object uploadStat(@RequestParam(value="datafile", required = false)MultipartFile multipartFile) {
        if(multipartFile==null) {
            return false;
        }
        String fileName = FileUtil.uploadFile(multipartFile);
        if(fileName!=null) {
            ...
            return true;
        } else {
            return false;
        }
    }

客户端上传文件值一个url接口的方法

public class PostUpload {

  @Test
    public void UploadFile() {
        try {
            File imgFile = new File("E:\\MyProject\\sparkStu_web\\data\\ss.text");
            if (imgFile.exists()) {
                HttpClient client = new DefaultHttpClient();

                HttpPost httpPost = new HttpPost("http://xxxx/stat/upload");
                MultipartEntity entity = new MultipartEntity();
                entity.addPart("datafile", new FileBody(imgFile));

                httpPost.setEntity(entity);
                HttpResponse response = client.execute(httpPost);

                HttpEntity responseEntity = response.getEntity();
                String result = EntityUtils.toString(responseEntity);
                System.out.println(result);
                if ("false".equals(result)){
                    System.out.println("上传失败");
                }
                else{System.out.println("上传成功");}

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

从Dao层借口返回的list集合数据形成excel

  List<ContPageDay> list = this.contPageDayService.expList2(params);
        log.error("数据共===="+list.get(list.size()));
        //HSSFWorkbook workbook = new HSSFWorkbook();
//        XSSFWorkbook workbook = new XSSFWorkbook();
        SXSSFWorkbook workbook = new SXSSFWorkbook(1000);
        Sheet sheet = null;
        Row row;
        Cell cell;

//        XSSFFont font =workbook.createFont();
        Font font =workbook.createFont();
        font.setColor(IndexedColors.RED.index);
        font.setFontHeightInPoints((short)12);
//        font.setBoldweight(XSSFFont.BOLDWEIGHT_NORMAL);
        font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
//        XSSFCellStyle style1 = workbook.createCellStyle();
        CellStyle style1 = workbook.createCellStyle();
        style1.setFont(font);
//        style1.setAlignment(XSSFCellStyle.ALIGN_CENTER);
        style1.setAlignment(CellStyle.ALIGN_CENTER);

        int sheetNum = 1;

        for (int i = 0; i < list.size(); i++) {
            int remainder = i % 65535;
            if (remainder == 0) {
                sheet = workbook.createSheet("内容受访明细表" + sheetNum);
                sheet.setColumnWidth(0, 20*256);
                sheet.setColumnWidth(1, 20*256);
                sheet.setColumnWidth(2, 20*256);
                sheet.setColumnWidth(3, 20*256);
                sheet.setColumnWidth(4, 20*256);
                sheet.setColumnWidth(5, 20*256);

                row = sheet.createRow(0);
                row.setRowStyle(style1);
                row.setHeight((short)350);

                cell = row.createCell(0);
                cell.setCellValue("日期");
                cell.setCellStyle(style1);

                cell = row.createCell(1);
                cell.setCellValue("源内容ID");
                cell.setCellStyle(style1);

                cell = row.createCell(2);
                cell.setCellValue("源内容标题");
                cell.setCellStyle(style1);

                cell = row.createCell(3);
                cell.setCellValue("IP数");
                cell.setCellStyle(style1);

                cell = row.createCell(4);
                cell.setCellValue("UV数");
                cell.setCellStyle(style1);

                cell = row.createCell(5);
                cell.setCellValue("PV数");
                cell.setCellStyle(style1);
                sheetNum++;
            }
//              
            row = sheet.createRow(remainder + 1);
            cell = row.createCell(0);
            cell.setCellValue(list.get(i).getStatDate());
            cell = row.createCell(1);
            cell.setCellValue(list.get(i).getSrcContId());
            cell = row.createCell(2);
            cell.setCellValue(list.get(i).getSrcContName());
            cell = row.createCell(3);
            cell.setCellValue(list.get(i).getIp());
            cell = row.createCell(4);
            cell.setCellValue(list.get(i).getUv());
            cell = row.createCell(5);
            cell.setCellValue(list.get(i).getPv());

        }
        File file=new File("E:\\data\\ss.xls");
        if (!file.exists()){
            file.mkdir();
        }
        FileOutputStream outputStream = new FileOutputStream(file);
        workbook.write(outputStream);
        outputStream.flush();
        outputStream.close();
        log.info("成功");
    }