From 82e5f5968a77bde806f45a0ae1fe16f40852d6d6 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 21 十月 2024 17:22:27 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 177 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 127 insertions(+), 50 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index ea4a3c8..6b5b491 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -1,6 +1,5 @@ package com.ruoyi.order.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; import java.math.BigDecimal; import java.math.RoundingMode; @@ -21,29 +20,24 @@ 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.TParkingRecord; -import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingOrderGroup; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; -import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.ChargingOrderAndUploadRealTimeMonitoringDataDto; -import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery; import com.ruoyi.order.api.vo.*; import com.ruoyi.order.api.vo.ChargingOrderInfoVO; -import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate; import com.ruoyi.order.api.vo.TCharingOrderVO; import com.ruoyi.order.dto.GetMyChargingOrderList; @@ -53,17 +47,14 @@ import com.ruoyi.order.dto.OrderEvaluateVo; import com.ruoyi.order.dto.*; import com.ruoyi.order.service.*; -import com.ruoyi.order.service.impl.TChargingOrderServiceImpl; import com.ruoyi.order.util.PreviousSixMonths; +import com.ruoyi.order.vo.EndOfChargePageInfo; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.vo.AliQueryOrder; -import com.ruoyi.payment.api.vo.WxRefundNotifyResp; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; -import io.swagger.models.auth.In; -import jdk.nashorn.internal.runtime.ListAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -72,15 +63,12 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; -import java.util.*; import java.util.*; import java.util.List; import java.util.stream.Collectors; @@ -143,6 +131,9 @@ private AppUserCarClient appUserCarClient; @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; + + @Resource + private TOrderInvoiceService invoiceService; /** @@ -318,18 +309,38 @@ @ResponseBody @PostMapping(value = "/chargingOrderInfo") @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"}) - public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String orderId) { + public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) { + TChargingOrder byId = chargingOrderService.getById(strategyId); ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO(); - chargingOrderInfoVO.setCdElectronic(""); - chargingOrderInfoVO.setCdVoltage(""); - chargingOrderInfoVO.setSurplus(""); - chargingOrderInfoVO.setTotalPower(""); - chargingOrderInfoVO.setLicensePlate(""); - chargingOrderInfoVO.setVehicleBrand(""); - chargingOrderInfoVO.setVehicleModel(""); - chargingOrderInfoVO.setVehicleUse(""); - List<TChargingOrderAccountingStrategy> tChargingOrderAccountingStrategies = new ArrayList<>(); - chargingOrderInfoVO.setList(tChargingOrderAccountingStrategies); + + chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent()+"":""); + chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage()+"":""); + chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity()+"":""); + chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower()+"":""); + if (byId.getAppUserCarId()!=null){ + List<TAppUserCar> data = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); + if (!data.isEmpty()){ + chargingOrderInfoVO.setLicensePlate(data.get(0).getLicensePlate()); + chargingOrderInfoVO.setVehicleBrand(data.get(0).getVehicleBrand()); + chargingOrderInfoVO.setVehicleModel(data.get(0).getVehicleModel()); + chargingOrderInfoVO.setVehicleUse(data.get(0).getVehicleUse()); + } + } + // 时段总服务费 + BigDecimal bigDecimal = new BigDecimal("0"); + List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, strategyId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); + for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : list) { + bigDecimal = bigDecimal.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); + tChargingOrderAccountingStrategy.setVipDiscount( + tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice() + .subtract(tChargingOrderAccountingStrategy.getPeriodServicePrice()) + ); + tChargingOrderAccountingStrategy.setCouponDiscount( + tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice() + .subtract(tChargingOrderAccountingStrategy.getPeriodServicePrice()) + ); + } + chargingOrderInfoVO.setList(list); return AjaxResult.success(chargingOrderInfoVO); } @@ -471,6 +482,7 @@ @ResponseBody @PostMapping(value = "/securityDetection") public void securityDetection(@RequestBody SecurityDetectionVO securityDetection){ + log.error("-------------------安全检测数据-------------------:" + securityDetection); chargingOrderService.securityDetection(securityDetection); } @@ -571,6 +583,17 @@ public void terminateSuccessfulResponse(@RequestBody PlatformStopChargingReplyVO platformStopChargingReply){ log.error("-------------------远程停止充电请求应答-------------------:" + platformStopChargingReply); chargingOrderService.terminateSuccessfulResponse(platformStopChargingReply); + } + + + /** + * 停止充电返回账单后计算费用 + * @param vo + */ + @PostMapping("/endChargeBillingCharge") + public void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){ + log.error("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo); + chargingOrderService.endChargeBillingCharge(vo); } @@ -675,29 +698,34 @@ @ResponseBody @PostMapping(value = "/watch/chargingOrder") @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) - public R<List<ChargingOrderAndUploadRealTimeMonitoringDataDto>> watchChargingOrder(@RequestBody ChargingOrderQuery dto) { - Integer page = dto.getPageCurr(); - Integer pageSize = dto.getPageSize(); - List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); - dto.setUserIds(data); - dto.setPageCurr(1); - dto.setPageSize(99999); - TCharingOrderVO res = chargingOrderService.chargingOrder(dto); - Map<String,TChargingOrder> map = new HashMap<>(); - //吧list放入map中 - for (ChargingOrderVO record : res.getList().getRecords()) { - map.put(record.getCode(),record); - } - Set<String> strings = map.keySet(); + public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) { +// Integer page = dto.getPageCurr(); +// Integer pageSize = dto.getPageSize(); +// List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); +// dto.setUserIds(data); +// dto.setPageCurr(1); +// dto.setPageSize(99999); + +// Map<String,TChargingOrder> map = new HashMap<>(); +// //吧list放入map中 +// for (ChargingOrderVO record : res.getList().getRecords()) { +// map.put(record.getCode(),record); +// } +// Set<String> strings = map.keySet(); - List<UploadRealTimeMonitoringData> data1 = uploadRealTimeMonitoringDataClient.getAll(strings, page, pageSize).getData(); + List<UploadRealTimeMonitoringData> data1 = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery).getData(); List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>(); for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1) { ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto(); BeanUtils.copyProperties(uploadRealTimeMonitoringData,dataDto); - BeanUtils.copyProperties(map.get(uploadRealTimeMonitoringData.getCharging_pile_code()),dataDto); + ChargingOrderQuery dto = new ChargingOrderQuery(); + TCharingOrderVO vo = chargingOrderService.chargingOrder(dto); + ChargingOrderVO chargingOrderVO = vo.getList().getRecords().get(0); + if (chargingOrderVO!=null) { + BeanUtils.copyProperties(chargingOrderVO, dataDto); + } dtos.add(dataDto); } @@ -919,7 +947,39 @@ startDate = startDate.plusDays(1); } - tCharingUserMapVO.setMap(map); + tCharingUserMapVO.setMap(dateRangeStatistics); + + + List<Map<String,Object>> map1 = chargingOrderService.usersByQuery(statisticsQueryDto); + + + + + List<Map<String, Object>> dateRangeStatistics1 = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(map1, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics1.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("counts", 0); + dateRangeStatistics1.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + + tCharingUserMapVO.setMap1(dateRangeStatistics1); + + + + } //用户标签 @@ -1301,8 +1361,7 @@ } - @Resource - private TOrderInvoiceService invoiceService; + @ResponseBody @GetMapping(value = "/work/shopOrder") @ApiOperation(value = "购物订单统计", tags = {"管理后台-工作台"}) @@ -1335,14 +1394,18 @@ return R.ok(userMap); } - public static void main(String[] args) { - // 示例数据 - List<TChargingOrder> list = getSampleData(); - System.err.println(list); - List<Map<String, BigDecimal>> result = processData(list); - result.forEach(System.out::println); + @GetMapping(value = "/getGunIdsByUserId") + @ApiOperation(value = "查询当前用户正在充电中的枪id集合", tags = {"小程序-首页-用户充电订单信息"}) + public R<List<Integer>> getGunIdsByUserId() { + Long userId = tokenService.getLoginUserApplet().getUserId(); + List<TChargingOrder> list = chargingOrderService.list(Wrappers.lambdaQuery(TChargingOrder.class) + .eq(TChargingOrder::getAppUserId, userId) + .eq(TChargingOrder::getStatus, 3)); + List<Integer> gunIds = list.stream().map(TChargingOrder::getChargingGunId).collect(Collectors.toList()); + return R.ok(gunIds); } + private static List<TChargingOrder> getSampleData() { @@ -1395,6 +1458,7 @@ */ @PostMapping("/endCharge") public void endCharge(@RequestParam("code") String code){ + log.error(code + ":-------------------充电桩自动结束充电-------------------"); chargingOrderService.endCharge(code, 2); } @@ -1404,6 +1468,7 @@ */ @PostMapping("/excelEndCharge") public void excelEndCharge(@RequestParam("code") String code){ + log.error(code + ":-------------------充电异常,停止充电-------------------"); chargingOrderService.excelEndCharge(code); } @@ -1428,4 +1493,16 @@ chargingOrderService.updateById(chargingOrder); return R.ok(); } + + + @ResponseBody + @GetMapping(value = "/getEndOfChargePageInfo/{id}") + @ApiOperation(value = "获取充电结束页面数据", tags = {"小程序-扫一扫"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "订单id", required = true) + }) + public AjaxResult<EndOfChargePageInfo> getEndOfChargePageInfo(@PathVariable("id") String id){ + EndOfChargePageInfo endOfChargePageInfo = chargingOrderService.getEndOfChargePageInfo(id); + return AjaxResult.success(endOfChargePageInfo); + } } -- Gitblit v1.7.1