xuhy
2024-09-19 dd53078ab5e034625342dd28546924e963cbe41c
充电桩硬件对接
7个文件已修改
120 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -69,6 +69,11 @@
                return R.fail("支付回调:" + cause.getMessage());
            }
            @Override
            public R vipCallBack(String code, String outTradeNo) {
                return R.fail("会员订单回调失败:" + cause.getMessage());
            }
            @Override
            public R<TActivityVO> activityStatistics(TActivityStatisticsQuery dto) {
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
@@ -172,6 +172,16 @@
    }
    /**
     * 对时设置
     * @param timingSetting 实体对象
     * @return
     */
    @PostMapping("/timingSetting")
    public String timingSetting(@RequestBody TimingSetting timingSetting){
        return  iotMessageProduce.sendMessage(timingSetting.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING.getKey(),messageUtil.timingSetting(timingSetting));
    }
    /**
     * 对时设置应答
     * @param timingSettingReply 实体对象
     * @return
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java
@@ -67,6 +67,10 @@
     */
     WORKING_PARAMETER_SETTING ("充电桩工作参数设置","working_parameter_setting"),
    /**
     * 对时设置
     */
    TIMING_SETTING ("对时设置","timing_setting"),
    /**
     * 对时设置应答
     */
     TIMING_SETTING_REPLY ("对时设置应答","timing_setting_reply"),
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -5,6 +5,7 @@
import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.integration.api.model.*;
import com.ruoyi.integration.iotda.constant.SendTagConstant;
@@ -17,6 +18,7 @@
import com.ruoyi.integration.rocket.produce.EnhanceProduce;
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;
@@ -180,10 +182,10 @@
                PlatformConfirmationCharging platformConfirmationCharging = new PlatformConfirmationCharging();
                platformConfirmationCharging.setCharging_pile_code(chargingPileStartsChargingMessage.getCharging_pile_code());
                platformConfirmationCharging.setCharging_gun_code(chargingPileStartsChargingMessage.getCharging_gun_code());
                platformConfirmationCharging.setCard_number("");
                platformConfirmationCharging.setCard_number(chargingPileStartsChargingMessage.getAccount());
                platformConfirmationCharging.setAccount_balance(BigDecimal.ZERO);
                platformConfirmationCharging.setAuthentication(1);
                // TODO
                // TODO 若是失败,给出失败原因
                iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PLATFORM_CONFIRMATION_CHARGING.getKey(),messageUtil.platformConfirmationCharging(platformConfirmationCharging));
                break;
            case SendTagConstant.PLATFORM_START_CHARGING_REPLY:
@@ -264,4 +266,63 @@
        return AjaxResult.success();
    }
    @PostMapping(value = "/message/sendMessage")
    public R sendMessage() {
        // 运营平台远程控制启机
//        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));
        // 运营平台远程停机
//        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));
        // 修改余额
//        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));
        // 充电桩工作参数设置
//        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));
        // 对时设置
//        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));
        // 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));
        // 远程重启
        PlatformRestart platformRestart = new PlatformRestart();
        platformRestart.setCharging_pile_code("3401231001200202");
        platformRestart.setOperate(2);
        String message = iotMessageProduce.sendMessage(platformRestart.getCharging_pile_code(), ServiceIdMenu.PLATFORM_RESTART.getKey(),messageUtil.platformRestart(platformRestart));
        return R.ok(message);
    }
}
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
@@ -44,6 +44,8 @@
    @Autowired
    private WorkingParameterSettingService workingParameterSettingService;
    @Autowired
    private TimingSettingService timingSettingService;
    @Autowired
    private TimingSettingReplyService timingSettingReplyService;
    @Autowired
    private SetupBillingModelService setupBillingModelService;
@@ -205,6 +207,15 @@
    }
    /**
     * 对时设置
     * @param timingSetting 实体对象
     * @return
     */
    public String timingSetting(TimingSetting timingSetting){
        timingSettingService.create(timingSetting);
        return  getMessageJsonString(timingSetting, ServiceIdMenu.TIMING_SETTING.getValue());
    }
    /**
     * 对时设置应答
     * @param timingSettingReply 实体对象
     * @return
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
@@ -67,8 +67,13 @@
            }
            accountingStrategyDetails = accountingStrategyDetails.stream().sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)).collect(Collectors.toList());
            for (TAccountingStrategyDetail accountingStrategyDetail : accountingStrategyDetails) {
                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").isBefore(time)
                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ":00").isAfter(time)){
                String startTime = accountingStrategyDetail.getStartTime();
                String endTime = accountingStrategyDetail.getEndTime();
                if("00:00".equals(endTime)){
                    endTime = "23:59";
                }
                if(DateUtils.string2LocalTime(startTime + ":00").isBefore(time)
                        && DateUtils.string2LocalTime(endTime + ":00").isAfter(time)){
                    switch (i){
                        case 1:
                            acquisitionBillingModeReply.setTime1(accountingStrategyDetail.getType().equals(1)?0
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
@@ -52,14 +52,14 @@
        BeanUtils.copyProperties(message,acquisitionBillingMode);
        acquisitionBillingModeService.create(acquisitionBillingMode);
        // 业务处理  计费模型请求应答  1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段
        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(message.getCharging_pile_code()).getData();
        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
        // 价格设置
        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
        // 时段设置
        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
        iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
//        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(message.getCharging_pile_code()).getData();
//        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
//        // 价格设置
//        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
//        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
//        // 时段设置
//        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
//        iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
    }
    @Override