From 4a8411147f0341005f746148fdaac64014f65813 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 17 七月 2025 09:04:12 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
---
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 186 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 158 insertions(+), 28 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 b8db1ec..cc3f860 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
@@ -1,19 +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.GunStatusStatisticsVO;
-import com.ruoyi.chargingPile.api.vo.SiteNameVO;
-import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
+import com.ruoyi.chargingPile.api.vo.*;
import com.ruoyi.chargingPile.config.FileUploadConfig;
import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.chargingPile.service.TChargingGunService;
@@ -21,14 +17,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,16 +34,12 @@
import javax.annotation.Resource;
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.FileReader;
-import java.io.PrintWriter;
+import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
+import java.util.stream.Collectors;
/**
* <p>
@@ -75,9 +67,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) {
@@ -87,6 +96,7 @@
/**
* 添加充电枪管理
*/
+ @RequiresPermissions(value = {"/chargingPile/add_charging_gun"}, logical = Logical.OR)
@Log(title = "【充电桩信息】添加充电枪", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE)
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "添加充电枪")
@PostMapping(value = "/add")
@@ -97,6 +107,7 @@
/**
* 修改充电枪
*/
+ @RequiresPermissions(value = {"/chargingGun/update"}, logical = Logical.OR)
@Log(title = "【充电桩信息】修改充电枪", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "修改充电枪")
@PostMapping(value = "/update")
@@ -107,6 +118,7 @@
/**
* 查看充电枪详情
*/
+ @RequiresPermissions(value = {"/chargingGun/update", "/chargingGun/select"}, logical = Logical.OR)
@ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查看充电枪详情")
@GetMapping(value = "/getDetailById")
public AjaxResult<TChargingGun> getDetailById(@RequestParam("id") Integer id) {
@@ -116,6 +128,7 @@
/**
* 删除充电枪
*/
+ @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR)
@Log(title = "【充电桩信息】删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "删除充电枪")
@DeleteMapping(value = "/deleteById")
@@ -128,6 +141,7 @@
/**
* 批量删除充电枪
*/
+ @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR)
@Log(title = "【充电桩信息】批量删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
@ApiOperation(tags = {"后台-充电枪"},value = "批量删除充电枪")
@DeleteMapping(value = "/deleteByIds")
@@ -139,30 +153,34 @@
/**
* 结束充电
*/
+ @RequiresPermissions(value = {"/chargingGun/end_charging"}, logical = Logical.OR)
@Log(title = "【充电桩信息】结束充电", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
@ApiOperation(tags = {"后台-充电枪"},value = "结束充电")
@PutMapping(value = "/stopCharging")
public AjaxResult<String> stopCharging(@RequestParam("id") String id) {
+ // 根据充电枪id 查询最新的一笔订单
+ String data = chargingOrderClient.queryOrderByGunId(id).getData();
// 硬件 结束充电
- chargingOrderClient.stopCharging(id);
+ chargingOrderClient.stopCharging(data);
return AjaxResult.success();
}
+ @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 {
TChargingGun chargingGun = chargingGunService.getById(id);
- TChargingPile chargingPile = chargingPileService.getById(chargingGun.getId());
+ 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();
+ String filePath = fileUploadConfig.getLocation() + fileName;
QRCodeUtils.encode(url, filePath);
FileInputStream inputStream = new FileInputStream(filePath);
ServletOutputStream out = response.getOutputStream();
@@ -174,25 +192,46 @@
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();
}
}
-
+ @Resource
+ private TokenService tokenService;
/**
* 设备状态统计
*/
+ @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR)
@ApiOperation(tags = {"后台-工作台"},value = "设备状态统计")
@PutMapping(value = "/gunStatusStatistics")
- public AjaxResult<GunStatusStatisticsVO> 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()) {
siteIds.add(datum.getId());
}
- return AjaxResult.ok(chargingGunService.gunStatusStatistics(siteIds));
+ return R.ok(chargingGunService.gunStatusStatistics(siteIds));
}
/**
@@ -232,10 +271,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);
}
@@ -244,11 +283,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")));
}
/**
* 根据枪编号获取充电枪
@@ -265,5 +308,92 @@
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);
+ }
+
+
+
+
+
+ /**
+ * 根据枪唯一码查询信息
+ * @return
+ */
+ @ApiOperation(tags = {"大屏-对外开放区车位使用情况"},value = "对外开放区车位使用情况")
+ @GetMapping("/getLargeScreenGun")
+ public R<LargeScreenGunVo> getLargeScreenGun(){
+ LargeScreenGunVo largeScreenGunVo = new LargeScreenGunVo();
+ List<TChargingGun> tChargingGuns = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).in(TChargingGun::getSiteId,26).in(TChargingGun::getChargeMode, 1,2,4));
+ if(tChargingGuns.isEmpty()){
+ return R.ok(largeScreenGunVo);
+ }
+ List<TChargingGun> supperFast = tChargingGuns.stream().filter(e -> e.getChargeMode() == 1).collect(Collectors.toList());
+ largeScreenGunVo.setSuperFast(supperFast.size());
+ int supperFastSize = supperFast.stream().filter(e -> e.getStatus() != 2).collect(Collectors.toList()).size();
+ largeScreenGunVo.setUseSuperFast(supperFastSize);
+ List<TChargingGun> fast = tChargingGuns.stream().filter(e -> e.getChargeMode() == 2).collect(Collectors.toList());
+ largeScreenGunVo.setFast(fast.size());
+ int fastSize = fast.stream().filter(e -> e.getStatus() != 2).collect(Collectors.toList()).size();
+ largeScreenGunVo.setUseFast(fastSize);
+ List<TChargingGun> v2g = tChargingGuns.stream().filter(e -> e.getChargeMode() == 4).collect(Collectors.toList());
+ largeScreenGunVo.setV2g(v2g.size());
+ int v2gSize = v2g.stream().filter(e -> e.getStatus() != 2).collect(Collectors.toList()).size();
+ largeScreenGunVo.setUseV2g(v2gSize);
+
+ return R.ok(largeScreenGunVo);
+ }
+
+
+
+
+
+
+ /**
+ * 大屏 根据站点ids和充电模式集合查询充电枪集合 没有过滤del_flag
+ */
+ @GetMapping("/getGunIdsBySiteIdsAndChargeModels")
+ public R<List<Integer>> getGunIdsBySiteIdsAndChargeModels(@RequestParam("siteIds") List<Integer> siteIds ,@RequestParam("chargeModels") List<Integer> chargeModels){
+ List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>()
+ .select(TChargingGun::getId).in(TChargingGun::getSiteId, siteIds)
+ .in(TChargingGun::getChargeMode, chargeModels));
+ return R.ok(list.stream().map(TChargingGun::getId).collect(Collectors.toList()));
+ }
+
}
--
Gitblit v1.7.1