update 电单车查询收费标准

This commit is contained in:
Lemon
2025-12-15 10:06:15 +08:00
parent 5b959eca97
commit 819785667e
3 changed files with 68 additions and 26 deletions

View File

@@ -211,4 +211,6 @@ public interface PileBillingTemplateService {
* 查询优惠计费模板
*/
BillingTemplateVO queryPreferentialBillingTemplate(String stationId);
CurrentTimePriceDetails getCurrentTimePriceDetailsForEBike(String stationId);
}

View File

@@ -4,7 +4,6 @@ import com.alibaba.fastjson2.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.primitives.Bytes;
import com.jsowell.common.YouDianUtils;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.vo.AuthorizedDeptVO;
@@ -17,7 +16,6 @@ import com.jsowell.common.util.id.Seq;
import com.jsowell.pile.domain.*;
import com.jsowell.pile.dto.BillingTimeDTO;
import com.jsowell.pile.dto.CreateOrUpdateBillingTemplateDTO;
import com.jsowell.pile.dto.ImportBillingTemplateDTO;
import com.jsowell.pile.mapper.PileBillingTemplateMapper;
import com.jsowell.pile.service.MemberGroupService;
import com.jsowell.pile.service.PileBillingTemplateService;
@@ -433,15 +431,36 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
*
* @param stationId 站点id
*/
// @Override
@Override
public CurrentTimePriceDetails getCurrentTimePriceDetailsForEBike(String stationId) {
CurrentTimePriceDetails result = new CurrentTimePriceDetails();
CurrentTimePriceDetails result = null;
// 查询当前时段电费
LocalTime localTime = LocalTime.now();
String now = LocalTime.of(localTime.getHour(), localTime.getMinute(), localTime.getSecond()).toString();
// 通过站点id查询计费模板
BillingTemplateVO billingTemplateVO = queryUsedBillingTemplateForEBike(stationId);
if (billingTemplateVO !=null){
result.setTotalPrice(String.valueOf(billingTemplateVO.getFlatElectricityPrice()));
}
return result;
if (Objects.nonNull(billingTemplateVO)) {
result = new CurrentTimePriceDetails();
result.setTemplateCode(billingTemplateVO.getTemplateCode());
result.setStationId(stationId);
result.setDateTime(localTime.toString());
result.setFreeTime(billingTemplateVO.getFreeTime());
result.setOccupyFee(billingTemplateVO.getOccupyFee());
List<BillingDetailVO> billingDetailList = billingTemplateVO.getBillingDetailList();
for (BillingDetailVO detailVO : billingDetailList) {
List<String> 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.setElectricityPrice(electricityPrice.toString());
result.setServicePrice(servicePrice.toString());
result.setTotalPrice(electricityPrice.add(servicePrice).toString());
}
}
}
}
@@ -451,22 +470,22 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
* @param pileSn
* @return
*/
@Override
public CurrentTimePriceDetails getCurrentTimePriceDetailsByPileType(String stationId , String pileSn) {
// 使用工具类判断是否为电单车桩
// boolean isEBike = YouDianUtils.isEBikePileSn(pileSn);
// 判断桩号是否为汽车桩号
Boolean result = YKCUtils.checkEVPileSn(pileSn);
if (result) {
log.info("走电动汽车逻辑");
// 电动汽车:调用电动汽车计费模板查询方法
return getCurrentTimePriceDetails(stationId);
} else {
log.info("走电单车方法");
// 电单车:调用电单车计费模板查询方法
return getCurrentTimePriceDetailsForEBike(stationId);
}
// @Override
// public CurrentTimePriceDetails getCurrentTimePriceDetailsByPileType(String stationId , String pileSn) {
// // 使用工具类判断是否为电单车桩
// // boolean isEBike = YouDianUtils.isEBikePileSn(pileSn);
// // 判断桩号是否为汽车桩号
// Boolean result = YKCUtils.checkEVPileSn(pileSn);
//
// if (result) {
// log.info("走电动汽车逻辑");
// // 电动汽车:调用电动汽车计费模板查询方法
// return getCurrentTimePriceDetails(stationId);
// } else {
// log.info("走电单车方法");
// // 电单车:调用电单车计费模板查询方法
// return getCurrentTimePriceDetailsForEBike(stationId);
// }
}

View File

@@ -13,6 +13,7 @@ import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.common.util.http.HttpUtils;
import com.jsowell.pile.domain.MemberBasicInfo;
import com.jsowell.pile.domain.OrderBasicInfo;
@@ -21,6 +22,7 @@ import com.jsowell.pile.service.OrderBasicInfoService;
import com.jsowell.pile.service.PileBillingTemplateService;
import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails;
import com.jsowell.pile.vo.uniapp.customer.SendMessageVO;
import com.jsowell.pile.vo.web.BillingTemplateVO;
import com.jsowell.wxpay.config.WeixinLoginProperties;
import com.jsowell.wxpay.dto.AppletTemplateMessageSendDTO;
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
@@ -239,9 +241,28 @@ public class WxAppletRemoteService {
startChargingMessage.setStationName(sendMessageVO.getStationName()); // 站点名称
// 订单编号
startChargingMessage.setOrderCode(sendMessageVO.getOrderCode());
String orderCode = sendMessageVO.getOrderCode();
startChargingMessage.setOrderCode(orderCode);
// 查询订单信息
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
if (orderBasicInfo == null) {
return null;
}
String pileSn = orderBasicInfo.getPileSn();
Boolean result = YKCUtils.checkEVPileSn(pileSn);
// 收费标准
CurrentTimePriceDetails currentTimePriceDetails = pileBillingTemplateService.getCurrentTimePriceDetailsByPileType(sendMessageVO.getStationId(),sendMessageVO.getPileSn());
CurrentTimePriceDetails currentTimePriceDetails = new CurrentTimePriceDetails();
if (result) {
// 查询电动汽车收费标准
currentTimePriceDetails = pileBillingTemplateService.getCurrentTimePriceDetails(sendMessageVO.getStationId());
}else {
// 查询电单车收费标准
currentTimePriceDetails = pileBillingTemplateService.getCurrentTimePriceDetailsForEBike(sendMessageVO.getStationId());
}
// 收费标准
// CurrentTimePriceDetails currentTimePriceDetails = pileBillingTemplateService.getCurrentTimePriceDetailsByPileType(sendMessageVO.getStationId(),sendMessageVO.getPileSn());
startChargingMessage.setTotalPrice(currentTimePriceDetails.getTotalPrice() + " 元/度");
// 枪口编号