Commit 4f399134 4f399134e0e3ecfd2a30249952eec8080e46335d by 姬傲辉

添加了导出excel并发送邮件功能

修改了查询全部
1 parent ad69ee0d
1 package com.hui.iqiyi.Util;
2
3 import java.io.File;
4 import java.io.InputStream;
5 import java.util.Collection;
6 import java.util.List;
7 import java.util.Map;
8 import java.util.Map.Entry;
9
10 import cn.hutool.core.collection.CollUtil;
11 import cn.hutool.core.io.IoUtil;
12 import cn.hutool.core.map.MapUtil;
13 import cn.hutool.core.util.StrUtil;
14 import cn.hutool.extra.mail.GlobalMailAccount;
15 import cn.hutool.extra.mail.Mail;
16 import cn.hutool.extra.mail.MailAccount;
17
18 /**
19 * 邮件工具类,基于javax.mail封装
20 *
21 * @author looly
22 * @since 3.1.2
23 */
24 public class MailUtil {
25 /**
26 * 使用配置文件中设置的账户发送文本邮件,发送给单个或多个收件人<br>
27 * 多个收件人可以使用逗号“,”分隔,也可以通过分号“;”分隔
28 *
29 * @param to 收件人
30 * @param subject 标题
31 * @param content 正文
32 * @param files 附件列表
33 * @since 3.2.0
34 */
35 public static void sendText(String to, String subject, String content, File... files) {
36 send(to, subject, content, false, files);
37 }
38
39 /**
40 * 使用配置文件中设置的账户发送HTML邮件,发送给单个或多个收件人<br>
41 * 多个收件人可以使用逗号“,”分隔,也可以通过分号“;”分隔
42 *
43 * @param to 收件人
44 * @param subject 标题
45 * @param content 正文
46 * @param files 附件列表
47 * @since 3.2.0
48 */
49 public static void sendHtml(String to, String subject, String content, File... files) {
50 send(to, subject, content, true, files);
51 }
52
53 /**
54 * 使用配置文件中设置的账户发送邮件,发送单个或多个收件人<br>
55 * 多个收件人可以使用逗号“,”分隔,也可以通过分号“;”分隔
56 *
57 * @param to 收件人
58 * @param subject 标题
59 * @param content 正文
60 * @param isHtml 是否为HTML
61 * @param files 附件列表
62 */
63 public static void send(String to, String subject, String content, boolean isHtml, File... files) {
64 send(splitAddress(to), subject, content, isHtml, files);
65 }
66
67 /**
68 * 使用配置文件中设置的账户发送邮件,发送单个或多个收件人<br>
69 * 多个收件人、抄送人、密送人可以使用逗号“,”分隔,也可以通过分号“;”分隔
70 *
71 * @param to 收件人,可以使用逗号“,”分隔,也可以通过分号“;”分隔
72 * @param cc 抄送人,可以使用逗号“,”分隔,也可以通过分号“;”分隔
73 * @param bcc 密送人,可以使用逗号“,”分隔,也可以通过分号“;”分隔
74 * @param subject 标题
75 * @param content 正文
76 * @param isHtml 是否为HTML
77 * @param files 附件列表
78 * @since 4.0.3
79 */
80 public static void send(String to, String cc, String bcc, String subject, String content, boolean isHtml, File... files) {
81 send(splitAddress(to), splitAddress(cc), splitAddress(bcc), subject, content, isHtml, files);
82 }
83
84 /**
85 * 使用配置文件中设置的账户发送文本邮件,发送给多人
86 *
87 * @param tos 收件人列表
88 * @param subject 标题
89 * @param content 正文
90 * @param files 附件列表
91 */
92 public static void sendText(Collection<String> tos, String subject, String content, File... files) {
93 send(tos, subject, content, false, files);
94 }
95
96 /**
97 * 使用配置文件中设置的账户发送HTML邮件,发送给多人
98 *
99 * @param tos 收件人列表
100 * @param subject 标题
101 * @param content 正文
102 * @param files 附件列表
103 * @since 3.2.0
104 */
105 public static void sendHtml(Collection<String> tos, String subject, String content, File... files) {
106 send(tos, subject, content, true, files);
107 }
108
109 /**
110 * 使用配置文件中设置的账户发送邮件,发送给多人
111 *
112 * @param tos 收件人列表
113 * @param subject 标题
114 * @param content 正文
115 * @param isHtml 是否为HTML
116 * @param files 附件列表
117 */
118 public static void send(Collection<String> tos, String subject, String content, boolean isHtml, File... files) {
119 send(tos, null, null, subject, content, isHtml, files);
120 }
121
122 /**
123 * 使用配置文件中设置的账户发送邮件,发送给多人
124 *
125 * @param tos 收件人列表
126 * @param ccs 抄送人列表,可以为null或空
127 * @param bccs 密送人列表,可以为null或空
128 * @param subject 标题
129 * @param content 正文
130 * @param isHtml 是否为HTML
131 * @param files 附件列表
132 * @since 4.0.3
133 */
134 public static void send(Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, boolean isHtml, File... files) {
135 send(GlobalMailAccount.INSTANCE.getAccount(), true, tos, ccs, bccs, subject, content, null, isHtml, files);
136 }
137
138 // ------------------------------------------------------------------------------------------------------------------------------- Custom MailAccount
139 /**
140 * 发送邮件给多人
141 *
142 * @param mailAccount 邮件认证对象
143 * @param to 收件人,多个收件人逗号或者分号隔开
144 * @param subject 标题
145 * @param content 正文
146 * @param isHtml 是否为HTML格式
147 * @param files 附件列表
148 * @since 3.2.0
149 */
150 public static void send(MailAccount mailAccount, String to, String subject, String content, boolean isHtml, File... files) {
151 send(mailAccount, splitAddress(to), subject, content, isHtml, files);
152 }
153
154 /**
155 * 发送邮件给多人
156 *
157 * @param mailAccount 邮件帐户信息
158 * @param tos 收件人列表
159 * @param subject 标题
160 * @param content 正文
161 * @param isHtml 是否为HTML格式
162 * @param files 附件列表
163 */
164 public static void send(MailAccount mailAccount, Collection<String> tos, String subject, String content, boolean isHtml, File... files) {
165 send(mailAccount, tos, null, null, subject, content, isHtml, files);
166 }
167
168 /**
169 * 发送邮件给多人
170 *
171 * @param mailAccount 邮件帐户信息
172 * @param tos 收件人列表
173 * @param ccs 抄送人列表,可以为null或空
174 * @param bccs 密送人列表,可以为null或空
175 * @param subject 标题
176 * @param content 正文
177 * @param isHtml 是否为HTML格式
178 * @param files 附件列表
179 * @since 4.0.3
180 */
181 public static void send(MailAccount mailAccount, Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, boolean isHtml, File... files) {
182 send(mailAccount, false, tos, ccs, bccs, subject, content, null, isHtml, files);
183 }
184
185 /**
186 * 使用配置文件中设置的账户发送HTML邮件,发送给单个或多个收件人<br>
187 * 多个收件人可以使用逗号“,”分隔,也可以通过分号“;”分隔
188 *
189 * @param to 收件人
190 * @param subject 标题
191 * @param content 正文
192 * @param files 附件列表
193 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
194 * @since 3.2.0
195 */
196 public static void sendHtml(String to, String subject, String content, Map<String, InputStream> imageMap, File... files) {
197 send(to, subject, content, imageMap, true, files);
198 }
199
200 /**
201 * 使用配置文件中设置的账户发送邮件,发送单个或多个收件人<br>
202 * 多个收件人可以使用逗号“,”分隔,也可以通过分号“;”分隔
203 *
204 * @param to 收件人
205 * @param subject 标题
206 * @param content 正文
207 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
208 * @param isHtml 是否为HTML
209 * @param files 附件列表
210 */
211 public static void send(String to, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) {
212 send(splitAddress(to), subject, content, imageMap, isHtml, files);
213 }
214
215 /**
216 * 使用配置文件中设置的账户发送邮件,发送单个或多个收件人<br>
217 * 多个收件人、抄送人、密送人可以使用逗号“,”分隔,也可以通过分号“;”分隔
218 *
219 * @param to 收件人,可以使用逗号“,”分隔,也可以通过分号“;”分隔
220 * @param cc 抄送人,可以使用逗号“,”分隔,也可以通过分号“;”分隔
221 * @param bcc 密送人,可以使用逗号“,”分隔,也可以通过分号“;”分隔
222 * @param subject 标题
223 * @param content 正文
224 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
225 * @param isHtml 是否为HTML
226 * @param files 附件列表
227 * @since 4.0.3
228 */
229 public static void send(String to, String cc, String bcc, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) {
230 send(splitAddress(to), splitAddress(cc), splitAddress(bcc), subject, content, imageMap, isHtml, files);
231 }
232
233 /**
234 * 使用配置文件中设置的账户发送HTML邮件,发送给多人
235 *
236 * @param tos 收件人列表
237 * @param subject 标题
238 * @param content 正文
239 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
240 * @param files 附件列表
241 * @since 3.2.0
242 */
243 public static void sendHtml(Collection<String> tos, String subject, String content, Map<String, InputStream> imageMap, File... files) {
244 send(tos, subject, content, imageMap, true, files);
245 }
246
247 /**
248 * 使用配置文件中设置的账户发送邮件,发送给多人
249 *
250 * @param tos 收件人列表
251 * @param subject 标题
252 * @param content 正文
253 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
254 * @param isHtml 是否为HTML
255 * @param files 附件列表
256 */
257 public static void send(Collection<String> tos, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) {
258 send(tos, null, null, subject, content, imageMap, isHtml, files);
259 }
260
261 /**
262 * 使用配置文件中设置的账户发送邮件,发送给多人
263 *
264 * @param tos 收件人列表
265 * @param ccs 抄送人列表,可以为null或空
266 * @param bccs 密送人列表,可以为null或空
267 * @param subject 标题
268 * @param content 正文
269 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
270 * @param isHtml 是否为HTML
271 * @param files 附件列表
272 * @since 4.0.3
273 */
274 public static void send(Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) {
275 send(GlobalMailAccount.INSTANCE.getAccount(), true, tos, ccs, bccs, subject, content, imageMap, isHtml, files);
276 }
277
278 // ------------------------------------------------------------------------------------------------------------------------------- Custom MailAccount
279 /**
280 * 发送邮件给多人
281 *
282 * @param mailAccount 邮件认证对象
283 * @param to 收件人,多个收件人逗号或者分号隔开
284 * @param subject 标题
285 * @param content 正文
286 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
287 * @param isHtml 是否为HTML格式
288 * @param files 附件列表
289 * @since 3.2.0
290 */
291 public static void send(MailAccount mailAccount, String to, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) {
292 send(mailAccount, splitAddress(to), subject, content, imageMap, isHtml, files);
293 }
294
295 /**
296 * 发送邮件给多人
297 *
298 * @param mailAccount 邮件帐户信息
299 * @param tos 收件人列表
300 * @param subject 标题
301 * @param content 正文
302 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
303 * @param isHtml 是否为HTML格式
304 * @param files 附件列表
305 * @since 4.6.3
306 */
307 public static void send(MailAccount mailAccount, Collection<String> tos, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) {
308 send(mailAccount, tos, null, null, subject, content, imageMap, isHtml, files);
309 }
310
311 /**
312 * 发送邮件给多人
313 *
314 * @param mailAccount 邮件帐户信息
315 * @param tos 收件人列表
316 * @param ccs 抄送人列表,可以为null或空
317 * @param bccs 密送人列表,可以为null或空
318 * @param subject 标题
319 * @param content 正文
320 * @param imageMap 图片与占位符,占位符格式为cid:$IMAGE_PLACEHOLDER
321 * @param isHtml 是否为HTML格式
322 * @param files 附件列表
323 * @since 4.6.3
324 */
325 public static void send(MailAccount mailAccount, Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, Map<String, InputStream> imageMap,
326 boolean isHtml, File... files) {
327 send(mailAccount, false, tos, ccs, bccs, subject, content, imageMap, isHtml, files);
328 }
329
330 // ------------------------------------------------------------------------------------------------------------------------ Private method start
331 /**
332 * 发送邮件给多人
333 *
334 * @param mailAccount 邮件帐户信息
335 * @param useGlobalSession 是否全局共享Session
336 * @param tos 收件人列表
337 * @param ccs 抄送人列表,可以为null或空
338 * @param bccs 密送人列表,可以为null或空
339 * @param subject 标题
340 * @param content 正文
341 * @param imageMap 图片与占位符,占位符格式为cid:${cid}
342 * @param isHtml 是否为HTML格式
343 * @param files 附件列表
344 * @since 4.6.3
345 */
346 private static void send(MailAccount mailAccount, boolean useGlobalSession, Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content,
347 Map<String, InputStream> imageMap, boolean isHtml, File... files) {
348 final Mail mail = Mail.create(mailAccount).setUseGlobalSession(useGlobalSession);
349
350 // 可选抄送人
351 if (CollUtil.isNotEmpty(ccs)) {
352 mail.setCcs(ccs.toArray(new String[ccs.size()]));
353 }
354 // 可选密送人
355 if (CollUtil.isNotEmpty(bccs)) {
356 mail.setBccs(bccs.toArray(new String[bccs.size()]));
357 }
358
359 mail.setTos(tos.toArray(new String[tos.size()]));
360 mail.setTitle(subject);
361 mail.setContent(content);
362 mail.setHtml(isHtml);
363 mail.setFiles(files);
364
365 // 图片
366 if(MapUtil.isNotEmpty(imageMap)) {
367 for (Entry<String, InputStream> entry : imageMap.entrySet()) {
368 mail.addImage(entry.getKey(), entry.getValue());
369 // 关闭流
370 IoUtil.close(entry.getValue());
371 }
372 }
373
374 mail.send();
375 }
376
377 /**
378 * 将多个联系人转为列表,分隔符为逗号或者分号
379 *
380 * @param addresses 多个联系人,如果为空返回null
381 * @return 联系人列表
382 */
383 private static List<String> splitAddress(String addresses) {
384 if (StrUtil.isBlank(addresses)) {
385 return null;
386 }
387
388 List<String> result;
389 if (StrUtil.contains(addresses, ',')) {
390 result = StrUtil.splitTrim(addresses, ',');
391 } else if (StrUtil.contains(addresses, ';')) {
392 result = StrUtil.splitTrim(addresses, ';');
393 } else {
394 result = CollUtil.newArrayList(addresses);
395 }
396 return result;
397 }
398
399
400
401 }
402
1 package com.hui.iqiyi.Util;
2
3 import java.io.File;
4 import java.io.InputStream;
5
6 public class TestFileUtil {
7
8
9 public static InputStream getResourcesFileInputStream(String fileName) {
10 return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName);
11 }
12
13 public static String getPath() {
14 return TestFileUtil.class.getResource("/").getPath();
15 }
16
17 public static File createNewFile(String pathName) {
18 File file = new File(getPath() + pathName);
19 if (file.exists()) {
20 file.delete();
21 } else {
22 if (!file.getParentFile().exists()) {
23 file.getParentFile().mkdirs();
24 }
25 }
26 return file;
27 }
28
29 public static File readFile(String pathName) {
30 return new File(getPath() + pathName);
31 }
32
33 public static File readUserHomeFile(String pathName) {
34 return new File(System.getProperty("user.home") + File.separator + pathName);
35 }
36 }
1 package com.hui.iqiyi.controller; 1 package com.hui.iqiyi.controller;
2 2
3 3
4 import com.alibaba.excel.EasyExcel;
5 import com.alibaba.excel.ExcelWriter;
6 import com.alibaba.excel.write.metadata.WriteSheet;
7 import com.alibaba.excel.write.metadata.style.WriteCellStyle;
8 import com.github.pagehelper.PageHelper;
9 import com.github.pagehelper.PageInfo;
10 import com.hui.iqiyi.Util.TestFileUtil;
11 import com.hui.iqiyi.entity.Content;
12 import com.hui.iqiyi.entity.Movie; 4 import com.hui.iqiyi.entity.Movie;
13 import com.hui.iqiyi.excel.*;
14 import com.hui.iqiyi.request.ContentRequest;
15 import com.hui.iqiyi.request.ProRequest; 5 import com.hui.iqiyi.request.ProRequest;
16 import com.hui.iqiyi.response.ContentResponse;
17 import com.hui.iqiyi.response.MovieResponse; 6 import com.hui.iqiyi.response.MovieResponse;
18 import com.hui.iqiyi.response.ProgramSyResponse;
19 import com.hui.iqiyi.service.IMovieService; 7 import com.hui.iqiyi.service.IMovieService;
20 import com.hui.iqiyi.service.IProgramService; 8 import com.hui.iqiyi.service.IProgramService;
21 import io.swagger.annotations.Api; 9 import io.swagger.annotations.Api;
22 import io.swagger.annotations.ApiOperation; 10 import io.swagger.annotations.ApiOperation;
23 import org.apache.poi.ss.usermodel.HorizontalAlignment;
24 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
25 import org.springframework.web.bind.annotation.*; 12 import org.springframework.web.bind.annotation.*;
26 import org.testng.collections.Lists;
27
28 import javax.annotation.Resource; 13 import javax.annotation.Resource;
29 import java.util.ArrayList;
30 import java.util.List; 14 import java.util.List;
31 import java.util.Map; 15
32 16
33 /** 17 /**
34 * <p> 18 * <p>
...@@ -56,52 +40,6 @@ public class MovieController { ...@@ -56,52 +40,6 @@ public class MovieController {
56 return iMovieService.selectAllPopulation(); 40 return iMovieService.selectAllPopulation();
57 } 41 }
58 42
59 // @GetMapping("/selectAllPopulationn")
60 // @ApiOperation("查询总下载")
61 // @ResponseBody
62 // public void selectAllPopulationn(Movie Movie) {
63 //
64 // try {
65 // String path = "D:\\java\\爱奇艺下载情况.xlsx\\";
66 // //新建ExcelWriter
67 // ExcelWriter excelWriter = EasyExcel.write(path).build();
68 // //获取sheet0对象
69 // WriteSheet mainSheet = EasyExcel.writerSheet(0, "介质文件下载统计文件").head(DownloadExcel.class).build();
70 // //向sheet0写入数据 传入空list这样只导出表头
71 // excelWriter.write(iMovieService.selectAllPopulation(), mainSheet);
72 //
73 // //获取sheet1对象
74 // WriteSheet detailSheet = EasyExcel.writerSheet(1, "吉林关注片单").head(ProgramsExcel.class).build();
75 // //向sheet1写入数据 传入空list这样只导出表头
76 // List<ProgramSyResponse> programSyResponses = new ArrayList<>();
77 // programSyResponses.add(iProgramService.selectAllProgramCount());
78 // excelWriter.write(programSyResponses, detailSheet);
79 //
80 // //获取sheet1对象
81 // WriteSheet detailSheet1 = EasyExcel.writerSheet(2, "剧集单片数量").head(ProgramAllExcel.class).build();
82 // //向sheet1写入数据 传入空list这样只导出表头
83 // List<ContentResponse> contentResponses = new ArrayList<>();
84 // contentResponses.add(iProgramService.selectAllPrograms());
85 // excelWriter.write(contentResponses, detailSheet1);
86 //
87 // //获取sheet2对象
88 // WriteSheet SevenSheetDownload = EasyExcel.writerSheet(3, "近七日下载情况").head(ProsevenDownload.class).build();
89 // //向sheet0写入数据 传入空list这样只导出表头
90 // ProRequest proRequest = new ProRequest();
91 // excelWriter.write(iProgramService.selectAllSeven(proRequest), SevenSheetDownload);
92 //
93 // //获取sheet2对象
94 // WriteSheet SevenSheetzation= EasyExcel.writerSheet(4, "近七日同步情况").head(MoveExcel.class).build();
95 // //向sheet0写入数据 传入空list这样只导出表头
96 // ProRequest proRequest1 = new ProRequest();
97 // excelWriter.write(iMovieService.selectAllSevenxz(proRequest1), SevenSheetzation);
98 // //关闭流
99 // excelWriter.finish();
100 // } catch (Exception e) {
101 // System.out.println("导出异常"+ e.getMessage());
102 // }
103 // }
104
105 @GetMapping("/selectAllSevenXz") 43 @GetMapping("/selectAllSevenXz")
106 @ApiOperation("近七日同步情况") 44 @ApiOperation("近七日同步情况")
107 @ResponseBody 45 @ResponseBody
......
1 package com.hui.iqiyi.excel;
2
3 import com.alibaba.excel.annotation.ExcelProperty;
4 import com.alibaba.excel.annotation.write.style.ColumnWidth;
5 import com.alibaba.excel.annotation.write.style.ContentStyle;
6 import com.alibaba.excel.annotation.write.style.HeadStyle;
7 import lombok.Data;
8 import org.apache.poi.ss.usermodel.HorizontalAlignment;
9
10 @Data
11 @HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER)//表头样式
12 @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)//内容样式
13 @ColumnWidth(20)//表头宽度
14 public class DownloadExcel {
15 @ExcelProperty("下载情况")
16 private String localStatuss;
17 @ExcelProperty("下载数量")
18 private Long number;
19 @ExcelProperty("下载容量")
20 private Long capacity;
21 @ExcelProperty("下载时长")
22 private Integer duration;
23
24 }
1 package com.hui.iqiyi.excel;
2
3 import com.alibaba.excel.annotation.ExcelProperty;
4 import com.alibaba.excel.annotation.write.style.ColumnWidth;
5 import com.alibaba.excel.annotation.write.style.ContentStyle;
6 import com.alibaba.excel.annotation.write.style.HeadStyle;
7 import lombok.Data;
8 import org.apache.poi.ss.usermodel.HorizontalAlignment;
9
10 import java.util.Date;
11
12 @Data
13 @HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER)//表头样式
14 @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)//内容样式
15 @ColumnWidth(20)//表头宽度
16 public class MoveExcel {
17
18 @ExcelProperty("日期")
19 private String day1;
20 @ExcelProperty("节目同步数量")
21 private Long totlFee3;
22 @ExcelProperty("下载容量")
23 private Double totlSize2;
24 @ExcelProperty("下载时长")
25 private Double totlDuration4;
26 }
1 package com.hui.iqiyi.excel;
2
3 import com.alibaba.excel.annotation.ExcelProperty;
4 import com.alibaba.excel.annotation.write.style.ColumnWidth;
5 import com.alibaba.excel.annotation.write.style.ContentStyle;
6 import com.alibaba.excel.annotation.write.style.HeadStyle;
7 import lombok.Data;
8 import org.apache.poi.ss.usermodel.HorizontalAlignment;
9
10 @Data
11 @HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER)//表头样式
12 @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)//内容样式
13 @ColumnWidth(20)//表头宽度
14 public class ProgramAllExcel {
15 @ExcelProperty("剧集数量")
16 private Integer drama;
17 @ExcelProperty("单片数量")
18 private Integer monolithic;
19 }
1 package com.hui.iqiyi.excel;
2
3 import com.alibaba.excel.annotation.ExcelProperty;
4 import com.alibaba.excel.annotation.write.style.ColumnWidth;
5 import com.alibaba.excel.annotation.write.style.ContentStyle;
6 import com.alibaba.excel.annotation.write.style.HeadStyle;
7 import lombok.Data;
8 import org.apache.poi.ss.usermodel.HorizontalAlignment;
9
10 @Data
11 @HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER)//表头样式
12 @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)//内容样式
13 @ColumnWidth(20)//表头宽度
14 public class ProgramsExcel {
15 //剧集
16 @ExcelProperty("剧集数量")
17 private Integer drama;
18 //单片
19 @ExcelProperty("单片数量")
20 private Integer monolithic;
21 //下载数量
22 @ExcelProperty("已下载数量")
23 private Long xzNumbe;
24 //下载容量
25 @ExcelProperty("已下载容量(G)")
26 private Double xzSize;
27 //下载时长
28 @ExcelProperty("已下载时长")
29 private Double totlDuration;
30 //下载失败的数量
31 @ExcelProperty("下载失败数量")
32 private Long failSum;
33 //同步未下载数量
34 @ExcelProperty("同步未下载数量")
35 private Long totlSize;
36 //未同步介质数量
37 @ExcelProperty("未同步介质数量")
38 private Long totlFee;
39 }
1 package com.hui.iqiyi.excel;
2
3 import com.alibaba.excel.annotation.ExcelProperty;
4 import com.alibaba.excel.annotation.write.style.ColumnWidth;
5 import com.alibaba.excel.annotation.write.style.ContentStyle;
6 import com.alibaba.excel.annotation.write.style.HeadStyle;
7 import lombok.Data;
8 import org.apache.poi.ss.usermodel.HorizontalAlignment;
9
10 @Data
11 @HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER)//表头样式
12 @ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER)//内容样式
13 @ColumnWidth(20)//表头宽度
14 public class ProsevenDownload {
15
16 @ExcelProperty("日期")
17 private String day;
18 @ExcelProperty("已下载数量")
19 private Long totlFee;
20 @ExcelProperty("已下载容量(G)")
21 private Double totlSize;
22 @ExcelProperty("已下载时长")
23 private Double totlDuration;
24 }
1 package com.hui.iqiyi.response;
2
3 import lombok.Data;
4
5 @Data
6 public class ProgramXRespone {
7 //时间
8 private String day;
9 //下载数量
10 private Long TotlFee;
11 //下载容量
12 private Double TotlSize;
13 //下载时长
14 private Double TotlDuration;
15 }
1 package com.hui.iqiyi.schedule;
2
3 import com.alibaba.excel.EasyExcel;
4 import com.alibaba.excel.ExcelWriter;
5 import com.alibaba.excel.write.metadata.WriteSheet;
6 import com.alibaba.excel.write.metadata.style.WriteCellStyle;
7 import com.hui.iqiyi.Util.MailUtil;
8 import com.hui.iqiyi.excel.*;
9 import com.hui.iqiyi.request.ProRequest;
10 import com.hui.iqiyi.response.ContentResponse;
11 import com.hui.iqiyi.response.ProgramSyResponse;
12 import com.hui.iqiyi.service.IMovieService;
13 import com.hui.iqiyi.service.IProgramService;
14 import org.apache.poi.ss.usermodel.HorizontalAlignment;
15 import org.springframework.beans.factory.annotation.Autowired;
16 import org.springframework.beans.factory.annotation.Value;
17 import org.springframework.scheduling.annotation.Scheduled;
18 import org.springframework.stereotype.Component;
19
20 import java.io.File;
21 import java.util.ArrayList;
22 import java.util.List;
23
24 @Component//注入bean
25 public class Timedtask {
26
27 @Autowired
28 private IMovieService iMovieService;
29
30 @Autowired
31 private IProgramService iProgramService;
32
33 @Value("${recievers.shoujianren}")
34 private String Youxiang;
35
36 @Value("${filePath}")
37 private String path;
38 //添加定时任务
39 //@Scheduled(cron = "0 20 16 * * 5 ")//每周五16时20分发送
40 //@Scheduled(cron = "0/5 * * * * ?")
41 public void Timedtask() {
42
43 try {
44
45 //新建ExcelWriter
46 ExcelWriter excelWriter = EasyExcel.write(path).build();
47 //获取sheet0对象
48 WriteSheet mainSheet = EasyExcel.writerSheet(0, "介质文件下载统计文件").head(DownloadExcel.class).build();
49 //向sheet0写入数据 传入空list这样只导出表头
50 excelWriter.write(iMovieService.selectAllPopulation(), mainSheet);
51
52 //获取sheet1对象
53 WriteSheet detailSheet = EasyExcel.writerSheet(1, "吉林关注片单").head(ProgramsExcel.class).build();
54 //向sheet1写入数据 传入空list这样只导出表头
55 List<ProgramSyResponse> programSyResponses = new ArrayList<>();
56 programSyResponses.add(iProgramService.selectAllProgramCount());
57 excelWriter.write(programSyResponses, detailSheet);
58 //获取sheet1对象
59 WriteSheet detailSheet1 = EasyExcel.writerSheet(2, "剧集单片数量").head(ProgramAllExcel.class).build();
60 //向sheet1写入数据 传入空list这样只导出表头
61 List<ContentResponse> contentResponses = new ArrayList<>();
62 contentResponses.add(iProgramService.selectAllPrograms());
63 excelWriter.write(contentResponses, detailSheet1);
64
65 //获取sheet2对象
66 WriteSheet SevenSheetDownload = EasyExcel.writerSheet(3, "近七日下载情况").head(ProsevenDownload.class).build();
67 //向sheet0写入数据 传入空list这样只导出表头
68 ProRequest proRequest = new ProRequest();
69 excelWriter.write(iProgramService.selectAllSeven(proRequest), SevenSheetDownload);
70
71 //获取sheet2对象
72 WriteSheet SevenSheetzation = EasyExcel.writerSheet(4, "近七日同步情况").head(MoveExcel.class).build();
73 //向sheet0写入数据 传入空list这样只导出表头
74 ProRequest proRequest1 = new ProRequest();
75 excelWriter.write(iMovieService.selectAllSevenxz(proRequest1), SevenSheetzation);
76 //关闭流
77 excelWriter.finish();
78 try {
79 //接收人放到配置文件里
80 //String to="2292269071@qq.com";
81 File file = new File(path);
82 MailUtil.sendText(Youxiang ,"爱奇艺统计", "各位好:\n" +
83 " 截止至 2021-06-15日 爱奇艺同步下载统计如下\n" +
84 " 剧集数量:25122 部;\n" +
85 " 单片数量:194412部;\n" +
86 " 介质下载 数量:280982集\n" +
87 " 容量:1678.34G\n" +
88 " 时长:21624小时\n" +
89 " 下载速度 大约 5 M/h\n" +
90 " 吉林片单中 :\n" +
91 " 剧集:158部\n" +
92 " 单片:118部\n" +
93 " 已下载数量:6505集\n" +
94 " 已下载容量:1252G\n" +
95 " 已下载时长:1610小时\n" +
96 " 未下载数量:6525集\n" +
97 " 未同步数量:6525集\n" +
98 " \n" +
99 " 预计容量:1359G\n" +
100 " 预计时长:2062小时\n" +
101 " 预计需要下载时间:10天\n" +
102 "\n" +
103 "详情见以下附件:", file);
104 } catch (Exception e) {
105 System.out.println("发送邮件失败{}"+ e.getMessage());
106 }
107 } catch (Exception e) {
108 System.out.println("导出异常"+ e.getMessage());
109 }
110
111
112 }
113 }
1 # 邮件服务器的SMTP地址
2 host = smtp.ym.163.com
3 # 邮件服务器的SMTP端口
4 port = 25
5 # 发件人(必须正确,否则发送失败)
6 from = test@topdraw.cn
7 # 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
8 user = test@topdraw.cn
9 # 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
10 pass = 123456789
11