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