package com.sandu.ximon.admin.service;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.sandu.common.execption.BusinessException;
|
import com.sandu.common.object.BaseConditionVO;
|
import com.sandu.common.service.impl.BaseServiceImpl;
|
import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
|
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3OperationReportInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3QueryReportInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.frame.inner.request.*;
|
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
|
import com.sandu.ximon.dao.domain.C3mCharging;
|
import com.sandu.ximon.dao.domain.C3mChargingCharge;
|
import com.sandu.ximon.dao.mapper.C3mChargingMapper;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* @author ZZQ
|
* C3充电桩
|
* @date 2022/3/4 9:58
|
*/
|
@Service
|
@Slf4j
|
@AllArgsConstructor
|
public class C3ChargingService extends BaseServiceImpl<C3mChargingMapper, C3mCharging> {
|
|
private final C3mChargingChargeService c3mChargingChargeService;
|
|
/**
|
* 保存上报C3充电设备心跳数据
|
*
|
* @return 是否成功
|
*/
|
public boolean saveReportData(String deviceName, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage) {
|
C3mCharging one = getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, deviceName));
|
List<C3mChargingCharge> list = c3mChargingChargeService.list(Wrappers.lambdaQuery(C3mChargingCharge.class).eq(C3mChargingCharge::getC3Id, one.getC3Id()));
|
if (list.size() == 0) {//费率表中没有此充电桩数据时 添加默认费率
|
c3mChargingChargeService.initCharge((one.getC3Id()).intValue());
|
}
|
|
if (one == null) {
|
//将设备信息添加到充电桩设备表
|
C3mCharging c3mCharging = new C3mCharging();
|
c3mCharging.setMcuUdid(deviceName);
|
c3mCharging.setC3Mac(heartBeatDataPackage.getC3Mac());
|
c3mCharging.setStatusBit(Integer.valueOf(heartBeatDataPackage.getStatusBit()));
|
c3mCharging.setDeviceTemperature(heartBeatDataPackage.getDeviceTemperature());
|
return save(c3mCharging);
|
} else {
|
one.setStatusBit(Integer.valueOf(heartBeatDataPackage.getStatusBit()));
|
one.setDeviceTemperature(heartBeatDataPackage.getDeviceTemperature());
|
return updateById(one);
|
}
|
}
|
|
/**
|
* 查询C3充电桩设备列表
|
*
|
* @return
|
*/
|
public List<C3mCharging> getC3ChargingList(BaseConditionVO baseConditionVO) {
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
return list();
|
}
|
|
/**
|
* 开始充电
|
*
|
* @param c3Mac
|
* @param chargingCapacity
|
* @param chargeAmount
|
*/
|
public String startCharging(String c3Mac, Integer chargingCapacity, Double chargeAmount) {
|
C3StartChargingReqInnerFrame c3StartChargingReqInnerFrame =
|
new C3StartChargingReqInnerFrame(c3Mac, chargingCapacity, chargeAmount);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3StartChargingReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
|
// String functionCode = commonFrame.getPayload().substring(2, 4);
|
// if (C3ChargingEnum.StartCharging.getCode().equals(functionCode)) {}
|
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 结束充电
|
*
|
* @param c3Mac
|
*/
|
public String finishCharging(String c3Mac) {
|
C3FinishChargingReqInnerFrame c3FinishChargingReqInnerFrame =
|
new C3FinishChargingReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3FinishChargingReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
|
/**
|
* 同步结束
|
*
|
* @param c3Mac
|
*/
|
public String EndOfTheSynchronization(String c3Mac) {
|
C3EndOfTheSynchronizationReqInnerFrame c3EndOfTheSynchronizationReqInnerFrame =
|
new C3EndOfTheSynchronizationReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3EndOfTheSynchronizationReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 查询版本
|
*
|
* @param c3Mac
|
*/
|
public String QueryVersion(String c3Mac) {
|
C3QueryVersionReqInnerFrame c3QueryVersionReqInnerFrame =
|
new C3QueryVersionReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3QueryVersionReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3QueryReportInnerFrame a5C3QueryReportInnerFrame = new A5C3QueryReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (a5C3QueryReportInnerFrame.isValidate()) {
|
return a5C3QueryReportInnerFrame.getVersion();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 查询心跳包间隔时间
|
*
|
* @param c3Mac
|
*/
|
public String QueryIntervalTime(String c3Mac) {
|
C3QueryIntervalTimeReqInnerFrame c3QueryIntervalTimeReqInnerFrame =
|
new C3QueryIntervalTimeReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3QueryIntervalTimeReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3QueryReportInnerFrame queryReportInnerFrame = new A5C3QueryReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (queryReportInnerFrame.isValidate()) {
|
return queryReportInnerFrame.getIntervalTime();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 查询电压/电流常数
|
*
|
* @param c3Mac
|
*/
|
public String QueryConstant(String c3Mac) {
|
C3QueryConstantReqInnerFrame c3QueryConstantReqInnerFrame =
|
new C3QueryConstantReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3QueryConstantReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3QueryReportInnerFrame queryReportInnerFrame = new A5C3QueryReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (queryReportInnerFrame.isValidate()) {
|
return queryReportInnerFrame.getConstant();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 查询地址
|
*
|
* @param c3Mac
|
*/
|
public String QueryAddress(String c3Mac) {
|
C3QueryAddressReqInnerFrame c3QueryAddressReqInnerFrame =
|
new C3QueryAddressReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3QueryAddressReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3QueryReportInnerFrame queryReportInnerFrame = new A5C3QueryReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (queryReportInnerFrame.isValidate()) {
|
return queryReportInnerFrame.getAddress();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 查询故障码
|
*
|
* @param c3Mac
|
*/
|
public String QueryFaultCode(String c3Mac) {
|
C3QueryFaultCodeReqInnerFrame c3QueryFaultCodeReqInnerFrame =
|
new C3QueryFaultCodeReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3QueryFaultCodeReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3QueryReportInnerFrame queryReportInnerFrame = new A5C3QueryReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (queryReportInnerFrame.isValidate()) {
|
return queryReportInnerFrame.getFaultCode();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 读心跳包
|
*
|
* @param c3Mac
|
*/
|
public A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage ReadTheHeartbeatPackage(String c3Mac) {
|
C3ReadTheHeartbeatPackageReqInnerFrame readTheHeartbeatPackageReqInnerFrame =
|
new C3ReadTheHeartbeatPackageReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), readTheHeartbeatPackageReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3HeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5C3HeartbeatReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (heartbeatReportInnerFrame.isValidate()) {
|
return heartbeatReportInnerFrame.getHeartBeatDataPackage();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 设置心跳包间隔时间(秒)-充电状态时/非充电状态时
|
*
|
* @param c3Mac
|
* @param setTime
|
* @return
|
*/
|
public String SetHeartbeatPacketTimeCharging(String c3Mac, int setTime, boolean flag) {
|
if (setTime <= 0) {
|
throw new BusinessException("设置的心跳包间隔时间错误!");
|
}
|
C3SetHeartbeatPacketTimeReqInnerFrame setHeartbeatPacketTimeChargingReqInnerFrame =
|
new C3SetHeartbeatPacketTimeReqInnerFrame(c3Mac, setTime, flag);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), setHeartbeatPacketTimeChargingReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 设置电压/电流常数(各一字节)(默认值0xBC64)
|
*
|
* @param c3Mac
|
* @param constant
|
* @return
|
*/
|
public String SetConstant(String c3Mac, String constant) {
|
|
C3SetConstantReqInnerFrame setConstantReqInnerFrame =
|
new C3SetConstantReqInnerFrame(c3Mac, constant);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), setConstantReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 设置地址
|
*
|
* @param c3Mac
|
* @param address
|
* @return
|
*/
|
public String SetAddress(String c3Mac, String address) {
|
if (address == null || address.length() != 8) {
|
throw new BusinessException("地址信息错误!");
|
}
|
|
C3SetAddressReqInnerFrame setAddressReqInnerFrame =
|
new C3SetAddressReqInnerFrame(c3Mac, address);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), setAddressReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 设置日历(同心跳包中的6字节日期时间)
|
*
|
* @param c3Mac
|
* @return
|
*/
|
public String SetCalendar(String c3Mac, int year, int month, int day, int hour, int min, int sec) {
|
|
|
C3SetCalendarReqInnerFrame setCalendarReqInnerFrame =
|
new C3SetCalendarReqInnerFrame(c3Mac, year, month, day, hour, min, sec);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), setCalendarReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 故障码上报清除
|
*
|
* @param c3Mac
|
* @return
|
*/
|
public String ClearedFaultCode(String c3Mac) {
|
|
|
C3ClearedFaultCodeReqInnerFrame clearedFaultCodeReqInnerFrame =
|
new C3ClearedFaultCodeReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), clearedFaultCodeReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 恢复出厂值
|
*
|
* @param c3Mac
|
* @return
|
*/
|
public String RestoreFactoryValue(String c3Mac) {
|
|
|
C3RestoreFactoryValueReqInnerFrame restoreFactoryValueReqInnerFrame =
|
new C3RestoreFactoryValueReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), restoreFactoryValueReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
|
/**
|
* 软重启
|
*
|
* @param c3Mac
|
*/
|
public String restartCharging(String c3Mac) {
|
C3RestartChargingReqInnerFrame c3RestartChargingReqInnerFrame =
|
new C3RestartChargingReqInnerFrame(c3Mac);
|
|
A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_C3_DATA.getCode(), c3RestartChargingReqInnerFrame);
|
System.out.println(a5Frame + " -----a5Frame");
|
|
CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff0a04ffff", a5Frame);
|
System.out.println(commonFrame + " -----commonFrame");
|
|
A5C3OperationReportInnerFrame operationReportInnerFrame = new A5C3OperationReportInnerFrame().transformFrame(commonFrame.getPayload());
|
|
if (operationReportInnerFrame.isValidate()) {
|
return operationReportInnerFrame.getState();
|
} else {
|
throw new BusinessException("数据校验错误,请重新请求");
|
}
|
}
|
}
|