package com.ruoyi.integration.drainage; import com.alibaba.fastjson.JSON; import com.alibaba.nacos.common.utils.JacksonUtils; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.vo.StartChargeResult; import com.ruoyi.integration.drainage.kuaidian.TCECKDUtil; import com.ruoyi.integration.drainage.kuaidian.model.*; import com.ruoyi.integration.drainage.model.*; import com.ruoyi.integration.drainage.model.enu.*; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.AddTripartitePlatformOrder; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import com.ruoyi.other.api.domain.Operator; import com.ruoyi.other.api.feignClient.OperatorClient; import com.ruoyi.other.api.feignClient.SystemConfigurationClient; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.*; import java.util.stream.Collectors; /** * @author zhibing.pu * @Date 2025/1/21 17:52 */ @Slf4j @Component public class TCECPushUtil { @Resource private ChargingGunClient chargingGunClient; @Resource private OperatorClient operatorClient; @Autowired private TCECSuperviseUtil tcecSuperviseUtil; private final static String operatorId = "906171535"; /** * 推送充电设备接口状态信息 * @param chargingGun * @return */ public R pushSuperviseNotificationStationStatus(TChargingGun chargingGun){ ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); connectorStatusInfo.setOperatorID(operatorId); connectorStatusInfo.setEquipmentOwnerID(operatorId); connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); if (chargingGun.getEquipmentClassification()!=null){ connectorStatusInfo.setEquipmentClassification(chargingGun.getEquipmentClassification()); }else { connectorStatusInfo.setEquipmentClassification(1); } switch (chargingGun.getStatus()){ case 1: connectorStatusInfo.setStatus(0); break; case 2: connectorStatusInfo.setStatus(1); break; case 3: connectorStatusInfo.setStatus(2); break; case 4: connectorStatusInfo.setStatus(3); break; case 5: connectorStatusInfo.setStatus(3); break; case 6: connectorStatusInfo.setStatus(4); break; case 7: connectorStatusInfo.setStatus(255); break; } connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); tcecSuperviseUtil.notificationStationStatus(new Operator(), connectorStatusInfo); return R.ok(); } /** * 推送充电状态信息 * @param chargingOrder * @return */ public R pushSuperviseNotificationEquipChargeStatus(TChargingOrder chargingOrder){ SupEquipChargeStatus supEquipChargeStatus = new SupEquipChargeStatus(); supEquipChargeStatus.setOperatorID(operatorId); supEquipChargeStatus.setEquipmentOwnerID(operatorId); supEquipChargeStatus.setStationID(String.valueOf(chargingOrder.getSiteId())); supEquipChargeStatus.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); supEquipChargeStatus.setOrderNo(operatorId+chargingOrder.getCode()); switch (chargingOrder.getStatus()){ case 2: supEquipChargeStatus.setConnectorStatus(1); break; case 3: supEquipChargeStatus.setConnectorStatus(2); break; case 4: supEquipChargeStatus.setConnectorStatus(3); break; case 5: supEquipChargeStatus.setConnectorStatus(4); break; } TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); supEquipChargeStatus.setConnectorID(chargingGun.getFullNumber()); supEquipChargeStatus.setEquipmentClassification(1); supEquipChargeStatus.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); switch (chargingGun.getStatus()){ case 1: supEquipChargeStatus.setConnectorStatus(0); break; case 2: supEquipChargeStatus.setConnectorStatus(1); break; case 3: supEquipChargeStatus.setConnectorStatus(2); break; case 4: supEquipChargeStatus.setConnectorStatus(3); break; case 5: supEquipChargeStatus.setConnectorStatus(3); break; case 6: supEquipChargeStatus.setConnectorStatus(4); break; case 7: supEquipChargeStatus.setConnectorStatus(255); break; } supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent()); supEquipChargeStatus.setSOC(StringUtils.hasLength(chargingOrder.getEndSoc())?new BigDecimal(chargingOrder.getEndSoc()):new BigDecimal("1")); supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence()); tcecSuperviseUtil.notificationSupEquipChargeStatus(new Operator(), supEquipChargeStatus); return R.ok(); } /** * 推送充电订单信息 * @param chargingOrder * @return */ public R pushSuperviseNotificationChargeOrderInfo(TChargingOrder chargingOrder){ SupChargeOrderInfo supChargeOrderInfo = new SupChargeOrderInfo(); supChargeOrderInfo.setOperatorID(operatorId); supChargeOrderInfo.setEquipmentOwnerID(operatorId); supChargeOrderInfo.setStationID(String.valueOf(chargingOrder.getSiteId())); supChargeOrderInfo.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); supChargeOrderInfo.setOrderNo(operatorId+chargingOrder.getCode()); TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); supChargeOrderInfo.setConnectorID(chargingGun.getFullNumber()); supChargeOrderInfo.setEquipmentClassification(1); supChargeOrderInfo.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); supChargeOrderInfo.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); supChargeOrderInfo.setEndTime(chargingOrder.getEndTime() != null ? chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); supChargeOrderInfo.setTotalPower(chargingOrder.getElectrovalence()); supChargeOrderInfo.setTotalElecMoney(chargingOrder.getElectrovalence()); supChargeOrderInfo.setTotalServiceMoney(chargingOrder.getServiceCharge()); supChargeOrderInfo.setTotalMoney(chargingOrder.getOrderAmount()); switch (chargingOrder.getEndMode()){ case 0: supChargeOrderInfo.setStopReason(5); supChargeOrderInfo.setStopDesc("异常终止"); break; case 1: supChargeOrderInfo.setStopReason(0); supChargeOrderInfo.setStopDesc("用户手动停止充电"); break; case 2: supChargeOrderInfo.setStopReason(1); supChargeOrderInfo.setStopDesc("客户归属地运营商平台停止充电"); break; case 3: supChargeOrderInfo.setStopReason(1); supChargeOrderInfo.setStopDesc("费用不足中止"); break; } tcecSuperviseUtil.notificationChargeOrderInfo(new Operator(), supChargeOrderInfo); return R.ok(); } }