From e473b5ae42cded953f330d54dead49cddfbe457f Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 04 九月 2024 19:13:36 +0800
Subject: [PATCH] 计费模板处理

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java |   29 ++++
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java |    7 +
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java      |    9 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java      |   21 +++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java                        |  258 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 318 insertions(+), 6 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
index 2bf71a7..9ffd23e 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
@@ -9,6 +9,8 @@
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @author zhibing.pu
  * @Date 2024/8/28 18:33
@@ -42,6 +44,11 @@
 			public R<Boolean> checkChargingStrategy(CheckChargingStrategyDTO dto) {
 				return R.fail("校验充电桩计费模版是否准确失败:" + throwable.getMessage());
 			}
+
+			@Override
+			public R<List<TAccountingStrategyDetail>> getDetailListByCode(String code) {
+				return R.fail("通过桩编号查询当前使用的策略明细列表失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
index 613cd1b..1a11b6d 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
@@ -10,6 +10,8 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 /**
  * @author zhibing.pu
  * @Date 2024/8/28 18:33
@@ -46,4 +48,11 @@
 	 */
 	@PostMapping("/t-accounting-strategy-detail/checkChargingStrategy")
 	R<Boolean> checkChargingStrategy(@RequestBody CheckChargingStrategyDTO dto);
+	/**
+	 * 通过桩编号查询当前使用的策略明细列表
+	 * @param code
+	 * @return
+	 */
+	@PostMapping("/t-accounting-strategy-detail/getDetailListByCode")
+	R<List<TAccountingStrategyDetail>> getDetailListByCode(@RequestParam("code") String code);
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
index 09c646a..f54d98a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -153,5 +153,26 @@
                 .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
         return R.ok(dto.getStrategyDetailId().equals(one.getId()));
     }
+
+    /**
+     * 通过桩编号查询当前使用的策略明细列表
+     * @param code
+     * @return
+     */
+    @PostMapping("/t-accounting-strategy-detail/getDetailListByCode")
+    public R<List<TAccountingStrategyDetail>> getDetailListByCode(@RequestParam("code") String code){
+        // 查询桩
+        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getCode,code)
+                .last("LIMIT 1"));
+        if(Objects.isNull(chargingPile)){
+            return R.fail("未查询到该桩设备");
+        }
+        Site site = siteService.getById(chargingPile.getSiteId());
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+        return R.ok(accountingStrategyDetails);
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
index 732dec1..4ebf980 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
@@ -1,19 +1,271 @@
 package com.ruoyi.integration.iotda.utils.tools;
 
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.integration.api.model.AcquisitionBillingModeReply;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.Serializable;
+import java.time.LocalTime;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 public class StrategyUtil implements Serializable {
 
 
     /**
-     * 校验计费模版是否准确
+     * 获取计费模版的价格
      * @return
      */
-    public static boolean checkStrategy() {
-        return true;
+    public static Map<Integer, TAccountingStrategyDetail> getStrategyPrice(List<TAccountingStrategyDetail> accountingStrategyDetails) {
+        Map<Integer, TAccountingStrategyDetail> phaseToServiceFee = new HashMap<>();
+        for (TAccountingStrategyDetail detail : accountingStrategyDetails) {
+            Integer type = detail.getType();
+            if (!phaseToServiceFee.containsKey(type)) {
+                phaseToServiceFee.put(type, detail);
+            }
+        }
+        return phaseToServiceFee;
+    }
+    /**
+     * 计费模版的价格设置
+     * @return
+     */
+    public static void setStrategyPrice(Map<Integer, TAccountingStrategyDetail> accountingStrategyDetails,AcquisitionBillingModeReply acquisitionBillingModeReply) {
+        accountingStrategyDetails.forEach((k,v)->{
+            switch (k){
+                case 1:
+                    acquisitionBillingModeReply.setSharp_peak_electricity_rate(v.getElectrovalence());
+//                    acquisitionBillingModeReply.setSharp_peak_service_rate(v.getServiceCharge());
+                    break;
+                case 2:
+                    acquisitionBillingModeReply.setPeak_electricity_rate(v.getElectrovalence());
+//                    acquisitionBillingModeReply.setPeak_service_rate(v.getServiceCharge());
+                    break;
+                case 3:
+                    acquisitionBillingModeReply.setFlat_peak_electricity_rate(v.getElectrovalence());
+//                    acquisitionBillingModeReply.setFlat_peak_service_rate(v.getServiceCharge());
+                    break;
+                default:
+                    acquisitionBillingModeReply.setLow_peak_electricity_rate(v.getElectrovalence());
+//                    acquisitionBillingModeReply.setLow_peak_service_rate(v.getServiceCharge());
+                    break;
+            }
+        });
+    }
+
+    /**
+     * 计费模版的时段设置
+     * @return
+     */
+    public static void setTime(List<TAccountingStrategyDetail> accountingStrategyDetails,AcquisitionBillingModeReply acquisitionBillingModeReply) {
+        LocalTime time = LocalTime.of(0, 15, 0);
+        for (int i = 1; i <= 48; i++) {
+            if(i != 1){
+                time = time.plusMinutes(30);
+            }
+            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)){
+                    switch (i){
+                        case 1:
+                            acquisitionBillingModeReply.setTime1(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 2:
+                            acquisitionBillingModeReply.setTime2(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 3:
+                            acquisitionBillingModeReply.setTime3(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 4:
+                            acquisitionBillingModeReply.setTime4(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 5:
+                            acquisitionBillingModeReply.setTime5(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 6:
+                            acquisitionBillingModeReply.setTime6(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 7:
+                            acquisitionBillingModeReply.setTime7(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 8:
+                            acquisitionBillingModeReply.setTime8(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 9:
+                            acquisitionBillingModeReply.setTime9(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 10:
+                            acquisitionBillingModeReply.setTime10(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 11:
+                            acquisitionBillingModeReply.setTime11(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 12:
+                            acquisitionBillingModeReply.setTime12(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 13:
+                            acquisitionBillingModeReply.setTime13(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 14:
+                            acquisitionBillingModeReply.setTime14(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 15:
+                            acquisitionBillingModeReply.setTime15(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 16:
+                            acquisitionBillingModeReply.setTime16(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 17:
+                            acquisitionBillingModeReply.setTime17(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 18:
+                            acquisitionBillingModeReply.setTime18(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 19:
+                            acquisitionBillingModeReply.setTime19(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 20:
+                            acquisitionBillingModeReply.setTime20(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 21:
+                            acquisitionBillingModeReply.setTime21(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 22:
+                            acquisitionBillingModeReply.setTime22(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 23:
+                            acquisitionBillingModeReply.setTime23(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 24:
+                            acquisitionBillingModeReply.setTime24(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 25:
+                            acquisitionBillingModeReply.setTime25(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 26:
+                            acquisitionBillingModeReply.setTime26(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 27:
+                            acquisitionBillingModeReply.setTime27(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 28:
+                            acquisitionBillingModeReply.setTime28(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 29:
+                            acquisitionBillingModeReply.setTime29(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 30:
+                            acquisitionBillingModeReply.setTime30(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 31:
+                            acquisitionBillingModeReply.setTime31(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 32:
+                            acquisitionBillingModeReply.setTime32(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 33:
+                            acquisitionBillingModeReply.setTime33(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 34:
+                            acquisitionBillingModeReply.setTime34(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 35:
+                            acquisitionBillingModeReply.setTime35(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 36:
+                            acquisitionBillingModeReply.setTime36(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 37:
+                            acquisitionBillingModeReply.setTime37(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 38:
+                            acquisitionBillingModeReply.setTime38(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 39:
+                            acquisitionBillingModeReply.setTime39(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 40:
+                            acquisitionBillingModeReply.setTime40(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 41:
+                            acquisitionBillingModeReply.setTime41(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 42:
+                            acquisitionBillingModeReply.setTime42(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 43:
+                            acquisitionBillingModeReply.setTime43(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 44:
+                            acquisitionBillingModeReply.setTime44(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 45:
+                            acquisitionBillingModeReply.setTime45(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 46:
+                            acquisitionBillingModeReply.setTime46(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 47:
+                            acquisitionBillingModeReply.setTime47(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                        case 48:
+                            acquisitionBillingModeReply.setTime48(accountingStrategyDetail.getType().equals(1)?0
+                                    :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3);
+                            break;
+                    }
+                }
+            }
+        }
     }
 
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
index 4a41768..cc9a8cc 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
@@ -1,7 +1,14 @@
 package com.ruoyi.integration.rocket.listener;
 
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.integration.api.model.AcquisitionBillingMode;
+import com.ruoyi.integration.api.model.AcquisitionBillingModeReply;
 import com.ruoyi.integration.api.model.Online;
+import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
+import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce;
+import com.ruoyi.integration.iotda.utils.tools.MessageUtil;
+import com.ruoyi.integration.iotda.utils.tools.StrategyUtil;
 import com.ruoyi.integration.mongodb.service.AcquisitionBillingModeService;
 import com.ruoyi.integration.rocket.model.AcquisitionBillingModeMessage;
 import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
@@ -11,6 +18,10 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 @Slf4j
 @Component
@@ -24,7 +35,12 @@
 
     @Autowired
     private AcquisitionBillingModeService acquisitionBillingModeService;
-
+    @Autowired
+    private AccountingStrategyDetailClient accountingStrategyDetailClient;
+    @Autowired
+    private IotMessageProduce iotMessageProduce;
+    @Autowired
+    private MessageUtil messageUtil;
     @Override
     protected void handleMessage(AcquisitionBillingModeMessage message) throws Exception {
         // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
@@ -33,8 +49,15 @@
         AcquisitionBillingMode acquisitionBillingMode = new AcquisitionBillingMode();
         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));
     }
 
     @Override

--
Gitblit v1.7.1