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

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BillingModeVerifyMessageListener.java      |   21 ++++++-
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java |   11 +++
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java      |   16 +++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java      |   54 ++++++++++++++++--
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/CheckChargingStrategyDTO.java                    |   19 ++++++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java                        |   19 ++++++
 6 files changed, 131 insertions(+), 9 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/CheckChargingStrategyDTO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/CheckChargingStrategyDTO.java
new file mode 100644
index 0000000..79adcf8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/CheckChargingStrategyDTO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.chargingPile.api.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "校验计费模版是否准确DTO")
+public class CheckChargingStrategyDTO implements Serializable {
+
+    @ApiModelProperty(value = "桩编号code")
+    private String code;
+
+    @ApiModelProperty(value = "计费模型编号  id")
+    private Integer strategyDetailId;
+
+}
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 10f44fe..2bf71a7 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
@@ -1,5 +1,6 @@
 package com.ruoyi.chargingPile.api.factory;
 
+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;
@@ -31,6 +32,16 @@
 			public R<TAccountingStrategyDetail> getDetailBySiteId(Integer siteId) {
 				return R.fail("通过站点id查询当前时段使用的策略明细失败:" + throwable.getMessage());
 			}
+
+			@Override
+			public R<TAccountingStrategyDetail> getDetailByCode(String code) {
+				return R.fail("通过桩编号查询当前时段使用的策略明细失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R<Boolean> checkChargingStrategy(CheckChargingStrategyDTO dto) {
+				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 cddb45e..613cd1b 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
@@ -1,11 +1,13 @@
 package com.ruoyi.chargingPile.api.feignClient;
 
+import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
 import com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 /**
@@ -30,4 +32,18 @@
 	 */
 	@PostMapping("/t-accounting-strategy-detail/getDetailBySiteId")
 	R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId);
+	/**
+	 * 通过桩编号查询当前时段使用的策略明细
+	 * @param code
+	 * @return
+	 */
+	@PostMapping("/t-accounting-strategy-detail/getDetailByCode")
+	R<TAccountingStrategyDetail> getDetailByCode(@RequestParam("code") String code);
+	/**
+	 * 校验充电桩计费模版是否准确
+	 * @param
+	 * @return
+	 */
+	@PostMapping("/t-accounting-strategy-detail/checkChargingStrategy")
+	R<Boolean> checkChargingStrategy(@RequestBody CheckChargingStrategyDTO dto);
 }
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 f8558c5..09c646a 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
@@ -3,14 +3,17 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyService;
+import com.ruoyi.chargingPile.service.TChargingPileService;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -36,12 +39,14 @@
 public class TAccountingStrategyDetailController {
 
     private final ISiteService siteService;
+    private final TChargingPileService chargingPileService;
     private final TAccountingStrategyService accountingStrategyService;
     private final TAccountingStrategyDetailService accountingStrategyDetailService;
 
     @Autowired
-    public TAccountingStrategyDetailController(ISiteService siteService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+    public TAccountingStrategyDetailController(ISiteService siteService, TChargingPileService chargingPileService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
         this.siteService = siteService;
+        this.chargingPileService = chargingPileService;
         this.accountingStrategyService = accountingStrategyService;
         this.accountingStrategyDetailService = accountingStrategyDetailService;
     }
@@ -93,11 +98,6 @@
     }
 
     /**
-     * 获取当前有效的计费模板
-     * @param accountingStrategyId
-     * @return
-     */
-    /**
      * 通过站点id查询当前时段使用的策略明细
      * @param siteId
      * @return
@@ -111,5 +111,47 @@
                 .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
         return R.ok(one);
     }
+    /**
+     * 通过桩id查询当前时段使用的策略明细
+     * @param code 设备编号
+     * @return
+     */
+    @PostMapping("/getDetailByCode")
+    public R<TAccountingStrategyDetail> getDetailByPileId(@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());
+        TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
+                .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+        return R.ok(one);
+    }
+    /**
+     * 校验充电桩计费模版是否准确
+     * @param
+     * @return
+     */
+    @PostMapping("/checkChargingStrategy")
+    public R<Boolean> checkChargingStrategy(@RequestBody CheckChargingStrategyDTO dto){
+        // 查询桩
+        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getCode,dto.getCode())
+                .last("LIMIT 1"));
+        if(Objects.isNull(chargingPile)){
+            return R.ok(false);
+        }
+        Site site = siteService.getById(chargingPile.getSiteId());
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+        TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
+                .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+        return R.ok(dto.getStrategyDetailId().equals(one.getId()));
+    }
 }
 
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
new file mode 100644
index 0000000..732dec1
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
@@ -0,0 +1,19 @@
+package com.ruoyi.integration.iotda.utils.tools;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.Serializable;
+
+@Slf4j
+public class StrategyUtil implements Serializable {
+
+
+    /**
+     * 校验计费模版是否准确
+     * @return
+     */
+    public static boolean checkStrategy() {
+        return true;
+    }
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BillingModeVerifyMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BillingModeVerifyMessageListener.java
index 5001d80..6f6e9ad 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BillingModeVerifyMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BillingModeVerifyMessageListener.java
@@ -1,5 +1,8 @@
 package com.ruoyi.integration.rocket.listener;
 
+import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
+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.BillingModeVerify;
 import com.ruoyi.integration.api.model.BillingModeVerifyReply;
@@ -33,6 +36,8 @@
     private IotMessageProduce iotMessageProduce;
     @Autowired
     private MessageUtil messageUtil;
+    @Autowired
+    private AccountingStrategyDetailClient accountingStrategyDetailClient;
 
     @Override
     protected void handleMessage(BillingModeVerifyMessage message) throws Exception {
@@ -49,12 +54,22 @@
             billingModeVerifyReply.setCharging_pile_code(billingModeVerify.getCharging_pile_code());
             billingModeVerifyReply.setBilling_model_code("0");
             billingModeVerifyReply.setBilling_model_result(1);
-            iotMessageProduce.sendMessage(billingModeVerifyReply.getCharging_pile_code(), ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply));
         }else {
+            // 查询桩使用的模版
+            CheckChargingStrategyDTO dto = new CheckChargingStrategyDTO();
+            dto.setCode(message.getBilling_model_code());
+            dto.setStrategyDetailId(Integer.valueOf(message.getBilling_model_code()));
+            Boolean check = accountingStrategyDetailClient.checkChargingStrategy(dto).getData();
             // 校验计费模版是否准确
-
-
+            billingModeVerifyReply.setCharging_pile_code(billingModeVerify.getCharging_pile_code());
+            billingModeVerifyReply.setBilling_model_code(message.getBilling_model_code());
+            if(check){
+                billingModeVerifyReply.setBilling_model_result(0);
+            }else {
+                billingModeVerifyReply.setBilling_model_result(1);
+            }
         }
+        iotMessageProduce.sendMessage(billingModeVerifyReply.getCharging_pile_code(), ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply));
     }
 
     @Override

--
Gitblit v1.7.1