diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 09f87dcfc..167ebb8a8 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -64,6 +64,7 @@ import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.SnUtils; import com.jsowell.pile.vo.base.MemberWalletVO; import com.jsowell.pile.vo.base.PileInfoVO; +import com.jsowell.pile.vo.uniapp.BillingPriceVO; import com.jsowell.pile.vo.uniapp.MemberVO; import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; import com.jsowell.pile.vo.web.*; @@ -249,6 +250,16 @@ public class SpringBootTestController { @Autowired private HuaWeiService huaWeiService; + @Test + public void queryBillingPriceTest() { + String stationId = "19"; + List billingPriceVOS = pileBillingTemplateService.queryBillingPriceOld(stationId); + System.out.println("老版:" + JSON.toJSONString(billingPriceVOS)); + + List billingPriceVOS1 = pileBillingTemplateService.queryBillingPrice(stationId); + System.out.println("新版:" + JSON.toJSONString(billingPriceVOS1)); + } + @Test public void queryPaymentRefundTest() { String paymentId = "002212023122615542010585629628950949888"; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java index 7638be1df..49a391940 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java @@ -115,7 +115,10 @@ public interface PileBillingTemplateService { */ List queryBillingPrice(String stationId); - /** + List queryBillingPriceOld(String stationId); + + + /** * 通过桩sn号查询计费模板信息 * * @param pileSn 桩sn diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java index df13fcc46..c93941106 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java @@ -42,6 +42,7 @@ import java.math.BigDecimal; import java.time.LocalTime; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -371,7 +372,6 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic LocalTime localTime = LocalTime.now(); String now = LocalTime.of(localTime.getHour(), localTime.getMinute(), localTime.getSecond()).toString(); // 通过站点id查询计费模板 - // BillingTemplateVO billingTemplateVO = pileBillingTemplateMapper.selectBillingTemplateByStationId(stationId); BillingTemplateVO billingTemplateVO = queryUsedBillingTemplate(stationId); if (Objects.nonNull(billingTemplateVO)) { result = new CurrentTimePriceDetails(); @@ -380,7 +380,6 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic result.setDateTime(localTime.toString()); result.setFreeTime(billingTemplateVO.getFreeTime()); result.setOccupyFee(billingTemplateVO.getOccupyFee()); - List billingDetailList = billingTemplateVO.getBillingDetailList(); for (BillingDetailVO detailVO : billingDetailList) { List applyTimeList = detailVO.getApplyTime(); @@ -390,7 +389,6 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic // 将桩的费率存入stationVO BigDecimal electricityPrice = detailVO.getElectricityPrice(); BigDecimal servicePrice = detailVO.getServicePrice(); - result.setElectricityPrice(electricityPrice.toString()); result.setServicePrice(servicePrice.toString()); result.setTotalPrice(electricityPrice.add(servicePrice).toString()); @@ -398,6 +396,27 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic } } } + + // 查询站点的集团会员计费模板 + BillingTemplateVO preferentialBillingTemplate = this.queryPreferentialBillingTemplate(stationId); + if (Objects.nonNull(preferentialBillingTemplate) && Objects.nonNull(result) ) { + List billingDetailList = billingTemplateVO.getBillingDetailList(); + for (BillingDetailVO detailVO : billingDetailList) { + List applyTimeList = detailVO.getApplyTime(); + for (String applyTime : applyTimeList) { + boolean b = DateUtils.checkTime(now + "-" + now, applyTime); + if (b) { + // 将桩的费率存入stationVO + BigDecimal electricityPrice = detailVO.getElectricityPrice(); + BigDecimal servicePrice = detailVO.getServicePrice(); + result.setVipElectricityPrice(electricityPrice.toString()); + result.setVipServicePrice(servicePrice.toString()); + result.setVipTotalPrice(electricityPrice.add(servicePrice).toString()); + } + } + } + } + // log.info("通过站点id查询当前时间的收费详情 stationId:{}, result:{}", stationId, JSON.toJSONString(result)); return result; } @@ -477,6 +496,11 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic return 1; } + /** + * 根据站点id查询优惠计费模板 + * @param stationId + * @return + */ @Override public BillingTemplateVO queryPreferentialBillingTemplate(String stationId) { return pileBillingTemplateMapper.queryPreferentialBillingTemplate(stationId); @@ -611,7 +635,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic * @return */ @Override - public List queryBillingPrice(String stationId) { + public List queryBillingPriceOld(String stationId) { // 查询站点当前计费模板 有缓存 BillingTemplateVO billingTemplateVO = queryUsedBillingTemplate(stationId); if (billingTemplateVO == null) { @@ -663,6 +687,85 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic return resultList; } + @Override + public List queryBillingPrice(String stationId) { + // 查询站点当前计费模板 有缓存 + BillingTemplateVO billingTemplateVO = queryUsedBillingTemplate(stationId); + if (billingTemplateVO == null) { + return Lists.newArrayList(); + } + + Map billingDetailVOMap = Maps.newHashMap(); + Map preferentialBillingDetailVOMap = Maps.newHashMap(); + + List billingDetailList = billingTemplateVO.getBillingDetailList(); + if (CollectionUtils.isNotEmpty(billingDetailList)) { + billingDetailVOMap = billingDetailList.stream().collect(Collectors.toMap(BillingDetailVO::getTimeType, Function.identity(), (k1, k2) -> k1)); + } + + // 查询站点的集团会员计费模板 + BillingTemplateVO preferentialBillingTemplate = queryPreferentialBillingTemplate(stationId); + if (preferentialBillingTemplate != null) { + List preferentialBillingDetailList = preferentialBillingTemplate.getBillingDetailList(); + if (CollectionUtils.isNotEmpty(preferentialBillingDetailList)) { + preferentialBillingDetailVOMap = preferentialBillingDetailList.stream().collect(Collectors.toMap(BillingDetailVO::getTimeType, Function.identity(), (k1, k2) -> k1)); + } + } + + // + EchoBillingTemplateVO echoBillingTemplateVO = queryPileBillingTemplateById(Long.parseLong(billingTemplateVO.getTemplateId())); + // 时段清单 + List timeArray = echoBillingTemplateVO.getTimeArray(); + log.info("计费模板时段:{}", JSONObject.toJSONString(timeArray)); + + List resultList = Lists.newArrayList(); + for (BillingTimeDTO billingTimeDTO : timeArray) { + BillingPriceVO vo = new BillingPriceVO(); + String type = billingTimeDTO.getType(); + + // 普通计费模板价格 + BillingDetailVO billingDetailVO = billingDetailVOMap.get(type); + if (Objects.nonNull(billingDetailVO)) { + // 电费 + vo.setElectricityPrice(billingDetailVO.getElectricityPrice().toString()); + // 服务费 + vo.setServicePrice(billingDetailVO.getServicePrice().toString()); + // 总费用 + vo.setTotalPrice(billingDetailVO.getElectricityPrice().add(billingDetailVO.getServicePrice()).toString()); + } + + // 优惠计费模板价格 + BillingDetailVO preferentialBillingDetailVO = preferentialBillingDetailVOMap.get(type); + if (Objects.nonNull(preferentialBillingDetailVO)) { + // vip电费 + vo.setVipElectricityPrice(preferentialBillingDetailVO.getElectricityPrice().toString()); + // vip服务费 + vo.setVipServicePrice(preferentialBillingDetailVO.getServicePrice().toString()); + // vip总费用 + vo.setVipTotalPrice(preferentialBillingDetailVO.getElectricityPrice().add(preferentialBillingDetailVO.getServicePrice()).toString()); + } + + // 计费模板id + vo.setTemplateId(billingTemplateVO.getTemplateId()); + // 计费模板编号 + vo.setTemplateCode(billingTemplateVO.getTemplateCode()); + // 发布时间 + vo.setPublishTime(billingTemplateVO.getPublishTime()); + // 开始时间 + vo.setStartTime(billingTimeDTO.getStartTime()); + // 结束时间 + String endTime = StringUtils.equals("24:00", billingTimeDTO.getEndTime()) ? "23:59" : billingTimeDTO.getEndTime(); + vo.setEndTime(endTime); + // 时段类型 + vo.setTimeType(type); + // 是否当前时间 + boolean in = DateUtils.isIn(LocalTime.now(), LocalTime.parse(vo.getStartTime()), LocalTime.parse(vo.getEndTime())); + vo.setIsCurrentTime(in ? Constants.ONE : Constants.ZERO); + resultList.add(vo); + } + return resultList; + } + public static void main(String[] args) { // 21:30-23:00 String startTime = "01:30"; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index 75f8b149f..21d7119b6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -510,6 +510,10 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { stationVO.setTotalPrice(currentTimePriceDetails.getTotalPrice()); stationVO.setFreeTime(currentTimePriceDetails.getFreeTime()); stationVO.setOccupyFee(currentTimePriceDetails.getOccupyFee()); + // vip价 + stationVO.setVipElectricityPrice(currentTimePriceDetails.getVipElectricityPrice()); + stationVO.setVipServicePrice(currentTimePriceDetails.getVipServicePrice()); + stationVO.setVipTotalPrice(currentTimePriceDetails.getVipTotalPrice()); } stationVOList.add(stationVO); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/base/StationInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/base/StationInfoVO.java index b1202be86..7333dacb9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/base/StationInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/base/StationInfoVO.java @@ -58,6 +58,21 @@ public class StationInfoVO { */ private String totalPrice; + /** + * vip电费 + */ + private String vipElectricityPrice; + + /** + * 服务费 每度单价 + */ + private String vipServicePrice; + + /** + * 电费 + 服务费 每度单价 + */ + private String vipTotalPrice; + /** * 停车费率描述 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java index c96ca2804..f0f55fa9c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java @@ -42,6 +42,21 @@ public class BillingPriceVO { */ private String totalPrice; + /** + * vip电费 + */ + private String vipElectricityPrice; + + /** + * 服务费 每度单价 + */ + private String vipServicePrice; + + /** + * 电费 + 服务费 每度单价 + */ + private String vipTotalPrice; + /** * 时段类型(1-尖时;2-峰时;3-平时;4-谷时) * @see BillingTimeTypeEnum diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java index f50cb8c03..da475d7f7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java @@ -42,6 +42,21 @@ public class CurrentTimePriceDetails { */ private String totalPrice; + /** + * vip电费 + */ + private String vipElectricityPrice; + + /** + * 服务费 每度单价 + */ + private String vipServicePrice; + + /** + * 电费 + 服务费 每度单价 + */ + private String vipTotalPrice; + /** * 占桩免费时长 */