From d49df6e5b16eb16e47ea9a3bc0aa35f017835e02 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 28 十月 2024 15:34:33 +0800 Subject: [PATCH] 修改 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 92 insertions(+), 14 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 9f4183e..18a443a 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.*; @@ -16,17 +18,20 @@ import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.GeodesyUtil; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; 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.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; +import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; @@ -89,7 +94,12 @@ @Resource private SysUserRoleClient userRoleClient; - + @Resource + private VipClient vipClient; + @Resource + private TokenService tokenService; + @Resource + private AppUserClient appUserClient; /** @@ -107,21 +117,53 @@ * @param number * @return */ - @PostMapping("/getSiteInfoByNumber") + @GetMapping("/getSiteInfoByNumber") @ApiOperation(value = "扫一扫后通过桩编号获取电站信息", tags = {"小程序-扫一扫"}) public R<SiteInfoVO> getSiteInfoByNumber(@RequestParam("number") String number){ SiteInfoVO siteInfoVO = new SiteInfoVO(); - TChargingPile one = chargingPileService.lambdaQuery().eq(TChargingPile::getNumber, number).one(); + TChargingGun chargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getFullNumber, number)); + TChargingPile one = chargingPileService.getById(chargingGun.getChargingPileId()); Site byId = siteService.getById(one.getSiteId()); TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId()); List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list(); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); for (TAccountingStrategyDetail tAccountingStrategyDetail : list) { // 当前时间属于那个阶段 取哪个阶段的电价 - if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){ - siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence()); - siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP)); + if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 + && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ + siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP)); + siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP)); } } + siteInfoVO.setChargingGunId(chargingGun.getId()); + siteInfoVO.setChargingPileId(one.getId()); + siteInfoVO.setName(byId.getName()); + siteInfoVO.setNumber(one.getNumber().toString()); + siteInfoVO.setSpaceChargeExplain(byId.getSpaceChargeExplain()); + return R.ok(siteInfoVO); + } + /** + * 通过桩编号获取电站信息 遠程調用 + * @param number + * @return + */ + @PostMapping("/getSiteInfoByNumber1") + public R<SiteInfoVO> getSiteInfoByNumber1(@RequestParam("number") String number){ + SiteInfoVO siteInfoVO = new SiteInfoVO(); + TChargingPile one = chargingPileService.lambdaQuery().eq(TChargingPile::getCode, number).one(); + Site byId = siteService.getById(one.getSiteId()); + TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId()); + List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list(); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); + for (TAccountingStrategyDetail tAccountingStrategyDetail : list) { + // 当前时间属于那个阶段 取哪个阶段的电价 + if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 + && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ + siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP)); + siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP)); + } + } + siteInfoVO.setChargingPileId(one.getId()); siteInfoVO.setName(byId.getName()); siteInfoVO.setNumber(one.getNumber().toString()); siteInfoVO.setSpaceChargeExplain(byId.getSpaceChargeExplain()); @@ -134,6 +176,8 @@ PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList); return AjaxResult.success(list); } + + @GetMapping("/getSiteList/byUserId") @ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"}) public R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId){ @@ -146,9 +190,43 @@ @GetMapping("/map/getSiteList") @ApiOperation(value = "获取站点", tags = {"管理后台-数据分析-电站分析"}) public R<List<GetSiteListDTO>> getMapSiteList(GetSiteList siteList){ + siteList.setPageCurr(1); - siteList.setPageCurr(99999); + siteList.setPageSize(99999); PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList); + for (GetSiteListDTO record : list.getRecords()) { + Long count = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).eq(TChargingGun::getStatus, new int[]{3, 4, 5, 6}).count(); + record.setC1(count); + Long count1 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).eq(TChargingGun::getStatus, 2).count(); + record.setC2(count1); + Long count2 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).eq(TChargingGun::getStatus, new int[]{3, 4, 5, 6}).count(); + record.setK1(count2); + Long count3 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).eq(TChargingGun::getStatus, 2).count(); + record.setK2(count3); + Long count4 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).eq(TChargingGun::getStatus, new int[]{3, 4, 5, 6}).count(); + record.setM1(count4); + Long count5 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).eq(TChargingGun::getStatus, 2).count(); + record.setM2(count5); + + //利用率 + BigDecimal bigDecimal = new BigDecimal("0"); + //获取该站点的总充电度数 + List<TChargingOrder> chargingOrders = chargingOrderClient.getList(record.getId()).getData(); + for (TChargingOrder chargingOrder : chargingOrders) { + bigDecimal = bigDecimal.add(chargingOrder.getChargingCapacity()); + } + //获取该站点的所有充电桩 + List<TChargingPile> chargingPiles = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, record.getId()).list(); + BigDecimal bigDecimal1 = new BigDecimal("0"); + for (TChargingPile chargingPile : chargingPiles) { + bigDecimal1 = bigDecimal1.add(chargingPile.getRatedPower()); + } + BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24")); + + BigDecimal divide = bigDecimal.divide(multiply, 0, BigDecimal.ROUND_HALF_UP); + record.setP1(divide); + + } return R.ok(list.getRecords()); } @@ -204,7 +282,7 @@ List<GetSiteListDTO> records = siteService.getSiteList(siteList).getRecords(); List<Integer> collect = records.stream().map(GetSiteListDTO::getId).collect(Collectors.toList()); // 通过时间段获取和充电桩id获取各个充电站的充电订单 - List<ChargingOrderGroup> data = chargingOrderClient.getBySiteIdAndTime(chargingPercentProvinceDto).getData(); + List<ChargingOrderGroup> data = chargingOrderClient.getBySiteIdAndTime(chargingPercentProvinceDto).getData(); // 计算利用率展示 for (ChargingOrderGroup datum : data) { List<TChargingPile> chargingPiles = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, datum.getSiteId()).list(); @@ -252,7 +330,7 @@ return AjaxResult.success(siteService.getSiteListGun()); } - @PostMapping("/getSiteListParkLot") + @GetMapping("/getSiteListParkLot") @ApiOperation(value = "获取站点列表不分页", tags = {"管理后台-停车场绑定"}) public AjaxResult<List<Site>> getSiteListParkLot(){ return AjaxResult.success(siteService.getSiteListParkLot()); @@ -272,15 +350,15 @@ @ApiOperation(value = "获取站点详细信息", tags = {"小程序-站点管理-站点详情"}) @PostMapping("/getDetailById") public AjaxResult<SiteDetailVO> getDetailById(@Validated @RequestBody SiteDetailQuery query){ - SiteDetailVO siteDetailVO = siteService.getDetailById(query.getSiteId()); + SiteDetailVO siteDetailVO = siteService.getDetailById(query); // 查询合作商名称 Partner partner = partnerService.getById(siteDetailVO.getPartnerId()); if(Objects.nonNull(partner)){ siteDetailVO.setPartnerName(partner.getName()); } // 计算距离 - Map<String, Double> distance = GeodesyUtil.getDistance(query.getLat() + "," + query.getLon(), siteDetailVO.getLat() + "," + siteDetailVO.getLon()); - siteDetailVO.setDistance(distance.get("WGS84")); +// Map<String, Double> distance = GeodesyUtil.getDistance(query.getLat() + "," + query.getLon(), siteDetailVO.getLat() + "," + siteDetailVO.getLon()); +// siteDetailVO.setDistance(distance.get("WGS84")); // 查询绑定车牌提示文案 TParkingLot parkingLot = parkingLotService.getOne(Wrappers.lambdaQuery(TParkingLot.class) .eq(TParkingLot::getSiteId, query.getSiteId())); @@ -394,7 +472,7 @@ @ResponseBody @PostMapping("/getSiteByIds") public R<List<Site>> getSiteByIds(@RequestBody List<Integer> ids){ - List<Site> sites = siteService.listByIds(ids); + List<Site> sites = siteService.list(new LambdaQueryWrapper<Site>().in(Site::getId, ids).eq(Site::getDelFlag, 0)); return R.ok(sites); } -- Gitblit v1.7.1