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.CheckChargingStrategyDTO;
|
import com.ruoyi.chargingPile.api.model.*;
|
import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
|
import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
|
import com.ruoyi.chargingPile.service.*;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.common.core.utils.DateUtils;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.common.log.annotation.Log;
|
import com.ruoyi.common.log.enums.BusinessType;
|
import com.ruoyi.common.log.enums.OperatorType;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.time.LocalTime;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 计费策略明细 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-06
|
*/
|
@Api(tags = "计费策略明细")
|
@RestController
|
@RequestMapping("/t-accounting-strategy-detail")
|
public class TAccountingStrategyDetailController {
|
|
private final ISiteService siteService;
|
private final TChargingPileService chargingPileService;
|
private final TChargingGunService chargingGunService;
|
private final TAccountingStrategyService accountingStrategyService;
|
private final TAccountingStrategyDetailService accountingStrategyDetailService;
|
|
@Autowired
|
public TAccountingStrategyDetailController(ISiteService siteService, TChargingPileService chargingPileService, TChargingGunService chargingGunService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
|
this.siteService = siteService;
|
this.chargingPileService = chargingPileService;
|
this.chargingGunService = chargingGunService;
|
this.accountingStrategyService = accountingStrategyService;
|
this.accountingStrategyDetailService = accountingStrategyDetailService;
|
}
|
|
/**
|
* 通过电站id查询计费策略明细列表
|
*/
|
@ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过站点id查询计费策略明细列表")
|
@GetMapping(value = "/queryAccountingStrategyDetailBySiteId")
|
public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailBySiteId(@RequestParam("siteId") Integer siteId) {
|
Site site = siteService.getById(siteId);
|
TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
|
if(Objects.isNull(accountingStrategy)){
|
throw new ServiceException("未查询到计费策略");
|
}
|
return AjaxResult.ok(accountingStrategyDetailService.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId()));
|
}
|
|
/**
|
* 通过站点id查询当前时间段计费策略展示
|
*/
|
@ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过站点id查询当前时间段计费策略展示")
|
@GetMapping(value = "/queryStrategyBySiteIdAndTime")
|
public AjaxResult<List<TAccountingStrategyDetailVO>> queryStrategyBySiteIdAndTime(@RequestParam("siteId") Integer siteId) {
|
return AjaxResult.ok(accountingStrategyDetailService.queryStrategyBySiteIdAndTime(siteId));
|
}
|
|
/**
|
* 通过站点id查询当前时间段计费策略展示
|
*/
|
@ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过枪id查询当前时间段计费策略展示")
|
@GetMapping(value = "/queryStrategyByGunIdAndTime")
|
public AjaxResult<List<TAccountingStrategyDetailVO>> queryStrategyByGunIdAndTime(@RequestParam("gunId") Integer gunId) {
|
return AjaxResult.ok(accountingStrategyDetailService.queryStrategyByGunIdAndTime(gunId));
|
}
|
|
/**
|
* 价格说明金额返回,会员开通金额说明
|
*/
|
@ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "价格说明金额返回,会员开通金额说明")
|
@GetMapping(value = "/queryPrice")
|
public AjaxResult<StrategyPriceVO> queryPrice(@RequestParam("siteId") Integer siteId) {
|
return AjaxResult.ok(accountingStrategyDetailService.queryPrice(siteId));
|
}
|
|
|
|
|
/**
|
* 通过站点id查询当前时段使用的策略明细
|
* @param siteId
|
* @return
|
*/
|
@GetMapping("/getDetailBySiteId")
|
public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){
|
Site site = siteService.getById(siteId);
|
TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
|
List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
|
list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
|
for (TAccountingStrategyDetail accountingStrategyDetail : list) {
|
if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
|
&& DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
|
return R.ok(accountingStrategyDetail);
|
}
|
}
|
return R.ok();
|
}
|
/**
|
* 通过桩id查询当前时段使用的策略明细
|
* @param code 设备编号
|
* @return
|
*/
|
@GetMapping("/getDetailByCode")
|
public R<TAccountingStrategyDetail> getDetailByCode(@RequestParam("code") String code){
|
// 查询桩
|
TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
|
.eq(TChargingPile::getCode,code).eq(TChargingPile::getDelFlag, 0)
|
.last("LIMIT 1"));
|
if(Objects.isNull(chargingPile)){
|
return R.fail("未查询到该桩设备");
|
}
|
TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
|
.eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)
|
.last("LIMIT 1"));
|
TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
|
TAccountingStrategyDetail one = null;
|
if(Objects.nonNull(accountingStrategy)){
|
List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
|
list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
|
for (TAccountingStrategyDetail accountingStrategyDetail : list) {
|
if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
|
&& DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
|
return R.ok(accountingStrategyDetail);
|
}
|
}
|
}else {
|
Site site = siteService.getById(chargingPile.getSiteId());
|
accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
|
List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
|
list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
|
for (TAccountingStrategyDetail accountingStrategyDetail : list) {
|
if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
|
&& DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
|
return R.ok(accountingStrategyDetail);
|
}
|
}
|
}
|
return R.ok();
|
}
|
/**
|
* 校验充电桩计费模版是否准确
|
* @param
|
* @return
|
*/
|
@PostMapping("/checkChargingStrategy")
|
public R<Boolean> checkChargingStrategy(@RequestBody CheckChargingStrategyDTO dto){
|
// 查询桩
|
TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
|
.eq(TChargingPile::getCode,dto.getCode()).eq(TChargingPile::getDelFlag, 0)
|
.last("LIMIT 1"));
|
if(Objects.isNull(chargingPile)){
|
return R.ok(false);
|
}
|
Site site = siteService.getById(chargingPile.getSiteId());
|
TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
|
TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
|
.last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
|
return R.ok(dto.getStrategyDetailId().equals(one.getId()));
|
}
|
|
|
/**
|
* 根据计费策略主表id策略明细
|
* @param id
|
* @return
|
*/
|
@GetMapping("/getListByAccountingStrategyId")
|
public R<List<TAccountingStrategyDetail>> getListByAccountingStrategyId(@RequestParam("id") Integer id){
|
List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(new LambdaQueryWrapper<TAccountingStrategyDetail>()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, id).orderByAsc(TAccountingStrategyDetail::getStartTime));
|
return R.ok(list);
|
}
|
|
/**
|
* 通过桩编号查询当前使用的策略明细列表
|
* @param code
|
* @return
|
*/
|
@GetMapping("/getDetailListByCode")
|
public R<List<TAccountingStrategyDetail>> getDetailListByCode(@RequestParam("code") String code){
|
// 查询桩
|
TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
|
.eq(TChargingPile::getCode,code).eq(TChargingPile::getDelFlag, 0)
|
.last("LIMIT 1"));
|
if(Objects.isNull(chargingPile)){
|
return R.fail("未查询到该桩设备");
|
}
|
TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
|
.eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)
|
.last("LIMIT 1"));
|
TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
|
if(Objects.nonNull(accountingStrategy)){
|
List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
|
return R.ok(accountingStrategyDetails);
|
}else {
|
Site site = siteService.getById(chargingPile.getSiteId());
|
accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
|
List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
|
.eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
|
return R.ok(accountingStrategyDetails);
|
}
|
}
|
}
|