| ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3FinishChargingReqInnerFrame.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3RestartChargingReqInnerFrame.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3StartChargingReqInnerFrame.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/param/C3ChargingParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package com.sandu.ximon.admin.controller; import com.sandu.common.domain.ResponseVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.param.C3ChargingParam; import com.sandu.ximon.admin.service.C3ChargingService; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author ZZQ * C3å çµæ¡© * @date 2022/3/3 15:44 */ @RestController @AllArgsConstructor @RequestMapping("/v1/admin/C3Charging") public class C3ChargingController { private C3ChargingService c3ChargingService; /** * å çµå¼å¯ */ @PostMapping("/startCharging") public ResponseVO<Object> startCharging(@RequestBody C3ChargingParam c3ChargingParam) { c3ChargingService.startCharging(c3ChargingParam.getC3Mac(), c3ChargingParam.getChargingCapacity(), c3ChargingParam.getChargeAmount()); return ResponseUtil.success(null); } /** * å çµç»æ */ @PostMapping("/finishCharging") public ResponseVO<Object> finishCharging(@RequestBody C3ChargingParam c3ChargingParam) { c3ChargingService.finishCharging(c3ChargingParam.getC3Mac()); return ResponseUtil.success(null); } /** * 软éå¯ */ @PostMapping("/restartCharging") public ResponseVO<Object> restartCharging(@RequestBody C3ChargingParam c3ChargingParam) { c3ChargingService.restartCharging(c3ChargingParam.getC3Mac()); return ResponseUtil.success(null); } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3FinishChargingReqInnerFrame.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.sandu.ximon.admin.manager.iot.frame.inner.request; import cn.hutool.core.util.HexUtil; 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; import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils; import java.text.DecimalFormat; /** * @author ZZQ * @date 2022/3/3 16:43 */ public class C3FinishChargingReqInnerFrame implements IRequestInnerFrame { private final String payload; public C3FinishChargingReqInnerFrame(String c3Mac) { payload = c3Mac ; } @Override public String getEncodeFrame() { String functionCode = C3ChargingEnum.FinishCharging.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/C3RestartChargingReqInnerFrame.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 C3RestartChargingReqInnerFrame implements IRequestInnerFrame { private final String payload; public C3RestartChargingReqInnerFrame(String c3Mac) { payload = c3Mac ; } @Override public String getEncodeFrame() { String functionCode = C3ChargingEnum.RestartCharging.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/C3StartChargingReqInnerFrame.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package com.sandu.ximon.admin.manager.iot.frame.inner.request; import cn.hutool.core.util.HexUtil; 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; import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils; import java.text.DecimalFormat; /** * @author ZZQ * @date 2022/3/3 16:43 */ public class C3StartChargingReqInnerFrame implements IRequestInnerFrame { private final String payload; public C3StartChargingReqInnerFrame(String c3Mac, Integer chargingCapacity, Double chargeAmount) { String destinationAddress = c3Mac; payload = destinationAddress + SupplementUtils.suppleZero(HexUtil.toHex(chargingCapacity), 4 ) + SupplementUtils.suppleZero(HexUtil.toHex(parseVal(chargeAmount)), 4 ); } @Override public String getEncodeFrame() { String functionCode = C3ChargingEnum.StartCharging.getCode(); String payloadLength = "0008"; String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } private static Integer parseVal(Double totalAmount) { double v = Double.parseDouble(new DecimalFormat("#.0").format(totalAmount)) * 10; String str = v + ""; str = str.substring(0, str.indexOf(".")); return Integer.parseInt(str); } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.sandu.ximon.admin.manager.iot.rrpc.enums; /** * @author ZZQ * C3å çµæ¡© * @date 2022/3/3 17:08 */ public enum C3ChargingEnum { //å¼å§å çµ StartCharging("01"), //ç»æå çµ FinishCharging("02"), //软éå¯ RestartCharging("2B"); private String code; public String getCode() { return code; } C3ChargingEnum(String code){ this.code = code; } } ximon-admin/src/main/java/com/sandu/ximon/admin/param/C3ChargingParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.sandu.ximon.admin.param; import lombok.Data; import javax.validation.constraints.NotEmpty; /** * @author ZZQ * @date 2022/3/3 18:07 */ @Data public class C3ChargingParam { //C3å çµæ¡©å°å 4ï¼8charï¼ @NotEmpty(message = "C3å çµæ¡©å°åä¸è½ä¸ºç©º") private String c3Mac = ""; //å çµé // @NotEmpty(message = "å çµéä¸è½ä¸ºç©º") private Integer chargingCapacity; //å çµéé¢ // @NotEmpty(message = "å çµéé¢ä¸è½ä¸ºç©º") private Double chargeAmount; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,70 @@ package com.sandu.ximon.admin.service; import com.sandu.ximon.admin.manager.iot.frame.A5Frame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.C3FinishChargingReqInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.C3RestartChargingReqInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.C3StartChargingReqInnerFrame; 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 lombok.AllArgsConstructor; import org.springframework.stereotype.Service; /** * @author ZZQ * C3å çµæ¡© * @date 2022/3/4 9:58 */ @Service @AllArgsConstructor public class C3ChargingService { /** * å¼å§å çµ * * @param c3Mac * @param chargingCapacity * @param chargeAmount */ public void 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"); } /** * ç»æå çµ * * @param c3Mac */ public void 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"); } /** * 软éå¯ * * @param c3Mac */ public void 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"); } }