From 68ef7ab098a0dcca56b1e91c66cb4f15f68ae44c Mon Sep 17 00:00:00 2001 From: panshuling321 Date: Fri, 19 Aug 2022 20:58:12 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E6=9B=B4=E6=96=B0token=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=9C=9F=E4=B8=BA24=E5=B0=8F=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xhpc/common/core/constant/Constants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/Constants.java index 3f899aec..d406b7d7 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/Constants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/Constants.java @@ -90,7 +90,7 @@ public class Constants /** * 令牌有效期(分钟) */ - public final static long TOKEN_EXPIRE = 10; + public final static long TOKEN_EXPIRE = 60*24; /** * 参数管理 cache key From 8afe372b624f3904d6f5ae55c34bbc8cae3580e7 Mon Sep 17 00:00:00 2001 From: panshuling321 Date: Wed, 24 Aug 2022 10:45:24 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E5=88=A4=E6=96=AD=E6=A1=A9=E7=A6=81?= =?UTF-8?q?=E7=94=A8=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/QueryStationStatusController.java | 43 ++++++++++++++++--- .../xhpc/evcs/jpa/XhpcTerminalRepository.java | 4 ++ .../NotificationStationStatusTask.java | 31 ++++++++++--- 3 files changed, 67 insertions(+), 11 deletions(-) diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java index faef9a02..46181882 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java @@ -1,14 +1,30 @@ package com.xhpc.evcs.api; import com.xhpc.common.api.dto.ChargingStationDto; -import com.xhpc.evcs.dto.*; +import com.xhpc.common.domain.XhpcTerminal; +import com.xhpc.evcs.dto.CommonRequest; +import com.xhpc.evcs.dto.CommonResponse; +import com.xhpc.evcs.dto.ConnectorStatusInfo; +import com.xhpc.evcs.dto.StationStatusInfo; +import com.xhpc.evcs.dto.StationStatusInfoWrapper; +import com.xhpc.evcs.dto.StationStatusRequest; import com.xhpc.evcs.encryption.EvcsConst; +import com.xhpc.evcs.jpa.XhpcTerminalRepository; import com.xhpc.evcs.utils.JSONUtil; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import java.util.*; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; import static cn.hutool.core.util.NumberUtil.isInteger; import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; @@ -16,6 +32,8 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; @RestController public class QueryStationStatusController { + @Resource + XhpcTerminalRepository terminalRepository; @PostMapping("/v1/query_station_status") public CommonResponse queryStationsInfo(@RequestBody CommonRequest commonRequest) throws Exception { @@ -46,6 +64,10 @@ public class QueryStationStatusController { for (int i = 0; i < keys.length; i++) { statusMap.put(keys[i], values[i]); } + + List terminalList = terminalRepository.selectStatusBySql(); + Map terminalDBMap = terminalList.stream().collect(Collectors.toMap(XhpcTerminal::getSerialNumber,XhpcTerminal::getStatus)); + for (String stationID : stationIDs) { ChargingStationDto chargingStationDto = REDIS.getCacheObject("station:" + stationID); Set pileIds = new HashSet<>(); @@ -59,11 +81,20 @@ public class QueryStationStatusController { if (pileId.equals(value.substring(0, 14))) { existsGun = true; ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); - Object status = REDIS.getCacheMapValue("gun:" + value, "status"); - if (isInteger(status.toString())) { - connectorStatusInfo.setStatus(3); + Integer gunStatus = terminalDBMap.get(value); + if (gunStatus == null){ + existsGun = false; } else { - connectorStatusInfo.setStatus(statusMap.get(status)); + if (gunStatus == 0){ + Object status = REDIS.getCacheMapValue("gun:" + value, "status"); + if (isInteger(status.toString())) { + connectorStatusInfo.setStatus(3); + } else { + connectorStatusInfo.setStatus(statusMap.get(status)); + } + } else { + connectorStatusInfo.setStatus(0); + } } connectorStatusInfo.setConnectorID(value); connectorStatusInfos.add(connectorStatusInfo); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/XhpcTerminalRepository.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/XhpcTerminalRepository.java index 2918c6eb..88d22ba6 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/XhpcTerminalRepository.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/jpa/XhpcTerminalRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.QueryByExampleExecutor; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; /** @@ -31,4 +32,7 @@ public interface XhpcTerminalRepository extends JpaRepository selectStatusBySql(); } diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java index 6ec28d03..4ed540e8 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java @@ -1,6 +1,7 @@ package com.xhpc.evcs.notification; import com.xhpc.common.api.dto.ChargingStationDto; +import com.xhpc.common.domain.XhpcTerminal; import com.xhpc.evcs.domain.AuthSecretToken; import com.xhpc.evcs.domain.XhpcInternetUser; import com.xhpc.evcs.domain.XhpcStationInternetBlacklist; @@ -10,6 +11,7 @@ import com.xhpc.evcs.dto.ConnectorStatusInfoReq; import com.xhpc.evcs.jpa.AuthSecretTokenRepository; import com.xhpc.evcs.jpa.XhpcInternetUserRepository; import com.xhpc.evcs.jpa.XhpcStationInternetBlacklistRepository; +import com.xhpc.evcs.jpa.XhpcTerminalRepository; import com.xhpc.evcs.utils.ChangePoleStatus; import com.xhpc.evcs.utils.JSONUtil; import lombok.extern.slf4j.Slf4j; @@ -17,13 +19,22 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.io.IOException; import java.time.Instant; -import java.util.*; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT; -import static com.xhpc.evcs.dto.ConnectorStatusInfo.*; +import static com.xhpc.evcs.dto.ConnectorStatusInfo.CHARGING; +import static com.xhpc.evcs.dto.ConnectorStatusInfo.ERROR; +import static com.xhpc.evcs.dto.ConnectorStatusInfo.FREE; +import static com.xhpc.evcs.dto.ConnectorStatusInfo.OFF_LINE; @Component @Slf4j @@ -35,12 +46,17 @@ public class NotificationStationStatusTask extends CoreDispatcher { private XhpcInternetUserRepository xhpcInternetUserRepository; @Autowired private XhpcStationInternetBlacklistRepository xhpcStationInternetBlacklistRepo; + @Resource + private XhpcTerminalRepository terminalRepository; @Scheduled(fixedRate = 1000 * 45) protected void run() throws IOException { Collection stationTerminalKeys = REDIS.keys("stationTerminalStatus:*"); + List terminalList = terminalRepository.selectStatusBySql(); + Map terminalDBMap = terminalList.stream().collect(Collectors.toMap(XhpcTerminal::getSerialNumber,XhpcTerminal::getStatus)); + Instant now = Instant.now(); List xhpcInternetUserList = xhpcInternetUserRepository.findByCooperationStartTimeBeforeAndCooperationEndTimeAfter(now, now); @@ -49,7 +65,7 @@ public class NotificationStationStatusTask extends CoreDispatcher { "station")); String operatorId = chargingStationDto.getOperatorId(); Map terminalStatusMap = REDIS.getCacheMap(stationTerminalKey); - Set connectorStatusInfos = translateStatus(operatorId, terminalStatusMap); + Set connectorStatusInfos = translateStatus(operatorId, terminalStatusMap, terminalDBMap); Set changeStatus = ChangePoleStatus.getChangeStatus(connectorStatusInfos); if (!changeStatus.isEmpty()) { for (XhpcInternetUser xhpcInternetUser : xhpcInternetUserList) { @@ -70,7 +86,7 @@ public class NotificationStationStatusTask extends CoreDispatcher { } } - private Set translateStatus(String operatorId, Map terminalStatusMap) { + private Set translateStatus(String operatorId, Map terminalStatusMap, Map terminalDBMap) { Set connectorStatusInfoList = new HashSet<>(); final Set connectorIds = terminalStatusMap.keySet(); @@ -78,7 +94,12 @@ public class NotificationStationStatusTask extends CoreDispatcher { ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); connectorStatusInfo.setConnectorID(gunId); connectorStatusInfo.setOperatorID(operatorId); - connectorStatusInfo.setStatus(translateStatus(terminalStatusMap.get(gunId))); + Integer dbStatus = terminalDBMap.get(gunId); + if(dbStatus == 0){ + connectorStatusInfo.setStatus(translateStatus(terminalStatusMap.get(gunId))); + } else { + connectorStatusInfo.setStatus(0); + } connectorStatusInfoList.add(connectorStatusInfo); } return connectorStatusInfoList; From e78536738f58fca6aa1833eb7c58c8c3b88f4e04 Mon Sep 17 00:00:00 2001 From: yuyang Date: Wed, 24 Aug 2022 11:24:11 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=94=A8=E6=88=B6=E7=8D=B2=E5=8F=96=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/XhpcChargeOrderServiceImpl.java | 15 +++---- .../src/main/resources/bootstrap.yml | 4 +- .../service/impl/XhpcAppUserServiceImpl.java | 41 +++++++++++-------- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java index f15e1698..5fcf3d77 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java @@ -504,13 +504,14 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar //终端信息 XhpcTerminal xhpcTerminal = xhpcChargeOrderMapper.getXhpcTerminalSerialNumber(connectorId,null); if (xhpcTerminal == null || xhpcTerminal.getTerminalId() == null || xhpcTerminal.getChargingPileId() == null || xhpcTerminal.getPileSerialNumber() == null) { - r.setCode(1); - String pilePrompt = redisService.getCacheObject("pilePrompt:000000"); - if(!"".equals(pilePrompt) && pilePrompt !=null){ - r.setMsg(pilePrompt); - }else{ - r.setMsg("因限电该桩已停用,请选择其他桩进行充电"); - } + r.setCode(500); +// String pilePrompt = redisService.getCacheObject("pilePrompt:000000"); +// if(!"".equals(pilePrompt) && pilePrompt !=null){ +// r.setMsg(pilePrompt); +// }else{ +// r.setMsg("因限电该桩已停用,请选择其他桩进行充电"); +// } + r.setMsg("因限电该桩已停用请选择其他桩进行充电"); return r; } //终端状态是否空闲 diff --git a/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml index fca35f2a..a45f7112 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-order/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 172.31.183.135:8848 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 172.31.183.135:8848 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java index 206eeeb9..0ce2ad23 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java @@ -430,24 +430,28 @@ public class XhpcAppUserServiceImpl extends BaseService implements IXhpcAppUserU */ @Override public R voluntaryLogin(Map map) { - String type = StringUtils.valueOf(map.get("type")); - String openid = StringUtils.valueOf(map.get("openid")); - String tenantId = StringUtils.valueOf(map.get("tenantId")); - logger.info("<<<<<<<<<>>>>>>>>>>>"); - logger.info("<<<<<<<<<<自动登录openid>>>>>>>>>>>>"+openid); - logger.info("<<<<<<<<<>>>>>>>>>>>"); - Map userLoginTime = xhpcAppUserMapper.getUserLoginTime(Integer.valueOf(type), openid,tenantId); - if(userLoginTime ==null){ - return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); - } - logger.info("-------userLoginTime---" + userLoginTime); - if(userLoginTime.get("status") == null){ - return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); - } else if(UserTypeUtil.NO_LOGIN.equals(userLoginTime.get("status").toString())){ - return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); - } - logger.info("-------status---"+userLoginTime.get("status").toString()); - return appLogin(userLoginTime.get("account").toString(), type, openid, tenantId); + try{ + String type = StringUtils.valueOf(map.get("type")); + String openid = StringUtils.valueOf(map.get("openid")); + String tenantId = StringUtils.valueOf(map.get("tenantId")); + logger.info("<<<<<<<<<>>>>>>>>>>>"); + logger.info("<<<<<<<<<<自动登录openid>>>>>>>>>>>>"+openid); + logger.info("<<<<<<<<<>>>>>>>>>>>"); + Map userLoginTime = xhpcAppUserMapper.getUserLoginTime(Integer.valueOf(type), openid,tenantId); + if(userLoginTime ==null){ + return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); + } + logger.info("-------userLoginTime---" + userLoginTime); + if(userLoginTime.get("status") == null){ + return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); + } else if(UserTypeUtil.NO_LOGIN.equals(userLoginTime.get("status").toString())){ + return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); + } + logger.info("-------status---"+userLoginTime.get("status").toString()); + return appLogin(userLoginTime.get("account").toString(), type, openid, tenantId); + }catch (Exception e){ + return R.fail(HttpStatus.USER_LOGIN, "请重新登录"); + } } /** @@ -525,6 +529,7 @@ public class XhpcAppUserServiceImpl extends BaseService implements IXhpcAppUserU } }catch (Exception e){ e.printStackTrace(); + logger.info("-------appInfo----请重新登录---"); return AjaxResult.error("请重新登录",HttpStatus.USER_LOGIN); } } From fb67bc55979bea0d4f1e0c1d6cf1c190e310f6b4 Mon Sep 17 00:00:00 2001 From: yuyang Date: Wed, 24 Aug 2022 11:24:42 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=94=A8=E6=88=B6=E7=8D=B2=E5=8F=96=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml index 170d7d31..f85c5cef 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml @@ -14,10 +14,10 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 172.31.183.135:8848 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 config: # 配置中心地址 - server-addr: 172.31.183.135:8848 + server-addr: mse-e2a05960-nacos-ans.mse.aliyuncs.com:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -55,4 +55,4 @@ oss: #文件路径 file: aliyunPath: invoicePdf/ - serverStoreDisposableFileLocation: /www/wwwroot/xhpc.scxhua.com/disposableFiles/ \ No newline at end of file + serverStoreDisposableFileLocation: /www/wwwroot/scxhua.cn/disposableFiles/ \ No newline at end of file From 69f2cec277f57916662f6b615fe3a39ae714018f Mon Sep 17 00:00:00 2001 From: panshuling321 Date: Wed, 24 Aug 2022 11:25:11 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=A4=84=E7=90=86=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E5=AF=B9=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F=E7=9A=84=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xhpc/evcs/api/QueryStationStatusController.java | 1 - .../NotificationChargeOrderInfo4BonusTask.java | 5 +++++ .../notification/NotificationChargeOrderInfoTask.java | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java index 46181882..cba28ffb 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java index 179ac956..66ec3bb1 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java @@ -76,6 +76,11 @@ public class NotificationChargeOrderInfo4BonusTask extends CoreDispatcher { if (operatorIdEvcs == null) { Long chargingStationId = xhpcHistoryOrder.getChargingStationId(); XhpcChargingStation station = chargingStationRepo.findById(chargingStationId).orElse(null); + if(station == null){ + logger.error("station[{}] is not exits", chargingStationId); + return false; + } + String stationOperatorIdEvcs = station.getOperatorIdEvcs(); if (stationOperatorIdEvcs == null) { logger.error("station[{}] operator id evcs not set", chargingStationId); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java index 0ba116cc..470f7d7f 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java @@ -45,7 +45,13 @@ public class NotificationChargeOrderInfoTask extends CoreDispatcher { Collection orderKeys = REDIS.keys("order:*"); Instant now = Instant.now(); for (String okey : orderKeys) { - Date otime = DateUtil.orderNo2Date(okey.substring(6)); + String orderNo = okey.substring(6); + if(orderNo.length() < 32){ + logger.error("orderNo[{}] is error", orderNo); + continue; + } + + Date otime = DateUtil.orderNo2Date(orderNo); if (Duration.between(otime.toInstant(), now).toHours() > 24 * 3) { REDIS.deleteObject(okey); REDIS.deleteObject(okey.replace("order", "pushOrder")); From 47e4f3023e51f2b0a942f19fc490e4ead732175f Mon Sep 17 00:00:00 2001 From: panshuling321 Date: Fri, 26 Aug 2022 11:16:17 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=AF=BC=E5=87=BA=E7=9A=84=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=85=85=E7=94=B5=E5=8E=9F=E5=9B=A0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xhpc/common/enums/StopReasonEnum.java | 18 ++++++++++++++++++ .../impl/XhpcHistoryOrderServiceImpl.java | 7 ++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java index ce10e37d..094f31cb 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java @@ -1,5 +1,9 @@ package com.xhpc.common.enums; +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + /** * @author yuyang * @date 2022/8/5 16:44 @@ -79,6 +83,15 @@ public enum StopReasonEnum { private final String code; private final String name; + + public String getCode(){ + return code; + } + + public String getName(){ + return name; + } + StopReasonEnum(String code, String name){ this.code = code; this.name = name; @@ -94,4 +107,9 @@ public enum StopReasonEnum { return ""; } + + public static Map getMap(){ + return Arrays.stream(StopReasonEnum.values()).collect(Collectors.toMap(StopReasonEnum::getCode, StopReasonEnum::getName)); + } + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java index 487d2c99..442fa7db 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java @@ -12,6 +12,7 @@ import com.xhpc.common.core.utils.SecurityUtils; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.service.BaseService; import com.xhpc.common.data.redis.CacheRealtimeData; +import com.xhpc.common.enums.StopReasonEnum; import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.UserTypeUtil; @@ -363,6 +364,9 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis list = xhpcHistoryOrderMapper.getListPage(chargingStationId,chargingPileId,terminalId,phone, transactionNumber, 0, chargingStationName, operatorId, source, beginStartTime, beginEndTime, userId, type, number,affiliationOrganization,evcsOrderNo,plateNum,internetId,internetSerialNumber,terminalName,vinCode,overStartTime,overEndTime,personnelId,confirmResult,tenantId,1); } + Map reasonMap = StopReasonEnum.getMap(); + list.stream().forEach(map->map.put("stopReasonEvcsStr", reasonMap.get(map.get("stopReasonEvcs")))); + // 通过工具类创建writer,默认创建xls格式 BigExcelWriter writer = ExcelUtil.getBigWriter("HistoryOrder_" + System.currentTimeMillis() + ".xlsx"); writer.addHeaderAlias("historyOrderId", "历史订单ID"); @@ -406,7 +410,8 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis writer.addHeaderAlias("endTime", "结束充电时间"); writer.addHeaderAlias("updateTime", "结算时间"); writer.addHeaderAlias("chargingModeName", "订单来源"); - writer.addHeaderAlias("stopReasonEvcs", "停止原因"); + writer.addHeaderAlias("stopReasonEvcs", "停止原因代码"); + writer.addHeaderAlias("stopReasonEvcsStr", "停止原因说明"); writer.addHeaderAlias("sourceName", "用户类型"); // writer.addHeaderAlias("plateNum", "电站名称"); From dcc3e09be0ab15def087340ba09928f209c8ff6a Mon Sep 17 00:00:00 2001 From: yuyang Date: Fri, 26 Aug 2022 15:01:23 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=97=B6=E9=97=B4=E5=80=92=E5=8F=99=E3=80=81?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E8=AE=A2=E5=8D=95=E7=BB=93=E7=AE=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/XhpcChargingStationMapper.xml | 1 + .../xhpc/order/mapper/XhpcRealTimeOrderMapper.java | 4 ++++ .../service/impl/XhpcRealTimeOrderServiceImpl.java | 9 ++++++++- .../service/impl/XhpcStatisticsServiceImpl.java | 13 ++++++++++++- .../resources/mapper/XhpcHistoryOrderMapper.xml | 2 +- .../resources/mapper/XhpcRealTimeOrderMapper.xml | 7 +++++++ 6 files changed, 33 insertions(+), 3 deletions(-) diff --git a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcChargingStationMapper.xml b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcChargingStationMapper.xml index 1a192dd0..668e58b3 100644 --- a/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcChargingStationMapper.xml +++ b/xhpc-modules/xhpc-card/src/main/resources/mapper/XhpcChargingStationMapper.xml @@ -566,6 +566,7 @@ and find_in_set(tenant_id, #{tenantIdsStr}) order by create_time desc + LIMIT 50 \ No newline at end of file diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java index 409cd57e..85cf5999 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java @@ -73,6 +73,10 @@ public interface XhpcRealTimeOrderMapper { */ Map getMessage(@Param("realTimeOrderId")Long realTimeOrderId); + /** + * 获取场站信息 + */ + Map getXhpcChargingStationById(Long chargingStationId); /** * 异常订单详情接口(PC端) * @param chargeOrderId diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index 2f7c3a5b..e4d80b5d 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -182,7 +182,10 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe } //获取开始充电时间、结束时间、计费模型、充电度数、已充金额 XhpcChargeOrder chargeOrder = xhpcChargeOrderService.getChargingOrderId(Long.parseLong(message.get("chargeOrderId").toString())); - + if(chargeOrder.getRateModelId()==null || "".equals(chargeOrder.getRateModelId())){ + Map xhpcChargingStationMap = xhpcRealTimeOrderMapper.getXhpcChargingStationById(chargeOrder.getChargingStationId()); + chargeOrder.setRateModelId(Long.valueOf(xhpcChargingStationMap.get("rateModelId").toString())); + } //获取该订单最后一条实时数据 Map cacheMap = redisService.getCacheMap("order:" + chargeOrder.getSerialNumber()); List list = (List) cacheMap.get("realtimeDataList"); @@ -334,6 +337,10 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); return AjaxResult.success(); } + if(xhpcChargeOrder.getRateModelId()==null || "".equals(xhpcChargeOrder.getRateModelId())){ + Map xhpcChargingStationMap = xhpcRealTimeOrderMapper.getXhpcChargingStationById(xhpcChargeOrder.getChargingStationId()); + xhpcChargeOrder.setRateModelId(Long.valueOf(xhpcChargingStationMap.get("rateModelId").toString())); + } //总金额 BigDecimal money = powerPrice.add(servicePrice); //总服务费 servicePrice diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcStatisticsServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcStatisticsServiceImpl.java index eb0149ec..05cc47c5 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcStatisticsServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcStatisticsServiceImpl.java @@ -1291,6 +1291,7 @@ public class XhpcStatisticsServiceImpl extends BaseService implements IXhpcStati int freeTime =0;//空闲 int charge =0;//充电 int unknown =0;//未知 + int insertGun =0;//已插枪 if(terminal !=null && terminal.size()>0){ for (String st:terminal) { Map cacheMap = redisService.getCacheMap("gun:" + st); @@ -1303,7 +1304,11 @@ public class XhpcStatisticsServiceImpl extends BaseService implements IXhpcStati fault++; }else if(cacheMap.containsKey("status") && "空闲".equals(cacheMap.get("status").toString())){ - freeTime++; + if("是".equals(cacheMap.get("vehicleGunStatus").toString())){ + insertGun++; + }else{ + freeTime++; + } }else{ charge++; } @@ -1347,6 +1352,12 @@ public class XhpcStatisticsServiceImpl extends BaseService implements IXhpcStati mapList4.add(objectMap4); mapList.addAll(mapList4); + List> mapList5 =new ArrayList<>(); + Map objectMap5 =new HashMap<>(); + objectMap5.put("name","已插枪"); + objectMap5.put("value",insertGun); + mapList5.add(objectMap5); + mapList.addAll(mapList5); return mapList; } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index b4e0504e..18af0925 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -1162,7 +1162,7 @@ and ho.total_price >=0 - order by ho.create_time desc + order by ho.end_time desc + + + + + diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml index f78e3011..35107998 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml @@ -212,6 +212,105 @@ + + insert into xhpc_real_time_order_bms + + + order_no, + + + pile_no, + + + gun_id, + + + bms_voltage_request, + + + bms_current_request, + + + bms_charging_mod, + + + bms_charging_volt, + + + bms_charging_current, + + + soc, + + + bms_est_remaining_time, + + + pile_voltage_output, + + + pile_current_output, + + + charging_time_summary, + + + mono_battery_volt_groupId, + + + charging_order_id, + + + + + #{orderNo}, + + + #{pileNo}, + + + #{gunId}, + + + #{bmsVoltageRequest}, + + + #{bmsCurrentRequest}, + + + #{bmsChargingMod}, + + + #{monoBatteryVolt}, + + + #{bmsChargingCurrent}, + + + #{soc}, + + + #{bmsEstRemainingTime}, + + + #{pileVoltageOutput}, + + + #{pileCurrentOutput}, + + + #{chargingTimeSummary}, + + + #{monoBatteryVoltGroupId}, + + + #{chargingOrderId}, + + + + + insert into xhpc_charge_order_soc @@ -614,6 +713,30 @@ order by create_time desc + + +