update 电单车协议

This commit is contained in:
Guoqs
2024-09-20 10:06:31 +08:00
parent 78737a1411
commit e0d2a7475c
2 changed files with 64 additions and 7 deletions

View File

@@ -5,11 +5,15 @@ import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.ebike.EBikeDataProtocol;
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
import com.jsowell.common.enums.ebike.PortStatusEnum;
import com.jsowell.common.enums.ykc.OrderStatusEnum;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.netty.factory.EBikeOperateFactory;
import com.jsowell.pile.domain.OrderBasicInfo;
import com.jsowell.pile.domain.ebike.EBikeCommandEnum;
import com.jsowell.pile.domain.ebike.deviceupload.EBikeMessageCmd06;
import com.jsowell.pile.service.OrderBasicInfoService;
import com.jsowell.pile.service.PileBasicInfoService;
import com.jsowell.pile.service.PileConnectorInfoService;
import io.netty.channel.ChannelHandlerContext;
@@ -17,6 +21,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Objects;
/**
* 端口充电时功率心跳包
*/
@@ -31,6 +38,9 @@ public class PowerHeartbeatHandler extends AbstractEBikeHandler {
@Autowired
private PileBasicInfoService pileBasicInfoService;
@Autowired
private OrderBasicInfoService orderBasicInfoService;
@Override
public void afterPropertiesSet() throws Exception {
EBikeOperateFactory.register(type, this);
@@ -52,8 +62,6 @@ public class PowerHeartbeatHandler extends AbstractEBikeHandler {
log.info("端口充电时功率心跳包:{}", JSON.toJSONString(message));
// 更新枪口状态
updatePileStatus(message);
// 保存实时监控数据
saveRealTimeMonitorData(message);
return getResult(dataProtocol, Constants.zeroByteArray);
}
@@ -67,13 +75,22 @@ public class PowerHeartbeatHandler extends AbstractEBikeHandler {
realTimeMonitorData.setPileSn(message.getPhysicalId() + "");
realTimeMonitorData.setConnectorCode(message.getConnectorCode());
realTimeMonitorData.setPileConnectorCode(realTimeMonitorData.getPileSn() + realTimeMonitorData.getConnectorCode());
realTimeMonitorData.setTransactionCode(message.getOrderCode());
realTimeMonitorData.setTransactionCode(message.getTransactionCode());
realTimeMonitorData.setConnectorStatus(message.getPortStatus());
realTimeMonitorData.setOutputVoltage(message.getVoltage());
realTimeMonitorData.setOutputCurrent(message.getCurrent());
// realTimeMonitorData.setOutputPower("");
realTimeMonitorData.setDateTime(DateUtils.getDateTime());
String portStatus = PortStatusEnum.eBikeStatusTransformDBStatus(message.getPortStatus());
realTimeMonitorData.setConnectorStatus(portStatus);
realTimeMonitorData.setOutputPower(message.getRealTimePower());
realTimeMonitorData.setBatteryMaxTemperature(message.getAmbientTemperature());
realTimeMonitorData.setSumChargingTime(message.getChargingTime());
realTimeMonitorData.setTimeRemaining(message.getTimePeriodElectricity());
realTimeMonitorData.setChargingDegree(message.getMaxPower());
realTimeMonitorData.setLossDegree(message.getMinPower());
realTimeMonitorData.setChargingAmount(message.getTotalUsedElectricity());
realTimeMonitorData.setHomingFlag(message.getStartMode());
realTimeMonitorData.setGunLineTemperature(message.getPortTemperature());
pileBasicInfoService.saveRealTimeMonitorData2Redis(realTimeMonitorData);
}
@@ -85,6 +102,46 @@ public class PowerHeartbeatHandler extends AbstractEBikeHandler {
String pileSn = message.getPhysicalId() + "";
String connectorCode = message.getConnectorCode();
String portStatus = message.getPortStatus();
String transactionCode = message.getTransactionCode();
if (StringUtils.equals(portStatus, String.valueOf(PortStatusEnum.CHARGING.getValue()))) {
// 默认保存到redis
boolean saveRedisFlag = true;
// 查询数据库中该订单当前信息
OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByTransactionCode(transactionCode);
if (Objects.nonNull(orderInfo)) {
if (StringUtils.equals(orderInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())
|| StringUtils.equals(orderInfo.getOrderStatus(), OrderStatusEnum.STAY_SETTLEMENT.getValue())) {
// 在订单状态为 订单完成或待结算,不保存
saveRedisFlag = false;
}
boolean updateFlag = false;
if (StringUtils.equals(orderInfo.getOrderStatus(), OrderStatusEnum.NOT_START.getValue())
|| StringUtils.equals(orderInfo.getOrderStatus(), OrderStatusEnum.ABNORMAL.getValue())
|| StringUtils.equals(orderInfo.getOrderStatus(), OrderStatusEnum.STAY_SETTLEMENT.getValue())) {
updateFlag = true;
// 如果是未启动状态或者异常状态, 修改这个订单状态为充电中 2023年7月7日新增 如果是待结算状态,也改为充电中
orderInfo.setOrderStatus(OrderStatusEnum.IN_THE_CHARGING.getValue());
}
// 如果原来没有开始充电时间就保存当前时间为开始充电时间
if (orderInfo.getChargeStartTime() == null) {
updateFlag = true;
orderInfo.setChargeStartTime(new Date());
}
if (updateFlag) {
orderBasicInfoService.updateOrderBasicInfo(orderInfo);
}
}
// 充电时保存实时数据到redis
if (saveRedisFlag) {
saveRealTimeMonitorData(message);
}
}
pileConnectorInfoService.updateConnectorStatus(pileSn + connectorCode, PortStatusEnum.eBikeStatusTransformDBStatus(portStatus));
}