ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
@@ -107,6 +107,23 @@ return ResponseUtil.success(result); } /** * æ¥è¯¢æ éç */ @PostMapping("/QueryFaultCode") public ResponseVO<Object> QueryFaultCode(@RequestBody C3ChargingParam c3ChargingParam) { String result = c3ChargingService.QueryFaultCode(c3ChargingParam.getC3Mac()); return ResponseUtil.success(result); } /** * 读å¿è·³å */ @PostMapping("/ReadTheHeartbeatPackage") public ResponseVO<Object> ReadTheHeartbeatPackage(@RequestBody C3ChargingParam c3ChargingParam) { return ResponseUtil.success(c3ChargingService.ReadTheHeartbeatPackage(c3ChargingParam.getC3Mac())); } /** * 软éå¯ ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ClientController.java
@@ -16,6 +16,7 @@ import com.sandu.ximon.admin.dto.ClientDto; import com.sandu.ximon.admin.param.AddClientPrarm; import com.sandu.ximon.admin.param.AdminLoginParam; import com.sandu.ximon.admin.param.ResetClientPasswordPrarm; import com.sandu.ximon.admin.param.UpdateClientPrarm; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.service.ClientRoleRelationService; @@ -70,6 +71,16 @@ } } @PostMapping("/resetClientPassword") public ResponseVO<Object> resetClientPassword(@RequestBody @Validated ResetClientPasswordPrarm resetClientPasswordPrarm) { boolean b = clientService.resetPassword(resetClientPasswordPrarm); if (b) { return ResponseUtil.success("ä¿®æ¹æå"); } else { return ResponseUtil.fail("ä¿®æ¹å¤±è´¥"); } } @PostMapping("/delete/{id}") public ResponseVO<Object> deleteClient(@PathVariable Long id) { boolean b = clientService.deleteClient(id); ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3HeartbeatReportInnerFrame.java
@@ -98,25 +98,25 @@ return null; } this.c3Mac = hex.substring(0, 8); this.year = hex.substring(8, 10); this.month = hex.substring(10, 12); this.day = hex.substring(12, 14); this.hour = hex.substring(14, 16); this.min = hex.substring(16, 18); this.sec = hex.substring(18, 20); this.chargingPort = hex.substring(20, 24); this.statusBit = hex.substring(24, 26); this.year = parseVal(hex.substring(8, 10)); this.month = parseVal(hex.substring(10, 12)); this.day = parseVal(hex.substring(12, 14)); this.hour = parseVal(hex.substring(14, 16)); this.min = parseVal(hex.substring(16, 18)); this.sec = parseVal(hex.substring(18, 20)); this.chargingPort = parseVal(hex.substring(20, 24)); this.statusBit = parseVal(hex.substring(24, 26)); this.deviceTemperature = (parseVal(hex, 26, 28) + "." + parseVal(hex, 28, 30)); this.gridVoltage = hex.substring(30, 34); this.gridCurrent = hex.substring(34, 38); this.frequency = hex.substring(38, 42); this.powerFactor = hex.substring(42, 46); this.activePower = hex.substring(46, 50); this.reactivePower = hex.substring(50, 54); this.chargedCapacity = hex.substring(54, 58); this.reservedCapacity = hex.substring(58, 62); this.remainingAmount = hex.substring(62, 66); this.alreadyChargingTime = hex.substring(66, 72); this.gridVoltage = (parseVal(hex, 30, 32) + "." + parseVal(hex, 32, 34)); this.gridCurrent = (parseVal(hex, 34, 36) + "." + parseVal(hex, 36, 38)); this.frequency = (parseVal(hex, 38, 40) + "." + parseVal(hex, 40, 42)); this.powerFactor = (parseVal(hex, 42, 44) + "." + parseVal(hex, 44, 46)); this.activePower = (parseVal(hex, 46, 48) + "." + parseVal(hex, 48, 50)); this.reactivePower = (parseVal(hex, 50, 52) + "." + parseVal(hex, 52, 54)); this.chargedCapacity = (parseVal(hex, 54, 56) + "." + parseVal(hex, 56, 58)); this.reservedCapacity = (parseVal(hex, 58, 60) + "." + parseVal(hex, 60, 62)); this.remainingAmount = (parseVal(hex, 62, 64) + "." + parseVal(hex, 64, 66)); this.alreadyChargingTime = parseVal(hex.substring(66, 72)); return this; } @@ -124,5 +124,9 @@ private Integer parseVal(String frame, int start, int end) { return Integer.parseInt(frame.substring(start, end), 16); } private String parseVal(String hex) { return Integer.parseInt(hex, 16) + ""; } } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3QueryReportInnerFrame.java
@@ -28,6 +28,8 @@ private String constant; //æ¥è¯¢å°å(ææ¶ä¸ç¨å°ï¼ private String address; //æ éç private String faultCode; @Override public A5C3QueryReportInnerFrame transformFrame(String hex) { @@ -95,6 +97,16 @@ } setAddress(hex); } /** * æ¥è¯¢å°å(ææ¶ä¸ç¨å°ï¼ */ if (functionCode.equals(C3ChargingEnum.QueryFaultCode.getCode())) { if (hex.length() != 4) { throw new BusinessException("æ°æ®é误ï¼è¯·éæ°è¯·æ±ï¼"); } setFaultCode(hex); } } private Integer parseVal(String frame, int start, int end) { ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3QueryFaultCodeReqInnerFrame.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.sandu.ximon.admin.manager.iot.frame.inner.request; import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum; import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils; /** * @author ZZQ * @date 2022/3/3 16:43 */ public class C3QueryFaultCodeReqInnerFrame implements IRequestInnerFrame { private final String payload; public C3QueryFaultCodeReqInnerFrame(String c3Mac) { payload = c3Mac ; } @Override public String getEncodeFrame() { String functionCode = C3ChargingEnum.QueryFaultCode.getCode(); String payloadLength = "0004"; String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3ReadTheHeartbeatPackageReqInnerFrame.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.sandu.ximon.admin.manager.iot.frame.inner.request; import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ChargingEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum; import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils; /** * @author ZZQ * @date 2022/3/3 16:43 */ public class C3ReadTheHeartbeatPackageReqInnerFrame implements IRequestInnerFrame { private final String payload; public C3ReadTheHeartbeatPackageReqInnerFrame(String c3Mac) { payload = c3Mac ; } @Override public String getEncodeFrame() { String functionCode = C3ChargingEnum.ReadTheHeartbeatPackage.getCode(); String payloadLength = "0004"; String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } } ximon-admin/src/main/java/com/sandu/ximon/admin/param/ResetClientPasswordPrarm.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.sandu.ximon.admin.param; import lombok.Data; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @Data public class ResetClientPasswordPrarm { @NotNull private Long id; @NotEmpty private String oldPassword; @NotEmpty private String newPassword; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
@@ -251,6 +251,53 @@ } /** * æ¥è¯¢æ éç * * @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 ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java
@@ -7,6 +7,7 @@ import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.AddClientPrarm; import com.sandu.ximon.admin.param.ResetClientPasswordPrarm; import com.sandu.ximon.admin.param.UpdateClientPrarm; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.Client; @@ -14,6 +15,7 @@ import com.sandu.ximon.dao.domain.Role; import com.sandu.ximon.dao.mapper.ClientMapper; import lombok.AllArgsConstructor; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -39,9 +41,9 @@ if (addClientPrarm.getClientSuperior() != null && !"".equals(addClientPrarm.getClientSuperior())) { Client one = getOne(Wrappers.lambdaQuery(Client.class).eq(Client::getClientName, addClientPrarm.getClientSuperior())); if (one != null) { if(one.getSuperiorId() == null){ if (one.getSuperiorId() == null) { client.setSuperiorId(one.getId()); }else{ } else { throw new BusinessException("ä¸çº§å®¢æ·ä¸è½ä¸ºäºçº§ç¨æ·"); } } else { @@ -112,6 +114,25 @@ return updateById(client); } public boolean resetPassword(ResetClientPasswordPrarm resetClientPasswordPrarm) { Client client = getOne(Wrappers.lambdaQuery(Client.class).eq(Client::getId, resetClientPasswordPrarm.getId())); if (client == null) { throw new BusinessException("è¯¥ç¨æ·ä¸åå¨ï¼"); } PasswordEncoder pw = new BCryptPasswordEncoder(); //夿æ§å¯ç 䏿°æ®åºæ¯å¦ä¸è´ if (pw.matches(resetClientPasswordPrarm.getOldPassword(), client.getPassword())) { //å 坿°å¯ç String encode = pw.encode(resetClientPasswordPrarm.getNewPassword()); client.setPassword(encode); return updateById(client); } else { throw new BusinessException("æ§å¯ç 䏿£ç¡®ï¼è¯·éæ°ç¡®è®¤å¯ç ï¼"); } } public boolean deleteClient(Long id) { //夿å é¤ç¨æ·æ¯å¦åå¨ Client one = getById(id);