新增 甘肃平台相关Service方法

This commit is contained in:
Lemon
2024-11-07 16:09:04 +08:00
parent 23ae7ecab3
commit 345d60c227

View File

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