xuhy
2024-09-18 19d47d52e9855130a3e233a3d75eaab2c7747933
充电桩硬件对接
11个文件已修改
4个文件已添加
232 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ErrorMessageMessageService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ErrorMessageMessageServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ErrorMessageMessageListener.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/BmsDemandAndChargerExportationMessage.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/EndChargeMessage.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/ErrorMessageMessage.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/ParameterSettingMessage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/UploadRealTimeMonitoringDataMessage.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
@@ -6,6 +6,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -26,14 +27,14 @@
     * @param siteId
     * @return
     */
    @PostMapping("/t-accounting-strategy-detail/getDetailBySiteId")
    @GetMapping("/t-accounting-strategy-detail/getDetailBySiteId")
    R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId);
    /**
     * 通过桩编号查询当前时段使用的策略明细
     * @param code
     * @return
     */
    @PostMapping("/t-accounting-strategy-detail/getDetailByCode")
    @GetMapping("/t-accounting-strategy-detail/getDetailByCode")
    R<TAccountingStrategyDetail> getDetailByCode(@RequestParam("code") String code);
    /**
     * 校验充电桩计费模版是否准确
@@ -49,13 +50,13 @@
     * @param id
     * @return
     */
    @PostMapping("/t-accounting-strategy-detail/getListByAccountingStrategyId")
    @GetMapping("/t-accounting-strategy-detail/getListByAccountingStrategyId")
    R<List<TAccountingStrategyDetail>> getListByAccountingStrategyId(@RequestParam("id") Integer id);
    /**
     * 通过桩编号查询当前使用的策略明细列表
     * @param code
     * @return
     */
    @PostMapping("/t-accounting-strategy-detail/getDetailListByCode")
    @GetMapping("/t-accounting-strategy-detail/getDetailListByCode")
    R<List<TAccountingStrategyDetail>> getDetailListByCode(@RequestParam("code") String code);
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -91,7 +91,7 @@
     * @param siteId
     * @return
     */
    @PostMapping("/getDetailBySiteId")
    @GetMapping("/getDetailBySiteId")
    public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){
        Site site = siteService.getById(siteId);
        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
@@ -105,8 +105,8 @@
     * @param code 设备编号
     * @return
     */
    @PostMapping("/getDetailByCode")
    public R<TAccountingStrategyDetail> getDetailByPileId(@RequestParam("code") String code){
    @GetMapping("/getDetailByCode")
    public R<TAccountingStrategyDetail> getDetailByCode(@RequestParam("code") String code){
        // 查询桩
        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
                .eq(TChargingPile::getCode,code)
@@ -149,7 +149,7 @@
     * @param id
     * @return
     */
    @PostMapping("/getListByAccountingStrategyId")
    @GetMapping("/getListByAccountingStrategyId")
    public R<List<TAccountingStrategyDetail>> getListByAccountingStrategyId(@RequestParam("id") Integer id){
        List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(new LambdaQueryWrapper<TAccountingStrategyDetail>().eq(TAccountingStrategyDetail::getAccountingStrategyId, id));
        return R.ok(list);
@@ -160,7 +160,7 @@
     * @param code
     * @return
     */
    @PostMapping("/t-accounting-strategy-detail/getDetailListByCode")
    @GetMapping("/getDetailListByCode")
    public R<List<TAccountingStrategyDetail>> getDetailListByCode(@RequestParam("code") String code){
        // 查询桩
        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
@@ -19,6 +19,10 @@
     */
    public static final String END_CHARGE = "end_charge";
    /**
     * 错误报文
     */
    public static final String ERROR_MESSAGE = "error_message";
    /**
     * 计费模型验证请求
     */
    public static final String BILLING_MODE_VERIFY ="billing_mode_verify";
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/api/IotInterfaceUtil.java
@@ -114,7 +114,7 @@
     * 创建设备
     * @param productId 产品ID
     * @param nodeId 设备标识码  通常使用IMEI、MAC地址或Serial No作为node_id
     * @param deviceId 设备ID 使用CodeGenerateUtils.generateVolumeSn()
     * @param deviceId 设备ID 使用设备标识码
     * @param deviceName 设备名称
     * @param description 设备描述
     * @return AddDeviceResponse
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -23,9 +23,11 @@
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * iotda消息监听
@@ -89,6 +91,11 @@
                sendResult = enhanceProduce.endChargeMessage(endChargeMessage);
                // 响应硬件
                break;
            case SendTagConstant.ERROR_MESSAGE:
                ErrorMessageMessage errorMessageMessage = JSON.parseObject(content.toJSONString(),ErrorMessageMessage.class);
                sendResult = enhanceProduce.errorMessageMessage(errorMessageMessage);
                // 响应硬件
                break;
            case SendTagConstant.BILLING_MODE_VERIFY:
                BillingModeVerifyMessage billingModeVerifyMessage = JSON.parseObject(content.toJSONString(),BillingModeVerifyMessage.class);
                sendResult = enhanceProduce.billingModeVerifyMessage(billingModeVerifyMessage);
@@ -102,7 +109,7 @@
                }else {
                    // 查询桩使用的模版
                    CheckChargingStrategyDTO dto = new CheckChargingStrategyDTO();
                    dto.setCode(billingModeVerifyMessage.getBilling_model_code());
                    dto.setCode(billingModeVerifyMessage.getCharging_pile_code());
                    dto.setStrategyDetailId(Integer.valueOf(billingModeVerifyMessage.getBilling_model_code()));
                    Boolean check = accountingStrategyDetailClient.checkChargingStrategy(dto).getData();
                    // 校验计费模版是否准确
@@ -127,6 +134,10 @@
                StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
                // 时段设置
                StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
                TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData();
                acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
                acquisitionBillingModeReply.setCharging_pile_code(acquisitionBillingModeMessage.getCharging_pile_code());
                acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
                iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
                break;
            case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
@@ -166,6 +177,14 @@
                ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = JSON.parseObject(content.toJSONString(),ChargingPileStartsChargingMessage.class);
                sendResult = enhanceProduce.chargingPileStartsChargingMessage(chargingPileStartsChargingMessage);
                // 响应硬件
                PlatformConfirmationCharging platformConfirmationCharging = new PlatformConfirmationCharging();
                platformConfirmationCharging.setCharging_pile_code(chargingPileStartsChargingMessage.getCharging_pile_code());
                platformConfirmationCharging.setCharging_gun_code(chargingPileStartsChargingMessage.getCharging_gun_code());
                platformConfirmationCharging.setCard_number("");
                platformConfirmationCharging.setAccount_balance(BigDecimal.ZERO);
                platformConfirmationCharging.setAuthentication(1);
                // TODO
                iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PLATFORM_CONFIRMATION_CHARGING.getKey(),messageUtil.platformConfirmationCharging(platformConfirmationCharging));
                break;
            case SendTagConstant.PLATFORM_START_CHARGING_REPLY:
                PlatformStartChargingReplyMessage platformStartChargingReplyMessage = JSON.parseObject(content.toJSONString(),PlatformStartChargingReplyMessage.class);
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
@@ -67,8 +67,8 @@
            }
            accountingStrategyDetails = accountingStrategyDetails.stream().sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)).collect(Collectors.toList());
            for (TAccountingStrategyDetail accountingStrategyDetail : accountingStrategyDetails) {
                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime()).isBefore(time)
                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime()).isAfter(time)){
                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").isBefore(time)
                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ":00").isAfter(time)){
                    switch (i){
                        case 1:
                            acquisitionBillingModeReply.setTime1(accountingStrategyDetail.getType().equals(1)?0
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ErrorMessageMessageService.java
New file
@@ -0,0 +1,8 @@
package com.ruoyi.integration.mongodb.service;
import com.ruoyi.integration.mongodb.base.BaseService;
import com.ruoyi.integration.rocket.model.ErrorMessageMessage;
public interface ErrorMessageMessageService extends BaseService<ErrorMessageMessage> {
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/ErrorMessageMessageServiceImpl.java
New file
@@ -0,0 +1,35 @@
package com.ruoyi.integration.mongodb.service.impl;
import com.ruoyi.integration.api.model.EndCharge;
import com.ruoyi.integration.iotda.constant.IotConstant;
import com.ruoyi.integration.mongodb.service.EndChargeService;
import com.ruoyi.integration.mongodb.service.ErrorMessageMessageService;
import com.ruoyi.integration.rocket.model.ErrorMessageMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ErrorMessageMessageServiceImpl implements ErrorMessageMessageService {
    @Autowired
    private MongoTemplate mongoTemplate;
    @Override
    public int create(ErrorMessageMessage errorMessageMessage) {
        mongoTemplate.save(errorMessageMessage);
        return IotConstant.SUCCESS;
    }
    @Override
    public ErrorMessageMessage findById(String id) {
        return mongoTemplate.findById(id, ErrorMessageMessage.class);
    }
    @Override
    public List<ErrorMessageMessage> findAll() {
        return mongoTemplate.findAll(ErrorMessageMessage.class);
    }
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/ErrorMessageMessageListener.java
New file
@@ -0,0 +1,80 @@
package com.ruoyi.integration.rocket.listener;
import com.ruoyi.integration.mongodb.service.ErrorMessageMessageService;
import com.ruoyi.integration.rocket.model.ErrorMessageMessage;
import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
@RocketMQMessageListener(
        messageModel = MessageModel.CLUSTERING,
        consumerGroup = "charge_error_message",
        topic = "charge_error_message",
        selectorExpression = "error_message",
        consumeThreadMax = 5 //默认是64个线程并发消息,配置 consumeThreadMax 参数指定并发消费线程数,避免太大导致资源不够
)
public class ErrorMessageMessageListener extends EnhanceMessageHandler<ErrorMessageMessage> implements RocketMQListener<ErrorMessageMessage> {
    @Autowired
    private ErrorMessageMessageService errorMessageMessageService;
    @Override
    protected void handleMessage(ErrorMessageMessage message) throws Exception {
        // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
        log.info("错误报文-业务消息处理:{}",message);
        // 持久化消息
        ErrorMessageMessage errorMessageMessage = new ErrorMessageMessage();
        BeanUtils.copyProperties(message,errorMessageMessage);
        errorMessageMessageService.create(errorMessageMessage);
        // 业务处理
    }
    @Override
    protected void handleMaxRetriesExceeded(ErrorMessageMessage message) {
        // 当超过指定重试次数消息时此处方法会被调用
        // 生产中可以进行回退或其他业务操作
        log.error("消息消费失败,请执行后续处理");
    }
    /**
     * 是否执行重试机制
     */
    @Override
    protected boolean isRetry() {
        return true;
    }
    @Override
    protected boolean throwException() {
        // 是否抛出异常,false搭配retry自行处理异常
        return false;
    }
    /**
     * 若需要处理消息过滤,在父级中进行统一处理,或者在此处实现之后,自行处理
     * @param message 待处理消息
     * @return true: 本次消息被过滤,false:不过滤
     */
    @Override
    protected boolean filter(ErrorMessageMessage message) {
        // 此处可做消息过滤
        return false;
    }
    /**
     * 监听消费消息,不需要执行业务处理,委派给父类做基础操作,父类做完基础操作后会调用子类的实际处理类型
     */
    @Override
    public void onMessage(ErrorMessageMessage message) {
        super.dispatchMessage(message);
    }
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/BmsDemandAndChargerExportationMessage.java
@@ -22,7 +22,8 @@
    private Integer bms_charging_mode; // BMS 充电模式(1:恒压充电;2:恒流充电)
    private BigDecimal bms_voltage_measurement_value; // BMS 充电电压测量值
    private BigDecimal bms_current_measurement_value; // BMS 充电电流测量值
    private Integer bms_battery_voltage_and_group_number; // BMS 最高单体动力蓄电池电压及组号(1-12 位:最高单体动力蓄电池电压,数据分辨率:0.01 V/位,0 V 偏移量;数据范围:0~24 V;13-16 位:最高单体动力蓄电池电压所在组号,数据分辨率:1/位,0 偏移量;数据范围:0~15)
    private BigDecimal bms_battery_voltage; //  最高电压 BMS 最高单体动力蓄电池电压及组号(1-12 位:最高单体动力蓄电池电压,数据分辨率:0.01 V/位,0 V 偏移量;数据范围:0~24 V;13-16 位:最高单体动力蓄电池电压所在组号,数据分辨率:1/位,0 偏移量;数据范围:0~15)
    private Integer bms_group_number; //  所在组号 BMS 最高单体动力蓄电池电压及组号(1-12 位:最高单体动力蓄电池电压,数据分辨率:0.01 V/位,0 V 偏移量;数据范围:0~24 V;13-16 位:最高单体动力蓄电池电压所在组号,数据分辨率:1/位,0 偏移量;数据范围:0~15)
    private BigDecimal bms_charged_status; // BMS 当前荷电状态 SOC( %)
    private Integer bms_remaining_charging_time; // BMS 估算剩余充电时间
    private BigDecimal voltage_output_value; // 电桩电压输出值
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/EndChargeMessage.java
@@ -18,8 +18,8 @@
    private BigDecimal bms_battery_charging_status; // BMS 中止荷电状态 SOC
    private BigDecimal bms_minimum_battery_voltage; // BMS 动力蓄电池单体最低电压
    private BigDecimal bms_maximum_battery_voltage; // BMS 动力蓄电池单体最高电压
    private Integer bms_minimum_battery_temperature; // BMS 动力蓄电池最低温度
    private Integer bms_maximum_battery_temperature; // BMS 动力蓄电池最高温度
    private BigDecimal bms_minimum_battery_temperature; // BMS 动力蓄电池最低温度
    private BigDecimal bms_maximum_battery_temperature; // BMS 动力蓄电池最高温度
    private BigDecimal cumulative_charging_time; // 电桩累计充电时间
    private BigDecimal output_energy; // 电桩输出能量
    private String charger_code; // 电桩充电机编号
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/ErrorMessageMessage.java
New file
@@ -0,0 +1,35 @@
package com.ruoyi.integration.rocket.model;
import com.ruoyi.integration.rocket.base.BaseMessage;
import lombok.Data;
@Data
public class ErrorMessageMessage extends BaseMessage {
    private String transaction_serial_number; // 交易流水号
    private String charging_pile_code; // 桩编码
    private String charging_gun_code; // 抢号
    private Integer charger_identification_0; // 接收 SPN2560=0x00 的充电机辨识报文超时(0=正常,1=超时,10=不可信状态)
    private Integer charger_identification_170; // 接收 SPN2560=0xAA 的充电机辨识报文超时(0=正常,1=超时,10=不可信状态)
    private String charger_identification_reserve; // 预留位
    private Integer time_synchronization_and_maximum_output_charger; // 接收充电机的时间同步和充电机最大输出能力报文超时(0=正常,1=超时,10=不可信状态)
    private Integer charge_preparation; // 接收充电机完成充电准备报文超时(0=正常,1=超时,10=不可信状态)
    private String charge_preparation_reserve; // 预留位
    private Integer charging_status; // 接收充电机充电状态报文超时(0=正常,1=超时,10=不可信状态)
    private Integer stop_charging; // 接收充电机中止充电报文超时(0=正常,1=超时,10=不可信状态)
    private String charge_reserve; // 预留位
    private Integer charging_statistics; // 接收充电机充电统计报文超时(0=正常,1=超时,10=不可信状态)
    private String bms_other; // BMS 其他
    private Integer bms_and_vehicle_identification; // 接收 BMS 和车辆的辨识报文超时(0=正常,1=超时,10=不可信状态)
    private String bms_and_vehicle_identification_reserve; // 预留位
    private Integer battery_charging_parameter; // 接收电池充电参数报文超时(0=正常,1=超时,10=不可信状态)
    private Integer bms_completes_charging_preparation; // 接收 BMS 完成充电准备报文超时(0=正常,1=超时,10=不可信状态)
    private String bms_completes_charging_preparation_reserve; // 预留位
    private Integer total_battery_charging_status; // 接收电池充电总状态报文超时(0=正常,1=超时,10=不可信状态)
    private Integer battery_charging_requirements; // 接收电池充电要求报文超时(0=正常,1=超时,10=不可信状态)
    private Integer bms_stop_charging; // 接收 BMS 中止充电报文超时(0=正常,1=超时,10=不可信状态)
    private Integer bms_reserve; // 预留位
    private Integer bms_charging_statistics; // 接收 BMS 充电统计报文超时0=正常,1=超时,10=不可信状态)
    private String charger_other; // 充电机其他
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/ParameterSettingMessage.java
@@ -21,7 +21,7 @@
    private BigDecimal bms_maximum_charging_current; // BMS 最高允许充电电流
    private BigDecimal bms_battery_total_energy; // BMS 动力蓄电池标称总能量
    private BigDecimal bms_total_charging_voltage; // BMS 最高允许充电总电压
    private Integer bms_maximum_temperature; // BMS 最高允许温度
    private BigDecimal bms_maximum_temperature; // BMS 最高允许温度
    private BigDecimal bms_battery_charging_status; // BMS 整车动力蓄电池荷电状态 (soc)
    private BigDecimal bms_battery_voltage; // BMS 整车动力蓄电池当前电池 电压
    private BigDecimal maximum_output_voltage; // 电桩最高输出电压
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/UploadRealTimeMonitoringDataMessage.java
@@ -22,10 +22,10 @@
    private Integer insertion_status; // 是否插枪(0:否,1:是)
    private BigDecimal output_voltage; // 输出电压,精确到小数点后一位;待机置零
    private BigDecimal output_current; // 输出电流,精确到小数点后一位;待机置零
    private Integer gun_line_temperature; // 枪线温度,整形,偏移量-50;待机置零
    private BigDecimal gun_line_temperature; // 枪线温度,整形,偏移量-50;待机置零
    private String gun_line_code; // 枪线编码,没有置零
    private Integer soc; // SOC待机置零;交流桩置零
    private Integer battery_temperature; // 电池组最高温度,整形,偏移量-50 ºC;待机置零;交流桩置零
    private BigDecimal battery_temperature; // 电池组最高温度,整形,偏移量-50 ºC;待机置零;交流桩置零
    private Integer cumulative_charging_time; // 累计充电时间,单位:min;待机置零
    private Integer time_remaining; // 剩余时间,单位:min;待机置零、交流桩置零
    private BigDecimal charging_degree; // 充电度数,精确到小数点后四位;待机置零
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.integration.api.model.ErrorMessage;
import com.ruoyi.integration.api.model.ParameterSetting;
import com.ruoyi.integration.iotda.constant.SendTagConstant;
import com.ruoyi.integration.rocket.model.*;
@@ -55,6 +56,16 @@
        message.setSource(SendTagConstant.END_CHARGE);
        return rocketMQEnhanceTemplate.send(TOPIC+SendTagConstant.END_CHARGE, SendTagConstant.END_CHARGE, message);
    }
    /**
     * 错误报文
     */
    public SendResult errorMessageMessage(ErrorMessageMessage message) {
        // 设置业务key
        message.setKey(UUID.randomUUID().toString());
        // 设置消息来源,便于查询
        message.setSource(SendTagConstant.ERROR_MESSAGE);
        return rocketMQEnhanceTemplate.send(TOPIC+SendTagConstant.ERROR_MESSAGE, SendTagConstant.ERROR_MESSAGE, message);
    }
    /**
     * 计费模型验证请求