From 9dc7bcc2a92f5b4143bbc814ace40bafb386a949 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 07 一月 2025 19:00:03 +0800
Subject: [PATCH] 修改故障短信
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 297 ++++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 190 insertions(+), 107 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 e4839d9..be08b4b 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
@@ -187,6 +187,9 @@
@Resource
private SecurityDetectionClient securityDetectionClient;
+
+ @Resource
+ private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
//计数器
private Map<String, Integer> counter_map = new HashMap<>();
@@ -256,11 +259,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);
@@ -279,9 +284,18 @@
if(null != dataList){
//在MongoDB中获取数据
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
- List<String> time = dataList.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
- List<BigDecimal> outputVoltage = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
- List<BigDecimal> outputCurrent = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
+ List<UploadRealTimeMonitoringData> dataLists = new ArrayList<>();
+ String t = "";
+ for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : dataList) {
+ if(!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)){
+ dataLists.add(uploadRealTimeMonitoringData);
+ t = sdf.format(uploadRealTimeMonitoringData.getCreate_time());
+ }
+ }
+
+ List<String> time = dataLists.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
+ List<BigDecimal> outputVoltage = dataLists.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
+ List<BigDecimal> outputCurrent = dataLists.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
List<Map<String, Object>> currentAndVoltage = new ArrayList<>();
for (int i = 0; i < time.size(); i++) {
Map<String, Object> map = new HashMap<>();
@@ -294,8 +308,8 @@
}
myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
//在MongoDB中获取数据
- List<Integer> soc = dataList.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
- List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
+ 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<Map<String, Object>> power = new ArrayList<>();
for (int i = 0; i < time.size(); i++) {
Map<String, Object> map = new HashMap<>();
@@ -387,7 +401,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())
@@ -657,7 +671,7 @@
platformStartCharging.setCard_number(chargingOrder.getId().toString());
platformStartCharging.setAccount_balance(account_balance);
- log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
+ log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
sendMessageClient.platformStartCharging(platformStartCharging);
//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
Long id = chargingOrder.getId();
@@ -685,10 +699,7 @@
String code = chargingOrder.getCode();
String key = "AQJC_" + chargingOrder.getChargingGunId();
List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
- log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
- if(null == data || data.size() == 0){
- return false;
- }
+ log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
if(data.size() != 0){
PlatformStartChargingReply platformStartChargingReply = data.get(1);
Integer startup_result = platformStartChargingReply.getStartup_result();
@@ -730,14 +741,14 @@
return true;
}else{
Integer counter = boot_failed_map.get(code);
- log.error(code + ":-------------------未上传开启充电结果-------------------" + counter);
+ log.info(code + ":-------------------未上传开启充电结果-------------------" + counter);
PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
//5分钟内未启动成功,退回金额。
if(null == counter || counter < 300){
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;
@@ -826,7 +837,7 @@
* @param code
*/
public void refund(String code){
- log.error(code + ":-------------------充电启动失败,执行退款-------------------");
+ log.info(code + ":-------------------充电启动失败,执行退款-------------------");
TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
if(chargingOrder.getStatus() == 2){
Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
@@ -981,22 +992,23 @@
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());
sendMessageClient.platformStopCharging(platformStopCharging);
- log.error(code1 + ":-------------------远程停止充电请求-------------------");
- log.error(platformStopCharging.toString());
+ log.info(code1 + ":-------------------远程停止充电请求-------------------");
+ log.info(platformStopCharging.toString());
});
return AjaxResult.success();
}
@@ -1102,12 +1114,12 @@
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.setChangeType(4);
appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
appUserIntegralChange.setCreateTime(LocalDateTime.now());
appUserIntegralChange.setOrderCode(chargingOrder.getCode());
- appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+ appUserIntegralChange.setExtension(appUser.getId().toString());
appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
appUser1.setPoints(appUser1.getPoints() + num1);
@@ -1151,7 +1163,7 @@
failure_cause = "其他";
break;
}
- log.error(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
+ log.info(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
}else{
TChargingOrder chargingOrder = new TChargingOrder();
chargingOrder.setId(order.getId());
@@ -1205,8 +1217,8 @@
BigDecimal electronicMoney = new BigDecimal("0");
BigDecimal serviceMoney = new BigDecimal("0");
for (ChargingOrderVO chargingOrderVO : list) {
- chargingOrderVO.setCommissionAmount(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
- chargingOrderVO.setPlatFormMoney(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
+ chargingOrderVO.setCommissionAmount(chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")));
+ chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")));
chargingOrderVO.setUid(chargingOrderVO.getId()+"");
TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
@@ -1262,7 +1274,7 @@
electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
- income = income.add(chargingOrderVO.getOrderAmount());
+ income = income.add(chargingOrderVO.getPaymentAmount());
@@ -1286,9 +1298,9 @@
payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
}
if (payOrderDto.getType()==1&&payOrderDto.getStatus()==3){
- payOrderDto.setFinalAmount(payOrderDto.getRechargeAmount());
- payOrderDto.setOrderAmount(payOrderDto.getRechargeAmount());
- payOrderDto.setPaymentAmount(payOrderDto.getRechargeAmount());
+ payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
+ payOrderDto.setOrderAmount(payOrderDto.getOrderAmount());
+ payOrderDto.setPaymentAmount(payOrderDto.getOrderAmount());
}
}
pageInfo.setRecords(list);
@@ -1398,12 +1410,11 @@
List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
for (ChargingOrderListVO chargingOrderListVO : list) {
chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
- chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
BigDecimal bigDecimal = new BigDecimal("0.006");
if (chargingOrderListVO.getOrderAmount()!=null){
- chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getOrderAmount().multiply(bigDecimal));
+ chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getPaymentAmount().multiply(bigDecimal));
}
- chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount());
+ chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
List<Integer> integers = new ArrayList<>();
integers.add(chargingOrderListVO.getSiteId());
@@ -1422,17 +1433,27 @@
UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderListVO.getCode()).getData();
if (data5!=null){
if (data5.getTime_remaining()!=null){
- chargingOrderListVO.setChargingSecond(data5.getTime_remaining()*60L);
+ chargingOrderListVO.setChargingSecond(data5.getCumulative_charging_time()*60L);
}
}
// 获取开始SOC 结束soc
if (chargingOrderListVO.getCode()!=null){
List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
+
if (data6!=null && !data6.isEmpty()){
- // 第一条数据soc为开始 最后一条数据soc为结束soc
- chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString());
- chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
+ 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();
+ }
+ }
+ chargingOrderListVO.setEndSoc(max+"");
+ chargingOrderListVO.setStartSoc(min+"");
}
}
@@ -1612,9 +1633,7 @@
@Override
public ChargingOrderListInfoVO chargingInfo(String uid) {
TChargingOrder chargingOrder= this.getById(uid);
-
ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
-
chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
BigDecimal bigDecimal = new BigDecimal("0.006");
if (chargingOrder.getOrderAmount()!=null){
@@ -1663,24 +1682,32 @@
if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
uploadRealTimeMonitoringData.getOutput_voltage()!=null){
uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage()
- .multiply(uploadRealTimeMonitoringData.getOutput_current()));
+ .multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_UP));
}
}
if (!data6.isEmpty()){
// 第一条数据soc为开始 最后一条数据soc为结束soc
- chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString());
- chargingOrderListInfoVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
+ chargingOrderListInfoVO.setStartSoc(data6.get(data6.size()-1).getSoc().toString());
+ chargingOrderListInfoVO.setEndSoc(data6.get(0).getSoc().toString());
chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
- chargingOrderListInfoVO.setChargingSecond(data6.get(data6.size()-1).getCumulative_charging_time()*60+"");
+
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
uploadRealTimeMonitoringData.setCreateTime(simpleDateFormat.format(uploadRealTimeMonitoringData.getCreate_time()));
}
}
}
+
chargingOrderListInfoVO.setList(data6);
}
+ // 获取充电时间
+ UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+ if (data5!=null){
+ if (data5.getTime_remaining()!=null){
+ chargingOrderListInfoVO.setChargingSecond(data5.getCumulative_charging_time()*60L+"");
+ }
+ }
if (chargingOrder.getAppUserCarId()!=null){
List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData();
@@ -1733,6 +1760,10 @@
chargingOrder.setChargingCapacity(query.getCharging_degree());
chargingOrder.setElectricity(query.getCharging_degree());
chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
+ BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder.getCode()).getData();
+ if(null != data){
+ chargingOrder.setNeedElec(data.getBms_current_requirements());
+ }
this.updateById(chargingOrder);
}
}
@@ -1772,7 +1803,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;
}
@@ -1785,7 +1816,7 @@
//获取订单的计费策略
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");
@@ -1865,9 +1896,7 @@
} catch (ParseException e) {
throw new RuntimeException(e);
}
- System.err.println(start.getTime() + "\n" + end.getTime() + "\n" + lists.get(0).getStart() + "\n" + lists.get(0).getEnd());
-
-
+
for (AccountingStrategyDetailOrderVo strategyDetail : lists) {
BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
@@ -1900,16 +1929,16 @@
serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
}
chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
- chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
- chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
- chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
- chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
+ chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(2, RoundingMode.DOWN));
+ chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(2, RoundingMode.DOWN));
+ chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(2, RoundingMode.DOWN));
+ chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(2, RoundingMode.DOWN));
chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
- periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
- periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
- total = total.add(electrovalenc.add(originalServicePrice));
+ periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc.setScale(2, RoundingMode.DOWN));
+ periodServicePrice_total = periodServicePrice_total.add(originalServicePrice.setScale(2, RoundingMode.DOWN));
+ total = total.add(electrovalenc.add(originalServicePrice.setScale(2, RoundingMode.DOWN)));
}
@@ -1953,19 +1982,20 @@
TChargingOrder order = new TChargingOrder();
order.setId(chargingOrder.getId());
order.setAppUserId(chargingOrder.getAppUserId());
- if(null != chargingOrder.getEndMode() && chargingOrder.getEndMode() == 2){
- order.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
- }
- if(null == chargingOrder.getEndMode()){
+ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+ if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){
+ Integer soc = uploadRealTimeMonitoringData.getSoc();
+ order.setEndMode(soc > 98 ? 2 : 3);
+ }else{
order.setEndMode(1);
}
- order.setResidualAmount(rechargeAmount.subtract(total));
+ order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN));
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);
- order.setVipDiscountAmount(discountAmount);
- order.setElectrovalence(periodElectricPrice_total);
+ order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN));
+ order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN));
+ order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
order.setChargingCapacity(vo.getTotal_electricity());
order.setElectricity(vo.getTotal_electricity());
@@ -2030,9 +2060,9 @@
}
}
- order.setServiceCharge(periodServicePrice_total);
- order.setPaymentAmount(payAmount);
- order.setRefundAmount(refundAmount);
+ order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
+ order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
+ order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
order.setRefundStatus(1);
this.updateById(order);
chargingOrder = this.getById(order.getId());
@@ -2046,8 +2076,8 @@
BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
periodServicePrice = periodServicePrice.subtract(multiply);
- chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
- chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply);
+ chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.DOWN));
+ chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.DOWN));
}
chargingOrderAccountingStrategyService.updateBatchById(list);
}
@@ -2064,7 +2094,7 @@
if(null != integralRule){
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
- Integer integral = payAmount.multiply(new BigDecimal(num1)).intValue();
+ Integer integral = chargingOrder.getServiceCharge().intValue() * num1;
if(null != appUser.getVipId()){
TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
Integer doubleIntegration = vip.getDoubleIntegration();
@@ -2110,7 +2140,7 @@
chargingOrderRefund.setRefundTitle("充电完成退款");
chargingOrderRefund.setRefundContent("充电完成退款");
chargingOrderRefund.setRefundReason("充电完成退款");
- chargingOrderRefund.setRefundRemark("实际充电消费金额:" + refundAmount);
+ chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
chargingOrderRefund.setRefundTotalAmount(refundAmount);
chargingOrderRefund.setPayAmount(rechargeAmount);
if(1 == rechargePaymentType){
@@ -2243,6 +2273,9 @@
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();
@@ -2309,6 +2342,10 @@
if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
return R.fail("退款金额需小于支付金额");
}
+ if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
+ tChargingOrder.setStatus(5);
+ }
+
TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2359,9 +2396,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);
@@ -2376,6 +2411,8 @@
if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
return R.fail("退款金额需小于支付金额");
}
+
+
TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2454,8 +2491,8 @@
return null;
}
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::getDelFlag, 0).between(TChargingOrder::getStartTime, query.getStartTime(), LocalDateTime.now())
+ .eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
return one;
}
@@ -2545,24 +2582,21 @@
if (tChargingOrder.getCouponDiscountAmount()!=null){
couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
}
- if (tChargingOrder.getRefundStatus()!=null &&tChargingOrder.getRefundStatus() == 2){
- // 如果成功退款 那么减去退款金额
- paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
- }else{
- if (tChargingOrder.getPaymentAmount()!=null){
- paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
- }
+ if (tChargingOrder.getPaymentAmount()!=null){
+ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
}
+
}
+
// 三方交易手续费 三方收费*0.6%
commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
// 订单手续费 订单支付金额 - 退款金额*0.6%
- orderCommission = paymentAmount.multiply(new BigDecimal("0.006").setScale(2,RoundingMode.HALF_DOWN));
+ orderCommission = paymentAmount.multiply(new BigDecimal("0.006"));
tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
- tSettlementConfirm.setServiceCharge(serviceCharge.setScale(2, RoundingMode.HALF_DOWN));
- tSettlementConfirm.setOrderCommission(orderCommission);
+ tSettlementConfirm.setServiceCharge(serviceCharge.subtract(orderCommission).setScale(2, RoundingMode.HALF_DOWN));
+ tSettlementConfirm.setOrderCommission(orderCommission.setScale(2,BigDecimal.ROUND_DOWN));
tSettlementConfirm.setVipDiscount(vipDiscount);
tSettlementConfirm.setCouponDiscount(couponDiscount);
tSettlementConfirm.setSiteId(dto.getSiteId());
@@ -2573,6 +2607,8 @@
tSettlementConfirm.setType(dto.getType());
if (dto.getState() == 2){
+ tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
+ .subtract(dto.getMaintain()).multiply(dto.getServicePartner()));
tSettlementConfirm.setSupplyElectronic(dto.getSupplyElectronic());
tSettlementConfirm.setVenue(dto.getVenue());
tSettlementConfirm.setMetering(dto.getMetering());
@@ -2587,24 +2623,26 @@
tSettlementConfirm.setTotalService(dto.getTotalService());
tSettlementConfirm.setRemark(dto.getRemark());
tSettlementConfirm.setServicePartner(dto.getServicePartner());
- tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner());
+ BigDecimal subtract9 = new BigDecimal("1").subtract(dto.getServicePartner());
// 总电损费用
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.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());
tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge()));
- 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()));
-
+ tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getSupplyElectronic()));
+ tSettlementConfirm.setProfitMoney(tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost()));
+ tSettlementConfirm.setNewSettlement(tSettlementConfirm.getProfitMoney().add(tSettlementConfirm.getCost()));
+ tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
+ .subtract(dto.getMaintain()).multiply(dto.getServicePartner()));
tSettlementConfirmMapper.insert(tSettlementConfirm);
}
return tSettlementConfirm;
@@ -2612,18 +2650,22 @@
@Override
public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
+ String startTime = null;
+ String endTime = null;
if (StringUtils.hasLength(dto.getStartTime())){
dto.setType(1);
String[] split = dto.getStartTime().split(" - ");
- dto.setStartTime(split[0]);
- dto.setEndTime(split[1]);
+ startTime = split[0];
+ endTime = split[1];
}
if (StringUtils.hasLength(dto.getEndTime())){
dto.setType(2);
- String[] split = dto.getStartTime().split(" - ");
- dto.setStartTime(split[0]);
- dto.setEndTime(split[1]);
+ String[] split = dto.getEndTime().split(" - ");
+ startTime = split[0];
+ endTime = split[1];
}
+ dto.setStartTime(startTime);
+ dto.setEndTime(endTime);
PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
for (TSettlementConfirm tSettlementConfirm : list) {
@@ -2692,7 +2734,9 @@
BigDecimal beforeCost= 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 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
if (!data1.isEmpty()){
@@ -2750,10 +2794,17 @@
}
// 充电总时长
- 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()*60);
+ 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();
// 计算充电桩的功率平均值
@@ -2788,12 +2839,14 @@
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.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"+"%");
@@ -2810,11 +2863,11 @@
tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); }
beforeCost = beforeCost.add(settlementConfirm.getCost());
beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
-
-
}
+ i++;
}
TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
+ tSettlementConfirm.setMonth(parse.getMonthValue());
tSettlementConfirm.setMeteringElectronic(meteringElectronic);
tSettlementConfirm.setChargingElectronic(chargingElectronic);
tSettlementConfirm.setLossElectronic(lossElectronic);
@@ -2868,8 +2921,8 @@
}
@Override
- public List<Map<String, Object>> countBySource(List<Integer> siteIds) {
- return this.baseMapper.countBySource(siteIds);
+ public List<Map<String, Object>> countBySource(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+ return this.baseMapper.countBySource(siteIds,statisticsQueryDto);
}
@Override
@@ -2971,4 +3024,34 @@
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.getStatusList()){
+ queryWrapper.in(TChargingOrder::getStatus, 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