Pu Zhibing
2025-05-19 3244b550596e0330031b3f4547356927df83b0ad
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -1,16 +1,15 @@
package com.ruoyi.chargingPile.controller;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO;
import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
@@ -21,14 +20,14 @@
import com.ruoyi.chargingPile.util.QRCodeUtils;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.domain.BaseDelete;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
import com.ruoyi.common.security.annotation.Logical;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.model.EndCharge;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -38,13 +37,11 @@
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -72,9 +69,26 @@
    @Autowired
    private FileUploadConfig fileUploadConfig;
    /**
     * 查询所有枪
     */
    @PostMapping(value = "/getAllGun")
    public R<List<TChargingGun>> getAllGun() {
        return R.ok(chargingGunService.list());
    }
    /**
     * 查询所有桩
     */
    @PostMapping(value = "/getAllPile")
    public R<List<TChargingPile>> getAllPile() {
        return R.ok(chargingPileService.list());
    }
    /**
     * 查询充电枪列表
     */
    @RequiresPermissions(value = {"/chargingPile", "/chargingGun"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查询充电枪分页列表")
    @PostMapping(value = "/pageList")
    public AjaxResult<PageInfo<TChargingGunVO>> pageList(@RequestBody TChargingGunQuery query) {
@@ -84,6 +98,7 @@
    /**
     * 添加充电枪管理
     */
    @RequiresPermissions(value = {"/chargingPile/add_charging_gun"}, logical = Logical.OR)
    @Log(title = "【充电桩信息】添加充电枪", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"管理后台-充电桩信息"},value = "添加充电枪")
    @PostMapping(value = "/add")
@@ -94,6 +109,7 @@
    /**
     * 修改充电枪
     */
    @RequiresPermissions(value = {"/chargingGun/update"}, logical = Logical.OR)
    @Log(title = "【充电桩信息】修改充电枪", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"管理后台-充电桩信息"},value = "修改充电枪")
    @PostMapping(value = "/update")
@@ -104,6 +120,7 @@
    /**
     * 查看充电枪详情
     */
    @RequiresPermissions(value = {"/chargingGun/update", "/chargingGun/select"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查看充电枪详情")
    @GetMapping(value = "/getDetailById")
    public AjaxResult<TChargingGun> getDetailById(@RequestParam("id") Integer id) {
@@ -113,6 +130,7 @@
    /**
     * 删除充电枪
     */
    @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR)
    @Log(title = "【充电桩信息】删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"管理后台-充电桩信息"},value = "删除充电枪")
    @DeleteMapping(value = "/deleteById")
@@ -125,6 +143,7 @@
    /**
     * 批量删除充电枪
     */
    @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR)
    @Log(title = "【充电桩信息】批量删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"后台-充电枪"},value = "批量删除充电枪")
    @DeleteMapping(value = "/deleteByIds")
@@ -136,6 +155,7 @@
    /**
     * 结束充电
     */
    @RequiresPermissions(value = {"/chargingGun/end_charging"}, logical = Logical.OR)
    @Log(title = "【充电桩信息】结束充电", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"后台-充电枪"},value = "结束充电")
    @PutMapping(value = "/stopCharging")
@@ -149,6 +169,7 @@
    
    
    
    @RequiresPermissions(value = {"/chargingGun/download_qr_code"}, logical = Logical.OR)
    @ApiOperation(tags = {"管理后台-充电桩信息"},value = "下载二维码")
    @GetMapping(value = "/downloadQRCode/{id}")
    @Log(title = "【充电桩信息】下载二维码", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
@@ -174,29 +195,39 @@
            out.close();
            inputStream.close();
            
            //清楚服务器上的文件
//            Process process = null;
//            try {
//                process = Runtime.getRuntime().exec("sudo rm -rf " + filePath);
//            } catch (IOException e) {
//                throw new RuntimeException(e);
//            }
//            if (process != null) {
//                process.destroy();
//            }
            //清除服务器上的文件
            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();
        }
    }
    @Resource
    private TokenService tokenService;
    /**
     * 设备状态统计
     */
    @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-工作台"},value = "设备状态统计")
    @PutMapping(value = "/gunStatusStatistics")
    public R<GunStatusStatisticsVO> gunStatusStatistics() {
        List<Integer> siteIds = new ArrayList<>();
        Long userId = SecurityUtils.getUserId();
        Long userId = tokenService.getLoginUser().getUserid();
        //获取当前登录的siteIds
        PageInfo<GetSiteListDTO> siteList1 = siteService.getSiteList1(userId);
        for (GetSiteListDTO datum : siteList1.getRecords()) {
@@ -242,10 +273,10 @@
        TChargingGun chargingGun = chargingGunService.getById(id);
        siteNameVO.setGunName(chargingGun.getName());
        siteNameVO.setGunNumber(chargingGun.getCode());
        TChargingPile chargingPile = chargingPileService.getById(id);
        TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId());
        siteNameVO.setPileName(chargingPile.getName());
        siteNameVO.setPileNumber(chargingPile.getNumber());
        Site site = siteService.getById(id);
        Site site = siteService.getById(chargingGun.getSiteId());
        siteNameVO.setSiteName(site.getName());
        return R.ok(siteNameVO);
    }
@@ -254,11 +285,15 @@
     * @param code
     * @return
     */
    @PostMapping("/getChargingGunByCode/{code}")
    public R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code){
    @PostMapping("/getChargingGunByCode")
    public R<TChargingGun> getChargingGunByCode(@RequestBody GetChargingGunByCode code){
        TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>()
                .eq(TChargingPile::getCode, code.getCharging_pile_code()).eq(TChargingPile::getDelFlag, 0));
        return R.ok(chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
                .eq(TChargingGun::getCode, code)
                .last("LIMIT 1")));
                        .eq(TChargingGun::getChargingPileId, chargingPile.getId())
                        .eq(TChargingGun::getCode, code.getCharging_gun_code())
                        .eq(TChargingGun::getDelFlag, 0)
                        .last("LIMIT 1")));
    }
    /**
     * 根据枪编号获取充电枪
@@ -275,5 +310,43 @@
        chargingGunService.updateById(chargingGun);
        return R.ok();
    }
    /**
     * 根据充电桩id获取枪
     * @param chargingPileId
     * @return
     */
    @PostMapping("/getChargingGunByChargingPileId")
    public R<List<TChargingGun>> getChargingGunByChargingPileId(@RequestParam("chargingPileId") Integer chargingPileId){
        List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPileId)
                .eq(TChargingGun::getDelFlag, 0));
        return R.ok(list);
    }
    /**
     * 根据充电桩ids获取枪
     * @param chargingPileIds
     * @return
     */
    @PostMapping("/getChargingGunByChargingPileIds")
    public R<List<TChargingGun>> getChargingGunByChargingPileIds(@RequestParam("chargingPileIds") List<Integer> chargingPileIds){
        List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getChargingPileId, chargingPileIds)
                .eq(TChargingGun::getDelFlag, 0));
        return R.ok(list);
    }
    /**
     * 根据枪唯一码查询信息
     * @return
     */
    @PostMapping("/getChargingGunByFullNumber")
    public R<TChargingGun> getChargingGunByFullNumber(@RequestParam("fullNumber") String fullNumber){
        TChargingGun chargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).eq(TChargingGun::getFullNumber, fullNumber));
        return R.ok(chargingGun);
    }
}