From 9bc378e6bb9b4563a0dec222e1c2d5d3278632cb Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 17 九月 2025 17:41:54 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 53 - ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java | 39 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TaskUtil.java | 5 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java | 528 +++++++++++++- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 7 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java | 495 +++++++++++++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 8 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/ChargingMessageUtil.java | 30 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 2 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 14 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java | 8 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 2 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 922 +++++++++++++----------- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java | 13 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 77 - 19 files changed, 1,566 insertions(+), 651 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java index 7da496b..21909bc 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java @@ -5,6 +5,7 @@ import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.domain.R; @@ -72,7 +73,7 @@ } @Override - public R<List<TChargingGun>> getChargingGunByChargingPileIds(List<Integer> chargingPileIds) { + public R<List<TChargingGun>> getChargingGunByChargingPileIds(GetChargingGunByChargingPileIdsVo vo) { return R.fail("根据充电桩ids获取枪失败:" + throwable.getMessage()); } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java index a1a1779..bbbc41f 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java @@ -3,6 +3,7 @@ import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; import com.ruoyi.chargingPile.api.vo.SiteNameVO; import com.ruoyi.common.core.constant.ServiceNameConstants; @@ -83,11 +84,10 @@ /** * 根据充电桩ids获取枪 - * @param chargingPileIds * @return */ @PostMapping("/t-charging-gun/getChargingGunByChargingPileIds") - R<List<TChargingGun>> getChargingGunByChargingPileIds(@RequestParam("chargingPileIds") List<Integer> chargingPileIds); + R<List<TChargingGun>> getChargingGunByChargingPileIds(@RequestBody GetChargingGunByChargingPileIdsVo vo); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index e5db1a4..034b6f3 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -190,7 +190,7 @@ Address[] allRecipients = {toMail, toMail2}; message.setRecipients(Message.RecipientType.TO, allRecipients); // Set Subject: 邮件主体 - message.setSubject("明星电力"); + message.setSubject("明星新能源充电开票"); // 设置消息体 message.setSentDate(new Date()); javax.mail.internet.MimeMultipart msgMultipart = new MimeMultipart("mixed"); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java index cc3f860..9b93c6e 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java @@ -326,12 +326,14 @@ /** * 根据充电桩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) + public R<List<TChargingGun>> getChargingGunByChargingPileIds(@RequestBody GetChargingGunByChargingPileIdsVo vo){ + if(vo.getChargingPileIds().isEmpty()){ + return R.ok(new ArrayList<>()); + } + List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().in(TChargingGun::getChargingPileId, vo.getChargingPileIds()) .eq(TChargingGun::getDelFlag, 0)); return R.ok(list); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java index 90ec317..4ff6248 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java @@ -267,7 +267,7 @@ @Override public void run() { //推送状态给三方平台 - tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus()); + tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), 2); } }).start(); @@ -295,7 +295,7 @@ @Override public void run() { //推送状态给三方平台 - tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus()); + tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), 7); } }).start(); @@ -348,7 +348,7 @@ @Override public void run() { //推送状态给三方平台 - tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus()); + tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), 5); } }).start(); }else{ @@ -360,7 +360,7 @@ @Override public void run() { //推送状态给三方平台 - tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), tChargingGun1.getStatus()); + tcecClient.pushChargingGunStatus(tChargingGun.getFullNumber(), 3); } }).start(); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 6522019..84337b6 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -733,7 +733,7 @@ @Override public void run() { //推送状态给三方平台 - tcecClient.pushChargingGunStatus(chargingGun1.getFullNumber(), chargingGun1.getStatus()); + tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 1); } }).start(); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java index 39ad475..2be7fa8 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java @@ -5,6 +5,7 @@ import com.alibaba.nacos.common.utils.JacksonUtils; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.utils.StringUtils; @@ -150,31 +151,7 @@ } return baseResult; } - public BaseResult requestCheckJianGuan(Boolean tokenCheck, BaseRequest baseRequest, HttpServletRequest request){ - Operator operator = new Operator(); - BaseResult baseResult = new BaseResult(); - baseResult.setRet(0); - baseResult.setMsg("成功"); - baseResult.setOperatorID(baseRequest.getOperatorID()); - operator.setOperatorId(baseRequest.getOperatorID()); - Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); - baseResult.setTimeStamp(mapKey); - baseResult.setSeq("0001"); - //校验token和签名 - String operatorID = baseRequest.getOperatorID(); - String sig = baseRequest.getSig(); - Long timeStamp = baseRequest.getTimeStamp(); - String data = baseRequest.getData(); - String seq = baseRequest.getSeq(); - baseResult.setOperator(operator); - if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ - baseResult.setRet(4003); - baseResult.setMsg("参数异常"); - return baseResult; - } - return baseResult; - } - + @@ -348,7 +325,9 @@ List<Integer> siteIds = sites.stream().map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(collect1); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); String serviceTel = systemConfigurationClient.getServerPhone().getData(); List<StationInfo> StationInfos = new ArrayList<>(); for (Site datum : sites) { @@ -651,7 +630,9 @@ List<Integer> siteIds = data.stream().map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(collect1); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); QueryStationStatusResult result = new QueryStationStatusResult(); result.setTotal(data.size()); @@ -1896,7 +1877,9 @@ List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(stationIDList).getData(); if(!CollectionUtils.isEmpty(chargingPiles)){ List<Integer> pileIds = chargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(pileIds).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(pileIds); + List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); if(!CollectionUtils.isEmpty(chargingGuns)){ for (Integer stationID : stationIDList) { StationStatusInfo stationStatusInfo = new StationStatusInfo(); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java index a7ce4cc..ef03edc 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; +import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.utils.StringUtils; @@ -287,7 +288,9 @@ List<Integer> siteIds = sites.stream().map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(collect1); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); String serviceTel = systemConfigurationClient.getServerPhone().getData(); List<StationInfo> StationInfos = new ArrayList<>(); for (Site datum : sites) { @@ -595,7 +598,9 @@ List<Integer> siteIds = data.stream().map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(collect1); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); QueryStationStatusResult result = new QueryStationStatusResult(); result.setTotal(data.size()); @@ -1929,7 +1934,9 @@ List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(stationIDList).getData(); if(!CollectionUtils.isEmpty(chargingPiles)){ List<Integer> pileIds = chargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(pileIds).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(pileIds); + List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); if(!CollectionUtils.isEmpty(chargingGuns)){ for (Integer stationID : stationIDList) { StationStatusInfo stationStatusInfo = new StationStatusInfo(); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TaskUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TaskUtil.java index 258b1f5..c696aa2 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TaskUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TaskUtil.java @@ -5,6 +5,7 @@ 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.vo.GetChargingGunByChargingPileIdsVo; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.integration.drainage.TCECSuperviseUtil; import com.ruoyi.integration.drainage.TokenUtil; @@ -158,7 +159,9 @@ List<Integer> siteIds = data.stream().filter(s->s.getStatus() == 1).map(Site::getId).collect(Collectors.toList()); List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); - List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + GetChargingGunByChargingPileIdsVo vo = new GetChargingGunByChargingPileIdsVo(); + vo.setChargingPileIds(collect1); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(vo).getData(); SupStationPowerInfoResult supStationPowerInfoResult = new SupStationPowerInfoResult(); List<SupStationPowerInfo> stationStatsInfos = new ArrayList<>(); LocalDateTime now = LocalDateTime.now(); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java index 970238f..1f7f61c 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java @@ -66,7 +66,6 @@ */ @PostMapping(value = "/message") public AjaxResult<String> message(@RequestBody JSONObject jsonObject) throws IOException { - log.info("接收到消息中转:{}",jsonObject.toJSONString()); JSONObject body = jsonObject.getJSONObject("notify_data").getJSONObject("body"); JSONObject content = null; try { @@ -85,6 +84,9 @@ String nodeId = header.getString("node_id"); // 设备编号 String productId = header.getString("product_id"); // 产品id String service_id = content.getString("service_id"); + if(!SendTagConstant.PING.equals(service_id)){ + log.info("收到IOT发送的消息:{}",jsonObject.toJSONString()); + } // log.info("服务id:{}",service_id); ChargingMessage chargingMessage = new ChargingMessage(); chargingMessage.setServiceId(service_id); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java index 2743b00..f4dd22c 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java @@ -40,7 +40,6 @@ */ @PostMapping("/sendMessage") public String sendMessage(String code, String name, JSONObject message){ -// log.info("消息下发至设备:code={},name={},message={}", code, name, message); CreateMessageRequest request = new CreateMessageRequest(); request.withDeviceId(code); DeviceMessageRequest body = new DeviceMessageRequest(); @@ -50,11 +49,9 @@ request.withBody(body); try { CreateMessageResponse response = iotBuilder.buildIot().createMessage(request); -// log.info("消息下发至设备结果:{}", JSON.toJSONString(response)); return JSON.toJSONString(response); } catch (Exception e) { e.printStackTrace(); -// log.error("消息下发至设备异常:code---{},msg---{}", code, e.getMessage()); return e.getMessage(); } } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/ChargingMessageUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/ChargingMessageUtil.java index 159a1f0..66daebf 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/ChargingMessageUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/ChargingMessageUtil.java @@ -107,7 +107,6 @@ public void handleMessage(ChargingMessage message){ - log.info("收到的消息内容:{}",message); String serviceId = message.getServiceId(); if(!StringUtils.hasLength(serviceId)){ return; @@ -115,7 +114,6 @@ switch (serviceId){ case SendTagConstant.ONLINE: OnlineMessage onlineMessage = message.getOnlineMessage(); - log.info("充电桩登录认证业务消息处理:{}",onlineMessage); // 持久化消息 Online online = new Online(); BeanUtils.copyProperties(onlineMessage,online); @@ -123,7 +121,6 @@ break; case SendTagConstant.PING: PingMessage pingMessage = message.getPingMessage(); - log.info("充电桩心跳包-业务消息处理:{}",pingMessage); // 持久化消息 Ping ping = new Ping(); BeanUtils.copyProperties(pingMessage,ping); @@ -139,7 +136,6 @@ break; case SendTagConstant.END_CHARGE: EndChargeMessage endChargeMessage = message.getEndChargeMessage(); - log.info("充电结束-业务消息处理:{}",endChargeMessage); // 持久化消息 EndCharge endCharge = new EndCharge(); BeanUtils.copyProperties(endChargeMessage,endCharge); @@ -149,7 +145,6 @@ break; case SendTagConstant.ERROR_MESSAGE: ErrorMessageMessage errorMessageMessage1 = message.getErrorMessageMessage(); - log.info("错误报文-业务消息处理:{}",errorMessageMessage1); // 持久化消息 // ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage(); // BeanUtils.copyProperties(errorMessageMessage1,errorMessageMessage); @@ -157,7 +152,6 @@ break; case SendTagConstant.BILLING_MODE_VERIFY: BillingModeVerifyMessage billingModeVerifyMessage = message.getBillingModeVerifyMessage(); - log.info("计费模型验证请求-业务消息处理:{}",billingModeVerifyMessage); // 持久化消息 // BillingModeVerify billingModeVerify = new BillingModeVerify(); // BeanUtils.copyProperties(billingModeVerifyMessage,billingModeVerify); @@ -165,7 +159,6 @@ break; case SendTagConstant.ACQUISITION_BILLING_MODE: AcquisitionBillingModeMessage acquisitionBillingModeMessage = message.getAcquisitionBillingModeMessage(); - log.info("充电桩计费模型请求-业务消息处理:{}",acquisitionBillingModeMessage); // 持久化消息 AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode(); BeanUtils.copyProperties(acquisitionBillingModeMessage,acquisitionBillingMode); @@ -184,7 +177,6 @@ } redisTemplate.opsForValue().set("upload_real_time_monitoring_data:" + transaction_serial_number, System.currentTimeMillis(), 1, TimeUnit.MINUTES); try { - log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage); // 持久化消息 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData(); BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData); @@ -202,7 +194,6 @@ uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree())); uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); }else { - log.info("首次上传实时监测数据"); uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount()); uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree()); uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP)); @@ -225,7 +216,6 @@ break; case SendTagConstant.CHARGING_HANDSHAKE: ChargingHandshakeMessage chargingHandshakeMessage = message.getChargingHandshakeMessage(); - log.info("充电握手-业务消息处理:{}",chargingHandshakeMessage); // 持久化消息 ChargingHandshake chargingHandshake = new ChargingHandshake(); BeanUtils.copyProperties(chargingHandshakeMessage,chargingHandshake); @@ -233,7 +223,6 @@ break; case SendTagConstant.PARAMETER_SETTING: ParameterSettingMessage parameterSettingMessage = message.getParameterSettingMessage(); - log.info("参数配置-业务消息处理:{}",parameterSettingMessage); // 持久化消息 // ParameterSetting parameterSetting = new ParameterSetting(); // BeanUtils.copyProperties(parameterSettingMessage,parameterSetting); @@ -241,7 +230,6 @@ break; case SendTagConstant.BMS_ABORT: BmsAbortMessage bmsAbortMessage = message.getBmsAbortMessage(); - log.info("充电阶段BMS中止-业务消息处理:{}",bmsAbortMessage); // 持久化消息 BmsAbort bmsAbort = new BmsAbort(); BeanUtils.copyProperties(bmsAbortMessage,bmsAbort); @@ -251,7 +239,6 @@ break; case SendTagConstant.MOTOR_ABORT: MotorAbortMessage motorAbortMessage = message.getMotorAbortMessage(); - log.info("充电阶段充电机中止-业务消息处理:{}",motorAbortMessage); // 持久化消息 MotorAbort motorAbort = new MotorAbort(); BeanUtils.copyProperties(motorAbortMessage,motorAbort); @@ -261,7 +248,6 @@ break; case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION: BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = message.getBmsDemandAndChargerExportationMessage(); - log.info("充电过程BMS需求、充电机输出-业务消息处理:{}",bmsDemandAndChargerExportationMessage); String transaction_serial_number1 = bmsDemandAndChargerExportationMessage.getTransaction_serial_number(); Object o1 = redisTemplate.opsForValue().get("bms_demand_and_charger_exportation:" + transaction_serial_number1); if(null != o1){ @@ -286,7 +272,6 @@ break; case SendTagConstant.BMS_INFORMATION: BmsInformationMessage bmsInformationMessage = message.getBmsInformationMessage(); - log.info("充电过程BMS信息-业务消息处理:{}",bmsInformationMessage); String transaction_serial_number2 = bmsInformationMessage.getTransaction_serial_number(); Object o2 = redisTemplate.opsForValue().get("bms_information:" + transaction_serial_number2); if(null != o2){ @@ -304,7 +289,6 @@ break; case SendTagConstant.CHARGING_PILE_STARTS_CHARGING: ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = message.getChargingPileStartsChargingMessage(); - log.info("充电桩主动申请启动充电-业务消息处理:{}",chargingPileStartsChargingMessage); // 持久化消息 ChargingPileStartsCharging chargingPileStartsCharging = new ChargingPileStartsCharging(); BeanUtils.copyProperties(chargingPileStartsChargingMessage,chargingPileStartsCharging); @@ -312,7 +296,6 @@ break; case SendTagConstant.PLATFORM_START_CHARGING_REPLY: PlatformStartChargingReplyMessage platformStartChargingReplyMessage = message.getPlatformStartChargingReplyMessage(); - log.info("远程启机命令回复-业务消息处理:{}",platformStartChargingReplyMessage); // 持久化消息 PlatformStartChargingReply platformStartChargingReply = new PlatformStartChargingReply(); BeanUtils.copyProperties(platformStartChargingReplyMessage,platformStartChargingReply); @@ -325,7 +308,6 @@ break; case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY: PlatformStopChargingReplyMessage platformStopChargingReplyMessage = message.getPlatformStopChargingReplyMessage(); - log.info("远程停机命令回复-业务消息处理:{}",platformStopChargingReplyMessage); // 持久化消息 PlatformStopChargingReply platformStopChargingReply = new PlatformStopChargingReply(); BeanUtils.copyProperties(platformStopChargingReplyMessage,platformStopChargingReply); @@ -337,7 +319,6 @@ break; case SendTagConstant.TRANSACTION_RECORD: TransactionRecordMessage transactionRecordMessage = message.getTransactionRecordMessage(); - log.info("交易记录-业务消息处理:{}",transactionRecordMessage); transactionRecordMessage.setResult(JSONObject.toJSONString(transactionRecordMessage)); // 持久化消息 TransactionRecord transactionRecord = new TransactionRecord(); @@ -368,7 +349,6 @@ break; case SendTagConstant.UPDATE_BALANCE_REPLY: UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage(); - log.info("余额更新应答-业务消息处理:{}",updateBalanceReplyMessage); // 持久化消息 UpdateBalanceReply updateBalanceReply = new UpdateBalanceReply(); BeanUtils.copyProperties(updateBalanceReplyMessage,updateBalanceReply); @@ -376,7 +356,6 @@ break; case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY: SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = message.getSynchronizeOfflineCardReplyMessage(); - log.info("卡数据同步应答-业务消息处理:{}",synchronizeOfflineCardReplyMessage); // 持久化消息 SynchronizeOfflineCardReply synchronizeOfflineCardReply = new SynchronizeOfflineCardReply(); BeanUtils.copyProperties(synchronizeOfflineCardReplyMessage,synchronizeOfflineCardReply); @@ -384,7 +363,6 @@ break; case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY: ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = message.getClearOfflineCardReplyMessage(); - log.info("离线卡数据清除应答-业务消息处理:{}",clearOfflineCardReplyMessage); // 持久化消息 ClearOfflineCardReply clearOfflineCardReply = new ClearOfflineCardReply(); BeanUtils.copyProperties(clearOfflineCardReplyMessage,clearOfflineCardReply); @@ -392,7 +370,6 @@ break; case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY: WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = message.getWorkingParameterSettingReplyMessage(); - log.info("充电桩工作参数设置应答-业务消息处理:{}",workingParameterSettingReplyMessage); // 持久化消息 WorkingParameterSettingReply workingParameterSettingReply = new WorkingParameterSettingReply(); BeanUtils.copyProperties(workingParameterSettingReplyMessage,workingParameterSettingReply); @@ -400,7 +377,6 @@ break; case SendTagConstant.TIMING_SETTING: TimingSettingMessage timingSettingMessage = message.getTimingSettingMessage(); - log.info("对时设置-业务消息处理:{}",timingSettingMessage); // 持久化消息 // TimingSetting timingSetting = new TimingSetting(); // BeanUtils.copyProperties(timingSettingMessage,timingSetting); @@ -408,7 +384,6 @@ break; case SendTagConstant.SETUP_BILLING_MODEL_REPLY: SetupBillingModelReplyMessage setupBillingModelReplyMessage = message.getSetupBillingModelReplyMessage(); - log.info("计费模型应答-业务消息处理:{}",setupBillingModelReplyMessage); // 持久化消息 SetupBillingModelReply setupBillingModelReply = new SetupBillingModelReply(); BeanUtils.copyProperties(setupBillingModelReplyMessage,setupBillingModelReply); @@ -416,7 +391,6 @@ break; case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA: GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = message.getGroundLockRealTimeDataMessage(); - log.info("地锁数据上送(充电桩上送)-业务消息处理:{}",groundLockRealTimeDataMessage); // 持久化消息 GroundLockRealTimeData groundLockRealTimeData = new GroundLockRealTimeData(); BeanUtils.copyProperties(groundLockRealTimeDataMessage,groundLockRealTimeData); @@ -424,7 +398,6 @@ break; case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA: ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = message.getChargingPileReturnsGroundLockDataMessage(); - log.info("充电桩返回数据(上行)-业务消息处理:{}",chargingPileReturnsGroundLockDataMessage); // 持久化消息 ChargingPileReturnsGroundLockData chargingPileReturnsGroundLockData = new ChargingPileReturnsGroundLockData(); BeanUtils.copyProperties(chargingPileReturnsGroundLockDataMessage,chargingPileReturnsGroundLockData); @@ -432,7 +405,6 @@ break; case SendTagConstant.PLATFORM_RESTART_REPLY: PlatformRestartReplyMessage platformRestartReplyMessage = message.getPlatformRestartReplyMessage(); - log.info("远程重启应答-业务消息处理:{}",platformRestartReplyMessage); // 持久化消息 PlatformRestartReply platformRestartReply = new PlatformRestartReply(); BeanUtils.copyProperties(platformRestartReplyMessage,platformRestartReply); @@ -440,14 +412,12 @@ break; case SendTagConstant.QR_CODE_DELIVERY_REPLY: QrCodeDeliveryReplyMessage qrCodeDeliveryReplyMessage = message.getQrCodeDeliveryReplyMessage(); - log.info("二维码下发应答-业务消息处理:{}",qrCodeDeliveryReplyMessage); QrCodeDeliveryReply qrCodeDeliveryReply = new QrCodeDeliveryReply(); BeanUtils.copyProperties(qrCodeDeliveryReplyMessage,qrCodeDeliveryReply); qrCodeDeliveryReplyService.create(qrCodeDeliveryReply); break; case SendTagConstant.SECURITY_DETECTION: SecurityDetectionMessage securityDetectionMessage = message.getSecurityDetectionMessage(); - log.info("安全监测-业务消息处理:{}",securityDetectionMessage); SecurityDetection securityDetection = new SecurityDetection(); BeanUtils.copyProperties(securityDetectionMessage,securityDetection); securityDetectionService.create(securityDetection); 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 6c495ee..f7bf4dc 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 @@ -222,55 +222,36 @@ @PostMapping(value = "/pay/order/list") @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"}) public R<PageInfo<PayOrderDto>> payOrderList(@RequestBody PayOrderQueryDto payOrderQueryDto) { - Integer pageCurr = payOrderQueryDto.getPageCurr(); - Integer pageSize = payOrderQueryDto.getPageSize(); - payOrderQueryDto.setPageCurr(1); - payOrderQueryDto.setPageSize(10000999); - PageInfo<PayOrderDto> data = chargingOrderService.payOrderQuery(payOrderQueryDto).getData(); - List<PayOrderDto> res = new ArrayList<>(); - // 查询当前登陆人按钮权限 - SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); - Integer roleType = sysUser.getRoleType(); - Long userId = tokenService.getLoginUser().getUserid(); - //如果没传siteId,获取当前登陆人所有的siteIds - List<Integer> siteIds = new ArrayList<>(); - if (userId != null){ - List<GetSiteListDTO> data2 = siteClient.getSiteListByUserId(userId).getData(); - for (GetSiteListDTO datum : data2) { - siteIds.add(datum.getId()); - } - } - if (siteIds.isEmpty()){ - siteIds.add(-1); - } - List<TChargingOrder> list = chargingOrderService.list(); - List<TParkingRecord> parkingRecord = parkingLotClient.getSiteIdAll().getData(); - for (PayOrderDto record : data.getRecords()) { - if (record.getType() == 1){ - TChargingOrder chargingOrder = list.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null); - if (chargingOrder!=null){ - record.setSiteId(chargingOrder.getSiteId()); - } - } - if (record.getType()==4){ - TParkingRecord tParkingRecord = parkingRecord.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null); - if (tParkingRecord!=null){ - record.setSiteId(tParkingRecord.getSiteId()); - } - } - if (roleType==1||(record.getType()!=1&&record.getType()!=4)){ - res.add(record); - continue; - } - if (roleType==2 && (record.getType()==1||record.getType()==4) && siteIds.contains(record.getSiteId())){ - res.add(record); - } + return chargingOrderService.payOrderQuery(payOrderQueryDto); - } - List<PayOrderDto> res1 = testing5(res.size(), pageCurr, pageSize, res); - data.setTotal(res.size()); - data.setRecords(res1); - return R.ok(data); +// List<TChargingOrder> list = chargingOrderService.list(); +// List<TParkingRecord> parkingRecord = parkingLotClient.getSiteIdAll().getData(); +// for (PayOrderDto record : data.getRecords()) { +// if (record.getType() == 1){ +// TChargingOrder chargingOrder = list.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null); +// if (chargingOrder!=null){ +// record.setSiteId(chargingOrder.getSiteId()); +// } +// } +// if (record.getType()==4){ +// TParkingRecord tParkingRecord = parkingRecord.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null); +// if (tParkingRecord!=null){ +// record.setSiteId(tParkingRecord.getSiteId()); +// } +// } +// if (roleType==1||(record.getType()!=1&&record.getType()!=4)){ +// res.add(record); +// continue; +// } +// if (roleType==2 && (record.getType()==1||record.getType()==4) && siteIds.contains(record.getSiteId())){ +// res.add(record); +// } +// +// } +// List<PayOrderDto> res1 = testing5(res.size(), pageCurr, pageSize, res); +// data.setTotal(res.size()); +// data.setRecords(res1); +// return R.ok(data); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java index 057e170..6c456d8 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java @@ -169,4 +169,11 @@ * @return */ List<TChargingOrder> findChargingOrder(); + + + /** + * 获取已结束的数据 + * @return + */ + List<TChargingOrder> findEndChargingOrder(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java index 801f023..38dafd3 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java @@ -128,8 +128,12 @@ * @return */ AjaxResult stopCharging(String id); - - + + + void editUserTag(TChargingOrder chargingOrder); + + void referralReward(TChargingOrder chargingOrder); + /** * 停止充电应答结果处理 * @param platformStopChargingReply @@ -349,4 +353,10 @@ * @return */ List<TChargingOrder> findChargingOrder(); + + /** + * 获取已结束的数据 + * @return + */ + List<TChargingOrder> findEndChargingOrder(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index bc4d15a..88b4cf1 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -583,6 +583,8 @@ AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder(); BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder); accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId()); + accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now()); + accountingStrategyDetailOrder.setDelFlag(false); list1.add(accountingStrategyDetailOrder); } accountingStrategyDetailOrderService.saveBatch(list1); @@ -939,7 +941,7 @@ chargingGun.setStatus(4); chargingGunClient.updateChargingGunById(chargingGun); //推送状态给三方平台 - tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus()); + tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 4); } redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); this.updateById(order); @@ -1602,42 +1604,7 @@ } } - -// List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery() -// .eq(TChargingOrderRefund::getRefundStatus,2).list(); - - Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2); -// for (ChargingOrderVO chargingOrderVO : list1) { -// if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){ -// continue; -// } -// List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList()); -// BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); -// BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); -// BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); -// electronicMoney = electronicMoney.add(electronic_reduce); -// total = total.add(chargingCapacity); -// if (!chargingOrderVO.getOrderSource().equals(2)) { -// serviceMoney = serviceMoney.add(service_reduce); -// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce); -// }else{ -// serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8"))); -// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); -// } -// if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){ -// LocalDateTime startTime = chargingOrderVO.getStartTime(); -// LocalDateTime endTime = chargingOrderVO.getEndTime(); -// // 计算时间差 单位秒 -// long between = ChronoUnit.SECONDS.between(startTime, endTime); -// time+=between; -// } -//// List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId())) -//// .collect(Collectors.toList()); -//// for (TChargingOrderRefund tChargingOrderRefund : list2) { -//// refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount()); -//// } -// } if (null != map) { tCharingOrderVO.setTotal(map.get("total") == null ? BigDecimal.ZERO : (BigDecimal) map.get("total")); tCharingOrderVO.setTime(map.get("time") == null ? 0L : (Long) map.get("time")); @@ -2662,9 +2629,10 @@ chargingGun.setStatus(2); chargingGun.setChargingPower(BigDecimal.ZERO); chargingGunClient.updateChargingGunById(chargingGun); + chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); //推送状态给三方平台 if (2 == chargingOrder.getOrderSource()) { - tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus()); + tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2); } //添加积分 @@ -4104,6 +4072,8 @@ AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder(); BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder); accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId()); + accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now()); + accountingStrategyDetailOrder.setDelFlag(false); list1.add(accountingStrategyDetailOrder); } accountingStrategyDetailOrderService.saveBatch(list1); @@ -4363,4 +4333,13 @@ public List<TChargingOrder> findChargingOrder() { return this.baseMapper.findChargingOrder(); } + + /** + * 获取已结束的数据 + * @return + */ + @Override + public List<TChargingOrder> findEndChargingOrder() { + return this.baseMapper.findEndChargingOrder(); + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java index ab5da09..4529c75 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java @@ -4,24 +4,44 @@ import com.alibaba.fastjson2.util.UUIDUtils; import com.alibaba.nacos.common.utils.UuidUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.account.api.feignClient.AppCouponClient; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient; +import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; +import com.ruoyi.account.api.model.TAppCoupon; +import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.account.api.model.TAppUserIntegralChange; +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.integration.api.feignClient.ChargingMessageClient; +import com.ruoyi.integration.api.feignClient.TCECClient; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.TransactionRecord; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.vo.ChargingOrderVo; -import com.ruoyi.order.api.model.TChargingBill; -import com.ruoyi.order.api.model.TChargingOrder; -import com.ruoyi.order.api.model.TChargingOrderRefund; +import com.ruoyi.order.api.model.*; +import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo; import com.ruoyi.order.api.vo.TransactionRecordMessageVO; -import com.ruoyi.order.service.TChargingBillService; -import com.ruoyi.order.service.TChargingOrderRefundService; -import com.ruoyi.order.service.TChargingOrderService; +import com.ruoyi.order.service.*; import com.ruoyi.order.util.mongodb.service.TransactionRecordService; import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; +import com.ruoyi.other.api.domain.TCoupon; +import com.ruoyi.other.api.domain.TIntegralRule; +import com.ruoyi.other.api.domain.TVip; +import com.ruoyi.other.api.feignClient.IntegralRuleClient; +import com.ruoyi.other.api.feignClient.VipClient; +import com.ruoyi.payment.api.feignClient.AliPaymentClient; +import com.ruoyi.payment.api.feignClient.H5AliPaymentClient; +import com.ruoyi.payment.api.feignClient.WxPaymentClient; +import com.ruoyi.payment.api.model.RefundReq; +import com.ruoyi.payment.api.model.RefundResp; +import com.ruoyi.payment.api.model.WxPaymentRefundModel; import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.core.util.UuidUtil; import org.apache.poi.util.StringUtil; @@ -33,14 +53,16 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Random; +import java.time.temporal.ChronoUnit; +import java.util.*; import java.util.stream.Collectors; /** @@ -71,6 +93,42 @@ private ChargingMessageClient chargingMessageClient; private Integer port = null; + @Resource + private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; + + @Resource + private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; + + @Resource + private AppCouponClient appCouponClient; + + @Resource + private TCECClient tcecClient; + + @Resource + private VipClient vipClient; + + @Resource + private ChargingGunClient chargingGunClient; + + @Resource + private IntegralRuleClient integralRuleClient; + @Resource + private AppUserClient appUserClient; + + @Resource + private AppUserIntegralChangeClient appUserIntegralChangeClient; + + @Resource + private WxPaymentClient wxPaymentClient; + + @Resource + private AliPaymentClient aliPaymentClient; + @Resource + private H5AliPaymentClient h5AliPaymentClient; + + @Resource + private ITChargingOrderSummaryDataService chargingOrderSummaryDataService; //十分钟循环执行的定时任务 @@ -132,6 +190,8 @@ BeanUtils.copyProperties(one, vo); R r = chargingOrderService.endChargeBillingCharge(vo); log.info("定时任务执行,停止中的订单处理结果:{}", JSON.toJSONString(r)); + }else{ +// endOrder(order); } } //处理状态为充电中,但硬件已完成的订单 @@ -155,6 +215,19 @@ log.info("定时任务执行,充电中的订单处理结果:{}", JSON.toJSONString(r)); } } + //处理还未退款,但是订单状态已结束的数据 + List<TChargingOrder> endChargingOrder = chargingOrderService.findEndChargingOrder(); + log.info("定时任务执行,查询到已结束未退款的订单数量:{}", endChargingOrder.size()); + for (TChargingOrder order : endChargingOrder) { + if(-1 == order.getStatus()){ + order.setStatus(2); + } + if(5 == order.getStatus()){ + order.setStatus(4); + } + chargingOrderService.updateById(order); + } + } } @@ -285,4 +358,406 @@ port = event.getWebServer().getPort(); System.out.println("端口号:" + port); } + + + + public void endOrder(TChargingOrder order){ + List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode()); + if(!dataList.isEmpty()){ + //获取当前订单的计费规则,然后分段计算总的度数和充电金额 + List<AccountingStrategyDetailOrder> detailOrders = accountingStrategyDetailOrderService.list(new LambdaQueryWrapper<AccountingStrategyDetailOrder>() + .eq(AccountingStrategyDetailOrder::getChargingOrderId, order.getId()).last(" order by start_time")); + detailOrders.get(detailOrders.size() - 1).setEndTime("23:59"); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); + //开始解析每个时段的充电度数 + BigDecimal decimal = BigDecimal.ZERO; + //如果使用优惠券需要判断优惠券是否满足使用条件 + //退款金额=优惠券金额+剩余充电金额 + BigDecimal periodElectricPrice_total = BigDecimal.ZERO; + BigDecimal periodServicePrice_total = BigDecimal.ZERO; + BigDecimal vipDiscountAmount_total = BigDecimal.ZERO; + BigDecimal serviceCharge_total = BigDecimal.ZERO; + BigDecimal total = BigDecimal.ZERO; + //判断实时数据是否跨天 + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + Date end_time = dataList.get(0).getCreate_time(); + String end = sdf2.format(end_time); + Date start_time = dataList.get(dataList.size() - 1).getCreate_time(); + String start = sdf2.format(start_time); + if(!end.equals(start)){ + List<AccountingStrategyDetailOrder> list = detailOrders.stream().map(s->{ + AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder(); + BeanUtils.copyProperties(s, accountingStrategyDetailOrder); + return accountingStrategyDetailOrder; + }).collect(Collectors.toList()); + for (AccountingStrategyDetailOrder detailOrder : detailOrders) { + detailOrder.setStartTime(start + " " + detailOrder.getStartTime()); + detailOrder.setEndTime(start + " " + detailOrder.getEndTime()); + } + for (AccountingStrategyDetailOrder detailOrder : list) { + detailOrder.setStartTime(end + " " + detailOrder.getStartTime()); + detailOrder.setEndTime(end + " " + detailOrder.getEndTime()); + } + detailOrders.addAll(list); + }else{ + for (AccountingStrategyDetailOrder detailOrder : detailOrders) { + detailOrder.setStartTime(start + " " + detailOrder.getStartTime()); + detailOrder.setEndTime(start + " " + detailOrder.getEndTime()); + } + } + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmm"); + List<TChargingOrderAccountingStrategy> list = new ArrayList<>(); + for (AccountingStrategyDetailOrder detailOrder : detailOrders) { + long startTime = Long.parseLong(detailOrder.getStartTime().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")); + long endTime = Long.parseLong(detailOrder.getEndTime().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")); + List<UploadRealTimeMonitoringData> collect = dataList.stream().filter(s -> Long.parseLong(sdf1.format(s.getCreate_time())) > startTime && Long.parseLong(sdf1.format(s.getCreate_time())) <= endTime).collect(Collectors.toList()); + + if(!collect.isEmpty()){ + //升序排序 + collect.sort(new Comparator<UploadRealTimeMonitoringData>(){ + @Override + public int compare(UploadRealTimeMonitoringData o1, UploadRealTimeMonitoringData o2) { + return o1.getCharging_degree().compareTo(o2.getCharging_degree()); + } + }); + UploadRealTimeMonitoringData uploadRealTimeMonitoringData = collect.get(collect.size() - 1); + BigDecimal chargingDegree = uploadRealTimeMonitoringData.getCharging_degree(); + BigDecimal subtract = chargingDegree.subtract(decimal); + decimal = chargingDegree; + if(subtract.compareTo(BigDecimal.ZERO) > 0){ + //组装充电明细数据 + TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy(); + chargingOrderAccountingStrategy.setChargingOrderId(order.getId()); + chargingOrderAccountingStrategy.setAccountingStrategyDetailId(detailOrder.getId()); + chargingOrderAccountingStrategy.setType(detailOrder.getType()); + chargingOrderAccountingStrategy.setElectrovalence(detailOrder.getElectrovalence()); + chargingOrderAccountingStrategy.setServiceCharge(detailOrder.getServiceCharge()); + chargingOrderAccountingStrategy.setCostServiceCharge(detailOrder.getCostServiceCharge()); + chargingOrderAccountingStrategy.setChargingCapacity(subtract); + chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); + + if (list.size() == 0) { + String time = sdf.format(collect.get(0).getCreate_time()); + chargingOrderAccountingStrategy.setStartTime(time); + } else { + chargingOrderAccountingStrategy.setStartTime(detailOrder.getStartTime().split(" ")[1]); + } + chargingOrderAccountingStrategy.setEndTime(detailOrder.getEndTime().split(" ")[1]); + + //已充电总度数 + BigDecimal electrovalenc = detailOrder.getElectrovalence().multiply(subtract); + BigDecimal originalServicePrice = detailOrder.getServiceCharge().multiply(subtract); + BigDecimal serviceCharge = originalServicePrice; + BigDecimal vipDiscountAmount = BigDecimal.ZERO; + //计算优惠金额 + if (null != order.getVipDiscount()) { + //0.58折 + vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(order.getVipDiscount())); + serviceCharge = serviceCharge.multiply(order.getVipDiscount()); + } + chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN)); + chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN)); + chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN)); + chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN)); + chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); + list.add(chargingOrderAccountingStrategy); + //电费 + periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc); + //服务费(含折扣) + serviceCharge_total = serviceCharge_total.add(serviceCharge); + //服务费(不含折扣) + periodServicePrice_total = periodServicePrice_total.add(originalServicePrice); + //会员折扣优惠金额 + vipDiscountAmount_total = vipDiscountAmount_total.add(vipDiscountAmount); + //原始总金额(不含折扣) + total = total.add(electrovalenc.add(originalServicePrice)); + } + } + + } + list.get(list.size() - 1).setEndTime(sdf.format(dataList.get(0).getCreate_time())); + chargingOrderAccountingStrategyService.saveBatch(list); + + BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue()); + //原金额 + BigDecimal rechargeAmount = order.getRechargeAmount(); + //支付金额 + BigDecimal payAmount = periodElectricPrice_total.add(serviceCharge_total); + //退款金额=充值金额-实际支付金额 + BigDecimal refundAmount = rechargeAmount.subtract(payAmount); + + UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(order.getCode()); + if (null != uploadRealTimeMonitoringData && null == order.getEndMode()) { + Integer soc = uploadRealTimeMonitoringData.getSoc(); + if (soc >= 98) { + order.setEndMode(2); + } else if (null != order.getResidualAmount() && order.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) { + order.setEndMode(3); + } else { + order.setEndMode(1); + } + } + + order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN)); + order.setStartTime(list.get(0).getCreateTime()); + order.setEndTime(list.get(list.size() - 1).getCreateTime()); + order.setStatus(5); + order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN)); + order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN)); + order.setChargingCapacity(list.get(list.size() - 1).getChargingCapacity()); + order.setElectricity(list.get(list.size() - 1).getChargingCapacity()); + order.setVipDiscountAmount(vipDiscountAmount_total); + if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) { + order.setVipDiscount(BigDecimal.valueOf(1)); + } + + //计算优惠券 + BigDecimal couponDiscount = BigDecimal.ZERO; + if (null != order.getAppCouponId()) { + //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。 + TAppCoupon appCoupon = appCouponClient.getAppCouponById(order.getAppCouponId()).getData(); + String couponJson = appCoupon.getCouponJson(); + TCoupon tCoupon = com.alibaba.fastjson2.JSON.parseObject(couponJson, TCoupon.class); + Integer preferentialMode = tCoupon.getPreferentialMode(); + if (1 == preferentialMode) { + //满减 + if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { + BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount(); + //如果优惠金额大于服务费金额,以服务费作为最大限制 + if (serviceCharge_total.compareTo(couponDiscountAmount) < 0) { + couponDiscount = serviceCharge_total; + serviceCharge_total = BigDecimal.ZERO; + } else { + couponDiscount = couponDiscountAmount; + } + appCoupon.setStatus(2); + appCouponClient.updateAppCoupon(appCoupon); + } else { + appCouponClient.refund(order.getAppCouponId().toString()); + order.setAppCouponId(null); + order.setCouponDiscountAmount(BigDecimal.ZERO); + } + } + if (2 == preferentialMode) { + //抵扣 + if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { + //折扣金额 + BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10)); + divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide; + //如果优惠金额大于服务费金额,以服务费作为最大限制 + if (serviceCharge_total.compareTo(divide) < 0) { + couponDiscount = serviceCharge_total; + serviceCharge_total = BigDecimal.ZERO; + } else { + couponDiscount = divide; + } + + appCoupon.setStatus(2); + appCouponClient.updateAppCoupon(appCoupon); + } else { + order.setAppCouponId(null); + order.setCouponDiscountAmount(BigDecimal.ZERO); + appCouponClient.refund(order.getAppCouponId().toString()); + } + } + } + //优惠券优惠金额 + couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN); + //退款金额+优惠券 + refundAmount = refundAmount.add(couponDiscount); + //实际支付金额-优惠券 + payAmount = payAmount.subtract(couponDiscount); + if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) { + serviceCharge_total = serviceCharge_total.subtract(couponDiscount); + } + order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); + order.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN)); + order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN)); + order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN)); + order.setRefundStatus(1); + chargingOrderService.updateById(order); + + order = chargingOrderService.getById(order.getId()); + + //推送三方平台 + if (2 == order.getOrderSource()) { + TChargingOrder finalChargingOrder = order; + new Thread(new Runnable() { + @Override + public void run() { + tcecClient.notificationEquipChargeStatus(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId()); + tcecClient.notificationStopChargeResult(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getChargingGunId().toString(), + finalChargingOrder.getOperatorId()); + tcecClient.notificationChargeOrderInfo(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId()); + } + }).start(); + } + + //开始将优惠券优惠的金额添加到明细中 + BigDecimal couponDiscountAmount = order.getCouponDiscountAmount(); + if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) { + List<TChargingOrderAccountingStrategy> list1 = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId())); + BigDecimal reduce = list1.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); + for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list1) { + BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice(); + BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN))); + periodServicePrice = periodServicePrice.subtract(multiply); + chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN)); + chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN)); + } + chargingOrderAccountingStrategyService.updateBatchById(list1); + } + + // 将枪状态重置为空闲 + TChargingGun chargingGun = new TChargingGun(); + chargingGun.setId(order.getChargingGunId()); + chargingGun.setStatus(2); + chargingGun.setChargingPower(BigDecimal.ZERO); + chargingGunClient.updateChargingGunById(chargingGun); + chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData(); + //推送状态给三方平台 + if (2 == order.getOrderSource()) { + tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2); + } + + //添加积分 + if (1 == order.getOrderSource()) { + TIntegralRule integralRule = integralRuleClient.getSet().getData(); + if (null != integralRule) { + TAppUser appUser = appUserClient.getUserById(order.getAppUserId()).getData(); + Integer num1 = com.alibaba.fastjson2.JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1"); + Integer integral = order.getServiceCharge().intValue() * num1; + if (null != appUser.getVipId()) { + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); + Integer doubleIntegration = vip.getDoubleIntegration(); + //双倍积分 + if (1 == doubleIntegration) { + integral *= 2; + } + } + + if (integral > 0) { + TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); + appUserIntegralChange.setAppUserId(appUser.getId()); + appUserIntegralChange.setChangeType(2); + appUserIntegralChange.setHistoricalIntegral(appUser.getPoints()); + appUser.setPoints(appUser.getPoints() + integral); + appUserIntegralChange.setCurrentIntegral(appUser.getPoints()); + appUserIntegralChange.setCreateTime(LocalDateTime.now()); + appUserIntegralChange.setOrderCode(order.getCode()); + appUserIntegralChange.setExtension(order.getId().toString()); + appUserClient.updateAppUser(appUser); + appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); + } + } + + //计算用户标签 + chargingOrderService.editUserTag(order); + //用户推荐奖励 + chargingOrderService.referralReward(order); + + //开始构建退款费用 + refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN); + if (refundAmount.compareTo(BigDecimal.ZERO) > 0) { + Integer rechargePaymentType = order.getRechargePaymentType(); + //构建退款明细 + TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); + chargingOrderRefund.setChargingOrderId(order.getId()); + SimpleDateFormat sdfaa = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + chargingOrderRefund.setRefundCode("CDF" + sdfaa.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); + chargingOrderRefund.setRefundAmount(refundAmount); + chargingOrderRefund.setRefundStatus(1); + chargingOrderRefund.setPayType(rechargePaymentType); + chargingOrderRefund.setRefundStatus(1); + chargingOrderRefund.setCode(order.getCode()); + chargingOrderRefund.setRefundTitle("充电完成退款"); + chargingOrderRefund.setRefundContent("充电完成退款"); + chargingOrderRefund.setRefundReason("充电完成退款"); + chargingOrderRefund.setRefundRemark("实际充电消费金额:" + order.getPaymentAmount()); + chargingOrderRefund.setRefundTotalAmount(refundAmount); + chargingOrderRefund.setPayAmount(rechargeAmount); + if (1 == rechargePaymentType) { + WxPaymentRefundModel model = new WxPaymentRefundModel(); + model.setOut_trade_no(order.getCode()); + model.setOut_refund_no(chargingOrderRefund.getRefundCode()); + model.setReason("充电完成退款"); + model.setNotify_url("/payment/wx/refund/notify"); + WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); + amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue()); + amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue()); + amount.setCurrency("CNY"); + model.setAmount(amount); + R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model); + if (200 == result.getCode()) { + chargingOrderRefundService.save(chargingOrderRefund); + //手续费 + Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount"); + Object refund_fee1 = amount1.get("refund_fee"); + BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); + chargingOrderRefund.setRefundFee(refund_fee); + chargingOrderRefundService.updateById(chargingOrderRefund); + } + } + if (2 == rechargePaymentType) { + RefundReq dto = new RefundReq(); + dto.setOutTradeNo(order.getCode()); + dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); + dto.setRefundAmount(refundAmount.toString()); + dto.setRefundReason("充电完成退款"); + RefundResp resp = aliPaymentClient.refund(dto).getData(); + if (null != resp) { + chargingOrderRefundService.save(chargingOrderRefund); + chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); + } + } + if (3 == rechargePaymentType) { + RefundReq dto = new RefundReq(); + dto.setOutTradeNo(order.getRechargeSerialNumber()); + dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); + dto.setRefundAmount(refundAmount.toString()); + dto.setRefundReason("充电完成退款"); + RefundResp resp = h5AliPaymentClient.refund(dto).getData(); + if (null != resp && "10000".equals(resp.getCode())) { + chargingOrderRefundService.save(chargingOrderRefund); + chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); + } + } + } + } + + //添加汇总统计数据 + List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", order.getId())); + BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal serviceMoney = BigDecimal.ZERO; + BigDecimal paymentMoney = BigDecimal.ZERO; + long time = 0; + if (!order.getOrderSource().equals(2)) { + serviceMoney = serviceMoney.add(service_reduce); + paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce); + } else { + serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8"))); + paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); + } + if (order.getStartTime() != null && order.getEndTime() != null) { + time = ChronoUnit.SECONDS.between(order.getStartTime(), order.getEndTime()); + } + TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData(); + summaryData.setChargingOrderId(order.getId()); + summaryData.setChargingCapacity(chargingCapacity); + summaryData.setChargingDuration(time); + summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); + summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); + summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); + chargingOrderSummaryDataService.save(summaryData); + + //推送监管平台订单状态和订单详情 + ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); + BeanUtils.copyProperties(order, chargingOrderVo); + chargingMessageClient.pushOrderInfo(chargingOrderVo); + chargingMessageClient.pushOrderStatus(chargingOrderVo); + } + } } diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index 1b5d62a..2ebb895 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -4,57 +4,62 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.order.api.model.TChargingOrder"> - <id column="id" property="id" /> - <result column="code" property="code" /> - <result column="order_type" property="orderType" /> - <result column="order_classification" property="orderClassification" /> - <result column="app_user_id" property="appUserId" /> - <result column="app_user_car_id" property="appUserCarId" /> - <result column="site_id" property="siteId" /> - <result column="parking_lot_id" property="parkingLotId" /> - <result column="charging_pile_id" property="chargingPileId" /> - <result column="charging_gun_id" property="chargingGunId" /> + <id column="id" property="id"/> + <result column="code" property="code"/> + <result column="order_type" property="orderType"/> + <result column="order_classification" property="orderClassification"/> + <result column="app_user_id" property="appUserId"/> + <result column="app_user_car_id" property="appUserCarId"/> + <result column="site_id" property="siteId"/> + <result column="parking_lot_id" property="parkingLotId"/> + <result column="charging_pile_id" property="chargingPileId"/> + <result column="charging_gun_id" property="chargingGunId"/> <result column="charging_capacity" property="chargingCapacity"/> <result column="charging_power" property="chargingPower"/> - <result column="start_time" property="startTime" /> - <result column="end_time" property="endTime" /> - <result column="status" property="status" /> + <result column="start_time" property="startTime"/> + <result column="end_time" property="endTime"/> + <result column="status" property="status"/> <result column="end_mode" property="endMode"/> - <result column="recharge_amount" property="rechargeAmount" /> - <result column="recharge_payment_type" property="rechargePaymentType" /> - <result column="recharge_payment_status" property="rechargePaymentStatus" /> - <result column="recharge_serial_number" property="rechargeSerialNumber" /> - <result column="residual_amount" property="residualAmount" /> - <result column="order_amount" property="orderAmount" /> - <result column="app_coupon_id" property="appCouponId" /> - <result column="coupon_discount_amount" property="couponDiscountAmount" /> - <result column="vip_discount" property="vipDiscount" /> - <result column="vip_discount_amount" property="vipDiscountAmount" /> - <result column="payment_amount" property="paymentAmount" /> - <result column="refund_code" property="refundCode" /> - <result column="refund_amount" property="refundAmount" /> - <result column="refund_status" property="refundStatus" /> - <result column="refund_serial_number" property="refundSerialNumber" /> - <result column="refund_time" property="refundTime" /> - <result column="need_elec" property="needElec" /> - <result column="create_time" property="createTime" /> - <result column="del_flag" property="delFlag" /> - <result column="total_electricity" property="totalElectricity" /> + <result column="recharge_amount" property="rechargeAmount"/> + <result column="recharge_payment_type" property="rechargePaymentType"/> + <result column="recharge_payment_status" property="rechargePaymentStatus"/> + <result column="recharge_serial_number" property="rechargeSerialNumber"/> + <result column="residual_amount" property="residualAmount"/> + <result column="order_amount" property="orderAmount"/> + <result column="app_coupon_id" property="appCouponId"/> + <result column="coupon_discount_amount" property="couponDiscountAmount"/> + <result column="vip_discount" property="vipDiscount"/> + <result column="vip_discount_amount" property="vipDiscountAmount"/> + <result column="payment_amount" property="paymentAmount"/> + <result column="refund_code" property="refundCode"/> + <result column="refund_amount" property="refundAmount"/> + <result column="refund_status" property="refundStatus"/> + <result column="refund_serial_number" property="refundSerialNumber"/> + <result column="refund_time" property="refundTime"/> + <result column="need_elec" property="needElec"/> + <result column="create_time" property="createTime"/> + <result column="del_flag" property="delFlag"/> + <result column="total_electricity" property="totalElectricity"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, code, order_type, order_classification, app_user_id, app_user_car_id,site_id, parking_lot_id, charging_pile_id, charging_gun_id, - start_time, end_time, status, recharge_amount, recharge_payment_type, recharge_payment_status, recharge_serial_number, - order_amount, app_coupon_id, coupon_discount_amount, vip_discount, vip_discount_amount, payment_amount, refund_code, - refund_amount, refund_status, refund_serial_number, refund_time, create_time, del_flag,need_elec,total_electricity + id, code, order_type, order_classification, app_user_id, app_user_car_id,site_id, parking_lot_id, + charging_pile_id, charging_gun_id, + start_time, end_time, status, recharge_amount, recharge_payment_type, recharge_payment_status, + recharge_serial_number, + order_amount, app_coupon_id, coupon_discount_amount, vip_discount, vip_discount_amount, payment_amount, + refund_code, + refund_amount, refund_status, refund_serial_number, refund_time, create_time, + del_flag,need_elec,total_electricity </sql> - + <select id="getMyChargingOrderList" resultMap="BaseResultMap"> select * from t_charging_order where del_flag = 0 and app_user_id = #{appUserId} and recharge_payment_status = 2 <if test="1 == type"> - and id not in (select order_id from t_order_evaluate where order_type = 1 and app_user_id = #{appUserId} and del_flag = 0) + and id not in (select order_id from t_order_evaluate where order_type = 1 and app_user_id = #{appUserId} and + del_flag = 0) </if> order by create_time desc <if test="null != pageCurr and null != pageSize"> @@ -62,7 +67,8 @@ </if> </select> <select id="getNoInvoicedOrder" resultMap="BaseResultMap"> - select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is not null and app_user_id = #{appUserId} + select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and + payment_amount is not null and app_user_id = #{appUserId} <if test="null != month and '' != month"> and DATE_FORMAT(end_time, '%Y-%m') = #{month} </if> @@ -78,15 +84,15 @@ from t_charging_order t1 where t1.del_flag = 0 <if test="null != req.code and req.code!=''"> - and t1.code LIKE CONCAT('%',#{req.code},'%') + and t1.code LIKE CONCAT('%',#{req.code},'%') </if> - <if test="null != req.userIds and req.userIds.size()>0" > + <if test="null != req.userIds and req.userIds.size()>0"> and t1.app_user_id in <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> - <if test="null != req.siteIds and req.siteIds.size()>0" > + <if test="null != req.siteIds and req.siteIds.size()>0"> and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} @@ -126,7 +132,8 @@ order by t1.create_time desc </select> <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto"> - SELECT o.*,i.phone FROM (SELECT + SELECT o.*,i.phone FROM ( + SELECT a.id, a.`code`, 1 as type, @@ -145,7 +152,9 @@ charging_pile_order.t_charging_order a left join charging_pile_order.t_charging_order_refund b on (b.charging_order_id = a.id) where a.recharge_payment_status = 2 + UNION ALL + SELECT a.id, a.`code`, @@ -165,7 +174,9 @@ charging_pile_order.t_shopping_order a left join charging_pile_order.t_shopping_order_refund b on (b.shopping_order_id = a.id) where a.payment_status = 2 + UNION ALL + SELECT a.id, a.`code`, @@ -185,7 +196,9 @@ charging_pile_order.t_vip_order a left join charging_pile_order.t_vip_order_refund b on (a.id = b.vip_order_id) where a.payment_status = 2 + UNION ALL + SELECT id, `code`, @@ -202,105 +215,105 @@ 0 as del_flag, app_user_id FROM - charging_pile_service.t_parking_record ) o - LEFT JOIN `charging_pile_account`.`t_app_user` i on o.app_user_id = i.id - <where> - o.del_flag = 0 + charging_pile_service.t_parking_record + ) o + LEFT JOIN `charging_pile_account`.`t_app_user` i on o.app_user_id = i.id + <where> + o.del_flag = 0 + <if test="data.code != null and data.code != ''"> + AND o.code LIKE CONCAT('%',#{data.code},'%') + </if> + <if test="data.phone != null and data.phone != ''"> + AND i.phone LIKE CONCAT('%',#{data.phone},'%') + </if> + <if test="data.type != null"> + AND o.type = #{data.type} + </if> + <if test="data.createTime1 != null"> + AND o.create_time >= #{data.createTime1} + </if> + <if test="data.createTime2 != null"> + AND o.create_time <= #{data.createTime2} + </if> + <if test="data.ids != null and data.ids.size() > 0"> + AND o.id IN + <foreach collection="data.ids" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </if> + <if test="data.isRefund == 1"> + AND o.refund_status is not null + </if> + <if test="data.isRefund == 2"> + AND o.refund_status is null + </if> - <if test="data.code != null and data.code != ''"> - AND o.code LIKE CONCAT('%',#{data.code},'%') - </if> - <if test="data.phone != null and data.phone != ''"> - AND i.phone LIKE CONCAT('%',#{data.phone},'%') - </if> - <if test="data.type != null"> - AND o.type = #{data.type} - </if> - <if test="data.createTime1 != null"> - AND o.create_time >= #{data.createTime1} - </if> - <if test="data.createTime2 != null"> - AND o.create_time <= #{data.createTime2} - </if> - <if test="data.ids != null and data.ids.size() > 0"> - AND o.id IN - <foreach collection="data.ids" item="id" open="(" separator="," close=")"> - #{id} - </foreach> - </if> - <if test="data.isRefund == 1"> - AND o.refund_status is not null - </if> - <if test="data.isRefund == 2"> - AND o.refund_status is null - </if> - - </where> + </where> ORDER BY o.create_time desc </select> <select id="getRefundList" resultType="com.ruoyi.order.api.model.TChargingOrderRefund"> select * from ( SELECT - re.id, - re.`code`, - re.refund_code, - re.refund_title, - re.refund_reason, - re.refund_amount, - re.refund_total_amount, - re.refund_time, - re.pay_type, - re.pay_amount, - re.refund_remark, - co.recharge_serial_number as serail_number, - co.payment_amount, - co.create_time as pay_time, - co.id as order_id, - co.app_user_id as user_id, - 1 as type + re.id, + re.`code`, + re.refund_code, + re.refund_title, + re.refund_reason, + re.refund_amount, + re.refund_total_amount, + re.refund_time, + re.pay_type, + re.pay_amount, + re.refund_remark, + co.recharge_serial_number as serail_number, + co.payment_amount, + co.create_time as pay_time, + co.id as order_id, + co.app_user_id as user_id, + 1 as type FROM t_charging_order_refund re - LEFT JOIN t_charging_order co ON re.charging_order_id = co.id + LEFT JOIN t_charging_order co ON re.charging_order_id = co.id UNION ALL SELECT - re.id, - re.`code`, - re.refund_code, - re.refund_title, - re.refund_reason, - re.refund_amount, - re.refund_total_amount, - re.refund_time, - re.pay_type, - re.pay_amount, - re.refund_remark, - so.serial_number, - so.payment_amount, - so.create_time as pay_time, - so.id as order_id, - so.app_user_id as user_id, - 2 as type + re.id, + re.`code`, + re.refund_code, + re.refund_title, + re.refund_reason, + re.refund_amount, + re.refund_total_amount, + re.refund_time, + re.pay_type, + re.pay_amount, + re.refund_remark, + so.serial_number, + so.payment_amount, + so.create_time as pay_time, + so.id as order_id, + so.app_user_id as user_id, + 2 as type FROM t_shopping_order_refund re LEFT JOIN t_shopping_order so on re.shopping_order_id = so.id UNION ALL SELECT - vr.id, - vr.`code`, - vr.refund_code, - vr.refund_title, - vr.refund_reason, - vr.refund_amount, - vr.refund_total_amount, - vr.refund_time, - vr.pay_type, - vr.pay_amount, - vr.refund_remark, - vo.serial_number, - vo.payment_amount, - vo.create_time as pay_time, - vo.id as order_id, - vo.app_user_id as user_id, - 3 as type + vr.id, + vr.`code`, + vr.refund_code, + vr.refund_title, + vr.refund_reason, + vr.refund_amount, + vr.refund_total_amount, + vr.refund_time, + vr.pay_type, + vr.pay_amount, + vr.refund_remark, + vo.serial_number, + vo.payment_amount, + vo.create_time as pay_time, + vo.id as order_id, + vo.app_user_id as user_id, + 3 as type FROM t_vip_order_refund vr LEFT JOIN t_vip_order vo on vr.vip_order_id = vo.id ) o @@ -316,7 +329,7 @@ </select> <select id="chargingOrderGroup" resultType="com.ruoyi.common.core.dto.ChargingOrderGroup"> - SELECT SUM(tc.charging_capacity) as charging_capacity,tc.site_id + SELECT SUM(tc.charging_capacity) as charging_capacity,tc.site_id FROM t_charging_order tc left join `charging_pile_service`.`t_site` ts on tc.site_id = ts.id <where> @@ -339,12 +352,11 @@ GROUP BY site_id - </select> <select id="charge" resultType="com.ruoyi.order.dto.SixChargingDto"> SELECT DATE_FORMAT( subquery.create_time, '%m' ) AS MONTH, - SUM(electrovalence) AS electrovalence, + SUM(electrovalence) AS electrovalence, SUM( CASE WHEN subquery.order_source = 0 THEN subquery.service_charge @@ -354,30 +366,32 @@ ) AS service_charge FROM - ( - SELECT - a.create_time, - b.period_electric_price as electrovalence, - b.period_service_price as service_charge, - a.order_source - FROM - t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) - <where> - a.del_flag = 0 and a.recharge_payment_status = 2 and a.status = 5 - <if test="sixBefore != null"> - AND a.create_time >= #{sixBefore} - </if> - <if test="siteIds != null and siteIds.size() > 0"> - AND a.site_id IN - <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> - #{siteId} - </foreach> - </if> - </where> - ) AS subquery + ( + SELECT + a.create_time, + b.period_electric_price as electrovalence, + b.period_service_price as service_charge, + a.order_source + FROM + t_charging_order a + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + <where> + a.del_flag = 0 and a.recharge_payment_status = 2 and a.status = 5 + <if test="sixBefore != null"> + AND a.create_time >= #{sixBefore} + </if> + <if test="siteIds != null and siteIds.size() > 0"> + AND a.site_id IN + <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> + #{siteId} + </foreach> + </if> + </where> + ) AS subquery GROUP BY - DATE_FORMAT( subquery.create_time, '%m' ) + DATE_FORMAT( subquery.create_time, '%m' ) </select> @@ -391,7 +405,9 @@ END), 2) AS paymentAmount FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) <where> a.del_flag = 0 and a.recharge_payment_status = 2 and a.status = 5 <if test="siteIds != null and siteIds.size() > 0"> @@ -409,7 +425,9 @@ </select> <select id="countAll" resultType="java.util.Map"> - select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,ROUND(sum(electrovalence+service_charge) * 0.006, 2) as commission_amount,sum(sharing_amount) as sharing_amount + select sum(electrovalence) as electrovalence,sum(service_charge) as + service_charge,ROUND(sum(electrovalence+service_charge) * 0.006, 2) as commission_amount,sum(sharing_amount) as + sharing_amount from t_charging_order where del_flag = 0 and recharge_payment_status = 2 and status = 5 <if test="siteIds != null and siteIds.size() > 0"> @@ -440,7 +458,8 @@ FROM t_charging_order_accounting_strategy t1 LEFT JOIN t_charging_order t2 on t1.charging_order_id = t2.id - where t2.del_flag = 0 and t2.status = 5 and t2.recharge_payment_status = 2 and t2.create_time between #{start} and #{end} + where t2.del_flag = 0 and t2.status = 5 and t2.recharge_payment_status = 2 and t2.create_time between #{start} + and #{end} <if test="null != siteIds and siteIds.size() > 0"> and t2.site_id in <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index"> @@ -468,9 +487,11 @@ count(1) as orderCount FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) <where> - a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE(a.create_time) = CURDATE() + a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE(a.create_time) = CURDATE() and a.create_time between #{start} and #{end} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in @@ -480,9 +501,9 @@ </if> </where> GROUP BY - time + time ORDER BY - time + time </select> <select id="getWeekData" resultType="java.util.Map"> @@ -503,9 +524,12 @@ count(1) as orderCount FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) <where> - a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and YEARWEEK(DATE_FORMAT(a.create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1) + a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and YEARWEEK(DATE_FORMAT(a.create_time, + '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1) and a.create_time between #{start} and #{end} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in @@ -538,9 +562,12 @@ count(1) as orderCount FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) <where> - a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and MONTH(a.create_time) = MONTH(NOW()) AND YEAR(a.create_time) = YEAR(NOW()) + a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and MONTH(a.create_time) = MONTH(NOW()) + AND YEAR(a.create_time) = YEAR(NOW()) and a.create_time between #{start} and #{end} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in @@ -573,9 +600,11 @@ count(1) as orderCount FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) <where> - a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and YEAR(a.create_time) = YEAR(NOW()) + a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and YEAR(a.create_time) = YEAR(NOW()) and a.create_time between #{start} and #{end} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in @@ -607,9 +636,11 @@ count(1) as orderCount FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money + from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) <where> - a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 + a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and a.create_time between #{start} and #{end} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in @@ -626,15 +657,15 @@ </select> <select id="queryPower" resultType="java.util.Map"> SELECT - 'today' AS data_type, - DATE_FORMAT(create_time, '%H') AS TIME, - SUM(power) AS power + 'today' AS data_type, + DATE_FORMAT(create_time, '%H') AS TIME, + SUM(power) AS power FROM - t_charging_order + t_charging_order WHERE - del_flag = 0 - AND recharge_payment_status = 2 - AND DATE(create_time) = CURDATE() + del_flag = 0 + AND recharge_payment_status = 2 + AND DATE(create_time) = CURDATE() <if test="siteIds != null and siteIds.size() > 0"> AND site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -642,20 +673,20 @@ </foreach> </if> GROUP BY - TIME + TIME UNION ALL SELECT - 'yesterday' AS data_type, - DATE_FORMAT(create_time, '%H') AS TIME, - SUM(power) AS power + 'yesterday' AS data_type, + DATE_FORMAT(create_time, '%H') AS TIME, + SUM(power) AS power FROM - t_charging_order + t_charging_order WHERE - del_flag = 0 - AND recharge_payment_status = 2 - AND DATE(create_time) = CURDATE() - INTERVAL 1 DAY + del_flag = 0 + AND recharge_payment_status = 2 + AND DATE(create_time) = CURDATE() - INTERVAL 1 DAY <if test="siteIds != null and siteIds.size() > 0"> AND site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -663,10 +694,10 @@ </foreach> </if> GROUP BY - TIME + TIME ORDER BY - TIME; + TIME; </select> @@ -678,10 +709,10 @@ SUM(CASE WHEN power BETWEEN 121 AND 300 THEN 1 ELSE 0 END) AS count_121_300, SUM(CASE WHEN power > 300 THEN 1 ELSE 0 END) AS count_above_300 FROM - t_charging_order + t_charging_order WHERE - del_flag = 0 - AND recharge_payment_status = 2 + del_flag = 0 + AND recharge_payment_status = 2 <if test="siteIds != null and siteIds.size() > 0"> AND site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -698,7 +729,7 @@ AND MONTH(create_time) = MONTH(CURDATE()) </if> <if test="statisticsQueryDto.dayType ==4"> - AND YEAR(create_time) = YEAR(CURDATE()) + AND YEAR(create_time) = YEAR(CURDATE()) </if> <if test="statisticsQueryDto.dayType ==5"> @@ -714,31 +745,31 @@ SELECT - DATE_FORMAT( create_time, '%H:00' ) AS time, - count(1) AS counts + DATE_FORMAT( create_time, '%H:00' ) AS time, + count(1) AS counts FROM - charging_pile_account.t_app_user + charging_pile_account.t_app_user WHERE - del_flag = 0 - AND DATE ( create_time ) = CURDATE() + del_flag = 0 + AND DATE ( create_time ) = CURDATE() GROUP BY - time + time </select> <select id="usersDay1" resultType="java.util.Map"> SELECT - 'today' AS data_type, - '1' as type, - DATE_FORMAT( create_time, '%H:00' ) AS time, - count(DISTINCT app_user_id) AS counts + 'today' AS data_type, + '1' as type, + DATE_FORMAT( create_time, '%H:00' ) AS time, + count(DISTINCT app_user_id) AS counts FROM - t_charging_order + t_charging_order WHERE - del_flag = 0 - AND DATE ( create_time ) = CURDATE() + del_flag = 0 + AND DATE ( create_time ) = CURDATE() GROUP BY - time + time </select> <select id="usersByQuery1" resultType="java.util.Map"> @@ -747,7 +778,7 @@ 'today' AS data_type, '1' as type, DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time, - count(DISTINCT app_user_id) AS counts + count(DISTINCT app_user_id) AS counts FROM t_charging_order WHERE @@ -783,12 +814,12 @@ SELECT - DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time, - count(1) AS counts + DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time, + count(1) AS counts FROM - charging_pile_account.t_app_user + charging_pile_account.t_app_user WHERE - del_flag = 0 + del_flag = 0 <if test="statisticsQueryDto.dayType ==1 "> AND DATE(create_time) = CURDATE() </if> @@ -810,51 +841,52 @@ </if> </if> GROUP BY - time + time </select> <select id="getUserTagCount" resultType="java.util.Map"> SELECT - tt.`name`, - COUNT( 1 ) AS count + tt.`name`, + COUNT( 1 ) AS count FROM - ( - SELECT - a.app_user_id, - a.user_tag_id, - a.create_time - FROM - charging_pile_account.t_app_user_tag a - JOIN ( SELECT app_user_id, MAX( create_time ) AS max_create_time FROM charging_pile_account.t_app_user_tag GROUP BY app_user_id ) b ON a.app_user_id = b.app_user_id - AND a.create_time = b.max_create_time - LEFT JOIN `charging_pile_other`.`t_user_tag` ct on a.user_tag_id = ct.id - WHERE ct.del_flag = 0 - ) o - LEFT JOIN `charging_pile_other`.`t_user_tag` tt on o.user_tag_id = tt.id + ( + SELECT + a.app_user_id, + a.user_tag_id, + a.create_time + FROM + charging_pile_account.t_app_user_tag a + JOIN ( SELECT app_user_id, MAX( create_time ) AS max_create_time FROM charging_pile_account.t_app_user_tag GROUP + BY app_user_id ) b ON a.app_user_id = b.app_user_id + AND a.create_time = b.max_create_time + LEFT JOIN `charging_pile_other`.`t_user_tag` ct on a.user_tag_id = ct.id + WHERE ct.del_flag = 0 + ) o + LEFT JOIN `charging_pile_other`.`t_user_tag` tt on o.user_tag_id = tt.id GROUP BY - tt.name + tt.name </select> <select id="getVipCount" resultType="java.util.Map"> SELECT - tv.`name`, - count(1) AS Counts + tv.`name`, + count(1) AS Counts FROM - charging_pile_account.t_app_user ta - LEFT JOIN `charging_pile_other`.`t_vip` tv on ta.vip_id = tv.id + charging_pile_account.t_app_user ta + LEFT JOIN `charging_pile_other`.`t_vip` tv on ta.vip_id = tv.id WHERE - ta.del_flag = 0 + ta.del_flag = 0 GROUP BY - tv.`name` + tv.`name` </select> <select id="unitConsumption" resultType="java.util.Map"> SELECT tc.`name`, - au.company_id as companyId, - SUM( co.charging_capacity ) as chargingCapacity + au.company_id as companyId, + SUM( co.charging_capacity ) as chargingCapacity FROM - charging_pile_order.t_charging_order co - LEFT JOIN charging_pile_account.t_app_user au ON co.app_user_id = au.id + charging_pile_order.t_charging_order co + LEFT JOIN charging_pile_account.t_app_user au ON co.app_user_id = au.id LEFT JOIN `charging_pile_other`.`t_company` tc on au.company_id = tc.id <where> @@ -866,7 +898,7 @@ AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() ) </if> <if test="statisticsQueryDto.dayType == 3"> - AND MONTH( co.create_time ) = MONTH(CURDATE()) + AND MONTH( co.create_time ) = MONTH(CURDATE()) </if> <if test="statisticsQueryDto.dayType == 4"> AND YEAR( co.create_time ) = YEAR(CURDATE() ) @@ -876,7 +908,7 @@ and DATE(co.create_time) >= #{statisticsQueryDto.startTime} </if> <if test="statisticsQueryDto.endTime != null"> - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> </where> @@ -885,61 +917,61 @@ </select> <select id="carUserMethod" resultType="java.util.Map"> SELECT - count(1) as counts,vehicle_use + count(1) as counts,vehicle_use from charging_pile_account.t_app_user_car - where del_flag = 0 + where del_flag = 0 GROUP BY vehicle_use </select> <select id="carUserBrand" resultType="java.util.Map"> SELECT - count(1) as counts,vehicle_brand + count(1) as counts,vehicle_brand from charging_pile_account.t_app_user_car - where del_flag = 0 + where del_flag = 0 GROUP BY vehicle_brand ORDER BY counts DESC - limit 5 + limit 5 </select> <select id="countLocalCar" resultType="java.util.Map"> SELECT - SUM(CASE WHEN license_plate LIKE '%川J%' THEN 1 ELSE 0 END) AS localCar, - SUM(CASE WHEN license_plate NOT LIKE '%川J%' THEN 1 ELSE 0 END) AS notLocalCar + SUM(CASE WHEN license_plate LIKE '%川J%' THEN 1 ELSE 0 END) AS localCar, + SUM(CASE WHEN license_plate NOT LIKE '%川J%' THEN 1 ELSE 0 END) AS notLocalCar FROM - `charging_pile_account`.`t_app_user_car` + `charging_pile_account`.`t_app_user_car` WHERE - del_flag = 0 + del_flag = 0 </select> <select id="getAver" resultType="java.lang.Double"> SELECT - ROUND(AVG(te.mark), 2) AS average_mark + ROUND(AVG(te.mark), 2) AS average_mark FROM - `t_order_evaluate` te - LEFT JOIN t_charging_order co on te.order_id = co.id + `t_order_evaluate` te + LEFT JOIN t_charging_order co on te.order_id = co.id WHERE - 1 = 1 + 1 = 1 <if test="siteIds != null and siteIds.size() > 0"> AND co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> #{siteId} </foreach> </if> - AND te.del_flag = 0 + AND te.del_flag = 0 </select> <select id="getLevelEvaluate" resultType="java.util.Map"> SELECT - CASE - WHEN te.mark BETWEEN 1 AND 2 THEN '1-2' - WHEN te.mark = 3 THEN '3' - WHEN te.mark BETWEEN 4 AND 5 THEN '4-5' - ELSE 'Other' - END AS score_range, - COUNT(*) AS count + CASE + WHEN te.mark BETWEEN 1 AND 2 THEN '1-2' + WHEN te.mark = 3 THEN '3' + WHEN te.mark BETWEEN 4 AND 5 THEN '4-5' + ELSE 'Other' + END AS score_range, + COUNT(*) AS count FROM - `t_order_evaluate` te - LEFT JOIN t_charging_order co on te.order_id = co.id + `t_order_evaluate` te + LEFT JOIN t_charging_order co on te.order_id = co.id WHERE - te.del_flag = 0 + te.del_flag = 0 <if test="siteIds != null and siteIds.size() > 0"> AND co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -947,34 +979,34 @@ </foreach> </if> GROUP BY - score_range + score_range </select> <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> select t1.*, - t1.current as chargingCapacity, - t1.payment_amount as paymentAmount, - t1.electricity as chargingCapacity, - ifnull(t2.refund_amount, 0) as refundAmount + t1.current as chargingCapacity, + t1.payment_amount as paymentAmount, + t1.electricity as chargingCapacity, + ifnull(t2.refund_amount, 0) as refundAmount from t_charging_order t1 left join t_charging_order_refund t2 on t1.id = t2.charging_order_id - where t1.del_flag = 0 and t1.status = 5 and t1.recharge_payment_status = 2 + where t1.del_flag = 0 and t1.status = 5 and t1.recharge_payment_status = 2 <if test="null != req.code and req.code!=''"> - and t1.code LIKE CONCAT('%',#{req.code},'%') + and t1.code LIKE CONCAT('%',#{req.code},'%') </if> - <if test="null != req.carIds and req.carIds.size()>0" > + <if test="null != req.carIds and req.carIds.size()>0"> and t1.app_user_car_id in <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> - <if test="null != req.userIds and req.userIds.size()>0" > + <if test="null != req.userIds and req.userIds.size()>0"> and t1.app_user_id in <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> - <if test="null != req.siteIds and req.siteIds.size()>0" > + <if test="null != req.siteIds and req.siteIds.size()>0"> and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} @@ -1005,15 +1037,15 @@ select t1.* from t_charging_order t1 where 1=1 <if test="null != req.code and req.code!=''"> - and t1.code LIKE CONCAT('%',#{req.code},'%') + and t1.code LIKE CONCAT('%',#{req.code},'%') </if> - <if test="null != req.carIds and req.carIds.size()>0" > + <if test="null != req.carIds and req.carIds.size()>0"> and t1.app_user_car_id in <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> - <if test="null != req.userIds and req.userIds.size()>0" > + <if test="null != req.userIds and req.userIds.size()>0"> and t1.app_user_id in <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> #{item} @@ -1049,53 +1081,54 @@ end as source from t_charging_order where 1=1 - AND del_flag = 0 + AND del_flag = 0 AND recharge_payment_status = 2 and status = 5 - <if test="siteIds != null and siteIds.size() > 0"> - and site_id IN - <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> - #{siteId} - </foreach> - </if> - <if test="statisticsQueryDto.dayType == 1"> - AND DATE(create_time ) = CURDATE() - </if> - <if test="statisticsQueryDto.dayType != 1"> - and DATE(create_time) >= #{statisticsQueryDto.startTime} - and DATE(create_time) <= #{statisticsQueryDto.endTime} - </if> + <if test="siteIds != null and siteIds.size() > 0"> + and site_id IN + <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> + #{siteId} + </foreach> + </if> + <if test="statisticsQueryDto.dayType == 1"> + AND DATE(create_time ) = CURDATE() + </if> + <if test="statisticsQueryDto.dayType != 1"> + and DATE(create_time) >= #{statisticsQueryDto.startTime} + and DATE(create_time) <= #{statisticsQueryDto.endTime} + </if> group by tripartite_platform_name </select> <select id="equipmentUserType1" resultType="java.util.Map"> SELECT - FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.start_time)) / - <if test="statisticsQueryDto.dayType == 1"> - 864 - </if> - <if test="statisticsQueryDto.dayType == 2"> - 6048 - </if> - <if test="statisticsQueryDto.dayType == 3"> - 25920 - </if> - <if test="statisticsQueryDto.dayType == 4"> - 315360 - </if> - <if test="statisticsQueryDto.dayType == 5"> - (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference - )) - </if> + FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.start_time)) / + <if test="statisticsQueryDto.dayType == 1"> + 864 + </if> + <if test="statisticsQueryDto.dayType == 2"> + 6048 + </if> + <if test="statisticsQueryDto.dayType == 3"> + 25920 + </if> + <if test="statisticsQueryDto.dayType == 4"> + 315360 + </if> + <if test="statisticsQueryDto.dayType == 5"> + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS + days_difference + )) + </if> - ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName FROM - `charging_pile_order`.`t_charging_order` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id + `charging_pile_order`.`t_charging_order` co + LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id WHERE co.del_flag = 0 and - co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type = 4 + co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type = 4 <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -1116,15 +1149,13 @@ </if> <if test="statisticsQueryDto.dayType == 5"> - and DATE(co.create_time) >= #{statisticsQueryDto.startTime} + and DATE(co.create_time) >= #{statisticsQueryDto.startTime} - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> GROUP BY tc.name,cp.name,co.charging_gun_id - - </select> @@ -1144,7 +1175,8 @@ 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS + days_difference )) </if> @@ -1152,8 +1184,8 @@ ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName FROM `charging_pile_order`.`t_charging_order` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id WHERE co.del_flag = 0 and co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type in (2,3) <if test="siteIds != null and siteIds.size() > 0"> @@ -1179,7 +1211,7 @@ and DATE(co.create_time) >= #{statisticsQueryDto.startTime} </if> <if test="statisticsQueryDto.endTime != null"> - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> GROUP BY tc.name,cp.name,co.charging_gun_id @@ -1188,7 +1220,7 @@ </select> <select id="equipmentMapbroke1" resultType="java.util.Map"> SELECT - FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) / + FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) / <if test="statisticsQueryDto.dayType == 1"> 864 </if> @@ -1202,14 +1234,15 @@ 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS + days_difference )) </if> - ), 2) AS percent,cp.name + ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =2 <if test="siteIds != null and siteIds.size() > 0"> @@ -1232,10 +1265,10 @@ </if> <if test="statisticsQueryDto.dayType == 5"> - and DATE(co.create_time) >= #{statisticsQueryDto.startTime} + and DATE(co.create_time) >= #{statisticsQueryDto.startTime} - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> GROUP BY cp.name @@ -1258,14 +1291,15 @@ 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS + days_difference )) </if> ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type in (2,3) and co.status =2 <if test="siteIds != null and siteIds.size() > 0"> @@ -1288,9 +1322,9 @@ </if> <if test="statisticsQueryDto.dayType == 5"> - and DATE(co.create_time) >= #{statisticsQueryDto.startTime} + and DATE(co.create_time) >= #{statisticsQueryDto.startTime} - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> GROUP BY cp.name @@ -1313,14 +1347,15 @@ 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS + days_difference )) </if> - ), 2) AS percent,cp.name + ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =1 <if test="siteIds != null and siteIds.size() > 0"> @@ -1346,7 +1381,7 @@ and DATE(co.create_time) >= #{statisticsQueryDto.startTime} </if> <if test="statisticsQueryDto.endTime != null"> - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> GROUP BY cp.name @@ -1367,14 +1402,15 @@ 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS + days_difference )) </if> ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 2 and co.status =1 <if test="siteIds != null and siteIds.size() > 0"> @@ -1400,7 +1436,7 @@ and DATE(co.create_time) >= #{statisticsQueryDto.startTime} </if> <if test="statisticsQueryDto.endTime != null"> - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> GROUP BY cp.name @@ -1408,14 +1444,14 @@ </select> <select id="needElec" resultType="java.util.Map"> SELECT - FORMAT((SUM(co.current)*100 / SUM(co.need_elec)), 2) AS percent, - co.charging_gun_id, - tc.name as name, - cp.name AS siteName + FORMAT((SUM(co.current)*100 / SUM(co.need_elec)), 2) AS percent, + co.charging_gun_id, + tc.name as name, + cp.name AS siteName FROM - `charging_pile_order`.`t_charging_order` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id + `charging_pile_order`.`t_charging_order` co + LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id <where> tc.type = 4 and co.need_elec != 0 <if test="siteIds != null and siteIds.size() > 0"> @@ -1438,16 +1474,16 @@ </if> <if test="statisticsQueryDto.dayType == 5"> - and DATE(co.create_time) >= #{statisticsQueryDto.startTime} + and DATE(co.create_time) >= #{statisticsQueryDto.startTime} - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </where> GROUP BY - tc.name, - cp.name, - co.charging_gun_id; + tc.name, + cp.name, + co.charging_gun_id; </select> @@ -1477,8 +1513,11 @@ (b.charging_capacity) as electricity FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) - WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT( + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, + sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by + charging_order_id) b on (a.id = b.charging_order_id) + WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT( <if test="statisticsQueryDto.type == 1"> a.create_time </if> @@ -1520,8 +1559,11 @@ (b.charging_capacity) as electricity FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) - WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT( + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, + sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by + charging_order_id) b on (a.id = b.charging_order_id) + WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT( <if test="statisticsQueryDto.type == 1"> a.start_time </if> @@ -1563,8 +1605,11 @@ (b.charging_capacity) as electricity FROM t_charging_order a - left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id) - WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT( + left join (select charging_order_id, sum(period_electric_price) as period_electric_price, + sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, + sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by + charging_order_id) b on (a.id = b.charging_order_id) + WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT( <if test="statisticsQueryDto.type == 1"> a.start_time </if> @@ -1582,11 +1627,11 @@ </select> <select id="getchargingCapacity" resultType="java.util.Map"> SELECT - DATE_FORMAT( create_time, '%Y-%m-%d' ) as time, - SUM(charging_capacity) as chargingCapacity + DATE_FORMAT( create_time, '%Y-%m-%d' ) as time, + SUM(charging_capacity) as chargingCapacity FROM - t_charging_order - WHERE del_flag = 0 and recharge_payment_status = 2 + t_charging_order + WHERE del_flag = 0 and recharge_payment_status = 2 <if test="statisticsQueryDto.dayType == 1"> AND DATE( create_time ) between #{statisticsQueryDto.startTime} and #{statisticsQueryDto.endTime} </if> @@ -1598,30 +1643,30 @@ </foreach> </if> GROUP BY - time + time </select> <select id="countAllUserData" resultType="java.util.Map"> SELECT - COUNT( DISTINCT app_user_id ) AS counts, - '1' AS type + COUNT( DISTINCT app_user_id ) AS counts, + '1' AS type FROM - `charging_pile_order`.`t_charging_order` UNION ALL + `charging_pile_order`.`t_charging_order` UNION ALL SELECT - COUNT(*) AS counts, - '2' AS type + COUNT(*) AS counts, + '2' AS type FROM - `charging_pile_account`.`t_app_user` + `charging_pile_account`.`t_app_user` WHERE - `vip_end_time` > NOW() + `vip_end_time` > NOW() UNION ALL SELECT - COUNT(*) AS counts, - '3' AS type + COUNT(*) AS counts, + '3' AS type FROM - `charging_pile_account`.`t_app_user` + `charging_pile_account`.`t_app_user` WHERE - del_flag = 0 + del_flag = 0 </select> @@ -1632,7 +1677,8 @@ tc.name as name, cp.name AS siteName FROM - (select site_id,create_time,charging_gun_id, charging_pile_id, current, (CASE WHEN need_elec = 0 THEN `current` ELSE need_elec END) as need_elec from `charging_pile_order`.`t_charging_order`) co + (select site_id,create_time,charging_gun_id, charging_pile_id, current, (CASE WHEN need_elec = 0 THEN `current` + ELSE need_elec END) as need_elec from `charging_pile_order`.`t_charging_order`) co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id <where> @@ -1660,7 +1706,7 @@ and DATE(co.create_time) >= #{statisticsQueryDto.startTime} </if> <if test="statisticsQueryDto.endTime != null"> - and DATE(co.create_time) <= #{statisticsQueryDto.endTime} + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> </where> @@ -1673,24 +1719,24 @@ SELECT count(1) from `charging_pile_account`.`t_app_user` au WHERE au.id not IN ( - SELECT app_user_id - from `charging_pile_account`.`t_app_user_tag` - GROUP BY app_user_id + SELECT app_user_id + from `charging_pile_account`.`t_app_user_tag` + GROUP BY app_user_id - ) and au.del_flag = 0 + ) and au.del_flag = 0 </select> <select id="countCar" resultType="java.lang.Long"> select count(1) from - charging_pile_account.t_app_user_car + charging_pile_account.t_app_user_car where del_flag = 0 <if test="brands != null and brands.size() > 0"> - and vehicle_brand not in - <foreach collection="brands" item="brand" open="(" separator="," close=")"> - #{brand} - </foreach> + and vehicle_brand not in + <foreach collection="brands" item="brand" open="(" separator="," close=")"> + #{brand} + </foreach> </if> </select> <select id="chargingOrderNolimit" resultType="map"> @@ -1706,15 +1752,15 @@ from t_charging_order t1 where 1=1 <if test="null != req.code and req.code!=''"> - and t1.code LIKE CONCAT('%',#{req.code},'%') + and t1.code LIKE CONCAT('%',#{req.code},'%') </if> - <if test="null != req.userIds and req.userIds.size()>0" > + <if test="null != req.userIds and req.userIds.size()>0"> and t1.app_user_id in <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> - <if test="null != req.siteIds and req.siteIds.size()>0" > + <if test="null != req.siteIds and req.siteIds.size()>0"> and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} @@ -1754,84 +1800,96 @@ ) </select> <select id="countOrdersByDate" resultType="com.ruoyi.order.vo.OrderCountByDate"> - SELECT DATE_FORMAT(create_time, '%m/%d') AS `date`, COUNT(*) AS `count` + SELECT DATE_FORMAT(create_time, '%m/%d') AS `date`, COUNT(*) AS `count` FROM t_charging_order WHERE - del_flag = 0 + del_flag = 0 and - status in (3,5) + status in (3,5) - and charging_gun_id in - <foreach item="item" index="index" collection="gunIds" open="(" separator="," close=")"> - #{item} - </foreach> - and create_time BETWEEN #{startTime} AND #{endTime} + and charging_gun_id in + <foreach item="item" index="index" collection="gunIds" open="(" separator="," close=")"> + #{item} + </foreach> + and create_time BETWEEN #{startTime} AND #{endTime} GROUP BY DATE(create_time, '%m/%d') ORDER BY DATE(create_time, '%m/%d') ASC </select> - <select id="findFailedStartupOrder" resultType="com.ruoyi.order.api.model.TChargingOrder"> SELECT - * + * FROM - t_charging_order + t_charging_order WHERE - `status` = 2 - AND recharge_payment_status = 2 - AND NOW() >= ADDDATE(pay_time, INTERVAL 15 MINUTE ) - AND del_flag = 0 - AND id NOT IN ( - SELECT - charging_order_id - FROM - t_charging_order_refund) + `status` = 2 and order_source = 1 + AND recharge_payment_status = 2 + AND NOW() >= ADDDATE(pay_time, INTERVAL 15 MINUTE ) + AND del_flag = 0 + AND id NOT IN ( + SELECT + charging_order_id + FROM + t_charging_order_refund) </select> - - + + <select id="findStoppedOrder" resultType="com.ruoyi.order.api.model.TChargingOrder"> SELECT - * + * FROM - t_charging_order + t_charging_order WHERE - `status` = 4 - AND NOW() >= ADDDATE(end_time, INTERVAL 10 MINUTE ) - AND del_flag = 0 - AND id NOT IN ( - SELECT - charging_order_id - FROM - t_charging_order_refund) + `status` = 4 and order_source = 1 + AND NOW() >= ADDDATE(end_time, INTERVAL 10 MINUTE ) + AND del_flag = 0 + AND id NOT IN ( + SELECT + charging_order_id + FROM + t_charging_order_refund) </select> - - + + <select id="findChargingOrder" resultType="com.ruoyi.order.api.model.TChargingOrder"> SELECT - * + * FROM - t_charging_order + t_charging_order WHERE - `status` = 3 - AND del_flag = 0 - AND id NOT IN ( - SELECT - charging_order_id - FROM - t_charging_order_refund) + `status` = 3 + AND del_flag = 0 and order_source = 1 + AND id NOT IN ( + SELECT + charging_order_id + FROM + t_charging_order_refund) </select> <select id="getSumDegreeBySiteIds" resultType="java.lang.Double"> SELECT IFNULL(SUM(t2.charging_capacity), 0.0) AS sumDegreeBySiteIds FROM t_charging_order t1 - LEFT JOIN t_charging_order_summary_data t2 ON t1.id = t2.charging_order_id + LEFT JOIN t_charging_order_summary_data t2 ON t1.id = t2.charging_order_id WHERE t1.del_flag = 0 - <if test="siteIds != null and siteIds.size() > 0"> + <if test="siteIds != null and siteIds.size() > 0"> AND t1.site_id IN <foreach collection="siteIds" item="item" open="(" separator="," close=")"> #{item} </foreach> - </if> - </select> + </if> + </select> + + + <select id="findEndChargingOrder" resultType="com.ruoyi.order.api.model.TChargingOrder"> + SELECT + * + FROM + t_charging_order + WHERE `status` in (-1, 5) AND del_flag = 0 and create_time > '2025-08-01 00:00:00' and order_source = 1 AND id NOT IN ( + SELECT + charging_order_id + FROM + t_charging_order_refund) + </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java index a4b8a64..7ff9bac 100644 --- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java +++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java @@ -1,71 +1,511 @@ //package com.ruoyi.order; // -//import com.alibaba.fastjson2.JSON; //import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import com.ruoyi.account.api.feignClient.*; -//import com.ruoyi.account.api.model.TAppUserCar; -//import com.ruoyi.chargingPile.api.feignClient.*; -//import com.ruoyi.chargingPile.api.model.Site; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.ruoyi.account.api.feignClient.AppCouponClient; +//import com.ruoyi.account.api.feignClient.AppUserClient; +//import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient; +//import com.ruoyi.account.api.model.TAppCoupon; +//import com.ruoyi.account.api.model.TAppUser; +//import com.ruoyi.account.api.model.TAppUserIntegralChange; +//import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +//import com.ruoyi.chargingPile.api.feignClient.SiteClient; //import com.ruoyi.chargingPile.api.model.TChargingGun; -//import com.ruoyi.chargingPile.api.model.TChargingPile; //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.redis.service.RedisService; -//import com.ruoyi.common.security.service.TokenService; -//import com.ruoyi.integration.api.feignClient.*; -//import com.ruoyi.integration.api.model.ChargingHandshake; +//import com.ruoyi.integration.api.feignClient.ChargingMessageClient; +//import com.ruoyi.integration.api.feignClient.TCECClient; //import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; -//import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient; -//import com.ruoyi.order.api.model.TChargingOrder; -//import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; -//import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo; -//import com.ruoyi.order.api.vo.ChargingOrderInfoVO; -//import com.ruoyi.order.api.vo.TransactionRecordMessageVO; -//import com.ruoyi.order.dto.ChargingDetails; -//import com.ruoyi.order.dto.MyChargingOrderInfo; -//import com.ruoyi.order.dto.PayOrderDto; -//import com.ruoyi.order.dto.PayOrderQueryDto; -//import com.ruoyi.order.mapper.TSettlementConfirmMapper; +//import com.ruoyi.integration.api.vo.ChargingOrderVo; +//import com.ruoyi.order.api.model.*; //import com.ruoyi.order.service.*; -//import com.ruoyi.order.vo.EndOfChargePageInfo; +//import com.ruoyi.order.util.mongodb.service.TransactionRecordService; +//import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; +//import com.ruoyi.order.util.task.TaskUtil; +//import com.ruoyi.other.api.domain.TCoupon; +//import com.ruoyi.other.api.domain.TIntegralRule; +//import com.ruoyi.other.api.domain.TVip; //import com.ruoyi.other.api.feignClient.IntegralRuleClient; -//import com.ruoyi.other.api.feignClient.UserTagClient; //import com.ruoyi.other.api.feignClient.VipClient; //import com.ruoyi.payment.api.feignClient.AliPaymentClient; +//import com.ruoyi.payment.api.feignClient.H5AliPaymentClient; //import com.ruoyi.payment.api.feignClient.WxPaymentClient; +//import com.ruoyi.payment.api.model.RefundReq; +//import com.ruoyi.payment.api.model.RefundResp; +//import com.ruoyi.payment.api.model.WxPaymentRefundModel; //import org.junit.jupiter.api.Test; -//import org.redisson.api.RLock; -//import org.redisson.api.RedissonClient; +//import org.springframework.beans.BeanUtils; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; // //import javax.annotation.Resource; -//import java.io.PrintWriter; //import java.math.BigDecimal; +//import java.math.MathContext; +//import java.math.RoundingMode; +//import java.text.SimpleDateFormat; +//import java.time.LocalDateTime; +//import java.time.format.DateTimeFormatter; +//import java.time.temporal.ChronoUnit; //import java.util.*; -//import java.util.concurrent.TimeUnit; +//import java.util.stream.Collectors; // //@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class) //public class RuoYiOrderApplicationTests { // -// @Autowired -// private RedissonClient redissonClient; +// @Resource +// private TChargingBillService chargingBillService; +// @Resource +// private SiteClient siteClient; +// @Resource +// private TChargingOrderService chargingOrderService; +// +// @Resource +// private TChargingOrderRefundService chargingOrderRefundService; +// +// @Resource +// private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; +// +// @Resource +// private TransactionRecordService transactionRecordService; +// +// @Resource +// private ChargingMessageClient chargingMessageClient; +// +// @Resource +// private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; +// +// @Resource +// private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; +// +// @Resource +// private AppCouponClient appCouponClient; +// +// @Resource +// private TCECClient tcecClient; +// +// @Resource +// private VipClient vipClient; +// +// @Resource +// private ChargingGunClient chargingGunClient; +// +// @Resource +// private IntegralRuleClient integralRuleClient; +// @Resource +// private AppUserClient appUserClient; +// +// @Resource +// private AppUserIntegralChangeClient appUserIntegralChangeClient; +// +// @Resource +// private WxPaymentClient wxPaymentClient; +// +// @Resource +// private AliPaymentClient aliPaymentClient; +// @Resource +// private H5AliPaymentClient h5AliPaymentClient; +// +// @Resource +// private ITChargingOrderSummaryDataService chargingOrderSummaryDataService; // // // @Test // public void test(){ -// RLock lock = redissonClient.getLock("endOrder:1234565"); -// boolean tryLock = false; -// try { -// tryLock = lock.tryLock(100, TimeUnit.SECONDS); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// lock.unlock(); -// } -// if(!tryLock){ -// System.out.println("获取锁失败"); -// } -// System.out.println("获取锁成功"); -// } +// TChargingOrder order = chargingOrderService.getOne(new QueryWrapper<TChargingOrder>().eq("code", "CD61220250714235257688")); +// List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode()); +// if(!dataList.isEmpty()){ +// //获取当前订单的计费规则,然后分段计算总的度数和充电金额 +// List<AccountingStrategyDetailOrder> detailOrders = accountingStrategyDetailOrderService.list(new LambdaQueryWrapper<AccountingStrategyDetailOrder>() +// .eq(AccountingStrategyDetailOrder::getChargingOrderId, order.getId()).last(" order by start_time")); +// detailOrders.get(detailOrders.size() - 1).setEndTime("23:59"); +// SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); +// //开始解析每个时段的充电度数 +// BigDecimal decimal = BigDecimal.ZERO; +// //如果使用优惠券需要判断优惠券是否满足使用条件 +// //退款金额=优惠券金额+剩余充电金额 +// BigDecimal periodElectricPrice_total = BigDecimal.ZERO; +// BigDecimal periodServicePrice_total = BigDecimal.ZERO; +// BigDecimal vipDiscountAmount_total = BigDecimal.ZERO; +// BigDecimal serviceCharge_total = BigDecimal.ZERO; +// BigDecimal total = BigDecimal.ZERO; +// //判断实时数据是否跨天 +// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); +// Date end_time = dataList.get(0).getCreate_time(); +// String end = sdf2.format(end_time); +// Date start_time = dataList.get(dataList.size() - 1).getCreate_time(); +// String start = sdf2.format(start_time); +// if(!end.equals(start)){ +// List<AccountingStrategyDetailOrder> list = detailOrders.stream().map(s->{ +// AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder(); +// BeanUtils.copyProperties(s, accountingStrategyDetailOrder); +// return accountingStrategyDetailOrder; +// }).collect(Collectors.toList()); +// for (AccountingStrategyDetailOrder detailOrder : detailOrders) { +// detailOrder.setStartTime(start + " " + detailOrder.getStartTime()); +// detailOrder.setEndTime(start + " " + detailOrder.getEndTime()); +// } +// for (AccountingStrategyDetailOrder detailOrder : list) { +// detailOrder.setStartTime(end + " " + detailOrder.getStartTime()); +// detailOrder.setEndTime(end + " " + detailOrder.getEndTime()); +// } +// detailOrders.addAll(list); +// }else{ +// for (AccountingStrategyDetailOrder detailOrder : detailOrders) { +// detailOrder.setStartTime(start + " " + detailOrder.getStartTime()); +// detailOrder.setEndTime(start + " " + detailOrder.getEndTime()); +// } +// } +// +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmm"); +// List<TChargingOrderAccountingStrategy> list = new ArrayList<>(); +// for (AccountingStrategyDetailOrder detailOrder : detailOrders) { +// long startTime = Long.parseLong(detailOrder.getStartTime().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")); +// long endTime = Long.parseLong(detailOrder.getEndTime().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")); +// List<UploadRealTimeMonitoringData> collect = dataList.stream().filter(s -> Long.parseLong(sdf1.format(s.getCreate_time())) > startTime && Long.parseLong(sdf1.format(s.getCreate_time())) <= endTime).collect(Collectors.toList()); +// +// if(!collect.isEmpty()){ +// //升序排序 +// collect.sort(new Comparator<UploadRealTimeMonitoringData>(){ +// @Override +// public int compare(UploadRealTimeMonitoringData o1, UploadRealTimeMonitoringData o2) { +// return o1.getCharging_degree().compareTo(o2.getCharging_degree()); +// } +// }); +// UploadRealTimeMonitoringData uploadRealTimeMonitoringData = collect.get(collect.size() - 1); +// BigDecimal chargingDegree = uploadRealTimeMonitoringData.getCharging_degree(); +// BigDecimal subtract = chargingDegree.subtract(decimal); +// decimal = chargingDegree; +// if(subtract.compareTo(BigDecimal.ZERO) > 0){ +// //组装充电明细数据 +// TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy(); +// chargingOrderAccountingStrategy.setChargingOrderId(order.getId()); +// chargingOrderAccountingStrategy.setAccountingStrategyDetailId(detailOrder.getId()); +// chargingOrderAccountingStrategy.setType(detailOrder.getType()); +// chargingOrderAccountingStrategy.setElectrovalence(detailOrder.getElectrovalence()); +// chargingOrderAccountingStrategy.setServiceCharge(detailOrder.getServiceCharge()); +// chargingOrderAccountingStrategy.setCostServiceCharge(detailOrder.getCostServiceCharge()); +// chargingOrderAccountingStrategy.setChargingCapacity(subtract); +// chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); +// +// if (list.size() == 0) { +// String time = sdf.format(collect.get(0).getCreate_time()); +// chargingOrderAccountingStrategy.setStartTime(time); +// } else { +// chargingOrderAccountingStrategy.setStartTime(detailOrder.getStartTime().split(" ")[1]); +// } +// chargingOrderAccountingStrategy.setEndTime(detailOrder.getEndTime().split(" ")[1]); +// +// //已充电总度数 +// BigDecimal electrovalenc = detailOrder.getElectrovalence().multiply(subtract); +// BigDecimal originalServicePrice = detailOrder.getServiceCharge().multiply(subtract); +// BigDecimal serviceCharge = originalServicePrice; +// BigDecimal vipDiscountAmount = BigDecimal.ZERO; +// //计算优惠金额 +// if (null != order.getVipDiscount()) { +// //0.58折 +// vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(order.getVipDiscount())); +// serviceCharge = serviceCharge.multiply(order.getVipDiscount()); +// } +// chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); +// list.add(chargingOrderAccountingStrategy); +// //电费 +// periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc); +// //服务费(含折扣) +// serviceCharge_total = serviceCharge_total.add(serviceCharge); +// //服务费(不含折扣) +// periodServicePrice_total = periodServicePrice_total.add(originalServicePrice); +// //会员折扣优惠金额 +// vipDiscountAmount_total = vipDiscountAmount_total.add(vipDiscountAmount); +// //原始总金额(不含折扣) +// total = total.add(electrovalenc.add(originalServicePrice)); +// } +// } +// +// } +// list.get(list.size() - 1).setEndTime(sdf.format(dataList.get(0).getCreate_time())); +// chargingOrderAccountingStrategyService.saveBatch(list); +// +// BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue()); +// //原金额 +// BigDecimal rechargeAmount = order.getRechargeAmount(); +// //支付金额 +// BigDecimal payAmount = periodElectricPrice_total.add(serviceCharge_total); +// //退款金额=充值金额-实际支付金额 +// BigDecimal refundAmount = rechargeAmount.subtract(payAmount); +// +// UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(order.getCode()); +// if (null != uploadRealTimeMonitoringData && null == order.getEndMode()) { +// Integer soc = uploadRealTimeMonitoringData.getSoc(); +// if (soc >= 98) { +// order.setEndMode(2); +// } else if (null != order.getResidualAmount() && order.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) { +// order.setEndMode(3); +// } else { +// order.setEndMode(1); +// } +// } +// +// order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN)); +// order.setStartTime(list.get(0).getCreateTime()); +// order.setEndTime(list.get(list.size() - 1).getCreateTime()); +// order.setStatus(5); +// order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN)); +// order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN)); +// order.setChargingCapacity(list.get(list.size() - 1).getChargingCapacity()); +// order.setElectricity(list.get(list.size() - 1).getChargingCapacity()); +// order.setVipDiscountAmount(vipDiscountAmount_total); +// if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) { +// order.setVipDiscount(BigDecimal.valueOf(1)); +// } +// +// //计算优惠券 +// BigDecimal couponDiscount = BigDecimal.ZERO; +// if (null != order.getAppCouponId()) { +// //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。 +// TAppCoupon appCoupon = appCouponClient.getAppCouponById(order.getAppCouponId()).getData(); +// String couponJson = appCoupon.getCouponJson(); +// TCoupon tCoupon = com.alibaba.fastjson2.JSON.parseObject(couponJson, TCoupon.class); +// Integer preferentialMode = tCoupon.getPreferentialMode(); +// if (1 == preferentialMode) { +// //满减 +// if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { +// BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount(); +// //如果优惠金额大于服务费金额,以服务费作为最大限制 +// if (serviceCharge_total.compareTo(couponDiscountAmount) < 0) { +// couponDiscount = serviceCharge_total; +// serviceCharge_total = BigDecimal.ZERO; +// } else { +// couponDiscount = couponDiscountAmount; +// } +// appCoupon.setStatus(2); +// appCouponClient.updateAppCoupon(appCoupon); +// } else { +// appCouponClient.refund(order.getAppCouponId().toString()); +// order.setAppCouponId(null); +// order.setCouponDiscountAmount(BigDecimal.ZERO); +// } +// } +// if (2 == preferentialMode) { +// //抵扣 +// if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { +// //折扣金额 +// BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10)); +// divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide; +// //如果优惠金额大于服务费金额,以服务费作为最大限制 +// if (serviceCharge_total.compareTo(divide) < 0) { +// couponDiscount = serviceCharge_total; +// serviceCharge_total = BigDecimal.ZERO; +// } else { +// couponDiscount = divide; +// } +// +// appCoupon.setStatus(2); +// appCouponClient.updateAppCoupon(appCoupon); +// } else { +// order.setAppCouponId(null); +// order.setCouponDiscountAmount(BigDecimal.ZERO); +// appCouponClient.refund(order.getAppCouponId().toString()); +// } +// } +// } +// //优惠券优惠金额 +// couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN); +// //退款金额+优惠券 +// refundAmount = refundAmount.add(couponDiscount); +// //实际支付金额-优惠券 +// payAmount = payAmount.subtract(couponDiscount); +// if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) { +// serviceCharge_total = serviceCharge_total.subtract(couponDiscount); +// } +// order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); +// order.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN)); +// order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN)); +// order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN)); +// order.setRefundStatus(1); +// chargingOrderService.updateById(order); +// +// order = chargingOrderService.getById(order.getId()); +// +// //推送三方平台 +// if (2 == order.getOrderSource()) { +// TChargingOrder finalChargingOrder = order; +// new Thread(new Runnable() { +// @Override +// public void run() { +// tcecClient.notificationEquipChargeStatus(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId()); +// tcecClient.notificationStopChargeResult(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getChargingGunId().toString(), +// finalChargingOrder.getOperatorId()); +// tcecClient.notificationChargeOrderInfo(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId()); +// } +// }).start(); +// } +// +// //开始将优惠券优惠的金额添加到明细中 +// BigDecimal couponDiscountAmount = order.getCouponDiscountAmount(); +// if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) { +// List<TChargingOrderAccountingStrategy> list1 = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId())); +// BigDecimal reduce = list1.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list1) { +// BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice(); +// BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN))); +// periodServicePrice = periodServicePrice.subtract(multiply); +// chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN)); +// } +// chargingOrderAccountingStrategyService.updateBatchById(list1); +// } +// +// // 将枪状态重置为空闲 +// TChargingGun chargingGun = new TChargingGun(); +// chargingGun.setId(order.getChargingGunId()); +// chargingGun.setStatus(2); +// chargingGun.setChargingPower(BigDecimal.ZERO); +// chargingGunClient.updateChargingGunById(chargingGun); +// //推送状态给三方平台 +// if (2 == order.getOrderSource()) { +// tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus()); +// } +// +// //添加积分 +// if (1 == order.getOrderSource()) { +// TIntegralRule integralRule = integralRuleClient.getSet().getData(); +// if (null != integralRule) { +// TAppUser appUser = appUserClient.getUserById(order.getAppUserId()).getData(); +// Integer num1 = com.alibaba.fastjson2.JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1"); +// Integer integral = order.getServiceCharge().intValue() * num1; +// if (null != appUser.getVipId()) { +// TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); +// Integer doubleIntegration = vip.getDoubleIntegration(); +// //双倍积分 +// if (1 == doubleIntegration) { +// integral *= 2; +// } +// } +// +// if (integral > 0) { +// TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); +// appUserIntegralChange.setAppUserId(appUser.getId()); +// appUserIntegralChange.setChangeType(2); +// appUserIntegralChange.setHistoricalIntegral(appUser.getPoints()); +// appUser.setPoints(appUser.getPoints() + integral); +// appUserIntegralChange.setCurrentIntegral(appUser.getPoints()); +// appUserIntegralChange.setCreateTime(LocalDateTime.now()); +// appUserIntegralChange.setOrderCode(order.getCode()); +// appUserIntegralChange.setExtension(order.getId().toString()); +// appUserClient.updateAppUser(appUser); +// appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); +// } +// } +// +// //计算用户标签 +// chargingOrderService.editUserTag(order); +// //用户推荐奖励 +// chargingOrderService.referralReward(order); +// +// //开始构建退款费用 +// refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN); +// if (refundAmount.compareTo(BigDecimal.ZERO) > 0) { +// Integer rechargePaymentType = order.getRechargePaymentType(); +// //构建退款明细 +// TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); +// chargingOrderRefund.setChargingOrderId(order.getId()); +// SimpleDateFormat sdfaa = new SimpleDateFormat("yyyyMMddHHmmssSSS"); +// chargingOrderRefund.setRefundCode("CDF" + sdfaa.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); +// chargingOrderRefund.setRefundAmount(refundAmount); +// chargingOrderRefund.setRefundStatus(1); +// chargingOrderRefund.setPayType(rechargePaymentType); +// chargingOrderRefund.setRefundStatus(1); +// chargingOrderRefund.setCode(order.getCode()); +// chargingOrderRefund.setRefundTitle("充电完成退款"); +// chargingOrderRefund.setRefundContent("充电完成退款"); +// chargingOrderRefund.setRefundReason("充电完成退款"); +// chargingOrderRefund.setRefundRemark("实际充电消费金额:" + order.getPaymentAmount()); +// chargingOrderRefund.setRefundTotalAmount(refundAmount); +// chargingOrderRefund.setPayAmount(rechargeAmount); +// if (1 == rechargePaymentType) { +// WxPaymentRefundModel model = new WxPaymentRefundModel(); +// model.setOut_trade_no(order.getCode()); +// model.setOut_refund_no(chargingOrderRefund.getRefundCode()); +// model.setReason("充电完成退款"); +// model.setNotify_url("/payment/wx/refund/notify"); +// WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); +// amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue()); +// amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue()); +// amount.setCurrency("CNY"); +// model.setAmount(amount); +// R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model); +// if (200 == result.getCode()) { +// chargingOrderRefundService.save(chargingOrderRefund); +// //手续费 +// Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount"); +// Object refund_fee1 = amount1.get("refund_fee"); +// BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); +// chargingOrderRefund.setRefundFee(refund_fee); +// chargingOrderRefundService.updateById(chargingOrderRefund); +// } +// } +// if (2 == rechargePaymentType) { +// RefundReq dto = new RefundReq(); +// dto.setOutTradeNo(order.getCode()); +// dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); +// dto.setRefundAmount(refundAmount.toString()); +// dto.setRefundReason("充电完成退款"); +// RefundResp resp = aliPaymentClient.refund(dto).getData(); +// if (null != resp) { +// chargingOrderRefundService.save(chargingOrderRefund); +// chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); +// } +// } +// if (3 == rechargePaymentType) { +// RefundReq dto = new RefundReq(); +// dto.setOutTradeNo(order.getRechargeSerialNumber()); +// dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); +// dto.setRefundAmount(refundAmount.toString()); +// dto.setRefundReason("充电完成退款"); +// RefundResp resp = h5AliPaymentClient.refund(dto).getData(); +// if (null != resp && "10000".equals(resp.getCode())) { +// chargingOrderRefundService.save(chargingOrderRefund); +// chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); +// } +// } +// } +// } +// +// //添加汇总统计数据 +// List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", order.getId())); +// BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal serviceMoney = BigDecimal.ZERO; +// BigDecimal paymentMoney = BigDecimal.ZERO; +// long time = 0; +// if (!order.getOrderSource().equals(2)) { +// serviceMoney = serviceMoney.add(service_reduce); +// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce); +// } else { +// serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8"))); +// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); +// } +// if (order.getStartTime() != null && order.getEndTime() != null) { +// time = ChronoUnit.SECONDS.between(order.getStartTime(), order.getEndTime()); +// } +// TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData(); +// summaryData.setChargingOrderId(order.getId()); +// summaryData.setChargingCapacity(chargingCapacity); +// summaryData.setChargingDuration(time); +// summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); +// summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); +// summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); +// chargingOrderSummaryDataService.save(summaryData); +// +// //推送监管平台订单状态和订单详情 +// ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); +// BeanUtils.copyProperties(order, chargingOrderVo); +// chargingMessageClient.pushOrderInfo(chargingOrderVo); +// chargingMessageClient.pushOrderStatus(chargingOrderVo); +// } +// } //} -- Gitblit v1.7.1