From e843bfbb3a1d5aa993b96fc175c177012a282662 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 23 八月 2024 19:05:34 +0800
Subject: [PATCH] 计费模板校验

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyDetailService.java          |    6 ++++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java          |    8 ++++++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java |   17 +++++++++++++++++
 3 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index cbde3e9..58e94fb 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -105,6 +105,10 @@
         if(null != dto.getSiteId()){
             dto.setAuditStatus(3);
         }
+        Boolean flag = accountingStrategyDetailService.isStrategy24Hour(dto.getAccountingStrategyDetails());
+        if(flag){
+            return AjaxResult.error("计费模板时间设置有误差");
+        }
         Long userId = SecurityUtils.getLoginUser().getUserid();
         dto.setUserId(userId);
         accountingStrategyService.save(dto);
@@ -122,6 +126,10 @@
     @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略")
     @PostMapping(value = "/update")
     public AjaxResult<Boolean> update(@RequestBody TAccountingStrategyDTO dto) {
+        Boolean flag = accountingStrategyDetailService.isStrategy24Hour(dto.getAccountingStrategyDetails());
+        if(flag){
+            return AjaxResult.error("计费模板时间设置有误差");
+        }
         // 删除计费策略明细信息
         accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
                 .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId()));
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyDetailService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyDetailService.java
index 178d0cf..245e8d3 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyDetailService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TAccountingStrategyDetailService.java
@@ -38,4 +38,10 @@
      * @return
      */
     StrategyPriceVO queryPrice(Integer siteId);
+    /**
+     * 判断是否满足24小时策略
+     * @param accountingStrategyDetails
+     * @return
+     */
+    Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails);
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
index ea793af..2385665 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -22,8 +22,10 @@
 import java.math.BigDecimal;
 import java.time.LocalTime;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -122,4 +124,19 @@
         strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount());
         return strategyPriceVO;
     }
+
+    @Override
+    public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) {
+        List<TAccountingStrategyDetail> accountingStrategyDetailList = accountingStrategyDetails.stream()
+                .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)).collect(Collectors.toList());
+        boolean flag = false;
+        for (int i = 0; i < accountingStrategyDetailList.size(); i++) {
+            if(i != 0){
+                if(!accountingStrategyDetailList.get(i).getStartTime().equals(accountingStrategyDetailList.get(i-1).getEndTime())) {
+                    flag = true;
+                }
+            }
+        }
+        return flag;
+    }
 }

--
Gitblit v1.7.1