package com.ruoyi.chargingPile.controller;
|
|
|
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.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;
|
import com.ruoyi.chargingPile.config.FileUploadConfig;
|
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.common.core.domain.R;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
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.service.TokenService;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.*;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 充电枪 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-06
|
*/
|
@Api(tags = "充电枪")
|
@RestController
|
@RequestMapping("/t-charging-gun")
|
public class TChargingGunController {
|
|
@Autowired
|
private TChargingGunService chargingGunService;
|
@Resource
|
private ChargingOrderClient chargingOrderClient;
|
|
@Resource
|
private TChargingPileService chargingPileService;
|
@Resource
|
private ISiteService siteService;
|
|
@Autowired
|
private FileUploadConfig fileUploadConfig;
|
|
/**
|
* 查询充电枪列表
|
*/
|
@ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查询充电枪分页列表")
|
@PostMapping(value = "/pageList")
|
public AjaxResult<PageInfo<TChargingGunVO>> pageList(@RequestBody TChargingGunQuery query) {
|
return AjaxResult.ok(chargingGunService.pageList(query));
|
}
|
|
/**
|
* 添加充电枪管理
|
*/
|
@Log(title = "【充电桩信息】添加充电枪", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE)
|
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "添加充电枪")
|
@PostMapping(value = "/add")
|
public AjaxResult add(@RequestBody TChargingGunDTO dto) {
|
return chargingGunService.add(dto);
|
}
|
|
/**
|
* 修改充电枪
|
*/
|
@Log(title = "【充电桩信息】修改充电枪", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
|
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "修改充电枪")
|
@PostMapping(value = "/update")
|
public AjaxResult update(@RequestBody TChargingGunDTO dto) {
|
return chargingGunService.update(dto);
|
}
|
|
/**
|
* 查看充电枪详情
|
*/
|
@ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查看充电枪详情")
|
@GetMapping(value = "/getDetailById")
|
public AjaxResult<TChargingGun> getDetailById(@RequestParam("id") Integer id) {
|
return AjaxResult.ok(chargingGunService.getById(id));
|
}
|
|
/**
|
* 删除充电枪
|
*/
|
@Log(title = "【充电桩信息】删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
|
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "删除充电枪")
|
@DeleteMapping(value = "/deleteById")
|
public AjaxResult<Boolean> deleteById(@RequestParam("id") Integer id) {
|
TChargingGun chargingGun = chargingGunService.getById(id);
|
chargingGunService.removeById(chargingGun);
|
return AjaxResult.success();
|
}
|
|
/**
|
* 批量删除充电枪
|
*/
|
@Log(title = "【充电桩信息】批量删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
|
@ApiOperation(tags = {"后台-充电枪"},value = "批量删除充电枪")
|
@DeleteMapping(value = "/deleteByIds")
|
public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
|
String[] split = ids.split(",");
|
return AjaxResult.ok(chargingGunService.removeByIds(Arrays.asList(split)));
|
}
|
|
/**
|
* 结束充电
|
*/
|
@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(data);
|
return AjaxResult.success();
|
}
|
|
|
|
@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.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();
|
}
|
}
|
@Resource
|
private TokenService tokenService;
|
/**
|
* 设备状态统计
|
*/
|
@ApiOperation(tags = {"后台-工作台"},value = "设备状态统计")
|
@PutMapping(value = "/gunStatusStatistics")
|
public R<GunStatusStatisticsVO> gunStatusStatistics() {
|
List<Integer> siteIds = new ArrayList<>();
|
Long userId = tokenService.getLoginUser().getUserid();
|
//获取当前登录的siteIds
|
PageInfo<GetSiteListDTO> siteList1 = siteService.getSiteList1(userId);
|
for (GetSiteListDTO datum : siteList1.getRecords()) {
|
siteIds.add(datum.getId());
|
}
|
return R.ok(chargingGunService.gunStatusStatistics(siteIds));
|
}
|
|
/**
|
* 根据id获取充电枪完整名称
|
* @param id
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping(value = "/getAllName/{id}")
|
public R<String> getAllName(@PathVariable Integer id){
|
TChargingGun chargingGun = chargingGunService.getById(id);
|
TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId());
|
return R.ok(chargingPile.getName() + chargingGun.getName());
|
}
|
|
|
/**
|
* 根据id获取充电枪详情
|
* @param id
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping(value = "/getChargingGunById/{id}")
|
public R<TChargingGun> getChargingGunById(@PathVariable Integer id){
|
TChargingGun chargingGun = chargingGunService.getById(id);
|
return R.ok(chargingGun);
|
}
|
/**
|
* 根据id获取充电枪详情
|
* @param id
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping(value = "/getAllInfoById/{id}")
|
public R<SiteNameVO> getAllInfoById(@PathVariable Integer id){
|
SiteNameVO siteNameVO = new SiteNameVO();
|
TChargingGun chargingGun = chargingGunService.getById(id);
|
siteNameVO.setGunName(chargingGun.getName());
|
siteNameVO.setGunNumber(chargingGun.getCode());
|
TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId());
|
siteNameVO.setPileName(chargingPile.getName());
|
siteNameVO.setPileNumber(chargingPile.getNumber());
|
Site site = siteService.getById(chargingGun.getSiteId());
|
siteNameVO.setSiteName(site.getName());
|
return R.ok(siteNameVO);
|
}
|
/**
|
* 根据枪编号获取充电枪
|
* @param code
|
* @return
|
*/
|
@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::getChargingPileId, chargingPile.getId())
|
.eq(TChargingGun::getCode, code.getCharging_gun_code())
|
.eq(TChargingGun::getDelFlag, 0)
|
.last("LIMIT 1")));
|
}
|
/**
|
* 根据枪编号获取充电枪
|
* @param code
|
* @return
|
*/
|
/**
|
* 编辑充电枪
|
* @param chargingGun
|
* @return
|
*/
|
@PostMapping("/updateChargingGunById")
|
public R<String> updateChargingGunById(@RequestBody TChargingGun chargingGun){
|
chargingGunService.updateById(chargingGun);
|
return R.ok();
|
}
|
}
|