From 10eed6e3043756b902b576e7b2ceeef4419508ef Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 31 十月 2024 17:30:13 +0800
Subject: [PATCH] 修改
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 297 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 231 insertions(+), 66 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 0539930..33bd961 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
@@ -50,6 +50,7 @@
import com.ruoyi.order.vo.EndOfChargePageInfo;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
+import com.ruoyi.other.api.domain.TVip;
import com.ruoyi.other.api.feignClient.*;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
@@ -255,11 +256,13 @@
myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode());
String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData();
myChargingOrderInfo.setName(name);
- if(null != chargingOrder.getAppUserCarId()){
- TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(chargingOrder.getAppUserCarId())).getData().get(0);
- myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
- }else{
- myChargingOrderInfo.setLicensePlate("无");
+ if(Objects.nonNull(chargingOrder.getAppUserCarId())){
+ TAppUserCar tAppUserCar = appUserCarClient.getCarById(chargingOrder.getAppUserCarId().toString()).getData();
+ if(null != tAppUserCar){
+ myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
+ }else{
+ myChargingOrderInfo.setLicensePlate("无");
+ }
}
myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
@@ -386,7 +389,7 @@
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){
- return AjaxResult.error("充电枪正在充电桩中,启动失败");
+ return AjaxResult.error("充电枪正在充电中,启动失败");
}
//查询当前充电枪是否有正在支付的订单
one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId())
@@ -446,6 +449,7 @@
chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
chargingOrder.setOrderSource(0);
chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪");
+ chargingOrder.setStatus(1);
Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
@@ -684,9 +688,6 @@
String code = chargingOrder.getCode();
String key = "AQJC_" + chargingOrder.getChargingGunId();
List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
- if(null == data || data.size() == 0){
- return false;
- }
log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
if(data.size() != 0){
PlatformStartChargingReply platformStartChargingReply = data.get(1);
@@ -736,7 +737,7 @@
counter = (null == counter ? 0 : counter) + 1;
boot_failed_map.put(code, counter);
//启动失败
- preChargeCheck1.setStartupSuccess(3);
+ preChargeCheck1.setStartupSuccess(1);
preChargeCheck1.setFailureCause(0);
redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
return false;
@@ -980,16 +981,17 @@
chargingOrder.setId(Long.valueOf(id));
chargingOrder.setAppUserId(order.getAppUserId());
chargingOrder.setEndTime(LocalDateTime.now());
+ chargingOrder.setStatus(4);
chargingOrder.setEndMode(1);
this.updateById(chargingOrder);
- String code1 = chargingOrder.getCode();
- TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+ String code1 = order.getCode();
+ TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
//异步线程处理停机
ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
cachedThreadPool.execute(()->{
//调用硬件停止充电,停止成功后开始计算费用退款
- TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingOrder.getChargingPileId()).getData();
+ TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData();
PlatformStopCharging platformStopCharging = new PlatformStopCharging();
platformStopCharging.setCharging_pile_code(chargingPile.getCode());
platformStopCharging.setCharging_gun_code(chargingGun.getCode());
@@ -1096,20 +1098,22 @@
inviteUser.setAward(num1);
inviteUserClient.updateInviteUser(inviteUser);
}
- TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
- String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
- appUserIntegralChange.setCode(code);
- appUserIntegralChange.setAppUserId(appUser1.getId());
- appUserIntegralChange.setChangeType(5);
- appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
- appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
- appUserIntegralChange.setCreateTime(LocalDateTime.now());
- appUserIntegralChange.setOrderCode(chargingOrder.getCode());
- appUserIntegralChange.setExtension(chargingOrder.getId().toString());
- appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
-
- appUser1.setPoints(appUser1.getPoints() + num1);
- appUserClient.updateAppUser(appUser1);
+ if(num1 > 0){
+ TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
+ String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+ appUserIntegralChange.setCode(code);
+ appUserIntegralChange.setAppUserId(appUser1.getId());
+ appUserIntegralChange.setChangeType(4);
+ appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
+ appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
+ appUserIntegralChange.setCreateTime(LocalDateTime.now());
+ appUserIntegralChange.setOrderCode(chargingOrder.getCode());
+ appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+ appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+
+ appUser1.setPoints(appUser1.getPoints() + num1);
+ appUserClient.updateAppUser(appUser1);
+ }
}
}
@@ -1690,7 +1694,6 @@
chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount());
chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
- chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getCommissionAmount());
// 查询费用明细列表
List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery()
.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())
@@ -1770,7 +1773,7 @@
public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
Integer status = chargingOrder.getStatus();
- if(status == 4 || status == 5){
+ if(status == 5){
return;
}
@@ -1820,7 +1823,7 @@
BeanUtils.copyProperties(strategyDetail, vo1);
vo1.setStart(sdfs.parse(vo.getStart_time().split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime());
vo1.setEnd(sdfs.parse(vo.getStart_time().split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime());
- vo1.setServiceCharge(sharp_peak_charge);
+ vo1.setChargingCapacity(sharp_peak_charge);
lists.add(vo1);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
@@ -1863,10 +1866,8 @@
} catch (ParseException e) {
throw new RuntimeException(e);
}
+
for (AccountingStrategyDetailOrderVo strategyDetail : lists) {
- if(strategyDetail.getStart() < start.getTime() || strategyDetail.getEnd() > end.getTime()){
- continue;
- }
BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
@@ -1882,9 +1883,9 @@
chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime());
}
if(end.getTime() >= strategyDetail.getEnd()){
- chargingOrderAccountingStrategy.setStartTime(strategyDetail.getEndTime());
+ chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime());
}else{
- chargingOrderAccountingStrategy.setStartTime(sdf2.format(end));
+ chargingOrderAccountingStrategy.setEndTime(sdf2.format(end));
}
//已充电总度数
@@ -2028,7 +2029,7 @@
}
}
- order.setServiceCharge(periodServicePrice_total);
+ order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
order.setPaymentAmount(payAmount);
order.setRefundAmount(refundAmount);
order.setRefundStatus(1);
@@ -2072,17 +2073,19 @@
}
}
- 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);
+ }
}
//计算用户标签
@@ -2106,7 +2109,7 @@
chargingOrderRefund.setRefundTitle("充电完成退款");
chargingOrderRefund.setRefundContent("充电完成退款");
chargingOrderRefund.setRefundReason("充电完成退款");
- chargingOrderRefund.setRefundRemark("实际充电消费金额:" + refundAmount);
+ chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
chargingOrderRefund.setRefundTotalAmount(refundAmount);
chargingOrderRefund.setPayAmount(rechargeAmount);
if(1 == rechargePaymentType){
@@ -2228,12 +2231,19 @@
private TShoppingOrderService shoppingOrderService;
@Resource
private TShoppingOrderRefundService shoppingOrderRefundService;
+ @Resource
+ private TVipOrderService vipOrderService;
+ @Resource
+ 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(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
+ tChargingOrder.setStatus(5);
}
@@ -2301,6 +2311,10 @@
if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
return R.fail("退款金额需小于支付金额");
}
+ if ((tChargingOrder.getPaymentAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
+ tChargingOrder.setStatus(5);
+ }
+
TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2351,9 +2365,7 @@
tChargingOrder.setRefundStatus(2);
tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- if (payOrderQueryDto.getRefundAmount().compareTo(tChargingOrder.getPaymentAmount())==0){
- tChargingOrder.setStatus(5);
- }
+
shoppingOrderService.updateById(tChargingOrder);
shoppingOrderRefundService.save(chargingOrderRefund);
@@ -2362,6 +2374,73 @@
}
}
+
+ if (payOrderQueryDto.getType()==3){
+ TVipOrder tChargingOrder = vipOrderService.getById(payOrderQueryDto.getOrderId());
+ if (tChargingOrder.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());
+ 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<String> 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(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){
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+
+ tChargingOrder.setRefundStatus(2);
+ tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+
+
+ vipOrderService.updateById(tChargingOrder);
+
+ vipOrderRefundService.save(chargingOrderRefund);
+
+ }
+ }
+
+ }
@@ -2382,7 +2461,7 @@
}
TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, appUserCar.getId())
.eq(TChargingOrder::getDelFlag, 0).gt(TChargingOrder::getStartTime, query.getStartTime())
- .eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, -1));
+ .eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, 5));
return one;
}
@@ -2416,6 +2495,7 @@
// 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表
QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
.eq("site_id", dto.getSiteId())
+ .eq("status", 5)
.eq("recharge_payment_status",2);
switch (dto.getType()){
case 1:
@@ -2483,21 +2563,17 @@
// 三方交易手续费 三方收费*0.6%
commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
// 订单手续费 订单支付金额 - 退款金额*0.6%
- orderCommission = paymentAmount.multiply(new BigDecimal("0.006"));
+ orderCommission = paymentAmount.multiply(new BigDecimal("0.006").setScale(2,RoundingMode.HALF_DOWN));
tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
- tSettlementConfirm.setElectrovalence(electrovalence);
- // 服务费=总服务费-三费收费-交易手续费-交易手续费-服务费会员抵扣-服务费优惠券抵扣
- tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).subtract(sharingAmount).subtract(orderCommission).subtract(vipDiscount).subtract(couponDiscount));
+ tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
+ tSettlementConfirm.setServiceCharge(serviceCharge.setScale(2, RoundingMode.HALF_DOWN));
tSettlementConfirm.setOrderCommission(orderCommission);
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
tSettlementConfirm.setSiteId(dto.getSiteId());
tSettlementConfirm.setChargingElectronic(chargingElectronic);
tSettlementConfirm.setIncome(chargingElectronic.add(serviceCharge));
- tSettlementConfirm.setProfitMoney(new BigDecimal("0"));
- tSettlementConfirm.setNewMoney(new BigDecimal("0"));
- tSettlementConfirm.setNewSettlement(new BigDecimal("0"));
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
tSettlementConfirm.setType(dto.getType());
@@ -2518,11 +2594,23 @@
tSettlementConfirm.setRemark(dto.getRemark());
tSettlementConfirm.setServicePartner(dto.getServicePartner());
tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
+ BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner().multiply(new BigDecimal("0.01")));
+ // 总电损费用
+ BigDecimal divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, RoundingMode.HALF_DOWN);
+ // 平台承担电损
+ BigDecimal subtract1 = divide.subtract(tSettlementConfirm.getProportionMoney());
+ BigDecimal multiply = dto.getServiceMoney().multiply(subtract);
+ BigDecimal subtract2 = multiply.subtract(subtract1);
+ tSettlementConfirm.setNewMoney(subtract2);
+
tSettlementConfirm.setTotalService(dto.getTotalService());
tSettlementConfirm.setServiceRemark(dto.getServiceRemark());
tSettlementConfirm.setDistribution(dto.getDistribution());
tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge()));
- tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()));
+ tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getMetering()));
+ tSettlementConfirm.setProfitMoney(chargingElectronic.add(serviceCharge).subtract(tSettlementConfirm.getCost()));
+ tSettlementConfirm.setNewSettlement(subtract2.subtract(tSettlementConfirm.getCost()));
+
tSettlementConfirmMapper.insert(tSettlementConfirm);
}
return tSettlementConfirm;
@@ -2530,6 +2618,18 @@
@Override
public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
+ if (StringUtils.hasLength(dto.getStartTime())){
+ dto.setType(1);
+ String[] split = dto.getStartTime().split(" - ");
+ dto.setStartTime(split[0]);
+ dto.setEndTime(split[1]);
+ }
+ if (StringUtils.hasLength(dto.getEndTime())){
+ dto.setType(2);
+ String[] split = dto.getStartTime().split(" - ");
+ dto.setStartTime(split[0]);
+ dto.setEndTime(split[1]);
+ }
PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
for (TSettlementConfirm tSettlementConfirm : list) {
@@ -2594,11 +2694,12 @@
// tSettlementConfirm1.setIncomePercentage();
// tSettlementConfirm1.setTotalPercentage();
tSettlementConfirm1.setElectronicRefund(0);
-// 上月成本合计
+ // 上月成本合计
BigDecimal beforeCost= new BigDecimal("0");
// 上月利润合计
BigDecimal beforeIncome= new BigDecimal("0");
for (TSettlementConfirm tSettlementConfirm : list1) {
+ tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
if (!data1.isEmpty()){
tSettlementConfirm.setSiteName(data1.get(0).getName());
@@ -2651,11 +2752,21 @@
StringBuilder stringBuilder = new StringBuilder();
for (TChargingOrder tChargingOrder : tChargingOrders) {
stringBuilder.append(tChargingOrder.getCode()).append(",");
+
}
- Long temp = 0L;
+ // 充电总时长
+
+ Long temp = 1L;
if (StringUtils.hasLength(stringBuilder.toString())){
- List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(stringBuilder.substring(0,stringBuilder.length()-1)).getData();
- temp+=data6.stream().mapToLong(UploadRealTimeMonitoringData::getCumulative_charging_time).sum();
+ String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
+ for (String s : substring.split(",")) {
+ UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData();
+ if (data6!=null){
+ temp+=(data6.getCumulative_charging_time()*60);
+
+ }
+
+ }
}
List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
// 计算充电桩的功率平均值
@@ -2666,15 +2777,36 @@
tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
- // todo 计算利用率 该电站充电桩本月利用率:
//利用率=充电量/(桩数量*功率*时间)
+ List<TChargingPile> data2 = chargingPileClient.getChargingPileBySiteId(tSettlementConfirm.getSiteId()).getData();
+ BigDecimal bigDecimal2 = new BigDecimal("0");
+
+ if (data2!=null && (!data2.isEmpty())){
+ for (TChargingPile tChargingPile : data2) {
+ bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower());
+ }
+ BigDecimal bigDecimal1 = new BigDecimal(data2.size()+"");
+ // 平均功率
+ BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN);
+ // 充电量
+ BigDecimal chargingElectronic1 = tSettlementConfirm.getChargingElectronic();
+ // 桩数量
+ 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("");
+ }
+
for (TSettlementConfirm settlementConfirm : list2) {
settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
+ tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic());
if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
// 电站相同比较收入涨幅跌幅
if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
- BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ 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"+"%");
@@ -2852,4 +2984,37 @@
public Long countNoTag() {
return this.baseMapper.countNoTag();
}
+
+
+ @Override
+ public List<TChargingOrder> getChargingOrder(TChargingOrderVo order) {
+ LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0);
+ if(null != order.getChargingPileId()){
+ queryWrapper.eq(TChargingOrder::getChargingPileId, order.getChargingPileId());
+ }
+ if(null != order.getChargingGunId()){
+ queryWrapper.eq(TChargingOrder::getChargingGunId, order.getChargingGunId());
+ }
+ if(null != order.getStatus()){
+ queryWrapper.eq(TChargingOrder::getStatus, order.getStatus());
+ }
+ if(null != order.getAppUserId()){
+ queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
+ }
+ if(null != order.getAppUserId()){
+ queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
+ }
+ if(null != order.getStatusList()){
+ queryWrapper.in(TChargingOrder::getAppUserId, order.getStatusList());
+ }
+ 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);
+ }
}
--
Gitblit v1.7.1