From 15dcbd07dfb421e81bf2401cc37b8a6bca6d4211 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 24 十月 2025 18:34:49 +0800
Subject: [PATCH] 修改bug
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 2709 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 1,394 insertions(+), 1,315 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index 7936512..070bbbc 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -23,7 +23,6 @@
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient;
import com.ruoyi.integration.api.feignClient.SendMessageClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
@@ -33,6 +32,7 @@
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.api.feignClient.*;
import com.ruoyi.integration.api.model.*;
+import com.ruoyi.integration.api.vo.ChargingOrderVo;
import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
import com.ruoyi.integration.api.vo.StartChargeResult;
import com.ruoyi.order.api.dto.SettlementConfirmAdd;
@@ -52,6 +52,9 @@
import com.ruoyi.order.service.TChargingOrderService;
import com.ruoyi.order.service.TOrderEvaluateService;
import com.ruoyi.order.service.*;
+import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService;
+import com.ruoyi.order.util.mongodb.service.TransactionRecordService;
+import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
import com.ruoyi.order.vo.EndOfChargePageInfo;
import com.ruoyi.order.vo.OrderCountByDate;
import com.ruoyi.order.vo.StatisticsOfBatteryVO;
@@ -69,10 +72,14 @@
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
+import org.redisson.Redisson;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -95,7 +102,7 @@
/**
* <p>
- * 服务实现类
+ * 服务实现类
* </p>
*
* @author xiaochen
@@ -105,7 +112,7 @@
public class TChargingOrderServiceImpl extends ServiceImpl<TChargingOrderMapper, TChargingOrder> implements TChargingOrderService {
private Logger log = LoggerFactory.getLogger(TChargingOrderServiceImpl.class);
-
+
@Resource
private ChargingGunClient chargingGunClient;
@Resource
@@ -119,10 +126,10 @@
private AppUserCarClient appUserCarClient;
@Resource
private AppUserClient appUserClient;
-
+
@Resource
private ChargingPileClient chargingPileClient;
-
+
@Resource
private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
@@ -136,10 +143,10 @@
private AliPaymentClient aliPaymentClient;
@Resource
private H5AliPaymentClient h5AliPaymentClient;
-
+
@Resource
private AppCouponClient appCouponClient;
-
+
@Resource
private AppUserVipDetailClient appUserVipDetailClient;
@@ -147,47 +154,47 @@
private RedisService redisService;
@Resource
- private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
+ private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
@Resource
private TCECClient tcecClient;
-
+
@Resource
private SendMessageClient sendMessageClient;
-
+
@Resource
private TOrderEvaluateService orderEvaluateService;
@Resource
private AccountingStrategyDetailClient accountingStrategyDetailClient;
-
+
@Resource
private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient;
-
+
@Resource
private AccountingStrategyClient accountingStrategyClient;
-
+
@Resource
- private PlatformStartChargingReplyClient platformStartChargingReplyClient;
-
+ private PlatformStartChargingReplyService platformStartChargingReplyService;
+
@Resource
private TChargingOrderRefundService chargingOrderRefundService;
-
+
@Resource
private PlatformStopChargingReplyClient platformStopChargingReplyClient;
-
+
@Resource
private AccountingStrategyOrderService accountingStrategyOrderService;
-
+
@Resource
private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService;
-
+
@Resource
private InviteUserClient inviteUserClient;
-
+
@Resource
private AppUserIntegralChangeClient appUserIntegralChangeClient;
-
+
@Resource
private IntegralRuleClient integralRuleClient;
@@ -203,9 +210,6 @@
@Resource
private SecurityDetectionClient securityDetectionClient;
- @Resource
- private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
-
//计数器
private Map<String, Integer> counter_map = new HashMap<>();
@@ -216,18 +220,23 @@
private OperatorClient operatorClient;
@Resource
- private TransactionRecordClient transactionRecordClient;
+ private TransactionRecordService transactionRecordService;
@Resource
private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
@Resource
private TOrderAppealService orderAppealService;
-
-
-
-
+
+ @Autowired
+ private RedissonClient redissonClient;
+
+ @Resource
+ private ChargingMessageClient chargingMessageClient;
+
+
/**
* 获取小程序充电记录列表数据
+ *
* @param query
* @return
*/
@@ -268,6 +277,7 @@
/**
* 获取充电订单明细
+ *
* @param id 订单id
* @return
*/
@@ -286,18 +296,22 @@
myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode());
String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData();
myChargingOrderInfo.setName(name);
- if(Objects.nonNull(chargingOrder.getAppUserCarId())){
+ if (Objects.nonNull(chargingOrder.getAppUserCarId())) {
TAppUserCar tAppUserCar = appUserCarClient.getCarById(chargingOrder.getAppUserCarId().toString()).getData();
- if(null != tAppUserCar){
+ if (null != tAppUserCar) {
myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
- }else{
+ } else {
myChargingOrderInfo.setLicensePlate("无");
}
- }else{
+ } else {
myChargingOrderInfo.setLicensePlate(chargingOrder.getPlateNum());
}
- myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
- myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
+ if (null != chargingOrder.getStartTime()) {
+ myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
+ }
+ if (null != chargingOrder.getEndTime()) {
+ myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
+ }
myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount());
myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount());
@@ -309,14 +323,14 @@
.orderByAsc(TChargingOrderAccountingStrategy::getStartTime)
);
myChargingOrderInfo.setStageCost(stageCost);
- List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
- if(null != dataList){
+ List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
+ if (null != dataList) {
//在MongoDB中获取数据
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
List<UploadRealTimeMonitoringData> dataLists = new ArrayList<>();
String t = "";
for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : dataList) {
- if(!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)){
+ if (!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)) {
dataLists.add(uploadRealTimeMonitoringData);
t = sdf.format(uploadRealTimeMonitoringData.getCreate_time());
}
@@ -338,7 +352,7 @@
myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
//在MongoDB中获取数据
List<Integer> soc = dataLists.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
- List<BigDecimal> po = dataLists.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
+ List<BigDecimal> po = dataLists.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000), 2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
List<Map<String, Object>> power = new ArrayList<>();
for (int i = 0; i < time.size(); i++) {
Map<String, Object> map = new HashMap<>();
@@ -354,13 +368,14 @@
myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L < System.currentTimeMillis() ? 0 : 1);
long count = orderAppealService.count(Wrappers.lambdaQuery(TOrderAppeal.class)
.eq(TOrderAppeal::getOrderId, id));
- myChargingOrderInfo.setIsAppeal(count>0?0:1);
+ myChargingOrderInfo.setIsAppeal(count > 0 ? 0 : 1);
return myChargingOrderInfo;
}
/**
* 获取待开票订单列表
+ *
* @param query
* @return
*/
@@ -394,11 +409,11 @@
/**
* 充电支付
+ *
* @param addChargingOrder
* @return
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)
public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) {
Long userId = tokenService.getLoginUserApplet().getUserId();
TAppUser appUser = appUserClient.getUserById(userId).getData();
@@ -407,32 +422,32 @@
.eq(TChargingOrder::getRechargePaymentStatus, 1).eq(TChargingOrder::getDelFlag, 0));
for (TChargingOrder tChargingOrder : list) {
Integer rechargePaymentType = tChargingOrder.getRechargePaymentType();
- if(1 == rechargePaymentType){
+ if (1 == rechargePaymentType) {
NotifyV3PayDecodeRespBody data = wxPaymentClient.queryOrderInfo(tChargingOrder.getCode()).getData();
- if(null != data){
+ if (null != data) {
String trade_state = data.getTrade_state();
//支付失败,删除无效的订单
- if(trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")){
+ if (trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")) {
this.removeById(tChargingOrder.getId());
}
}
}
- if(2 == rechargePaymentType){
+ if (2 == rechargePaymentType) {
AliQueryOrder data = aliPaymentClient.query(tChargingOrder.getCode()).getData();
- if(null != data){
+ if (null != data) {
//支付失败,删除无效的订单
String tradeStatus = data.getTradeStatus();
- if(null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")){
+ if (null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")) {
this.removeById(tChargingOrder.getId());
}
}
}
- if(3 == rechargePaymentType){
+ if (3 == rechargePaymentType) {
AliQueryOrder data = h5AliPaymentClient.query(tChargingOrder.getCode()).getData();
- if(null != data){
+ if (null != data) {
//支付失败,删除无效的订单
String tradeStatus = data.getTradeStatus();
- if(null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")){
+ if (null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")) {
this.removeById(tChargingOrder.getId());
}
}
@@ -441,53 +456,53 @@
//检查当前枪是否是正在使用中
TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId())
- .in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0));
- if(null != one){
+ .in(TChargingOrder::getStatus, Arrays.asList(3)).eq(TChargingOrder::getDelFlag, 0));
+ if (null != one) {
return AjaxResult.error("充电枪正在充电中,启动失败");
}
//查询当前充电枪是否有正在支付的订单
one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId())
.eq(TChargingOrder::getAppUserCarId, userId).eq(TChargingOrder::getRechargePaymentStatus, 1).eq(TChargingOrder::getDelFlag, 0));
- if(null != one){
+ if (null != one) {
//查询三方支付数据,支付中直接结束三方订单
- if(1 == one.getRechargePaymentType()){
+ if (1 == one.getRechargePaymentType()) {
NotifyV3PayDecodeRespBody data = wxPaymentClient.queryOrderInfo(one.getCode()).getData();
- if(null != data){
+ if (null != data) {
String trade_state = data.getTrade_state();
//支付失败,删除无效的订单
- if(trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")){
+ if (trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")) {
this.removeById(one.getId());
- }else{
+ } else {
//结束第三方支付,删除订单
wxPaymentClient.close(one.getCode());
this.removeById(one.getId());
}
}
}
- if(2 == one.getRechargePaymentType()){
+ if (2 == one.getRechargePaymentType()) {
AliQueryOrder data = aliPaymentClient.query(one.getCode()).getData();
- if(null != data){
+ if (null != data) {
String trade_state = data.getTradeStatus();
//支付失败,删除无效的订单
- if(trade_state.equals("TRADE_CLOSED")){
+ if (trade_state.equals("TRADE_CLOSED")) {
this.removeById(one.getId());
}
- if(trade_state.equals("WAIT_BUYER_PAY")){
+ if (trade_state.equals("WAIT_BUYER_PAY")) {
//结束第三方支付,删除订单
aliPaymentClient.close(one.getCode());
this.removeById(one.getId());
}
}
}
- if(3 == one.getRechargePaymentType()){
+ if (3 == one.getRechargePaymentType()) {
AliQueryOrder data = h5AliPaymentClient.query(one.getCode()).getData();
- if(null != data){
+ if (null != data) {
String trade_state = data.getTradeStatus();
//支付失败,删除无效的订单
- if(trade_state.equals("TRADE_CLOSED")){
+ if (trade_state.equals("TRADE_CLOSED")) {
this.removeById(one.getId());
}
- if(trade_state.equals("WAIT_BUYER_PAY")){
+ if (trade_state.equals("WAIT_BUYER_PAY")) {
//结束第三方支付,删除订单
h5AliPaymentClient.close(one.getCode());
this.removeById(one.getId());
@@ -506,9 +521,9 @@
chargingOrder.setOrderClassification(1);
chargingOrder.setAppUserId(userId);
chargingOrder.setAppUserCarId(addChargingOrder.getAppUserCarId());
- if(null != addChargingOrder.getAppUserCarId()){
+ if (null != addChargingOrder.getAppUserCarId()) {
TAppUserCar userCar = appUserCarClient.getCarById(addChargingOrder.getAppUserCarId().toString()).getData();
- if(null != userCar){
+ if (null != userCar) {
chargingOrder.setPlateNum(userCar.getLicensePlate());
}
}
@@ -527,20 +542,20 @@
Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
- if(null == accountingStrategyId){
+ if (null == accountingStrategyId) {
//查询站点上面的计费策略
accountingStrategyId = site.getAccountingStrategyId();
}
TAccountingStrategy accountingStrategy = accountingStrategyClient.getAccountingStrategyById(accountingStrategyId).getData();
//直营站点才可以享受会员折扣
- if(null != appUser.getVipId() && 1 == site.getBusinessCategory()){
+ if (null != appUser.getVipId() && 1 == site.getBusinessCategory()) {
TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
BigDecimal discount = null;
- if(1 == vip.getType()){
+ if (1 == vip.getType()) {
//普通会员折扣使用积分策略上的折扣,且有最高优惠金额
discount = accountingStrategy.getDiscount();
- }else{
+ } else {
//内部会员使用会员信息设置的折扣,没有最高优惠金额
discount = vip.getDiscount();
}
@@ -548,15 +563,15 @@
getAppUserVipDetail.setAppUserId(appUser.getId());
getAppUserVipDetail.setVipId(appUser.getVipId());
TAppUserVipDetail vipDetail = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
- if(null != vipDetail){
+ if (null != vipDetail) {
Integer chargeNum = vipDetail.getChargeNum();
- if(0 < chargeNum){
+ if (0 < chargeNum) {
chargingOrder.setVipDiscount(discount);
}
}
}
this.save(chargingOrder);
-
+
//添加订单的计费策略
List<TAccountingStrategyDetail> strategyDetailList = accountingStrategyDetailClient.getListByAccountingStrategyId(accountingStrategyId).getData();
AccountingStrategyOrder accountingStrategyOrder = new AccountingStrategyOrder();
@@ -568,13 +583,15 @@
AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
+ accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now());
+ accountingStrategyDetailOrder.setDelFlag(false);
list1.add(accountingStrategyDetailOrder);
}
accountingStrategyDetailOrderService.saveBatch(list1);
-
+
//会员优惠折扣将其计入增加充电时长(增加总充电金额)
//如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
- if(1 == addChargingOrder.getPaymentType()){
+ if (1 == addChargingOrder.getPaymentType()) {
PaymentOrder paymentOrder = new PaymentOrder();
paymentOrder.setCode(chargingOrder.getCode());
paymentOrder.setAmount(addChargingOrder.getPaymentAmount());
@@ -584,7 +601,7 @@
Map<String, Object> data = wxPaymentClient.orderPay(paymentOrder).getData();
return AjaxResult.success(data);
}
- if(2 == addChargingOrder.getPaymentType()){
+ if (2 == addChargingOrder.getPaymentType()) {
AliPaymentReq req = new AliPaymentReq();
req.setOutTradeNo(chargingOrder.getCode());
req.setTotalAmount(addChargingOrder.getPaymentAmount().toString());
@@ -593,11 +610,11 @@
req.setBody("充电充值");
req.setNotifyUrl("/payment/ali/callBack");
AliPaymentResp data = aliPaymentClient.payment(req).getData();
- if(null != data){
+ if (null != data) {
return AjaxResult.success(data);
}
}
- if(3 == addChargingOrder.getPaymentType()){
+ if (3 == addChargingOrder.getPaymentType()) {
AliPaymentReq req = new AliPaymentReq();
req.setOutTradeNo(chargingOrder.getCode());
req.setTotalAmount(addChargingOrder.getPaymentAmount().toString());
@@ -607,8 +624,8 @@
req.setNotifyUrl("/payment/aliH5/callBack");
req.setReturnUrl(addChargingOrder.getReturnUrl());
String data = h5AliPaymentClient.payment(req).getData();
- if(StringUtils.hasLength(data)){
- return AjaxResult.success("操作成功",data);
+ if (StringUtils.hasLength(data)) {
+ return AjaxResult.success("操作成功", data);
}
}
throw new RuntimeException("无效的支付方式");
@@ -617,24 +634,24 @@
/**
* 支付成功后的回调处理逻辑
- * @param paymentType 支付方式:1=微信,2=支付宝
- * @param out_trade_no 业务流水号
+ *
+ * @param paymentType 支付方式:1=微信,2=支付宝
+ * @param out_trade_no 业务流水号
* @param transaction_id 三方支付流水号
- * @param attach 附加数据
+ * @param attach 附加数据
* @return
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)
public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) {
TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no));
- if(chargingOrder.getRechargePaymentStatus() == 2){
+ if (chargingOrder.getRechargePaymentStatus() == 2) {
return AjaxResult.success();
}
chargingOrder.setRechargePaymentStatus(2);
chargingOrder.setRechargeSerialNumber(transaction_id);
chargingOrder.setStatus(2);
chargingOrder.setPayTime(LocalDateTime.now());
-
+
//添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据
PreChargeCheck preChargeCheck = new PreChargeCheck();
preChargeCheck.setElectronicLockLock(false);
@@ -662,12 +679,12 @@
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
//判断会员是否还有充电优惠次数,计算会员优惠的折扣金额
- if(null != appUser.getVipId()){
+ if (null != appUser.getVipId()) {
GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
getAppUserVipDetail.setVipId(appUser.getVipId());
TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
- if(null != data && data.getChargeNum() > 0){
+ if (null != data && data.getChargeNum() > 0) {
//计算折扣
List<AccountingStrategyDetailOrder> list = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
list.get(list.size() - 1).setEndTime("23:59");
@@ -678,14 +695,14 @@
Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", ""));
Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", ""));
String[] split = accountingStrategyDetailOrder.getEndTime().split(":");
- if(sta || (now >= start && now < end)){
+ if (sta || (now >= start && now < end)) {
sta = true;
Calendar end_calendar = Calendar.getInstance();
end_calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
end_calendar.set(Calendar.MINUTE, Integer.valueOf(split[1]));
//到此策略结束的秒数
- if(null == nowTimeMillis){
+ if (null == nowTimeMillis) {
String[] split1 = accountingStrategyDetailOrder.getStartTime().split(":");
Calendar start_calendar = Calendar.getInstance();
start_calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
@@ -701,32 +718,32 @@
BigDecimal s_server_amount = s_degrees.multiply(accountingStrategyDetailOrder.getServiceCharge());
//计算剩余金额能充多长时间的电
long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue();
- if(times > m){
+ if (times > m) {
//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(m)));
rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
nowTimeMillis = null;
- }else{
+ } else {
serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(times)));
break;
}
}
}
- if(null != discount){
+ if (null != discount) {
discountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(discount));
}
- if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
+ if (discountAmount.compareTo(BigDecimal.ZERO) >= 0) {
//计算会员最大优惠金额
TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
BigDecimal maximumDeduction = vip.getMaximumDeduction();
//普通会员有最高优惠限制
- if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
+ if (vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0) {
discountAmount = maximumDeduction;
}
}
discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
- if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
+ if (discountAmount.compareTo(BigDecimal.ZERO) >= 0) {
data.setChargeNum(data.getChargeNum() - 1);
appUserVipDetailClient.updateAppUserVipDetail(data);
}
@@ -738,8 +755,8 @@
chargingOrder.setChargeAmount(account_balance);
chargingOrder.setVipDiscountAmount(discountAmount);
this.updateById(chargingOrder);
-
-
+
+
TChargingPile chargingPile = chargingPileClient.getChargingPileById(tChargingGun.getChargingPileId()).getData();
//调用远程启动充电消息
PlatformStartCharging platformStartCharging = new PlatformStartCharging();
@@ -767,26 +784,28 @@
/**
* 定时检测mongodb数据库数据
+ *
* @param id
* @return
*/
- public boolean timingDetection(Long id){
+ public boolean timingDetection(Long id) {
TChargingOrder chargingOrder = this.getById(id);
- if(chargingOrder.getStatus() != 2){
+ if (chargingOrder.getStatus() != 2) {
return true;
}
String code = chargingOrder.getCode();
String key = "AQJC_" + chargingOrder.getChargingGunId();
- List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
+ List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code);
log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
- if(data.size() != 0){
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
+ if (data.size() != 0) {
PlatformStartChargingReply platformStartChargingReply = data.get(1);
Integer startup_result = platformStartChargingReply.getStartup_result();
Integer failure_cause = platformStartChargingReply.getFailure_cause();
Integer counter = counter_map.get(code);
PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
//5分钟内还未插枪则取消充电,退回金额。
- if(failure_cause == 5 && (null == counter || counter < 1800)){
+ if (failure_cause == 5 && (null == counter || counter < 1800)) {
counter = (null == counter ? 0 : counter) + 1;
counter_map.put(code, counter);
//启动失败
@@ -798,36 +817,42 @@
//清除计时器中的无效数据
counter_map.remove(code);
- TChargingOrder order = new TChargingOrder();
- order.setId(id);
- order.setAppUserId(chargingOrder.getAppUserId());
- if(0 == startup_result){
+ if (0 == startup_result) {
//启动失败
preChargeCheck1.setStartupSuccess(3);
preChargeCheck1.setFailureCause(failure_cause);
//启动失败后取消订单,退款操作
refund(code);
- order.setStatus(-1);
- order.setEndMode(0);
- }else{
+ chargingOrder.setStatus(-1);
+ chargingOrder.setEndMode(0);
+ } else {
//启动成功
preChargeCheck1.setStartupSuccess(2);
- order.setStatus(3);
- order.setStartTime(LocalDateTime.now());
+ chargingOrder.setStatus(3);
+ chargingOrder.setStartTime(LocalDateTime.now());
}
- this.updateById(order);
+ this.updateById(chargingOrder);
+ if (chargingOrder.getStatus() == 3) {
+ //推送监管平台订单状态
+ new Thread(() -> {
+ ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
+ BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
+ chargingMessageClient.pushOrderStatus(chargingOrderVo);
+ }).start();
+ }
+
redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
//推送三方平台订单状态
- if(2 == chargingOrder.getOrderSource()){
+ if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
}
return true;
- }else{
+ } else {
Integer counter = boot_failed_map.get(code);
log.info(code + ":-------------------未上传开启充电结果-------------------" + counter);
PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
//5分钟内未启动成功,退回金额。
- if(null == counter || counter < 1800){
+ if (null == counter || counter < 1800) {
counter = (null == counter ? 0 : counter) + 1;
boot_failed_map.put(code, counter);
//启动失败
@@ -852,7 +877,7 @@
this.updateById(order);
redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
//推送三方平台订单状态
- if(2 == chargingOrder.getOrderSource()){
+ if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
}
return true;
@@ -862,16 +887,17 @@
/**
* 修改安全检测数据
+ *
* @param securityDetection
*/
@Override
- public void securityDetection(SecurityDetectionVO securityDetection){
+ public void securityDetection(SecurityDetectionVO securityDetection) {
GetChargingGunByCode code = new GetChargingGunByCode();
code.setCharging_pile_code(securityDetection.getCharging_pile_code());
code.setCharging_gun_code(securityDetection.getCharging_gun_code());
TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingGun.getId());
- if(null != preChargeCheck1){
+ if (null != preChargeCheck1) {
preChargeCheck1.setElectronicLockLock(true);
preChargeCheck1.setInsulationTesting(true);
preChargeCheck1.setSecureConnectionDetection(securityDetection.getSecure_connection() == 1);
@@ -881,6 +907,7 @@
/**
* 启动充电应答
+ *
* @param message
*/
@Override
@@ -888,17 +915,18 @@
Integer startup_result = message.getStartup_result();
Integer failure_cause = message.getFailure_cause();
TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, message.getTransaction_serial_number()));
- if(order.getStatus() != 2){
+ if (order.getStatus() != 2) {
return;
}
+ Site site = siteClient.getSiteByIds(Arrays.asList(order.getSiteId())).getData().get(0);
String code = order.getCode();
- PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + order.getChargingGunId());
- if(null != preChargeCheck1){
+ PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + order.getChargingGunId());
+ if (null != preChargeCheck1) {
preChargeCheck1.setElectronicLockLock(true);
preChargeCheck1.setInsulationTesting(true);
preChargeCheck1.setStartupSuccess(1);
}
- if(0 == startup_result){
+ if (0 == startup_result) {
//启动失败
preChargeCheck1.setStartupSuccess(3);
preChargeCheck1.setFailureCause(failure_cause);
@@ -906,7 +934,7 @@
refund(code);
order.setStatus(-1);
order.setEndMode(0);
- }else{
+ } else {
//启动成功
preChargeCheck1.setStartupSuccess(2);
order.setStatus(3);
@@ -914,13 +942,24 @@
TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
chargingGun.setStatus(4);
chargingGunClient.updateChargingGunById(chargingGun);
- //推送状态给三方平台
- tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
+ if(1 == site.getIsOpenSynchronization()){
+ //推送状态给三方平台
+ tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 4);
+ }
}
redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
this.updateById(order);
+
+ if (3 == order.getStatus()) {
+ //推送监管平台订单状态
+ new Thread(() -> {
+ ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
+ BeanUtils.copyProperties(order, chargingOrderVo);
+ chargingMessageClient.pushOrderStatus(chargingOrderVo);
+ }).start();
+ }
//推送三方平台启动充电结果
- if(2 == order.getOrderSource()){
+ if (2 == order.getOrderSource()) {
StartChargeResult result = new StartChargeResult();
result.setStartChargeSeq(order.getStartChargeSeq());
result.setStartChargeSeqStat(3 == order.getStatus() ? 2 : 4);
@@ -928,20 +967,24 @@
result.setStartTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
Operator operator = operatorClient.getOperatorById(order.getOperatorId()).getData();
result.setOperatorID(operator.getOperatorId());
- tcecClient.notificationStartChargeResult(result);
+ if(1 == site.getIsOpenSynchronization()){
+ tcecClient.notificationStartChargeResult(result);
+ tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
+ }
- tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
+
}
}
/**
* 启动失败后的退款,取消订单
+ *
* @param code
*/
- public void refund(String code){
+ public void refund(String code) {
log.info(code + ":-------------------充电启动失败,执行退款-------------------");
TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
- if(chargingOrder.getOrderSource() == 1 && chargingOrder.getStatus() == 2){
+ if (chargingOrder.getOrderSource() == 1 && chargingOrder.getStatus() == 2) {
Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
//构建退款明细
@@ -960,7 +1003,7 @@
chargingOrderRefund.setRefundRemark("全额退款");
chargingOrderRefund.setRefundTotalAmount(rechargeAmount);
chargingOrderRefund.setPayAmount(rechargeAmount);
- if(1 == rechargePaymentType){
+ if (1 == rechargePaymentType) {
WxPaymentRefundModel model = new WxPaymentRefundModel();
model.setOut_trade_no(chargingOrder.getCode());
model.setOut_refund_no(chargingOrderRefund.getRefundCode());
@@ -972,7 +1015,7 @@
amount.setCurrency("CNY");
model.setAmount(amount);
R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
- if(200 == orderR.getCode()){
+ if (200 == orderR.getCode()) {
chargingOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
@@ -981,36 +1024,36 @@
chargingOrderRefund.setRefundFee(refund_fee);
chargingOrderRefundService.updateById(chargingOrderRefund);
//回退会员折扣次数
- if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+ if (chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
getAppUserVipDetail.setVipId(appUser.getVipId());
TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
- if(null != data){
+ if (null != data) {
data.setChargeNum(data.getChargeNum() + 1);
appUserVipDetailClient.updateAppUserVipDetail(data);
}
}
}
}
- if(2 == rechargePaymentType){
+ if (2 == rechargePaymentType) {
RefundReq dto = new RefundReq();
dto.setOutTradeNo(chargingOrder.getCode());
dto.setOutRequestNo(chargingOrderRefund.getCode());
dto.setRefundAmount(rechargeAmount.toString());
dto.setRefundReason("充电失败,取消充电订单");
RefundResp resp = aliPaymentClient.refund(dto).getData();
- if(null != resp){
+ if (null != resp) {
chargingOrderRefundService.save(chargingOrderRefund);
//回退会员折扣次数
- if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+ if (chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
getAppUserVipDetail.setVipId(appUser.getVipId());
TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
- if(null != data){
+ if (null != data) {
data.setChargeNum(data.getChargeNum() + 1);
appUserVipDetailClient.updateAppUserVipDetail(data);
}
@@ -1024,28 +1067,28 @@
chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
}
}
- if(3 == rechargePaymentType){
+ if (3 == rechargePaymentType) {
RefundReq dto = new RefundReq();
dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
dto.setOutRequestNo(chargingOrderRefund.getCode());
dto.setRefundAmount(rechargeAmount.toString());
dto.setRefundReason("充电失败,取消充电订单");
RefundResp resp = h5AliPaymentClient.refund(dto).getData();
- if(null != resp && "10000".equals(resp.getCode())){
+ if (null != resp && "10000".equals(resp.getCode())) {
chargingOrderRefundService.save(chargingOrderRefund);
//回退会员折扣次数
- if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+ if (chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
getAppUserVipDetail.setVipId(appUser.getVipId());
TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
- if(null != data){
+ if (null != data) {
data.setChargeNum(data.getChargeNum() + 1);
appUserVipDetailClient.updateAppUserVipDetail(data);
}
}
-
+
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
@@ -1054,16 +1097,15 @@
chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
}
}
-
+
}
}
-
- public void refund1(String code, BigDecimal money){
+ public void refund1(String code, BigDecimal money) {
log.info(code + ":-------------------充电成功,执行手动退款-------------------");
TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
- if(chargingOrder.getOrderSource() == 1){
+ if (chargingOrder.getOrderSource() == 1) {
BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
//构建退款明细
@@ -1082,7 +1124,7 @@
chargingOrderRefund.setRefundRemark("充电完成退款,手动退款");
chargingOrderRefund.setRefundTotalAmount(money);
chargingOrderRefund.setPayAmount(money);
- if(1 == rechargePaymentType){
+ if (1 == rechargePaymentType) {
WxPaymentRefundModel model = new WxPaymentRefundModel();
model.setOut_trade_no(chargingOrder.getCode());
model.setOut_refund_no(chargingOrderRefund.getRefundCode());
@@ -1094,7 +1136,7 @@
amount.setCurrency("CNY");
model.setAmount(amount);
R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
- if(200 == orderR.getCode()){
+ if (200 == orderR.getCode()) {
chargingOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
@@ -1104,14 +1146,14 @@
chargingOrderRefundService.updateById(chargingOrderRefund);
}
}
- if(2 == rechargePaymentType){
+ if (2 == rechargePaymentType) {
RefundReq dto = new RefundReq();
dto.setOutTradeNo(chargingOrder.getCode());
dto.setOutRequestNo(chargingOrderRefund.getCode());
dto.setRefundAmount(money.toString());
dto.setRefundReason("充电完成退款");
RefundResp resp = aliPaymentClient.refund(dto).getData();
- if(null != resp){
+ if (null != resp) {
chargingOrderRefundService.save(chargingOrderRefund);
try {
Thread.sleep(1000);
@@ -1121,14 +1163,14 @@
chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
}
}
- if(3 == rechargePaymentType){
+ if (3 == rechargePaymentType) {
RefundReq dto = new RefundReq();
dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
dto.setOutRequestNo(chargingOrderRefund.getCode());
dto.setRefundAmount(money.toString());
dto.setRefundReason("充电完成退款");
RefundResp resp = h5AliPaymentClient.refund(dto).getData();
- if(null != resp && "10000".equals(resp.getCode())){
+ if (null != resp && "10000".equals(resp.getCode())) {
chargingOrderRefundService.save(chargingOrderRefund);
try {
Thread.sleep(1000);
@@ -1138,20 +1180,21 @@
chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
}
}
-
+
}
}
-
-
+
+
/**
* 启动失败后微信退款的回调处理
+ *
* @param out_refund_no
* @param refund_id
* @param tradeState
* @param success_time
* @return
*/
- public AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time){
+ public AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time) {
TChargingOrderRefund one = chargingOrderRefundService.getOne(new LambdaQueryWrapper<TChargingOrderRefund>().eq(TChargingOrderRefund::getRefundCode, out_refund_no));
one.setRefundSerialNumber(refund_id);
one.setRefundStatus(2);
@@ -1168,12 +1211,11 @@
this.updateById(chargingOrder);
return AjaxResult.success();
}
-
-
-
-
+
+
/**
* 获取充电中的详情
+ *
* @param id
* @return
*/
@@ -1182,7 +1224,7 @@
Long userId = tokenService.getLoginUserApplet().getUserId();
TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, userId).eq(TChargingOrder::getChargingGunId, id)
.eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0).orderByDesc(TChargingOrder::getStartTime).last(" limit 0, 1"));
- if(null == one || !one.getAppUserId().equals(userId)){
+ if (null == one || !one.getAppUserId().equals(userId)) {
return null;
}
ChargingDetails chargingDetails = new ChargingDetails();
@@ -1194,8 +1236,8 @@
chargingDetails.setCode(one.getCode());
chargingDetails.setStatus(one.getStatus());
chargingDetails.setChargingCost(one.getResidualAmount());
- UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
- if(null != data){
+ UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(one.getCode());
+ if (null != data) {
chargingDetails.setChargeCurrent(data.getOutput_current());
chargingDetails.setChargeVoltage(data.getOutput_voltage());
BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000), new MathContext(4, RoundingMode.HALF_EVEN));
@@ -1206,7 +1248,7 @@
Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60);
Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60);
chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m));
- if(null != one.getAppUserCarId()){
+ if (null != one.getAppUserCarId()) {
TAppUserCar appUserCar = appUserCarClient.getCarById(one.getAppUserCarId().toString()).getData();
// 续航 = 续航里程 * soc
BigDecimal multiply = new BigDecimal(data.getSoc()).divide(new BigDecimal(100)).multiply(new BigDecimal(appUserCar.getEndurance()));
@@ -1219,36 +1261,36 @@
/**
* 停止充电操作
+ *
* @param id 订单id
* @return
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)
public AjaxResult stopCharging(String id) {
TChargingOrder order = this.getById(id);
Integer status = order.getStatus();
- if(status != 3){
+ if (status != 3) {
return AjaxResult.error("还未开始充电");
}
- if(status == 4 || status == 5){
+ if (status == 4 || status == 5) {
return AjaxResult.error("不能重复操作");
}
Long userId = tokenService.getLoginUserApplet().getUserId();
- if(!order.getAppUserId().equals(userId)){
+ if (!order.getAppUserId().equals(userId)) {
+ log.info("【" + order.getCode() + "】主动停止充电失败,用户权限不足。当前登录用户id:{},订单用户id:{}", userId, order.getAppUserId());
return AjaxResult.error("权限不足");
}
- TChargingOrder chargingOrder = new TChargingOrder();
- chargingOrder.setId(Long.valueOf(id));
- chargingOrder.setAppUserId(order.getAppUserId());
- chargingOrder.setEndTime(LocalDateTime.now());
- chargingOrder.setStatus(4);
- chargingOrder.setEndMode(1);
- this.updateById(chargingOrder);
+ order.setEndTime(LocalDateTime.now());
+ order.setStatus(4);
+ order.setEndMode(1);
+ this.updateById(order);
+ log.info("【" + order.getCode() + "】主动停止充电成功,订单状态已被修改。");
+
String code1 = order.getCode();
TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
//异步线程处理停机
ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
- cachedThreadPool.execute(()->{
+ cachedThreadPool.execute(() -> {
//调用硬件停止充电,停止成功后开始计算费用退款
TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData();
PlatformStopCharging platformStopCharging = new PlatformStopCharging();
@@ -1258,8 +1300,9 @@
log.info(code1 + ":-------------------远程停止充电请求-------------------");
log.info(platformStopCharging.toString());
});
+ Site site = siteClient.getSiteByIds(Arrays.asList(order.getSiteId())).getData().get(0);
//推送三方平台
- if(2 == order.getOrderSource()){
+ if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
}
@@ -1269,9 +1312,10 @@
/**
* 结束充电后处理用户标签数据
+ *
* @param chargingOrder
*/
- public void editUserTag(TChargingOrder chargingOrder){
+ public void editUserTag(TChargingOrder chargingOrder) {
//处理用户标签数据
List<TUserTag> data = userTagClient.getAllUserTag().getData();
//累计充电次数
@@ -1287,7 +1331,7 @@
String end = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
.eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0));
- if(null == data1 && count1 >= times){
+ if (null == data1 && count1 >= times) {
data1 = new TAppUserTag();
data1.setAppUserId(chargingOrder.getAppUserId());
data1.setUserTagId(tUserTag.getId());
@@ -1311,7 +1355,7 @@
String end = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
.eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0));
- if(null == data1 && count1 >= times){
+ if (null == data1 && count1 >= times) {
data1 = new TAppUserTag();
data1.setAppUserId(chargingOrder.getAppUserId());
data1.setUserTagId(tUserTag.getId());
@@ -1324,46 +1368,47 @@
/**
* 推荐奖励(被推荐首单奖励)
+ *
* @param chargingOrder
*/
- public void referralReward(TChargingOrder chargingOrder){
+ public void referralReward(TChargingOrder chargingOrder) {
//处理推荐奖励(被推荐首单奖励)
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
long count = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
.in(TChargingOrder::getStatus, Arrays.asList(4, 5)).eq(TChargingOrder::getDelFlag, 0));
- if(null != appUser.getInviteUserId() && 1 == count){
+ if (null != appUser.getInviteUserId() && 1 == count) {
TIntegralRule integralRule = integralRuleClient.getSet().getData();
String inviteUsersToEarnPoints = integralRule.getInviteUsersToEarnPoints();
JSONObject jsonObject = JSON.parseObject(inviteUsersToEarnPoints);
Integer num1 = jsonObject.getInteger("num1");
TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData();
- if(null != appUser1.getVipId()){
+ if (null != appUser1.getVipId()) {
TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData();
Integer doubleIntegration = vip.getDoubleIntegration();
//双倍积分
- if(1 == doubleIntegration){
+ if (1 == doubleIntegration) {
num1 *= 2;
}
-
+
}
GetInviteUser query = new GetInviteUser();
query.setAppUserId(appUser1.getId());
query.setBeInvitedAppUserId(chargingOrder.getAppUserId());
TInviteUser inviteUser = inviteUserClient.getInviteUser(query).getData();
- if(null == inviteUser){
+ if (null == inviteUser) {
inviteUser = new TInviteUser();
inviteUser.setAppUserId(appUser1.getId());
inviteUser.setBeInvitedAppUserId(chargingOrder.getAppUserId());
inviteUser.setAward(num1);
inviteUser.setCreateTime(LocalDateTime.now());
inviteUserClient.saveInviteUser(inviteUser);
- }else{
+ } else {
inviteUser.setAward(num1);
inviteUserClient.updateInviteUser(inviteUser);
}
- if(num1 > 0){
+ if (num1 > 0) {
TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
appUserIntegralChange.setCode(code);
@@ -1383,27 +1428,27 @@
}
-
/**
* 停止充电应答结果处理
+ *
* @param platformStopChargingReply
*/
@Override
- public void terminateSuccessfulResponse(PlatformStopChargingReplyVO platformStopChargingReply){
+ public void terminateSuccessfulResponse(PlatformStopChargingReplyVO platformStopChargingReply) {
GetChargingGunByCode code = new GetChargingGunByCode();
code.setCharging_gun_code(platformStopChargingReply.getCharging_gun_code());
code.setCharging_pile_code(platformStopChargingReply.getCharging_pile_code());
TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, chargingGun.getId())
.orderByDesc(TChargingOrder::getEndTime).eq(TChargingOrder::getRechargePaymentStatus, 2).last(" limit 0, 1"));
- if(null != order && order.getStatus() != 4){
+ if (null != order && order.getStatus() != 4) {
return;
}
String code1 = order.getCode();
- if(0 == platformStopChargingReply.getStop_result()){
+ if (0 == platformStopChargingReply.getStop_result()) {
String failure_cause = "";
- switch (platformStopChargingReply.getFailure_cause()){
+ switch (platformStopChargingReply.getFailure_cause()) {
case 0:
failure_cause = "无";
break;
@@ -1418,7 +1463,7 @@
break;
}
log.info(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
- }else{
+ } else {
TChargingOrder chargingOrder = new TChargingOrder();
chargingOrder.setId(order.getId());
chargingOrder.setAppUserId(order.getAppUserId());
@@ -1428,12 +1473,8 @@
}
-
-
-
-
- @Override
- public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
+ @Override
+ public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
TCharingOrderVO tCharingOrderVO = new TCharingOrderVO();
List<TChargingGun> allGun = chargingGunClient.getAllGun().getData();
List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
@@ -1444,22 +1485,22 @@
String startTime2 = null;
String endTime1 = null;
String endTime2 = null;
-
- if (StringUtils.hasLength(dto.getStartTime())){
+
+ if (StringUtils.hasLength(dto.getStartTime())) {
String[] split = dto.getStartTime().split(" - ");
startTime1 = split[0];
startTime2 = split[1];
}
- if (StringUtils.hasLength(dto.getEndTime())){
+ if (StringUtils.hasLength(dto.getEndTime())) {
String[] split = dto.getEndTime().split(" - ");
endTime1 = split[0];
endTime2 = split[1];
}
- PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
-
- if (StringUtils.hasLength(dto.getPhone())){
+ PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
+
+ if (StringUtils.hasLength(dto.getPhone())) {
List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
- if (data.isEmpty()){
+ if (data.isEmpty()) {
tCharingOrderVO.setList(pageInfo);
return tCharingOrderVO;
}
@@ -1471,70 +1512,71 @@
Integer roleType = sysUser.getRoleType();
//如果没传siteId,获取当前登陆人所有的siteIds
List<Integer> siteIds = new ArrayList<>();
- if (dto.getSiteId()==null){
- if (userId != null){
+ if (dto.getSiteId() == null) {
+ if (userId != null) {
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
}
- }else {
+ } else {
siteIds.add(dto.getSiteId());
}
- if (siteIds.isEmpty()){
+ if (siteIds.isEmpty()) {
siteIds.add(-1);
- }else{
- if (roleType == 2){
+ } else {
+ if (roleType == 2) {
List<Integer> integers = new ArrayList<>();
for (Integer siteId : siteIds) {
// 校验有没有这个站点的权限
- List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData();
-
+ List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
+
Boolean b = t1.get(1);
- if (b){
+ if (b) {
integers.add(siteId);
}
}
siteIds = integers;
}
}
- if (siteIds.isEmpty())siteIds.add(-1);
+ if (siteIds.isEmpty()) siteIds.add(-1);
dto.setSiteIds(siteIds);
- List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
- BigDecimal total = new BigDecimal("0");
- long time = 0L;
- BigDecimal electronicMoney = new BigDecimal("0");
- BigDecimal serviceMoney = new BigDecimal("0");
- BigDecimal commissionMoney = new BigDecimal("0");
-// BigDecimal refundMoney = new BigDecimal("0");
- BigDecimal paymentMoney = new BigDecimal("0");
- List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
+ List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
+ BigDecimal total = new BigDecimal("0");
+ long time = 0L;
+ BigDecimal electronicMoney = new BigDecimal("0");
+ BigDecimal serviceMoney = new BigDecimal("0");
+ BigDecimal commissionMoney = new BigDecimal("0");
+// BigDecimal refundMoney = new BigDecimal("0");
+ BigDecimal paymentMoney = new BigDecimal("0");
+ List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
+
for (ChargingOrderVO chargingOrderVO : list) {
- if (roleType == 2){
+ if (roleType == 2) {
for (Integer siteId : siteIds) {
// 校验有没有这个站点的权限
- List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData();
+ List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
chargingOrderVO.setAuthRecord(t1.get(0));
}
}
- chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
- chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
- chargingOrderVO.setUid(chargingOrderVO.getId()+"");
- TChargingGun data3 = allGun.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null);
- TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null);
- if (chargingOrderVO.getSiteId()!=null){
+ chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount() != null ? chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")) : new BigDecimal("0"));
+ chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount() != null ? chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2, BigDecimal.ROUND_DOWN) : new BigDecimal("0"));
+ chargingOrderVO.setUid(chargingOrderVO.getId() + "");
+ TChargingGun data3 = allGun.stream().filter(e -> e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null);
+ TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null);
+ if (chargingOrderVO.getSiteId() != null) {
List<Integer> integers = new ArrayList<>();
integers.add(chargingOrderVO.getSiteId());
Site site = data9.stream().filter(e -> e.getId().equals(chargingOrderVO.getSiteId())).findFirst().orElse(null);
- if (site!=null)chargingOrderVO.setSiteName(site.getName());
+ if (site != null) chargingOrderVO.setSiteName(site.getName());
}
- if (data2!=null && data3!=null){
- chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName());
+ if (data2 != null && data3 != null) {
+ chargingOrderVO.setTerminalName(data2.getName() + "-" + data3.getName());
}
// 充电订单 明细记录
List<TChargingOrderAccountingStrategy> chargingOrderId = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
- if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+ if (chargingOrderVO.getStartTime() != null && chargingOrderVO.getEndTime() != null) {
LocalDateTime startTime = chargingOrderVO.getStartTime();
LocalDateTime endTime = chargingOrderVO.getEndTime();
// 计算时间差 单位秒
@@ -1544,10 +1586,10 @@
BigDecimal electronic_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
chargingOrderVO.setElectrovalence(electronic_reduce);
BigDecimal service_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- if (!chargingOrderVO.getOrderSource().equals(2)){
+ if (!chargingOrderVO.getOrderSource().equals(2)) {
chargingOrderVO.setServiceCharge(service_reduce);
chargingOrderVO.setSharingAmount(BigDecimal.ZERO);
- }else{
+ } else {
chargingOrderVO.setServiceCharge(service_reduce.multiply(new BigDecimal("0.8")));
chargingOrderVO.setSharingAmount(service_reduce.multiply(new BigDecimal("0.2")));
}
@@ -1557,65 +1599,30 @@
chargingOrderVO.setCount(size);
// 用户手机号
TAppUser data = data6.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserId())).findFirst().orElse(null);
- if (data!=null){
+ if (data != null) {
// 车牌号
chargingOrderVO.setPhone(data.getPhone());
List<Long> longs = new ArrayList<>();
- if (chargingOrderVO.getAppUserCarId()!=null){
+ if (chargingOrderVO.getAppUserCarId() != null) {
longs.add(chargingOrderVO.getAppUserCarId());
TAppUserCar tAppUserCar = data4.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserCarId())).findFirst().orElse(null);
- if (tAppUserCar!=null){
+ if (tAppUserCar != null) {
chargingOrderVO.setLicensePlate(tAppUserCar.getLicensePlate());
}
- }else{
+ } else {
chargingOrderVO.setLicensePlate(chargingOrderVO.getPlateNum());
}
-
+
}
}
-
-// List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
-// .eq(TChargingOrderRefund::getRefundStatus,2).list();
-
-
- Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2);
-// for (ChargingOrderVO chargingOrderVO : list1) {
-// if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
-// continue;
-// }
-// List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
-// BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-// BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-// BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
-// electronicMoney = electronicMoney.add(electronic_reduce);
-// total = total.add(chargingCapacity);
-// if (!chargingOrderVO.getOrderSource().equals(2)) {
-// serviceMoney = serviceMoney.add(service_reduce);
-// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
-// }else{
-// serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
-// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
-// }
-// if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
-// LocalDateTime startTime = chargingOrderVO.getStartTime();
-// LocalDateTime endTime = chargingOrderVO.getEndTime();
-// // 计算时间差 单位秒
-// long between = ChronoUnit.SECONDS.between(startTime, endTime);
-// time+=between;
-// }
-//// List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
-//// .collect(Collectors.toList());
-//// for (TChargingOrderRefund tChargingOrderRefund : list2) {
-//// refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
-//// }
-// }
- if(null != map){
- tCharingOrderVO.setTotal(map.get("total")==null?BigDecimal.ZERO:(BigDecimal) map.get("total"));
- tCharingOrderVO.setTime(map.get("time")==null?0L:(Long) map.get("time"));
- tCharingOrderVO.setIncome((map.get("paymentMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
- tCharingOrderVO.setElectronicMoney((map.get("electronicMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
- tCharingOrderVO.setServiceMoney((map.get("serviceMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
- }else{
+ Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2);
+ if (null != map) {
+ tCharingOrderVO.setTotal(map.get("total") == null ? BigDecimal.ZERO : (BigDecimal) map.get("total"));
+ tCharingOrderVO.setTime(map.get("time") == null ? 0L : (Long) map.get("time"));
+ tCharingOrderVO.setIncome((map.get("paymentMoney") == null ? BigDecimal.ZERO : (BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ tCharingOrderVO.setElectronicMoney((map.get("electronicMoney") == null ? BigDecimal.ZERO : (BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ tCharingOrderVO.setServiceMoney((map.get("serviceMoney") == null ? BigDecimal.ZERO : (BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ } else {
tCharingOrderVO.setTotal(BigDecimal.ZERO);
tCharingOrderVO.setTime(0L);
tCharingOrderVO.setIncome(BigDecimal.ZERO);
@@ -1624,18 +1631,18 @@
}
pageInfo.setRecords(list);
tCharingOrderVO.setList(pageInfo);
- return tCharingOrderVO;
- }
-
+ return tCharingOrderVO;
+ }
+
@Override
public R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto) {
- PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(),payOrderQueryDto.getPageSize());
- List<PayOrderDto> list = this.baseMapper.payOrderQuery(pageInfo,payOrderQueryDto);
+ PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(), payOrderQueryDto.getPageSize());
+ List<PayOrderDto> list = this.baseMapper.payOrderQuery(pageInfo, payOrderQueryDto);
for (PayOrderDto payOrderDto : list) {
- if (payOrderDto.getType()==2||payOrderDto.getType()==3){
+ if (payOrderDto.getType() == 2 || payOrderDto.getType() == 3) {
payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
}
- if (payOrderDto.getType()==1&&payOrderDto.getStatus()==3){
+ if (payOrderDto.getType() == 1 && payOrderDto.getStatus() == 3) {
payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
payOrderDto.setOrderAmount(payOrderDto.getOrderAmount());
payOrderDto.setPaymentAmount(payOrderDto.getOrderAmount());
@@ -1644,117 +1651,117 @@
pageInfo.setRecords(list);
return R.ok(pageInfo);
}
-
+
@Override
public R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto) {
- PageInfo<TChargingOrderRefund> pageInfo = new PageInfo<>(chargingRefundDto.getPageCurr(),chargingRefundDto.getPageSize());
- List<TChargingOrderRefund> list = this.baseMapper.getRefundList(pageInfo,chargingRefundDto);
+ PageInfo<TChargingOrderRefund> pageInfo = new PageInfo<>(chargingRefundDto.getPageCurr(), chargingRefundDto.getPageSize());
+ List<TChargingOrderRefund> list = this.baseMapper.getRefundList(pageInfo, chargingRefundDto);
pageInfo.setRecords(list);
-
+
return R.ok(pageInfo);
}
-
+
@Override
public List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto) {
-
+
return this.baseMapper.chargingOrderGroup(chargingPercentProvinceDto);
}
-
+
@Override
public List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds) {
- return this.baseMapper.charge(sixBefore,siteIds);
+ return this.baseMapper.charge(sixBefore, siteIds);
}
-
+
@Override
- public List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore) {
- return this.baseMapper.circle(siteIds,sixBefore);
+ public List<SixCircleDto> circle(List<Integer> siteIds, LocalDate sixBefore) {
+ return this.baseMapper.circle(siteIds, sixBefore);
}
-
+
@Override
public Map<String, Object> countAll(List<Integer> siteIds) {
return this.baseMapper.countAll(siteIds);
}
-
+
@Override
- public List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds) {
+ public List<Map<String, Object>> getSumByType(LocalDate start, LocalDate end, List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getSumByType(start1,end1, siteIds);
+ return this.baseMapper.getSumByType(start1, end1, siteIds);
}
-
+
@Override
- public List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds) {
+ public List<Map<String, Object>> getDateData(LocalDate start, LocalDate end, List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getDateData(start1,end1, siteIds);
+ return this.baseMapper.getDateData(start1, end1, siteIds);
}
-
+
@Override
- public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds) {
+ public List<Map<String, Object>> getWeekData(LocalDate start, LocalDate end, List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getWeekData(start1,end1,siteIds);
+ return this.baseMapper.getWeekData(start1, end1, siteIds);
}
-
+
@Override
- public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds) {
+ public List<Map<String, Object>> getMonthData(LocalDate start, LocalDate end, List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getMonthData(start1,end1,siteIds);
+ return this.baseMapper.getMonthData(start1, end1, siteIds);
}
-
+
@Override
- public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds) {
+ public List<Map<String, Object>> getYearData(LocalDate start, LocalDate end, List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getYearData(start1,end1,siteIds);
+ return this.baseMapper.getYearData(start1, end1, siteIds);
}
-
+
@Resource
private SysUserClient sysUserClient;
-
-
+
+
@Override
public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
String startTime1 = null;
String startTime2 = null;
String endTime1 = null;
String endTime2 = null;
-
+
List<TChargingGun> allGun = chargingGunClient.getAllGun().getData();
List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
-
- if (StringUtils.hasLength(dto.getStartTime())){
+
+ if (StringUtils.hasLength(dto.getStartTime())) {
String[] split = dto.getStartTime().split(" - ");
startTime1 = split[0];
startTime2 = split[1];
}
ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO();
- if (StringUtils.hasLength(dto.getPhone())){
+ if (StringUtils.hasLength(dto.getPhone())) {
List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
- if(data!=null){
- if (!data.isEmpty()){
+ if (data != null) {
+ if (!data.isEmpty()) {
dto.setUserIds(data);
}
- }else{
+ } else {
dto.setUserIds(new ArrayList<Long>());
}
- if (dto.getUserIds().isEmpty()){
+ if (dto.getUserIds().isEmpty()) {
List<Long> carIds = dto.getUserIds();
carIds.add(-1L);
dto.setUserIds(carIds);
}
}
- if (StringUtils.hasLength(dto.getLicensePlate())){
+ if (StringUtils.hasLength(dto.getLicensePlate())) {
List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData();
- if(data!=null){
- if (!data.isEmpty()){
+ if (data != null) {
+ if (!data.isEmpty()) {
dto.setCarIds(data);
}
- }else{
+ } else {
dto.setCarIds(new ArrayList<Long>());
}
- if (dto.getCarIds().isEmpty()){
+ if (dto.getCarIds().isEmpty()) {
List<Long> carIds = dto.getCarIds();
carIds.add(-1L);
dto.setCarIds(carIds);
@@ -1766,27 +1773,27 @@
Integer roleType = sysUser.getRoleType();
//如果没传siteId,获取当前登陆人所有的siteIds
List<Integer> siteIds = new ArrayList<>();
- if (dto.getSiteId()==null){
- if (userId != null){
+ if (dto.getSiteId() == null) {
+ if (userId != null) {
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
}
- }else {
+ } else {
siteIds.add(dto.getSiteId());
}
- if (siteIds.isEmpty()){
+ if (siteIds.isEmpty()) {
siteIds.add(-1);
- }else{
- if (roleType == 2){
+ } else {
+ if (roleType == 2) {
List<Integer> integers = new ArrayList<>();
for (Integer siteId : siteIds) {
// 校验有没有这个站点的权限
- List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData();
-
+ List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
+
Boolean b = t1.get(1);
- if (b){
+ if (b) {
integers.add(siteId);
}
}
@@ -1794,39 +1801,37 @@
}
}
dto.setSiteIds(siteIds);
- PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
- List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
- List<Integer> siteIdsList = list.stream().map(ChargingOrderListVO::getSiteId).collect(Collectors.toList());
- if (siteIdsList.isEmpty())siteIdsList.add(-1);
- List<Site> sites = siteClient.getSiteByIds(siteIdsList).getData();
-
+ PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
+ List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
+ List<Site> sites = siteClient.getSiteAll().getData();
+
for (ChargingOrderListVO chargingOrderListVO : list) {
- if (roleType==2){
+ if (roleType == 2) {
List<Boolean> data = partnerClient.getChargingListMenu(sysUser.getObjectId(), chargingOrderListVO.getSiteId()).getData();
chargingOrderListVO.setAuthInfo(data.get(0));
chargingOrderListVO.setAuthCurve(data.get(1));
}
chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
BigDecimal bigDecimal = new BigDecimal("0.006");
- if (chargingOrderListVO.getOrderAmount()!=null){
+ if (chargingOrderListVO.getOrderAmount() != null) {
chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getRechargeAmount().multiply(bigDecimal));
}
chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
- chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
+ chargingOrderListVO.setUid(chargingOrderListVO.getId() + "");
List<Integer> integers = new ArrayList<>();
integers.add(chargingOrderListVO.getSiteId());
Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
- if (site!=null){
+ if (site != null) {
chargingOrderListVO.setSiteName(site.getName());
}
- if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){
- TChargingGun data1 = allGun.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
- TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
+ if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
+ TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
+ TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
if (data2 != null && data1 != null) {
chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
}
}
- if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){
+ if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
LocalDateTime startTime = chargingOrderListVO.getStartTime();
LocalDateTime endTime = chargingOrderListVO.getEndTime();
// 计算时间差 单位秒
@@ -1834,38 +1839,38 @@
chargingOrderListVO.setChargingSecond(between);
}
// 获取开始SOC 结束soc
- if (chargingOrderListVO.getCode()!=null){
- List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
-
- if (data6!=null && !data6.isEmpty()){
- int min = 100;
- int max = 0;
- for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
- if (uploadRealTimeMonitoringData.getSoc()>max){
- max = uploadRealTimeMonitoringData.getSoc();
+ if (chargingOrderListVO.getCode() != null) {
+ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode());
+
+ if (data6 != null && !data6.isEmpty()) {
+ int min = 100;
+ int max = 0;
+ for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
+ if (uploadRealTimeMonitoringData.getSoc() > max) {
+ max = uploadRealTimeMonitoringData.getSoc();
+ }
+ if (uploadRealTimeMonitoringData.getSoc() != 0 && uploadRealTimeMonitoringData.getSoc() < min) {
+ min = uploadRealTimeMonitoringData.getSoc();
+ }
}
- if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){
- min = uploadRealTimeMonitoringData.getSoc();
- }
- }
- chargingOrderListVO.setEndSoc(max+"");
- chargingOrderListVO.setStartSoc(min+"");
+ chargingOrderListVO.setEndSoc(max + "");
+ chargingOrderListVO.setStartSoc(min + "");
}
}
-
- if (chargingOrderListVO.getAppUserId()!=null){
+
+ if (chargingOrderListVO.getAppUserId() != null) {
TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData();
List<Long> carId = new ArrayList<>();
- if (data3!=null){
+ if (data3 != null) {
if (chargingOrderListVO.getAppUserCarId() != null) {
carId.add(chargingOrderListVO.getAppUserCarId());
- if (!carId.isEmpty()){
+ if (!carId.isEmpty()) {
List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData();
- if (data4!=null && !data4.isEmpty()) {
+ if (data4 != null && !data4.isEmpty()) {
chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
}
}
- }else{
+ } else {
chargingOrderListVO.setLicensePlate(chargingOrderListVO.getPlateNum());
}
chargingOrderListVO.setPhone(data3.getPhone());
@@ -1880,7 +1885,7 @@
BigDecimal gu = new BigDecimal("0");
BigDecimal total = new BigDecimal("0");
for (TChargingOrderAccountingStrategy temp : list2) {
- if (temp.getChargingCapacity() == null){
+ if (temp.getChargingCapacity() == null) {
temp.setChargingCapacity(BigDecimal.ZERO);
}
switch (temp.getType()) {
@@ -1899,47 +1904,47 @@
}
}
total = total.add(jian).add(feng).add(ping).add(gu);
- if (total.compareTo(new BigDecimal("0")) != 0){
+ if (total.compareTo(new BigDecimal("0")) != 0) {
chargingOrderListVO.setElectronicProportion(
- jian.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(尖)/"
- +feng.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(峰)/"
- +ping.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(平)/"
- +gu.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(谷)");
- }else{
+ jian.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(尖)/"
+ + feng.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(峰)/"
+ + ping.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(平)/"
+ + gu.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(谷)");
+ } else {
chargingOrderListVO.setElectronicProportion(
- "0"+"%(尖)/"+
- "0"+"%(峰)/"+
- "0"+"%(平)/"+
- "0"+"%(谷)");
+ "0" + "%(尖)/" +
+ "0" + "%(峰)/" +
+ "0" + "%(平)/" +
+ "0" + "%(谷)");
}
- if (chargingOrderListVO.getOrderSource().equals(2)){
- chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge()!=null?
- chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_HALF_UP)
- :new BigDecimal("0"));
- }else{
+ if (chargingOrderListVO.getOrderSource().equals(2)) {
+ chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge() != null ?
+ chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP)
+ : new BigDecimal("0"));
+ } else {
chargingOrderListVO.setSharingAmount(new BigDecimal("0"));
}
}
// 不分页
- PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1,999999999);
- List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
+ PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999);
+ List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2);
for (ChargingOrderListVO chargingOrderListVO : list1) {
List<Integer> integers = new ArrayList<>();
integers.add(chargingOrderListVO.getSiteId());
Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
- if (site!=null){
+ if (site != null) {
chargingOrderListVO.setSiteName(site.getName());
}
- if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){
+ if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
LocalDateTime startTime = chargingOrderListVO.getStartTime();
LocalDateTime endTime = chargingOrderListVO.getEndTime();
// 计算时间差 单位秒
long between = ChronoUnit.SECONDS.between(startTime, endTime);
chargingOrderListVO.setChargingSecond(between);
}
- if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){
- TChargingGun data1 = allGun.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
- TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
+ if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
+ TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
+ TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
if (data2 != null && data1 != null) {
chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
}
@@ -1959,7 +1964,7 @@
BigDecimal jianElectronic = new BigDecimal("0");
BigDecimal fengElectronic = new BigDecimal("0");
BigDecimal pingElectronic = new BigDecimal("0");
- BigDecimal guElectronic = new BigDecimal("0");
+ BigDecimal guElectronic = new BigDecimal("0");
// 尖峰平谷服务费
BigDecimal jianService = new BigDecimal("0");
BigDecimal fengService = new BigDecimal("0");
@@ -1978,18 +1983,18 @@
BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
electronic = electronic.add(chargingCapacity);
electrovalence = electrovalence.add(periodElectricPrice);
- if (chargingOrderListVO.getOrderSource().equals(2)){
+ if (chargingOrderListVO.getOrderSource().equals(2)) {
serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
- }else{
+ } else {
serviceCharge = serviceCharge.add(periodServicePrice);
paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
}
- if (!chargingOrderListVO.getOrderSource().equals(2)){
+ if (!chargingOrderListVO.getOrderSource().equals(2)) {
List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
.collect(Collectors.toList());
for (TChargingOrderAccountingStrategy temp : list2) {
- switch (temp.getType()){
+ switch (temp.getType()) {
case 1:
jian = jian.add(temp.getChargingCapacity());
jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
@@ -2012,12 +2017,12 @@
break;
}
}
- }else{
+ } else {
List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
.collect(Collectors.toList());
for (TChargingOrderAccountingStrategy temp : list2) {
BigDecimal multiply = temp.getPeriodServicePrice().multiply(new BigDecimal("0.8"));
- switch (temp.getType()){
+ switch (temp.getType()) {
case 1:
jian = jian.add(temp.getChargingCapacity());
jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
@@ -2042,7 +2047,7 @@
}
}
}
-
+
chargingOrderTimeVO.setChargingCapacity(electronic.setScale(2, BigDecimal.ROUND_HALF_EVEN));
chargingOrderTimeVO.setPaymentAmount(paymentAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
chargingOrderTimeVO.setElectrovalence(electrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
@@ -2053,143 +2058,141 @@
BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
// 计算尖峰平谷充电量占比
BigDecimal add2 = jian.add(feng).add(ping).add(gu);
- if (add.compareTo(new BigDecimal("0"))!=0){
- chargingOrderTimeVO.setCapacityProportion(jian+"度/"+feng+"度/"+ping+"度/"+gu+"度-"
- +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
- chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-"
- +jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
- chargingOrderTimeVO.setElectronicProportion(jianElectronic+"元/"+fengElectronic+"元/"+pingElectronic+"元/"+guElectronic+"元-"
- +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
- +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
- }else{
- chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-"
- +"0"+"%/"
- +"0"+"%/"
- +"0"+"%/"
- +"0"+"%");
- chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-"
- +"0"+"%/"
- +"0"+"%/"
- +"0"+"%/"
- +"0"+"%");
- chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-"
- +"0"+"%/"
- +"0"+"%/"
- +"0"+"%/"
- +"0"+"%");
+ if (add.compareTo(new BigDecimal("0")) != 0) {
+ chargingOrderTimeVO.setCapacityProportion(jian + "度/" + feng + "度/" + ping + "度/" + gu + "度-"
+ + jian.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + feng.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + ping.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + gu.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%");
+ chargingOrderTimeVO.setServiceProportion(jianService + "元/" + fengService + "元/" + pingService + "元/" + guService + "元-"
+ + jianService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + fengService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + pingService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + guService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%");
+ chargingOrderTimeVO.setElectronicProportion(jianElectronic + "元/" + fengElectronic + "元/" + pingElectronic + "元/" + guElectronic + "元-"
+ + jianElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + fengElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + pingElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/"
+ + guElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%");
+ } else {
+ chargingOrderTimeVO.setCapacityProportion(jianElectronic + "度/" + fengElectronic + "度/" + pingElectronic + "度/" + guElectronic + "度-"
+ + "0" + "%/"
+ + "0" + "%/"
+ + "0" + "%/"
+ + "0" + "%");
+ chargingOrderTimeVO.setServiceProportion(jianService + "元/" + fengService + "元/" + pingService + "元/" + guService + "元-"
+ + "0" + "%/"
+ + "0" + "%/"
+ + "0" + "%/"
+ + "0" + "%");
+ chargingOrderTimeVO.setElectronicProportion(jian + "元/" + feng + "元/" + ping + "元/" + gu + "元-"
+ + "0" + "%/"
+ + "0" + "%/"
+ + "0" + "%/"
+ + "0" + "%");
}
pageInfo.setRecords(list);
chargingOrderTimeVO.setList(pageInfo);
return chargingOrderTimeVO;
}
-
-
-
+
@Override
public ChargingOrderListInfoVO chargingInfo(String uid) {
- TChargingOrder chargingOrder= this.getById(uid);
+ TChargingOrder chargingOrder = this.getById(uid);
ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime());
chargingOrderListInfoVO.setEndTime(chargingOrder.getEndTime());
chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
BigDecimal bigDecimal = new BigDecimal("0.006");
- if (chargingOrder.getOrderAmount()!=null){
+ if (chargingOrder.getOrderAmount() != null) {
BigDecimal multiply = chargingOrder.getPaymentAmount().multiply(bigDecimal);
chargingOrderListInfoVO.setCommissionAmount(multiply.setScale(2, BigDecimal.ROUND_HALF_UP));
}
chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
- if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){
+ if (chargingOrder.getElectrovalence() != null && chargingOrder.getServiceCharge() != null) {
chargingOrderListInfoVO.setTotal(chargingOrder.getElectrovalence().add(chargingOrder.getServiceCharge()));
- }else{
+ } else {
chargingOrderListInfoVO.setTotal(new BigDecimal("0"));
}
- if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0"))>0){
- if (chargingOrder.getCouponDiscountAmount()!=null&& chargingOrder.getVipDiscountAmount()!=null&& chargingOrder.getSharingAmount()!=null&& chargingOrder.getCommissionAmount()!=null){
+ if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0")) > 0) {
+ if (chargingOrder.getCouponDiscountAmount() != null && chargingOrder.getVipDiscountAmount() != null && chargingOrder.getSharingAmount() != null && chargingOrder.getCommissionAmount() != null) {
chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal().subtract(chargingOrder.getCouponDiscountAmount()).subtract(chargingOrder.getVipDiscountAmount()).subtract(chargingOrder.getSharingAmount()).subtract(chargingOrder.getCommissionAmount()));
- }else{
+ } else {
chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal());
}
- }else{
+ } else {
chargingOrderListInfoVO.setRealTotal(new BigDecimal("0"));
}
chargingOrderListInfoVO.setCode(chargingOrder.getCode());
List<Site> data = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData();
- if (!data.isEmpty()){
+ if (!data.isEmpty()) {
chargingOrderListInfoVO.setSiteName(data.get(0).getName());
chargingOrderListInfoVO.setSiteAddress(data.get(0).getAddress());
}
- if (chargingOrder.getChargingGunId()!=null){
+ if (chargingOrder.getChargingGunId() != null) {
TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
- if (data1!=null){
+ if (data1 != null) {
TChargingPile data2 = chargingPileClient.getChargingPileById(data1.getChargingPileId()).getData();
- if (data2!=null){
+ if (data2 != null) {
chargingOrderListInfoVO.setGunCode(data1.getCode());
- chargingOrderListInfoVO.setTerminalName(data2.getName()+data1.getName());
+ chargingOrderListInfoVO.setTerminalName(data2.getName() + data1.getName());
}
}
}
chargingOrderListInfoVO.setChargingCapacity(chargingOrder.getChargingCapacity());
-
+
chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
-
+
// 获取开始SOC 结束soc
- if (chargingOrder.getCode()!=null){
- List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
- if (data6!=null){
+ if (chargingOrder.getCode() != null) {
+ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
+ if (data6 != null) {
for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
- if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
- uploadRealTimeMonitoringData.getOutput_voltage()!=null){
+ if (uploadRealTimeMonitoringData.getOutput_current() != null &&
+ uploadRealTimeMonitoringData.getOutput_voltage() != null) {
uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage()
- .multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_UP));
+ .multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP));
}
}
- if (!data6.isEmpty()){
- int min = 100;
- int max = 0;
- for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
- if (uploadRealTimeMonitoringData.getSoc()>max){
- max = uploadRealTimeMonitoringData.getSoc();
- }
- if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){
- min = uploadRealTimeMonitoringData.getSoc();
- }
+ if (!data6.isEmpty()) {
+ int min = 100;
+ int max = 0;
+ for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
+ if (uploadRealTimeMonitoringData.getSoc() > max) {
+ max = uploadRealTimeMonitoringData.getSoc();
}
- chargingOrderListInfoVO.setEndSoc(max+"");
- chargingOrderListInfoVO.setStartSoc(min+"");
-
+ if (uploadRealTimeMonitoringData.getSoc() != 0 && uploadRealTimeMonitoringData.getSoc() < min) {
+ min = uploadRealTimeMonitoringData.getSoc();
+ }
+ }
+ chargingOrderListInfoVO.setEndSoc(max + "");
+ chargingOrderListInfoVO.setStartSoc(min + "");
+
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
uploadRealTimeMonitoringData.setCreateTime(simpleDateFormat.format(uploadRealTimeMonitoringData.getCreate_time()));
}
}
}
-
+
chargingOrderListInfoVO.setList(data6);
}
- if (chargingOrderListInfoVO.getStartTime()!=null && chargingOrderListInfoVO.getEndTime()!=null){
+ if (chargingOrderListInfoVO.getStartTime() != null && chargingOrderListInfoVO.getEndTime() != null) {
LocalDateTime startTime = chargingOrderListInfoVO.getStartTime();
LocalDateTime endTime = chargingOrderListInfoVO.getEndTime();
// 计算时间差 单位秒
long between = ChronoUnit.SECONDS.between(startTime, endTime);
- chargingOrderListInfoVO.setChargingSecond(between+"");
+ chargingOrderListInfoVO.setChargingSecond(between + "");
}
-
- if (chargingOrder.getAppUserCarId()!=null){
+
+ if (chargingOrder.getAppUserCarId() != null) {
List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData();
- if (data3!=null && !data3.isEmpty()) {
+ if (data3 != null && !data3.isEmpty()) {
chargingOrderListInfoVO.setLicensePlate(data3.get(0).getLicensePlate());
}
- }else{
+ } else {
chargingOrderListInfoVO.setLicensePlate(chargingOrder.getPlateNum());
}
chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime());
@@ -2198,11 +2201,11 @@
chargingOrderListInfoVO.setUid(chargingOrder.getId().toString());
chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount());
- if (chargingOrder.getOrderSource().equals(2)){
+ if (chargingOrder.getOrderSource().equals(2)) {
chargingOrderListInfoVO.setSharingAmount(chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP));
- }else{
+ } else {
chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
-
+
}
// 查询费用明细列表
List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery()
@@ -2211,16 +2214,16 @@
chargingOrderListInfoVO.setList1(list);
return chargingOrderListInfoVO;
}
-
-
+
+
/**
* 处理充电订单实时监控数据相关的业务逻辑
+ *
* @param query
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)
public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
- if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
+ if (com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())) {
//获取当前的计费策略
TChargingOrder chargingOrder1 = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number()));
BigDecimal residualAmount = chargingOrder1.getRechargeAmount().add(chargingOrder1.getVipDiscountAmount()).subtract(query.getPaid_amount());
@@ -2228,7 +2231,7 @@
chargingOrder.setId(chargingOrder1.getId());
chargingOrder.setAppUserId(chargingOrder1.getAppUserId());
chargingOrder.setResidualAmount(residualAmount);
- if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){
+ if (query.getOutput_current().compareTo(BigDecimal.ZERO) != 0) {
BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000));
chargingOrder.setChargingPower(divide);
chargingOrder.setCurrent(query.getOutput_current());
@@ -2243,22 +2246,18 @@
}
chargingOrder.setChargingCapacity(query.getCharging_degree());
chargingOrder.setElectricity(query.getCharging_degree());
- chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
- BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder1.getCode()).getData();
- if(null != data){
- chargingOrder.setNeedElec(data.getBms_current_requirements());
- }
+ chargingOrder.setTotalElectricity(new BigDecimal(query.getSoc()));
this.updateById(chargingOrder);
}
}
-
-
+
+
/**
* 自动结束充电后的处理逻辑
+ *
* @param orderCode
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)
public void endCharge(String orderCode, Integer endMode) {
TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode));
TChargingOrder chargingOrder = new TChargingOrder();
@@ -2267,9 +2266,10 @@
chargingOrder.setEndMode(endMode);
this.updateById(chargingOrder);
}
-
+
/**
* 异常结束充电处理逻辑
+ *
* @param orderCode
*/
@Override
@@ -2280,38 +2280,57 @@
/**
* 停止充电返回账单后计算费用
+ *
* @param vo
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)
public R endChargeBillingCharge(TransactionRecordMessageVO vo) {
- TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
- if(null == chargingOrder){
- return R.ok();
- }
- Integer status = chargingOrder.getStatus();
- if(status == 5){
- return R.ok();
- }
-
- //如果使用优惠券需要判断优惠券是否满足使用条件
- //退款金额=优惠券金额+剩余充电金额
- BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
- BigDecimal periodServicePrice_total = BigDecimal.ZERO;
- BigDecimal vipDiscountAmount_total = BigDecimal.ZERO;
- BigDecimal serviceCharge_total = BigDecimal.ZERO;
- BigDecimal total = BigDecimal.ZERO;
-
- //获取订单的计费策略
- List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
- accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59");
- //开始处理计费明细数据和优惠数据
- chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
- SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>();
+ RLock lock = redissonClient.getLock("endOrder:" + vo.getTransaction_serial_number());
+ boolean tryLock = false;
try {
+ tryLock = lock.tryLock(100, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ lock.unlock();
+ return R.ok();
+ }
+ if (!tryLock) {
+ return R.ok();
+ }
+ try {
+ Object cacheObject = redisService.getCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number());
+ if(null != cacheObject && 5 == (int)cacheObject){
+ return R.ok();
+ }
+ TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
+ if (null == chargingOrder) {
+ return R.ok();
+ }
+ Integer status = chargingOrder.getStatus();
+ if (status == 5) {
+ return R.ok();
+ }
+
+ //如果使用优惠券需要判断优惠券是否满足使用条件
+ //退款金额=优惠券金额+剩余充电金额
+ BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
+ BigDecimal periodServicePrice_total = BigDecimal.ZERO;
+ BigDecimal vipDiscountAmount_total = BigDecimal.ZERO;
+ BigDecimal serviceCharge_total = BigDecimal.ZERO;
+ BigDecimal total = BigDecimal.ZERO;
+
+ //获取订单的计费策略
+ List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+ if (accountingStrategyDetailOrderList.isEmpty()) {
+ return R.fail("计费策略为空,无法计算费用");
+ }
+ accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59");
+ //开始处理计费明细数据和优惠数据
+ chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
+ SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>();
//跨天
- if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){
+ if (!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])) {
//当天的
//开始通过计费策略遍历解析每个时段的费用明细
String start_time = vo.getStart_time();
@@ -2326,12 +2345,12 @@
for (int i = accountingStrategyDetailOrderList.size(); i > 0; i--) {
AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i - 1);
long time = sdfs.parse(start_time.split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime();
- if(time < start){
+ if (time < start) {
break;
}
//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
Object invoke = null;
- switch (strategyDetail.getType()){
+ switch (strategyDetail.getType()) {
case 1:
//充电度数
invoke = clazz.getMethod("getSpike_charge" + (i)).invoke(vo);
@@ -2349,7 +2368,7 @@
invoke = clazz.getMethod("getValley_charge" + (i)).invoke(vo);
break;
}
- if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+ if (null == invoke || Double.valueOf(invoke.toString()) == 0) {
continue;
}
BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
@@ -2364,12 +2383,12 @@
for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
long time = sdfs.parse(end_time.split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime();
- if(time > end){
+ if (time > end) {
break;
}
//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
Object invoke = null;
- switch (strategyDetail.getType()){
+ switch (strategyDetail.getType()) {
case 1:
//充电度数
invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
@@ -2387,7 +2406,7 @@
invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
break;
}
- if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+ if (null == invoke || Double.valueOf(invoke.toString()) == 0) {
continue;
}
BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
@@ -2396,13 +2415,13 @@
vo1.setChargingCapacity(sharp_peak_charge);
lists.add(vo1);
}
- }else{
+ } else {
for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
//阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
Object invoke = null;
- switch (strategyDetail.getType()){
+ switch (strategyDetail.getType()) {
case 1:
//充电度数
invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
@@ -2420,7 +2439,7 @@
invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo);
break;
}
- if(null == invoke || Double.valueOf(invoke.toString()) == 0){
+ if (null == invoke || Double.valueOf(invoke.toString()) == 0) {
continue;
}
BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString());
@@ -2430,428 +2449,432 @@
lists.add(vo1);
}
}
- }catch (Exception e){
- e.printStackTrace();
- R.fail("处理失败");
- }
-
- //开始处理明细
- for (int i = 0; i < lists.size(); i++) {
- AccountingStrategyDetailOrderVo strategyDetail = lists.get(i);
- BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
- TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
- chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
- chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
- chargingOrderAccountingStrategy.setType(strategyDetail.getType());
- chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
- chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
- chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
- if(i == 0){
- String time = vo.getStart_time().split(" ")[1];
- chargingOrderAccountingStrategy.setStartTime(time.substring(0, time.lastIndexOf(":")));
- }else{
- chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime());
- }
- if(i == lists.size() - 1){
- String time = vo.getEnd_time().split(" ")[1];
- chargingOrderAccountingStrategy.setEndTime(time.substring(0, time.lastIndexOf(":")));
- }else{
- chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime());
+
+ //开始处理明细
+ for (int i = 0; i < lists.size(); i++) {
+ AccountingStrategyDetailOrderVo strategyDetail = lists.get(i);
+ BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
+ TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
+ chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
+ chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
+ chargingOrderAccountingStrategy.setType(strategyDetail.getType());
+ chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
+ chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
+ chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
+ if (i == 0) {
+ String time = vo.getStart_time().split(" ")[1];
+ chargingOrderAccountingStrategy.setStartTime(time.substring(0, time.lastIndexOf(":")));
+ } else {
+ chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime());
+ }
+ if (i == lists.size() - 1) {
+ String time = vo.getEnd_time().split(" ")[1];
+ chargingOrderAccountingStrategy.setEndTime(time.substring(0, time.lastIndexOf(":")));
+ } else {
+ chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime());
+ }
+
+ //已充电总度数
+ BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge);
+ BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge);
+ BigDecimal serviceCharge = originalServicePrice;
+ BigDecimal vipDiscountAmount = BigDecimal.ZERO;
+ //计算优惠金额
+ if (null != chargingOrder.getVipDiscount()) {
+ //0.58折
+ vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
+ serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());
+ }
+ chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
+ chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN));
+ chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN));
+ chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN));
+ chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN));
+ chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
+ chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
+ //电费
+ periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+ //服务费(含折扣)
+ serviceCharge_total = serviceCharge_total.add(serviceCharge);
+ //服务费(不含折扣)
+ periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+ //会员折扣优惠金额
+ vipDiscountAmount_total = vipDiscountAmount_total.add(vipDiscountAmount);
+ //原始总金额(不含折扣)
+ total = total.add(electrovalenc.add(originalServicePrice));
}
- //已充电总度数
- BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge);
- BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge);
- BigDecimal serviceCharge = originalServicePrice;
- BigDecimal vipDiscountAmount = BigDecimal.ZERO;
- //计算优惠金额
- if(null != chargingOrder.getVipDiscount()){
- //0.58折
- vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
- serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());
- }
- chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
- chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN));
- chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN));
- chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN));
- chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN));
- chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
- chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
- //电费
- periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
- //服务费(含折扣)
- serviceCharge_total = serviceCharge_total.add(serviceCharge);
- //服务费(不含折扣)
- periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
- //会员折扣优惠金额
- vipDiscountAmount_total = vipDiscountAmount_total.add(vipDiscountAmount);
- //原始总金额(不含折扣)
- total = total.add(electrovalenc.add(originalServicePrice));
- }
-
- BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
- //原金额
- BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
- //支付金额
- BigDecimal payAmount = periodElectricPrice_total.add(serviceCharge_total);
- //退款金额=充值金额-实际支付金额
- BigDecimal refundAmount = rechargeAmount.subtract(payAmount);
-
- TChargingOrder order = new TChargingOrder();
- order.setId(chargingOrder.getId());
- order.setAppUserId(chargingOrder.getAppUserId());
- UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
- if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){
- Integer soc = uploadRealTimeMonitoringData.getSoc();
- if(soc >= 98){
- order.setEndMode(2);
- }else if(chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0){
- order.setEndMode(3);
- }else{
- order.setEndMode(0);
- }
- }
- order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
- order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
- order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
- order.setStatus(5);
- order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
- order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
- order.setChargingCapacity(vo.getTotal_electricity());
- order.setElectricity(vo.getTotal_electricity());
- order.setVipDiscountAmount(vipDiscountAmount_total);
- if(vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0){
- order.setVipDiscount(BigDecimal.valueOf(1));
- }
-
- //计算优惠券
- BigDecimal couponDiscount = BigDecimal.ZERO;
- if(null != chargingOrder.getAppCouponId()){
- //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
- TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
- String couponJson = appCoupon.getCouponJson();
- TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class);
- Integer preferentialMode = tCoupon.getPreferentialMode();
- if(1 == preferentialMode){
- //满减
- if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
- BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
- //如果优惠金额大于服务费金额,以服务费作为最大限制
- if(serviceCharge_total.compareTo(couponDiscountAmount) < 0){
- couponDiscount = serviceCharge_total;
- serviceCharge_total = BigDecimal.ZERO;
- }else{
- couponDiscount = couponDiscountAmount;
- }
- appCoupon.setStatus(2);
- appCouponClient.updateAppCoupon(appCoupon);
- }else{
- order.setAppCouponId(null);
- order.setCouponDiscountAmount(BigDecimal.ZERO);
- appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+ BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
+ //原金额
+ BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+ //支付金额
+ BigDecimal payAmount = periodElectricPrice_total.add(serviceCharge_total);
+ //退款金额=充值金额-实际支付金额
+ BigDecimal refundAmount = rechargeAmount.subtract(payAmount);
+
+ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode());
+ if (null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()) {
+ Integer soc = uploadRealTimeMonitoringData.getSoc();
+ if (soc >= 98) {
+ chargingOrder.setEndMode(2);
+ } else if (null != chargingOrder.getResidualAmount() && chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) {
+ chargingOrder.setEndMode(3);
+ } else {
+ chargingOrder.setEndMode(1);
}
}
- if(2 == preferentialMode){
- //抵扣
- if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
- //折扣金额
- BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
- divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
- //如果优惠金额大于服务费金额,以服务费作为最大限制
- if(serviceCharge_total.compareTo(divide) < 0){
- couponDiscount = serviceCharge_total;
- serviceCharge_total = BigDecimal.ZERO;
- }else{
- couponDiscount = divide;
+ chargingOrder.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
+ chargingOrder.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
+ chargingOrder.setStatus(5);
+ chargingOrder.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setChargingCapacity(vo.getTotal_electricity());
+ chargingOrder.setElectricity(vo.getTotal_electricity());
+ chargingOrder.setVipDiscountAmount(vipDiscountAmount_total);
+ if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) {
+ chargingOrder.setVipDiscount(BigDecimal.valueOf(1));
+ }
+
+ //计算优惠券
+ BigDecimal couponDiscount = BigDecimal.ZERO;
+ if (null != chargingOrder.getAppCouponId()) {
+ //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
+ TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
+ String couponJson = appCoupon.getCouponJson();
+ TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class);
+ Integer preferentialMode = tCoupon.getPreferentialMode();
+ if (1 == preferentialMode) {
+ //满减
+ if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) {
+ BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
+ //如果优惠金额大于服务费金额,以服务费作为最大限制
+ if (serviceCharge_total.compareTo(couponDiscountAmount) < 0) {
+ couponDiscount = serviceCharge_total;
+ serviceCharge_total = BigDecimal.ZERO;
+ } else {
+ couponDiscount = couponDiscountAmount;
+ }
+ appCoupon.setStatus(2);
+ appCouponClient.updateAppCoupon(appCoupon);
+ } else {
+ appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+ chargingOrder.setAppCouponId(null);
+ chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+ }
+ }
+ if (2 == preferentialMode) {
+ //抵扣
+ if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) {
+ //折扣金额
+ BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
+ divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
+ //如果优惠金额大于服务费金额,以服务费作为最大限制
+ if (serviceCharge_total.compareTo(divide) < 0) {
+ couponDiscount = serviceCharge_total;
+ serviceCharge_total = BigDecimal.ZERO;
+ } else {
+ couponDiscount = divide;
+ }
+
+ appCoupon.setStatus(2);
+ appCouponClient.updateAppCoupon(appCoupon);
+ } else {
+ chargingOrder.setAppCouponId(null);
+ chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+ appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+ }
+ }
+ }
+ //优惠券优惠金额
+ couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
+ //退款金额+优惠券
+ refundAmount = refundAmount.add(couponDiscount);
+ //实际支付金额-优惠券
+ payAmount = payAmount.subtract(couponDiscount);
+ if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) {
+ serviceCharge_total = serviceCharge_total.subtract(couponDiscount);
+ }
+ chargingOrder.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrder.setRefundStatus(1);
+ this.updateById(chargingOrder);
+ redisService.setCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number(), 5, 100L, TimeUnit.SECONDS);
+
+ chargingOrder = this.getById(chargingOrder.getId());
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
+ //推送三方平台
+ if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
+ TChargingOrder finalChargingOrder = chargingOrder;
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ tcecClient.notificationEquipChargeStatus(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId());
+ tcecClient.notificationStopChargeResult(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getChargingGunId().toString(),
+ finalChargingOrder.getOperatorId());
+ tcecClient.notificationChargeOrderInfo(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId());
+ }
+ }).start();
+ }
+
+ //开始将优惠券优惠的金额添加到明细中
+ BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount();
+ if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) {
+ List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
+ BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
+ BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
+ BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
+ periodServicePrice = periodServicePrice.subtract(multiply);
+ chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN));
+ chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN));
+ }
+ chargingOrderAccountingStrategyService.updateBatchById(list);
+ }
+
+ // 将枪状态重置为空闲
+ TChargingGun chargingGun = new TChargingGun();
+ chargingGun.setId(chargingOrder.getChargingGunId());
+ chargingGun.setStatus(2);
+ chargingGun.setChargingPower(BigDecimal.ZERO);
+ chargingGunClient.updateChargingGunById(chargingGun);
+ chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+ //推送状态给三方平台
+ if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
+ tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
+ }
+
+ //添加积分
+ if (1 == chargingOrder.getOrderSource()) {
+ TIntegralRule integralRule = integralRuleClient.getSet().getData();
+ if (null != integralRule) {
+ TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+ Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
+ Integer integral = chargingOrder.getServiceCharge().intValue() * num1;
+ if (null != appUser.getVipId()) {
+ TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+ Integer doubleIntegration = vip.getDoubleIntegration();
+ //双倍积分
+ if (1 == doubleIntegration) {
+ integral *= 2;
+ }
}
- appCoupon.setStatus(2);
- appCouponClient.updateAppCoupon(appCoupon);
- }else{
- order.setAppCouponId(null);
- order.setCouponDiscountAmount(BigDecimal.ZERO);
- appCouponClient.refund(chargingOrder.getAppCouponId().toString());
- }
- }
- }
- //优惠券优惠金额
- couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
- //退款金额+优惠券
- refundAmount = refundAmount.add(couponDiscount);
- //实际支付金额-优惠券
- payAmount = payAmount.subtract(couponDiscount);
- if(serviceCharge_total.compareTo(BigDecimal.ZERO) > 0){
- serviceCharge_total = serviceCharge_total.subtract(couponDiscount);
- }
- order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
- order.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
- order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
- order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
- order.setRefundStatus(1);
- this.updateById(order);
- chargingOrder = this.getById(order.getId());
-
- //推送三方平台
- if(2 == chargingOrder.getOrderSource()){
- TChargingOrder finalChargingOrder = chargingOrder;
- new Thread(new Runnable() {
- @Override
- public void run() {
- tcecClient.notificationEquipChargeStatus(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId());
- tcecClient.notificationStopChargeResult(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getChargingGunId().toString(),
- finalChargingOrder.getOperatorId());
- tcecClient.notificationChargeOrderInfo(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId());
- }
- }).start();
- }
-
- //开始将优惠券优惠的金额添加到明细中
- BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
- if(null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){
- List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId()));
- BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
- BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
- BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
- periodServicePrice = periodServicePrice.subtract(multiply);
- chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN));
- chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN));
- }
- chargingOrderAccountingStrategyService.updateBatchById(list);
- }
-
- // 将枪状态重置为空闲
- TChargingGun chargingGun = new TChargingGun();
- chargingGun.setId(chargingOrder.getChargingGunId());
- chargingGun.setStatus(2);
- chargingGun.setChargingPower(BigDecimal.ZERO);
- chargingGunClient.updateChargingGunById(chargingGun);
- //推送状态给三方平台
- if(2 == chargingOrder.getOrderSource()){
- tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
- }
-
- //添加积分
- if(1 == chargingOrder.getOrderSource()){
- TIntegralRule integralRule = integralRuleClient.getSet().getData();
- if(null != integralRule){
- TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
- Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
- Integer integral = chargingOrder.getServiceCharge().intValue() * num1;
- if(null != appUser.getVipId()){
- TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
- Integer doubleIntegration = vip.getDoubleIntegration();
- //双倍积分
- if(1 == doubleIntegration){
- integral *= 2;
+ if (integral > 0) {
+ TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
+ appUserIntegralChange.setAppUserId(appUser.getId());
+ appUserIntegralChange.setChangeType(2);
+ appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
+ appUser.setPoints(appUser.getPoints() + integral);
+ appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
+ appUserIntegralChange.setCreateTime(LocalDateTime.now());
+ appUserIntegralChange.setOrderCode(chargingOrder.getCode());
+ appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+ appUserClient.updateAppUser(appUser);
+ appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
}
}
- if(integral > 0){
- TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
- appUserIntegralChange.setAppUserId(appUser.getId());
- appUserIntegralChange.setChangeType(2);
- appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
- appUser.setPoints(appUser.getPoints() + integral);
- appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
- appUserIntegralChange.setCreateTime(LocalDateTime.now());
- appUserIntegralChange.setOrderCode(chargingOrder.getCode());
- appUserIntegralChange.setExtension(chargingOrder.getId().toString());
- appUserClient.updateAppUser(appUser);
- appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+ //计算用户标签
+ editUserTag(chargingOrder);
+ //用户推荐奖励
+ referralReward(chargingOrder);
+
+ //开始构建退款费用
+ refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN);
+ if (refundAmount.compareTo(BigDecimal.ZERO) > 0) {
+ Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
+ //构建退款明细
+ TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
+ chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+ chargingOrderRefund.setRefundAmount(refundAmount);
+ chargingOrderRefund.setRefundStatus(1);
+ chargingOrderRefund.setPayType(rechargePaymentType);
+ chargingOrderRefund.setRefundStatus(1);
+ chargingOrderRefund.setCode(chargingOrder.getCode());
+ chargingOrderRefund.setRefundTitle("充电完成退款");
+ chargingOrderRefund.setRefundContent("充电完成退款");
+ chargingOrderRefund.setRefundReason("充电完成退款");
+ chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
+ chargingOrderRefund.setRefundTotalAmount(refundAmount);
+ chargingOrderRefund.setPayAmount(rechargeAmount);
+ if (1 == rechargePaymentType) {
+ WxPaymentRefundModel model = new WxPaymentRefundModel();
+ model.setOut_trade_no(chargingOrder.getCode());
+ model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+ model.setReason("充电完成退款");
+ model.setNotify_url("/payment/wx/refund/notify");
+ WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+ amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+ amount.setCurrency("CNY");
+ model.setAmount(amount);
+ R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model);
+ if (200 == result.getCode()) {
+ chargingOrderRefundService.save(chargingOrderRefund);
+ //手续费
+ Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount");
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+ chargingOrderRefund.setRefundFee(refund_fee);
+ chargingOrderRefundService.updateById(chargingOrderRefund);
+ }
+ }
+ if (2 == rechargePaymentType) {
+ RefundReq dto = new RefundReq();
+ dto.setOutTradeNo(chargingOrder.getCode());
+ dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
+ dto.setRefundAmount(refundAmount.toString());
+ dto.setRefundReason("充电完成退款");
+ RefundResp resp = aliPaymentClient.refund(dto).getData();
+ if (null != resp) {
+ chargingOrderRefundService.save(chargingOrderRefund);
+ this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
+ }
+ }
+ if (3 == rechargePaymentType) {
+ RefundReq dto = new RefundReq();
+ dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
+ dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
+ dto.setRefundAmount(refundAmount.toString());
+ dto.setRefundReason("充电完成退款");
+ RefundResp resp = h5AliPaymentClient.refund(dto).getData();
+ if (null != resp && "10000".equals(resp.getCode())) {
+ chargingOrderRefundService.save(chargingOrderRefund);
+ this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
+ }
+ }
}
}
- //计算用户标签
- editUserTag(chargingOrder);
- //用户推荐奖励
- referralReward(chargingOrder);
-
- //开始构建退款费用
- refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN);
- if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
- Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
- //构建退款明细
- TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
- chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
- chargingOrderRefund.setRefundAmount(refundAmount);
- chargingOrderRefund.setRefundStatus(1);
- chargingOrderRefund.setPayType(rechargePaymentType);
- chargingOrderRefund.setRefundStatus(1);
- chargingOrderRefund.setCode(chargingOrder.getCode());
- chargingOrderRefund.setRefundTitle("充电完成退款");
- chargingOrderRefund.setRefundContent("充电完成退款");
- chargingOrderRefund.setRefundReason("充电完成退款");
- chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
- chargingOrderRefund.setRefundTotalAmount(refundAmount);
- chargingOrderRefund.setPayAmount(rechargeAmount);
- if(1 == rechargePaymentType){
- WxPaymentRefundModel model = new WxPaymentRefundModel();
- model.setOut_trade_no(chargingOrder.getCode());
- model.setOut_refund_no(chargingOrderRefund.getRefundCode());
- model.setReason("充电完成退款");
- model.setNotify_url("/payment/wx/refund/notify");
- WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
- amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
- amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
- amount.setCurrency("CNY");
- model.setAmount(amount);
- R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model);
- if(200 == result.getCode()){
- chargingOrderRefundService.save(chargingOrderRefund);
- //手续费
- Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount");
- Object refund_fee1 = amount1.get("refund_fee");
- BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
- chargingOrderRefund.setRefundFee(refund_fee);
- chargingOrderRefundService.updateById(chargingOrderRefund);
- }
- }
- if(2 == rechargePaymentType){
- RefundReq dto = new RefundReq();
- dto.setOutTradeNo(chargingOrder.getCode());
- dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
- dto.setRefundAmount(refundAmount.toString());
- dto.setRefundReason("充电完成退款");
- RefundResp resp = aliPaymentClient.refund(dto).getData();
- if(null != resp){
- chargingOrderRefundService.save(chargingOrderRefund);
- this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
- }
- }
- if(3 == rechargePaymentType){
- RefundReq dto = new RefundReq();
- dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
- dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
- dto.setRefundAmount(refundAmount.toString());
- dto.setRefundReason("充电完成退款");
- RefundResp resp = h5AliPaymentClient.refund(dto).getData();
- if(null != resp && "10000".equals(resp.getCode())){
- chargingOrderRefundService.save(chargingOrderRefund);
- this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
- }
- }
-
+ //添加汇总统计数据
+ List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", chargingOrder.getId()));
+ BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal serviceMoney = BigDecimal.ZERO;
+ BigDecimal paymentMoney = BigDecimal.ZERO;
+ long time = 0;
+ if (!chargingOrder.getOrderSource().equals(2)) {
+ serviceMoney = serviceMoney.add(service_reduce);
+ paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+ } else {
+ serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+ paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
}
+ if (chargingOrder.getStartTime() != null && chargingOrder.getEndTime() != null) {
+ LocalDateTime startTime = chargingOrder.getStartTime();
+ LocalDateTime endTime = chargingOrder.getEndTime();
+ // 计算时间差 单位秒
+ time = ChronoUnit.SECONDS.between(startTime, endTime);
+ }
+ TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
+ summaryData.setChargingOrderId(chargingOrder.getId());
+ summaryData.setChargingCapacity(chargingCapacity);
+ summaryData.setChargingDuration(time);
+ summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ chargingOrderSummaryDataService.save(summaryData);
+
+ //推送监管平台订单状态和订单详情
+ ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
+ BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
+ chargingMessageClient.pushOrderInfo(chargingOrderVo);
+ chargingMessageClient.pushOrderStatus(chargingOrderVo);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ lock.unlock();
}
-
- //添加汇总统计数据
- List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", chargingOrder.getId()));
- BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal serviceMoney = BigDecimal.ZERO;
- BigDecimal paymentMoney = BigDecimal.ZERO;
- long time = 0;
- if (!chargingOrder.getOrderSource().equals(2)) {
- serviceMoney = serviceMoney.add(service_reduce);
- paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
- }else{
- serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
- paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
- }
- if (chargingOrder.getStartTime()!=null && chargingOrder.getEndTime()!=null){
- LocalDateTime startTime = chargingOrder.getStartTime();
- LocalDateTime endTime = chargingOrder.getEndTime();
- // 计算时间差 单位秒
- time = ChronoUnit.SECONDS.between(startTime, endTime);
- }
- TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
- summaryData.setChargingOrderId(chargingOrder.getId());
- summaryData.setChargingCapacity(chargingCapacity);
- summaryData.setChargingDuration(time);
- summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
- summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
- summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
- chargingOrderSummaryDataService.save(summaryData);
return R.ok();
}
-
-
@Override
- public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end,List<Integer> siteIds) {
-
- LocalDateTime start1 = start.atStartOfDay();
- LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getByDate(start1,end1,siteIds);
+ public List<Map<String, Object>> getByDate(LocalDate start, LocalDate end, List<Integer> siteIds) {
+
+ LocalDateTime start1 = start.atStartOfDay();
+ LocalDateTime end1 = end.atTime(LocalTime.MAX);
+ return this.baseMapper.getByDate(start1, end1, siteIds);
}
-
+
@Override
public List<Map<String, Object>> queryPower(List<Integer> siteIds) {
return this.baseMapper.queryPower(siteIds);
}
-
+
@Override
public Map<String, Object> qureryPowerLevel(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.queryPowerLevel(siteIds,statisticsQueryDto);
+ return this.baseMapper.queryPowerLevel(siteIds, statisticsQueryDto);
}
-
-
-
+
+
@Override
public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) {
return this.baseMapper.usersDay(statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> usersDay1() {
return this.baseMapper.usersDay1();
}
-
+
@Override
public List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto) {
return this.baseMapper.usersByQuery(statisticsQueryDto);
}
+
@Override
public List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto) {
return this.baseMapper.usersByQuery1(statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> getUserTagCount() {
return this.baseMapper.getUserTagCount();
}
-
+
@Override
public List<Map<String, Object>> getVipCount() {
return this.baseMapper.getVipCount();
}
-
+
@Override
public List<Map<String, Object>> unitConsumption(ChargingStatisticsQueryDto statisticsQueryDto) {
return this.baseMapper.unitConsumption(statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> carUserMethod() {
return this.baseMapper.carUserMethod();
}
-
+
@Override
public List<Map<String, Object>> carUserBrand() {
return this.baseMapper.carUserBrand();
}
-
+
@Override
public Map<String, Object> countLocalCar() {
return this.baseMapper.countLocalCar();
}
-
+
@Override
public Double getAver(List<Integer> siteIds) {
return this.baseMapper.getAver(siteIds);
}
-
+
@Override
public List<Map<String, Object>> getLevelEvaluate(List<Integer> siteIds) {
return this.baseMapper.getLevelEvaluate(siteIds);
}
-
-
+
+
@Resource
private TShoppingOrderService shoppingOrderService;
@Resource
@@ -2862,160 +2885,157 @@
private TVipOrderRefundService vipOrderRefundService;
-
-
@Override
public R payRefund(PayOrderRefundDto payOrderQueryDto) {
- if (payOrderQueryDto.getType()==1){
- TChargingOrder tChargingOrder = this.baseMapper.selectById(payOrderQueryDto.getOrderId());
- if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
- return R.fail("退款金额需小于支付金额");
- }
- if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
- tChargingOrder.setStatus(5);
- }
-
-
- TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
- chargingOrderRefund.setChargingOrderId(tChargingOrder.getId());
- chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
- chargingOrderRefund.setRefundStatus(1);
- chargingOrderRefund.setPayType(tChargingOrder.getRechargePaymentType());
- chargingOrderRefund.setRefundTime(LocalDateTime.now());
- chargingOrderRefund.setCode(tChargingOrder.getCode());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
- chargingOrderRefund.setRefundTitle("后台退款");
- chargingOrderRefund.setRefundContent("后台退款");
- chargingOrderRefund.setRefundReason("后台退款");
- chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
- chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
- chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
-
- if(1 == tChargingOrder.getRechargePaymentType()){
- WxPaymentRefundModel model = new WxPaymentRefundModel();
- model.setOut_trade_no(tChargingOrder.getCode());
- model.setOut_refund_no(chargingOrderRefund.getRefundCode());
- model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
- model.setReason("取消订单");
- model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
- WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
- amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
- amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
- amount.setCurrency("CNY");
- model.setAmount(amount);
- R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
- if(200 == orderR.getCode()){
- tChargingOrder.setRefundStatus(2);
- tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- this.baseMapper.updateById(tChargingOrder);
- chargingOrderRefundService.save(chargingOrderRefund);
- //手续费
- Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
- Object refund_fee1 = amount1.get("refund_fee");
- BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
- chargingOrderRefund.setRefundFee(refund_fee);
- chargingOrderRefundService.updateById(chargingOrderRefund);
- }
- }
-
- if(2 == tChargingOrder.getRechargePaymentType()){
- RefundReq dto = new RefundReq();
- dto.setOutTradeNo(tChargingOrder.getCode());
- dto.setOutRequestNo(tChargingOrder.getCode());
- dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
- dto.setRefundReason("取消订单");
- RefundResp resp = aliPaymentClient.refund(dto).getData();
- if(null != resp){
- chargingOrderRefund.setRefundStatus(2);
- chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- this.baseMapper.updateById(tChargingOrder);
- chargingOrderRefundService.save(chargingOrderRefund);
-
- }
- }
- if(3 == tChargingOrder.getRechargePaymentType()){
- RefundReq dto = new RefundReq();
- dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber());
- dto.setOutRequestNo(tChargingOrder.getCode());
- dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
- dto.setRefundReason("取消订单");
- RefundResp resp = h5AliPaymentClient.refund(dto).getData();
- if(null != resp && "10000".equals(resp.getCode())){
- chargingOrderRefund.setRefundStatus(2);
- chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- this.baseMapper.updateById(tChargingOrder);
- chargingOrderRefundService.save(chargingOrderRefund);
-
- }
+ if (payOrderQueryDto.getType() == 1) {
+ TChargingOrder tChargingOrder = this.baseMapper.selectById(payOrderQueryDto.getOrderId());
+ if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
+ return R.fail("退款金额需小于支付金额");
+ }
+ if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) {
+ tChargingOrder.setStatus(5);
+ }
+
+ TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
+ chargingOrderRefund.setChargingOrderId(tChargingOrder.getId());
+ chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
+ chargingOrderRefund.setRefundStatus(1);
+ chargingOrderRefund.setPayType(tChargingOrder.getRechargePaymentType());
+ chargingOrderRefund.setRefundTime(LocalDateTime.now());
+ chargingOrderRefund.setCode(tChargingOrder.getCode());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+ chargingOrderRefund.setRefundTitle("后台退款");
+ chargingOrderRefund.setRefundContent("后台退款");
+ chargingOrderRefund.setRefundReason("后台退款");
+ chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
+ chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
+ chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
+
+ if (1 == tChargingOrder.getRechargePaymentType()) {
+ WxPaymentRefundModel model = new WxPaymentRefundModel();
+ model.setOut_trade_no(tChargingOrder.getCode());
+ model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+ model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
+ model.setReason("取消订单");
+ model.setNotify_url("/payment/wx/refund/notify");
+ WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+ amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setCurrency("CNY");
+ model.setAmount(amount);
+ R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
+ if (200 == orderR.getCode()) {
+ tChargingOrder.setRefundStatus(2);
+ tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ this.baseMapper.updateById(tChargingOrder);
+ chargingOrderRefundService.save(chargingOrderRefund);
+ //手续费
+ Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+ chargingOrderRefund.setRefundFee(refund_fee);
+ chargingOrderRefundService.updateById(chargingOrderRefund);
}
}
- if (payOrderQueryDto.getType()==2){
- TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId());
- if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
- return R.fail("退款金额需小于支付金额");
+
+ if (2 == tChargingOrder.getRechargePaymentType()) {
+ RefundReq dto = new RefundReq();
+ dto.setOutTradeNo(tChargingOrder.getCode());
+ dto.setOutRequestNo(tChargingOrder.getCode());
+ dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+ dto.setRefundReason("取消订单");
+ RefundResp resp = aliPaymentClient.refund(dto).getData();
+ if (null != resp) {
+ chargingOrderRefund.setRefundStatus(2);
+ chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ this.baseMapper.updateById(tChargingOrder);
+ chargingOrderRefundService.save(chargingOrderRefund);
+
}
- if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
- tChargingOrder.setStatus(5);
+ }
+ if (3 == tChargingOrder.getRechargePaymentType()) {
+ RefundReq dto = new RefundReq();
+ dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber());
+ dto.setOutRequestNo(tChargingOrder.getCode());
+ dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+ dto.setRefundReason("取消订单");
+ RefundResp resp = h5AliPaymentClient.refund(dto).getData();
+ if (null != resp && "10000".equals(resp.getCode())) {
+ chargingOrderRefund.setRefundStatus(2);
+ chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ this.baseMapper.updateById(tChargingOrder);
+ chargingOrderRefundService.save(chargingOrderRefund);
+
}
-
- TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
- chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
- chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
- chargingOrderRefund.setRefundStatus(1);
- chargingOrderRefund.setPayType(tChargingOrder.getPaymentType());
- chargingOrderRefund.setRefundTime(LocalDateTime.now());
- chargingOrderRefund.setCode(tChargingOrder.getCode());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
- chargingOrderRefund.setRefundTitle("后台退款");
- chargingOrderRefund.setRefundContent("后台退款");
- chargingOrderRefund.setRefundReason("后台退款");
- chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
- chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
- chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
-
- if(1 == tChargingOrder.getPaymentType()){
- WxPaymentRefundModel model = new WxPaymentRefundModel();
- model.setOut_trade_no(tChargingOrder.getCode());
- model.setOut_refund_no(chargingOrderRefund.getRefundCode());
- model.setTransaction_id(tChargingOrder.getSerialNumber());
- model.setReason("取消订单");
- model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
- WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
- amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
- amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
- amount.setCurrency("CNY");
- model.setAmount(amount);
- R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
- if(200 == orderR.getCode()){
- tChargingOrder.setRefundStatus(2);
- tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- shoppingOrderService.updateById(tChargingOrder);
- shoppingOrderRefundService.save(chargingOrderRefund);
- //手续费
- Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
- Object refund_fee1 = amount1.get("refund_fee");
- BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
- chargingOrderRefund.setRefundFee(refund_fee);
- shoppingOrderRefundService.updateById(chargingOrderRefund);
- }
+ }
+ }
+ if (payOrderQueryDto.getType() == 2) {
+ TShoppingOrder shoppingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId());
+ if (shoppingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
+ return R.fail("退款金额需小于支付金额");
+ }
+ if ((shoppingOrder.getPaymentAmount().subtract(shoppingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) {
+ shoppingOrder.setStatus(5);
+ }
+
+ TShoppingOrderRefund shoppingOrderRefund = new TShoppingOrderRefund();
+ shoppingOrderRefund.setShoppingOrderId(shoppingOrder.getId());
+ shoppingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
+ shoppingOrderRefund.setRefundStatus(1);
+ shoppingOrderRefund.setPayType(shoppingOrder.getPaymentType());
+ shoppingOrderRefund.setRefundTime(LocalDateTime.now());
+ shoppingOrderRefund.setCode(shoppingOrder.getCode());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ shoppingOrderRefund.setRefundCode("GWF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+ shoppingOrderRefund.setRefundTitle("后台退款");
+ shoppingOrderRefund.setRefundContent("后台退款");
+ shoppingOrderRefund.setRefundReason("后台退款");
+ shoppingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
+ shoppingOrderRefund.setRefundTotalAmount(shoppingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
+ shoppingOrderRefund.setPayAmount(shoppingOrder.getPaymentAmount());
+
+ if (1 == shoppingOrder.getPaymentType()) {
+ WxPaymentRefundModel model = new WxPaymentRefundModel();
+ model.setOut_trade_no(shoppingOrder.getCode());
+ model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
+ model.setTransaction_id(shoppingOrder.getSerialNumber());
+ model.setReason("取消订单");
+ model.setNotify_url("/payment/wx/refund/notify");
+ WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+ amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(shoppingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setCurrency("CNY");
+ model.setAmount(amount);
+ R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
+ if (200 == orderR.getCode()) {
+ shoppingOrder.setRefundStatus(2);
+ shoppingOrder.setRefundAmount((shoppingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ shoppingOrderService.updateById(shoppingOrder);
+ shoppingOrderRefundService.save(shoppingOrderRefund);
+ //手续费
+ Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+ shoppingOrderRefund.setRefundFee(refund_fee);
+ shoppingOrderRefundService.updateById(shoppingOrderRefund);
}
-
- if(2 == tChargingOrder.getPaymentType()){
- RefundReq dto = new RefundReq();
- dto.setOutTradeNo(tChargingOrder.getCode());
- dto.setOutRequestNo(tChargingOrder.getCode());
- dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
- dto.setRefundReason("取消订单");
- RefundResp resp = aliPaymentClient.refund(dto).getData();
- if(null != resp){
- tChargingOrder.setRefundStatus(2);
- tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- shoppingOrderService.updateById(tChargingOrder);
- shoppingOrderRefundService.save(chargingOrderRefund);
- }
+ }
+
+ if (2 == shoppingOrder.getPaymentType()) {
+ RefundReq dto = new RefundReq();
+ dto.setOutTradeNo(shoppingOrder.getCode());
+ dto.setOutRequestNo(shoppingOrder.getCode());
+ dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+ dto.setRefundReason("取消订单");
+ RefundResp resp = aliPaymentClient.refund(dto).getData();
+ if (null != resp) {
+ shoppingOrder.setRefundStatus(2);
+ shoppingOrder.setRefundAmount((shoppingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ shoppingOrderService.updateById(shoppingOrder);
+ shoppingOrderRefundService.save(shoppingOrderRefund);
}
+ }
// if(3 == tChargingOrder.getPaymentType()){
// RefundReq dto = new RefundReq();
// dto.setOutTradeNo(tChargingOrder.getCode());
@@ -3030,69 +3050,69 @@
// shoppingOrderRefundService.save(chargingOrderRefund);
// }
// }
-
- }
-
- if (payOrderQueryDto.getType()==3){
- TVipOrder tChargingOrder = vipOrderService.getById(payOrderQueryDto.getOrderId());
- if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
+
+ }
+
+ if (payOrderQueryDto.getType() == 3) {
+ TVipOrder vipOrder = vipOrderService.getById(payOrderQueryDto.getOrderId());
+ if (vipOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
return R.fail("退款金额需小于支付金额");
}
- TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
- chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
- chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
- chargingOrderRefund.setRefundStatus(1);
- chargingOrderRefund.setPayType(tChargingOrder.getPaymentType());
- chargingOrderRefund.setRefundTime(LocalDateTime.now());
- chargingOrderRefund.setCode(tChargingOrder.getCode());
+ TVipOrderRefund vipOrderRefund = new TVipOrderRefund();
+ vipOrderRefund.setVipOrderId(vipOrder.getId());
+ vipOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
+ vipOrderRefund.setRefundStatus(1);
+ vipOrderRefund.setPayType(vipOrder.getPaymentType());
+ vipOrderRefund.setRefundTime(LocalDateTime.now());
+ vipOrderRefund.setCode(vipOrder.getCode());
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
- chargingOrderRefund.setRefundTitle("后台退款");
- chargingOrderRefund.setRefundContent("后台退款");
- chargingOrderRefund.setRefundReason("后台退款");
- chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
- chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
- chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
-
- if(1 == tChargingOrder.getPaymentType()){
+ vipOrderRefund.setRefundCode("HYF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+ vipOrderRefund.setRefundTitle("后台退款");
+ vipOrderRefund.setRefundContent("后台退款");
+ vipOrderRefund.setRefundReason("后台退款");
+ vipOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
+ vipOrderRefund.setRefundTotalAmount(vipOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
+ vipOrderRefund.setPayAmount(vipOrder.getPaymentAmount());
+
+ if (1 == vipOrder.getPaymentType()) {
WxPaymentRefundModel model = new WxPaymentRefundModel();
- model.setOut_trade_no(tChargingOrder.getCode());
- model.setOut_refund_no(chargingOrderRefund.getRefundCode());
- model.setTransaction_id(tChargingOrder.getSerialNumber());
+ model.setOut_trade_no(vipOrder.getCode());
+ model.setOut_refund_no(vipOrderRefund.getRefundCode());
+ model.setTransaction_id(vipOrder.getSerialNumber());
model.setReason("取消订单");
- model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
+ model.setNotify_url("/payment/wx/refund/notify");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
- amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(vipOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
amount.setCurrency("CNY");
model.setAmount(amount);
R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
- if(200 == orderR.getCode()){
- tChargingOrder.setRefundStatus(2);
- tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- vipOrderService.updateById(tChargingOrder);
- vipOrderRefundService.save(chargingOrderRefund);
+ if (200 == orderR.getCode()) {
+ vipOrder.setRefundStatus(2);
+ vipOrder.setRefundAmount((vipOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ vipOrderService.updateById(vipOrder);
+ vipOrderRefundService.save(vipOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
Object refund_fee1 = amount1.get("refund_fee");
BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
- chargingOrderRefund.setRefundFee(refund_fee);
- vipOrderRefundService.updateById(chargingOrderRefund);
+ vipOrderRefund.setRefundFee(refund_fee);
+ vipOrderRefundService.updateById(vipOrderRefund);
}
}
-
- if(2 == tChargingOrder.getPaymentType()){
+
+ if (2 == vipOrder.getPaymentType()) {
RefundReq dto = new RefundReq();
- dto.setOutTradeNo(tChargingOrder.getCode());
- dto.setOutRequestNo(tChargingOrder.getCode());
+ dto.setOutTradeNo(vipOrder.getCode());
+ dto.setOutRequestNo(vipOrder.getCode());
dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
dto.setRefundReason("取消订单");
RefundResp resp = aliPaymentClient.refund(dto).getData();
- if(null != resp){
- tChargingOrder.setRefundStatus(2);
- tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- vipOrderService.updateById(tChargingOrder);
- vipOrderRefundService.save(chargingOrderRefund);
+ if (null != resp) {
+ vipOrder.setRefundStatus(2);
+ vipOrder.setRefundAmount((vipOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+ vipOrderService.updateById(vipOrder);
+ vipOrderRefundService.save(vipOrderRefund);
}
}
// if(3 == tChargingOrder.getPaymentType()){
@@ -3112,10 +3132,11 @@
}
return R.ok();
}
-
-
+
+
/**
* 根据车牌号和开始时间查询充电数据
+ *
* @param query
* @return
*/
@@ -3126,19 +3147,19 @@
.eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
return one;
}
-
+
@Override
public TSettlementConfirm settlementAdd(SettlementConfirmAdd dto) {
List<Site> data = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();
List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
-
+
TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
- if (!data.isEmpty()){
+ if (!data.isEmpty()) {
tSettlementConfirm.setSiteName(data.get(0).getName());
tSettlementConfirm.setPartnerId(data.get(0).getPartnerId());
- if (data.get(0).getPartnerId()!=null){
+ if (data.get(0).getPartnerId() != null) {
Partner data1 = siteClient.getPartnerR(data.get(0).getPartnerId()).getData();
- if (data1!=null){
+ if (data1 != null) {
tSettlementConfirm.setPartnerName(data1.getName());
tSettlementConfirm.setPartnerId(data1.getId());
}
@@ -3149,17 +3170,17 @@
// 将这两个时间转化为localDateTime
// 创建 DateTimeFormatter 对象,指定格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
-
+
// 将字符串解析为 LocalDateTime 对象
LocalDateTime localDateTime = LocalDateTime.parse(startTime, formatter);
LocalDateTime localDateTime1 = LocalDateTime.parse(endTime, formatter);
tSettlementConfirm.setEndTime(localDateTime1);
tSettlementConfirm.setStartTime(localDateTime);
-
+
// 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表
QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
.eq("site_id", dto.getSiteId());
- switch (dto.getType()){
+ switch (dto.getType()) {
case 1:
eq.between("pay_time", localDateTime, localDateTime1);
break;
@@ -3187,7 +3208,7 @@
// 支付订单金额 需要减去退款金额
BigDecimal paymentAmount = new BigDecimal("0");
for (TChargingOrder tChargingOrder : tChargingOrders) {
- if(null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()){
+ if (null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()) {
continue;
}
List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.getId())).collect(Collectors.toList());
@@ -3197,41 +3218,41 @@
// 累加充电总度数
chargingElectronic = chargingElectronic.add(chargingCapacity);
// 累加分佣
- if (tChargingOrder.getOrderSource()==2) {
- sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+ if (tChargingOrder.getOrderSource() == 2) {
+ sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN));
}
// 累加电费
electrovalence = electrovalence.add(electronic_reduce);
- if (tChargingOrder.getPaymentAmount()!=null && tChargingOrder.getOrderSource()!=2){
+ if (tChargingOrder.getPaymentAmount() != null && tChargingOrder.getOrderSource() != 2) {
paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
-
+
}
- if (tChargingOrder.getRechargeAmount()!=null){
+ if (tChargingOrder.getRechargeAmount() != null) {
orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
- .setScale(2,BigDecimal.ROUND_DOWN));
+ .setScale(2, BigDecimal.ROUND_DOWN));
}
-
+
// 累加服务费
- if (tChargingOrder.getServiceCharge()!=null){
- if (tChargingOrder.getOrderSource()==2) {
- serviceCharge = serviceCharge.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2,BigDecimal.ROUND_DOWN));
+ if (tChargingOrder.getServiceCharge() != null) {
+ if (tChargingOrder.getOrderSource() == 2) {
+ serviceCharge = serviceCharge.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN));
paymentAmount = paymentAmount.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
- }else{
+ } else {
serviceCharge = serviceCharge.add(service_reduce);
}
}
// 累加会员折扣
- if (tChargingOrder.getVipDiscountAmount()!=null){
+ if (tChargingOrder.getVipDiscountAmount() != null) {
vipDiscount = vipDiscount.add(tChargingOrder.getVipDiscountAmount());
}
// 累加优惠券折扣
- if (tChargingOrder.getCouponDiscountAmount()!=null){
+ if (tChargingOrder.getCouponDiscountAmount() != null) {
couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
}
-
-
+
+
}
-
+
// 三方交易手续费 三方收费*0.6%
commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
@@ -3247,8 +3268,8 @@
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
tSettlementConfirm.setType(dto.getType());
-
- if (dto.getState() == 2){
+
+ if (dto.getState() == 2) {
tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
.subtract(dto.getMaintain()).multiply(dto.getServicePartner()));
tSettlementConfirm.setSupplyElectronic(dto.getSupplyElectronic());
@@ -3257,7 +3278,7 @@
tSettlementConfirm.setClean(dto.getClean());
tSettlementConfirm.setLossElectronic(dto.getMeteringElectronic().subtract(dto.getChargingElectronic()));
tSettlementConfirm.setMaintain(dto.getMaintain());
-
+
tSettlementConfirm.setMeteringElectronic(dto.getMeteringElectronic());
tSettlementConfirm.setProportionPartner(dto.getProportionPartner());
tSettlementConfirm.setProportionMoney(dto.getProportionMoney());
@@ -3275,7 +3296,7 @@
BigDecimal subtract2 = multiply.subtract(subtract1);
tSettlementConfirm.setNewMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
.subtract(dto.getMaintain()).multiply(subtract9).subtract(subtract1));
-
+
tSettlementConfirm.setTotalService(dto.getTotalService());
tSettlementConfirm.setServiceRemark(dto.getServiceRemark());
tSettlementConfirm.setDistribution(dto.getDistribution());
@@ -3289,18 +3310,18 @@
}
return tSettlementConfirm;
}
-
+
@Override
public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
String startTime = null;
String endTime = null;
- if (StringUtils.hasLength(dto.getStartTime())){
+ if (StringUtils.hasLength(dto.getStartTime())) {
dto.setType(1);
String[] split = dto.getStartTime().split(" - ");
startTime = split[0];
endTime = split[1];
}
- if (StringUtils.hasLength(dto.getEndTime())){
+ if (StringUtils.hasLength(dto.getEndTime())) {
dto.setType(2);
String[] split = dto.getEndTime().split(" - ");
startTime = split[0];
@@ -3314,27 +3335,27 @@
Integer roleType = sysUser.getRoleType();
//如果没传siteId,获取当前登陆人所有的siteIds
List<Integer> siteIds = new ArrayList<>();
- if (dto.getSiteIds()==null){
- if (userId != null){
+ if (dto.getSiteIds() == null) {
+ if (userId != null) {
List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
for (GetSiteListDTO datum : data) {
siteIds.add(datum.getId());
}
}
- }else {
+ } else {
siteIds.add(dto.getSiteIds());
}
- if (siteIds.isEmpty()){
+ if (siteIds.isEmpty()) {
siteIds.add(-1);
- }else{
- if (roleType == 2){
+ } else {
+ if (roleType == 2) {
List<Integer> integers = new ArrayList<>();
for (Integer siteId : siteIds) {
// 校验有没有这个站点的权限
- List<Boolean> t1= partnerClient.getSettlementListMenu(sysUser.getObjectId(),siteId).getData();
-
+ List<Boolean> t1 = partnerClient.getSettlementListMenu(sysUser.getObjectId(), siteId).getData();
+
Boolean b = t1.get(2);
- if (b){
+ if (b) {
integers.add(siteId);
}
}
@@ -3342,49 +3363,50 @@
}
}
dto.setSiteIdss(siteIds);
- PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
- List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
-
+ PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
+ List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo, dto);
+
for (TSettlementConfirm tSettlementConfirm : list) {
- if (roleType==2){
+ if (roleType == 2) {
List<Boolean> data = partnerClient.getSettlementListMenu(sysUser.getObjectId(), tSettlementConfirm.getSiteId()).getData();
tSettlementConfirm.setAuthDownLoad(data.get(0));
tSettlementConfirm.setAuthDelete(data.get(1));
}
tSettlementConfirm.setUid(tSettlementConfirm.getId().toString());
List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
- if (!data1.isEmpty()){
+ if (!data1.isEmpty()) {
tSettlementConfirm.setSiteName(data1.get(0).getName());
Partner data = siteClient.getPartnerR(data1.get(0).getPartnerId()).getData();
- if (data!=null){
+ if (data != null) {
tSettlementConfirm.setPartnerName(data.getName());
}
}
-
+
String format = tSettlementConfirm.getStartTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
String format1 = tSettlementConfirm.getEndTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
- tSettlementConfirm.setTime(format+"至"+format1);
-
-
+ tSettlementConfirm.setTime(format + "至" + format1);
+
+
}
pageInfo.setRecords(list);
return pageInfo;
}
-
+
@Autowired
private TChargingOrderService chargingOrderService;
+
@Override
public SettlementTotalVO settlementTotal(String time) {
Long userId = tokenService.getLoginUser().getUserid();
//如果没传siteId,获取当前登陆人所有的siteIds
List<Integer> siteIds = new ArrayList<>();
- if (userId != null){
- List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data) {
- siteIds.add(datum.getId());
- }
+ if (userId != null) {
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
}
- if (siteIds.isEmpty()){
+ if (siteIds.isEmpty()) {
siteIds.add(-1);
}
List<Site> siteList = siteClient.getSiteAll().getData();
@@ -3392,14 +3414,14 @@
List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class)
.eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
SettlementTotalVO res = new SettlementTotalVO();
- List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
+ List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time, siteIds);
LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 减少一个月
LocalDateTime minus = parse.minusMonths(1);
- List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
+ List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time, siteIds);
// 合计
List<TSettlementConfirm> total = new ArrayList<>();
-
+
TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm();
BigDecimal meteringElectronic = new BigDecimal("0");
BigDecimal chargingElectronic = new BigDecimal("0");
@@ -3429,22 +3451,22 @@
BigDecimal couponDiscount = new BigDecimal("0");
tSettlementConfirm1.setElectronicRefund(0);
// 上月成本合计
- BigDecimal beforeCost= new BigDecimal("0");
+ BigDecimal beforeCost = new BigDecimal("0");
// 上月利润合计
- BigDecimal beforeIncome= new BigDecimal("0");
+ BigDecimal beforeIncome = new BigDecimal("0");
int i = 1;
for (TSettlementConfirm tSettlementConfirm : list1) {
tSettlementConfirm.setXuhao(i);
tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
Site site = siteList.stream().filter(e -> e.getId().equals(tSettlementConfirm.getSiteId())).findFirst().orElse(null);
- if (site!=null){
+ if (site != null) {
tSettlementConfirm.setSiteName(site.getName());
}
- if (tSettlementConfirm.getMeteringElectronic()!=null){
+ if (tSettlementConfirm.getMeteringElectronic() != null) {
meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
}
- if (tSettlementConfirm.getLossElectronic()!=null){
+ if (tSettlementConfirm.getLossElectronic() != null) {
lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic());
}
income = income.add(tSettlementConfirm.getIncome());
@@ -3470,12 +3492,12 @@
orderCommission = orderCommission.add(tSettlementConfirm.getOrderCommission());
vipDiscount = vipDiscount.add(tSettlementConfirm.getVipDiscount());
couponDiscount = couponDiscount.add(tSettlementConfirm.getCouponDiscount());
-
+
// 查询结算确认单开始时间和结束时间的单子
QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
.eq("site_id", tSettlementConfirm.getSiteId())
- .eq("recharge_payment_status",2);
- switch (tSettlementConfirm.getType()){
+ .eq("recharge_payment_status", 2);
+ switch (tSettlementConfirm.getType()) {
case 1:
eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
break;
@@ -3483,9 +3505,9 @@
eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
break;
}
- List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e-> e.getPayTime()
+ List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e -> e.getPayTime()
.isBefore(tSettlementConfirm.getEndTime())
- && e.getPayTime().isAfter(tSettlementConfirm.getStartTime())&&e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
+ && e.getPayTime().isAfter(tSettlementConfirm.getStartTime()) && e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
// 充电总时长
Long temp = 0L;
for (TChargingOrder tChargingOrder : tChargingOrders) {
@@ -3493,7 +3515,7 @@
LocalDateTime endTime = tChargingOrder.getEndTime();
// 计算时间差 单位秒
long between = ChronoUnit.SECONDS.between(startTime, endTime);
- temp+=between;
+ temp += between;
}
List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
// 计算充电桩的功率平均值
@@ -3501,17 +3523,17 @@
for (TChargingPile datum : data) {
bigDecimal = bigDecimal.add(datum.getRatedPower());
}
-
+
tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
//利用率=充电量/(桩数量*功率*时间)
List<TChargingPile> data2 = pileList.stream().filter(e -> e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
BigDecimal bigDecimal2 = new BigDecimal("0");
-
- if (data2!=null && (!data2.isEmpty())){
+
+ if (data2 != null && (!data2.isEmpty())) {
for (TChargingPile tChargingPile : data2) {
bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower());
}
- BigDecimal bigDecimal1 = new BigDecimal(data2.size()+"");
+ BigDecimal bigDecimal1 = new BigDecimal(data2.size() + "");
// 平均功率
BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN);
// 充电量
@@ -3520,27 +3542,27 @@
BigDecimal bigDecimal3 = new BigDecimal(data2.size());
BigDecimal multiply = chargingElectronic1.multiply(new BigDecimal("24"));
BigDecimal multiply1 = bigDecimal3.multiply(divide).multiply(new BigDecimal(temp));
- tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1,2,RoundingMode.HALF_DOWN)+"");
- }else{
+ tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1, 2, RoundingMode.HALF_DOWN) + "");
+ } else {
tSettlementConfirm.setRate("");
}
-
-
+
+
for (TSettlementConfirm settlementConfirm : list2) {
int value = parse.getMonth().getValue();
settlementConfirm.setMonth(value);
settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
- if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
+ if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())) {
// 电站相同比较收入涨幅跌幅
- if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
- BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
- tSettlementConfirm.setIncomePercentage(subtract+"%");
- }else {
- tSettlementConfirm.setIncomePercentage("100"+"%");
-
+ if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO) > 0) {
+ BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract + "%");
+ } else {
+ tSettlementConfirm.setIncomePercentage("100" + "%");
+
}
-
+
// 比较总利润 收入合计-成本合计
BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost());
BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost());
@@ -3548,7 +3570,8 @@
.divide(subtract2, 2, RoundingMode.HALF_DOWN)
.multiply(new BigDecimal("100"))
.setScale(2, RoundingMode.HALF_DOWN);
- tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); }
+ tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%");
+ }
beforeCost = beforeCost.add(settlementConfirm.getCost());
beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
}
@@ -3583,21 +3606,21 @@
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
// 本月
- if (beforeIncome.compareTo(new BigDecimal("0")) == 0){
- tSettlementConfirm.setIncomePercentage(0+"%");
- tSettlementConfirm.setIncomePercentage(0+"%");
- }else{
- BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
- tSettlementConfirm.setIncomePercentage(subtract+"%");
- tSettlementConfirm.setIncomePercentage(subtract+"%");
+ if (beforeIncome.compareTo(new BigDecimal("0")) == 0) {
+ tSettlementConfirm.setIncomePercentage(0 + "%");
+ tSettlementConfirm.setIncomePercentage(0 + "%");
+ } else {
+ BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome, 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract + "%");
+ tSettlementConfirm.setIncomePercentage(subtract + "%");
}
// 比较总利润 收入合计-成本合计
BigDecimal subtract1 = income.subtract(cost);
BigDecimal subtract2 = beforeIncome.subtract(beforeCost);
- if (subtract2.compareTo(new BigDecimal("0")) == 0){
- tSettlementConfirm.setTotalPercentage(0+"%");
- }else{
- tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2,2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+ if (subtract2.compareTo(new BigDecimal("0")) == 0) {
+ tSettlementConfirm.setTotalPercentage(0 + "%");
+ } else {
+ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2, 2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")) + "%");
}
tSettlementConfirm.setElectronicRefund(0);
// 查询上次汇报数据 进行比对涨幅跌幅
@@ -3606,17 +3629,18 @@
res.setList2(total);
return res;
}
+
@Override
- public SettlementTotalVO settlementTotalR(String time,Long userId) {
+ public SettlementTotalVO settlementTotalR(String time, Long userId) {
//如果没传siteId,获取当前登陆人所有的siteIds
List<Integer> siteIds = new ArrayList<>();
- if (userId != null){
- List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data) {
- siteIds.add(datum.getId());
- }
+ if (userId != null) {
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
}
- if (siteIds.isEmpty()){
+ if (siteIds.isEmpty()) {
siteIds.add(-1);
}
List<Site> siteList = siteClient.getSiteAll().getData();
@@ -3627,12 +3651,12 @@
List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class)
.eq(TChargingOrder::getRechargePaymentStatus, 2));
SettlementTotalVO res = new SettlementTotalVO();
- List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
+ List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time, siteIds);
LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
- List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
+ List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time, siteIds);
// 合计
List<TSettlementConfirm> total = new ArrayList<>();
-
+
TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm();
BigDecimal meteringElectronic = new BigDecimal("0");
BigDecimal chargingElectronic = new BigDecimal("0");
@@ -3664,22 +3688,22 @@
// tSettlementConfirm1.setTotalPercentage();
tSettlementConfirm1.setElectronicRefund(0);
// 上月成本合计
- BigDecimal beforeCost= new BigDecimal("0");
+ BigDecimal beforeCost = new BigDecimal("0");
// 上月利润合计
- BigDecimal beforeIncome= new BigDecimal("0");
+ BigDecimal beforeIncome = new BigDecimal("0");
int i = 1;
for (TSettlementConfirm tSettlementConfirm : list1) {
tSettlementConfirm.setXuhao(i);
tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
List<Site> data1 = siteList.stream().filter(e -> e.getId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
- if (!data1.isEmpty()){
+ if (!data1.isEmpty()) {
tSettlementConfirm.setSiteName(data1.get(0).getName());
}
- if (tSettlementConfirm.getMeteringElectronic()!=null){
+ if (tSettlementConfirm.getMeteringElectronic() != null) {
meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
}
- if (tSettlementConfirm.getLossElectronic()!=null){
+ if (tSettlementConfirm.getLossElectronic() != null) {
lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic());
}
income = income.add(tSettlementConfirm.getIncome());
@@ -3705,12 +3729,12 @@
orderCommission = orderCommission.add(tSettlementConfirm.getOrderCommission());
vipDiscount = vipDiscount.add(tSettlementConfirm.getVipDiscount());
couponDiscount = couponDiscount.add(tSettlementConfirm.getCouponDiscount());
-
+
// 查询结算确认单开始时间和结束时间的单子
QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
.eq("site_id", tSettlementConfirm.getSiteId())
- .eq("recharge_payment_status",2);
- switch (tSettlementConfirm.getType()){
+ .eq("recharge_payment_status", 2);
+ switch (tSettlementConfirm.getType()) {
case 1:
eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
break;
@@ -3718,10 +3742,10 @@
eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
break;
}
-
- List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e-> e.getPayTime()
+
+ List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e -> e.getPayTime()
.isBefore(tSettlementConfirm.getEndTime())
- && e.getPayTime().isAfter(tSettlementConfirm.getStartTime())&&e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
+ && e.getPayTime().isAfter(tSettlementConfirm.getStartTime()) && e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList());
// 充电总时长
Long temp = 0L;
for (TChargingOrder tChargingOrder : tChargingOrders) {
@@ -3729,7 +3753,7 @@
LocalDateTime endTime = tChargingOrder.getEndTime();
// 计算时间差 单位秒
long between = ChronoUnit.SECONDS.between(startTime, endTime);
- temp+=between;
+ temp += between;
}
List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
// 计算充电桩的功率平均值
@@ -3737,18 +3761,18 @@
for (TChargingPile datum : data) {
bigDecimal = bigDecimal.add(datum.getRatedPower());
}
-
-
+
+
tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
//利用率=充电量/(桩数量*功率*时间)
List<TChargingPile> data2 = chargingPileClient.getChargingPileBySiteId(tSettlementConfirm.getSiteId()).getData();
BigDecimal bigDecimal2 = new BigDecimal("0");
-
- if (data2!=null && (!data2.isEmpty())){
+
+ if (data2 != null && (!data2.isEmpty())) {
for (TChargingPile tChargingPile : data2) {
bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower());
}
- BigDecimal bigDecimal1 = new BigDecimal(data2.size()+"");
+ BigDecimal bigDecimal1 = new BigDecimal(data2.size() + "");
// 平均功率
BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN);
// 充电量
@@ -3757,27 +3781,27 @@
BigDecimal bigDecimal3 = new BigDecimal(data2.size());
BigDecimal multiply = chargingElectronic1.multiply(new BigDecimal("24"));
BigDecimal multiply1 = bigDecimal3.multiply(divide).multiply(new BigDecimal(temp));
- tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1,2,RoundingMode.HALF_DOWN)+"");
- }else{
+ tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1, 2, RoundingMode.HALF_DOWN) + "");
+ } else {
tSettlementConfirm.setRate("");
}
-
-
+
+
for (TSettlementConfirm settlementConfirm : list2) {
int value = parse.getMonth().getValue();
settlementConfirm.setMonth(value);
settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
- if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
+ if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())) {
// 电站相同比较收入涨幅跌幅
- if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
- BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
- tSettlementConfirm.setIncomePercentage(subtract+"%");
- }else {
- tSettlementConfirm.setIncomePercentage("100"+"%");
-
+ if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO) > 0) {
+ BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract + "%");
+ } else {
+ tSettlementConfirm.setIncomePercentage("100" + "%");
+
}
-
+
// 比较总利润 收入合计-成本合计
BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost());
BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost());
@@ -3785,7 +3809,8 @@
.divide(subtract2, 2, RoundingMode.HALF_DOWN)
.multiply(new BigDecimal("100"))
.setScale(2, RoundingMode.HALF_DOWN);
- tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); }
+ tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%");
+ }
beforeCost = beforeCost.add(settlementConfirm.getCost());
beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
}
@@ -3820,22 +3845,22 @@
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
// 本月
- if (beforeIncome.compareTo(new BigDecimal("0")) == 0){
- tSettlementConfirm.setIncomePercentage(0+"%");
- tSettlementConfirm.setIncomePercentage(0+"%");
- }else{
- BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
- tSettlementConfirm.setIncomePercentage(subtract+"%");
- tSettlementConfirm.setIncomePercentage(subtract+"%");
-
+ if (beforeIncome.compareTo(new BigDecimal("0")) == 0) {
+ tSettlementConfirm.setIncomePercentage(0 + "%");
+ tSettlementConfirm.setIncomePercentage(0 + "%");
+ } else {
+ BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome, 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract + "%");
+ tSettlementConfirm.setIncomePercentage(subtract + "%");
+
}
// 比较总利润 收入合计-成本合计
BigDecimal subtract1 = income.subtract(cost);
BigDecimal subtract2 = beforeIncome.subtract(beforeCost);
- if (subtract2.compareTo(new BigDecimal("0")) == 0){
- tSettlementConfirm.setTotalPercentage(0+"%");
- }else{
- tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2,2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+ if (subtract2.compareTo(new BigDecimal("0")) == 0) {
+ tSettlementConfirm.setTotalPercentage(0 + "%");
+ } else {
+ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2, 2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")) + "%");
}
tSettlementConfirm.setElectronicRefund(0);
// 查询上次汇报数据 进行比对涨幅跌幅
@@ -3844,79 +3869,80 @@
res.setList2(total);
return res;
}
-
+
@Override
public List<Map<String, Object>> countBySource(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.countBySource(siteIds,statisticsQueryDto);
+ return this.baseMapper.countBySource(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> equipmentUserType1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.equipmentUserType1(siteIds,statisticsQueryDto);
+ return this.baseMapper.equipmentUserType1(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> equipmentUserType2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.equipmentUserType2(siteIds,statisticsQueryDto);
+ return this.baseMapper.equipmentUserType2(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> equipmentMapbroke1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.equipmentMapbroke1(siteIds,statisticsQueryDto);
+ return this.baseMapper.equipmentMapbroke1(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> equipmentMapbroke2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.equipmentMapbroke2(siteIds,statisticsQueryDto);
+ return this.baseMapper.equipmentMapbroke2(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> equipmentMapOut1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.equipmentMapOut1(siteIds,statisticsQueryDto);
+ return this.baseMapper.equipmentMapOut1(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> equipmentMapOut2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.equipmentMapOut2(siteIds,statisticsQueryDto);
+ return this.baseMapper.equipmentMapOut2(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> needElec(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.needElec(siteIds,statisticsQueryDto);
+ return this.baseMapper.needElec(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> getHourType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
- return this.baseMapper.getHourType(siteIds,statisticsQueryDto);
+ return this.baseMapper.getHourType(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> getDateType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
- return this.baseMapper.getDateType(siteIds,statisticsQueryDto);
+ return this.baseMapper.getDateType(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> getMonthType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
- return this.baseMapper.getMonthType(siteIds,statisticsQueryDto);
+ return this.baseMapper.getMonthType(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> getchargingCapacity(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) {
- return this.baseMapper.getchargingCapacity(siteIds,statisticsQueryDto);
+ return this.baseMapper.getchargingCapacity(siteIds, statisticsQueryDto);
}
-
+
@Override
public List<Map<String, Object>> countAllUserData() {
return this.baseMapper.countAllUserData();
}
-
+
@Override
public List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
- return this.baseMapper.needElec1(siteIds,statisticsQueryDto);
+ return this.baseMapper.needElec1(siteIds, statisticsQueryDto);
}
/**
* 获取充电结束页面详情
+ *
* @param id
* @return
*/
@@ -3925,7 +3951,7 @@
EndOfChargePageInfo info = new EndOfChargePageInfo();
TChargingOrder chargingOrder = this.getById(id);
Long userId = tokenService.getLoginUserApplet().getUserId();
- if(!chargingOrder.getAppUserId().equals(userId)){
+ if (!chargingOrder.getAppUserId().equals(userId)) {
throw new RuntimeException("权限不足");
}
info.setId(id);
@@ -3948,7 +3974,7 @@
info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second));
return info;
}
-
+
@Override
public Long countNoTag() {
return this.baseMapper.countNoTag();
@@ -3958,27 +3984,27 @@
@Override
public List<TChargingOrder> getChargingOrder(TChargingOrderVo order) {
LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0);
- if(null != order.getChargingPileId()){
+ if (null != order.getChargingPileId()) {
queryWrapper.eq(TChargingOrder::getChargingPileId, order.getChargingPileId());
}
- if(null != order.getChargingGunId()){
+ if (null != order.getChargingGunId()) {
queryWrapper.eq(TChargingOrder::getChargingGunId, order.getChargingGunId());
}
- if(null != order.getStatus()){
+ if (null != order.getStatus()) {
queryWrapper.eq(TChargingOrder::getStatus, order.getStatus());
}
- if(null != order.getAppUserId()){
+ if (null != order.getAppUserId()) {
queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
}
- if(null != order.getStatusList()){
+ if (null != order.getStatusList()) {
queryWrapper.in(TChargingOrder::getStatus, order.getStatusList());
}
- if(null != order.getEndMode()){
+ if (null != order.getEndMode()) {
queryWrapper.eq(TChargingOrder::getEndMode, order.getEndMode());
}
return this.list(queryWrapper.orderByDesc(TChargingOrder::getCreateTime));
}
-
+
@Override
public Long countCar(List<String> brands) {
return this.baseMapper.countCar(brands);
@@ -3987,6 +4013,7 @@
/**
* 添加三方平台充电订单数据
+ *
* @param query
*/
@Override
@@ -3994,7 +4021,7 @@
//检查当前枪是否是正在使用中
TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, query.getChargingGunId())
.in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0));
- if(null != one){
+ if (null != one) {
return R.fail("充电枪正在充电中,启动失败");
}
@@ -4021,9 +4048,9 @@
chargingOrder.setTripartitePlatformName(operator.getName());
chargingOrder.setStartChargeSeq(query.getStartChargeSeq());
//车辆信息
- if(StringUtils.hasLength(query.getPlateNum())){
+ if (StringUtils.hasLength(query.getPlateNum())) {
TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(query.getPlateNum()).getData();
- if(null != appUserCar){
+ if (null != appUserCar) {
chargingOrder.setAppUserCarId(appUserCar.getId());
}
chargingOrder.setPlateNum(query.getPlateNum());
@@ -4037,7 +4064,7 @@
this.save(chargingOrder);
Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
- if(null == accountingStrategyId){
+ if (null == accountingStrategyId) {
Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
//查询站点上面的计费策略
accountingStrategyId = site.getAccountingStrategyId();
@@ -4055,6 +4082,8 @@
AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
+ accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now());
+ accountingStrategyDetailOrder.setDelFlag(false);
list1.add(accountingStrategyDetailOrder);
}
accountingStrategyDetailOrderService.saveBatch(list1);
@@ -4089,26 +4118,33 @@
// scheduler.shutdown();
// }
// }, 5, 1, TimeUnit.SECONDS);
-
- //推送三方平台订单状态
- tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
+ if(1 == site.getIsOpenSynchronization()){
+ //推送三方平台订单状态
+ tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+ }
return R.ok();
}
/**
* 三方平台停止充电操作
+ *
* @param startChargeSeq
* @return
*/
@Override
public R tripartitePlatformStopCharge(String startChargeSeq) {
+ log.info("三方平台请求停止充电:" + startChargeSeq);
TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getStartChargeSeq, startChargeSeq));
Integer status = order.getStatus();
- if(status != 3){
+ String code1 = order.getCode();
+ if (status != 3) {
+ log.info("【" + code1 + "】三方平台请求停止充电失败:还未开始充电");
return R.fail("还未开始充电");
}
- if(status == 4 || status == 5){
+ if (status == 4 || status == 5) {
+ log.info("【" + code1 + "】三方平台请求停止充电:不能重复操作");
return R.fail("不能重复操作");
}
TChargingOrder chargingOrder = new TChargingOrder();
@@ -4118,21 +4154,22 @@
chargingOrder.setStatus(4);
chargingOrder.setEndMode(1);
this.updateById(chargingOrder);
-
- tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
-
- String code1 = order.getCode();
+ Site site = siteClient.getSiteByIds(Arrays.asList(order.getSiteId())).getData().get(0);
+ if(1 == site.getIsOpenSynchronization()){
+ tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
+ }
TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
//异步线程处理停机
ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
- cachedThreadPool.execute(()->{
+ cachedThreadPool.execute(() -> {
//调用硬件停止充电,停止成功后开始计算费用退款
TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData();
PlatformStopCharging platformStopCharging = new PlatformStopCharging();
platformStopCharging.setCharging_pile_code(chargingPile.getCode());
platformStopCharging.setCharging_gun_code(chargingGun.getCode());
+ log.info("【" + code1 + "】三方平台请求停止充电发起消息:" + JSON.toJSONString(platformStopCharging));
sendMessageClient.platformStopCharging(platformStopCharging);
- log.info(code1 + ":-------------------远程停止充电请求-------------------");
+ log.info("【" + code1 + "】三方平台请求停止充电发起消息结束");
log.info(platformStopCharging.toString());
});
return R.ok();
@@ -4141,6 +4178,7 @@
/**
* 获取充电后没有扣除费用的数据
+ *
* @return
*/
@Override
@@ -4149,7 +4187,7 @@
.ne(TChargingOrder::getElectricity, 0).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
List<Map<String, Object>> mapList = new ArrayList<>();
for (TChargingOrder order : list) {
- TransactionRecord transactionRecord = transactionRecordClient.findTransactionRecord(order.getCode()).getData();
+ TransactionRecord transactionRecord = transactionRecordService.findOne(order.getCode());
Map<String, Object> map = new HashMap<>();
map.put("order", order);
map.put("transactionRecord", transactionRecord);
@@ -4160,29 +4198,26 @@
/**
- *
* 手动推送订单给第三方平台
+ *
* @param code
* @return
*/
@Override
public R pushOrderInfo(String code) {
TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
- tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
- tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
- chargingOrder.getOperatorId());
- tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
- return R.ok();
+// tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+// tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
+// chargingOrder.getOperatorId());
+ return tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
}
-
-
- public R addChargingOrderSummaryData(){
+ public R addChargingOrderSummaryData() {
List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
List<TChargingOrder> list1 = this.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0));
for (TChargingOrder chargingOrderVO : list1) {
- if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
+ if (null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()) {
continue;
}
List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
@@ -4194,17 +4229,17 @@
if (!chargingOrderVO.getOrderSource().equals(2)) {
serviceMoney = serviceMoney.add(service_reduce);
paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
- }else{
+ } else {
serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
}
Long time = 0L;
- if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+ if (chargingOrderVO.getStartTime() != null && chargingOrderVO.getEndTime() != null) {
LocalDateTime startTime = chargingOrderVO.getStartTime();
LocalDateTime endTime = chargingOrderVO.getEndTime();
// 计算时间差 单位秒
long between = ChronoUnit.SECONDS.between(startTime, endTime);
- time+=between;
+ time += between;
}
TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
@@ -4218,7 +4253,7 @@
}
return R.ok();
}
-
+
/**
* 大屏-新能源汽车电池安全检测次数统计
*/
@@ -4227,14 +4262,14 @@
StatisticsOfBatteryVO vo = new StatisticsOfBatteryVO();
//1.计算累计次数
//查询该俩站点的快充和超充的充电枪id集合 site_id 25 26 charge_model 1 2
- R<List<Integer>> r = chargingGunClient.getGunIdsBySiteIdsAndChargeModels(Arrays.asList(25,26),Arrays.asList(1,2));
- if (r.getCode()!=200){
+ R<List<Integer>> r = chargingGunClient.getGunIdsBySiteIdsAndChargeModels(Arrays.asList(25, 26), Arrays.asList(1, 2));
+ if (r.getCode() != 200) {
return R.ok(vo);
}
- List<Integer> gunIds=r.getData();
+ List<Integer> gunIds = r.getData();
//统计
- Long total= 0L;
- if(gunIds!=null && !gunIds.isEmpty()) {
+ Long total = 0L;
+ if (gunIds != null && !gunIds.isEmpty()) {
total = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>()
.eq(TChargingOrder::getDelFlag, 0)//未删除
.in(TChargingOrder::getStatus, Arrays.asList(3, 5))//充电中、已结束
@@ -4248,8 +4283,8 @@
LocalDateTime endDate = today.minusDays(1).atTime(LocalTime.MAX);
// 查询数据库
List<OrderCountByDate> orderCounts = this.baseMapper.countOrdersByDate(startDate, endDate, gunIds);*/
-
-
+
+
List<LocalDate> dates = new ArrayList<>();
List<Integer> counts = new ArrayList<>();
LocalDate today = LocalDate.now();
@@ -4259,13 +4294,13 @@
LocalDateTime startOfDay = day.atStartOfDay();
LocalDateTime endOfDay = day.atTime(LocalTime.MAX);
//统计
- Long count=0L;
- if(gunIds!=null && !gunIds.isEmpty()){
+ Long count = 0L;
+ if (gunIds != null && !gunIds.isEmpty()) {
count = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>()
- .eq(TChargingOrder::getDelFlag,0)//未删除
- .in(TChargingOrder::getStatus,Arrays.asList(3,5))//充电中、已结束
- .in(TChargingOrder::getChargingGunId,gunIds)//符合条件的充电枪 站点 超充快充
- .between(TChargingOrder::getCreateTime,startOfDay,endOfDay));//每天
+ .eq(TChargingOrder::getDelFlag, 0)//未删除
+ .in(TChargingOrder::getStatus, Arrays.asList(3, 5))//充电中、已结束
+ .in(TChargingOrder::getChargingGunId, gunIds)//符合条件的充电枪 站点 超充快充
+ .between(TChargingOrder::getCreateTime, startOfDay, endOfDay));//每天
}
dates.add(day);
counts.add(count.intValue());
@@ -4274,10 +4309,54 @@
vo.setCounts(counts);
return R.ok(vo);
}
+
@Override
- public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) {
+ public Double getSumDegreeBySiteIds(List<Integer> siteIds) {
+ Double sumDegreeBySiteIds = this.baseMapper.getSumDegreeBySiteIds(siteIds);
- return this.baseMapper.getSumDegreeBySiteIds(siteIds);
+ return sumDegreeBySiteIds;
+
+ }
+
+
+ /**
+ * 获取启动失败且时间超过1小时的订单
+ *
+ * @return
+ */
+ @Override
+ public List<TChargingOrder> findFailedStartupOrder() {
+ return this.baseMapper.findFailedStartupOrder();
+ }
+
+
+ /**
+ * 获取停止中的数据
+ *
+ * @return
+ */
+ @Override
+ public List<TChargingOrder> findStoppedOrder() {
+ return this.baseMapper.findStoppedOrder();
+ }
+
+
+ /**
+ * 获取充电中的数据
+ *
+ * @return
+ */
+ @Override
+ public List<TChargingOrder> findChargingOrder() {
+ return this.baseMapper.findChargingOrder();
+ }
+ /**
+ * 获取已结束的数据
+ * @return
+ */
+ @Override
+ public List<TChargingOrder> findEndChargingOrder() {
+ return this.baseMapper.findEndChargingOrder();
}
}
--
Gitblit v1.7.1