diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/UploadRealTimeMonitorHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/UploadRealTimeMonitorHandler.java index 37d050de4..6c03c31de 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/UploadRealTimeMonitorHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/UploadRealTimeMonitorHandler.java @@ -16,6 +16,8 @@ import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.service.PileBasicInfoService; import com.jsowell.pile.service.OrderBasicInfoService; import com.jsowell.thirdparty.common.CommonService; +import com.jsowell.thirdparty.common.NotificationDTO; +import com.jsowell.thirdparty.common.NotificationService; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -297,13 +299,20 @@ public class UploadRealTimeMonitorHandler extends AbstractHandler { } // 异步推送第三方平台实时数据 - // pushToThirdPartyPlatforms(pileSn, connectorCode, connectorStatus, realTimeMonitorData, transactionCode); CompletableFuture.runAsync(() -> { try { commonService.pushRealTimeInfo(pileSn, connectorCode, connectorStatus, realTimeMonitorData, transactionCode); } catch (Exception e) { log.error("统一推送第三方平台实时数据 error, ", e); - e.printStackTrace(); + } + }); + + // 异步推送第三方平台实时数据V2 + CompletableFuture.runAsync(() -> { + try { + commonService.pushRealTimeInfoV2(pileSn, connectorCode, connectorStatus, realTimeMonitorData, transactionCode); + } catch (Exception e) { + log.error("统一推送第三方平台实时数据V2 error, ", e); } }); diff --git a/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java index 430746292..55caadbbe 100644 --- a/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/thirdparty/mapper/ThirdpartySecretInfoMapper.java @@ -66,5 +66,10 @@ public interface ThirdpartySecretInfoMapper { ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType); + /** + * 根据站点id查询对接的第三方平台列表 + * @param stationId 站点id + * @return + */ List queryStationToPlatformList(String stationId); } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java index 19661b09b..c3e7b6597 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java @@ -27,6 +27,7 @@ import com.jsowell.pile.dto.ThirdPartyCommonStopChargeDTO; import com.jsowell.pile.dto.lutongyunting.BindCouponDTO; import com.jsowell.pile.dto.ruanjie.UseCouponDTO; import com.jsowell.pile.service.*; +import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.huawei.QueryStartChargeVO; import com.jsowell.pile.vo.web.PileStationVO; @@ -39,11 +40,13 @@ import com.jsowell.thirdparty.platform.util.HttpRequestUtil; import com.jsowell.thirdparty.lutongyunting.service.LTYTService; import com.jsowell.thirdparty.nanrui.service.NRService; import com.jsowell.thirdparty.ruanjie.service.RJService; +import com.jsowell.thirdparty.service.ThirdpartySecretInfoService; import com.jsowell.thirdparty.xindiantu.service.XDTService; import com.jsowell.thirdparty.yongchengboche.dto.YCBCGetTokenDTO; import com.jsowell.thirdparty.yongchengboche.service.YCBCService; import com.jsowell.thirdparty.zhongdianlian.service.ZDLService; import lombok.extern.slf4j.Slf4j; +import lombok.val; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,6 +55,7 @@ import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** @@ -115,6 +119,12 @@ public class CommonService { @Autowired private RedisCache redisCache; + @Autowired + private ThirdpartySecretInfoService thirdpartySecretInfoService; + + @Autowired + private NotificationService notificationService; + /** * 将站点--第三方平台类型对应关系存入关系表 * @param dto @@ -355,6 +365,49 @@ public class CommonService { } } + /** + * 推送实时数据到第三方平台 + * @param pileSn + * @param connectorCode + * @param connectorStatus + * @param realTimeMonitorData + * @param transactionCode + * @throws UnsupportedEncodingException + */ + public void pushRealTimeInfoV2(String pileSn, String connectorCode, String connectorStatus, + RealTimeMonitorData realTimeMonitorData, String transactionCode) throws UnsupportedEncodingException { + // 推送第三方平台,先通过桩编号查出站点信息 pushToThirdPartyPlatforms + PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(pileSn); + + String pileConnectorCode = pileSn + connectorCode; + // 将枪口状态转换成对接平台的状态 + String changedStatus = changeConnectorStatus(connectorStatus, realTimeMonitorData.getPutGunType()); + + String stationId = String.valueOf(pileBasicInfo.getStationId()); + // 查询该站点是否推送第三方平台 + List thirdPartySecretInfoVOS = thirdpartySecretInfoService.queryStationToPlatformList(stationId); + if (CollectionUtils.isEmpty(thirdPartySecretInfoVOS)) { + return; + } + + // 查询订单信息 + OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByTransactionCode(transactionCode); + + // 推送 + for (ThirdPartySecretInfoVO thirdPartySecretInfoVO : thirdPartySecretInfoVOS) { + NotificationDTO dto = new NotificationDTO(); + dto.setStationId(stationId); + dto.setPileConnectorCode(pileConnectorCode); + dto.setStatus(changedStatus); + dto.setPlatformType(thirdPartySecretInfoVO.getPlatformType()); + if (Objects.nonNull(orderInfo)) { + dto.setOrderCode(orderInfo.getOrderCode()); + } + notificationService.notificationConnectorChargeStatus(dto); + } + + } + /** * 统一方法推送订单信息