From c80c0184b6e560d41d5aa5691874e07b681fa18f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 17 一月 2025 18:41:24 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java |  174 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 159 insertions(+), 15 deletions(-)

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 b917562..9d81853 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
@@ -1,24 +1,23 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
+import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
+import com.ruoyi.chargingPile.api.model.*;
 import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
-import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
-import com.ruoyi.chargingPile.service.TAccountingStrategyService;
+import com.ruoyi.chargingPile.service.*;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalTime;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -35,11 +34,17 @@
 @RequestMapping("/t-accounting-strategy-detail")
 public class TAccountingStrategyDetailController {
 
+    private final ISiteService siteService;
+    private final TChargingPileService chargingPileService;
+    private final TChargingGunService chargingGunService;
     private final TAccountingStrategyService accountingStrategyService;
     private final TAccountingStrategyDetailService accountingStrategyDetailService;
 
     @Autowired
-    public TAccountingStrategyDetailController(TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+    public TAccountingStrategyDetailController(ISiteService siteService, TChargingPileService chargingPileService, TChargingGunService chargingGunService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+        this.siteService = siteService;
+        this.chargingPileService = chargingPileService;
+        this.chargingGunService = chargingGunService;
         this.accountingStrategyService = accountingStrategyService;
         this.accountingStrategyDetailService = accountingStrategyDetailService;
     }
@@ -49,10 +54,9 @@
      */
     @ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过站点id查询计费策略明细列表")
     @GetMapping(value = "/queryAccountingStrategyDetailBySiteId")
-    public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailBySiteId(@RequestParam Integer siteId) {
-        TAccountingStrategy accountingStrategy = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class)
-                .eq(TAccountingStrategy::getSiteId, siteId)
-                .last("limit 1"));
+    public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailBySiteId(@RequestParam("siteId") Integer siteId) {
+        Site site = siteService.getById(siteId);
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
         if(Objects.isNull(accountingStrategy)){
             throw new ServiceException("未查询到计费策略");
         }
@@ -64,8 +68,17 @@
      */
     @ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过站点id查询当前时间段计费策略展示")
     @GetMapping(value = "/queryStrategyBySiteIdAndTime")
-    public AjaxResult<List<TAccountingStrategyDetailVO>> queryStrategyBySiteIdAndTime(@RequestParam Integer siteId) {
+    public AjaxResult<List<TAccountingStrategyDetailVO>> queryStrategyBySiteIdAndTime(@RequestParam("siteId") Integer siteId) {
         return AjaxResult.ok(accountingStrategyDetailService.queryStrategyBySiteIdAndTime(siteId));
+    }
+
+    /**
+     * 通过站点id查询当前时间段计费策略展示
+     */
+    @ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过枪id查询当前时间段计费策略展示")
+    @GetMapping(value = "/queryStrategyByGunIdAndTime")
+    public AjaxResult<List<TAccountingStrategyDetailVO>> queryStrategyByGunIdAndTime(@RequestParam("gunId") Integer gunId) {
+        return AjaxResult.ok(accountingStrategyDetailService.queryStrategyByGunIdAndTime(gunId));
     }
 
     /**
@@ -73,9 +86,140 @@
      */
     @ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "价格说明金额返回,会员开通金额说明")
     @GetMapping(value = "/queryPrice")
-    public AjaxResult<StrategyPriceVO> queryPrice(@RequestParam Integer siteId) {
+    public AjaxResult<StrategyPriceVO> queryPrice(@RequestParam("siteId") Integer siteId) {
         return AjaxResult.ok(accountingStrategyDetailService.queryPrice(siteId));
     }
+    
+    
+   
 
+    /**
+     * 通过站点id查询当前时段使用的策略明细
+     * @param siteId
+     * @return
+     */
+    @GetMapping("/getDetailBySiteId")
+    public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){
+        Site site = siteService.getById(siteId);
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+        List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+        list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
+        for (TAccountingStrategyDetail accountingStrategyDetail : list) {
+            if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
+                    && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
+                return R.ok(accountingStrategyDetail);
+            }
+        }
+        return R.ok();
+    }
+    /**
+     * 通过桩id查询当前时段使用的策略明细
+     * @param code 设备编号
+     * @return
+     */
+    @GetMapping("/getDetailByCode")
+    public R<TAccountingStrategyDetail> getDetailByCode(@RequestParam("code") String code){
+        // 查询桩
+        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getCode,code).eq(TChargingPile::getDelFlag, 0)
+                .last("LIMIT 1"));
+        if(Objects.isNull(chargingPile)){
+            return R.fail("未查询到该桩设备");
+        }
+        TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
+                .eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)
+                .last("LIMIT 1"));
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
+        TAccountingStrategyDetail one = null;
+        if(Objects.nonNull(accountingStrategy)){
+            List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+            list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
+            for (TAccountingStrategyDetail accountingStrategyDetail : list) {
+                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
+                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
+                    return R.ok(accountingStrategyDetail);
+                }
+            }
+        }else {
+            Site site = siteService.getById(chargingPile.getSiteId());
+            accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+            List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+            list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
+            for (TAccountingStrategyDetail accountingStrategyDetail : list) {
+                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
+                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
+                    return R.ok(accountingStrategyDetail);
+                }
+            }
+        }
+        return R.ok();
+    }
+    /**
+     * 校验充电桩计费模版是否准确
+     * @param
+     * @return
+     */
+    @PostMapping("/checkChargingStrategy")
+    public R<Boolean> checkChargingStrategy(@RequestBody CheckChargingStrategyDTO dto){
+        // 查询桩
+        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getCode,dto.getCode()).eq(TChargingPile::getDelFlag, 0)
+                .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()));
+    }
+    
+    
+    /**
+     * 根据计费策略主表id策略明细
+     * @param id
+     * @return
+     */
+    @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);
+    }
+
+    /**
+     * 通过桩编号查询当前使用的策略明细列表
+     * @param code
+     * @return
+     */
+    @GetMapping("/getDetailListByCode")
+    public R<List<TAccountingStrategyDetail>> getDetailListByCode(@RequestParam("code") String code){
+        // 查询桩
+        TChargingPile chargingPile = chargingPileService.getOne(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getCode,code).eq(TChargingPile::getDelFlag, 0)
+                .last("LIMIT 1"));
+        if(Objects.isNull(chargingPile)){
+            return R.fail("未查询到该桩设备");
+        }
+        TChargingGun chargingGun = chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
+                .eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)
+                .last("LIMIT 1"));
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId());
+        if(Objects.nonNull(accountingStrategy)){
+            List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+            return R.ok(accountingStrategyDetails);
+        }else {
+            Site site = siteService.getById(chargingPile.getSiteId());
+            accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+            List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()));
+            return R.ok(accountingStrategyDetails);
+        }
+    }
 }
 

--
Gitblit v1.7.1