Timedtask.java 6.02 KB
package com.hui.iqiyi.schedule;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.hui.iqiyi.Util.MailUtil;
import com.hui.iqiyi.entity.Movie;
import com.hui.iqiyi.excel.*;
import com.hui.iqiyi.request.ProRequest;
import com.hui.iqiyi.response.ContentResponse;
import com.hui.iqiyi.response.ProgramCalcu;
import com.hui.iqiyi.response.ProgramSyResponse;
import com.hui.iqiyi.service.IMovieService;
import com.hui.iqiyi.service.IProgramService;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

@Component//注入bean
public class Timedtask {

    @Autowired
    private IMovieService iMovieService;

    @Autowired
    private IProgramService iProgramService;

    @Value("${recievers.shoujianren}")
    private String Youxiang;

    @Value("${filePath}")
    private String path;
    //添加定时任务
    //@Scheduled(cron = "0 20 16 * * 5 ")//每周五16时20分发送
   // @Scheduled(cron = "0/5 * * * * ?")
    public void Timedtask() {

        try {

            //新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(path).build();
            //获取sheet0对象
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "介质文件下载统计文件").head(DownloadExcel.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            List<Movie> movies = iMovieService.selectAllPopulation().stream().filter(item->item.getLocalStatus()==100).collect(Collectors.toList());
            excelWriter.write(movies, mainSheet);

            //获取sheet1对象
            WriteSheet detailSheet = EasyExcel.writerSheet(1, "吉林关注片单").head(ProgramsExcel.class).build();
            //向sheet1写入数据 传入空list这样只导出表头
            List<ProgramSyResponse> programSyResponses = new ArrayList<>();
            programSyResponses.add(iProgramService.selectAllProgramCount());
            excelWriter.write(programSyResponses, detailSheet);
            //获取sheet1对象
            WriteSheet detailSheet1 = EasyExcel.writerSheet(2, "剧集单片数量").head(ProgramAllExcel.class).build();
            //向sheet1写入数据 传入空list这样只导出表头
            List<ContentResponse> contentResponses = new ArrayList<>();
            contentResponses.add(iProgramService.selectAllPrograms());
            excelWriter.write(contentResponses, detailSheet1);

            //获取sheet2对象
            WriteSheet SevenSheetDownload = EasyExcel.writerSheet(3, "近七日下载情况").head(ProsevenDownload.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            ProRequest proRequest = new ProRequest();
            excelWriter.write(iProgramService.selectAllSeven(proRequest), SevenSheetDownload);

            //获取sheet2对象
            WriteSheet SevenSheetzation = EasyExcel.writerSheet(4, "近七日同步情况").head(MoveExcel.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            ProRequest proRequest1 = new ProRequest();
            excelWriter.write(iMovieService.selectAllSevenxz(proRequest1), SevenSheetzation);
            //关闭流
            excelWriter.finish();
            try {
                List<ProgramCalcu> integers = iProgramService.selectCalculation();
                //接收人放到配置文件里
                //String to="2292269071@qq.com";
                File file = new File(path);
                MailUtil.sendText(Youxiang ,"爱奇艺统计", "各位好:\n" +
                        "    截止至 "+new SimpleDateFormat("yyyy-MM-dd").format(new Date()) +"日 爱奇艺同步下载统计如下\n" +
                        "     剧集数量:"+contentResponses.get(0).getDrama()+"部;\n" +
                        "     单片数量:"+contentResponses.get(0).getMonolithic()+"部;\n" +
                        "   介质下载 数量:"+movies.get(0).getNumber()+"集\n" +
                        "                 容量"+movies.get(0).getCapacity()+" G\n" +
                        "                时长:"+movies.get(0).getDuration()+" 小时\n" +
                        "            下载速度 大约 5 M/s\n" +
                        " 吉林片单中   :\n" +
                        "            剧集:"+programSyResponses.get(0).getDrama()+"部\n" +
                        "            单片:"+programSyResponses.get(0).getMonolithic()+"部\n" +
                        "            已下载数量:"+programSyResponses.get(0).getXzNumbe()+"集\n" +
                        "            已下载容量:"+programSyResponses.get(0).getXzSize()+"G\n" +
                        "            已下载时长:"+programSyResponses.get(0).getTotlDuration()+"小时\n" +
                        "            未下载数量:"+programSyResponses.get(0).getFailSum()+"集\n" +
                        "            未同步数量:"+programSyResponses.get(0).getTotlFee()+"集\n" +
                        "    \n" +
                        "            未下载预计容量: "+integers.get(0).getXzSize()+"G\n" +
                        "            未下载预计时长:"+integers.get(0).getTotlDuration()+"小时\n" +
                        "            预计需要下载时间:10天\n" +
                        "\n" +
                        "详情见以下附件:", file);
            } catch (Exception e) {
                System.out.println("发送邮件失败{}"+ e);
            }
        } catch (Exception e) {
            System.out.println("导出异常"+ e.getMessage());
        }


    }
}