From b7f3202024953548e8dedc07fecf0eb4e7a5278b Mon Sep 17 00:00:00 2001 From: Jackwang Date: Thu, 2 Jun 2022 14:17:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E6=88=B7=E4=B8=80=E6=A1=A3=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E4=BA=8C=E7=BB=B4=E7=A0=81=E4=B8=8A=E4=BC=A0=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/HouseController.java | 2 +- .../java/com/epmet/service/HouseService.java | 2 +- .../epmet/service/impl/HouseServiceImpl.java | 66 ++++++++++++------- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index eb892c5d8c..d5f3d48530 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -509,7 +509,7 @@ public class HouseController implements ResultDataResolver { } @PostMapping("createHouseQrcodeUrl") - public String createHouseQrcodeUrl(@RequestBody TestFormDTO formDTO) { + public String createHouseQrcodeUrl(@RequestBody TestFormDTO formDTO) throws Exception { return houseService.createHouseQrcodeUrl(formDTO.getHouseId()); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index ce3de8fbb5..2e6aa8cf7f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -144,7 +144,7 @@ public interface HouseService { * @params [houseId] * @return java.lang.String */ - String createHouseQrcodeUrl(String houseId); + String createHouseQrcodeUrl(String houseId) throws Exception; /** * @describe: 根据房屋编码获取信息 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 181b289e33..addc1324db 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -24,6 +24,7 @@ import com.epmet.commons.tools.redis.common.bean.HouseInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.BarcodeUtils; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; import com.epmet.constants.ImportTaskConstants; @@ -46,19 +47,21 @@ import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; -import com.epmet.util.ConvertToMultipartFile; import com.epmet.util.ExcelPoiUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import javax.imageio.ImageIO; @@ -887,35 +890,48 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { } @Override - public String createHouseQrcodeUrl(String houseId) { + public String createHouseQrcodeUrl(String houseId) throws Exception { if (StringUtils.isBlank(houseId)) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "房屋id不可为空", "房屋id不可为空"); } + IcHouseListResultDTO house = icHouseDao.selectHouseQrcodeById(houseId); + if (null == house) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未查到房屋信息", "未查到房屋信息"); + } + //url组成:小程序地址?房屋编码 + String url = HouseQrcodeEnum.PREFIX.getCode() + "?houseCode=" + house.getHouseCode(); + String fileName = house.getNeighborHoodName() + house.getBuildingName() +house.getUnitNum()+ house.getDoorName()+".png"; + BufferedImage image = BarcodeUtils.drawQRImage(house.getNeighborHoodName() + house.getBuildingName() + house.getUnitNum() + house.getDoorName(), url); + + + FileItem fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, FileUtils.getAndCreateDirUnderEpmetFilesDir("temp").toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; try { - IcHouseListResultDTO house = icHouseDao.selectHouseQrcodeById(houseId); - if (null == house) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未查到房屋信息", "未查到房屋信息"); - } - //url组成:小程序地址?房屋编码 - String url = HouseQrcodeEnum.PREFIX.getCode() + "?houseCode=" + house.getHouseCode(); - BufferedImage image = BarcodeUtils.drawQRImage(house.getNeighborHoodName() + house.getBuildingName() + house.getUnitNum() + house.getDoorName(), url); - - //BufferedImage 转化为 ByteArrayOutputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - ImageIO.write(image, "png", out); - //ByteArrayOutputStream 转化为 byte[] - byte[] imageByte = out.toByteArray(); - //将 byte[] 转为 MultipartFile - MultipartFile multipartFile = new ConvertToMultipartFile(imageByte, "newNamepic", "pic1", "png", imageByte.length); - Result uploadResult = ossFeignClient.uploadQrCodeV2(multipartFile,house.getCustomerId()); - if (uploadResult == null || !uploadResult.success()) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "上传一户一档二维码失败", "上传一户一档二维码失败"); - } else { - return uploadResult.getData().getUrl(); - } + ImageIO.write(image, "png", os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); } catch (Exception e) { String errormsg = ExceptionUtils.getErrorStackTrace(e); - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "上传一户一档二维码失败" + errormsg, "上传一户一档二维码失败" + errormsg); + log.error("上传一户一档二维码:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("上传一户一档二维码关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("上传一户一档二维码删除临时文件:{}", errormsg); + } + } + if (uploadResult == null || !uploadResult.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "上传一户一档二维码失败", "上传一户一档二维码失败"); + } else { + return uploadResult.getData().getUrl(); } }