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