package com.ruoyi.web.controller.zhang; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.sign.Base64; import com.ruoyi.common.utils.uuid.Seq; import com.ruoyi.domain.qrcode; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.service.qrCodeService; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import org.springframework.util.FastByteArrayOutputStream; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import static com.ruoyi.common.core.page.TableSupport.PAGE_NUM; import static com.ruoyi.common.core.page.TableSupport.PAGE_SIZE; import static com.ruoyi.common.utils.file.FileUploadUtils.getExtension; @RestController @RequestMapping("/qrCode") public class qrCodeController { @Autowired private ServerConfig serverConfig; @Autowired private qrCodeService coSService; @GetMapping("/all") public AjaxResult listAll(qrcode cos){ // startPage(); Integer pageNum = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1); Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10); return coSService.selectDataList(cos, pageNum,pageSize); } @GetMapping(value = "/getInf") public AjaxResult getInf(@RequestParam(name = "id") Long id) { return AjaxResult.success(coSService.getById(id)); } @Log(title = "生成二维码记录", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody qrcode cos) throws ParseException { cos.setCreateTime(new Date()); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = null; d = sdf.parse("2024-01-01"); }catch (Exception e) { e.printStackTrace(); } return coSService.addData(cos); } @Log(title = "生成二维码记录", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody qrcode cos) { // cos.setApproveStatus(1); return coSService.updateData(cos); } // /** * 批量删除保洁收纳记录 */ // @PreAuthorize("@ss.hasPermi('system:property:remove')") @Log(title = "生成二维码记录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return coSService.deleteData(ids); } public static final String extractFilename(MultipartFile file) { return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(), FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file)); } @Log(title = "二维码生成记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, qrcode cos) { List list = coSService.selectByCondition(cos); // log.info("导出记录为:{}",list); ExcelUtil util = new ExcelUtil<>(qrcode.class); util.exportExcel(response, list, "二维码生成记录数据"); } @GetMapping("/generateCode") public AjaxResult generateCode(@RequestParam Integer id, @RequestParam String uri) { AjaxResult ajax = AjaxResult.success(); BufferedImage image = null; QrConfig config = new QrConfig(300, 300); config.setMargin(3); // config.setErrorCorrection(ErrorCorrectionLevel.H); config.setErrorCorrection(ErrorCorrectionLevel.H); // 设置前景色,既二维码颜色(青色) // config.setForeColor(new Color(0,60,130).getRGB()); // config.setBackColor(new Color(242,242,242).getRGB()); image = QrCodeUtil.generate(uri, //二维码内容 config ); String url = ""; System.out.println(76768999); // 转换流信息写出 FastByteArrayOutputStream os = new FastByteArrayOutputStream(); try { ImageIO.write(image, "jpg", os); // ImageIO.write(image, "jpg", new File("D:/1.jpg")); String filePath = RuoYiConfig.getUploadPath(); InputStream input = new ByteArrayInputStream(os.toByteArray()); //InputStream转成MultipartFile MultipartFile multipartFile =new MockMultipartFile("file", "file.jpg", "text/plain", input); System.out.println(76768999); System.out.println(filePath); // FileUploadUtils.upload(filePath, multipartFile,fname); String fname = extractFilename(multipartFile); System.out.println(fname); String fileName = FileUploadUtils.upload(multipartFile,fname); url = serverConfig.getUrl() + fname; System.out.println(url); System.out.println(fileName); System.out.println(FileUtils.getName(fileName)); qrcode cos = new qrcode(); cos.setId(id); cos.setCodeS(fname); coSService.updateData(cos);; // urls.add(url); // // fileNames.add(fileName); // newFileNames.add(FileUtils.getName(fileName)); // originalFilenames.add(file.getOriginalFilename()); } catch (IOException e) { System.out.println(e.getMessage()); return AjaxResult.error(e.getMessage()); } ajax.put("uuid", "222222222222222222222"); ajax.put("img", Base64.encode(os.toByteArray())); return ajax; } }