diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java index 4d73641d7..0741c89e1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java @@ -4,14 +4,12 @@ import com.alibaba.fastjson2.JSON; import com.google.common.collect.ImmutableMap; import com.jsowell.common.UserAgentUtils; import com.jsowell.common.annotation.Anonymous; -import com.jsowell.common.constant.Constants; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.StringUtils; -import com.jsowell.pile.domain.PileFirmwareInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.PileBasicInfoService; import com.jsowell.pile.service.PileFirmwareInfoService; @@ -97,7 +95,7 @@ public class PersonPileController extends BaseController { */ @RequestMapping("/pileMemberBindingForBT") public RestApiResponse pileMemberBindingForBT(HttpServletRequest request, @RequestBody PileMemberBindingDTO dto) { - logger.info("绑定个人桩信息(蓝牙) params:{}", JSON.toJSONString(dto)); + // logger.info("绑定个人桩信息(蓝牙) params:{}", JSON.toJSONString(dto)); RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); @@ -111,7 +109,7 @@ public class PersonPileController extends BaseController { logger.error("绑定个人桩信息(蓝牙) error,", exception); response = new RestApiResponse<>(ReturnCodeEnum.CODE_BINDING_PERSONAL_PILE_ERROR); } - logger.info("绑定个人桩信息(蓝牙) result:{}", response); + logger.info("绑定个人桩信息(蓝牙), params:{}, result:{}", JSON.toJSONString(dto), JSON.toJSONString(response)); return response; } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 74910c232..6f15e2f76 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -1474,17 +1474,29 @@ public class OrderService { // record.setReservationEndTime(DateUtils.parseDate(dto.getReservationEndTime())); // record.setStartSoc(dto.getst()); // record.setEndSoc(dto.getEndSoc()); - record.setTotalUsedElectricity(new BigDecimal(dto.getTotalEnergy())); - record.setSharpUsedElectricity(new BigDecimal(dto.getEnergySharp())); - record.setPeakUsedElectricity(new BigDecimal(dto.getEnergyPeak())); - record.setFlatUsedElectricity(new BigDecimal(dto.getEnergyFlat())); - record.setValleyUsedElectricity(new BigDecimal(dto.getEnergyValley())); - record.setReason(dto.getStopReason()); + record.setAmmeterTotalStart(dto.getStartKwh()); + record.setAmmeterTotalEnd(dto.getStopKwh()); + record.setTotalUsedElectricity(StringUtils.isNotBlank(dto.getTotalEnergy()) ? new BigDecimal(dto.getTotalEnergy()) : BigDecimal.ZERO); + record.setSharpUsedElectricity(StringUtils.isNotBlank(dto.getEnergySharp()) ? new BigDecimal(dto.getEnergySharp()) : BigDecimal.ZERO); + record.setPeakUsedElectricity(StringUtils.isNotBlank(dto.getEnergyPeak()) ? new BigDecimal(dto.getEnergyPeak()) : BigDecimal.ZERO); + record.setFlatUsedElectricity(StringUtils.isNotBlank(dto.getEnergyFlat()) ? new BigDecimal(dto.getEnergyFlat()) : BigDecimal.ZERO); + record.setValleyUsedElectricity(StringUtils.isNotBlank(dto.getEnergyValley()) ? new BigDecimal(dto.getEnergyValley()) : BigDecimal.ZERO); + if (StringUtils.isNotBlank(dto.getStopReason())) { + int i = Integer.parseInt(dto.getStopReason(), 16); + String stopReasonMsg = YKCChargingStopReasonEnum.getMsgByCode(i); + record.setReason(stopReasonMsg); + } + record.setTradeDate(DateUtils.parseDate(dto.getTradeTime())); + record.setSourceType("BT"); record.setCreateBy(dto.getMemberId()); record.setCreateTime(new Date()); // record.setUpdateBy(dto.getUpdateBy()); // record.setUpdateTime(new Date()); record.setDelFlag(DelFlagEnum.NORMAL.getValue()); - personalChargingRecordService.insertSelective(record); + personalChargingRecordService.insertOrUpdateSelective(record); + } + + public static void main(String[] args) { + } } 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 d3a983084..9a19fb2c1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java @@ -641,14 +641,16 @@ public class PileService { PersonPileConnectorSumInfoVO vo; for (PersonalChargingRecord personalChargingRecord : pageInfo.getList()) { 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-common/src/main/java/com/jsowell/common/enums/ykc/YKCChargingStopReasonEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/YKCChargingStopReasonEnum.java index c9a0f2e29..6a12ff8d8 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/YKCChargingStopReasonEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/YKCChargingStopReasonEnum.java @@ -115,7 +115,6 @@ public enum YKCChargingStopReasonEnum { ; - private int code; private String msg; 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/domain/PersonalChargingRecord.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PersonalChargingRecord.java index ece957c1f..2958eb285 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PersonalChargingRecord.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PersonalChargingRecord.java @@ -1,7 +1,5 @@ package com.jsowell.pile.domain; -import java.math.BigDecimal; -import java.util.Date; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -9,9 +7,12 @@ import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import lombok.experimental.SuperBuilder; +import java.math.BigDecimal; +import java.util.Date; + /** - * 个人充电桩的充电记录 - */ + * 个人充电桩的充电记录 + */ @Data @Accessors(chain = true) @SuperBuilder @@ -20,157 +21,177 @@ import lombok.experimental.SuperBuilder; @NoArgsConstructor public class PersonalChargingRecord { /** - * 主键 - */ + * 主键 + */ private Integer id; /** - * 交易流水号 - */ + * 交易流水号 + */ private String transactionCode; /** - * 订单状态(0-未启动;1-充电中;2-待结算;3-待补缴;4-异常;5-可疑;6-订单完成;7-超时关闭) - */ + * 订单状态(0-未启动;1-充电中;2-待结算;3-待补缴;4-异常;5-可疑;6-订单完成;7-超时关闭) + */ private String status; /** - * 会员id - */ + * 会员id + */ private String memberId; /** - * 站点id - */ + * 站点id + */ private String stationId; /** - * 运营商id - */ + * 运营商id + */ private String merchantId; /** - * 充电桩sn - */ + * 充电桩sn + */ private String pileSn; /** - * 充电桩枪口号 - */ + * 充电桩枪口号 + */ private String connectorCode; /** - * 充电桩枪口编号 - */ + * 充电桩枪口编号 + */ private String pileConnectorCode; /** - * 卡启动时的卡号 - */ + * 卡启动时的卡号 + */ private String logicCard; /** - * vin启动时的vin码 - */ + * vin启动时的vin码 + */ private String vinCode; /** - * 启动方式(0-后管启动;1-用户app启动;2-卡启动;3-离线卡启动; 4-第三方平台启动; 5-车辆vin码启动) - */ + * 启动方式(0-后管启动;1-用户app启动;2-卡启动;3-离线卡启动; 4-第三方平台启动; 5-车辆vin码启动) + */ private String startMode; /** - * 车牌号码 - */ + * 车牌号码 + */ private String plateNumber; /** - * 充电开始时间 - */ + * 充电开始时间 + */ private Date chargeStartTime; /** - * 充电结束时间 - */ + * 充电结束时间 + */ private Date chargeEndTime; /** - * 启动类型(now-立即启动;reservation-预约启动) - */ + * 启动类型(now-立即启动;reservation-预约启动) + */ private String startType; /** - * 预约开始时间 - */ + * 预约开始时间 + */ private Date reservationStartTime; /** - * 预约结束时间 - */ + * 预约结束时间 + */ private Date reservationEndTime; /** - * 开始SOC - */ + * 开始SOC + */ private String startSoc; /** - * 结束SOC - */ + * 结束SOC + */ private String endSoc; /** - * 总用电量 - */ + * 电表总起值 + */ + private String ammeterTotalStart; + + /** + * 电表总止值 + */ + private String ammeterTotalEnd; + + /** + * 总用电量 + */ private BigDecimal totalUsedElectricity; /** - * 尖时段用电量 - */ + * 尖时段用电量 + */ private BigDecimal sharpUsedElectricity; /** - * 峰时段用电量 - */ + * 峰时段用电量 + */ private BigDecimal peakUsedElectricity; /** - * 平时段用电量 - */ + * 平时段用电量 + */ private BigDecimal flatUsedElectricity; /** - * 谷时段用电量 - */ + * 谷时段用电量 + */ private BigDecimal valleyUsedElectricity; /** - * 异常原因 - */ + * 异常原因 + */ private String reason; /** - * 创建人 - */ + * 交易日期 + */ + private Date tradeDate; + + /** + * 来源(4G/BT) + */ + private String sourceType; + + /** + * 创建人 + */ private String createBy; /** - * 创建时间 - */ + * 创建时间 + */ private Date createTime; /** - * 更新人 - */ + * 更新人 + */ private String updateBy; /** - * 更新时间 - */ + * 更新时间 + */ private Date updateTime; /** - * 删除标识(0-正常;1-删除) - */ + * 删除标识(0-正常;1-删除) + */ private String delFlag; } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/BluetoothChargingRecordDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/BluetoothChargingRecordDTO.java index 9bd97a07e..4be34f887 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/BluetoothChargingRecordDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/BluetoothChargingRecordDTO.java @@ -97,7 +97,6 @@ public class BluetoothChargingRecordDTO { @JsonProperty(value = "MoneyValley") private String moneyValley; - // 电表总起值 @JsonProperty(value = "StartKwh") private String startKwh; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java index c73a96778..944c6d106 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java @@ -8,7 +8,6 @@ import com.jsowell.pile.dto.QueryPersonPileDTO; import java.util.List; public interface PersonalChargingRecordService{ - int deleteByPrimaryKey(Integer id); int insert(PersonalChargingRecord record); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java index 8a93adc98..9dafd5ca9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java @@ -132,7 +132,7 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord chargingRecord.setTotalUsedElectricity(totalUsedElectricity); chargingRecord.setReason(data.getStopReasonMsg()); // 创建或更新 - personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord); + this.insertOrUpdateSelective(chargingRecord); } /** @@ -176,7 +176,7 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord // chargingRecord.setTotalUsedElectricity(totalUsedElectricity); // chargingRecord.setReason(data.getStopReasonMsg()); // 创建或更新 - personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord); + this.insertOrUpdateSelective(chargingRecord); } @Override 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 99458c970..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 @@ -41,4 +41,14 @@ public class PersonPileConnectorSumInfoVO { * 累计充电时长 */ private String sumChargingTime; + + /** + * 来源(4G/BT) sourceType + */ + private String sourceType; + + /** + * 停止原因 + */ + private String stopReasonMsg; } diff --git a/jsowell-pile/src/main/resources/mapper/pile/PersonalChargingRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PersonalChargingRecordMapper.xml index 47cac591f..7931d6c52 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PersonalChargingRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PersonalChargingRecordMapper.xml @@ -24,12 +24,16 @@ + + + + @@ -41,9 +45,9 @@ id, transaction_code, `status`, member_id, station_id, merchant_id, pile_sn, connector_code, pile_connector_code, logic_card, vin_code, start_mode, plate_number, charge_start_time, charge_end_time, start_type, reservation_start_time, reservation_end_time, start_soc, - end_soc, total_used_electricity, sharp_used_electricity, peak_used_electricity, flat_used_electricity, - valley_used_electricity, reason, create_by, create_time, update_by, update_time, - del_flag + end_soc, ammeter_total_start, ammeter_total_end, total_used_electricity, sharp_used_electricity, + peak_used_electricity, flat_used_electricity, valley_used_electricity, reason, trade_date, + source_type, create_by, create_time, update_by, update_time, del_flag