From 324ed9fac852bc4117ee0da65a586adef258bd52 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 01 九月 2025 11:08:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java |   85 ++++++++++++++++--------------------------
 1 files changed, 33 insertions(+), 52 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index 1b440e2..3975fa1 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -14,7 +14,7 @@
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TChargingGunService;
 import com.ruoyi.chargingPile.service.TChargingPileService;
-import com.ruoyi.chargingPile.util.QRCodeUtils;
+import com.ruoyi.chargingPile.util.*;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
@@ -26,20 +26,24 @@
 import com.ruoyi.common.security.service.TokenService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.imageio.ImageIO;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
 import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -84,7 +88,6 @@
     /**
      * 查询充电枪列表
      */
-    @RequiresPermissions(value = {"/chargingPile", "/chargingGun"}, logical = Logical.OR)
     @ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查询充电枪分页列表")
     @PostMapping(value = "/pageList")
     public AjaxResult<PageInfo<TChargingGunVO>> pageList(@RequestBody TChargingGunQuery query) {
@@ -94,7 +97,6 @@
     /**
      * 添加充电枪管理
      */
-    @RequiresPermissions(value = {"/chargingPile/add_charging_gun"}, logical = Logical.OR)
     @Log(title = "【充电桩信息】添加充电枪", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"管理后台-充电桩信息"},value = "添加充电枪")
     @PostMapping(value = "/add")
@@ -105,7 +107,6 @@
     /**
      * 修改充电枪
      */
-    @RequiresPermissions(value = {"/chargingGun/update"}, logical = Logical.OR)
     @Log(title = "【充电桩信息】修改充电枪", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"管理后台-充电桩信息"},value = "修改充电枪")
     @PostMapping(value = "/update")
@@ -116,7 +117,6 @@
     /**
      * 查看充电枪详情
      */
-    @RequiresPermissions(value = {"/chargingGun/update", "/chargingGun/select"}, logical = Logical.OR)
     @ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查看充电枪详情")
     @GetMapping(value = "/getDetailById")
     public AjaxResult<TChargingGun> getDetailById(@RequestParam("id") Integer id) {
@@ -126,7 +126,6 @@
     /**
      * 删除充电枪
      */
-    @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR)
     @Log(title = "【充电桩信息】删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"管理后台-充电桩信息"},value = "删除充电枪")
     @DeleteMapping(value = "/deleteById")
@@ -139,7 +138,6 @@
     /**
      * 批量删除充电枪
      */
-    @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR)
     @Log(title = "【充电桩信息】批量删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-充电枪"},value = "批量删除充电枪")
     @DeleteMapping(value = "/deleteByIds")
@@ -149,60 +147,43 @@
     }
 
 
-    @RequiresPermissions(value = {"/chargingGun/download_qr_code"}, logical = Logical.OR)
     @ApiOperation(tags = {"管理后台-充电桩信息"},value = "下载二维码")
     @GetMapping(value = "/downloadQRCode/{id}")
     @Log(title = "【充电桩信息】下载二维码", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
-    public void downloadQRCode(@PathVariable Integer id, HttpServletResponse response){
-        try {
+    public R<String> downloadQRCode(@PathVariable("id") Integer id) throws IOException {
             TChargingGun chargingGun = chargingGunService.getById(id);
             TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId());
             String code = chargingPile.getCode() + chargingGun.getCode();
-            String fileName = URLEncoder.encode(code, "UTF-8") + ".jpg";
-            response.setContentType("application/force-download");
-            response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
-            String url = "https://mxcd.zhinenganguan.com?No=" + code;
-            String filePath = fileUploadConfig.getLocation() + fileName;
-            QRCodeUtils.encode(url, filePath);
-            FileInputStream inputStream = new FileInputStream(filePath);
-            ServletOutputStream out = response.getOutputStream();
-            int len = 0;
-            byte[] buf = new byte[1024];
-            while ((len = inputStream.read(buf, 0, 1024)) != -1) {
-                out.write(buf);
-            }
-            out.flush();
-            out.close();
-            inputStream.close();
-            
-            //清除服务器上的文件
-            try {
-                // 使用Runtime执行命令
-                Process process = Runtime.getRuntime().exec("sudo rm -rf " + filePath);
-                // 读取命令的输出
-                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
-                String line;
-                while ((line = reader.readLine()) != null) {
-                    System.out.println(line);
-                }
-                // 等待命令执行完成
-                process.waitFor();
-                // 关闭流
-                reader.close();
-            } catch (IOException | InterruptedException e) {
-                e.printStackTrace();
-            }
-            
-        }catch (Exception e){
-            e.printStackTrace();
-        }
+            MyQrCodeUtil.createCodeToFile("http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/"+code);
+            BufferedImage redImage = QRCodeUtil.createImage(code);
+            MultipartFile blueFile = convert(redImage,  ".PNG");
+            String s = ObsUploadUtil.obsUploadCode( blueFile,code);
+            return R.ok(s);
+    }
+    public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException {
+        // 将 BufferedImage 转换为字节数组
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ImageIO.write(bufferedImage, "png", baos);
+        byte[] bytes = baos.toByteArray();
+
+        // 创建 ByteArrayResource
+        ByteArrayResource resource = new ByteArrayResource(bytes);
+
+        // 创建 MockMultipartFile
+        MockMultipartFile multipartFile = new MockMultipartFile(
+                "file",
+                fileName,
+                "image/png",
+                resource.getInputStream()
+        );
+
+        return multipartFile;
     }
     @Resource
     private TokenService tokenService;
     /**
      * 设备状态统计
      */
-    @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
     @ApiOperation(tags = {"后台-工作台"},value = "设备状态统计")
     @PutMapping(value = "/gunStatusStatistics")
     public R<GunStatusStatisticsVO> gunStatusStatistics() {

--
Gitblit v1.7.1