diff --git a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java index 28b0b6578..9a19fb2c1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java @@ -643,13 +643,14 @@ public class PileService { vo = new PersonPileConnectorSumInfoVO(); vo.setSourceType(personalChargingRecord.getSourceType()); if (personalChargingRecord.getChargeStartTime() != null && personalChargingRecord.getChargeEndTime() != null){ - vo.setChargeStartTime(DateUtils.dateTime(personalChargingRecord.getChargeStartTime())); - vo.setChargeEndTime(DateUtils.dateTime(personalChargingRecord.getChargeEndTime())); + vo.setChargeStartTime(DateUtils.formatDateTime(personalChargingRecord.getChargeStartTime())); + vo.setChargeEndTime(DateUtils.formatDateTime(personalChargingRecord.getChargeEndTime())); String datePoor = DateUtils.getDatePoor(personalChargingRecord.getChargeEndTime(), personalChargingRecord.getChargeStartTime()); vo.setSumChargingTime(datePoor); } vo.setMemberId(personalChargingRecord.getMemberId()); vo.setSumChargingDegree(personalChargingRecord.getTotalUsedElectricity().toString()); + vo.setStopReasonMsg(personalChargingRecord.getReason()); list.add(vo); } return PageResponse.builder() diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java index 567826722..437d40747 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java @@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; +import org.springframework.util.StopWatch; import java.math.BigDecimal; import java.util.List; @@ -122,6 +123,8 @@ public class LoginRequestHandler extends AbstractYkcHandler { // 阻止重复帧 return null; } + StopWatch stopWatch = new StopWatch("LoginRequestHandler"); + stopWatch.start("解析数据"); // 获取消息体 byte[] msgBody = ykcDataProtocol.getMsgBody(); @@ -190,10 +193,10 @@ public class LoginRequestHandler extends AbstractYkcHandler { .iccid(iccid) .business(business) .build(); - + stopWatch.stop(); // 结果(默认 0x01:登录失败) byte[] flag = Constants.oneByteArray; - + stopWatch.start("登录逻辑"); // 通过桩编码SN查询数据库,如果有数据,则登录成功,否则登录失败 PileBasicInfo pileBasicInfo = null; try { @@ -276,7 +279,8 @@ public class LoginRequestHandler extends AbstractYkcHandler { log.error("保存报文失败pileSn:{}", pileSn, e); } }, executor); - + stopWatch.stop(); + log.info("0x01登录耗时:{}, 详细信息:{}", stopWatch.getTotalTimeMillis(), stopWatch.prettyPrint()); // 消息体 byte[] messageBody = Bytes.concat(pileSnByte, flag); return getResult(ykcDataProtocol, messageBody); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java index ad7971900..641edecae 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java @@ -57,7 +57,7 @@ public class YKCBusinessServiceImpl implements YKCBusinessService { if (StringUtils.isBlank(pileSn)) { return; } - log.info("充电桩退出:{}, channelId:{}", pileSn, PileChannelEntity.getChannelByPileSn(pileSn).channel().id()); + log.info("充电桩退出:{}, 类型:主动断开链接, channelId:{}", pileSn, PileChannelEntity.getChannelByPileSn(pileSn).channel().id()); // 充电桩断开连接,所有枪口都设置为【离线】 pileConnectorInfoService.updateConnectorStatusByPileSn(pileSn, PileConnectorDataBaseStatusEnum.OFF_NETWORK.getValue()); @@ -68,7 +68,7 @@ public class YKCBusinessServiceImpl implements YKCBusinessService { // 记录充电桩退出msg // 保存报文 String type = YKCFrameTypeCode.PILE_LOG_OUT.getCode() + ""; - String jsonMsg = YKCFrameTypeCode.PILE_LOG_OUT.getValue(); + String jsonMsg = YKCFrameTypeCode.PILE_LOG_OUT.getValue() + ": 充电桩主动断开链接"; pileMsgRecordService.save(pileSn, pileSn, type, jsonMsg, ""); // 删除桩编号和channel的关系 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java index 691fc0e6f..6e01bee97 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java @@ -12,6 +12,7 @@ import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.GroundLockData; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; +import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; @@ -82,6 +83,9 @@ public class PileConnectorInfoServiceImpl implements PileConnectorInfoService { @Autowired private ThirdPartyStationRelationService thirdPartyStationRelationService; + @Autowired + private PileMsgRecordService pileMsgRecordService; + @Autowired private PileStationInfoService pileStationInfoService; @@ -863,14 +867,25 @@ public class PileConnectorInfoServiceImpl implements PileConnectorInfoService { */ @Override public boolean checkPileOffLine(String pileSn) { + boolean flag = false; // 获取桩最后连接时间,最后连接到平台的时间在3分钟之前,判定为离线 String lastConnectionTime = redisCache.getCacheObject(CacheConstants.PILE_LAST_CONNECTION + pileSn); if (StringUtils.isBlank(lastConnectionTime)) { // 没有最后连接时间,返回离线 - return true; + flag = true; + } else { + long l = DateUtils.intervalTime(lastConnectionTime, DateUtils.getDateTime()); + if (l > 3L) { + // 超过3分钟,返回离线 + flag = true; + } } - long l = DateUtils.intervalTime(lastConnectionTime, DateUtils.getDateTime()); - return l > 3L; + if (flag) { + String type = YKCFrameTypeCode.PILE_LOG_OUT.getCode() + ""; + String jsonMsg = YKCFrameTypeCode.PILE_LOG_OUT.getValue() + ": 超过3分钟无通信, 判断离线!"; + pileMsgRecordService.save(pileSn, pileSn, type, jsonMsg, ""); + } + return flag; } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java index 80ef50bb7..b654ffb78 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java @@ -225,12 +225,16 @@ public class PileMsgRecordServiceImpl implements PileMsgRecordService { // 枪口编号 String pileConnectorCode = jsonObject.getString("pileSn") + jsonObject.getString("connectorCode"); + String stopReason = jsonObject.getString("stopReasonMsg"); + return "订单号:" + orderCode + ", " + "交易流水号:" + transactionCode + ", " + "枪口编号:" + pileConnectorCode + ", " + "充电度数:" + totalElectricity + ", " + "消费金额:" + consumptionAmount + ", " + "开始时间:" + startTime + ", " + - "结束时间:" + endTime; + "结束时间:" + endTime + ", " + + "停止原因:" + stopReason + ; } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java index bd39b7c52..6527de0da 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java @@ -46,4 +46,9 @@ public class PersonPileConnectorSumInfoVO { * 来源(4G/BT) sourceType */ private String sourceType; + + /** + * 停止原因 + */ + private String stopReasonMsg; } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChargeAlgorithmService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChargeAlgorithmService.java index 806680454..aa597e21a 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChargeAlgorithmService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChargeAlgorithmService.java @@ -1,5 +1,12 @@ package com.jsowell.thirdparty.platform.service.impl; +import com.jsowell.common.constant.Constants; +import com.jsowell.common.util.StringUtils; +import com.jsowell.pile.domain.OrderBasicInfo; +import com.jsowell.pile.service.OrderBasicInfoService; +import com.jsowell.pile.vo.uniapp.customer.OrderVO; +import com.jsowell.thirdparty.platform.domain.ChargeAlgorithmData; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -10,4 +17,69 @@ import org.springframework.stereotype.Service; */ @Service public class ChargeAlgorithmService { + + @Autowired + private OrderBasicInfoService orderBasicInfoService; + + /** + * 推送充电订单数据 + * @param orderCode + */ + public void pushOrderInfo(String orderCode) { + // 根据订单号查询订单信息 + OrderVO orderVO = orderBasicInfoService.getChargeOrderInfoByOrderCode(orderCode); + + ChargeAlgorithmData data = ChargeAlgorithmData.builder() + .orderCode(orderCode) + .initSoc(Constants.zero) + .currentSoc(Constants.zero) + .alarmCode(Constants.ZERO) + .currentServiceFee(String.valueOf(orderVO.getTotalServiceAmount())) + .currentTotalFee(String.valueOf(orderVO.getOrderAmount())) + .totalCharge(orderVO.getTotalPower()) + .totalChargeTime(Integer.parseInt(orderVO.getChargingTime())) + .remainChargeTime(Constants.zero) + // .maxAllowElectricity() + // .singleMaxAllowVoltage() + // .dcv() + // .dca() + // .bmsDemandVoltage() + // .bmsDemandElectricity() + // .bmsChargeMode() + // .readBeforeCharge() + // .readCurrentCharge() + // .beginTime() + // .maxAllowTemp() + // .chargePower() + // .ratedCapacity() + // .nominalEnergy() + // .ratedVoltage() + // .singleMaxVoltage() + // .singleMinVoltage() + // .singleMaxTemp() + // .ventTemp() + // .environmentTemp() + // .gunTemp() + // .doorStatus() + // .bmsVersion() + // .measuringChargeVoltage() + // .measuringChargeElectricity() + // .maxSingleVoltageGroupNum() + // .maxSingleVoltageNum() + // .maxTempPointNum() + // .minTempPointNum() + // .batteryType() + // .batteryInsulation() + // .maxAllowTotalVoltage() + // .beforeChargeTotalVoltage() + + .build(); + + if (StringUtils.isNotBlank(orderVO.getStartSoc())) { + data.setInitSoc(Integer.parseInt(orderVO.getStartSoc())); + } + if (StringUtils.isNotBlank(orderVO.getEndSoc())) { + data.setCurrentSoc(Integer.parseInt(orderVO.getEndSoc())); + } + } }