2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-03-04 f233ba26bbf8703fcc4e86a5dbb9d6026f91e7d6
C3充电桩
已添加7个文件
276 ■■■■■ 文件已修改
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3FinishChargingReqInnerFrame.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3RestartChargingReqInnerFrame.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/C3StartChargingReqInnerFrame.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/C3ChargingEnum.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/C3ChargingParam.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | 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");
    }
}