mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
新增 甘肃平台相关Service方法
This commit is contained in:
@@ -1,40 +1,47 @@
|
||||
package com.jsowell.thirdparty.platform.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum;
|
||||
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
||||
import com.jsowell.common.enums.ykc.OrderStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.JWTUtils;
|
||||
import com.jsowell.common.util.PageUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.pile.domain.OrderBasicInfo;
|
||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||
import com.jsowell.pile.service.*;
|
||||
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
||||
import com.jsowell.pile.thirdparty.EquipmentInfo;
|
||||
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
|
||||
import com.jsowell.pile.vo.base.ConnectorInfoVO;
|
||||
import com.jsowell.pile.vo.base.MerchantInfoVO;
|
||||
import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO;
|
||||
import com.jsowell.pile.vo.web.PileConnectorInfoVO;
|
||||
import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo;
|
||||
import com.jsowell.thirdparty.lianlian.domain.StationStatusInfo;
|
||||
import com.jsowell.thirdparty.lianlian.vo.AccessTokenVO;
|
||||
import com.jsowell.thirdparty.platform.domain.SupEquipChargeStatusInfo;
|
||||
import com.jsowell.thirdparty.platform.domain.SupStationInfo;
|
||||
import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory;
|
||||
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
|
||||
import com.jsowell.thirdparty.platform.util.Cryptos;
|
||||
import com.jsowell.thirdparty.platform.util.HttpRequestUtil;
|
||||
import com.jsowell.thirdparty.platform.util.ThirdPartyPlatformUtils;
|
||||
import com.jsowell.thirdparty.service.ThirdpartySecretInfoService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 甘肃省平台
|
||||
@@ -213,21 +220,148 @@ public class GanSuPlatformServiceImpl implements ThirdPartyPlatformService {
|
||||
@Override
|
||||
public Map<String, String> queryStationStatus(QueryStationInfoDTO dto) {
|
||||
List<String> stationIds = dto.getStationIds();
|
||||
List<StationStatusInfo> StationStatusInfos = new ArrayList<>();
|
||||
List<StationStatusInfo> stationStatusInfos = new ArrayList<>();
|
||||
List<Object> connectorStatusInfos = new ArrayList<>();
|
||||
// 查询密钥信息
|
||||
ThirdPartySecretInfoVO thirdPartySecretInfoVO = getGanSuSecretInfo();
|
||||
|
||||
ConnectorStatusInfo connectorStatusInfo;
|
||||
// 根据站点idList查询
|
||||
// 根据站点idList查询枪口列表
|
||||
List<ConnectorInfoVO> list = pileConnectorInfoService.batchSelectConnectorList(stationIds);
|
||||
// 根据站点id分组
|
||||
Map<String, List<ConnectorInfoVO>> collect = list.stream()
|
||||
.collect(Collectors.groupingBy(ConnectorInfoVO::getStationId));
|
||||
// 封装参数
|
||||
for (Map.Entry<String, List<ConnectorInfoVO>> entry : collect.entrySet()) {
|
||||
String stationId = entry.getKey();
|
||||
List<ConnectorInfoVO> voList = entry.getValue();
|
||||
StationStatusInfo stationStatusInfo = new StationStatusInfo();
|
||||
|
||||
stationStatusInfo.setStationId(stationId);
|
||||
ConnectorStatusInfo connectorStatusInfo;
|
||||
for (ConnectorInfoVO connectorInfoVO : voList) {
|
||||
connectorStatusInfo = ConnectorStatusInfo.builder()
|
||||
.connectorID(connectorInfoVO.getPileConnectorCode())
|
||||
.status(Integer.parseInt(connectorInfoVO.getConnectorStatus()))
|
||||
|
||||
.build();
|
||||
connectorStatusInfos.add(connectorStatusInfo);
|
||||
}
|
||||
stationStatusInfo.setConnectorStatusInfos(connectorStatusInfos);
|
||||
|
||||
stationStatusInfos.add(stationStatusInfo);
|
||||
}
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("StationStatusInfos", stationStatusInfos);
|
||||
|
||||
return null;
|
||||
Map<String, String> resultMap = ThirdPartyPlatformUtils.generateResultMap(map, thirdPartySecretInfoVO);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备状态变化推送 notification_stationStatus
|
||||
* @param stationId 站点id
|
||||
* @param pileConnectorCode 充电桩枪口编号
|
||||
* @param status
|
||||
* @param secretInfoVO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String notificationStationStatus(String stationId, String pileConnectorCode, String status, ThirdPartySecretInfoVO secretInfoVO) {
|
||||
// 查询相关配置信息
|
||||
ThirdPartySecretInfoVO ganSuSecretInfo = getGanSuSecretInfo();
|
||||
|
||||
String operatorId = ganSuSecretInfo.getOurOperatorId();
|
||||
String operatorSecret = ganSuSecretInfo.getTheirOperatorSecret();
|
||||
String signSecret = ganSuSecretInfo.getTheirSigSecret();
|
||||
String dataSecret = ganSuSecretInfo.getTheirDataSecret();
|
||||
String dataSecretIv = ganSuSecretInfo.getTheirDataSecretIv();
|
||||
String urlAddress = ganSuSecretInfo.getTheirUrlPrefix();
|
||||
|
||||
String url = urlAddress + BusinessInformationExchangeEnum.NOTIFICATION_STATION_STATUS.getValue();
|
||||
ConnectorStatusInfo info = ConnectorStatusInfo.builder()
|
||||
.connectorID(pileConnectorCode)
|
||||
.status(Integer.parseInt(status))
|
||||
.build();
|
||||
// 调用联联平台接口
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("ConnectorStatusInfo", info);
|
||||
String jsonString = JSON.toJSONString(json);
|
||||
// 获取令牌
|
||||
String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret);
|
||||
String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送设备充电信息 notification_equip_charge_status
|
||||
* @param orderCode 订单编号
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String notificationEquipChargeStatus(String orderCode) {
|
||||
// 根据订单号查询订单信息
|
||||
OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
|
||||
ThirdPartySecretInfoVO ganSuSecretInfo = getGanSuSecretInfo();
|
||||
|
||||
String operatorId = ganSuSecretInfo.getOurOperatorId();
|
||||
String operatorSecret = ganSuSecretInfo.getTheirOperatorSecret();
|
||||
String signSecret = ganSuSecretInfo.getTheirSigSecret();
|
||||
String dataSecret = ganSuSecretInfo.getTheirDataSecret();
|
||||
String dataSecretIv = ganSuSecretInfo.getTheirDataSecretIv();
|
||||
String urlAddress = ganSuSecretInfo.getTheirUrlPrefix();
|
||||
|
||||
// 查询充电枪口状态
|
||||
PileConnectorInfoVO connectorInfo = pileConnectorInfoService.getPileConnectorInfoByConnectorCode(orderInfo.getPileConnectorCode());
|
||||
if (Objects.isNull(connectorInfo)) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_CONNECTOR_INFO_NULL_ERROR);
|
||||
}
|
||||
|
||||
String merchantId = connectorInfo.getMerchantId();
|
||||
MerchantInfoVO merchantInfoVO = pileMerchantInfoService.getMerchantInfoVO(merchantId);
|
||||
if (Objects.isNull(merchantInfoVO)) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_CONNECTOR_INFO_NULL_ERROR);
|
||||
}
|
||||
String orderStatus = orderInfo.getOrderStatus();
|
||||
if (StringUtils.equals(OrderStatusEnum.IN_THE_CHARGING.getValue(), orderStatus)) {
|
||||
// 充电中
|
||||
orderStatus = "2";
|
||||
}else if (StringUtils.equals(OrderStatusEnum.ORDER_COMPLETE.getValue(), orderStatus)) {
|
||||
// 充电完成
|
||||
orderStatus = "4";
|
||||
}
|
||||
String dateTimeNow = DateUtils.getDateTime();
|
||||
|
||||
SupEquipChargeStatusInfo supEquipChargeStatusInfo = SupEquipChargeStatusInfo.builder()
|
||||
.startChargeSeq(orderCode)
|
||||
.startChargeSeqStat(Integer.parseInt(orderStatus))
|
||||
.connectorID(orderInfo.getPileConnectorCode())
|
||||
.connectorStatus(connectorInfo.getStatus())
|
||||
.currentA(connectorInfo.getCurrent())
|
||||
.voltageA(connectorInfo.getVoltage())
|
||||
.soc(new BigDecimal(Constants.ZERO))
|
||||
.startTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, orderInfo.getChargeStartTime()))
|
||||
.endTime(dateTimeNow)
|
||||
.totalPower(connectorInfo.getInstantPower())
|
||||
.chargeDetails(new ArrayList<>())
|
||||
|
||||
.build();
|
||||
if (StringUtils.isNotBlank(connectorInfo.getSOC())) {
|
||||
supEquipChargeStatusInfo.setSoc(new BigDecimal(connectorInfo.getSOC()));
|
||||
}
|
||||
|
||||
|
||||
String url = urlAddress + BusinessInformationExchangeEnum.NOTIFICATION_EQUIP_CHARGE_STATUS.getValue();
|
||||
// 调用联联平台接口
|
||||
String jsonString = JSON.toJSONString(supEquipChargeStatusInfo);
|
||||
|
||||
// 获取令牌
|
||||
String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret);
|
||||
String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret);
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取甘肃平台密钥
|
||||
* @return
|
||||
|
||||
Reference in New Issue
Block a user