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 - + + + + + + + + +