当前位置:网站首页>公司封装方式导出excel过程
公司封装方式导出excel过程
2022-08-03 01:00:00 【一条小咸鱼i】
文章目录
1、IPrinterInfoServiceRemote层
@ApiOperation(value = "个人测试-导出打印机信息excel")
@PostMapping("/export")
ResponseData<PrinterInfoExportFileAResp> exportPrinterInfoExportFile(@RequestBody RequestData<PrinterInfoExportFileAReq> req);
2、PrinterInfoServiceRemoteImpl层
此处的list中如果存在null的字段则会报空指针异常
@Override
public ResponseData<PrinterInfoExportFileAResp> exportPrinterInfoExportFile(RequestData<PrinterInfoExportFileAReq> req) {
//1、查询要导出的数据list
List<PrinterInfoListAResp> list = null;
//2、根据是否传入ids 判断要导出的数据列表 传入ids为null时输出 所有的数据 否则 输出相应的数据
if(req.getRequest().getIds().size() > 0){
list = printerInfoService.getListByIds(req.getRequest().getIds());
}else{
Example example = new Example(PrinterInfo.class, true, false);
example.createCriteria().andEqualTo(PrinterInfo.FIELD_MARK, MarkEnum.NO_DELETE.getCode());
List<PrinterInfo> listByExample = printerInfoService.getListByExample(example, null);
list = BeanCopyUtils.beanCopy(PrinterInfoListAResp.class, listByExample);
}
PrinterInfoExportFileAResp resp = PrinterInfoExportFileAResp.builder().exportUrl(printerInfoService.exportPrinterInfoURL(list)).build();
return RestResultGenerator.genSuccessResult(resp);
}
3、PrinterInfoService层
//todo 导出打印机信息 测试完后待删除
public String exportPrinterInfoURL(List<PrinterInfoListAResp> list) {
List<PrinterInfoBean> data = BeanCopyUtils.beanCopy(PrinterInfoBean.class, list);
try {
XSSFWorkbook workbook = PoiUtils.exportExcel(data, PrinterInfoBean.class, "打印机信息", true, 10000);
String staticPath = ClassUtils.getDefaultClassLoader().getResource("tmp").getPath();
File file = new File(staticPath + File.separator + DateUtils.convert2Str() +"打印机信息导出文件"+".xlsx");
FileOutputStream outputStream = new FileOutputStream(file);
workbook.write(outputStream);
workbook.close();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(file.getPath());
String url = AliyunOssUtils.uploadFile(stringBuilder.toString(), file);
file.delete();
return String.format("https://%s", url);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//todo 批量查询 测试完后待删除
public List<PrinterInfoListAResp> getListByIds(List<Long> ids) {
return printerInfoDao.batchGetListByIds(ids);
}
4、PrinterInfoDao层
public List<PrinterInfoListAResp> batchGetListByIds(List<Long> ids) {
return printerInfoMapper.batchGetListByIds(ids);
}
5、IPrinterInfoMapper层
List<PrinterInfoListAResp> batchGetListByIds(@Param(value = "ids") List<Long> ids);
6、mapper.xml层
<select id="batchGetListByIds" resultType="com.PrinterInfoListAResp">
SELECT DISTINCT
b.id,
a.data_name AS dataName,
b.printer_name AS printerName,
b.remark,
b.printer_ip AS printerIp,
b.printer_port AS printerPort,
b.printer_state AS printerState,
b.create_time AS createTime,
b.creator_name AS creatorName,
b.last_modified_time AS lastModifiedTime,
b.editor_name AS editorName
FROM
printer_info b
LEFT JOIN printer_config c ON c.printer_info_id = b.id
LEFT JOIN sys_dict_data a ON a.data_value = c.data_value AND a.dict_code = "B0041"
WHERE
b.mark = 1
and
b.id in
<foreach open="(" close=")" collection="ids" item="item" separator=",">
#{item}
</foreach>
ORDER BY
b.create_time DESC
</select>
7、pojo层
@Data
@Builder
public class PrinterInfoExportFileAResp extends BaseAResp{
/** * 导出文件阿里云url */
@ApiModelProperty(value = "导出文件阿里云url")
private String exportUrl;
}
@Data
public class PrinterInfoExportFileAReq extends BaseAReq{
@ApiModelProperty(value = "打印机id集合")
private List<Long> ids;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PrinterInfoBean {
/** * id */
@ExcelHeader(value = "id")
private Long id;
/** * 字典值 记录类型 */
@ExcelHeader(value = "记录类型")
private String dataName;
/** * 打印机名称 */
@ExcelHeader(value = "打印机名称")
private String printerName;
/** * 打印机描述 */
@ExcelHeader(value = "打印机描述")
private String remark;
/** * 打印机IP */
@ExcelHeader(value = "打印机IP")
private String printerIp;
/** * 打印机端口 */
@ExcelHeader(value = "打印机端口")
private String printerPort;
/** * 是否有效 0-否,1-是 */
@ExcelHeader(value = "是否有效 0-否,1-是")
private Integer printerState;
/** * 创建时间 记录插入时间 */
@ExcelHeader(value = "创建时间")
private Date createTime;
/** * 创建人姓名 */
@ExcelHeader(value = "创建人姓名")
private String creatorName;
/** * 更新时间 记录最后更新时间 */
@ExcelHeader(value = "修改时间")
private Date lastModifiedTime;
/** * 编辑人姓名 */
@ExcelHeader(value = "修改人姓名")
private String editorName;
}
边栏推荐
- 在表格数据上,为什么基于树的模型仍然优于深度学习?
- Violent recursion to dynamic programming 06 (the sword refers to Offer II 095. Longest common subsequence)
- 向往的生活
- 10-security登录
- 【遥控器开发基础教程4】疯壳·开源编队无人机-SPI(OLED)
- OpenWRT设置ipv6网络
- 236. 二叉树的最近公共祖先
- 49. 字母异位词分组-排序法
- 北路智控上市首日破发:公司市值59亿 募资15.6亿
- .NET in-depth analysis of the LINQ framework (four: IQueryable, IQueryProvider interface details)
猜你喜欢
【图像分类】2022-MPViT CVPR
Brute force recursion to dynamic programming 07 (516. Longest palindrome subsequence)
阿里云增强版实人认证--银行卡要素核验
图文详细解决IDEA使用Debug模式启动项目一直转圈圈跑起不来(亲测可以)
【飞控开发高级教程2】疯壳·开源编队无人机-遥控整机代码走读、编译与烧写
中科磁业IPO过会:年营收5.5亿 吴中平家族持股85%
吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第一节:深度学习概论
暴力递归到动态规划 08(小马走象棋)
GoLang 使用 goroutine 停止的几种办法
全栈---JSONP
随机推荐
[NCTF2019]SQLi-1||SQL Injection
风电场运营实践 | 麒麟信安助力国华投资山东公司集控中心实现安全智慧化运营
什么情况下DigiCert证书会引起发生安全警报?
letcode 第20题-有效的括号
阿里云增强版实人认证--银行卡要素核验
在表格数据上,为什么基于树的模型仍然优于深度学习?
不想当Window的Dialog不是一个好Modal,弹窗翻身记...
ASP.NET网络版进销存管理系统源码【源码免费分享】
【Gopher 学个函数】边学边练,简单为 Go 上个分
暴力递归到动态规划 07(516. 最长回文子序列)
v-if条件判断及v-show
php提示Array to string conversion
线上交流丨稀疏神经网络:实践和理论(青源Talk第23期 汪张扬)
10大领域5大过程47子过程快速记忆
236. 二叉树的最近公共祖先
Introduction to agile development
Go高性能之方法接收器 - 指针vs值
并发模型和I/O模型介绍
并查集总结
2022年8月2日——使用idea搭建servlet+jsp项目