|  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | import cn.hutool.core.codec.Base64; | 
 |  |  | import com.alibaba.excel.EasyExcel; | 
 |  |  | import com.dy.common.util.QrCodeGenerator; | 
 |  |  | import com.alibaba.excel.converters.Converter; | 
 |  |  | import com.dy.common.webUtil.BaseResponse; | 
 |  |  | import com.dy.common.webUtil.BaseResponseUtils; | 
 |  |  | import com.dy.pmsGlobal.util.QrCodeConstant; | 
 |  |  | import com.dy.pmsGlobal.util.QrCodeUtil; | 
 |  |  | import jakarta.servlet.http.HttpServletResponse; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.core.io.ClassPathResource; | 
 |  |  | import org.springframework.core.io.Resource; | 
 |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RestController; | 
 |  |  |  | 
 |  |  | import java.awt.image.BufferedImage; | 
 |  |  | import java.io.File; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | 
 |  |  |     public BaseResponse<List<ResultVo>> show() { | 
 |  |  |         try{ | 
 |  |  |             List<ResultVo> list = new ArrayList<>() ; | 
 |  |  |             Resource resource = new ClassPathResource("/images/logo.png"); | 
 |  |  |             File logoPngFile = resource.getFile() ; | 
 |  |  |             String[][] marks = QrCodeConstant.Marks() ; | 
 |  |  |             for(String[] mark : marks){ | 
 |  |  |                 ResultVo vo = new ResultVo() ; | 
 |  |  |                 vo.code = mark[0] ; | 
 |  |  |                 vo.name = mark[1] ; | 
 |  |  |                 //vo.code = "1234567890123456789012" ; | 
 |  |  |                 //BufferedImage bufferedImage = QrCodeGenerator.toBufferedImage(QrCodeGenerator.createBitMatrix(vo.code, 30, 30)); | 
 |  |  |                 BufferedImage bufferedImage = QrCodeGenerator.toBufferedImage(QrCodeGenerator.createBitMatrix(vo.code, QrCodeConstant.MarkQrCodeWidth, QrCodeConstant.MarkQrCodeHeight)); | 
 |  |  |                 if(logoPngFile != null && logoPngFile.exists()){ | 
 |  |  |                     bufferedImage = QrCodeGenerator.addQrCodeLogo(bufferedImage, logoPngFile); | 
 |  |  |                 } | 
 |  |  |                 byte[] codes = QrCodeGenerator.bufferedImageToByteArray(bufferedImage, "JPG"); | 
 |  |  |                 byte[] codes = QrCodeUtil.genQrCode(vo.code); | 
 |  |  |                 vo.imgBase64 = "data:image/jpeg;base64," + Base64.encode(codes); | 
 |  |  |                 list.add(vo) ; | 
 |  |  |             } | 
 |  |  | 
 |  |  |     @GetMapping(path = "download") | 
 |  |  |     public void download(HttpServletResponse response){ | 
 |  |  |         try{ | 
 |  |  |             // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman | 
 |  |  |             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); | 
 |  |  |             response.setCharacterEncoding("utf-8"); | 
 |  |  |             // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 | 
 |  |  |             String fileName = URLEncoder.encode(MarkQrCodeCtrl.fileName, "UTF-8").replaceAll("\\+", "%20"); | 
 |  |  |             response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); | 
 |  |  |  | 
 |  |  |             List<ExcelVo> list = new ArrayList<>() ; | 
 |  |  |             Resource resource = new ClassPathResource("/images/logo.png"); | 
 |  |  |             File logoPngFile = resource.getFile() ; | 
 |  |  |             List<Converter> list = new ArrayList<>() ; | 
 |  |  |             String[][] marks = QrCodeConstant.Marks() ; | 
 |  |  |             for(String[] mark : marks){ | 
 |  |  |                 ExcelVo vo = new ExcelVo() ; | 
 |  |  |                 vo.code = mark[0] ; | 
 |  |  |                 vo.name = mark[1] ; | 
 |  |  |                 BufferedImage bufferedImage = QrCodeGenerator.toBufferedImage(QrCodeGenerator.createBitMatrix(vo.code, QrCodeConstant.MarkQrCodeWidth, QrCodeConstant.MarkQrCodeHeight)); | 
 |  |  |                 if(logoPngFile != null && logoPngFile.exists()){ | 
 |  |  |                     bufferedImage = QrCodeGenerator.addQrCodeLogo(bufferedImage, logoPngFile); | 
 |  |  |                 } | 
 |  |  |                 vo.image = QrCodeGenerator.bufferedImageToByteArray(bufferedImage, "JPG"); | 
 |  |  |                 vo.image = QrCodeUtil.genQrCode(vo.code); | 
 |  |  |                 list.add(vo) ; | 
 |  |  |             } | 
 |  |  |             EasyExcel.write(response.getOutputStream(), ExcelVo.class).sheet(MarkQrCodeCtrl.sheetName).doWrite(list); | 
 |  |  |             QrCodeUtil.downloadExcel(response, fileName, sheetName, list); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("下载标识类二维码时异常", e); | 
 |  |  |         } |