xuhy
2024-09-23 e8f18b70337c18e80dbdf906ddaad1c722a74611
充电桩硬件对接
2个文件已修改
142 ■■■■■ 已修改文件
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
@@ -113,16 +113,15 @@
    /**
     * 创建设备
     * @param productId 产品ID
     * @param nodeId 设备标识码  通常使用IMEI、MAC地址或Serial No作为node_id
     * @param deviceId 设备ID 使用设备标识码
     * @param nodeId 设备标识码  设备编号
     * @param deviceName 设备名称
     * @param description 设备描述
     * @return AddDeviceResponse
     */
    public AddDeviceResponse addDeviceRequest(String productId,String nodeId,String deviceId,String deviceName,String description) {
    public AddDeviceResponse addDeviceRequest(String productId,String nodeId,String deviceName,String description) {
        AddDeviceRequest request = new AddDeviceRequest();
        AddDevice body = new AddDevice();
        body.withDeviceId(deviceId);
        body.withDeviceId(nodeId);
        body.withNodeId(nodeId);
        body.withDeviceName(deviceName);
        body.withProductId(productId);
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -16,13 +16,12 @@
import com.ruoyi.integration.iotda.utils.tools.StrategyUtil;
import com.ruoyi.integration.rocket.model.*;
import com.ruoyi.integration.rocket.produce.EnhanceProduce;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.producer.SendResult;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.math.BigDecimal;
@@ -36,6 +35,7 @@
 */
@Slf4j
@RestController
@RequestMapping("/iot")
public class IotMessageListener {
    @Autowired
@@ -266,60 +266,97 @@
        return AjaxResult.success();
    }
    @PostMapping(value = "/message/sendMessage")
    public R sendMessage() {
    @ApiOperation(value = "运营平台远程控制启机",tags = {"硬件接口"})
    @GetMapping(value = "/platformStartCharging")
    public R platformStartCharging(String orderNum,String deviceId,Long orderId,BigDecimal money) {
        // 运营平台远程控制启机
//        PlatformStartCharging platformStartCharging = new PlatformStartCharging();
//        platformStartCharging.setTransaction_serial_number("4200002375202409185150427245");
//        platformStartCharging.setCharging_pile_code("3401231001200202");
//        platformStartCharging.setCharging_gun_code("1");
//        platformStartCharging.setCard_number("1833063878153543681");
//        platformStartCharging.setAccount_balance(new BigDecimal(50));
//        String message = iotMessageProduce.sendMessage(platformStartCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_START_CHARGING.getKey(), messageUtil.platformStartCharging(platformStartCharging));
        PlatformStartCharging platformStartCharging = new PlatformStartCharging();
        platformStartCharging.setTransaction_serial_number(orderNum);
        platformStartCharging.setCharging_pile_code(deviceId);
        platformStartCharging.setCharging_gun_code("1");
        platformStartCharging.setCard_number(orderId.toString());
        platformStartCharging.setAccount_balance(money);
        String message = iotMessageProduce.sendMessage(platformStartCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_START_CHARGING.getKey(), messageUtil.platformStartCharging(platformStartCharging));
        return R.ok(message);
    }
    @ApiOperation(value = "运营平台远程停机",tags = {"硬件接口"})
    @GetMapping(value = "/platformStopCharging")
    public R platformStopCharging(String deviceId) {
        // 运营平台远程停机
//        PlatformStopCharging platformStopCharging = new PlatformStopCharging();
//        platformStopCharging.setCharging_pile_code("3401231001200202");
//        platformStopCharging.setCharging_gun_code("1");
//        String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging));
        PlatformStopCharging platformStopCharging = new PlatformStopCharging();
        platformStopCharging.setCharging_pile_code(deviceId);
        platformStopCharging.setCharging_gun_code("1");
        String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging));
        return R.ok(message);
    }
    @ApiOperation(value = "修改余额",tags = {"硬件接口"})
    @GetMapping(value = "/updateBalance")
    public R updateBalance(String deviceId,Long orderId) {
        // 修改余额
//        UpdateBalance updateBalance = new UpdateBalance();
//        updateBalance.setCharging_pile_code("3401231001200202");
//        updateBalance.setCharging_gun_code("1");
//        updateBalance.setPhysical_card_number("1833063878153543681");
//        updateBalance.setAccount_balance(new BigDecimal(20));
//        String message = iotMessageProduce.sendMessage(updateBalance.getCharging_pile_code(), ServiceIdMenu.UPDATE_BALANCE.getKey(),messageUtil.updateBalance(updateBalance));
        UpdateBalance updateBalance = new UpdateBalance();
        updateBalance.setCharging_pile_code(deviceId);
        updateBalance.setCharging_gun_code("1");
        updateBalance.setPhysical_card_number(orderId.toString());
        updateBalance.setAccount_balance(new BigDecimal(20));
        String message = iotMessageProduce.sendMessage(updateBalance.getCharging_pile_code(), ServiceIdMenu.UPDATE_BALANCE.getKey(),messageUtil.updateBalance(updateBalance));
        return R.ok(message);
    }
    @ApiOperation(value = "充电桩工作参数设置",tags = {"硬件接口"})
    @GetMapping(value = "/workingParameterSetting")
    public R workingParameterSetting(String deviceId) {
        // 充电桩工作参数设置
//        WorkingParameterSetting workingParameterSetting = new WorkingParameterSetting();
//        workingParameterSetting.setCharging_pile_code("3401231001200202");
//        workingParameterSetting.setAllow_work(0);
//        workingParameterSetting.setMaximum_output_power(220);
//        String message = iotMessageProduce.sendMessage(workingParameterSetting.getCharging_pile_code(), ServiceIdMenu.WORKING_PARAMETER_SETTING.getKey(),messageUtil.workingParameterSetting(workingParameterSetting));
        WorkingParameterSetting workingParameterSetting = new WorkingParameterSetting();
        workingParameterSetting.setCharging_pile_code(deviceId);
        workingParameterSetting.setAllow_work(0);
        workingParameterSetting.setMaximum_output_power(220);
        String message = iotMessageProduce.sendMessage(workingParameterSetting.getCharging_pile_code(), ServiceIdMenu.WORKING_PARAMETER_SETTING.getKey(),messageUtil.workingParameterSetting(workingParameterSetting));
        return R.ok(message);
    }
    @ApiOperation(value = "对时设置",tags = {"硬件接口"})
    @GetMapping(value = "/timingSetting")
    public R timingSetting(String deviceId) {
        // 对时设置
//        TimingSetting timingSetting = new TimingSetting();
//        timingSetting.setCharging_pile_code("3401231001200202");
//        System.err.println(CP56Time2aConverter.convertToCP56Time2a(new Date()));
//        timingSetting.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date()));
//        String message = iotMessageProduce.sendMessage(timingSetting.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING.getKey(),messageUtil.timingSetting(timingSetting));
        TimingSetting timingSetting = new TimingSetting();
        timingSetting.setCharging_pile_code(deviceId);
        timingSetting.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date()));
        String message = iotMessageProduce.sendMessage(timingSetting.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING.getKey(),messageUtil.timingSetting(timingSetting));
        return R.ok(message);
    }
    @ApiOperation(value = "计费模型设置",tags = {"硬件接口"})
    @GetMapping(value = "/setupBillingModel")
    public R setupBillingModel(String deviceId) {
        // TODO 罗  计费模型设置
//        SetupBillingModel setupBillingModel = new SetupBillingModel();
//        // 计费模型
//        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode("3401231001200202").getData();
//        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
//        // 价格设置
//        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
//        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
//        // 时段设置
//        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
//        TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode("3401231001200202").getData();
//        acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
//        acquisitionBillingModeReply.setCharging_pile_code("3401231001200202");
//        acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
//        BeanUtils.copyProperties(acquisitionBillingModeReply,setupBillingModel);
//        System.err.println(setupBillingModel);
//        String message = iotMessageProduce.sendMessage(setupBillingModel.getCharging_pile_code(), ServiceIdMenu.SETUP_BILLING_MODEL.getKey(),messageUtil.setupBillingModel(setupBillingModel));
        SetupBillingModel setupBillingModel = new SetupBillingModel();
        // 计费模型
        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(deviceId).getData();
        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
        // 价格设置
        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
        // 时段设置
        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
        TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(deviceId).getData();
        acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
        acquisitionBillingModeReply.setCharging_pile_code(deviceId);
        acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
        BeanUtils.copyProperties(acquisitionBillingModeReply,setupBillingModel);
        System.err.println(setupBillingModel);
        String message = iotMessageProduce.sendMessage(setupBillingModel.getCharging_pile_code(), ServiceIdMenu.SETUP_BILLING_MODEL.getKey(),messageUtil.setupBillingModel(setupBillingModel));
        return R.ok(message);
    }
    @ApiOperation(value = "远程重启",tags = {"硬件接口"})
    @PostMapping(value = "/platformRestart")
    public R platformRestart(String deviceId) {
        // 远程重启
        PlatformRestart platformRestart = new PlatformRestart();
        platformRestart.setCharging_pile_code("3401231001200202");
        platformRestart.setCharging_pile_code(deviceId);
        platformRestart.setOperate(2);
        String message = iotMessageProduce.sendMessage(platformRestart.getCharging_pile_code(), ServiceIdMenu.PLATFORM_RESTART.getKey(),messageUtil.platformRestart(platformRestart));
        return R.ok(message);