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.*;
|
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.*;
|
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.annotation.Logical;
|
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
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.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 充电枪 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-06
|
*/
|
@Api(tags = "充电枪")
|
@RestController
|
@RequestMapping("/t-charging-gun")
|
public class TChargingGunController {
|
|
@Autowired
|
private TChargingGunService chargingGunService;
|
@Resource
|
private TChargingPileService chargingPileService;
|
@Resource
|
private ISiteService siteService;
|
|
@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());
|
}
|
|
/**
|
* 查询充电枪列表
|
*/
|
@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)));
|
}
|
|
|
@ApiOperation(tags = {"管理后台-充电桩信息"},value = "下载二维码")
|
@GetMapping(value = "/downloadQRCode/{id}")
|
@Log(title = "【充电桩信息】下载二维码", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
|
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();
|
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;
|
/**
|
* 设备状态统计
|
*/
|
@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();
|
}
|
|
|
|
/**
|
* 根据充电桩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);
|
}
|
|
}
|