From 5f43f7510cb0c05c0a927502a247bfc4eee3521a Mon Sep 17 00:00:00 2001
From: andy <1042025947@qq.com>
Date: Fri, 18 Apr 2025 16:38:03 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E6=A0=87=E5=87=86=E6=97=B6?=
=?UTF-8?q?=E9=97=B4=E6=9F=A5=E9=87=8D=E9=AA=8C=E8=AF=81=20=E8=B4=B9?=
=?UTF-8?q?=E7=94=A8=E7=BB=93=E7=AE=97=20=E5=A6=82=E6=9E=9C=E5=BD=93?=
=?UTF-8?q?=E5=89=8D=E6=97=B6=E9=97=B4=E6=AE=B5=E4=B8=8D=E5=AD=98=E5=9C=A8?=
=?UTF-8?q?,=20=E9=BB=98=E8=AE=A4=E5=BE=80=E5=89=8D=E6=89=BE,=20=E5=89=8D?=
=?UTF-8?q?=E9=9D=A2=E6=B2=A1=E6=9C=89,=E5=BE=80=E5=90=8E=E6=89=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-manage-server/pom.xml | 5 ++
.../dao/BatteryStationHdFeeStandardDao.java | 11 +++++
.../BatteryStationHdFeeStandardDetailDao.java | 7 ++-
...StationHdFeeStandardDetailServiceImpl.java | 25 ++++++----
...atteryStationHdFeeStandardServiceImpl.java | 29 ++++++-----
.../SwapOrderBasicFeeComponent.java | 29 ++++++-----
...atteryStationHdFeeStandardDetailMapper.xml | 17 +++++++
.../BatteryStationHdFeeStandardMapper.xml | 49 +++++++++++++++++--
8 files changed, 132 insertions(+), 40 deletions(-)
diff --git a/cloud-manage-server/pom.xml b/cloud-manage-server/pom.xml
index 5a38262..430ee79 100644
--- a/cloud-manage-server/pom.xml
+++ b/cloud-manage-server/pom.xml
@@ -80,6 +80,11 @@
cn.hutool
hutool-crypto
+
+ junit
+ junit
+ test
+
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java
index 61d882e..74da1eb 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java
@@ -17,4 +17,15 @@ public interface BatteryStationHdFeeStandardDao extends BaseMapper listFeeStandard(@Param("stationCode") String stationCode, @Param("day") String day);
+ /***
+ * 订单结算时, 没有找到合适的时间范围, 默认找最新的一个
+ * @param stationCode
+ * @return
+ */
+ List orderCreateBeforeFeeEndStandard(@Param("stationCode") String stationCode, @Param("day") String day);
+ List orderCreateAfterFeeBeginStandard(@Param("stationCode") String stationCode, @Param("day") String day);
+
+
+ Boolean existsData(@Param("stationCode") String stationCode, @Param("begin") String begin, @Param("end") String end, @Param("pkId")Integer pkId);
+
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDetailDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDetailDao.java
index 887691e..8062e38 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDetailDao.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDetailDao.java
@@ -1,9 +1,11 @@
package com.evotech.hd.cloud.dao;
-import java.util.List;
-
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandardDetail;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalTime;
+import java.util.List;
/**
* @author zrb
@@ -13,4 +15,5 @@ public interface BatteryStationHdFeeStandardDetailDao extends BaseMapper getDetailById(Integer id);
+ Boolean existsData(@Param("standardId") Integer standardId, @Param("begin") LocalTime begin, @Param("end") LocalTime end, @Param("pkId")Integer pkId);
}
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardDetailServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardDetailServiceImpl.java
index c5e03bc..7061904 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardDetailServiceImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardDetailServiceImpl.java
@@ -1,17 +1,16 @@
package com.evotech.hd.cloud.service.impl;
-import java.util.Date;
-import java.util.List;
-
-import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.evotech.hd.cloud.dao.BatteryStationHdFeeStandardDetailDao;
import com.evotech.hd.cloud.service.BatteryStationHdFeeStandardDetailService;
import com.evotech.hd.common.core.entity.Result;
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandardDetail;
import com.evotech.hd.common.core.enums.CodeMsg;
-
import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
@Service
@@ -22,11 +21,12 @@ public class BatteryStationHdFeeStandardDetailServiceImpl implements BatteryStat
@Override
public Result add(BatteryStationHdFeeStandardDetail bsfsd) {
- boolean b = batteryStationHdFeeStandardDetailDao.exists(new QueryWrapper()
- .or(i -> i.and(j -> j.le("time_begin", bsfsd.getTimeBegin()).ge("time_end", bsfsd.getTimeBegin()))
- .or(j -> j.le("time_begin", bsfsd.getTimeEnd()).ge("time_end", bsfsd.getTimeEnd()))
- .or(j -> j.ge("time_begin", bsfsd.getTimeBegin()).le("time_end", bsfsd.getTimeEnd())))
- .eq("standard_id", bsfsd.getStandardId()));
+// boolean b = batteryStationHdFeeStandardDetailDao.exists(new QueryWrapper()
+// .or(i -> i.and(j -> j.le("time_begin", bsfsd.getTimeBegin()).ge("time_end", bsfsd.getTimeBegin()))
+// .or(j -> j.le("time_begin", bsfsd.getTimeEnd()).ge("time_end", bsfsd.getTimeEnd()))
+// .or(j -> j.ge("time_begin", bsfsd.getTimeBegin()).le("time_end", bsfsd.getTimeEnd())))
+// .eq("standard_id", bsfsd.getStandardId()));
+ boolean b = batteryStationHdFeeStandardDetailDao.existsData(bsfsd.getStandardId(), bsfsd.getTimeBegin(), bsfsd.getTimeEnd(), null);
if (b) {
return new Result().error("换电站费用标准明细时间冲突!");
}
@@ -49,6 +49,11 @@ public class BatteryStationHdFeeStandardDetailServiceImpl implements BatteryStat
@Override
public Result update(BatteryStationHdFeeStandardDetail bsfsd) {
+
+ boolean b = batteryStationHdFeeStandardDetailDao.existsData(bsfsd.getStandardId(), bsfsd.getTimeBegin(), bsfsd.getTimeEnd(), bsfsd.getPkId());
+ if (b) {
+ return new Result().error("换电站费用标准明细时间冲突!");
+ }
int n = batteryStationHdFeeStandardDetailDao.updateById(bsfsd);
if (n == 1) {
return new Result().success(n);
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardServiceImpl.java
index b097da6..0791acc 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardServiceImpl.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationHdFeeStandardServiceImpl.java
@@ -1,11 +1,5 @@
package com.evotech.hd.cloud.service.impl;
-import java.util.Date;
-import java.util.List;
-
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.evotech.hd.cloud.dao.BatteryStationHdFeeStandardDao;
import com.evotech.hd.cloud.dao.BatteryStationHdFeeStandardDetailDao;
@@ -14,8 +8,12 @@ import com.evotech.hd.common.core.entity.Result;
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandard;
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandardDetail;
import com.evotech.hd.common.core.enums.CodeMsg;
-
import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
@Service
public class BatteryStationHdFeeStandardServiceImpl implements BatteryStationHdFeeStandardService {
@@ -27,11 +25,14 @@ public class BatteryStationHdFeeStandardServiceImpl implements BatteryStationHdF
@Override
public Result add(BatteryStationHdFeeStandard bsfs) {
- boolean b = batteryStationHdFeeStandardDao.exists(new QueryWrapper()
- .or(i -> i.and(j -> j.le("day_begin", bsfs.getDayBegin()).ge("day_end", bsfs.getDayBegin()))
- .or(j -> j.le("day_begin", bsfs.getDayEnd()).ge("day_end", bsfs.getDayEnd()))
- .or(j -> j.ge("day_begin", bsfs.getDayBegin()).le("day_end", bsfs.getDayEnd())))
- .eq("station_code", bsfs.getStationCode()));
+// boolean b = batteryStationHdFeeStandardDao.exists(new QueryWrapper()
+// .or(i -> i.and(j -> j.le("day_begin", bsfs.getDayBegin()).ge("day_end", bsfs.getDayBegin()))
+// .or(j -> j.le("day_begin", bsfs.getDayEnd()).ge("day_end", bsfs.getDayEnd()))
+// .or(j -> j.ge("day_begin", bsfs.getDayBegin()).le("day_end", bsfs.getDayEnd())))
+// .eq("station_code", bsfs.getStationCode()));
+ boolean b = batteryStationHdFeeStandardDao.existsData(bsfs.getStationCode(), bsfs.getDayBegin(), bsfs.getDayEnd(), null);
+
+
if (b) {
return new Result().error("换电站费用标准日期冲突!");
}
@@ -57,6 +58,10 @@ public class BatteryStationHdFeeStandardServiceImpl implements BatteryStationHdF
@Override
public Result update(BatteryStationHdFeeStandard bsfs) {
+ boolean b = batteryStationHdFeeStandardDao.existsData(bsfs.getStationCode(), bsfs.getDayBegin(), bsfs.getDayEnd(), bsfs.getPkId());
+ if (b) {
+ return new Result().error("换电站费用标准日期冲突!");
+ }
int n = batteryStationHdFeeStandardDao.updateById(bsfs);
if (n == 1) {
return new Result().success(n);
diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/components/SwapOrderBasicFeeComponent.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/components/SwapOrderBasicFeeComponent.java
index b67eebd..b648c11 100644
--- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/components/SwapOrderBasicFeeComponent.java
+++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/components/SwapOrderBasicFeeComponent.java
@@ -1,21 +1,20 @@
package com.evotech.hd.cloud.utils.components;
-import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.List;
-
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
import com.evotech.hd.cloud.dao.BatteryStationHdFeeStandardDao;
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandard;
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandardDetail;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
-
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.DateUtil;
import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
@Slf4j
@Component
@@ -34,7 +33,15 @@ public class SwapOrderBasicFeeComponent {
public OrderSwapBattery orderBasicFee(OrderSwapBattery osb) {
// 根据换电站编码和订单时间查询费用标准列表
List list = batteryStationHdFeeStandardDao.listFeeStandard(osb.getStationCode(), DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
- log.info("换电站编码{}时间{}单费用计算参数========>:{}", DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER),osb.getStationCode(),JSONUtil.toJsonStr(osb));
+ if(CollectionUtils.isEmpty(list)){
+ list = batteryStationHdFeeStandardDao.orderCreateBeforeFeeEndStandard(osb.getStationCode(), DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
+ }
+ if(CollectionUtils.isEmpty(list)){
+ list = batteryStationHdFeeStandardDao.orderCreateAfterFeeBeginStandard(osb.getStationCode(), DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
+ }
+
+
+ log.info("换电站编码{}时间{}订单费用计算参数========>:{}, 费用标准信息:{}", DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER),osb.getStationCode(),JSONUtil.toJsonStr(osb),JSONUtil.toJsonStr(list));
// 如果费用标准列表不为空,说明找到了相关的费用标准
if (!list.isEmpty()) {
// 获取第一个费用标准
diff --git a/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardDetailMapper.xml b/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardDetailMapper.xml
index 980b9c4..c7c4348 100644
--- a/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardDetailMapper.xml
+++ b/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardDetailMapper.xml
@@ -32,4 +32,21 @@
standard_id = #{id}
+
+
+
+
diff --git a/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml b/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml
index 588de7f..6bb7dcf 100644
--- a/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml
+++ b/cloud-manage-server/src/main/resources/mapper/BatteryStationHdFeeStandardMapper.xml
@@ -40,12 +40,51 @@
where
a.station_code = #{stationCode}
- and DATE_FORMAT(a.day_begin,'%Y-%m-%d') <=DATE_FORMAT(#{day},'%Y-%m-%d')
-
-
- and DATE_FORMAT(a.day_end,'%Y-%m-%d') >= DATE_FORMAT(#{day},'%Y-%m-%d')
+ and DATE_FORMAT(a.day_begin,'%m-%d') <=DATE_FORMAT(#{day},'%m-%d')
+ and DATE_FORMAT(a.day_end,'%m-%d') >= DATE_FORMAT(#{day},'%m-%d')
order by a.pk_id desc
-
+
+
+
+
+
+
+
+
+