From ef866e22a25f65033f6e6109c10f2bfb543aba40 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 03 五月 2025 17:01:58 +0800
Subject: [PATCH] 政务云
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 343 +++++++++++++++++++++++++++++++++++---------------------
1 files changed, 212 insertions(+), 131 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 e332428..07f670a 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
@@ -697,15 +697,15 @@
log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
sendMessageClient.platformStartCharging(platformStartCharging);
- //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
- Long id = chargingOrder.getId();
- //执行5分钟的定时任务检测
- ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
- scheduler.scheduleAtFixedRate(()->{
- if(timingDetection(id)){
- scheduler.shutdown();
- }
- }, 5, 1, TimeUnit.SECONDS);
+// //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+// Long id = chargingOrder.getId();
+// //执行5分钟的定时任务检测
+// ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+// scheduler.scheduleAtFixedRate(()->{
+// if(timingDetection(id)){
+// scheduler.shutdown();
+// }
+// }, 5, 1, TimeUnit.SECONDS);
return AjaxResult.success();
}
@@ -731,7 +731,7 @@
Integer counter = counter_map.get(code);
PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
//5分钟内还未插枪则取消充电,退回金额。
- if(failure_cause == 5 && (null == counter || counter < 300)){
+ if(failure_cause == 5 && (null == counter || counter < 1800)){
counter = (null == counter ? 0 : counter) + 1;
counter_map.put(code, counter);
//启动失败
@@ -772,7 +772,7 @@
log.info(code + ":-------------------未上传开启充电结果-------------------" + counter);
PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
//5分钟内未启动成功,退回金额。
- if(null == counter || counter < 300){
+ if(null == counter || counter < 1800){
counter = (null == counter ? 0 : counter) + 1;
boot_failed_map.put(code, counter);
//启动失败
@@ -970,6 +970,73 @@
}
}
+ }
+ }
+
+
+
+ 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){
+ BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+ 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(money);
+ chargingOrderRefund.setRefundStatus(1);
+ chargingOrderRefund.setPayType(rechargePaymentType);
+ chargingOrderRefund.setRefundStatus(1);
+ chargingOrderRefund.setCode(code);
+ chargingOrderRefund.setRefundTitle("充电完成退款");
+ chargingOrderRefund.setRefundContent("充电完成退款");
+ chargingOrderRefund.setRefundReason("充电完成退款");
+ chargingOrderRefund.setRefundRemark("充电完成退款,手动退款");
+ chargingOrderRefund.setRefundTotalAmount(money);
+ chargingOrderRefund.setPayAmount(money);
+ 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(money.multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+ amount.setCurrency("CNY");
+ model.setAmount(amount);
+ R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
+ if(200 == orderR.getCode()){
+ 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 == 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){
+ chargingOrderRefundService.save(chargingOrderRefund);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
+ }
+ }
+
}
}
@@ -1287,7 +1354,6 @@
endTime2 = split[1];
}
PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
- PageInfo<ChargingOrderVO> pageInfo1 = new PageInfo<>(1,999999999);
if (StringUtils.hasLength(dto.getPhone())){
List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
@@ -1333,7 +1399,7 @@
if (siteIds.isEmpty())siteIds.add(-1);
dto.setSiteIds(siteIds);
List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
- List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
+ List<ChargingOrderVO> list1 = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2);
BigDecimal total = new BigDecimal("0");
long time = 0L;
BigDecimal electronicMoney = new BigDecimal("0");
@@ -1407,24 +1473,31 @@
}
}
-
List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
.eq(TChargingOrderRefund::getRefundStatus,2).list();
+// BigDecimal total = new BigDecimal("0");
+// long time = 0L;
+// BigDecimal electronicMoney = new BigDecimal("0");
+// BigDecimal serviceMoney = new BigDecimal("0");
+// BigDecimal refundMoney = new BigDecimal("0");
+// BigDecimal paymentMoney = new BigDecimal("0");
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)) {
- paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0"));
+ serviceMoney = serviceMoney.add(service_reduce);
+ paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
}else{
- paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN));
- }
-// if (chargingOrderVO.getRechargeAmount()!=null){
-// commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
-// }
- if (chargingOrderVO.getChargingCapacity()!=null){
- total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
+ 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();
@@ -1438,20 +1511,12 @@
for (TChargingOrderRefund tChargingOrderRefund : list2) {
refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
}
-
- //充电明细
- electronicMoney = electronicMoney.add(electronic_reduce);
- if (!chargingOrderVO.getOrderSource().equals(2)){
- serviceMoney = serviceMoney.add(service_reduce);
- }else{
- serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
- }
}
tCharingOrderVO.setTotal(total);
tCharingOrderVO.setTime(time);
- tCharingOrderVO.setIncome(paymentMoney);
- tCharingOrderVO.setElectronicMoney(electronicMoney);
- tCharingOrderVO.setServiceMoney(serviceMoney);
+ tCharingOrderVO.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ tCharingOrderVO.setElectronicMoney(electronicMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ tCharingOrderVO.setServiceMoney(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
pageInfo.setRecords(list);
tCharingOrderVO.setList(pageInfo);
return tCharingOrderVO;
@@ -1501,8 +1566,8 @@
}
@Override
- public Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds) {
- return this.baseMapper.countAll(sixBefore,siteIds);
+ public Map<String, Object> countAll(List<Integer> siteIds) {
+ return this.baseMapper.countAll(siteIds);
}
@Override
@@ -1520,24 +1585,24 @@
}
@Override
- public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end) {
+ 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);
+ return this.baseMapper.getWeekData(start1,end1,siteIds);
}
@Override
- public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end) {
+ 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);
+ return this.baseMapper.getMonthData(start1,end1,siteIds);
}
@Override
- public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end) {
+ 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);
+ return this.baseMapper.getYearData(start1,end1,siteIds);
}
@Resource
@@ -1802,22 +1867,18 @@
BigDecimal gu = new BigDecimal("0");
List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
for (ChargingOrderListVO chargingOrderListVO : list1) {
- if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
-
- if (chargingOrderListVO.getPaymentAmount()!=null){
- if (chargingOrderListVO.getOrderSource().equals(2)){
- paymentAmount = paymentAmount.add(chargingOrderListVO.getServiceCharge()!=null?chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)):new BigDecimal("0"));
- }else{
- paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
- }
- }
- if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
- if (chargingOrderListVO.getServiceCharge()!=null){
- if (chargingOrderListVO.getOrderSource().equals(2)){
- serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
- }else{
- serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
- }
+ List<TChargingOrderAccountingStrategy> collect = chargingOrderAccountingStrategies.stream().filter(s -> s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
+ BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ 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)){
+ serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
+ paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
+ }else{
+ serviceCharge = serviceCharge.add(periodServicePrice);
+ paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
}
if (!chargingOrderListVO.getOrderSource().equals(2)){
List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
@@ -1825,24 +1886,24 @@
for (TChargingOrderAccountingStrategy temp : list2) {
switch (temp.getType()){
case 1:
- if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge());
+ jian = jian.add(temp.getChargingCapacity());
+ jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+ jianService = jianService.add(temp.getPeriodServicePrice());
break;
case 2:
- if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge());
+ feng = feng.add(temp.getChargingCapacity());
+ fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+ fengService = fengService.add(temp.getPeriodServicePrice());
break;
case 3:
- if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge());
+ ping = ping.add(temp.getChargingCapacity());
+ pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+ pingService = pingService.add(temp.getPeriodServicePrice());
break;
case 4:
- if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge());
+ gu = gu.add(temp.getChargingCapacity());
+ guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
+ guService = guService.add(temp.getPeriodServicePrice());
break;
}
}
@@ -1850,38 +1911,38 @@
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()){
case 1:
- if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ jian = jian.add(temp.getChargingCapacity());
+ jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+ jianService = jianService.add(multiply);
break;
case 2:
- if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ feng = feng.add(temp.getChargingCapacity());
+ fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+ fengService = fengService.add(multiply);
break;
case 3:
- if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ ping = ping.add(temp.getChargingCapacity());
+ pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+ pingService = pingService.add(multiply);
break;
case 4:
- if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
- if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
- if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ gu = gu.add(temp.getChargingCapacity());
+ guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
+ guService = guService.add(multiply);
break;
}
}
}
}
- chargingOrderTimeVO.setChargingCapacity(electronic);
- chargingOrderTimeVO.setPaymentAmount(paymentAmount);
- chargingOrderTimeVO.setElectrovalence(electrovalence);
- chargingOrderTimeVO.setServiceCharge(serviceCharge);
+ 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));
+ chargingOrderTimeVO.setServiceCharge(serviceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
// 计算尖峰平谷充电到账占比
-
BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
// 计算尖峰平谷服务费占比
BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
@@ -2427,10 +2488,16 @@
//推送三方平台
if(2 == chargingOrder.getOrderSource()){
- tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
- tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
- chargingOrder.getOperatorId());
- tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+ 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();
}
//开始将优惠券优惠的金额添加到明细中
@@ -2559,11 +2626,11 @@
@Override
- public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end) {
+ 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);
+ return this.baseMapper.getByDate(start1,end1,siteIds);
}
@Override
@@ -2576,10 +2643,7 @@
return this.baseMapper.queryPowerLevel(siteIds,statisticsQueryDto);
}
- @Override
- public List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(List<Integer> siteIds) {
- return this.baseMapper.queryOrderCountAndMoneyBySiteIdDate(siteIds);
- }
+
@Override
public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) {
@@ -2876,6 +2940,8 @@
@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()){
tSettlementConfirm.setSiteName(data.get(0).getName());
@@ -2902,9 +2968,7 @@
// 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表
QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
- .eq("site_id", dto.getSiteId())
- .eq("status", 5)
- .eq("recharge_payment_status",2);
+ .eq("site_id", dto.getSiteId());
switch (dto.getType()){
case 1:
eq.between("pay_time", localDateTime, localDateTime1);
@@ -2933,25 +2997,37 @@
// 支付订单金额 需要减去退款金额
BigDecimal paymentAmount = new BigDecimal("0");
for (TChargingOrder tChargingOrder : tChargingOrders) {
- // 累加充电总度数
- if (tChargingOrder.getChargingCapacity()!=null){
- chargingElectronic = chargingElectronic.add(tChargingOrder.getChargingCapacity());
-
+ if(null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()){
+ continue;
}
+ List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.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);
+ // 累加充电总度数
+ chargingElectronic = chargingElectronic.add(chargingCapacity);
// 累加分佣
if (tChargingOrder.getOrderSource()==2) {
- sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+ sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
}
// 累加电费
- if (tChargingOrder.getElectrovalence()!=null) {
- electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
+ electrovalence = electrovalence.add(electronic_reduce);
+ if (tChargingOrder.getPaymentAmount()!=null && tChargingOrder.getOrderSource()!=2){
+ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+
}
+ if (tChargingOrder.getRechargeAmount()!=null){
+ orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
+ .setScale(2,BigDecimal.ROUND_DOWN));
+ }
+
// 累加服务费
if (tChargingOrder.getServiceCharge()!=null){
if (tChargingOrder.getOrderSource()==2) {
- serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+ 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{
- serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+ serviceCharge = serviceCharge.add(service_reduce);
}
}
// 累加会员折扣
@@ -2962,11 +3038,7 @@
if (tChargingOrder.getCouponDiscountAmount()!=null){
couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
}
- if (tChargingOrder.getPaymentAmount()!=null){
- paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
- orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006"))
- .setScale(2,BigDecimal.ROUND_DOWN));
- }
+
}
@@ -3126,13 +3198,9 @@
siteIds.add(-1);
}
List<Site> siteList = siteClient.getSiteAll().getData();
- List<TChargingGun> gunList = chargingGunClient.getAllGun().getData();
List<TChargingPile> pileList = chargingGunClient.getAllPile().getData();
- List<TAppUser> userList = appUserClient.getAllUser().getData();
- List<TAppUserCar> carList = appUserCarClient.getAllCar().getData();
List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class)
- .eq(TChargingOrder::getRechargePaymentStatus, 2));
- List<TChargingOrderRefund> totalRefund = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2).list();
+ .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
SettlementTotalVO res = new SettlementTotalVO();
List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -3169,8 +3237,6 @@
BigDecimal orderCommission = new BigDecimal("0");
BigDecimal vipDiscount = new BigDecimal("0");
BigDecimal couponDiscount = new BigDecimal("0");
-// tSettlementConfirm1.setIncomePercentage();
-// tSettlementConfirm1.setTotalPercentage();
tSettlementConfirm1.setElectronicRefund(0);
// 上月成本合计
BigDecimal beforeCost= new BigDecimal("0");
@@ -3245,7 +3311,6 @@
for (TChargingPile datum : data) {
bigDecimal = bigDecimal.add(datum.getRatedPower());
}
-
tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
//利用率=充电量/(桩数量*功率*时间)
@@ -3335,7 +3400,6 @@
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);
@@ -3826,15 +3890,15 @@
platformStartCharging.setAccount_balance(rechargeAmount);
log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
sendMessageClient.platformStartCharging(platformStartCharging);
- //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
- Long id = chargingOrder.getId();
- //执行5分钟的定时任务检测
- ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
- scheduler.scheduleAtFixedRate(()->{
- if(timingDetection(id)){
- scheduler.shutdown();
- }
- }, 5, 1, TimeUnit.SECONDS);
+// //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+// Long id = chargingOrder.getId();
+// //执行5分钟的定时任务检测
+// ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+// scheduler.scheduleAtFixedRate(()->{
+// if(timingDetection(id)){
+// scheduler.shutdown();
+// }
+// }, 5, 1, TimeUnit.SECONDS);
//推送三方平台订单状态
tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
@@ -3903,4 +3967,21 @@
}
return R.ok(mapList);
}
+
+
+ /**
+ *
+ * 手动推送订单给第三方平台
+ * @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();
+ }
}
--
Gitblit v1.7.1