完成query_station_info接口,(增加了回调接口,保存场站状态与编辑场站状态)

This commit is contained in:
wen 2021-11-05 11:34:44 +08:00
parent 68387d099f
commit 73ad931c6f
11 changed files with 309 additions and 24 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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<PageRequest> 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> 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<StationInfo> 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);

View File

@ -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
*/

View File

@ -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<String, Object> 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<Integer>) map.get("chargingStationId"), (Integer) map.get("pushStatus"));
return AjaxResult.success("充电站状态编辑成功", null);
}
@PostMapping("/saveStationStatus")
public AjaxResult saveStationStatus(@RequestBody Map<String, Object> 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);
}
/**
* 查询电站列表

View File

@ -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<String, Object> findOne(Integer chargingStationId);
/**
* 编辑一个或多个场站状态
*
* @param chargingStationIds
* @param pushStatus
* @return
*/
Integer editStationsStatus(@Param("chargingStationIds") List<Integer> chargingStationIds, @Param("pushStatus") Integer pushStatus);
}

View File

@ -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 电站的状态 011表示修改了)
* @return success or fail
*/
Integer saveStationStatus(Integer chargingStationId, String stationName, Integer pushStatus);
/**
* 查询电站
*
@ -177,14 +187,32 @@ public interface IXhpcChargingStationService {
* @param chargingStationId
* @return
*/
Map<String, Object> getTerminalStatusSum(Map<String, Object> map, Long chargingStationId,Integer status);
Map<String, Object> getTerminalStatusSum(Map<String, Object> 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<Integer> chargingStationId, Integer pushStatus);
}

View File

@ -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<Integer> chargingStationIds, Integer pushStatus) {
return xhpcChargingStationPushStatusMapper.editStationsStatus(chargingStationIds, pushStatus);
}
/**
* 保存电站状态
*
* @param chargingStationId 要保存的电站的id
* @param pushStatus 电站的状态 011表示修改了)
* @return greater than 0 means success
*/
@Override
public Integer saveStationStatus(Integer chargingStationId, String stationName, Integer pushStatus) {
Map<String, Object> 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";

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xhpc.charging.station.mapper.XhpcChargingStationPushStatusMapper">
<update id="editStationsStatus">
update xhpc_charging_station_push_status set push_status = #{pushStatus}
<where>
charging_station_id
<foreach collection="chargingStationIds" separator="," open="in (" close=")" item="id">
#{id}
</foreach>
</where>
</update>
<insert id="saveStationPushStatus">
insert into xhpc_charging_station_push_status (charging_station_id, station_name, push_status)
values (#{chargingStationId}, #{stationName}, #{pushStatus})
</insert>
<select id="findOne" resultType="Map" parameterType="integer">
select *
from xhpc_charging_station_push_status
where charging_station_id = #{chargingStationId}
</select>
</mapper>

View File

@ -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<String, Object> map);
@PostMapping("/station/saveStationStatus")
AjaxResult saveStationStatus(@RequestBody Map<String, Object> map);
}

View File

@ -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<ChargingStationPushStatusService> {
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<String, Object> map) {
return AjaxResult.error("场站编辑回调接口失败:" + cause.getMessage());
}
@Override
public AjaxResult saveStationStatus(Map<String, Object> map) {
return AjaxResult.error("场站保存回调接口失败:" + cause.getMessage());
}
};
}
}