From d5f54f243755de970308d94471d11a88e0582a75 Mon Sep 17 00:00:00 2001 From: 谢茂盛 <A807732> Date: Wed, 15 Nov 2023 17:15:01 +0800 Subject: [PATCH] fix: 订单导出图片支持 --- pom.xml | 8 ++++++++ src/main/java/com/order/erp/controller/OrderController.java | 11 +++++++---- src/main/java/com/order/erp/service/order/OrderBaseInfoService.java | 11 +++++------ src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java | 27 +++++++++++++++++++++++---- 4 files changed, 43 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 883cda8..5e2c311 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ <fastjson.version>1.2.83</fastjson.version> <poi.version>3.17</poi.version> <poi-ooxml.version>3.17</poi-ooxml.version> + <poi-excel.version>poi-317.8</poi-excel.version> <commons-csv.version>1.6</commons-csv.version> <commons-lang3.version>3.8.1</commons-lang3.version> <commons-pool2.version>2.11.1</commons-pool2.version> @@ -236,6 +237,13 @@ <version>${easy-captcha.version}</version> </dependency> + <!-- excel导入导出 POI版本为3.17 --> + <dependency> + <groupId>com.github.stupdit1t</groupId> + <artifactId>poi-excel</artifactId> + <version>${poi-excel.version}</version> + </dependency> + <!--短信服务--> <dependency> <groupId>com.aliyun</groupId> diff --git a/src/main/java/com/order/erp/controller/OrderController.java b/src/main/java/com/order/erp/controller/OrderController.java index 7708beb..00a3e4e 100644 --- a/src/main/java/com/order/erp/controller/OrderController.java +++ b/src/main/java/com/order/erp/controller/OrderController.java @@ -3,7 +3,10 @@ package com.order.erp.controller; import com.order.erp.common.annotation.AnonymousAccess; import com.order.erp.common.constant.ServerResult; import com.order.erp.common.excel4j.exceptions.Excel4JException; -import com.order.erp.domain.vo.order.*; +import com.order.erp.domain.vo.order.OrderAddVO; +import com.order.erp.domain.vo.order.OrderBaseInfoQueryVO; +import com.order.erp.domain.vo.order.OrderUnlockFieldApplyVO; +import com.order.erp.domain.vo.order.OrderUpdateVO; import com.order.erp.service.order.OrderBaseInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -52,11 +55,11 @@ public class OrderController { * @param orderBaseInfoQueryVO 查询条件 * @return 查询结果 */ - @PostMapping("/export") + @PostMapping(value = "/export") @ApiOperation("导出订单") @AnonymousAccess - public ServerResult export(HttpServletResponse response, @RequestBody @Validated OrderBaseInfoQueryVO orderBaseInfoQueryVO) throws IOException, Excel4JException { - return orderBaseInfoService.export(response, orderBaseInfoQueryVO); + public void export(HttpServletResponse response, @RequestBody @Validated OrderBaseInfoQueryVO orderBaseInfoQueryVO) throws IOException, Excel4JException { + orderBaseInfoService.export(response, orderBaseInfoQueryVO); } /** diff --git a/src/main/java/com/order/erp/service/order/OrderBaseInfoService.java b/src/main/java/com/order/erp/service/order/OrderBaseInfoService.java index b007f94..b1039dc 100644 --- a/src/main/java/com/order/erp/service/order/OrderBaseInfoService.java +++ b/src/main/java/com/order/erp/service/order/OrderBaseInfoService.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.order.erp.common.constant.ServerResult; import com.order.erp.common.excel4j.exceptions.Excel4JException; import com.order.erp.domain.dto.order.OrderBaseInfoDO; -import com.order.erp.domain.vo.IndexDataVO; -import com.order.erp.domain.vo.order.*; +import com.order.erp.domain.vo.order.OrderAddVO; +import com.order.erp.domain.vo.order.OrderBaseInfoQueryVO; +import com.order.erp.domain.vo.order.OrderUnlockFieldApplyVO; +import com.order.erp.domain.vo.order.OrderUpdateVO; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -38,22 +40,19 @@ public interface OrderBaseInfoService extends IService<OrderBaseInfoDO> { /** - * * @param orderBaseInfoQueryVO * @return */ ServerResult listByPage(OrderBaseInfoQueryVO orderBaseInfoQueryVO); /** - * * @param response * @param orderBaseInfoQueryVO * @return */ - ServerResult export(HttpServletResponse response, OrderBaseInfoQueryVO orderBaseInfoQueryVO) throws IOException, Excel4JException; + void export(HttpServletResponse response, OrderBaseInfoQueryVO orderBaseInfoQueryVO) throws IOException, Excel4JException; /** - * * @param fieldVO * @return */ diff --git a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java index 5a32f81..4207f49 100644 --- a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java @@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.stupdit1t.excel.common.PoiWorkbookType; +import com.github.stupdit1t.excel.core.ExcelHelper; import com.order.erp.common.constant.Constant; import com.order.erp.common.constant.ServerResult; import com.order.erp.common.constant.ServerResultCode; @@ -37,7 +39,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; +import java.net.URL; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -168,7 +172,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O } @Override - public ServerResult export(HttpServletResponse response, OrderBaseInfoQueryVO queryVO) throws IOException, Excel4JException { + public void export(HttpServletResponse response, OrderBaseInfoQueryVO queryVO) throws IOException, Excel4JException { OrderLockFieldVO lockFieldVO = queryVO.getFieldVO(); if (Objects.isNull(lockFieldVO)) { throw new BusinessException("请选择要导出的列!"); @@ -206,11 +210,17 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O if (CollectionUtils.isNotEmpty(resultVOList)) { List<Map<String, Object>> list = buildExportMapVOS(resultVOList, lockFieldVO); if (CollectionUtils.isNotEmpty(list)) { - FileUtil.downloadExcel(list, response); + List<String> keys = new ArrayList<>(list.get(Constant.ZERO).keySet()); + + ExcelHelper.opsExport(PoiWorkbookType.XLSX) + .opsSheet(list) + .opsHeader().simple().texts(keys).done() + .opsColumn().fields(keys).done() + .done() + .export(response.getOutputStream()); } } } - return ServerResult.success(); } /** @@ -218,7 +228,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O * @param lockFieldVO * @return */ - private List<Map<String, Object>> buildExportMapVOS(List<OrderInfoResultVO> resultVOList, OrderLockFieldVO lockFieldVO) { + private List<Map<String, Object>> buildExportMapVOS(List<OrderInfoResultVO> resultVOList, OrderLockFieldVO lockFieldVO) throws IOException { List<Map<String, Object>> list = new ArrayList<>(); for (OrderInfoResultVO orderInfoResultVO : resultVOList) { Map<String, Object> map = new LinkedHashMap<>(); @@ -282,6 +292,15 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O if (StringUtils.isNotBlank(baseFields.getPacketType())) { map.put("包装类型", orderInfoResultVO.getPacketType()); } + if (StringUtils.isNotBlank(baseFields.getPicUrl())) { + if (StringUtils.isNotBlank(orderInfoResultVO.getSmallPicUrl())) { + URL url = new URL(orderInfoResultVO.getSmallPicUrl()); + InputStream inputStream = url.openStream(); + map.put("订单图片", FileUtil.imageParseBytes(inputStream)); + } else { + map.put("订单图片", ""); + } + } } OrderProfitAnalysisVO profitAnalysisVO = orderInfoResultVO.getProfitAnalysisInfo(); if (Objects.nonNull(profitAnalysisFields) && Objects.nonNull(profitAnalysisVO)) { -- libgit2 0.23.3