From 73ad931c6f6373ddafa81a5067ac411240d2f745 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Fri, 5 Nov 2021 11:34:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90query=5Fstation=5Finfo?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3,(=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BF=9D=E5=AD=98=E5=9C=BA?= =?UTF-8?q?=E7=AB=99=E7=8A=B6=E6=80=81=E4=B8=8E=E7=BC=96=E8=BE=91=E5=9C=BA?= =?UTF-8?q?=E7=AB=99=E7=8A=B6=E6=80=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/XhpcChargingStationPushStatus.java | 20 ++++++++ .../evcs/http/GlobalExceptionController.java | 2 +- .../evcs/api/QueryStationsInfoController.java | 42 +++++++++++----- .../core/constant/ServiceNameConstants.java | 7 ++- .../XhpcChargingStationController.java | 37 ++++++++++++-- .../XhpcChargingStationPushStatusMapper.java | 48 +++++++++++++++++++ .../service/IXhpcChargingStationService.java | 32 ++++++++++++- .../XhpcChargingStationServiceImpl.java | 45 +++++++++++++++-- .../XhpcChargingStationPushStatusMapper.xml | 28 +++++++++++ .../api/ChargingStationPushStatusService.java | 29 +++++++++++ ...rgingStationPushStatusFallbackFactory.java | 43 +++++++++++++++++ 11 files changed, 309 insertions(+), 24 deletions(-) create mode 100644 evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/XhpcChargingStationPushStatus.java create mode 100644 xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationPushStatusMapper.java create mode 100644 xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationPushStatusMapper.xml create mode 100644 xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/ChargingStationPushStatusService.java create mode 100644 xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/ChargingStationPushStatusFallbackFactory.java diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/XhpcChargingStationPushStatus.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/XhpcChargingStationPushStatus.java new file mode 100644 index 00000000..f69f2b9e --- /dev/null +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/XhpcChargingStationPushStatus.java @@ -0,0 +1,20 @@ +package com.xhpc.evcs.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @author wen + */ +@AllArgsConstructor +@Data +public class XhpcChargingStationPushStatus { + + @JsonProperty("ChargingStationId") + private String chargingStationId; + + @JsonProperty("PushStatus") + private String pushStatus; + +} diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/http/GlobalExceptionController.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/http/GlobalExceptionController.java index c5a2d7f3..9f171b42 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/http/GlobalExceptionController.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/http/GlobalExceptionController.java @@ -22,7 +22,7 @@ public class GlobalExceptionController extends ResponseEntityExceptionHandler { CommonResponse handleAllException(Throwable e) { CommonResponse commonResponse = new CommonResponse(); - commonResponse.setRet(EvcsConst.RET_FAIl); + commonResponse.setRet(EvcsConst.RET_FAIL); commonResponse.setMsg(e.getMessage()); logger.error(e.getMessage()); return commonResponse; diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java index 988422a2..dc1c36ee 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java @@ -1,5 +1,6 @@ package com.xhpc.evcs.api; +import com.xhpc.common.api.ChargingStationPushStatusService; import com.xhpc.common.api.dto.ChargingStationDto; import com.xhpc.common.data.redis.CacheRateModel; import com.xhpc.evcs.domain.XhpcChargingPile; @@ -28,6 +29,8 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; @RestController public class QueryStationsInfoController { + @Autowired + private ChargingStationPushStatusService chargingStationPushStatusService; @Autowired private XhpcChargingPileRepository xhpcChargingPileRepository; @Autowired @@ -38,12 +41,15 @@ public class QueryStationsInfoController { @PostMapping("/v1/query_stations_info") public CommonResponse queryStationsInfo(@RequestBody(required = false) CommonRequest commonRequest) throws Exception { + // todo 电站状态更新逻辑 +// chargingStationPushStatusService.editStationStatus(); +// chargingStationPushStatusService.saveStationStatus(); //当前页数 - PageRequest pageRequest1 = commonRequest.transformDataType(PageRequest.class); - Integer pageNo1 = pageRequest1.getPageNo(); + PageRequest pageRequest = commonRequest.transformDataType(PageRequest.class); + Integer pageNo = pageRequest.getPageNo(); PageStationsInfoResponse response = new PageStationsInfoResponse(); - response.setPageNo(pageNo1); + response.setPageNo(pageNo); //页码总数 String operatorId = commonRequest.getOperatorId(); List xhpcStationInternetBlacklist = xhpcStationInternetBlacklistRepo.findByInternetUserId(operatorId); @@ -64,8 +70,8 @@ public class QueryStationsInfoController { } } if (validStationKeys.size() > 0) { - Integer pageSize1 = pageRequest1.getPageSize(); - int totalPage = validStationKeys.size() % pageSize1 == 0 ? validStationKeys.size() % pageSize1 : (validStationKeys.size() % pageSize1) + 1; + Integer pageSize = pageRequest.getPageSize(); + int totalPage = validStationKeys.size() % pageSize == 0 ? validStationKeys.size() / pageSize : (validStationKeys.size() / pageSize) + 1; response.setPageCount(totalPage); } //总记录条数 @@ -74,11 +80,23 @@ public class QueryStationsInfoController { //充电站信息列表 List stationInfos = new ArrayList<>(); //计算每页开始索引 - Integer pageSize1 = pageRequest1.getPageSize(); - int startIndex = (pageNo1 - 1) * pageSize1; - int endIndex = startIndex + (pageSize1 - 1); + int startIndex = -1; + int endIndex = -1; + if (pageNo == 1 && validStationKeys.size() <= 10) { + startIndex = 0; + endIndex = validStationKeys.size() - 1; + } else { + Integer pageSize = pageRequest.getPageSize(); + startIndex = (pageNo - 1) * pageSize; + endIndex = startIndex + (pageSize - 1); + } for (int i = startIndex; i <= endIndex; i++) { - String stationKey = validStationKeys.get(i); + String stationKey = null; + try { + stationKey = validStationKeys.get(i); + } catch (Exception e) { + continue; + } ChargingStationDto chargingStationDto = REDIS.getCacheObject(stationKey); StationInfo stationInfo = new StationInfo(); stationInfo.setStationId(String.valueOf(chargingStationDto.getStationId())); @@ -210,7 +228,9 @@ public class QueryStationsInfoController { private String[] getFees(Long rateModelId) { CacheRateModel cacheRateModel = REDIS.getCacheObject("rateModel:".concat(rateModelId.toString())); - if (cacheRateModel.getPp() != null) return cacheRateModel.getPp(); + if (cacheRateModel.getPp() != null) { + return cacheRateModel.getPp(); + } String[] tfPricesSeq = cacheRateModel.getTfPricesSeq(); String startTf = "00:00"; String endTf = ""; @@ -309,7 +329,7 @@ public class QueryStationsInfoController { String gunId = pileNo.concat(String.format("%02d", i)); ConnectorInfo connectorInfo = new ConnectorInfo(); connectorInfo.setConnectorID(gunId); - String connectorName = REDIS.getCacheMapValue("gun:".concat(gunId), "terminalName"); //todo setem in redis! + String connectorName = REDIS.getCacheMapValue("gun:".concat(gunId), "terminalName"); //todo set them in redis! connectorInfo.setConnectorName(connectorName == null ? Integer.parseInt(pileNo.substring(5, 10)) + "号桩 " + GUNNAMES[i] + "枪" : connectorName); diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java index 9a9ff54e..6d52b71f 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java @@ -5,9 +5,12 @@ package com.xhpc.common.core.constant; * * @author ruoyi */ -public class ServiceNameConstants -{ +public class ServiceNameConstants { + /** + * EVCS服务 + */ + public static final String XHPC_EVCS = "evcs"; /** * 认证服务service id */ diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcChargingStationController.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcChargingStationController.java index 2d22985a..f62c0f2a 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcChargingStationController.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/controller/XhpcChargingStationController.java @@ -1,14 +1,14 @@ package com.xhpc.charging.station.controller; +import com.xhpc.charging.station.service.IXhpcChargingStationService; +import com.xhpc.common.api.dto.XhpcChargingStationDto; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.page.TableDataInfo; +import com.xhpc.common.domain.XhpcChargingStation; import com.xhpc.common.log.annotation.Log; import com.xhpc.common.log.enums.BusinessType; import com.xhpc.common.security.annotation.PreAuthorize; -import com.xhpc.common.domain.XhpcChargingStation; -import com.xhpc.common.api.dto.XhpcChargingStationDto; -import com.xhpc.charging.station.service.IXhpcChargingStationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -30,6 +30,37 @@ public class XhpcChargingStationController extends BaseController { @Autowired private IXhpcChargingStationService xhpcChargingStationService; + @PostMapping("/editStationStatus") + public AjaxResult editStationStatus(@RequestBody Map map) { + + //空值判断 + if (map.get("chargingStationId") == null && map.get("pushStatus") == null) { + return AjaxResult.error("chargingStationId or pushStatus or stationName is null"); + } + Integer integer = xhpcChargingStationService.editStationsStatus((List) map.get("chargingStationId"), (Integer) map.get("pushStatus")); + return AjaxResult.success("充电站状态编辑成功", null); + } + + @PostMapping("/saveStationStatus") + public AjaxResult saveStationStatus(@RequestBody Map map) { + + //空值判断 + if (map.get("chargingStationId") == null && map.get("pushStatus") == null && map.get("stationName") == null) { + + return AjaxResult.error("chargingStationId or pushStatus or stationName is null"); + } + Boolean result = xhpcChargingStationService.findOneByStationId((Integer) map.get("chargingStationId")); + //电站表中是否有对应的电站存在 + if (!result) { + return AjaxResult.error("chargingStationId is not exist"); + } + Integer integer = xhpcChargingStationService.saveStationStatus((Integer) map.get("chargingStationId"), (String) map.get("stationName"), (Integer) map.get("pushStatus")); + //是否重复判断,保证唯一 + if (integer == 0) { + return AjaxResult.error("chargingStationId doesn't repeat"); + } + return AjaxResult.success("充电站状态保存成功", null); + } /** * 查询电站列表 diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationPushStatusMapper.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationPushStatusMapper.java new file mode 100644 index 00000000..ca611a91 --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationPushStatusMapper.java @@ -0,0 +1,48 @@ +package com.xhpc.charging.station.mapper; + + +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * Mapper Class of the table of the xhpc_charging_station_push_status + * + * @author WH + * @date 2021/11/4 11:16 + * @since version-1.0 + */ +public interface XhpcChargingStationPushStatusMapper { + + /** + * 保存充电站推送状态 + * + * @param chargingStationId id of charging station + * @param pushStatus push status + * @param stationName + * @return Integer success or fail + * @author WH + * @date 2021/11/4 12:54 + * @since version-1.0 + */ + Integer saveStationPushStatus(@Param("chargingStationId") Integer chargingStationId, @Param("stationName") String stationName, @Param("pushStatus") Integer pushStatus); + + /** + * 查找电站id是否已经存在 + * + * @param chargingStationId + * @return + */ + Map findOne(Integer chargingStationId); + + /** + * 编辑一个或多个场站状态 + * + * @param chargingStationIds + * @param pushStatus + * @return + */ + Integer editStationsStatus(@Param("chargingStationIds") List chargingStationIds, @Param("pushStatus") Integer pushStatus); + +} diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcChargingStationService.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcChargingStationService.java index e6e20a14..2cc52243 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcChargingStationService.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/IXhpcChargingStationService.java @@ -1,8 +1,8 @@ package com.xhpc.charging.station.service; +import com.xhpc.common.api.dto.XhpcChargingStationDto; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.domain.XhpcChargingStation; -import com.xhpc.common.api.dto.XhpcChargingStationDto; import java.util.List; import java.util.Map; @@ -15,6 +15,16 @@ import java.util.Map; */ public interface IXhpcChargingStationService { + /** + * 保存电站状态 + * + * @param chargingStationId 要保存的电站的id + * @param stationName 充电站名称 + * @param pushStatus 电站的状态 0,1(1表示修改了) + * @return success or fail + */ + Integer saveStationStatus(Integer chargingStationId, String stationName, Integer pushStatus); + /** * 查询电站 * @@ -177,14 +187,32 @@ public interface IXhpcChargingStationService { * @param chargingStationId * @return */ - Map getTerminalStatusSum(Map map, Long chargingStationId,Integer status); + Map getTerminalStatusSum(Map map, Long chargingStationId, Integer status); /** * 单个终端状态(所有状态集合) + * * @param serialNumber * @return */ Integer getTerminalStatus(String serialNumber); + /** + * 通过id查找对应的场站 + * + * @param chargingStationId + * @return + */ + Boolean findOneByStationId(Integer chargingStationId); + + /** + * 编辑一个或多个充电站状态 + * + * @param chargingStationId + * @param pushStatus + * @return + */ + Integer editStationsStatus(List chargingStationId, Integer pushStatus); + } diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java index e3216d4a..88eb24e8 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java @@ -3,6 +3,7 @@ package com.xhpc.charging.station.service; import cn.hutool.core.date.DateUtil; import com.xhpc.charging.station.mapper.XhpcChargingStationMapper; +import com.xhpc.charging.station.mapper.XhpcChargingStationPushStatusMapper; import com.xhpc.common.api.PowerPileService; import com.xhpc.common.api.dto.XhpcChargingStationDto; import com.xhpc.common.api.dto.XhpcRateDto; @@ -48,8 +49,34 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi private PowerPileService powerPileService; @Autowired private RedisService redisService; + @Autowired + private XhpcChargingStationPushStatusMapper xhpcChargingStationPushStatusMapper; private static final Logger logger = LoggerFactory.getLogger(XhpcChargingStationServiceImpl.class); + + @Override + public Integer editStationsStatus(List chargingStationIds, Integer pushStatus) { + + return xhpcChargingStationPushStatusMapper.editStationsStatus(chargingStationIds, pushStatus); + } + + /** + * 保存电站状态 + * + * @param chargingStationId 要保存的电站的id + * @param pushStatus 电站的状态 0,1(1表示修改了) + * @return greater than 0 means success + */ + @Override + public Integer saveStationStatus(Integer chargingStationId, String stationName, Integer pushStatus) { + + Map map = xhpcChargingStationPushStatusMapper.findOne(chargingStationId); + if (map != null) { + return 0; + } + return xhpcChargingStationPushStatusMapper.saveStationPushStatus(chargingStationId, stationName, pushStatus); + } + /** * 查询电站 * @@ -1073,6 +1100,7 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi @Override public Integer getTerminalStatus(String serialNumber) { + Integer status =0; //终端状态用 redis数据 if(!"".equals(serialNumber) && serialNumber!=null){ @@ -1090,17 +1118,24 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi } }else{ //充电桩 - status =3; + status = 3; } - }else{ - status =5; + } else { + status = 5; } - }else{ - status =5; + } else { + status = 5; } return status; } + @Override + public Boolean findOneByStationId(Integer chargingStationId) { + + XhpcChargingStation xhpcChargingStation = xhpcChargingStationMapper.selectXhpcChargingStationById(Long.valueOf(chargingStationId)); + return xhpcChargingStation != null; + } + public static void main(String[] args) { //时间差 // String startTime="01:00:00"; diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationPushStatusMapper.xml b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationPushStatusMapper.xml new file mode 100644 index 00000000..546d1401 --- /dev/null +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationPushStatusMapper.xml @@ -0,0 +1,28 @@ + + + + + + update xhpc_charging_station_push_status set push_status = #{pushStatus} + + charging_station_id + + #{id} + + + + + + insert into xhpc_charging_station_push_status (charging_station_id, station_name, push_status) + values (#{chargingStationId}, #{stationName}, #{pushStatus}) + + + + + \ No newline at end of file diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/ChargingStationPushStatusService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/ChargingStationPushStatusService.java new file mode 100644 index 00000000..25afe3d9 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/ChargingStationPushStatusService.java @@ -0,0 +1,29 @@ +package com.xhpc.common.api; + +import com.xhpc.common.api.factory.ChargingStationPushStatusFallbackFactory; +import com.xhpc.common.core.constant.ServiceNameConstants; +import com.xhpc.common.core.web.domain.AjaxResult; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +/** + * 用于evcs的跨服务调用 + * save station status and edit station + * + * @author WH + * @date 2021/11/5 10:05 + * @since version-1.0 + */ +@FeignClient(contextId = "ChargingStationPushStatusService", value = ServiceNameConstants.XHPC_EVCS, fallbackFactory = ChargingStationPushStatusFallbackFactory.class) +public interface ChargingStationPushStatusService { + + @PostMapping("/station/editStationStatus") + AjaxResult editStationStatus(@RequestBody Map map); + + @PostMapping("/station/saveStationStatus") + AjaxResult saveStationStatus(@RequestBody Map map); + +} diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/ChargingStationPushStatusFallbackFactory.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/ChargingStationPushStatusFallbackFactory.java new file mode 100644 index 00000000..7b7242e7 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/ChargingStationPushStatusFallbackFactory.java @@ -0,0 +1,43 @@ +package com.xhpc.common.api.factory; + +import com.xhpc.common.api.ChargingStationPushStatusService; +import com.xhpc.common.core.web.domain.AjaxResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author WH + * @date 2021/11/5 10:10 + * @since version-1.0 + */ +@Component +public class ChargingStationPushStatusFallbackFactory implements FallbackFactory { + + private static final Logger logger = LoggerFactory.getLogger(ChargingStationPushStatusFallbackFactory.class); + + @Override + public ChargingStationPushStatusService create(Throwable cause) { + + logger.error("场站状态服务调用失败:{}//fallback", cause.getMessage()); + + return new ChargingStationPushStatusService() { + + @Override + public AjaxResult editStationStatus(Map map) { + + return AjaxResult.error("场站编辑回调接口失败:" + cause.getMessage()); + } + + @Override + public AjaxResult saveStationStatus(Map map) { + + return AjaxResult.error("场站保存回调接口失败:" + cause.getMessage()); + } + }; + } + +}