Browse Source

芯片数据拉取、二维码生成

zhouyy 1 month ago
parent
commit
fa6e8d8857

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/pom.xml

@@ -15,6 +15,17 @@
 
 
     <dependencies>
     <dependencies>
 
 
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+
 <!--        <dependency>-->
 <!--        <dependency>-->
 <!--            <groupId>cn.hutool</groupId>-->
 <!--            <groupId>cn.hutool</groupId>-->
 <!--            <artifactId>hutool-all</artifactId>-->
 <!--            <artifactId>hutool-all</artifactId>-->

+ 26 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ErpOrderInfoController.java

@@ -0,0 +1,26 @@
+package com.management.platform.controller;
+
+import com.management.platform.service.ErpOrderInfoService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/erpOrderInfo")
+public class ErpOrderInfoController {
+
+
+    @Resource
+    private ErpOrderInfoService erpOrderInfoService;
+
+
+    @RequestMapping("/getInfoByProjectId")
+    public HttpRespMsg getInfoByProjectId(@RequestParam String projectId, HttpServletRequest request) {
+        return erpOrderInfoService.getInfoByProjectId(projectId,request);
+    }
+
+}

+ 69 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/QRCodeController.java

@@ -0,0 +1,69 @@
+package com.management.platform.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.zxing.WriterException;
+import com.management.platform.entity.Report;
+import com.management.platform.mapper.ReportMapper;
+import com.management.platform.util.HttpRespMsg;
+import com.management.platform.util.QRCodeUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/qrCode")
+public class QRCodeController {
+
+
+    @Resource
+    private ReportMapper reportMapper;
+
+    @Value("${upload.path}")
+    private String uploadPath;
+
+    @RequestMapping("/generateQRCodeByReportId")
+    public HttpRespMsg generateQRCode(@RequestParam("reportId")String reportId){
+        HttpRespMsg msg = new HttpRespMsg();
+        Report report = reportMapper.selectById(reportId);
+        String data = JSON.toJSONString(report);
+        int width = 300; // 二维码宽度
+        int height = 300; // 二维码高度
+        String fileName = "日报二维码_"+System.currentTimeMillis()+".png";
+        try {
+            QRCodeUtil.generateQRCodeImage(data, width, height, uploadPath+fileName);
+        } catch (WriterException e) {
+            e.printStackTrace();
+            msg.setError("二维码生成失败,请联系管理员");
+            return msg;
+        } catch (IOException e) {
+            e.printStackTrace();
+            msg.setError("二维码生成失败,请联系管理员");
+            return msg;
+        }
+        msg.setData(uploadPath+fileName);
+        return msg;
+    }
+
+
+    @RequestMapping("/decodeQRCode")
+    public HttpRespMsg decodeQRCode(@RequestParam("filePath")String filePath){
+        HttpRespMsg msg = new HttpRespMsg();
+        String res = null;
+        try {
+            res = QRCodeUtil.decodeQRCode(filePath);
+        } catch (IOException e) {
+            e.printStackTrace();
+            msg.setError("文件解析失败,请联系管理员");
+            return msg;
+        }
+        JSONObject jsonObject = JSON.parseObject(res);
+        msg.setData(jsonObject);
+        return msg;
+    }
+
+}

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ErpOrderInfoService.java

@@ -0,0 +1,11 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.ErpOrderInfo;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface ErpOrderInfoService extends IService<ErpOrderInfo> {
+    HttpRespMsg getInfoByProjectId(String projectId, HttpServletRequest request);
+}

+ 37 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ErpOrderInfoServiceImpl.java

@@ -0,0 +1,37 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.ErpOrderInfo;
+import com.management.platform.mapper.ErpOrderInfoMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ErpOrderInfoService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@Service
+public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, ErpOrderInfo> implements ErpOrderInfoService {
+
+    @Resource
+    private ErpOrderInfoMapper erpOrderInfoMapper;
+
+    @Resource
+    private UserMapper userMapper;
+
+
+    @Override
+    public HttpRespMsg getInfoByProjectId(String projectId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+//        User user = userMapper.selectById(request.getHeader("Token"));
+        List<ErpOrderInfo> erpOrderInfos = erpOrderInfoMapper.selectList(new LambdaQueryWrapper<ErpOrderInfo>()
+                .eq(ErpOrderInfo::getProjectId, projectId)
+                .ne(ErpOrderInfo::getStatus, 4)
+        );
+        httpRespMsg.setData(erpOrderInfos);
+        return httpRespMsg;
+    }
+}

+ 67 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/QRCodeUtil.java

@@ -0,0 +1,67 @@
+package com.management.platform.util;
+
+import com.google.zxing.*;
+import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.common.HybridBinarizer;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class QRCodeUtil {
+
+    /**字符串生成二维码*/
+    public static void generateQRCodeImage(String text, int width, int height, String filePath)
+            throws WriterException, IOException {
+        QRCodeWriter qrCodeWriter = new QRCodeWriter();
+        Map<EncodeHintType, Object> hints = new HashMap<>();
+        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+        hints.put(EncodeHintType.MARGIN, 1);
+
+        BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
+
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+        image.createGraphics();
+
+        Graphics2D graphics = (Graphics2D) image.getGraphics();
+        graphics.setColor(Color.WHITE);
+        graphics.fillRect(0, 0, width, height);
+        graphics.setColor(Color.BLACK);
+
+        for (int i = 0; i < width; i++) {
+            for (int j = 0; j < height; j++) {
+                if (bitMatrix.get(i, j)) {
+                    graphics.fillRect(i, j, 1, 1);
+                }
+            }
+        }
+        ImageIO.write(image, "PNG", new File(filePath));
+    }
+
+    /**根据路径解析二维码图片*/
+    public static String decodeQRCode(String filePath) throws IOException {
+        BufferedImage qrCodeImage = ImageIO.read(new File(filePath));
+        LuminanceSource source = new BufferedImageLuminanceSource(qrCodeImage);
+        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
+
+        try {
+            Map<DecodeHintType, Object> hints = new HashMap<>();
+            hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
+
+            Result result = new MultiFormatReader().decode(bitmap, hints);
+            return result.getText();
+        } catch (NotFoundException e) {
+            System.out.println("未找到二维码: " + e.getMessage());
+            return null;
+        }
+    }
+
+}